@koobiq/components 18.28.0 → 18.30.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/accordion/accordion-trigger.component.scss +2 -0
- package/actions-panel/actions-panel-container.scss +4 -1
- package/actions-panel/actions-panel-tokens.scss +2 -1
- package/breadcrumbs/breadcrumbs.d.ts +1 -1
- package/checkbox/checkbox.scss +2 -0
- package/code-block/_code-block-theme.scss +4 -12
- package/code-block/code-block-tokens.scss +3 -2
- package/code-block/code-block.scss +41 -10
- package/core/common-behaviors/clipboard.d.ts +12 -0
- package/core/common-behaviors/index.d.ts +1 -0
- package/core/formatters/filesize/config.d.ts +66 -0
- package/core/formatters/filesize/formatter.d.ts +17 -0
- package/core/{utils/data-size → formatters/filesize}/index.d.ts +1 -1
- package/core/formatters/filesize/size.d.ts +52 -0
- package/core/formatters/index.d.ts +3 -1
- package/core/formatters/number/formatter.d.ts +13 -4
- package/core/forms/validators.d.ts +13 -0
- package/core/locales/formatters.d.ts +9 -1
- package/core/locales/locale-service.d.ts +9 -1
- package/core/locales/types.d.ts +14 -0
- package/core/pop-up/pop-up-trigger.d.ts +3 -4
- package/core/pop-up/pop-up.d.ts +2 -1
- package/core/select/common.d.ts +3 -3
- package/core/utils/public-api.d.ts +0 -1
- package/datepicker/calendar.scss +2 -0
- package/datepicker/datepicker-tokens.scss +1 -1
- package/dropdown/dropdown-item.component.d.ts +3 -1
- package/ellipsis-center/ellipsis-center.directive.d.ts +8 -2
- package/esm2022/accordion/accordion-content.mjs +4 -4
- package/esm2022/accordion/accordion-header.mjs +4 -4
- package/esm2022/accordion/accordion-item.mjs +4 -4
- package/esm2022/accordion/accordion-trigger.component.mjs +6 -6
- package/esm2022/accordion/accordion.component.mjs +4 -4
- package/esm2022/accordion/accordion.module.mjs +5 -5
- package/esm2022/actions-panel/actions-panel-container.mjs +6 -6
- package/esm2022/actions-panel/actions-panel.mjs +13 -13
- package/esm2022/actions-panel/module.mjs +5 -5
- package/esm2022/alert/alert.component.mjs +13 -13
- package/esm2022/alert/alert.module.mjs +5 -5
- package/esm2022/autocomplete/autocomplete-origin.directive.mjs +4 -4
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +4 -4
- package/esm2022/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/badge/badge.component.mjs +10 -10
- package/esm2022/badge/badge.module.mjs +5 -5
- package/esm2022/breadcrumbs/breadcrumbs.mjs +17 -17
- package/esm2022/breadcrumbs/breadcrumbs.module.mjs +5 -5
- package/esm2022/button/button.component.mjs +7 -7
- package/esm2022/button/button.dropdown-trigger.directive.mjs +4 -4
- package/esm2022/button/button.module.mjs +5 -5
- package/esm2022/button-toggle/button-toggle.component.mjs +7 -7
- package/esm2022/button-toggle/button-toggle.module.mjs +5 -5
- package/esm2022/checkbox/checkbox-module.mjs +5 -5
- package/esm2022/checkbox/checkbox-required-validator.mjs +4 -4
- package/esm2022/checkbox/checkbox.mjs +5 -5
- package/esm2022/code-block/code-block-highlight.mjs +4 -4
- package/esm2022/code-block/code-block.mjs +8 -5
- package/esm2022/code-block/code-block.module.mjs +5 -5
- package/esm2022/core/common-behaviors/clipboard.mjs +31 -0
- package/esm2022/core/common-behaviors/color.mjs +4 -4
- package/esm2022/core/common-behaviors/common-module.mjs +5 -5
- package/esm2022/core/common-behaviors/index.mjs +2 -1
- package/esm2022/core/error/error-state-matcher.mjs +10 -10
- package/esm2022/core/formatters/date/formatter.mjs +4 -4
- package/esm2022/core/formatters/date/formatter.pipe.mjs +79 -79
- package/esm2022/core/formatters/filesize/config.mjs +32 -0
- package/esm2022/core/formatters/filesize/formatter.mjs +43 -0
- package/esm2022/core/formatters/filesize/index.mjs +4 -0
- package/esm2022/core/formatters/filesize/size.mjs +65 -0
- package/esm2022/core/formatters/index.mjs +15 -9
- package/esm2022/core/formatters/number/formatter.mjs +38 -36
- package/esm2022/core/forms/forms-module.mjs +5 -5
- package/esm2022/core/forms/forms.directive.mjs +7 -7
- package/esm2022/core/forms/validators.mjs +22 -1
- package/esm2022/core/highlight/highlight.pipe.mjs +4 -4
- package/esm2022/core/highlight/index.mjs +5 -5
- package/esm2022/core/line/line.mjs +8 -8
- package/esm2022/core/locales/formatters.mjs +21 -13
- package/esm2022/core/locales/locale-service.mjs +4 -4
- package/esm2022/core/locales/locale-service.module.mjs +5 -5
- package/esm2022/core/locales/types.mjs +1 -1
- package/esm2022/core/option/action.mjs +4 -4
- package/esm2022/core/option/optgroup.mjs +4 -4
- package/esm2022/core/option/option-module.mjs +5 -5
- package/esm2022/core/option/option.mjs +4 -4
- package/esm2022/core/pop-up/pop-up-trigger.mjs +22 -13
- package/esm2022/core/pop-up/pop-up.mjs +9 -5
- package/esm2022/core/select/common.mjs +21 -19
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +5 -5
- package/esm2022/core/services/measure-scrollbar.service.mjs +4 -4
- package/esm2022/core/services/theme.service.mjs +4 -4
- package/esm2022/core/utils/public-api.mjs +1 -2
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-body.component.mjs +4 -4
- package/esm2022/datepicker/calendar-header.component.mjs +4 -4
- package/esm2022/datepicker/calendar.component.mjs +5 -5
- package/esm2022/datepicker/datepicker-input.directive.mjs +4 -4
- package/esm2022/datepicker/datepicker-intl.mjs +4 -4
- package/esm2022/datepicker/datepicker-module.mjs +5 -5
- package/esm2022/datepicker/datepicker-toggle.component.mjs +7 -7
- package/esm2022/datepicker/datepicker.component.mjs +8 -8
- package/esm2022/datepicker/month-view.component.mjs +4 -4
- package/esm2022/divider/divider.component.mjs +4 -4
- package/esm2022/divider/divider.module.mjs +5 -5
- package/esm2022/dl/dl.component.mjs +10 -10
- package/esm2022/dl/dl.module.mjs +5 -5
- package/esm2022/dropdown/dropdown-content.directive.mjs +4 -4
- package/esm2022/dropdown/dropdown-item.component.mjs +9 -7
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +4 -4
- package/esm2022/dropdown/dropdown.component.mjs +4 -4
- package/esm2022/dropdown/dropdown.module.mjs +5 -5
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +20 -10
- package/esm2022/empty-state/empty-state.component.mjs +16 -16
- package/esm2022/empty-state/empty-state.module.mjs +5 -5
- package/esm2022/file-upload/file-drop.mjs +4 -4
- package/esm2022/file-upload/file-upload.mjs +2 -1
- package/esm2022/file-upload/file-upload.module.mjs +5 -5
- package/esm2022/file-upload/multiple-file-upload.component.mjs +23 -9
- package/esm2022/file-upload/single-file-upload.component.mjs +18 -9
- package/esm2022/filter-bar/filter-bar-button.mjs +4 -4
- package/esm2022/filter-bar/filter-bar.mjs +4 -4
- package/esm2022/filter-bar/filter-bar.module.mjs +5 -5
- package/esm2022/filter-bar/filter-bar.types.mjs +32 -1
- package/esm2022/filter-bar/filter-refresher.mjs +4 -4
- package/esm2022/filter-bar/filter-reset.mjs +4 -4
- package/esm2022/filter-bar/filter-search.mjs +5 -5
- package/esm2022/filter-bar/filters.mjs +27 -20
- package/esm2022/filter-bar/pipe-add.mjs +5 -5
- package/esm2022/filter-bar/pipe.directive.mjs +4 -4
- package/esm2022/filter-bar/pipes/base-pipe.mjs +7 -7
- package/esm2022/filter-bar/pipes/pipe-button.mjs +5 -5
- package/esm2022/filter-bar/pipes/pipe-date.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +29 -11
- package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +234 -0
- package/esm2022/filter-bar/pipes/pipe-readonly.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-state.mjs +4 -4
- package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-title.mjs +4 -4
- package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +136 -0
- package/esm2022/filter-bar/public-api.mjs +2 -1
- package/esm2022/form-field/cleaner.mjs +4 -4
- package/esm2022/form-field/form-field.mjs +16 -16
- package/esm2022/form-field/form-field.module.mjs +5 -5
- package/esm2022/form-field/hint.mjs +4 -4
- package/esm2022/form-field/password-hint.mjs +9 -7
- package/esm2022/form-field/password-toggle.mjs +4 -4
- package/esm2022/form-field/prefix.mjs +4 -4
- package/esm2022/form-field/stepper.mjs +23 -7
- package/esm2022/form-field/suffix.mjs +4 -4
- package/esm2022/form-field/validate.directive.mjs +4 -4
- package/esm2022/icon/icon-button.component.mjs +4 -4
- package/esm2022/icon/icon-item.component.mjs +4 -4
- package/esm2022/icon/icon.component.mjs +4 -4
- package/esm2022/icon/icon.module.mjs +5 -5
- package/esm2022/input/input-number-validators.mjs +7 -7
- package/esm2022/input/input-number.mjs +13 -12
- package/esm2022/input/input-password.mjs +4 -4
- package/esm2022/input/input.mjs +7 -7
- package/esm2022/input/input.module.mjs +5 -5
- package/esm2022/link/link.component.mjs +4 -4
- package/esm2022/link/link.module.mjs +5 -5
- package/esm2022/list/list-selection.component.mjs +10 -10
- package/esm2022/list/list.component.mjs +7 -7
- package/esm2022/list/list.module.mjs +5 -5
- package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
- package/esm2022/loader-overlay/loader-overlay.module.mjs +5 -5
- package/esm2022/markdown/markdown.component.mjs +4 -4
- package/esm2022/markdown/markdown.module.mjs +5 -5
- package/esm2022/markdown/markdown.service.mjs +4 -4
- package/esm2022/modal/css-unit.pipe.mjs +4 -4
- package/esm2022/modal/modal-control.service.mjs +4 -4
- package/esm2022/modal/modal.component.mjs +4 -4
- package/esm2022/modal/modal.directive.mjs +13 -13
- package/esm2022/modal/modal.module.mjs +5 -5
- package/esm2022/modal/modal.service.mjs +4 -4
- package/esm2022/modal/modal.type.mjs +1 -1
- package/esm2022/navbar/navbar-item.component.mjs +28 -28
- package/esm2022/navbar/navbar.component.mjs +10 -10
- package/esm2022/navbar/navbar.module.mjs +5 -5
- package/esm2022/navbar/vertical-navbar.component.mjs +4 -4
- package/esm2022/overflow-items/module.mjs +5 -5
- package/esm2022/overflow-items/overflow-items.mjs +56 -83
- package/esm2022/popover/popover-confirm.component.mjs +7 -7
- package/esm2022/popover/popover.component.mjs +15 -9
- package/esm2022/popover/popover.module.mjs +5 -5
- package/esm2022/progress-bar/progress-bar.component.mjs +10 -10
- package/esm2022/progress-bar/progress-bar.module.mjs +5 -5
- package/esm2022/progress-spinner/progress-spinner.component.mjs +10 -10
- package/esm2022/progress-spinner/progress-spinner.module.mjs +5 -5
- package/esm2022/radio/radio.component.mjs +7 -7
- package/esm2022/radio/radio.module.mjs +5 -5
- package/esm2022/risk-level/risk-level.component.mjs +4 -4
- package/esm2022/risk-level/risk-level.module.mjs +5 -5
- package/esm2022/scrollbar/scrollbar.component.mjs +4 -4
- package/esm2022/scrollbar/scrollbar.directive.mjs +4 -4
- package/esm2022/scrollbar/scrollbar.module.mjs +5 -5
- package/esm2022/select/select-option.directive.mjs +4 -4
- package/esm2022/select/select.component.mjs +10 -11
- package/esm2022/select/select.module.mjs +5 -5
- package/esm2022/sidebar/sidebar.component.mjs +18 -12
- package/esm2022/sidebar/sidebar.module.mjs +5 -5
- package/esm2022/sidepanel/sidepanel-container.component.mjs +4 -4
- package/esm2022/sidepanel/sidepanel-directives.mjs +16 -16
- package/esm2022/sidepanel/sidepanel.module.mjs +5 -5
- package/esm2022/sidepanel/sidepanel.service.mjs +4 -4
- package/esm2022/splitter/splitter.component.mjs +13 -13
- package/esm2022/splitter/splitter.module.mjs +5 -5
- package/esm2022/table/table.component.mjs +7 -7
- package/esm2022/table/table.module.mjs +5 -5
- package/esm2022/tabs/paginated-tab-header.mjs +4 -4
- package/esm2022/tabs/tab-body.component.mjs +7 -7
- package/esm2022/tabs/tab-content.directive.mjs +4 -4
- package/esm2022/tabs/tab-group.component.mjs +16 -16
- package/esm2022/tabs/tab-header.component.mjs +4 -4
- package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -4
- package/esm2022/tabs/tab-label.directive.mjs +4 -4
- package/esm2022/tabs/tab-nav-bar.mjs +10 -10
- package/esm2022/tabs/tab.component.mjs +4 -4
- package/esm2022/tabs/tabs.module.mjs +5 -5
- package/esm2022/tags/tag-input.mjs +4 -4
- package/esm2022/tags/tag-list.component.mjs +5 -5
- package/esm2022/tags/tag.component.mjs +13 -13
- package/esm2022/tags/tag.module.mjs +5 -5
- package/esm2022/textarea/textarea.component.mjs +4 -4
- package/esm2022/textarea/textarea.module.mjs +5 -5
- package/esm2022/timepicker/timepicker.directive.mjs +4 -4
- package/esm2022/timepicker/timepicker.module.mjs +5 -5
- package/esm2022/timezone/cities-by-filter.pipe.mjs +4 -4
- package/esm2022/timezone/timezone-option.component.mjs +4 -4
- package/esm2022/timezone/timezone-option.directive.mjs +4 -4
- package/esm2022/timezone/timezone-select.component.mjs +9 -9
- package/esm2022/timezone/timezone.module.mjs +5 -5
- package/esm2022/timezone/utc-offset.pipe.mjs +4 -4
- package/esm2022/title/title.directive.mjs +4 -4
- package/esm2022/title/title.module.mjs +5 -5
- package/esm2022/toast/toast-container.component.mjs +4 -4
- package/esm2022/toast/toast.component.mjs +7 -7
- package/esm2022/toast/toast.module.mjs +5 -5
- package/esm2022/toast/toast.service.mjs +4 -4
- package/esm2022/toggle/toggle.component.mjs +4 -4
- package/esm2022/toggle/toggle.module.mjs +5 -5
- package/esm2022/tooltip/tooltip.component.mjs +23 -14
- package/esm2022/tooltip/tooltip.module.mjs +5 -5
- package/esm2022/top-bar/module.mjs +5 -5
- package/esm2022/top-bar/top-bar.mjs +12 -12
- package/esm2022/tree/control/flat-tree-control.filters.mjs +10 -2
- package/esm2022/tree/node.mjs +4 -4
- package/esm2022/tree/outlet.mjs +4 -4
- package/esm2022/tree/padding.directive.mjs +4 -4
- package/esm2022/tree/toggle.mjs +10 -10
- package/esm2022/tree/tree-base.mjs +7 -7
- package/esm2022/tree/tree-option.component.mjs +11 -7
- package/esm2022/tree/tree-selection.component.mjs +6 -4
- package/esm2022/tree/tree.mjs +4 -4
- package/esm2022/tree/tree.module.mjs +5 -5
- package/esm2022/tree-select/tree-select.component.mjs +5 -5
- package/esm2022/tree-select/tree-select.module.mjs +5 -5
- package/fesm2022/koobiq-components-accordion.mjs +21 -21
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +21 -21
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +16 -16
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +13 -13
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +13 -13
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +20 -20
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +13 -13
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +11 -11
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +14 -11
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +452 -333
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +36 -36
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +7 -7
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +13 -13
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +21 -19
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +19 -9
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +43 -21
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +481 -108
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +66 -49
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +13 -13
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +32 -31
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +7 -7
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -19
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +10 -10
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +28 -28
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +43 -43
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +59 -86
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +24 -18
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-risk-level.mjs +7 -7
- package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +16 -17
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +21 -15
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +25 -25
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +16 -16
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +10 -10
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +52 -52
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +23 -23
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +7 -7
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +7 -7
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +24 -24
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +16 -16
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +7 -7
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +26 -17
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +15 -15
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +8 -8
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +54 -40
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +125 -32
- package/file-upload/file-upload-tokens.scss +42 -14
- package/file-upload/file-upload.d.ts +1 -0
- package/file-upload/multiple-file-upload.component.d.ts +12 -5
- package/file-upload/multiple-file-upload.component.scss +66 -69
- package/file-upload/single-file-upload.component.d.ts +7 -1
- package/file-upload/single-file-upload.component.scss +9 -0
- package/filter-bar/filter-bar.types.d.ts +28 -1
- package/filter-bar/filters.d.ts +3 -2
- package/filter-bar/filters.scss +4 -0
- package/filter-bar/pipes/base-pipe.scss +1 -0
- package/filter-bar/pipes/pipe-multi-select.d.ts +6 -1
- package/filter-bar/pipes/pipe-multi-tree-select.d.ts +57 -0
- package/filter-bar/pipes/pipe-multi-tree-select.scss +19 -0
- package/filter-bar/pipes/pipe-tree-select.d.ts +41 -0
- package/filter-bar/pipes/pipe-tree-select.scss +9 -0
- package/filter-bar/public-api.d.ts +1 -0
- package/form-field/_form-field-theme.scss +12 -12
- package/form-field/form-field.d.ts +3 -1
- package/form-field/form-field.scss +58 -61
- package/form-field/stepper.d.ts +15 -1
- package/input/_input-theme.scss +6 -0
- package/input/input-number.d.ts +1 -0
- package/modal/modal.type.d.ts +1 -1
- package/overflow-items/overflow-items.d.ts +17 -26
- package/package.json +5 -5
- package/popover/popover.component.d.ts +4 -2
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/ng-add/index.js +5 -5
- package/select/_select-theme.scss +1 -1
- package/select/select.scss +2 -0
- package/tags/_tag-theme.scss +5 -0
- package/tags/tag-tokens.scss +17 -0
- package/tooltip/tooltip.component.d.ts +8 -1
- package/top-bar/top-bar.scss +1 -0
- package/tree/control/flat-tree-control.filters.d.ts +1 -0
- package/tree/tree-option.component.d.ts +3 -1
- package/core/utils/data-size/config.d.ts +0 -38
- package/core/utils/data-size/data-size.pipe.d.ts +0 -14
- package/core/utils/data-size/size.d.ts +0 -15
- package/esm2022/core/utils/data-size/config.mjs +0 -10
- package/esm2022/core/utils/data-size/data-size.pipe.mjs +0 -45
- package/esm2022/core/utils/data-size/index.mjs +0 -4
- package/esm2022/core/utils/data-size/size.mjs +0 -43
|
@@ -12,10 +12,10 @@ export const KBQ_CHECKBOX_REQUIRED_VALIDATOR = {
|
|
|
12
12
|
* work with `kbq-checkbox`.
|
|
13
13
|
*/
|
|
14
14
|
export class KbqCheckboxRequiredValidator extends CheckboxRequiredValidator {
|
|
15
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
16
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
15
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqCheckboxRequiredValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
16
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqCheckboxRequiredValidator, selector: "kbq-checkbox[required][formControlName],\n kbq-checkbox[required][formControl], kbq-checkbox[required][ngModel]", host: { properties: { "attr.required": "required ? \"\" : null" } }, providers: [KBQ_CHECKBOX_REQUIRED_VALIDATOR], usesInheritance: true, ngImport: i0 }); }
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqCheckboxRequiredValidator, decorators: [{
|
|
19
19
|
type: Directive,
|
|
20
20
|
args: [{
|
|
21
21
|
selector: `kbq-checkbox[required][formControlName],
|
|
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
24
24
|
host: { '[attr.required]': 'required ? "" : null' }
|
|
25
25
|
}]
|
|
26
26
|
}] });
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtcmVxdWlyZWQtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC1yZXF1aXJlZC12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUUxRSxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBYTtJQUNyRCxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDRCQUE0QixDQUFDO0lBQzNELEtBQUssRUFBRSxJQUFJO0NBQ2QsQ0FBQztBQUVGOzs7O0dBSUc7QUFPSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEseUJBQXlCO2tJQUE5RCw0QkFBNEI7c0hBQTVCLDRCQUE0QiwyTkFIMUIsQ0FBQywrQkFBK0IsQ0FBQzs7NEZBR25DLDRCQUE0QjtrQkFOeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUU7a0ZBQ29FO29CQUM5RSxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsSUFBSSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUU7aUJBQ3REIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hlY2tib3hSZXF1aXJlZFZhbGlkYXRvciwgTkdfVkFMSURBVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IEtCUV9DSEVDS0JPWF9SRVFVSVJFRF9WQUxJREFUT1I6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gS2JxQ2hlY2tib3hSZXF1aXJlZFZhbGlkYXRvciksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogVmFsaWRhdG9yIGZvciBrb29iaXEgY2hlY2tib3gncyByZXF1aXJlZCBhdHRyaWJ1dGUgaW4gdGVtcGxhdGUtZHJpdmVuIGNoZWNrYm94LlxuICogQ3VycmVudCBDaGVja2JveFJlcXVpcmVkVmFsaWRhdG9yIG9ubHkgd29yayB3aXRoIGBpbnB1dCB0eXBlPWNoZWNrYm94YCBhbmQgZG9lcyBub3RcbiAqIHdvcmsgd2l0aCBga2JxLWNoZWNrYm94YC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IGBrYnEtY2hlY2tib3hbcmVxdWlyZWRdW2Zvcm1Db250cm9sTmFtZV0sXG4gICAgICAgICAgICAga2JxLWNoZWNrYm94W3JlcXVpcmVkXVtmb3JtQ29udHJvbF0sIGticS1jaGVja2JveFtyZXF1aXJlZF1bbmdNb2RlbF1gLFxuICAgIHByb3ZpZGVyczogW0tCUV9DSEVDS0JPWF9SRVFVSVJFRF9WQUxJREFUT1JdLFxuICAgIGhvc3Q6IHsgJ1thdHRyLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCA/IFwiXCIgOiBudWxsJyB9XG59KVxuZXhwb3J0IGNsYXNzIEticUNoZWNrYm94UmVxdWlyZWRWYWxpZGF0b3IgZXh0ZW5kcyBDaGVja2JveFJlcXVpcmVkVmFsaWRhdG9yIHt9XG4iXX0=
|
|
@@ -240,10 +240,10 @@ export class KbqCheckbox extends KbqColorDirective {
|
|
|
240
240
|
this.onTouched();
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
244
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.6", type: KbqCheckbox, selector: "kbq-checkbox", inputs: { big: "big", id: "id", labelPosition: "labelPosition", name: "name", value: "value", required: ["required", "required", booleanAttribute], checked: "checked", disabled: ["disabled", "disabled", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", numberAttribute], indeterminate: "indeterminate" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "id": "id", "attr.id": "id", "attr.disabled": "disabled", "class.kbq-checkbox_big": "big", "class.kbq-indeterminate": "indeterminate", "class.kbq-checked": "checked", "class.kbq-disabled": "disabled", "class.kbq-checkbox_label-before": "labelPosition == \"before\"" }, classAttribute: "kbq-checkbox" }, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["kbqCheckbox"], usesInheritance: true, ngImport: i0, template: "<label #label class=\"kbq-checkbox__layout\" [attr.for]=\"inputId\">\n <div\n class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"\n !checkboxLabel.textContent || !checkboxLabel.textContent.trim()\n \"\n >\n <input\n #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n <i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span #checkboxLabel class=\"kbq-checkbox-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius);border-width:var(--kbq-checkbox-size-normal-border-width);border-style:solid;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox__layout{position:relative;display:inline-flex;max-width:calc(100% - (var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding)));cursor:inherit;padding-top:var(--kbq-checkbox-size-normal-padding-top);padding-bottom:var(--kbq-checkbox-size-normal-padding-bottom);padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:var(--kbq-checkbox-size-normal-top);left:0}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;max-width:100%}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{max-width:calc(100% - (var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding)));padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:var(--kbq-checkbox-size-big-top);height:var(--kbq-checkbox-size-big-width);width:var(--kbq-checkbox-size-big-width)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius);border-width:var(--kbq-checkbox-size-big-border-width);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding)}.kbq-checkbox__text-container{display:flex;flex-direction:column;max-width:100%}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}.kbq-checkbox .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-default-border);background-color:var(--kbq-checkbox-theme-default-background)}.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-default-color)}.kbq-checkbox .kbq-checkbox-label{color:var(--kbq-checkbox-theme-default-text)}.kbq-checkbox .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-default-caption)}.kbq-checkbox:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-hover-border);background-color:var(--kbq-checkbox-theme-states-hover-background)}.kbq-checkbox.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-border);background-color:var(--kbq-checkbox-theme-states-checked-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-hover-border);background-color:var(--kbq-checkbox-theme-states-checked-hover-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-focused-border);background-color:var(--kbq-checkbox-theme-states-checked-focused-background);outline:var(--kbq-checkbox-theme-states-checked-focused-outline)}.kbq-checkbox .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-focused-border);background-color:var(--kbq-checkbox-theme-states-focused-background);outline:var(--kbq-checkbox-theme-states-focused-outline)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-disabled-border);background-color:var(--kbq-checkbox-theme-states-disabled-background)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-states-disabled-color)}.kbq-checkbox.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-states-disabled-caption)}.kbq-checkbox.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-theme-states-disabled-text)}.kbq-checkbox.kbq-error .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-default-border);background-color:var(--kbq-checkbox-error-default-background)}.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-default-color)}.kbq-checkbox.kbq-error .kbq-checkbox-label{color:var(--kbq-checkbox-error-default-text)}.kbq-checkbox.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-default-caption)}.kbq-checkbox.kbq-error:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-hover-border);background-color:var(--kbq-checkbox-error-states-hover-background)}.kbq-checkbox.kbq-error.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-border);background-color:var(--kbq-checkbox-error-states-checked-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-hover-border);background-color:var(--kbq-checkbox-error-states-checked-hover-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-focused-border);background-color:var(--kbq-checkbox-error-states-checked-focused-background);outline:var(--kbq-checkbox-error-states-checked-focused-outline)}.kbq-checkbox.kbq-error .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-focused-border);background-color:var(--kbq-checkbox-error-states-focused-background);outline:var(--kbq-checkbox-error-states-focused-outline)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-disabled-border);background-color:var(--kbq-checkbox-error-states-disabled-background)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-states-disabled-color)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-states-disabled-caption)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-error-states-disabled-text)}.kbq-checkbox{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-checkbox .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-checkbox.kbq-checkbox_big{font-size:var(--kbq-typography-text-big-font-size);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-checkbox.kbq-checkbox_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-checkbox{--kbq-checkbox-size-normal-width: var(--kbq-size-l);--kbq-checkbox-size-normal-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-normal-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-normal-top: var(--kbq-size-3xs);--kbq-checkbox-size-big-width: var(--kbq-size-l);--kbq-checkbox-size-big-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-big-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-big-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-big-top: var(--kbq-size-xxs);--kbq-checkbox-theme-default-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-default-color: var(--kbq-icon-white);--kbq-checkbox-theme-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-theme-default-background: var(--kbq-background-bg);--kbq-checkbox-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-theme-states-hover-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-checkbox-theme-states-checked-border: transparent;--kbq-checkbox-theme-states-checked-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-hover-border: transparent;--kbq-checkbox-theme-states-checked-hover-background: var(--kbq-states-background-theme-hover);--kbq-checkbox-theme-states-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-focused-background: var(--kbq-background-bg);--kbq-checkbox-theme-states-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-theme-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-theme-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-theme-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-theme-states-disabled-caption: var(--kbq-states-icon-disabled);--kbq-checkbox-error-default-border: var(--kbq-line-error);--kbq-checkbox-error-default-color: var(--kbq-icon-white);--kbq-checkbox-error-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-error-default-background: var(--kbq-background-error-less);--kbq-checkbox-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-error-states-hover-border: var(--kbq-line-error);--kbq-checkbox-error-states-hover-background: var(--kbq-states-background-error-fade-hover);--kbq-checkbox-error-states-checked-border: transparent;--kbq-checkbox-error-states-checked-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-hover-border: transparent;--kbq-checkbox-error-states-checked-hover-background: var(--kbq-states-background-error-hover);--kbq-checkbox-error-states-focused-border: var(--kbq-line-error);--kbq-checkbox-error-states-focused-background: var(--kbq-background-error-less);--kbq-checkbox-error-states-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-border: var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-error-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-error-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-error-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-error-states-disabled-caption: var(--kbq-states-icon-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
243
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FocusMonitor }, { token: KBQ_CHECKBOX_CLICK_ACTION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
244
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.13", type: KbqCheckbox, selector: "kbq-checkbox", inputs: { big: "big", id: "id", labelPosition: "labelPosition", name: "name", value: "value", required: ["required", "required", booleanAttribute], checked: "checked", disabled: ["disabled", "disabled", booleanAttribute], tabIndex: ["tabIndex", "tabIndex", numberAttribute], indeterminate: "indeterminate" }, outputs: { change: "change", indeterminateChange: "indeterminateChange" }, host: { properties: { "id": "id", "attr.id": "id", "attr.disabled": "disabled", "class.kbq-checkbox_big": "big", "class.kbq-indeterminate": "indeterminate", "class.kbq-checked": "checked", "class.kbq-disabled": "disabled", "class.kbq-checkbox_label-before": "labelPosition == \"before\"" }, classAttribute: "kbq-checkbox" }, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], exportAs: ["kbqCheckbox"], usesInheritance: true, ngImport: i0, template: "<label #label class=\"kbq-checkbox__layout\" [attr.for]=\"inputId\">\n <div\n class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"\n !checkboxLabel.textContent || !checkboxLabel.textContent.trim()\n \"\n >\n <input\n #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n <i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span #checkboxLabel class=\"kbq-checkbox-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius);border-width:var(--kbq-checkbox-size-normal-border-width);border-style:solid;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox__layout{box-sizing:initial;position:relative;display:inline-flex;max-width:calc(100% - (var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding)));cursor:inherit;padding-top:var(--kbq-checkbox-size-normal-padding-top);padding-bottom:var(--kbq-checkbox-size-normal-padding-bottom);padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:var(--kbq-checkbox-size-normal-top);left:0}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;max-width:100%}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{max-width:calc(100% - (var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding)));padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:var(--kbq-checkbox-size-big-top);height:var(--kbq-checkbox-size-big-width);width:var(--kbq-checkbox-size-big-width)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius);border-width:var(--kbq-checkbox-size-big-border-width);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding)}.kbq-checkbox__text-container{display:flex;flex-direction:column;max-width:100%}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}.kbq-checkbox .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-default-border);background-color:var(--kbq-checkbox-theme-default-background)}.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-default-color)}.kbq-checkbox .kbq-checkbox-label{color:var(--kbq-checkbox-theme-default-text)}.kbq-checkbox .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-default-caption)}.kbq-checkbox:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-hover-border);background-color:var(--kbq-checkbox-theme-states-hover-background)}.kbq-checkbox.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-border);background-color:var(--kbq-checkbox-theme-states-checked-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-hover-border);background-color:var(--kbq-checkbox-theme-states-checked-hover-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-focused-border);background-color:var(--kbq-checkbox-theme-states-checked-focused-background);outline:var(--kbq-checkbox-theme-states-checked-focused-outline)}.kbq-checkbox .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-focused-border);background-color:var(--kbq-checkbox-theme-states-focused-background);outline:var(--kbq-checkbox-theme-states-focused-outline)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-disabled-border);background-color:var(--kbq-checkbox-theme-states-disabled-background)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-states-disabled-color)}.kbq-checkbox.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-states-disabled-caption)}.kbq-checkbox.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-theme-states-disabled-text)}.kbq-checkbox.kbq-error .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-default-border);background-color:var(--kbq-checkbox-error-default-background)}.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-default-color)}.kbq-checkbox.kbq-error .kbq-checkbox-label{color:var(--kbq-checkbox-error-default-text)}.kbq-checkbox.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-default-caption)}.kbq-checkbox.kbq-error:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-hover-border);background-color:var(--kbq-checkbox-error-states-hover-background)}.kbq-checkbox.kbq-error.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-border);background-color:var(--kbq-checkbox-error-states-checked-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-hover-border);background-color:var(--kbq-checkbox-error-states-checked-hover-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-focused-border);background-color:var(--kbq-checkbox-error-states-checked-focused-background);outline:var(--kbq-checkbox-error-states-checked-focused-outline)}.kbq-checkbox.kbq-error .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-focused-border);background-color:var(--kbq-checkbox-error-states-focused-background);outline:var(--kbq-checkbox-error-states-focused-outline)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-disabled-border);background-color:var(--kbq-checkbox-error-states-disabled-background)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-states-disabled-color)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-states-disabled-caption)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-error-states-disabled-text)}.kbq-checkbox{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-checkbox .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-checkbox.kbq-checkbox_big{font-size:var(--kbq-typography-text-big-font-size);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-checkbox.kbq-checkbox_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-checkbox{--kbq-checkbox-size-normal-width: var(--kbq-size-l);--kbq-checkbox-size-normal-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-normal-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-normal-top: var(--kbq-size-3xs);--kbq-checkbox-size-big-width: var(--kbq-size-l);--kbq-checkbox-size-big-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-big-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-big-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-big-top: var(--kbq-size-xxs);--kbq-checkbox-theme-default-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-default-color: var(--kbq-icon-white);--kbq-checkbox-theme-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-theme-default-background: var(--kbq-background-bg);--kbq-checkbox-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-theme-states-hover-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-checkbox-theme-states-checked-border: transparent;--kbq-checkbox-theme-states-checked-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-hover-border: transparent;--kbq-checkbox-theme-states-checked-hover-background: var(--kbq-states-background-theme-hover);--kbq-checkbox-theme-states-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-focused-background: var(--kbq-background-bg);--kbq-checkbox-theme-states-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-theme-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-theme-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-theme-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-theme-states-disabled-caption: var(--kbq-states-icon-disabled);--kbq-checkbox-error-default-border: var(--kbq-line-error);--kbq-checkbox-error-default-color: var(--kbq-icon-white);--kbq-checkbox-error-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-error-default-background: var(--kbq-background-error-less);--kbq-checkbox-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-error-states-hover-border: var(--kbq-line-error);--kbq-checkbox-error-states-hover-background: var(--kbq-states-background-error-fade-hover);--kbq-checkbox-error-states-checked-border: transparent;--kbq-checkbox-error-states-checked-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-hover-border: transparent;--kbq-checkbox-error-states-checked-hover-background: var(--kbq-states-background-error-hover);--kbq-checkbox-error-states-focused-border: var(--kbq-line-error);--kbq-checkbox-error-states-focused-background: var(--kbq-background-error-less);--kbq-checkbox-error-states-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-border: var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-error-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-error-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-error-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-error-states-disabled-caption: var(--kbq-states-icon-disabled)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
245
245
|
}
|
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqCheckbox, decorators: [{
|
|
247
247
|
type: Component,
|
|
248
248
|
args: [{ selector: 'kbq-checkbox', exportAs: 'kbqCheckbox', host: {
|
|
249
249
|
class: 'kbq-checkbox',
|
|
@@ -255,7 +255,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
255
255
|
'[class.kbq-checked]': 'checked',
|
|
256
256
|
'[class.kbq-disabled]': 'disabled',
|
|
257
257
|
'[class.kbq-checkbox_label-before]': 'labelPosition == "before"'
|
|
258
|
-
}, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label #label class=\"kbq-checkbox__layout\" [attr.for]=\"inputId\">\n <div\n class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"\n !checkboxLabel.textContent || !checkboxLabel.textContent.trim()\n \"\n >\n <input\n #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n <i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span #checkboxLabel class=\"kbq-checkbox-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius);border-width:var(--kbq-checkbox-size-normal-border-width);border-style:solid;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox__layout{position:relative;display:inline-flex;max-width:calc(100% - (var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding)));cursor:inherit;padding-top:var(--kbq-checkbox-size-normal-padding-top);padding-bottom:var(--kbq-checkbox-size-normal-padding-bottom);padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:var(--kbq-checkbox-size-normal-top);left:0}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;max-width:100%}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{max-width:calc(100% - (var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding)));padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:var(--kbq-checkbox-size-big-top);height:var(--kbq-checkbox-size-big-width);width:var(--kbq-checkbox-size-big-width)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius);border-width:var(--kbq-checkbox-size-big-border-width);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding)}.kbq-checkbox__text-container{display:flex;flex-direction:column;max-width:100%}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}.kbq-checkbox .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-default-border);background-color:var(--kbq-checkbox-theme-default-background)}.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-default-color)}.kbq-checkbox .kbq-checkbox-label{color:var(--kbq-checkbox-theme-default-text)}.kbq-checkbox .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-default-caption)}.kbq-checkbox:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-hover-border);background-color:var(--kbq-checkbox-theme-states-hover-background)}.kbq-checkbox.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-border);background-color:var(--kbq-checkbox-theme-states-checked-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-hover-border);background-color:var(--kbq-checkbox-theme-states-checked-hover-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-focused-border);background-color:var(--kbq-checkbox-theme-states-checked-focused-background);outline:var(--kbq-checkbox-theme-states-checked-focused-outline)}.kbq-checkbox .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-focused-border);background-color:var(--kbq-checkbox-theme-states-focused-background);outline:var(--kbq-checkbox-theme-states-focused-outline)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-disabled-border);background-color:var(--kbq-checkbox-theme-states-disabled-background)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-states-disabled-color)}.kbq-checkbox.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-states-disabled-caption)}.kbq-checkbox.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-theme-states-disabled-text)}.kbq-checkbox.kbq-error .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-default-border);background-color:var(--kbq-checkbox-error-default-background)}.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-default-color)}.kbq-checkbox.kbq-error .kbq-checkbox-label{color:var(--kbq-checkbox-error-default-text)}.kbq-checkbox.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-default-caption)}.kbq-checkbox.kbq-error:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-hover-border);background-color:var(--kbq-checkbox-error-states-hover-background)}.kbq-checkbox.kbq-error.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-border);background-color:var(--kbq-checkbox-error-states-checked-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-hover-border);background-color:var(--kbq-checkbox-error-states-checked-hover-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-focused-border);background-color:var(--kbq-checkbox-error-states-checked-focused-background);outline:var(--kbq-checkbox-error-states-checked-focused-outline)}.kbq-checkbox.kbq-error .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-focused-border);background-color:var(--kbq-checkbox-error-states-focused-background);outline:var(--kbq-checkbox-error-states-focused-outline)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-disabled-border);background-color:var(--kbq-checkbox-error-states-disabled-background)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-states-disabled-color)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-states-disabled-caption)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-error-states-disabled-text)}.kbq-checkbox{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-checkbox .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-checkbox.kbq-checkbox_big{font-size:var(--kbq-typography-text-big-font-size);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-checkbox.kbq-checkbox_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-checkbox{--kbq-checkbox-size-normal-width: var(--kbq-size-l);--kbq-checkbox-size-normal-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-normal-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-normal-top: var(--kbq-size-3xs);--kbq-checkbox-size-big-width: var(--kbq-size-l);--kbq-checkbox-size-big-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-big-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-big-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-big-top: var(--kbq-size-xxs);--kbq-checkbox-theme-default-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-default-color: var(--kbq-icon-white);--kbq-checkbox-theme-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-theme-default-background: var(--kbq-background-bg);--kbq-checkbox-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-theme-states-hover-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-checkbox-theme-states-checked-border: transparent;--kbq-checkbox-theme-states-checked-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-hover-border: transparent;--kbq-checkbox-theme-states-checked-hover-background: var(--kbq-states-background-theme-hover);--kbq-checkbox-theme-states-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-focused-background: var(--kbq-background-bg);--kbq-checkbox-theme-states-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-theme-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-theme-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-theme-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-theme-states-disabled-caption: var(--kbq-states-icon-disabled);--kbq-checkbox-error-default-border: var(--kbq-line-error);--kbq-checkbox-error-default-color: var(--kbq-icon-white);--kbq-checkbox-error-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-error-default-background: var(--kbq-background-error-less);--kbq-checkbox-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-error-states-hover-border: var(--kbq-line-error);--kbq-checkbox-error-states-hover-background: var(--kbq-states-background-error-fade-hover);--kbq-checkbox-error-states-checked-border: transparent;--kbq-checkbox-error-states-checked-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-hover-border: transparent;--kbq-checkbox-error-states-checked-hover-background: var(--kbq-states-background-error-hover);--kbq-checkbox-error-states-focused-border: var(--kbq-line-error);--kbq-checkbox-error-states-focused-background: var(--kbq-background-error-less);--kbq-checkbox-error-states-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-border: var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-error-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-error-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-error-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-error-states-disabled-caption: var(--kbq-states-icon-disabled)}\n"] }]
|
|
258
|
+
}, providers: [KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<label #label class=\"kbq-checkbox__layout\" [attr.for]=\"inputId\">\n <div\n class=\"kbq-checkbox__inner-container\"\n [class.kbq-checkbox__inner-container_no-side-margin]=\"\n !checkboxLabel.textContent || !checkboxLabel.textContent.trim()\n \"\n >\n <input\n #input\n type=\"checkbox\"\n class=\"kbq-checkbox-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [required]=\"required\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"kbq-checkbox__frame\">\n <i class=\"kbq-checkbox-checkmark kbq kbq-check-s_16\"></i>\n <i class=\"kbq-checkbox-mixedmark kbq kbq-minus-s_16\"></i>\n </div>\n </div>\n\n <div class=\"kbq-checkbox__text-container\">\n <span #checkboxLabel class=\"kbq-checkbox-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n", styles: [".kbq-checkbox-checkmark,.kbq-checkbox-mixedmark{display:none}.kbq-checkbox__frame{display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;background-color:transparent;border-radius:var(--kbq-checkbox-size-normal-border-radius);border-width:var(--kbq-checkbox-size-normal-border-width);border-style:solid;height:var(--kbq-checkbox-size-normal-width);width:var(--kbq-checkbox-size-normal-width)}.kbq-checkbox__layout{box-sizing:initial;position:relative;display:inline-flex;max-width:calc(100% - (var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding)));cursor:inherit;padding-top:var(--kbq-checkbox-size-normal-padding-top);padding-bottom:var(--kbq-checkbox-size-normal-padding-bottom);padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding));vertical-align:top}.kbq-checkbox__inner-container{display:inline-block;position:absolute;top:var(--kbq-checkbox-size-normal-top);left:0}.kbq-checkbox{display:inline-block;cursor:pointer;-webkit-tap-highlight-color:transparent;max-width:100%}.kbq-checkbox.kbq-checked .kbq-checkbox-checkmark{display:block}.kbq-checkbox.kbq-checked .kbq-checkbox-mixedmark,.kbq-checkbox.kbq-indeterminate .kbq-checkbox-checkmark{display:none}.kbq-checkbox.kbq-indeterminate .kbq-checkbox-mixedmark{display:block}.kbq-checkbox.kbq-disabled{cursor:default}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{box-shadow:none}.kbq-checkbox .kbq-hint{margin-top:var(--kbq-checkbox-size-normal-vertical-content-padding)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__layout{max-width:calc(100% - (var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding)));padding-left:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__inner-container{top:var(--kbq-checkbox-size-big-top);height:var(--kbq-checkbox-size-big-width);width:var(--kbq-checkbox-size-big-width)}.kbq-checkbox.kbq-checkbox_big .kbq-checkbox__frame{border-radius:var(--kbq-checkbox-size-big-border-radius);border-width:var(--kbq-checkbox-size-big-border-width);border-style:solid}.kbq-checkbox.kbq-checkbox_big .kbq-hint{margin-top:var(--kbq-checkbox-size-big-vertical-content-padding)}.kbq-checkbox__text-container{display:flex;flex-direction:column;max-width:100%}.kbq-checkbox__inner-container_no-side-margin{margin-left:0;margin-right:0}.kbq-checkbox_label-before .kbq-checkbox__layout{padding-left:0;padding-right:calc(var(--kbq-checkbox-size-normal-width) + var(--kbq-checkbox-size-normal-horizontal-content-padding))}.kbq-checkbox_label-before .kbq-checkbox__inner-container{right:0;left:unset}.kbq-checkbox .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-default-border);background-color:var(--kbq-checkbox-theme-default-background)}.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-default-color)}.kbq-checkbox .kbq-checkbox-label{color:var(--kbq-checkbox-theme-default-text)}.kbq-checkbox .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-default-caption)}.kbq-checkbox:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-hover-border);background-color:var(--kbq-checkbox-theme-states-hover-background)}.kbq-checkbox.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-border);background-color:var(--kbq-checkbox-theme-states-checked-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-hover-border);background-color:var(--kbq-checkbox-theme-states-checked-hover-background)}.kbq-checkbox.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-checked-focused-border);background-color:var(--kbq-checkbox-theme-states-checked-focused-background);outline:var(--kbq-checkbox-theme-states-checked-focused-outline)}.kbq-checkbox .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-focused-border);background-color:var(--kbq-checkbox-theme-states-focused-background);outline:var(--kbq-checkbox-theme-states-focused-outline)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-theme-states-disabled-border);background-color:var(--kbq-checkbox-theme-states-disabled-background)}.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-theme-states-disabled-color)}.kbq-checkbox.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-theme-states-disabled-caption)}.kbq-checkbox.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-theme-states-disabled-text)}.kbq-checkbox.kbq-error .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-default-border);background-color:var(--kbq-checkbox-error-default-background)}.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-default-color)}.kbq-checkbox.kbq-error .kbq-checkbox-label{color:var(--kbq-checkbox-error-default-text)}.kbq-checkbox.kbq-error .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-default-caption)}.kbq-checkbox.kbq-error:hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-hover-border);background-color:var(--kbq-checkbox-error-states-hover-background)}.kbq-checkbox.kbq-error.kbq-checked .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-border);background-color:var(--kbq-checkbox-error-states-checked-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled):hover .kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled).kbq-hover .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-hover-border);background-color:var(--kbq-checkbox-error-states-checked-hover-background)}.kbq-checkbox.kbq-error.kbq-checked:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame,.kbq-checkbox.kbq-error.kbq-indeterminate:not(.kbq-disabled) .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-checked-focused-border);background-color:var(--kbq-checkbox-error-states-checked-focused-background);outline:var(--kbq-checkbox-error-states-checked-focused-outline)}.kbq-checkbox.kbq-error .kbq-checkbox-input.cdk-keyboard-focused+.kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-focused-border);background-color:var(--kbq-checkbox-error-states-focused-background);outline:var(--kbq-checkbox-error-states-focused-outline)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame{border-color:var(--kbq-checkbox-error-states-disabled-border);background-color:var(--kbq-checkbox-error-states-disabled-background)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-checkmark,.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox__frame .kbq-checkbox-mixedmark{color:var(--kbq-checkbox-error-states-disabled-color)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-hint .kbq-hint__text{color:var(--kbq-checkbox-error-states-disabled-caption)}.kbq-checkbox.kbq-error.kbq-disabled .kbq-checkbox-label{color:var(--kbq-checkbox-error-states-disabled-text)}.kbq-checkbox{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}.kbq-checkbox .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-compact-font-size);font-weight:var(--kbq-typography-text-compact-font-weight);line-height:var(--kbq-typography-text-compact-line-height);font-family:var(--kbq-typography-text-compact-font-family);text-transform:var(--kbq-typography-text-compact-text-transform);font-feature-settings:var(--kbq-typography-text-compact-font-feature-settings);letter-spacing:var(--kbq-typography-text-compact-letter-spacing)}.kbq-checkbox.kbq-checkbox_big{font-size:var(--kbq-typography-text-big-font-size);font-weight:var(--kbq-typography-text-big-font-weight);line-height:var(--kbq-typography-text-big-line-height);font-family:var(--kbq-typography-text-big-font-family);text-transform:var(--kbq-typography-text-big-text-transform);font-feature-settings:var(--kbq-typography-text-big-font-feature-settings);letter-spacing:var(--kbq-typography-text-big-letter-spacing)}.kbq-checkbox.kbq-checkbox_big .kbq-hint .kbq-hint__text{font-size:var(--kbq-typography-text-normal-font-size);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-checkbox{--kbq-checkbox-size-normal-width: var(--kbq-size-l);--kbq-checkbox-size-normal-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-normal-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-normal-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-normal-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-normal-top: var(--kbq-size-3xs);--kbq-checkbox-size-big-width: var(--kbq-size-l);--kbq-checkbox-size-big-border-width: var(--kbq-size-border-width);--kbq-checkbox-size-big-border-radius: var(--kbq-size-xxs);--kbq-checkbox-size-big-horizontal-content-padding: var(--kbq-size-s);--kbq-checkbox-size-big-vertical-content-padding: var(--kbq-size-3xs);--kbq-checkbox-size-big-top: var(--kbq-size-xxs);--kbq-checkbox-theme-default-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-default-color: var(--kbq-icon-white);--kbq-checkbox-theme-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-theme-default-background: var(--kbq-background-bg);--kbq-checkbox-theme-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-theme-states-hover-border: var(--kbq-line-contrast-fade);--kbq-checkbox-theme-states-hover-background: var(--kbq-states-background-transparent-hover);--kbq-checkbox-theme-states-checked-border: transparent;--kbq-checkbox-theme-states-checked-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-hover-border: transparent;--kbq-checkbox-theme-states-checked-hover-background: var(--kbq-states-background-theme-hover);--kbq-checkbox-theme-states-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-focused-background: var(--kbq-background-bg);--kbq-checkbox-theme-states-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-border: var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-checked-focused-background: var(--kbq-background-theme);--kbq-checkbox-theme-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-theme);--kbq-checkbox-theme-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-theme-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-theme-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-theme-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-theme-states-disabled-caption: var(--kbq-states-icon-disabled);--kbq-checkbox-error-default-border: var(--kbq-line-error);--kbq-checkbox-error-default-color: var(--kbq-icon-white);--kbq-checkbox-error-default-text: var(--kbq-foreground-contrast);--kbq-checkbox-error-default-background: var(--kbq-background-error-less);--kbq-checkbox-error-default-caption: var(--kbq-foreground-contrast-secondary);--kbq-checkbox-error-states-hover-border: var(--kbq-line-error);--kbq-checkbox-error-states-hover-background: var(--kbq-states-background-error-fade-hover);--kbq-checkbox-error-states-checked-border: transparent;--kbq-checkbox-error-states-checked-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-hover-border: transparent;--kbq-checkbox-error-states-checked-hover-background: var(--kbq-states-background-error-hover);--kbq-checkbox-error-states-focused-border: var(--kbq-line-error);--kbq-checkbox-error-states-focused-background: var(--kbq-background-error-less);--kbq-checkbox-error-states-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-border: var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-checked-focused-background: var(--kbq-background-error);--kbq-checkbox-error-states-checked-focused-outline: 1px solid var(--kbq-states-line-focus-error);--kbq-checkbox-error-states-disabled-border: var(--kbq-states-line-disabled);--kbq-checkbox-error-states-disabled-color: var(--kbq-states-icon-disabled);--kbq-checkbox-error-states-disabled-text: var(--kbq-states-foreground-disabled);--kbq-checkbox-error-states-disabled-background: var(--kbq-states-background-disabled);--kbq-checkbox-error-states-disabled-caption: var(--kbq-states-icon-disabled)}\n"] }]
|
|
259
259
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{
|
|
260
260
|
type: Optional
|
|
261
261
|
}, {
|
|
@@ -292,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
292
292
|
}], indeterminate: [{
|
|
293
293
|
type: Input
|
|
294
294
|
}] } });
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUVmLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRXRGLHdFQUF3RTtBQUN4RSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFRO0lBQ3BELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDMUMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksb0JBU1g7QUFURCxXQUFZLG9CQUFvQjtJQUM1QixzRUFBc0U7SUFDdEUscUNBQWEsQ0FBQTtJQUNiLHVFQUF1RTtJQUN2RSwyQ0FBbUIsQ0FBQTtJQUNuQix5RUFBeUU7SUFDekUsK0NBQXVCLENB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Q1osV0FBVyxFQUFFLElBQUk7d0JBQ2pCLGlCQUFpQixFQUFFLFVBQVU7d0JBQzdCLDBCQUEwQixFQUFFLEtBQUs7d0JBQ2pDLDJCQUEyQixFQUFFLGVBQWU7d0JBQzVDLHFCQUFxQixFQUFFLFNBQVM7d0JBQ2hDLHNCQUFzQixFQUFFLFVBQVU7d0JBQ2xDLG1DQUFtQyxFQUFFLDJCQUEyQjtxQkFDbkUsYUFDVSxDQUFDLG1DQUFtQyxDQUFDLGlCQUNqQyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtSDFDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMseUJBQXlCO3lDQWhIeEMsR0FBRztzQkFBWCxLQUFLO2dCQUdHLEVBQUU7c0JBQVYsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHYSxNQUFNO3NCQUF4QixNQUFNO2dCQUdZLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFHRSxLQUFLO3NCQUFiLEtBQUs7Z0JBR2lDLFlBQVk7c0JBQWxELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFRRyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU1sQyxPQUFPO3NCQURWLEtBQUs7Z0JBZ0JGLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFlbEMsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFrQmpDLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEticUNoZWNrZWRTdGF0ZSwgS2JxQ29sb3JEaXJlY3RpdmUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLQlFfQ0hFQ0tCT1hfQ0xJQ0tfQUNUSU9OLCBLYnFDaGVja2JveENsaWNrQWN0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1jb25maWcnO1xuXG4vLyBJbmNyZWFzaW5nIGludGVnZXIgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkcyBmb3IgY2hlY2tib3ggY29tcG9uZW50cy5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVyIEV4cHJlc3Npb24gdGhhdCBhbGxvd3Mga2JxLWNoZWNrYm94IHRvIHJlZ2lzdGVyIGFzIGEgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gKiBUaGlzIGFsbG93cyBpdCB0byBzdXBwb3J0IFsobmdNb2RlbCldLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgS0JRX0NIRUNLQk9YX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBLYnFDaGVja2JveCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IHN0YXRlcyB0aGF0IHJlcXVpcmUgY3VzdG9tIHRyYW5zaXRpb25zIGJldHdlZW4gdGhlbS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGVudW0gVHJhbnNpdGlvbkNoZWNrU3RhdGUge1xuICAgIC8qKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGJlZm9yZSBhbnkgdXNlciBpbnRlcmFjdGlvbi4gKi9cbiAgICBJbml0ID0gJ2luaXQnLFxuICAgIC8qKiBUaGUgc3RhdGUgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgd2hlbiBpdCdzIGJlY29taW5nIGNoZWNrZWQuICovXG4gICAgQ2hlY2tlZCA9ICdjaGVja2VkJyxcbiAgICAvKiogVGhlIHN0YXRlIHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50IHdoZW4gaXQncyBiZWNvbWluZyB1bmNoZWNrZWQuICovXG4gICAgVW5jaGVja2VkID0gJ3VuY2hlY2tlZCcsXG4gICAgLyoqIFRoZSBzdGF0ZSByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCB3aGVuIGl0J3MgYmVjb21pbmcgaW5kZXRlcm1pbmF0ZS4gKi9cbiAgICBJbmRldGVybWluYXRlID0gJ2luZGV0ZXJtaW5hdGUnXG59XG5cbi8qKiBDaGFuZ2UgZXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxQ2hlY2tib3guICovXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3hDaGFuZ2Uge1xuICAgIC8qKiBUaGUgc291cmNlIEticUNoZWNrYm94IG9mIHRoZSBldmVudC4gKi9cbiAgICBzb3VyY2U6IEticUNoZWNrYm94O1xuICAgIC8qKiBUaGUgbmV3IGBjaGVja2VkYCB2YWx1ZSBvZiB0aGUgY2hlY2tib3guICovXG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIEtvb2JpcSBjaGVja2JveCBjb21wb25lbnQuIFN1cHBvcnRzIGFsbCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhbiBIVE1MNSBjaGVja2JveCxcbiAqIGFuZCBleHBvc2VzIGEgc2ltaWxhciBBUEkuIEEgS2JxQ2hlY2tib3ggY2FuIGJlIGVpdGhlciBjaGVja2VkLCB1bmNoZWNrZWQsIGluZGV0ZXJtaW5hdGUsIG9yXG4gKiBkaXNhYmxlZC4gTm90ZSB0aGF0IGFsbCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcyBhcmUgdGFrZW4gY2FyZSBvZiBieSB0aGUgY29tcG9uZW50LFxuICogc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm92aWRlIHRoZW0geW91cnNlbGYuIEhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIG9taXQgYSBsYWJlbCBhbmQgc3RpbGxcbiAqIGhhdmUgdGhlIGNoZWNrYm94IGJlIGFjY2Vzc2libGUsIHlvdSBtYXkgc3VwcGx5IGFuIFthcmlhLWxhYmVsXSBpbnB1dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtY2hlY2tib3gnLFxuICAgIGV4cG9ydEFzOiAna2JxQ2hlY2tib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnY2hlY2tib3guaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2NoZWNrYm94LnNjc3MnLCAnY2hlY2tib3gtdG9rZW5zLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWNoZWNrYm94JyxcbiAgICAgICAgJ1tpZF0nOiAnaWQnLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWNoZWNrYm94X2JpZ10nOiAnYmlnJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5kZXRlcm1pbmF0ZV0nOiAnaW5kZXRlcm1pbmF0ZScsXG4gICAgICAgICdbY2xhc3Mua2JxLWNoZWNrZWRdJzogJ2NoZWNrZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1jaGVja2JveF9sYWJlbC1iZWZvcmVdJzogJ2xhYmVsUG9zaXRpb24gPT0gXCJiZWZvcmVcIidcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW0tCUV9DSEVDS0JPWF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEticUNoZWNrYm94IGV4dGVuZHMgS2JxQ29sb3JEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBiaWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBBIHVuaXF1ZSBpZCBmb3IgdGhlIGNoZWNrYm94IGlucHV0LiBJZiBub25lIGlzIHN1cHBsaWVkLCBpdCB3aWxsIGJlIGF1dG8tZ2VuZXJhdGVkLiAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGFwcGVhciBhZnRlciBvciBiZWZvcmUgdGhlIGNoZWNrYm94LiBEZWZhdWx0cyB0byAnYWZ0ZXInICovXG4gICAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJztcblxuICAgIC8qKiBOYW1lIHZhbHVlIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgaW5wdXQgZWxlbWVudCBpZiBwcmVzZW50ICovXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGVja2JveCdzIGBjaGVja2VkYCB2YWx1ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxLYnFDaGVja2JveENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEticUNoZWNrYm94Q2hhbmdlPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2hlY2tib3gncyBgaW5kZXRlcm1pbmF0ZWAgdmFsdWUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgaW5kZXRlcm1pbmF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIFRoZSB2YWx1ZSBhdHRyaWJ1dGUgb2YgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50ICovXG4gICAgQElucHV0KCkgdmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBUaGUgbmF0aXZlIGA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCI+YCBlbGVtZW50ICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFJldHVybnMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIHZpc3VhbCBoaWRkZW4gaW5wdXQuICovXG4gICAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaWQgfHwgdGhpcy51bmlxdWVJZH0taW5wdXRgO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyByZXF1aXJlZC4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICAgIH1cblxuICAgIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja2VkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiB0aGlzLl90YWJJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90YWJJbmRleCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RhYkluZGV4ID0gMDtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGluZGV0ZXJtaW5hdGUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyBcIm1peGVkXCIgbW9kZSBhbmQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXByZXNlbnQgYSBjaGVja2JveCB3aXRoIHRocmVlIHN0YXRlcywgZS5nLiBhIGNoZWNrYm94IHRoYXQgcmVwcmVzZW50cyBhIG5lc3RlZCBsaXN0IG9mXG4gICAgICogY2hlY2thYmxlIGl0ZW1zLiBOb3RlIHRoYXQgd2hlbmV2ZXIgY2hlY2tib3ggaXMgbWFudWFsbHkgY2xpY2tlZCwgaW5kZXRlcm1pbmF0ZSBpcyBpbW1lZGlhdGVseVxuICAgICAqIHNldCB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGU7XG5cbiAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUoVHJhbnNpdGlvbkNoZWNrU3RhdGUuSW5kZXRlcm1pbmF0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUodGhpcy5jaGVja2VkID8gVHJhbnNpdGlvbkNoZWNrU3RhdGUuQ2hlY2tlZCA6IFRyYW5zaXRpb25DaGVja1N0YXRlLlVuY2hlY2tlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSB1bmlxdWVJZDogc3RyaW5nID0gYGticS1jaGVja2JveC0keysrbmV4dFVuaXF1ZUlkfWA7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRBbmltYXRpb25DbGFzczogc3RyaW5nID0gJyc7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRDaGVja1N0YXRlOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZSA9IFRyYW5zaXRpb25DaGVja1N0YXRlLkluaXQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0NIRUNLQk9YX0NMSUNLX0FDVElPTikgcHJpdmF0ZSBjbGlja0FjdGlvbjogS2JxQ2hlY2tib3hDbGlja0FjdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLnVuaXF1ZUlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBibHVycmVkLiBOZWVkZWQgdG8gcHJvcGVybHkgaW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgICAgICAgLm1vbml0b3IodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZvY3VzT3JpZ2luKSA9PiB0aGlzLm9uSW5wdXRGb2N1c0NoYW5nZShmb2N1c09yaWdpbikpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGJlaW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgdGV4dCBjaGFuZ2VzLiAqL1xuICAgIG9uTGFiZWxUZXh0Q2hhbmdlKCkge1xuICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBnZXR0aW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgb2YgdGhlIGNoZWNrYm94IGNoYW5nZXMuXG4gICAgICAgIC8vIFNpbmNlIHRoZSBjaGVja2JveCB1c2VzIHRoZSBPblB1c2ggc3RyYXRlZ3kgd2UgbmVlZCB0byBub3RpZnkgaXQgYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICAvLyB0aGF0IGhhcyBiZWVuIHJlY29nbml6ZWQgYnkgdGhlIGNka09ic2VydmVDb250ZW50IGRpcmVjdGl2ZS5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhIXZhbHVlO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgZ2V0QXJpYUNoZWNrZWQoKTogS2JxQ2hlY2tlZFN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZCA/ICd0cnVlJyA6IHRoaXMuaW5kZXRlcm1pbmF0ZSA/ICdtaXhlZCcgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBgY2hlY2tlZGAgc3RhdGUgb2YgdGhlIGNoZWNrYm94LiAqL1xuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyIGZvciBjaGVja2JveCBpbnB1dCBlbGVtZW50LlxuICAgICAqIFRvZ2dsZXMgY2hlY2tlZCBzdGF0ZSBpZiBlbGVtZW50IGlzIG5vdCBkaXNhYmxlZC5cbiAgICAgKiBEbyBub3QgdG9nZ2xlIG9uIChjaGFuZ2UpIGV2ZW50IHNpbmNlIElFIGRvZXNuJ3QgZmlyZSBjaGFuZ2UgZXZlbnQgd2hlblxuICAgICAqICAgaW5kZXRlcm1pbmF0ZSBjaGVja2JveCBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSBldmVudCBJbnB1dCBjbGljayBldmVudFxuICAgICAqL1xuICAgIG9uSW5wdXRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIGZvciBjbGljayBldmVudHMgb24gdGhlIHZpc3VhbCBoaWRkZW4gaW5wdXQgZWxlbWVudC5cbiAgICAgICAgLy8gQnkgZGVmYXVsdCwgd2hlbiBhIHVzZXIgY2xpY2tzIG9uIGEgbGFiZWwgZWxlbWVudCwgYSBnZW5lcmF0ZWQgY2xpY2sgZXZlbnQgd2lsbCBiZVxuICAgICAgICAvLyBkaXNwYXRjaGVkIG9uIHRoZSBhc3NvY2lhdGVkIGlucHV0IGVsZW1lbnQuIFNpbmNlIHdlIGFyZSB1c2luZyBhIGxhYmVsIGVsZW1lbnQgYXMgb3VyXG4gICAgICAgIC8vIHJvb3QgY29udGFpbmVyLCB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGBjaGVja2JveGAgd2lsbCBiZSBleGVjdXRlZCB0d2ljZS5cbiAgICAgICAgLy8gVGhlIHJlYWwgY2xpY2sgZXZlbnQgd2lsbCBidWJibGUgdXAsIGFuZCB0aGUgZ2VuZXJhdGVkIGNsaWNrIGV2ZW50IGFsc28gdHJpZXMgdG8gYnViYmxlIHVwLlxuICAgICAgICAvLyBUaGlzIHdpbGwgbGVhZCB0byBtdWx0aXBsZSBjbGljayBldmVudHMuXG4gICAgICAgIC8vIFByZXZlbnRpbmcgYnViYmxpbmcgZm9yIHRoZSBzZWNvbmQgZXZlbnQgd2lsbCBzb2x2ZSB0aGF0IGlzc3VlLlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAvLyBJZiByZXNldEluZGV0ZXJtaW5hdGUgaXMgZmFsc2UsIGFuZCB0aGUgY3VycmVudCBzdGF0ZSBpcyBpbmRldGVybWluYXRlLCBkbyBub3RoaW5nIG9uIGNsaWNrXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmNsaWNrQWN0aW9uICE9PSAnbm9vcCcpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gdXNlciBtYW51YWxseSBjbGljayBvbiB0aGUgY2hlY2tib3gsIGBpbmRldGVybWluYXRlYCBpcyBzZXQgdG8gZmFsc2UuXG4gICAgICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlICYmIHRoaXMuY2xpY2tBY3Rpb24gIT09ICdjaGVjaycpIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUodGhpcy5fY2hlY2tlZCA/IFRyYW5zaXRpb25DaGVja1N0YXRlLkNoZWNrZWQgOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5VbmNoZWNrZWQpO1xuXG4gICAgICAgICAgICAvLyBFbWl0IG91ciBjdXN0b20gY2hhbmdlIGV2ZW50IGlmIHRoZSBuYXRpdmUgaW5wdXQgZW1pdHRlZCBvbmUuXG4gICAgICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gb25seSBlbWl0IGl0LCBpZiB0aGUgbmF0aXZlIGlucHV0IHRyaWdnZXJlZCBvbmUsIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIGNoYW5nZSBldmVudCwgd2hlbiB0aGUgYGNoZWNrZWRgIHZhcmlhYmxlIGNoYW5nZXMgZm9yIGV4YW1wbGUuXG4gICAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuY2xpY2tBY3Rpb24gPT09ICdub29wJykge1xuICAgICAgICAgICAgLy8gUmVzZXQgbmF0aXZlIGlucHV0IHdoZW4gY2xpY2tlZCB3aXRoIG5vb3AuIFRoZSBuYXRpdmUgY2hlY2tib3ggYmVjb21lcyBjaGVja2VkIGFmdGVyXG4gICAgICAgICAgICAvLyBjbGljaywgcmVzZXQgaXQgdG8gYmUgYWxpZ24gd2l0aCBgY2hlY2tlZGAgdmFsdWUgb2YgYGticS1jaGVja2JveGAuXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0aGlzLmluZGV0ZXJtaW5hdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgY2hlY2tib3guICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdrZXlib2FyZCcpO1xuICAgIH1cblxuICAgIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBvbiB0aGUgY2hhbmdlIGV2ZW50LlxuICAgICAgICAvLyBPdGhlcndpc2UgdGhlIGNoYW5nZSBldmVudCwgZnJvbSB0aGUgaW5wdXQgZWxlbWVudCwgd2lsbCBidWJibGUgdXAgYW5kXG4gICAgICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSB0cmFuc2l0aW9uQ2hlY2tTdGF0ZShuZXdTdGF0ZTogVHJhbnNpdGlvbkNoZWNrU3RhdGUpIHtcbiAgICAgICAgY29uc3Qgb2xkU3RhdGUgPSB0aGlzLmN1cnJlbnRDaGVja1N0YXRlO1xuICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmIChvbGRTdGF0ZSA9PT0gbmV3U3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jdXJyZW50QW5pbWF0aW9uQ2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50Q2hlY2tTdGF0ZSA9IG5ld1N0YXRlO1xuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jdXJyZW50QW5pbWF0aW9uQ2xhc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0Q2hhbmdlRXZlbnQoKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEticUNoZWNrYm94Q2hhbmdlKCk7XG5cbiAgICAgICAgZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgZXZlbnQuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcblxuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5jaGVja2VkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgZm9jdXMgY2hhbmdlcyBmb3IgdGhlIGlucHV0IGVsZW1lbnQuICovXG4gICAgcHJpdmF0ZSBvbklucHV0Rm9jdXNDaGFuZ2UoZm9jdXNPcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgICAgIGlmIChmb2N1c09yaWdpbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxsYWJlbCAjbGFiZWwgY2xhc3M9XCJrYnEtY2hlY2tib3hfX2xheW91dFwiIFthdHRyLmZvcl09XCJpbnB1dElkXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImticS1jaGVja2JveF9faW5uZXItY29udGFpbmVyXCJcbiAgICAgICAgW2NsYXNzLmticS1jaGVja2JveF9faW5uZXItY29udGFpbmVyX25vLXNpZGUtbWFyZ2luXT1cIlxuICAgICAgICAgICAgIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQgfHwgIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQudHJpbSgpXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNsYXNzPVwia2JxLWNoZWNrYm94LWlucHV0IGNkay12aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cImdldEFyaWFDaGVja2VkKClcIlxuICAgICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtY2hlY2tib3hfX2ZyYW1lXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImticS1jaGVja2JveC1jaGVja21hcmsga2JxIGticS1jaGVjay1zXzE2XCI+PC9pPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEtY2hlY2tib3gtbWl4ZWRtYXJrIGticSBrYnEtbWludXMtc18xNlwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwia2JxLWNoZWNrYm94X190ZXh0LWNvbnRhaW5lclwiPlxuICAgICAgICA8c3BhbiAjY2hlY2tib3hMYWJlbCBjbGFzcz1cImticS1jaGVja2JveC1sYWJlbFwiIChjZGtPYnNlcnZlQ29udGVudCk9XCJvbkxhYmVsVGV4dENoYW5nZSgpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWhpbnRcIiAvPlxuICAgIDwvZGl2PlxuPC9sYWJlbD5cbiJdfQ==
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NoZWNrYm94L2NoZWNrYm94LnRzIiwiLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5RCxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUVmLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRXRGLHdFQUF3RTtBQUN4RSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFFckI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFRO0lBQ3BELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDMUMsS0FBSyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFOLElBQVksb0JBU1g7QUFURCxXQUFZLG9CQUFvQjtJQUM1QixzRUFBc0U7SUFDdEUscUNBQWEsQ0FBQTtJQUNiLHVFQUF1RTtJQUN2RSwyQ0FBbUIsQ0FBQTtJQUNuQix5RUFBeUU7SUFDekUsK0NBQXVCLENB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Q1osV0FBVyxFQUFFLElBQUk7d0JBQ2pCLGlCQUFpQixFQUFFLFVBQVU7d0JBQzdCLDBCQUEwQixFQUFFLEtBQUs7d0JBQ2pDLDJCQUEyQixFQUFFLGVBQWU7d0JBQzVDLHFCQUFxQixFQUFFLFNBQVM7d0JBQ2hDLHNCQUFzQixFQUFFLFVBQVU7d0JBQ2xDLG1DQUFtQyxFQUFFLDJCQUEyQjtxQkFDbkUsYUFDVSxDQUFDLG1DQUFtQyxDQUFDLGlCQUNqQyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtSDFDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMseUJBQXlCO3lDQWhIeEMsR0FBRztzQkFBWCxLQUFLO2dCQUdHLEVBQUU7c0JBQVYsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHYSxNQUFNO3NCQUF4QixNQUFNO2dCQUdZLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFHRSxLQUFLO3NCQUFiLEtBQUs7Z0JBR2lDLFlBQVk7c0JBQWxELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFRRyxRQUFRO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQU1sQyxPQUFPO3NCQURWLEtBQUs7Z0JBZ0JGLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFlbEMsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtnQkFrQmpDLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEticUNoZWNrZWRTdGF0ZSwgS2JxQ29sb3JEaXJlY3RpdmUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLQlFfQ0hFQ0tCT1hfQ0xJQ0tfQUNUSU9OLCBLYnFDaGVja2JveENsaWNrQWN0aW9uIH0gZnJvbSAnLi9jaGVja2JveC1jb25maWcnO1xuXG4vLyBJbmNyZWFzaW5nIGludGVnZXIgZm9yIGdlbmVyYXRpbmcgdW5pcXVlIGlkcyBmb3IgY2hlY2tib3ggY29tcG9uZW50cy5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFByb3ZpZGVyIEV4cHJlc3Npb24gdGhhdCBhbGxvd3Mga2JxLWNoZWNrYm94IHRvIHJlZ2lzdGVyIGFzIGEgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gKiBUaGlzIGFsbG93cyBpdCB0byBzdXBwb3J0IFsobmdNb2RlbCldLlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgS0JRX0NIRUNLQk9YX0NPTlRST0xfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBLYnFDaGVja2JveCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGlmZmVyZW50IHN0YXRlcyB0aGF0IHJlcXVpcmUgY3VzdG9tIHRyYW5zaXRpb25zIGJldHdlZW4gdGhlbS5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGVudW0gVHJhbnNpdGlvbkNoZWNrU3RhdGUge1xuICAgIC8qKiBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGJlZm9yZSBhbnkgdXNlciBpbnRlcmFjdGlvbi4gKi9cbiAgICBJbml0ID0gJ2luaXQnLFxuICAgIC8qKiBUaGUgc3RhdGUgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQgd2hlbiBpdCdzIGJlY29taW5nIGNoZWNrZWQuICovXG4gICAgQ2hlY2tlZCA9ICdjaGVja2VkJyxcbiAgICAvKiogVGhlIHN0YXRlIHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50IHdoZW4gaXQncyBiZWNvbWluZyB1bmNoZWNrZWQuICovXG4gICAgVW5jaGVja2VkID0gJ3VuY2hlY2tlZCcsXG4gICAgLyoqIFRoZSBzdGF0ZSByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudCB3aGVuIGl0J3MgYmVjb21pbmcgaW5kZXRlcm1pbmF0ZS4gKi9cbiAgICBJbmRldGVybWluYXRlID0gJ2luZGV0ZXJtaW5hdGUnXG59XG5cbi8qKiBDaGFuZ2UgZXZlbnQgb2JqZWN0IGVtaXR0ZWQgYnkgS2JxQ2hlY2tib3guICovXG5leHBvcnQgY2xhc3MgS2JxQ2hlY2tib3hDaGFuZ2Uge1xuICAgIC8qKiBUaGUgc291cmNlIEticUNoZWNrYm94IG9mIHRoZSBldmVudC4gKi9cbiAgICBzb3VyY2U6IEticUNoZWNrYm94O1xuICAgIC8qKiBUaGUgbmV3IGBjaGVja2VkYCB2YWx1ZSBvZiB0aGUgY2hlY2tib3guICovXG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIEtvb2JpcSBjaGVja2JveCBjb21wb25lbnQuIFN1cHBvcnRzIGFsbCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBvZiBhbiBIVE1MNSBjaGVja2JveCxcbiAqIGFuZCBleHBvc2VzIGEgc2ltaWxhciBBUEkuIEEgS2JxQ2hlY2tib3ggY2FuIGJlIGVpdGhlciBjaGVja2VkLCB1bmNoZWNrZWQsIGluZGV0ZXJtaW5hdGUsIG9yXG4gKiBkaXNhYmxlZC4gTm90ZSB0aGF0IGFsbCBhZGRpdGlvbmFsIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcyBhcmUgdGFrZW4gY2FyZSBvZiBieSB0aGUgY29tcG9uZW50LFxuICogc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm92aWRlIHRoZW0geW91cnNlbGYuIEhvd2V2ZXIsIGlmIHlvdSB3YW50IHRvIG9taXQgYSBsYWJlbCBhbmQgc3RpbGxcbiAqIGhhdmUgdGhlIGNoZWNrYm94IGJlIGFjY2Vzc2libGUsIHlvdSBtYXkgc3VwcGx5IGFuIFthcmlhLWxhYmVsXSBpbnB1dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdrYnEtY2hlY2tib3gnLFxuICAgIGV4cG9ydEFzOiAna2JxQ2hlY2tib3gnLFxuICAgIHRlbXBsYXRlVXJsOiAnY2hlY2tib3guaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2NoZWNrYm94LnNjc3MnLCAnY2hlY2tib3gtdG9rZW5zLnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAna2JxLWNoZWNrYm94JyxcbiAgICAgICAgJ1tpZF0nOiAnaWQnLFxuICAgICAgICAnW2F0dHIuaWRdJzogJ2lkJyxcbiAgICAgICAgJ1thdHRyLmRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbY2xhc3Mua2JxLWNoZWNrYm94X2JpZ10nOiAnYmlnJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtaW5kZXRlcm1pbmF0ZV0nOiAnaW5kZXRlcm1pbmF0ZScsXG4gICAgICAgICdbY2xhc3Mua2JxLWNoZWNrZWRdJzogJ2NoZWNrZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLmticS1jaGVja2JveF9sYWJlbC1iZWZvcmVdJzogJ2xhYmVsUG9zaXRpb24gPT0gXCJiZWZvcmVcIidcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW0tCUV9DSEVDS0JPWF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEticUNoZWNrYm94IGV4dGVuZHMgS2JxQ29sb3JEaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBiaWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBBIHVuaXF1ZSBpZCBmb3IgdGhlIGNoZWNrYm94IGlucHV0LiBJZiBub25lIGlzIHN1cHBsaWVkLCBpdCB3aWxsIGJlIGF1dG8tZ2VuZXJhdGVkLiAqL1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG5cbiAgICAvKiogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGFwcGVhciBhZnRlciBvciBiZWZvcmUgdGhlIGNoZWNrYm94LiBEZWZhdWx0cyB0byAnYWZ0ZXInICovXG4gICAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInID0gJ2FmdGVyJztcblxuICAgIC8qKiBOYW1lIHZhbHVlIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgaW5wdXQgZWxlbWVudCBpZiBwcmVzZW50ICovXG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBjaGVja2JveCdzIGBjaGVja2VkYCB2YWx1ZSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxLYnFDaGVja2JveENoYW5nZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEticUNoZWNrYm94Q2hhbmdlPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgY2hlY2tib3gncyBgaW5kZXRlcm1pbmF0ZWAgdmFsdWUgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgaW5kZXRlcm1pbmF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIFRoZSB2YWx1ZSBhdHRyaWJ1dGUgb2YgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50ICovXG4gICAgQElucHV0KCkgdmFsdWU6IHN0cmluZztcblxuICAgIC8qKiBUaGUgbmF0aXZlIGA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCI+YCBlbGVtZW50ICovXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIFJldHVybnMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIHZpc3VhbCBoaWRkZW4gaW5wdXQuICovXG4gICAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuaWQgfHwgdGhpcy51bmlxdWVJZH0taW5wdXRgO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyByZXF1aXJlZC4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVxdWlyZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjaGVja2JveCBpcyBjaGVja2VkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGVja2VkO1xuICAgIH1cblxuICAgIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja2VkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGRpc2FibGVkLiAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gICAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkID8gLTEgOiB0aGlzLl90YWJJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgdGFiSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl90YWJJbmRleCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3RhYkluZGV4ID0gMDtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNoZWNrYm94IGlzIGluZGV0ZXJtaW5hdGUuIFRoaXMgaXMgYWxzbyBrbm93biBhcyBcIm1peGVkXCIgbW9kZSBhbmQgY2FuIGJlIHVzZWQgdG9cbiAgICAgKiByZXByZXNlbnQgYSBjaGVja2JveCB3aXRoIHRocmVlIHN0YXRlcywgZS5nLiBhIGNoZWNrYm94IHRoYXQgcmVwcmVzZW50cyBhIG5lc3RlZCBsaXN0IG9mXG4gICAgICogY2hlY2thYmxlIGl0ZW1zLiBOb3RlIHRoYXQgd2hlbmV2ZXIgY2hlY2tib3ggaXMgbWFudWFsbHkgY2xpY2tlZCwgaW5kZXRlcm1pbmF0ZSBpcyBpbW1lZGlhdGVseVxuICAgICAqIHNldCB0byBmYWxzZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXRlcm1pbmF0ZTtcbiAgICB9XG5cbiAgICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuX2luZGV0ZXJtaW5hdGU7XG5cbiAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5faW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUoVHJhbnNpdGlvbkNoZWNrU3RhdGUuSW5kZXRlcm1pbmF0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUodGhpcy5jaGVja2VkID8gVHJhbnNpdGlvbkNoZWNrU3RhdGUuQ2hlY2tlZCA6IFRyYW5zaXRpb25DaGVja1N0YXRlLlVuY2hlY2tlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuX2luZGV0ZXJtaW5hdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5kZXRlcm1pbmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSB1bmlxdWVJZDogc3RyaW5nID0gYGticS1jaGVja2JveC0keysrbmV4dFVuaXF1ZUlkfWA7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRBbmltYXRpb25DbGFzczogc3RyaW5nID0gJyc7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRDaGVja1N0YXRlOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZSA9IFRyYW5zaXRpb25DaGVja1N0YXRlLkluaXQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZm9jdXNNb25pdG9yOiBGb2N1c01vbml0b3IsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0NIRUNLQk9YX0NMSUNLX0FDVElPTikgcHJpdmF0ZSBjbGlja0FjdGlvbjogS2JxQ2hlY2tib3hDbGlja0FjdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMuaWQgPSB0aGlzLnVuaXF1ZUlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGxlZCB3aGVuIHRoZSBjaGVja2JveCBpcyBibHVycmVkLiBOZWVkZWQgdG8gcHJvcGVybHkgaW1wbGVtZW50IENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IHt9O1xuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclxuICAgICAgICAgICAgLm1vbml0b3IodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZvY3VzT3JpZ2luKSA9PiB0aGlzLm9uSW5wdXRGb2N1c0NoYW5nZShmb2N1c09yaWdpbikpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvci5zdG9wTW9uaXRvcmluZyh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGJlaW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgdGV4dCBjaGFuZ2VzLiAqL1xuICAgIG9uTGFiZWxUZXh0Q2hhbmdlKCkge1xuICAgICAgICAvLyBUaGlzIG1ldGhvZCBpcyBnZXR0aW5nIGNhbGxlZCB3aGVuZXZlciB0aGUgbGFiZWwgb2YgdGhlIGNoZWNrYm94IGNoYW5nZXMuXG4gICAgICAgIC8vIFNpbmNlIHRoZSBjaGVja2JveCB1c2VzIHRoZSBPblB1c2ggc3RyYXRlZ3kgd2UgbmVlZCB0byBub3RpZnkgaXQgYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICAvLyB0aGF0IGhhcyBiZWVuIHJlY29nbml6ZWQgYnkgdGhlIGNka09ic2VydmVDb250ZW50IGRpcmVjdGl2ZS5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhIXZhbHVlO1xuICAgIH1cblxuICAgIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgZ2V0QXJpYUNoZWNrZWQoKTogS2JxQ2hlY2tlZFN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZCA/ICd0cnVlJyA6IHRoaXMuaW5kZXRlcm1pbmF0ZSA/ICdtaXhlZCcgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIC8qKiBUb2dnbGVzIHRoZSBgY2hlY2tlZGAgc3RhdGUgb2YgdGhlIGNoZWNrYm94LiAqL1xuICAgIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyIGZvciBjaGVja2JveCBpbnB1dCBlbGVtZW50LlxuICAgICAqIFRvZ2dsZXMgY2hlY2tlZCBzdGF0ZSBpZiBlbGVtZW50IGlzIG5vdCBkaXNhYmxlZC5cbiAgICAgKiBEbyBub3QgdG9nZ2xlIG9uIChjaGFuZ2UpIGV2ZW50IHNpbmNlIElFIGRvZXNuJ3QgZmlyZSBjaGFuZ2UgZXZlbnQgd2hlblxuICAgICAqICAgaW5kZXRlcm1pbmF0ZSBjaGVja2JveCBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSBldmVudCBJbnB1dCBjbGljayBldmVudFxuICAgICAqL1xuICAgIG9uSW5wdXRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgaGF2ZSB0byBzdG9wIHByb3BhZ2F0aW9uIGZvciBjbGljayBldmVudHMgb24gdGhlIHZpc3VhbCBoaWRkZW4gaW5wdXQgZWxlbWVudC5cbiAgICAgICAgLy8gQnkgZGVmYXVsdCwgd2hlbiBhIHVzZXIgY2xpY2tzIG9uIGEgbGFiZWwgZWxlbWVudCwgYSBnZW5lcmF0ZWQgY2xpY2sgZXZlbnQgd2lsbCBiZVxuICAgICAgICAvLyBkaXNwYXRjaGVkIG9uIHRoZSBhc3NvY2lhdGVkIGlucHV0IGVsZW1lbnQuIFNpbmNlIHdlIGFyZSB1c2luZyBhIGxhYmVsIGVsZW1lbnQgYXMgb3VyXG4gICAgICAgIC8vIHJvb3QgY29udGFpbmVyLCB0aGUgY2xpY2sgZXZlbnQgb24gdGhlIGBjaGVja2JveGAgd2lsbCBiZSBleGVjdXRlZCB0d2ljZS5cbiAgICAgICAgLy8gVGhlIHJlYWwgY2xpY2sgZXZlbnQgd2lsbCBidWJibGUgdXAsIGFuZCB0aGUgZ2VuZXJhdGVkIGNsaWNrIGV2ZW50IGFsc28gdHJpZXMgdG8gYnViYmxlIHVwLlxuICAgICAgICAvLyBUaGlzIHdpbGwgbGVhZCB0byBtdWx0aXBsZSBjbGljayBldmVudHMuXG4gICAgICAgIC8vIFByZXZlbnRpbmcgYnViYmxpbmcgZm9yIHRoZSBzZWNvbmQgZXZlbnQgd2lsbCBzb2x2ZSB0aGF0IGlzc3VlLlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAvLyBJZiByZXNldEluZGV0ZXJtaW5hdGUgaXMgZmFsc2UsIGFuZCB0aGUgY3VycmVudCBzdGF0ZSBpcyBpbmRldGVybWluYXRlLCBkbyBub3RoaW5nIG9uIGNsaWNrXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmNsaWNrQWN0aW9uICE9PSAnbm9vcCcpIHtcbiAgICAgICAgICAgIC8vIFdoZW4gdXNlciBtYW51YWxseSBjbGljayBvbiB0aGUgY2hlY2tib3gsIGBpbmRldGVybWluYXRlYCBpcyBzZXQgdG8gZmFsc2UuXG4gICAgICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlICYmIHRoaXMuY2xpY2tBY3Rpb24gIT09ICdjaGVjaycpIHtcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLl9pbmRldGVybWluYXRlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvbkNoZWNrU3RhdGUodGhpcy5fY2hlY2tlZCA/IFRyYW5zaXRpb25DaGVja1N0YXRlLkNoZWNrZWQgOiBUcmFuc2l0aW9uQ2hlY2tTdGF0ZS5VbmNoZWNrZWQpO1xuXG4gICAgICAgICAgICAvLyBFbWl0IG91ciBjdXN0b20gY2hhbmdlIGV2ZW50IGlmIHRoZSBuYXRpdmUgaW5wdXQgZW1pdHRlZCBvbmUuXG4gICAgICAgICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gb25seSBlbWl0IGl0LCBpZiB0aGUgbmF0aXZlIGlucHV0IHRyaWdnZXJlZCBvbmUsIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIGNoYW5nZSBldmVudCwgd2hlbiB0aGUgYGNoZWNrZWRgIHZhcmlhYmxlIGNoYW5nZXMgZm9yIGV4YW1wbGUuXG4gICAgICAgICAgICB0aGlzLmVtaXRDaGFuZ2VFdmVudCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuY2xpY2tBY3Rpb24gPT09ICdub29wJykge1xuICAgICAgICAgICAgLy8gUmVzZXQgbmF0aXZlIGlucHV0IHdoZW4gY2xpY2tlZCB3aXRoIG5vb3AuIFRoZSBuYXRpdmUgY2hlY2tib3ggYmVjb21lcyBjaGVja2VkIGFmdGVyXG4gICAgICAgICAgICAvLyBjbGljaywgcmVzZXQgaXQgdG8gYmUgYWxpZ24gd2l0aCBgY2hlY2tlZGAgdmFsdWUgb2YgYGticS1jaGVja2JveGAuXG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSB0aGlzLmNoZWNrZWQ7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmluZGV0ZXJtaW5hdGUgPSB0aGlzLmluZGV0ZXJtaW5hdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRm9jdXNlcyB0aGUgY2hlY2tib3guICovXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9jdXNNb25pdG9yLmZvY3VzVmlhKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICdrZXlib2FyZCcpO1xuICAgIH1cblxuICAgIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgYWx3YXlzIGhhdmUgdG8gc3RvcCBwcm9wYWdhdGlvbiBvbiB0aGUgY2hhbmdlIGV2ZW50LlxuICAgICAgICAvLyBPdGhlcndpc2UgdGhlIGNoYW5nZSBldmVudCwgZnJvbSB0aGUgaW5wdXQgZWxlbWVudCwgd2lsbCBidWJibGUgdXAgYW5kXG4gICAgICAgIC8vIGVtaXQgaXRzIGV2ZW50IG9iamVjdCB0byB0aGUgYGNoYW5nZWAgb3V0cHV0LlxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgcHJpdmF0ZSB0cmFuc2l0aW9uQ2hlY2tTdGF0ZShuZXdTdGF0ZTogVHJhbnNpdGlvbkNoZWNrU3RhdGUpIHtcbiAgICAgICAgY29uc3Qgb2xkU3RhdGUgPSB0aGlzLmN1cnJlbnRDaGVja1N0YXRlO1xuICAgICAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgIGlmIChvbGRTdGF0ZSA9PT0gbmV3U3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jdXJyZW50QW5pbWF0aW9uQ2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXJyZW50Q2hlY2tTdGF0ZSA9IG5ld1N0YXRlO1xuXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRBbmltYXRpb25DbGFzcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jdXJyZW50QW5pbWF0aW9uQ2xhc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0Q2hhbmdlRXZlbnQoKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEticUNoZWNrYm94Q2hhbmdlKCk7XG5cbiAgICAgICAgZXZlbnQuc291cmNlID0gdGhpcztcbiAgICAgICAgZXZlbnQuY2hlY2tlZCA9IHRoaXMuY2hlY2tlZDtcblxuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5jaGVja2VkKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgZm9jdXMgY2hhbmdlcyBmb3IgdGhlIGlucHV0IGVsZW1lbnQuICovXG4gICAgcHJpdmF0ZSBvbklucHV0Rm9jdXNDaGFuZ2UoZm9jdXNPcmlnaW46IEZvY3VzT3JpZ2luKSB7XG4gICAgICAgIGlmIChmb2N1c09yaWdpbikge1xuICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxsYWJlbCAjbGFiZWwgY2xhc3M9XCJrYnEtY2hlY2tib3hfX2xheW91dFwiIFthdHRyLmZvcl09XCJpbnB1dElkXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImticS1jaGVja2JveF9faW5uZXItY29udGFpbmVyXCJcbiAgICAgICAgW2NsYXNzLmticS1jaGVja2JveF9faW5uZXItY29udGFpbmVyX25vLXNpZGUtbWFyZ2luXT1cIlxuICAgICAgICAgICAgIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQgfHwgIWNoZWNrYm94TGFiZWwudGV4dENvbnRlbnQudHJpbSgpXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNsYXNzPVwia2JxLWNoZWNrYm94LWlucHV0IGNkay12aXN1YWxseS1oaWRkZW5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cImdldEFyaWFDaGVja2VkKClcIlxuICAgICAgICAgICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgICAgIFt0YWJJbmRleF09XCJ0YWJJbmRleFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbklucHV0Q2xpY2soJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJrYnEtY2hlY2tib3hfX2ZyYW1lXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImticS1jaGVja2JveC1jaGVja21hcmsga2JxIGticS1jaGVjay1zXzE2XCI+PC9pPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJrYnEtY2hlY2tib3gtbWl4ZWRtYXJrIGticSBrYnEtbWludXMtc18xNlwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwia2JxLWNoZWNrYm94X190ZXh0LWNvbnRhaW5lclwiPlxuICAgICAgICA8c3BhbiAjY2hlY2tib3hMYWJlbCBjbGFzcz1cImticS1jaGVja2JveC1sYWJlbFwiIChjZGtPYnNlcnZlQ29udGVudCk9XCJvbkxhYmVsVGV4dENoYW5nZSgpXCI+XG4gICAgICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2JxLWhpbnRcIiAvPlxuICAgIDwvZGl2PlxuPC9sYWJlbD5cbiJdfQ==
|
|
@@ -392,10 +392,10 @@ export class KbqCodeBlockHighlight {
|
|
|
392
392
|
return isFinite(number) ? number : fallback;
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
396
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.
|
|
395
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqCodeBlockHighlight, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
396
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: KbqCodeBlockHighlight, isStandalone: true, selector: "code[kbqCodeBlockHighlight]", inputs: { file: "file", startFrom: ["startFrom", "startFrom", numberAttribute], singleLine: ["singleLine", "singleLine", booleanAttribute] }, host: { classAttribute: "hljs" }, ngImport: i0 }); }
|
|
397
397
|
}
|
|
398
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqCodeBlockHighlight, decorators: [{
|
|
399
399
|
type: Directive,
|
|
400
400
|
args: [{
|
|
401
401
|
standalone: true,
|
|
@@ -414,4 +414,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
414
414
|
type: Input,
|
|
415
415
|
args: [{ transform: booleanAttribute }]
|
|
416
416
|
}] } });
|
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1ibG9jay1oaWdobGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay1oaWdobGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxlQUFlLEVBRWYsU0FBUyxFQUNULGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sSUFBSSxNQUFNLGNBQWMsQ0FBQzs7QUFHaEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLGNBQWMsQ0FDbkUsdUNBQXVDLEVBQ3ZDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUNqQyxDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQUMsUUFBZ0IsRUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyRixPQUFPLEVBQUUscUNBQXFDO0lBQzlDLFFBQVEsRUFBRSxRQUFRO0NBQ3JCLENBQUMsQ0FBQztBQUVILDZFQUE2RTtBQVE3RSxNQUFNLE9BQU8scUJBQXFCO0lBTzlCLHFCQUFxQjtJQUNyQixJQUNJLElBQUksQ0FBQyxJQUFzQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXBCLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUks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RSxJQUFJO29CQUNoQixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLE1BQU07cUJBQ2hCO2lCQUNKO3dEQVVPLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBNENjLFNBQVM7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUdHLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBQcm92aWRlcixcbiAgICBSZW5kZXJlcjIsXG4gICAgU2VjdXJpdHlDb250ZXh0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgaGxqcyBmcm9tICdoaWdobGlnaHQuanMnO1xuaW1wb3J0IHsgS2JxQ29kZUJsb2NrRmlsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEZhbGxiYWNrIGxhbmd1YWdlIGZvciBjb2RlIGJsb2NrIGlmIGxhbmd1YWdlIGlzIG5vdCBzdXBwb3J0ZWQvc3BlY2lmaWVkLlxuICpcbiAqIExpc3Qgb2Ygc3VwcG9ydGVkIGxhbmd1YWdlczpcbiAqIEBsaW5rIGh0dHBzOi8vaGlnaGxpZ2h0anMucmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlL3N1cHBvcnRlZC1sYW5ndWFnZXMuaHRtbFxuICovXG5leHBvcnQgY29uc3QgS0JRX0NPREVfQkxPQ0tfRkFMTEJBQ0tfRklMRV9MQU5HVUFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFxuICAgICdLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFJyxcbiAgICB7IGZhY3Rvcnk6ICgpID0+ICdwbGFpbnRleHQnIH1cbik7XG5cbi8qKiBVdGlsaXR5IHByb3ZpZGVyIGZvciBgS0JRX0NPREVfQkxPQ0tfRkFMTEJBQ0tfRklMRV9MQU5HVUFHRWAuICovXG5leHBvcnQgY29uc3Qga2JxQ29kZUJsb2NrRmFsbGJhY2tGaWxlTGFuZ3VhZ2VQcm92aWRlciA9IChsYW5ndWFnZTogc3RyaW5nKTogUHJvdmlkZXIgPT4gKHtcbiAgICBwcm92aWRlOiBLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFLFxuICAgIHVzZVZhbHVlOiBsYW5ndWFnZVxufSk7XG5cbi8qKiBEaXJlY3RpdmUgd2hpY2ggYXBwbGllcyBzeW50YXggaGlnaGxpZ2h0aW5nIHRvIHRoZSBjb2RlIGJsb2NrIGNvbnRlbnQuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnY29kZVtrYnFDb2RlQmxvY2tIaWdobGlnaHRdJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnaGxqcydcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUNvZGVCbG9ja0hpZ2hsaWdodCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmVFbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvbVNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFsbGJhY2tGaWxlTGFuZ3VhZ2UgPSBpbmplY3QoS0JRX0NPREVfQkxPQ0tfRkFMTEJBQ0tfRklMRV9MQU5HVUFHRSk7XG5cbiAgICAvKiogVGhlIGNvZGUgZmlsZS4gKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHNldCBmaWxlKGZpbGU6IEticUNvZGVCbG9ja0ZpbGUpIHtcbiAgICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy5nZXRXaW5kb3coKTtcblxuICAgICAgICBpZiAoIXdpbmRvdykgcmV0dXJuO1xuXG4gICAgICAgIGxldCB7IGxhbmd1YWdlIH0gPSBmaWxlO1xuXG4gICAgICAgIGlmICghbGFuZ3VhZ2UgfHwgIWhsanMuZ2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYFtLYnFDb2RlQmxvY2tdIFVua25vd24gZmlsZSBsYW5ndWFnZTogXCIke2xhbmd1YWdlfVwiLiBGYWxsIGJhY2sgdG8gXCIke3RoaXMuZmFsbGJhY2tGaWxlTGFuZ3VhZ2V9XCIuYCxcbiAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGFuZ3VhZ2UgPSB0aGlzLmZhbGxiYWNrRmlsZUxhbmd1YWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdmFsdWU6IGhpZ2hsaWdodGVkSFRNTCxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBoaWdobGlnaHRlZExhbmd1YWdlLFxuICAgICAgICAgICAgaWxsZWdhbCxcbiAgICAgICAgICAgIHJlbGV2YW5jZVxuICAgICAgICB9ID0gaGxqcy5oaWdobGlnaHQoZmlsZS5jb250ZW50LCB7XG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpbGxlZ2FsKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tLYnFDb2RlQmxvY2tdIEZpbGUgY29udGVudCBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuJywgZmlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVsZXZhbmNlID09PSAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tLYnFDb2RlQmxvY2tdIEZpbGUgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHByb2dyYW1taW5nIGxhbmd1YWdlLicsIGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2FmZUhUTUwgPSB0aGlzLmRvbVNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgaGlnaGxpZ2h0ZWRIVE1MKTtcbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRIVE1MV2l0aExpbmVOdW1iZXJzID0gd2luZG93WydobGpzJ10ubGluZU51bWJlcnNWYWx1ZShzYWZlSFRNTCwge1xuICAgICAgICAgICAgc3RhcnRGcm9tOiB0aGlzLnN0YXJ0RnJvbSxcbiAgICAgICAgICAgIHNpbmdsZUxpbmU6IHRoaXMuc2luZ2xlTGluZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkYXRhLWxhbmd1YWdlJywgaGlnaGxpZ2h0ZWRMYW5ndWFnZSEpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ2lubmVySFRNTCcsIGhpZ2hsaWdodGVkSFRNTFdpdGhMaW5lTnVtYmVycyk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBzdGFydGluZyBsaW5lIG51bWJlci4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzdGFydEZyb206IG51bWJlciA9IDE7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGxpbmUgbnVtYmVycyBmb3Igc2luZ2xlIGxpbmUgY29kZSBibG9jay4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2luZ2xlTGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5pdExpbmVOdW1iZXJzUGx1Z2luKCk7XG4gICAgfVxuXG4gICAgLyoqIFVzZSBkZWZhdWx0VmlldyBvZiBpbmplY3RlZCBkb2N1bWVudCBpZiBhdmFpbGFibGUgb3IgZmFsbGJhY2sgdG8gZ2xvYmFsIHdpbmRvdyByZWZlcmVuY2UgKi9cbiAgICBwcml2YXRlIGdldFdpbmRvdygpOiBXaW5kb3cge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudD8uZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgdGhlIEhpZ2hsaWdodEpTIGxpbmUgbnVtYmVycyBwbHVnaW4uIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlIHdoZW5cbiAgICAgKiB0aGUgY29tcG9uZW50IGlzIGNvbnN0cnVjdGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdExpbmVOdW1iZXJzUGx1Z2luKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aW5kb3cgPSB0aGlzLmdldFdpbmRvdygpO1xuXG4gICAgICAgIGlmICghd2luZG93KSByZXR1cm47XG5cbiAgICAgICAgd2luZG93WydobGpzJ10gPSBobGpzO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodEpTTGluZU51bWJlcnNQbHVnaW4odGhpcy5kb2N1bWVudCwgd2luZG93KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBub3QgaW50ZW5kZWQgZm9yIGVkaXRpbmcuXG4gICAgICogQ2hhbmdlcyBtYXkgbGVhZCB0byB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLlxuICAgICAqIFNvdXJjZSBjb2RlOiBodHRwczovL2dpdGh1Yi5jb20vd2NvZGVyL2hpZ2hsaWdodGpzLWxpbmUtbnVtYmVycy5qcy9ibG9iL3YyLjkuMC9zcmMvaGlnaGxpZ2h0anMtbGluZS1udW1iZXJzLmpzXG4gICAgICovXG4gICAgcHJpdmF0ZSBoaWdobGlnaHRKU0xpbmVOdW1iZXJzUGx1Z2luKGQ6IERvY3VtZW50LCB3OiBXaW5kb3cpOiB2b2lkIHtcbiAgICAgICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgICAgIGlmICghdykgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IFRBQkxFX05BTUUgPSAnaGxqcy1sbicsXG4gICAgICAgICAgICBMSU5FX05BTUUgPSAnaGxqcy1sbi1saW5lJyxcbiAgICAgICAgICAgIENPREVfQkxPQ0tfTkFNRSA9ICdobGpzLWxuLWNvZGUnLFxuICAgICAgICAgICAgTlVNQkVSU19CTE9DS19OQU1FID0gJ2hsanMtbG4tbnVtYmVycycsXG4gICAgICAgICAgICBOVU1CRVJfTElORV9OQU1FID0gJ2hsanMtbG4tbicsXG4gICAgICAgICAgICBEQVRBX0FUVFJfTkFNRSA9ICdkYXRhLWxpbmUtbnVtYmVyJyxcbiAgICAgICAgICAgIEJSRUFLX0xJTkVfUkVHRVhQID0gL1xcclxcbnxcXHJ8XFxuL2c7XG5cbiAgICAgICAgaWYgKHdbJ2hsanMnXSkge1xuICAgICAgICAgICAgd1snaGxqcyddLmluaXRMaW5lTnVtYmVyc09uTG9hZCA9IGluaXRMaW5lTnVtYmVyc09uTG9hZDtcbiAgICAgICAgICAgIHdbJ2hsanMnXS5saW5lTnVtYmVyc0Jsb2NrID0gbGluZU51bWJlcnNCbG9jaztcbiAgICAgICAgICAgIHdbJ2hsanMnXS5saW5lTnVtYmVyc0Jsb2NrU3luYyA9IGxpbmVOdW1iZXJzQmxvY2tTeW5jO1xuICAgICAgICAgICAgd1snaGxqcyddLmxpbmVOdW1iZXJzVmFsdWUgPSBsaW5lTnVtYmVyc1ZhbHVlO1xuXG4gICAgICAgICAgICBhZGRTdHlsZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2hpZ2hsaWdodC5qcyBub3QgZGV0ZWN0ZWQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpc0hsanNMbkNvZGVEZXNjZW5kYW50KGRvbUVsdCkge1xuICAgICAgICAgICAgbGV0IGN1ckVsdCA9IGRvbUVsdDtcblxuICAgICAgICAgICAgd2hpbGUgKGN1ckVsdCkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJFbHQuY2xhc3NOYW1lICYmIGN1ckVsdC5jbGFzc05hbWUuaW5kZXhPZignaGxqcy1sbi1jb2RlJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1ckVsdCA9IGN1ckVsdC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRIbGpzTG5UYWJsZShobGpzTG5Eb21FbHQpIHtcbiAgICAgICAgICAgIGxldCBjdXJFbHQgPSBobGpzTG5Eb21FbHQ7XG5cbiAgICAgICAgICAgIHdoaWxlIChjdXJFbHQubm9kZU5hbWUgIT09ICdUQUJMRScpIHtcbiAgICAgICAgICAgICAgICBjdXJFbHQgPSBjdXJFbHQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGN1ckVsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZ1bmN0aW9uIHRvIHdvcmthcm91bmQgYSBjb3B5IGlzc3VlIHdpdGggTWljcm9zb2Z0IEVkZ2UuXG4gICAgICAgIC8vIER1ZSB0byBobGpzLWxuIHdyYXBwaW5nIHRoZSBsaW5lcyBvZiBjb2RlIGluc2lkZSBhIDx0YWJsZT4gZWxlbWVudCxcbiAgICAgICAgLy8gaXRzZWxmIHdyYXBwZWQgaW5zaWRlIGEgPHByZT4gZWxlbWVudCwgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKClcbiAgICAgICAgLy8gZG9lcyBub3QgY29udGFpbiBhbnkgbGluZSBicmVha3MuIFNvIHdlIG5lZWQgdG8gZ2V0IHRoZW0gYmFjayB1c2luZyB0aGVcbiAgICAgICAgLy8gcmVuZGVyZWQgY29kZSBpbiB0aGUgRE9NIGFzIHJlZmVyZW5jZS5cbiAgICAgICAgZnVuY3Rpb24gZWRnZUdldFNlbGVjdGVkQ29kZUxpbmVzKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgLy8gY3VycmVudCBzZWxlY3RlZCB0ZXh0IHdpdGhvdXQgbGluZSBicmVha3NcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvblRleHQgPSBzZWxlY3Rpb24udG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgLy8gZ2V0IHRoZSA8dGQ+IGVsZW1lbnQgd3JhcHBpbmcgdGhlIGZpcnN0IGxpbmUgb2Ygc2VsZWN0ZWQgY29kZVxuICAgICAgICAgICAgbGV0IHRkQW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7XG5cbiAgICAgICAgICAgIHdoaWxlICh0ZEFuY2hvci5ub2RlTmFtZSAhPT0gJ1REJykge1xuICAgICAgICAgICAgICAgIHRkQW5jaG9yID0gdGRBbmNob3IucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZ2V0IHRoZSA8dGQ+IGVsZW1lbnQgd3JhcHBpbmcgdGhlIGxhc3QgbGluZSBvZiBzZWxlY3RlZCBjb2RlXG4gICAgICAgICAgICBsZXQgdGRGb2N1cyA9IHNlbGVjdGlvbi5mb2N1c05vZGU7XG5cbiAgICAgICAgICAgIHdoaWxlICh0ZEZvY3VzLm5vZGVOYW1lICE9PSAnVEQnKSB7XG4gICAgICAgICAgICAgICAgdGRGb2N1cyA9IHRkRm9jdXMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXh0cmFjdCBsaW5lIG51bWJlcnNcbiAgICAgICAgICAgIGxldCBmaXJzdExpbmVOdW1iZXIgPSBwYXJzZUludCh0ZEFuY2hvci5kYXRhc2V0LmxpbmVOdW1iZXIpO1xuICAgICAgICAgICAgbGV0IGxhc3RMaW5lTnVtYmVyID0gcGFyc2VJbnQodGRGb2N1cy5kYXRhc2V0LmxpbmVOdW1iZXIpO1xuXG4gICAgICAgICAgICAvLyBtdWx0aS1saW5lcyBjb3BpZWQgY2FzZVxuICAgICAgICAgICAgaWYgKGZpcnN0TGluZU51bWJlciAhPSBsYXN0TGluZU51bWJlcikge1xuICAgICAgICAgICAgICAgIGxldCBmaXJzdExpbmVUZXh0ID0gdGRBbmNob3IudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3RMaW5lVGV4dCA9IHRkRm9jdXMudGV4dENvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0aW9uIHdhcyBtYWRlIGJhY2t3YXJkLCBzd2FwIHZhbHVlc1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdExpbmVOdW1iZXIgPiBsYXN0TGluZU51bWJlcikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0gZmlyc3RMaW5lTnVtYmVyO1xuXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TGluZU51bWJlciA9IGxhc3RMaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBsYXN0TGluZU51bWJlciA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgdG1wID0gZmlyc3RMaW5lVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RMaW5lVGV4dCA9IGxhc3RMaW5lVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgbGFzdExpbmVUZXh0ID0gdG1wO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgbm90IGNvcGllZCBjaGFyYWN0ZXJzIGluIGZpcnN0IGxpbmVcbiAgICAgICAgICAgICAgICB3aGlsZSAoc2VsZWN0aW9uVGV4dC5pbmRleE9mKGZpcnN0TGluZVRleHQpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TGluZVRleHQgPSBmaXJzdExpbmVUZXh0LnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgbm90IGNvcGllZCBjaGFyYWN0ZXJzIGluIGxhc3QgbGluZVxuICAgICAgICAgICAgICAgIHdoaWxlIChzZWxlY3Rpb25UZXh0Lmxhc3RJbmRleE9mKGxhc3RMaW5lVGV4dCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RMaW5lVGV4dCA9IGxhc3RMaW5lVGV4dC5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gcmVjb25zdHJ1Y3QgYW5kIHJldHVybiB0aGUgcmVhbCBjb3BpZWQgdGV4dFxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZFRleHQgPSBmaXJzdExpbmVUZXh0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhsanNMblRhYmxlID0gZ2V0SGxqc0xuVGFibGUodGRBbmNob3IpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGZpcnN0TGluZU51bWJlciArIDE7IGkgPCBsYXN0TGluZU51bWJlcjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVMaW5lU2VsID0gZm9ybWF0KCcuezB9W3sxfT1cInsyfVwiXScsIFtDT0RFX0JMT0NLX05BTUUsIERBVEFfQVRUUl9OQU1FLCBpXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVMaW5lRWx0ID0gaGxqc0xuVGFibGUucXVlcnlTZWxlY3Rvcihjb2RlTGluZVNlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUZXh0ICs9ICdcXG4nICsgY29kZUxpbmVFbHQudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRUZXh0ICs9ICdcXG4nICsgbGFzdExpbmVUZXh0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkVGV4dDtcbiAgICAgICAgICAgICAgICAvLyBzaW5nbGUgY29waWVkIGxpbmUgY2FzZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uVGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuc3VyZSBjb25zaXN0ZW50IGNvZGUgY29weS9wYXN0ZSBiZWhhdmlvciBhY3Jvc3MgYWxsIGJyb3dzZXJzXG4gICAgICAgIC8vIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3djb2Rlci9oaWdobGlnaHRqcy1saW5lLW51bWJlcnMuanMvaXNzdWVzLzUxKVxuICAgICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoJ2NvcHknLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgLy8gZ2V0IGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3LmdldFNlbGVjdGlvbigpITtcblxuICAgICAgICAgICAgLy8gb3ZlcnJpZGUgYmVoYXZpb3Igd2hlbiBvbmUgd2FudHMgdG8gY29weSBsaW5lIG9mIGNvZGVzXG4gICAgICAgICAgICBpZiAoaXNIbGpzTG5Db2RlRGVzY2VuZGFudChzZWxlY3Rpb24uYW5jaG9yTm9kZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0aW9uVGV4dDtcblxuICAgICAgICAgICAgICAgIC8vIHdvcmthcm91bmQgYW4gaXNzdWUgd2l0aCBNaWNyb3NvZnQgRWRnZSBhcyBjb3BpZWQgbGluZSBicmVha3NcbiAgICAgICAgICAgICAgICAvLyBhcmUgcmVtb3ZlZCBvdGhlcndpc2UgZnJvbSB0aGUgc2VsZWN0aW9uIHN0cmluZ1xuICAgICAgICAgICAgICAgIGlmICh3Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRWRnZScpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25UZXh0ID0gZWRnZUdldFNlbGVjdGVkQ29kZUxpbmVzKHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIgYnJvd3NlcnMgY2FuIGRpcmVjdGx5IHVzZSB0aGUgc2VsZWN0aW9uIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25UZXh0ID0gc2VsZWN0aW9uLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS5jbGlwYm9hcmREYXRhIS5zZXREYXRhKCd0ZXh0L3BsYWluJywgc2VsZWN0aW9uVGV4dCk7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBhZGRTdHlsZXMoKSB7XG4gICAgICAgICAgICBjb25zdCBjc3MgPSBkLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cbiAgICAgICAgICAgIGNzcy50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgICAgIGNzcy5pbm5lckhUTUwgPSBmb3JtYXQoXG4gICAgICAgICAgICAgICAgJy57MH17Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfScgKyAnLnswfSB0ZHtwYWRkaW5nOjB9JyArICcuezF9OmJlZm9yZXtjb250ZW50OmF0dHIoezJ9KX0nLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgVEFCTEVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgTlVNQkVSX0xJTkVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgREFUQV9BVFRSX05BTUVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKGNzcyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpbml0TGluZU51bWJlcnNPbkxvYWQob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKGQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJyB8fCBkLnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudFJlYWR5KG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50UmVhZHkob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBkb2N1bWVudFJlYWR5KG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gZC5xdWVyeVNlbGVjdG9yQWxsKCdjb2RlLmhsanMsY29kZS5ub2hpZ2hsaWdodCcpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIGluIGJsb2Nrcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tzLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUGx1Z2luRGlzYWJsZWRGb3JCbG9jayhibG9ja3NbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcnNCbG9jayhibG9ja3NbaV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xpbmVOdW1iZXJzIGVycm9yOiAnLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzUGx1Z2luRGlzYWJsZWRGb3JCbG9jayhlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25vaGxqc2xuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsaW5lTnVtYmVyc0Jsb2NrKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHJldHVybjtcblxuICAgICAgICAgICAgYXN5bmMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gbGluZU51bWJlcnNJbnRlcm5hbChlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbGluZU51bWJlcnNCbG9ja1N5bmMoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuXG4gICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGxpbmVOdW1iZXJzSW50ZXJuYWwoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsaW5lTnVtYmVyc1ZhbHVlKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7XG5cbiAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybiBsaW5lTnVtYmVyc0ludGVybmFsKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbGluZU51bWJlcnNJbnRlcm5hbChlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBpbnRlcm5hbE9wdGlvbnMgPSBtYXBPcHRpb25zKGVsZW1lbnQsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBkdXBsaWNhdGVNdWx0aWxpbmVOb2RlcyhlbGVtZW50KTtcblxuICAgICAgICAgICAgcmV0dXJuIGFkZExpbmVOdW1iZXJzQmxvY2tGb3IoZWxlbWVudC5pbm5lckhUTUwsIGludGVybmFsT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhZGRMaW5lTnVtYmVyc0Jsb2NrRm9yKGlucHV0SHRtbCwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSBnZXRMaW5lcyhpbnB1dEh0bWwpO1xuXG4gICAgICAgICAgICAvLyBpZiBsYXN0IGxpbmUgY29udGFpbnMgb25seSBjYXJyaWFnZSByZXR1cm4gcmVtb3ZlIGl0XG4gICAgICAgICAgICBpZiAobGluZXNbbGluZXMubGVuZ3RoIC0gMV0udHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgICAgIGxpbmVzLnBvcCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobGluZXMubGVuZ3RoID4gMSB8fCBvcHRpb25zLnNpbmdsZUxpbmUpIHtcbiAgICAgICAgICAgICAgICBsZXQgaHRtbCA9ICcnO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBmb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnPHRyPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9XCJ7MH0gezF9XCIgezN9PVwiezV9XCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJ7Mn1cIiB7M309XCJ7NX1cIj48L2Rpdj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90ZD4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPVwiezB9IHs0fVwiIHszfT1cIns1fVwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7Nn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90ZD4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90cj4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVU1CRVJTX0JMT0NLX05BTUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVNQkVSX0xJTkVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRBX0FUVFJfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT0RFX0JMT0NLX05BTUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIG9wdGlvbnMuc3RhcnRGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzW2ldLmxlbmd0aCA+IDAgPyBsaW5lc1tpXSA6ICcgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQoJzx0YWJsZSBjbGFzcz1cInswfVwiPnsxfTwvdGFibGU+JywgW1RBQkxFX05BTUUsIGh0bWxdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGlucHV0SHRtbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IENvZGUgYmxvY2suXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIEV4dGVybmFsIEFQSSBvcHRpb25zLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBJbnRlcm5hbCBBUEkgb3B0aW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1hcE9wdGlvbnMoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2luZ2xlTGluZTogZ2V0U2luZ2xlTGluZU9wdGlvbihvcHRpb25zKSxcbiAgICAgICAgICAgICAgICBzdGFydEZyb206IGdldFN0YXJ0RnJvbU9wdGlvbihlbGVtZW50LCBvcHRpb25zKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFNpbmdsZUxpbmVPcHRpb24ob3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNpbmdsZUxpbmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zaW5nbGVMaW5lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0U3RhcnRGcm9tT3B0aW9uKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IDE7XG4gICAgICAgICAgICBsZXQgc3RhcnRGcm9tID0gZGVmYXVsdFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUob3B0aW9ucy5zdGFydEZyb20pKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRGcm9tID0gb3B0aW9ucy5zdGFydEZyb207XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNhbiBiZSBvdmVycmlkZGVuIGJlY2F1c2UgbG9jYWwgb3B0aW9uIGlzIHByaW9yaXR5XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldEF0dHJpYnV0ZShlbGVtZW50LCAnZGF0YS1sbi1zdGFydC1mcm9tJyk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0RnJvbSA9IHRvTnVtYmVyKHZhbHVlLCBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc3RhcnRGcm9tO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlY3Vyc2l2ZSBtZXRob2QgZm9yIGZpeCBtdWx0aS1saW5lIGVsZW1lbnRzIGltcGxlbWVudGF0aW9uIGluIGhpZ2hsaWdodC5qc1xuICAgICAgICAgKiBEb2luZyBkZWVwIHBhc3NhZ2Ugb24gY2hpbGQgbm9kZXMuXG4gICAgICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGR1cGxpY2F0ZU11bHRpbGluZU5vZGVzKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gZWxlbWVudC5jaGlsZE5vZGVzO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgaW4gbm9kZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZXMuaGFzT3duUHJvcGVydHkobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2Rlc1tub2RlXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TGluZXNDb3VudChjaGlsZC50ZXh0Q29udGVudCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlTXVsdGlsaW5lTm9kZXMoY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVNdWx0aWxpbmVOb2RlKGNoaWxkLnBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1ldGhvZCBmb3IgZml4IG11bHRpLWxpbmUgZWxlbWVudHMgaW1wbGVtZW50YXRpb24gaW4gaGlnaGxpZ2h0LmpzXG4gICAgICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGR1cGxpY2F0ZU11bHRpbGluZU5vZGUoZWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWU7XG5cbiAgICAgICAgICAgIGlmICghL2hsanMtLy50ZXN0KGNsYXNzTmFtZSkpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgbGluZXMgPSBnZXRMaW5lcyhlbGVtZW50LmlubmVySFRNTCk7XG5cbiAgICAgICAgICAgIGxldCByZXN1bHQgPSAnJztcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVUZXh0ID0gbGluZXNbaV0ubGVuZ3RoID4gMCA/IGxpbmVzW2ldIDogJyAnO1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGZvcm1hdCgnPHNwYW4gY2xhc3M9XCJ7MH1cIj57MX08L3NwYW4+XFxuJywgW2NsYXNzTmFtZSwgbGluZVRleHRdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSByZXN1bHQudHJpbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0TGluZXModGV4dCkge1xuICAgICAgICAgICAgaWYgKHRleHQubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgICAgICAgICAgIHJldHVybiB0ZXh0LnNwbGl0KEJSRUFLX0xJTkVfUkVHRVhQKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldExpbmVzQ291bnQodGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuICh0ZXh0LnRyaW0oKS5tYXRjaChCUkVBS19MSU5FX1JFR0VYUCkgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vL1xuICAgICAgICAvLy8gSEVMUEVSU1xuICAgICAgICAvLy9cblxuICAgICAgICBmdW5jdGlvbiBhc3luYyhmdW5jKSB7XG4gICAgICAgICAgICB3LnNldFRpbWVvdXQoZnVuYywgMCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICoge0BsaW5rIGh0dHBzOi8vd2NvZGVyLmdpdGh1Yi5pby9ub3Rlcy9zdHJpbmctZm9ybWF0LWZvci1zdHJpbmctZm9ybWF0aW5nLWluLWphdmFzY3JpcHR9XG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRcbiAgICAgICAgICogQHBhcmFtIHthcnJheX0gYXJnc1xuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0KGZvcm1hdCwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9cXHsoXFxkKylcXH0vZywgZnVuY3Rpb24gKG0sIG4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1tuXSAhPT0gdW5kZWZpbmVkID8gYXJnc1tuXSA6IG07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IENvZGUgYmxvY2suXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhdHRyTmFtZSBBdHRyaWJ1dGUgbmFtZS5cbiAgICAgICAgICogQHJldHVybnMge1N0cmluZ30gQXR0cmlidXRlIHZhbHVlIG9yIGVtcHR5LlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHJOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0ck5hbWUpID8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyIFNvdXJjZSBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBmYWxsYmFjayBGYWxsYmFjayB2YWx1ZS5cbiAgICAgICAgICogQHJldHVybnMgUGFyc2VkIG51bWJlciBvciBmYWxsYmFjayB2YWx1ZS5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHN0ciwgZmFsbGJhY2spIHtcbiAgICAgICAgICAgIGlmICghc3RyKSByZXR1cm4gZmFsbGJhY2s7XG4gICAgICAgICAgICBjb25zdCBudW1iZXIgPSBOdW1iZXIoc3RyKTtcblxuICAgICAgICAgICAgcmV0dXJuIGlzRmluaXRlKG51bWJlcikgPyBudW1iZXIgOiBmYWxsYmFjaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
417
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1ibG9jay1oaWdobGlnaHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay1oaWdobGlnaHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxFQUNkLEtBQUssRUFDTCxlQUFlLEVBRWYsU0FBUyxFQUNULGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sSUFBSSxNQUFNLGNBQWMsQ0FBQzs7QUFHaEM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLGNBQWMsQ0FDbkUsdUNBQXVDLEVBQ3ZDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUNqQyxDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFHLENBQUMsUUFBZ0IsRUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyRixPQUFPLEVBQUUscUNBQXFDO0lBQzlDLFFBQVEsRUFBRSxRQUFRO0NBQ3JCLENBQUMsQ0FBQztBQUVILDZFQUE2RTtBQVE3RSxNQUFNLE9BQU8scUJBQXFCO0lBTzlCLHFCQUFxQjtJQUNyQixJQUNJLElBQUksQ0FBQyxJQUFzQjtRQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXBCLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFeEIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUks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RSxJQUFJO29CQUNoQixRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLE1BQU07cUJBQ2hCO2lCQUNKO3dEQVVPLElBQUk7c0JBRFAsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBNENjLFNBQVM7c0JBQS9DLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO2dCQUdHLFVBQVU7c0JBQWpELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBQcm92aWRlcixcbiAgICBSZW5kZXJlcjIsXG4gICAgU2VjdXJpdHlDb250ZXh0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgaGxqcyBmcm9tICdoaWdobGlnaHQuanMnO1xuaW1wb3J0IHsgS2JxQ29kZUJsb2NrRmlsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEZhbGxiYWNrIGxhbmd1YWdlIGZvciBjb2RlIGJsb2NrIGlmIGxhbmd1YWdlIGlzIG5vdCBzdXBwb3J0ZWQvc3BlY2lmaWVkLlxuICpcbiAqIExpc3Qgb2Ygc3VwcG9ydGVkIGxhbmd1YWdlczpcbiAqIEBsaW5rIGh0dHBzOi8vaGlnaGxpZ2h0anMucmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlL3N1cHBvcnRlZC1sYW5ndWFnZXMuaHRtbFxuICovXG5leHBvcnQgY29uc3QgS0JRX0NPREVfQkxPQ0tfRkFMTEJBQ0tfRklMRV9MQU5HVUFHRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KFxuICAgICdLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFJyxcbiAgICB7IGZhY3Rvcnk6ICgpID0+ICdwbGFpbnRleHQnIH1cbik7XG5cbi8qKiBVdGlsaXR5IHByb3ZpZGVyIGZvciBgS0JRX0NPREVfQkxPQ0tfRkFMTEJBQ0tfRklMRV9MQU5HVUFHRWAuICovXG5leHBvcnQgY29uc3Qga2JxQ29kZUJsb2NrRmFsbGJhY2tGaWxlTGFuZ3VhZ2VQcm92aWRlciA9IChsYW5ndWFnZTogc3RyaW5nKTogUHJvdmlkZXIgPT4gKHtcbiAgICBwcm92aWRlOiBLQlFfQ09ERV9CTE9DS19GQUxMQkFDS19GSUxFX0xBTkdVQUdFLFxuICAgIHVzZVZhbHVlOiBsYW5ndWFnZVxufSk7XG5cbi8qKiBEaXJlY3RpdmUgd2hpY2ggYXBwbGllcyBzeW50YXggaGlnaGxpZ2h0aW5nIHRvIHRoZSBjb2RlIGJsb2NrIGNvbnRlbnQuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnY29kZVtrYnFDb2RlQmxvY2tIaWdobGlnaHRdJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnaGxqcydcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEticUNvZGVCbG9ja0hpZ2hsaWdodCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBuYXRpdmVFbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvbVNhbml0aXplciA9IGluamVjdChEb21TYW5pdGl6ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFsbGJhY2tGaWxlTGFuZ3VhZ2UgPSBpbmplY3QoS0JRX0NPREVfQkxPQ0tfRkFMTEJBQ0tfRklMRV9MQU5HVUFHRSk7XG5cbiAgICAvKiogVGhlIGNvZGUgZmlsZS4gKi9cbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICAgIHNldCBmaWxlKGZpbGU6IEticUNvZGVCbG9ja0ZpbGUpIHtcbiAgICAgICAgY29uc3Qgd2luZG93ID0gdGhpcy5nZXRXaW5kb3coKTtcblxuICAgICAgICBpZiAoIXdpbmRvdykgcmV0dXJuO1xuXG4gICAgICAgIGxldCB7IGxhbmd1YWdlIH0gPSBmaWxlO1xuXG4gICAgICAgIGlmICghbGFuZ3VhZ2UgfHwgIWhsanMuZ2V0TGFuZ3VhZ2UobGFuZ3VhZ2UpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYFtLYnFDb2RlQmxvY2tdIFVua25vd24gZmlsZSBsYW5ndWFnZTogXCIke2xhbmd1YWdlfVwiLiBGYWxsIGJhY2sgdG8gXCIke3RoaXMuZmFsbGJhY2tGaWxlTGFuZ3VhZ2V9XCIuYCxcbiAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgbGFuZ3VhZ2UgPSB0aGlzLmZhbGxiYWNrRmlsZUxhbmd1YWdlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdmFsdWU6IGhpZ2hsaWdodGVkSFRNTCxcbiAgICAgICAgICAgIGxhbmd1YWdlOiBoaWdobGlnaHRlZExhbmd1YWdlLFxuICAgICAgICAgICAgaWxsZWdhbCxcbiAgICAgICAgICAgIHJlbGV2YW5jZVxuICAgICAgICB9ID0gaGxqcy5oaWdobGlnaHQoZmlsZS5jb250ZW50LCB7XG4gICAgICAgICAgICBsYW5ndWFnZTogbGFuZ3VhZ2UhXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChpbGxlZ2FsKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tLYnFDb2RlQmxvY2tdIEZpbGUgY29udGVudCBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnMuJywgZmlsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVsZXZhbmNlID09PSAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tLYnFDb2RlQmxvY2tdIEZpbGUgY29udGVudCBkb2VzIG5vdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHByb2dyYW1taW5nIGxhbmd1YWdlLicsIGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2FmZUhUTUwgPSB0aGlzLmRvbVNhbml0aXplci5zYW5pdGl6ZShTZWN1cml0eUNvbnRleHQuSFRNTCwgaGlnaGxpZ2h0ZWRIVE1MKTtcbiAgICAgICAgY29uc3QgaGlnaGxpZ2h0ZWRIVE1MV2l0aExpbmVOdW1iZXJzID0gd2luZG93WydobGpzJ10ubGluZU51bWJlcnNWYWx1ZShzYWZlSFRNTCwge1xuICAgICAgICAgICAgc3RhcnRGcm9tOiB0aGlzLnN0YXJ0RnJvbSxcbiAgICAgICAgICAgIHNpbmdsZUxpbmU6IHRoaXMuc2luZ2xlTGluZVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdkYXRhLWxhbmd1YWdlJywgaGlnaGxpZ2h0ZWRMYW5ndWFnZSEpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMubmF0aXZlRWxlbWVudCwgJ2lubmVySFRNTCcsIGhpZ2hsaWdodGVkSFRNTFdpdGhMaW5lTnVtYmVycyk7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBzdGFydGluZyBsaW5lIG51bWJlci4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBzdGFydEZyb206IG51bWJlciA9IDE7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGxpbmUgbnVtYmVycyBmb3Igc2luZ2xlIGxpbmUgY29kZSBibG9jay4gKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2luZ2xlTGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuaW5pdExpbmVOdW1iZXJzUGx1Z2luKCk7XG4gICAgfVxuXG4gICAgLyoqIFVzZSBkZWZhdWx0VmlldyBvZiBpbmplY3RlZCBkb2N1bWVudCBpZiBhdmFpbGFibGUgb3IgZmFsbGJhY2sgdG8gZ2xvYmFsIHdpbmRvdyByZWZlcmVuY2UgKi9cbiAgICBwcml2YXRlIGdldFdpbmRvdygpOiBXaW5kb3cge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudD8uZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgdGhlIEhpZ2hsaWdodEpTIGxpbmUgbnVtYmVycyBwbHVnaW4uIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmNlIHdoZW5cbiAgICAgKiB0aGUgY29tcG9uZW50IGlzIGNvbnN0cnVjdGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdExpbmVOdW1iZXJzUGx1Z2luKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aW5kb3cgPSB0aGlzLmdldFdpbmRvdygpO1xuXG4gICAgICAgIGlmICghd2luZG93KSByZXR1cm47XG5cbiAgICAgICAgd2luZG93WydobGpzJ10gPSBobGpzO1xuICAgICAgICB0aGlzLmhpZ2hsaWdodEpTTGluZU51bWJlcnNQbHVnaW4odGhpcy5kb2N1bWVudCwgd2luZG93KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBub3QgaW50ZW5kZWQgZm9yIGVkaXRpbmcuXG4gICAgICogQ2hhbmdlcyBtYXkgbGVhZCB0byB1bnByZWRpY3RhYmxlIGJlaGF2aW9yLlxuICAgICAqIFNvdXJjZSBjb2RlOiBodHRwczovL2dpdGh1Yi5jb20vd2NvZGVyL2hpZ2hsaWdodGpzLWxpbmUtbnVtYmVycy5qcy9ibG9iL3YyLjkuMC9zcmMvaGlnaGxpZ2h0anMtbGluZS1udW1iZXJzLmpzXG4gICAgICovXG4gICAgcHJpdmF0ZSBoaWdobGlnaHRKU0xpbmVOdW1iZXJzUGx1Z2luKGQ6IERvY3VtZW50LCB3OiBXaW5kb3cpOiB2b2lkIHtcbiAgICAgICAgJ3VzZSBzdHJpY3QnO1xuXG4gICAgICAgIGlmICghdykgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IFRBQkxFX05BTUUgPSAnaGxqcy1sbicsXG4gICAgICAgICAgICBMSU5FX05BTUUgPSAnaGxqcy1sbi1saW5lJyxcbiAgICAgICAgICAgIENPREVfQkxPQ0tfTkFNRSA9ICdobGpzLWxuLWNvZGUnLFxuICAgICAgICAgICAgTlVNQkVSU19CTE9DS19OQU1FID0gJ2hsanMtbG4tbnVtYmVycycsXG4gICAgICAgICAgICBOVU1CRVJfTElORV9OQU1FID0gJ2hsanMtbG4tbicsXG4gICAgICAgICAgICBEQVRBX0FUVFJfTkFNRSA9ICdkYXRhLWxpbmUtbnVtYmVyJyxcbiAgICAgICAgICAgIEJSRUFLX0xJTkVfUkVHRVhQID0gL1xcclxcbnxcXHJ8XFxuL2c7XG5cbiAgICAgICAgaWYgKHdbJ2hsanMnXSkge1xuICAgICAgICAgICAgd1snaGxqcyddLmluaXRMaW5lTnVtYmVyc09uTG9hZCA9IGluaXRMaW5lTnVtYmVyc09uTG9hZDtcbiAgICAgICAgICAgIHdbJ2hsanMnXS5saW5lTnVtYmVyc0Jsb2NrID0gbGluZU51bWJlcnNCbG9jaztcbiAgICAgICAgICAgIHdbJ2hsanMnXS5saW5lTnVtYmVyc0Jsb2NrU3luYyA9IGxpbmVOdW1iZXJzQmxvY2tTeW5jO1xuICAgICAgICAgICAgd1snaGxqcyddLmxpbmVOdW1iZXJzVmFsdWUgPSBsaW5lTnVtYmVyc1ZhbHVlO1xuXG4gICAgICAgICAgICBhZGRTdHlsZXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2hpZ2hsaWdodC5qcyBub3QgZGV0ZWN0ZWQhJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpc0hsanNMbkNvZGVEZXNjZW5kYW50KGRvbUVsdCkge1xuICAgICAgICAgICAgbGV0IGN1ckVsdCA9IGRvbUVsdDtcblxuICAgICAgICAgICAgd2hpbGUgKGN1ckVsdCkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJFbHQuY2xhc3NOYW1lICYmIGN1ckVsdC5jbGFzc05hbWUuaW5kZXhPZignaGxqcy1sbi1jb2RlJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1ckVsdCA9IGN1ckVsdC5wYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRIbGpzTG5UYWJsZShobGpzTG5Eb21FbHQpIHtcbiAgICAgICAgICAgIGxldCBjdXJFbHQgPSBobGpzTG5Eb21FbHQ7XG5cbiAgICAgICAgICAgIHdoaWxlIChjdXJFbHQubm9kZU5hbWUgIT09ICdUQUJMRScpIHtcbiAgICAgICAgICAgICAgICBjdXJFbHQgPSBjdXJFbHQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGN1ckVsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZ1bmN0aW9uIHRvIHdvcmthcm91bmQgYSBjb3B5IGlzc3VlIHdpdGggTWljcm9zb2Z0IEVkZ2UuXG4gICAgICAgIC8vIER1ZSB0byBobGpzLWxuIHdyYXBwaW5nIHRoZSBsaW5lcyBvZiBjb2RlIGluc2lkZSBhIDx0YWJsZT4gZWxlbWVudCxcbiAgICAgICAgLy8gaXRzZWxmIHdyYXBwZWQgaW5zaWRlIGEgPHByZT4gZWxlbWVudCwgd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKClcbiAgICAgICAgLy8gZG9lcyBub3QgY29udGFpbiBhbnkgbGluZSBicmVha3MuIFNvIHdlIG5lZWQgdG8gZ2V0IHRoZW0gYmFjayB1c2luZyB0aGVcbiAgICAgICAgLy8gcmVuZGVyZWQgY29kZSBpbiB0aGUgRE9NIGFzIHJlZmVyZW5jZS5cbiAgICAgICAgZnVuY3Rpb24gZWRnZUdldFNlbGVjdGVkQ29kZUxpbmVzKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgLy8gY3VycmVudCBzZWxlY3RlZCB0ZXh0IHdpdGhvdXQgbGluZSBicmVha3NcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGlvblRleHQgPSBzZWxlY3Rpb24udG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgLy8gZ2V0IHRoZSA8dGQ+IGVsZW1lbnQgd3JhcHBpbmcgdGhlIGZpcnN0IGxpbmUgb2Ygc2VsZWN0ZWQgY29kZVxuICAgICAgICAgICAgbGV0IHRkQW5jaG9yID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7XG5cbiAgICAgICAgICAgIHdoaWxlICh0ZEFuY2hvci5ub2RlTmFtZSAhPT0gJ1REJykge1xuICAgICAgICAgICAgICAgIHRkQW5jaG9yID0gdGRBbmNob3IucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZ2V0IHRoZSA8dGQ+IGVsZW1lbnQgd3JhcHBpbmcgdGhlIGxhc3QgbGluZSBvZiBzZWxlY3RlZCBjb2RlXG4gICAgICAgICAgICBsZXQgdGRGb2N1cyA9IHNlbGVjdGlvbi5mb2N1c05vZGU7XG5cbiAgICAgICAgICAgIHdoaWxlICh0ZEZvY3VzLm5vZGVOYW1lICE9PSAnVEQnKSB7XG4gICAgICAgICAgICAgICAgdGRGb2N1cyA9IHRkRm9jdXMucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZXh0cmFjdCBsaW5lIG51bWJlcnNcbiAgICAgICAgICAgIGxldCBmaXJzdExpbmVOdW1iZXIgPSBwYXJzZUludCh0ZEFuY2hvci5kYXRhc2V0LmxpbmVOdW1iZXIpO1xuICAgICAgICAgICAgbGV0IGxhc3RMaW5lTnVtYmVyID0gcGFyc2VJbnQodGRGb2N1cy5kYXRhc2V0LmxpbmVOdW1iZXIpO1xuXG4gICAgICAgICAgICAvLyBtdWx0aS1saW5lcyBjb3BpZWQgY2FzZVxuICAgICAgICAgICAgaWYgKGZpcnN0TGluZU51bWJlciAhPSBsYXN0TGluZU51bWJlcikge1xuICAgICAgICAgICAgICAgIGxldCBmaXJzdExpbmVUZXh0ID0gdGRBbmNob3IudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgbGV0IGxhc3RMaW5lVGV4dCA9IHRkRm9jdXMudGV4dENvbnRlbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc2VsZWN0aW9uIHdhcyBtYWRlIGJhY2t3YXJkLCBzd2FwIHZhbHVlc1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdExpbmVOdW1iZXIgPiBsYXN0TGluZU51bWJlcikge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0gZmlyc3RMaW5lTnVtYmVyO1xuXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TGluZU51bWJlciA9IGxhc3RMaW5lTnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICBsYXN0TGluZU51bWJlciA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgdG1wID0gZmlyc3RMaW5lVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RMaW5lVGV4dCA9IGxhc3RMaW5lVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgbGFzdExpbmVUZXh0ID0gdG1wO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgbm90IGNvcGllZCBjaGFyYWN0ZXJzIGluIGZpcnN0IGxpbmVcbiAgICAgICAgICAgICAgICB3aGlsZSAoc2VsZWN0aW9uVGV4dC5pbmRleE9mKGZpcnN0TGluZVRleHQpICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TGluZVRleHQgPSBmaXJzdExpbmVUZXh0LnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgbm90IGNvcGllZCBjaGFyYWN0ZXJzIGluIGxhc3QgbGluZVxuICAgICAgICAgICAgICAgIHdoaWxlIChzZWxlY3Rpb25UZXh0Lmxhc3RJbmRleE9mKGxhc3RMaW5lVGV4dCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RMaW5lVGV4dCA9IGxhc3RMaW5lVGV4dC5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gcmVjb25zdHJ1Y3QgYW5kIHJldHVybiB0aGUgcmVhbCBjb3BpZWQgdGV4dFxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZFRleHQgPSBmaXJzdExpbmVUZXh0O1xuICAgICAgICAgICAgICAgIGNvbnN0IGhsanNMblRhYmxlID0gZ2V0SGxqc0xuVGFibGUodGRBbmNob3IpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGZpcnN0TGluZU51bWJlciArIDE7IGkgPCBsYXN0TGluZU51bWJlcjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVMaW5lU2VsID0gZm9ybWF0KCcuezB9W3sxfT1cInsyfVwiXScsIFtDT0RFX0JMT0NLX05BTUUsIERBVEFfQVRUUl9OQU1FLCBpXSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvZGVMaW5lRWx0ID0gaGxqc0xuVGFibGUucXVlcnlTZWxlY3Rvcihjb2RlTGluZVNlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRUZXh0ICs9ICdcXG4nICsgY29kZUxpbmVFbHQudGV4dENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRUZXh0ICs9ICdcXG4nICsgbGFzdExpbmVUZXh0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkVGV4dDtcbiAgICAgICAgICAgICAgICAvLyBzaW5nbGUgY29waWVkIGxpbmUgY2FzZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0aW9uVGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVuc3VyZSBjb25zaXN0ZW50IGNvZGUgY29weS9wYXN0ZSBiZWhhdmlvciBhY3Jvc3MgYWxsIGJyb3dzZXJzXG4gICAgICAgIC8vIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL3djb2Rlci9oaWdobGlnaHRqcy1saW5lLW51bWJlcnMuanMvaXNzdWVzLzUxKVxuICAgICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoJ2NvcHknLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgLy8gZ2V0IGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB3LmdldFNlbGVjdGlvbigpITtcblxuICAgICAgICAgICAgLy8gb3ZlcnJpZGUgYmVoYXZpb3Igd2hlbiBvbmUgd2FudHMgdG8gY29weSBsaW5lIG9mIGNvZGVzXG4gICAgICAgICAgICBpZiAoaXNIbGpzTG5Db2RlRGVzY2VuZGFudChzZWxlY3Rpb24uYW5jaG9yTm9kZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0aW9uVGV4dDtcblxuICAgICAgICAgICAgICAgIC8vIHdvcmthcm91bmQgYW4gaXNzdWUgd2l0aCBNaWNyb3NvZnQgRWRnZSBhcyBjb3BpZWQgbGluZSBicmVha3NcbiAgICAgICAgICAgICAgICAvLyBhcmUgcmVtb3ZlZCBvdGhlcndpc2UgZnJvbSB0aGUgc2VsZWN0aW9uIHN0cmluZ1xuICAgICAgICAgICAgICAgIGlmICh3Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRWRnZScpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25UZXh0ID0gZWRnZUdldFNlbGVjdGVkQ29kZUxpbmVzKHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIgYnJvd3NlcnMgY2FuIGRpcmVjdGx5IHVzZSB0aGUgc2VsZWN0aW9uIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25UZXh0ID0gc2VsZWN0aW9uLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS5jbGlwYm9hcmREYXRhIS5zZXREYXRhKCd0ZXh0L3BsYWluJywgc2VsZWN0aW9uVGV4dCk7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBhZGRTdHlsZXMoKSB7XG4gICAgICAgICAgICBjb25zdCBjc3MgPSBkLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cbiAgICAgICAgICAgIGNzcy50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgICAgICAgIGNzcy5pbm5lckhUTUwgPSBmb3JtYXQoXG4gICAgICAgICAgICAgICAgJy57MH17Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfScgKyAnLnswfSB0ZHtwYWRkaW5nOjB9JyArICcuezF9OmJlZm9yZXtjb250ZW50OmF0dHIoezJ9KX0nLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgVEFCTEVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgTlVNQkVSX0xJTkVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgREFUQV9BVFRSX05BTUVcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKGNzcyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBpbml0TGluZU51bWJlcnNPbkxvYWQob3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKGQucmVhZHlTdGF0ZSA9PT0gJ2ludGVyYWN0aXZlJyB8fCBkLnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudFJlYWR5KG9wdGlvbnMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50UmVhZHkob3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBkb2N1bWVudFJlYWR5KG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gZC5xdWVyeVNlbGVjdG9yQWxsKCdjb2RlLmhsanMsY29kZS5ub2hpZ2hsaWdodCcpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpIGluIGJsb2Nrcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tzLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzUGx1Z2luRGlzYWJsZWRGb3JCbG9jayhibG9ja3NbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlcnNCbG9jayhibG9ja3NbaV0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0xpbmVOdW1iZXJzIGVycm9yOiAnLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGlzUGx1Z2luRGlzYWJsZWRGb3JCbG9jayhlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25vaGxqc2xuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsaW5lTnVtYmVyc0Jsb2NrKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHJldHVybjtcblxuICAgICAgICAgICAgYXN5bmMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gbGluZU51bWJlcnNJbnRlcm5hbChlbGVtZW50LCBvcHRpb25zKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbGluZU51bWJlcnNCbG9ja1N5bmMoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuXG4gICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGxpbmVOdW1iZXJzSW50ZXJuYWwoZWxlbWVudCwgb3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBsaW5lTnVtYmVyc1ZhbHVlKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7XG5cbiAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHJldHVybiBsaW5lTnVtYmVyc0ludGVybmFsKGVsZW1lbnQsIG9wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbGluZU51bWJlcnNJbnRlcm5hbChlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBpbnRlcm5hbE9wdGlvbnMgPSBtYXBPcHRpb25zKGVsZW1lbnQsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBkdXBsaWNhdGVNdWx0aWxpbmVOb2RlcyhlbGVtZW50KTtcblxuICAgICAgICAgICAgcmV0dXJuIGFkZExpbmVOdW1iZXJzQmxvY2tGb3IoZWxlbWVudC5pbm5lckhUTUwsIGludGVybmFsT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhZGRMaW5lTnVtYmVyc0Jsb2NrRm9yKGlucHV0SHRtbCwgb3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgbGluZXMgPSBnZXRMaW5lcyhpbnB1dEh0bWwpO1xuXG4gICAgICAgICAgICAvLyBpZiBsYXN0IGxpbmUgY29udGFpbnMgb25seSBjYXJyaWFnZSByZXR1cm4gcmVtb3ZlIGl0XG4gICAgICAgICAgICBpZiAobGluZXNbbGluZXMubGVuZ3RoIC0gMV0udHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgICAgIGxpbmVzLnBvcCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobGluZXMubGVuZ3RoID4gMSB8fCBvcHRpb25zLnNpbmdsZUxpbmUpIHtcbiAgICAgICAgICAgICAgICBsZXQgaHRtbCA9ICcnO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaHRtbCArPSBmb3JtYXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnPHRyPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9XCJ7MH0gezF9XCIgezN9PVwiezV9XCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJ7Mn1cIiB7M309XCJ7NX1cIj48L2Rpdj4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90ZD4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPVwiezB9IHs0fVwiIHszfT1cIns1fVwiPicgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7Nn0nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90ZD4nICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90cj4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVU1CRVJTX0JMT0NLX05BTUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVNQkVSX0xJTkVfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRBX0FUVFJfTkFNRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT0RFX0JMT0NLX05BTUUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIG9wdGlvbnMuc3RhcnRGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzW2ldLmxlbmd0aCA+IDAgPyBsaW5lc1tpXSA6ICcgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXQoJzx0YWJsZSBjbGFzcz1cInswfVwiPnsxfTwvdGFibGU+JywgW1RBQkxFX05BTUUsIGh0bWxdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGlucHV0SHRtbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IENvZGUgYmxvY2suXG4gICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIEV4dGVybmFsIEFQSSBvcHRpb25zLlxuICAgICAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBJbnRlcm5hbCBBUEkgb3B0aW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIG1hcE9wdGlvbnMoZWxlbWVudCwgb3B0aW9ucykge1xuICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2luZ2xlTGluZTogZ2V0U2luZ2xlTGluZU9wdGlvbihvcHRpb25zKSxcbiAgICAgICAgICAgICAgICBzdGFydEZyb206IGdldFN0YXJ0RnJvbU9wdGlvbihlbGVtZW50LCBvcHRpb25zKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFNpbmdsZUxpbmVPcHRpb24ob3B0aW9ucykge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNpbmdsZUxpbmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zaW5nbGVMaW5lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0U3RhcnRGcm9tT3B0aW9uKGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IDE7XG4gICAgICAgICAgICBsZXQgc3RhcnRGcm9tID0gZGVmYXVsdFZhbHVlO1xuXG4gICAgICAgICAgICBpZiAoaXNGaW5pdGUob3B0aW9ucy5zdGFydEZyb20pKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRGcm9tID0gb3B0aW9ucy5zdGFydEZyb207XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGNhbiBiZSBvdmVycmlkZGVuIGJlY2F1c2UgbG9jYWwgb3B0aW9uIGlzIHByaW9yaXR5XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGdldEF0dHJpYnV0ZShlbGVtZW50LCAnZGF0YS1sbi1zdGFydC1mcm9tJyk7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHN0YXJ0RnJvbSA9IHRvTnVtYmVyKHZhbHVlLCBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gc3RhcnRGcm9tO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlY3Vyc2l2ZSBtZXRob2QgZm9yIGZpeCBtdWx0aS1saW5lIGVsZW1lbnRzIGltcGxlbWVudGF0aW9uIGluIGhpZ2hsaWdodC5qc1xuICAgICAgICAgKiBEb2luZyBkZWVwIHBhc3NhZ2Ugb24gY2hpbGQgbm9kZXMuXG4gICAgICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGR1cGxpY2F0ZU11bHRpbGluZU5vZGVzKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gZWxlbWVudC5jaGlsZE5vZGVzO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG5vZGUgaW4gbm9kZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobm9kZXMuaGFzT3duUHJvcGVydHkobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2Rlc1tub2RlXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TGluZXNDb3VudChjaGlsZC50ZXh0Q29udGVudCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlTXVsdGlsaW5lTm9kZXMoY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVNdWx0aWxpbmVOb2RlKGNoaWxkLnBhcmVudE5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1ldGhvZCBmb3IgZml4IG11bHRpLWxpbmUgZWxlbWVudHMgaW1wbGVtZW50YXRpb24gaW4gaGlnaGxpZ2h0LmpzXG4gICAgICAgICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIGR1cGxpY2F0ZU11bHRpbGluZU5vZGUoZWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gZWxlbWVudC5jbGFzc05hbWU7XG5cbiAgICAgICAgICAgIGlmICghL2hsanMtLy50ZXN0KGNsYXNzTmFtZSkpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgbGluZXMgPSBnZXRMaW5lcyhlbGVtZW50LmlubmVySFRNTCk7XG5cbiAgICAgICAgICAgIGxldCByZXN1bHQgPSAnJztcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVUZXh0ID0gbGluZXNbaV0ubGVuZ3RoID4gMCA/IGxpbmVzW2ldIDogJyAnO1xuXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGZvcm1hdCgnPHNwYW4gY2xhc3M9XCJ7MH1cIj57MX08L3NwYW4+XFxuJywgW2NsYXNzTmFtZSwgbGluZVRleHRdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSByZXN1bHQudHJpbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0TGluZXModGV4dCkge1xuICAgICAgICAgICAgaWYgKHRleHQubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgICAgICAgICAgIHJldHVybiB0ZXh0LnNwbGl0KEJSRUFLX0xJTkVfUkVHRVhQKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldExpbmVzQ291bnQodGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuICh0ZXh0LnRyaW0oKS5tYXRjaChCUkVBS19MSU5FX1JFR0VYUCkgfHwgW10pLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vL1xuICAgICAgICAvLy8gSEVMUEVSU1xuICAgICAgICAvLy9cblxuICAgICAgICBmdW5jdGlvbiBhc3luYyhmdW5jKSB7XG4gICAgICAgICAgICB3LnNldFRpbWVvdXQoZnVuYywgMCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICoge0BsaW5rIGh0dHBzOi8vd2NvZGVyLmdpdGh1Yi5pby9ub3Rlcy9zdHJpbmctZm9ybWF0LWZvci1zdHJpbmctZm9ybWF0aW5nLWluLWphdmFzY3JpcHR9XG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXRcbiAgICAgICAgICogQHBhcmFtIHthcnJheX0gYXJnc1xuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZm9ybWF0KGZvcm1hdCwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9cXHsoXFxkKylcXH0vZywgZnVuY3Rpb24gKG0sIG4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1tuXSAhPT0gdW5kZWZpbmVkID8gYXJnc1tuXSA6IG07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IENvZGUgYmxvY2suXG4gICAgICAgICAqIEBwYXJhbSB7U3RyaW5nfSBhdHRyTmFtZSBBdHRyaWJ1dGUgbmFtZS5cbiAgICAgICAgICogQHJldHVybnMge1N0cmluZ30gQXR0cmlidXRlIHZhbHVlIG9yIGVtcHR5LlxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gZ2V0QXR0cmlidXRlKGVsZW1lbnQsIGF0dHJOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoYXR0ck5hbWUpID8gZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyIFNvdXJjZSBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbSB7TnVtYmVyfSBmYWxsYmFjayBGYWxsYmFjayB2YWx1ZS5cbiAgICAgICAgICogQHJldHVybnMgUGFyc2VkIG51bWJlciBvciBmYWxsYmFjayB2YWx1ZS5cbiAgICAgICAgICovXG4gICAgICAgIGZ1bmN0aW9uIHRvTnVtYmVyKHN0ciwgZmFsbGJhY2spIHtcbiAgICAgICAgICAgIGlmICghc3RyKSByZXR1cm4gZmFsbGJhY2s7XG4gICAgICAgICAgICBjb25zdCBudW1iZXIgPSBOdW1iZXIoc3RyKTtcblxuICAgICAgICAgICAgcmV0dXJuIGlzRmluaXRlKG51bWJlcikgPyBudW1iZXIgOiBmYWxsYmFjaztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|