@eui/components 17.0.0-next.10 → 17.0.0-next.11
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/ecl/eui-ecl-banner/eui-components-ecl-eui-ecl-banner.d.ts.map +1 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner-credit.directive.d.ts +8 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner-credit.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner-description.directive.d.ts +13 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner-description.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner-picture.directive.d.ts +13 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner-picture.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner-title.directive.d.ts +13 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner-title.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner.component.d.ts +24 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner.component.d.ts.map +1 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner.module.d.ts +14 -0
- package/ecl/eui-ecl-banner/eui-ecl-banner.module.d.ts.map +1 -0
- package/ecl/eui-ecl-banner/eui-ecl-file-picture.directive.d.ts +13 -0
- package/ecl/eui-ecl-banner/eui-ecl-file-picture.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-banner/index.d.ts +8 -0
- package/ecl/eui-ecl-banner/index.d.ts.map +1 -0
- package/ecl/eui-ecl-button/eui-components-ecl-eui-ecl-button.d.ts.map +1 -0
- package/ecl/eui-ecl-button/eui-ecl-button-label.directive.d.ts +8 -0
- package/ecl/eui-ecl-button/eui-ecl-button-label.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-button/eui-ecl-button.component.d.ts +17 -0
- package/ecl/eui-ecl-button/eui-ecl-button.component.d.ts.map +1 -0
- package/ecl/eui-ecl-button/eui-ecl-button.module.d.ts +11 -0
- package/ecl/eui-ecl-button/eui-ecl-button.module.d.ts.map +1 -0
- package/ecl/eui-ecl-button/index.d.ts +4 -0
- package/ecl/eui-ecl-button/index.d.ts.map +1 -0
- package/ecl/eui-ecl-carousel/eui-components-ecl-eui-ecl-carousel.d.ts.map +1 -0
- package/ecl/eui-ecl-carousel/eui-ecl-carousel-item.component.d.ts +24 -0
- package/ecl/eui-ecl-carousel/eui-ecl-carousel-item.component.d.ts.map +1 -0
- package/ecl/eui-ecl-carousel/eui-ecl-carousel.component.d.ts +75 -0
- package/ecl/eui-ecl-carousel/eui-ecl-carousel.component.d.ts.map +1 -0
- package/ecl/eui-ecl-carousel/eui-ecl-carousel.module.d.ts +12 -0
- package/ecl/eui-ecl-carousel/eui-ecl-carousel.module.d.ts.map +1 -0
- package/ecl/eui-ecl-carousel/index.d.ts +4 -0
- package/ecl/eui-ecl-carousel/index.d.ts.map +1 -0
- package/ecl/eui-ecl-icon/eui-components-ecl-eui-ecl-icon.d.ts.map +1 -0
- package/ecl/eui-ecl-icon/eui-ecl-icon.component.d.ts +35 -0
- package/ecl/eui-ecl-icon/eui-ecl-icon.component.d.ts.map +1 -0
- package/ecl/eui-ecl-icon/eui-ecl-icon.module.d.ts +9 -0
- package/ecl/eui-ecl-icon/eui-ecl-icon.module.d.ts.map +1 -0
- package/ecl/eui-ecl-icon/index.d.ts +3 -0
- package/ecl/eui-ecl-icon/index.d.ts.map +1 -0
- package/ecl/eui-ecl-label/eui-components-ecl-eui-ecl-label.d.ts.map +1 -0
- package/ecl/eui-ecl-label/eui-ecl-label.directive.d.ts +9 -0
- package/ecl/eui-ecl-label/eui-ecl-label.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-label/eui-ecl-label.module.d.ts +9 -0
- package/ecl/eui-ecl-label/eui-ecl-label.module.d.ts.map +1 -0
- package/ecl/eui-ecl-label/index.d.ts +3 -0
- package/ecl/eui-ecl-label/index.d.ts.map +1 -0
- package/ecl/eui-ecl-link/eui-components-ecl-eui-ecl-link.d.ts.map +1 -0
- package/ecl/eui-ecl-link/eui-ecl-link-label.directive.d.ts +8 -0
- package/ecl/eui-ecl-link/eui-ecl-link-label.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-link/eui-ecl-link.directive.d.ts +22 -0
- package/ecl/eui-ecl-link/eui-ecl-link.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-link/eui-ecl-link.module.d.ts +10 -0
- package/ecl/eui-ecl-link/eui-ecl-link.module.d.ts.map +1 -0
- package/ecl/eui-ecl-link/index.d.ts +4 -0
- package/ecl/eui-ecl-link/index.d.ts.map +1 -0
- package/ecl/eui-ecl-message/eui-components-ecl-eui-ecl-message.d.ts.map +1 -0
- package/ecl/eui-ecl-message/eui-ecl-message-title.directive.d.ts +8 -0
- package/ecl/eui-ecl-message/eui-ecl-message-title.directive.d.ts.map +1 -0
- package/ecl/eui-ecl-message/eui-ecl-message.component.d.ts +21 -0
- package/ecl/eui-ecl-message/eui-ecl-message.component.d.ts.map +1 -0
- package/ecl/eui-ecl-message/eui-ecl-message.module.d.ts +13 -0
- package/ecl/eui-ecl-message/eui-ecl-message.module.d.ts.map +1 -0
- package/ecl/eui-ecl-message/index.d.ts +4 -0
- package/ecl/eui-ecl-message/index.d.ts.map +1 -0
- package/ecl/shared/eui-components-ecl-shared.d.ts.map +1 -0
- package/ecl/shared/eui-ecl-base.directive.d.ts +13 -0
- package/ecl/shared/eui-ecl-base.directive.d.ts.map +1 -0
- package/ecl/shared/index.d.ts +5 -0
- package/ecl/shared/index.d.ts.map +1 -0
- package/ecl/shared/models/eui-ecl-base.event.d.ts +6 -0
- package/ecl/shared/models/eui-ecl-base.event.d.ts.map +1 -0
- package/ecl/shared/models/eui-ecl-breadcrumb.model.d.ts +7 -0
- package/ecl/shared/models/eui-ecl-breadcrumb.model.d.ts.map +1 -0
- package/ecl/shared/models/eui-ecl-dom.event.d.ts +7 -0
- package/ecl/shared/models/eui-ecl-dom.event.d.ts.map +1 -0
- package/ecl/shared/models/eui-ecl-file-upload.model.d.ts +6 -0
- package/ecl/shared/models/eui-ecl-file-upload.model.d.ts.map +1 -0
- package/ecl/shared/models/eui-ecl-gallery-item.model.d.ts +7 -0
- package/ecl/shared/models/eui-ecl-gallery-item.model.d.ts.map +1 -0
- package/ecl/shared/models/eui-ecl-language.model.d.ts +6 -0
- package/ecl/shared/models/eui-ecl-language.model.d.ts.map +1 -0
- package/ecl/shared/models/eui-ecl-menu-item.model.d.ts +15 -0
- package/ecl/shared/models/eui-ecl-menu-item.model.d.ts.map +1 -0
- package/ecl/shared/models/index.d.ts +8 -0
- package/ecl/shared/models/index.d.ts.map +1 -0
- package/ecl/shared/services/eui-ecl-default-language.service.d.ts +33 -0
- package/ecl/shared/services/eui-ecl-default-language.service.d.ts.map +1 -0
- package/ecl/shared/services/eui-ecl-language.service.d.ts +19 -0
- package/ecl/shared/services/eui-ecl-language.service.d.ts.map +1 -0
- package/ecl/shared/services/eui-ecl-theme.service.d.ts +23 -0
- package/ecl/shared/services/eui-ecl-theme.service.d.ts.map +1 -0
- package/ecl/shared/services/index.d.ts +4 -0
- package/ecl/shared/services/index.d.ts.map +1 -0
- package/ecl/shared/utils/constants/constants.d.ts +10 -0
- package/ecl/shared/utils/constants/constants.d.ts.map +1 -0
- package/ecl/shared/utils/constants/index.d.ts +2 -0
- package/ecl/shared/utils/constants/index.d.ts.map +1 -0
- package/ecl/shared/utils/directives/eui-ecl-click-outside/eui-ecl-click-outside.directive.d.ts +12 -0
- package/ecl/shared/utils/directives/eui-ecl-click-outside/eui-ecl-click-outside.directive.d.ts.map +1 -0
- package/ecl/shared/utils/directives/eui-ecl-click-outside/index.d.ts +2 -0
- package/ecl/shared/utils/directives/eui-ecl-click-outside/index.d.ts.map +1 -0
- package/ecl/shared/utils/directives/eui-ecl-hidden/eui-ecl-hidden.directive.d.ts +8 -0
- package/ecl/shared/utils/directives/eui-ecl-hidden/eui-ecl-hidden.directive.d.ts.map +1 -0
- package/ecl/shared/utils/directives/eui-ecl-hidden/eui-ecl-hidden.module.d.ts +9 -0
- package/ecl/shared/utils/directives/eui-ecl-hidden/eui-ecl-hidden.module.d.ts.map +1 -0
- package/ecl/shared/utils/directives/eui-ecl-hidden/index.d.ts +3 -0
- package/ecl/shared/utils/directives/eui-ecl-hidden/index.d.ts.map +1 -0
- package/ecl/shared/utils/directives/index.d.ts +3 -0
- package/ecl/shared/utils/directives/index.d.ts.map +1 -0
- package/ecl/shared/utils/dom/dom-helpers.d.ts +3 -0
- package/ecl/shared/utils/dom/dom-helpers.d.ts.map +1 -0
- package/ecl/shared/utils/dom/index.d.ts +2 -0
- package/ecl/shared/utils/dom/index.d.ts.map +1 -0
- package/ecl/shared/utils/index.d.ts +4 -0
- package/ecl/shared/utils/index.d.ts.map +1 -0
- package/ecl/webcomponents/ecl-message-wc/ecl-message-wc.component.d.ts +10 -0
- package/ecl/webcomponents/ecl-message-wc/ecl-message-wc.component.d.ts.map +1 -0
- package/ecl/webcomponents/ecl-message-wc/eui-components-ecl-webcomponents-ecl-message-wc.d.ts.map +1 -0
- package/ecl/webcomponents/ecl-message-wc/index.d.ts +3 -0
- package/ecl/webcomponents/ecl-message-wc/index.d.ts.map +1 -0
- package/ecl/webcomponents/ecl-message-wc/module.d.ts +10 -0
- package/ecl/webcomponents/ecl-message-wc/module.d.ts.map +1 -0
- package/ecl/webcomponents/ecl-webcomponents-all/eui-components-ecl-webcomponents-ecl-webcomponents-all.d.ts.map +1 -0
- package/ecl/webcomponents/ecl-webcomponents-all/index.d.ts +2 -0
- package/ecl/webcomponents/ecl-webcomponents-all/index.d.ts.map +1 -0
- package/ecl/webcomponents/ecl-webcomponents-all/module.d.ts +9 -0
- package/ecl/webcomponents/ecl-webcomponents-all/module.d.ts.map +1 -0
- package/esm2022/directives/eui-clearable.directive.mjs +4 -4
- package/esm2022/directives/eui-has-permission.directive.mjs +8 -8
- package/esm2022/directives/eui-loading.directive.mjs +4 -4
- package/esm2022/directives/eui-maxlength.directive.mjs +8 -8
- package/esm2022/directives/eui-resizable/eui-resizable.component.mjs +4 -4
- package/esm2022/directives/eui-resizable/eui-resizable.directive.mjs +4 -4
- package/esm2022/directives/eui-resizable/eui-resizable.module.mjs +5 -5
- package/esm2022/directives/eui-scroll-handler.directive.mjs +11 -11
- package/esm2022/directives/eui-smooth-scroll.directive.mjs +11 -11
- package/esm2022/directives/eui-template.directive.mjs +8 -8
- package/esm2022/directives/eui-tooltip/container/eui-tooltip-container.component.mjs +4 -4
- package/esm2022/directives/eui-tooltip/eui-tooltip.directive.mjs +4 -4
- package/esm2022/directives/eui-tooltip/eui-tooltip.module.mjs +5 -5
- package/esm2022/ecl/eui-ecl-banner/eui-components-ecl-eui-ecl-banner.mjs +5 -0
- package/esm2022/ecl/eui-ecl-banner/eui-ecl-banner-credit.directive.mjs +21 -0
- package/esm2022/ecl/eui-ecl-banner/eui-ecl-banner-description.directive.mjs +38 -0
- package/esm2022/ecl/eui-ecl-banner/eui-ecl-banner-picture.directive.mjs +37 -0
- package/esm2022/ecl/eui-ecl-banner/eui-ecl-banner-title.directive.mjs +38 -0
- package/esm2022/ecl/eui-ecl-banner/eui-ecl-banner.component.mjs +73 -0
- package/esm2022/ecl/eui-ecl-banner/eui-ecl-banner.module.mjs +47 -0
- package/esm2022/ecl/eui-ecl-banner/eui-ecl-file-picture.directive.mjs +37 -0
- package/esm2022/ecl/eui-ecl-banner/index.mjs +8 -0
- package/esm2022/ecl/eui-ecl-button/eui-components-ecl-eui-ecl-button.mjs +5 -0
- package/esm2022/ecl/eui-ecl-button/eui-ecl-button-label.directive.mjs +20 -0
- package/esm2022/ecl/eui-ecl-button/eui-ecl-button.component.mjs +51 -0
- package/esm2022/ecl/eui-ecl-button/eui-ecl-button.module.mjs +20 -0
- package/esm2022/ecl/eui-ecl-button/index.mjs +4 -0
- package/esm2022/ecl/eui-ecl-carousel/eui-components-ecl-eui-ecl-carousel.mjs +5 -0
- package/esm2022/ecl/eui-ecl-carousel/eui-ecl-carousel-item.component.mjs +57 -0
- package/esm2022/ecl/eui-ecl-carousel/eui-ecl-carousel.component.mjs +329 -0
- package/esm2022/ecl/eui-ecl-carousel/eui-ecl-carousel.module.mjs +22 -0
- package/esm2022/ecl/eui-ecl-carousel/index.mjs +4 -0
- package/esm2022/ecl/eui-ecl-icon/eui-components-ecl-eui-ecl-icon.mjs +5 -0
- package/esm2022/ecl/eui-ecl-icon/eui-ecl-icon.component.mjs +123 -0
- package/esm2022/ecl/eui-ecl-icon/eui-ecl-icon.module.mjs +18 -0
- package/esm2022/ecl/eui-ecl-icon/index.mjs +3 -0
- package/esm2022/ecl/eui-ecl-label/eui-components-ecl-eui-ecl-label.mjs +5 -0
- package/esm2022/ecl/eui-ecl-label/eui-ecl-label.directive.mjs +26 -0
- package/esm2022/ecl/eui-ecl-label/eui-ecl-label.module.mjs +18 -0
- package/esm2022/ecl/eui-ecl-label/index.mjs +3 -0
- package/esm2022/ecl/eui-ecl-link/eui-components-ecl-eui-ecl-link.mjs +5 -0
- package/esm2022/ecl/eui-ecl-link/eui-ecl-link-label.directive.mjs +20 -0
- package/esm2022/ecl/eui-ecl-link/eui-ecl-link.directive.mjs +102 -0
- package/esm2022/ecl/eui-ecl-link/eui-ecl-link.module.mjs +19 -0
- package/esm2022/ecl/eui-ecl-link/index.mjs +4 -0
- package/esm2022/ecl/eui-ecl-message/eui-components-ecl-eui-ecl-message.mjs +5 -0
- package/esm2022/ecl/eui-ecl-message/eui-ecl-message-title.directive.mjs +20 -0
- package/esm2022/ecl/eui-ecl-message/eui-ecl-message.component.mjs +84 -0
- package/esm2022/ecl/eui-ecl-message/eui-ecl-message.module.mjs +22 -0
- package/esm2022/ecl/eui-ecl-message/index.mjs +4 -0
- package/esm2022/ecl/shared/eui-components-ecl-shared.mjs +5 -0
- package/esm2022/ecl/shared/eui-ecl-base.directive.mjs +36 -0
- package/esm2022/ecl/shared/index.mjs +5 -0
- package/esm2022/ecl/shared/models/eui-ecl-base.event.mjs +9 -0
- package/esm2022/ecl/shared/models/eui-ecl-breadcrumb.model.mjs +2 -0
- package/esm2022/ecl/shared/models/eui-ecl-dom.event.mjs +14 -0
- package/esm2022/ecl/shared/models/eui-ecl-file-upload.model.mjs +2 -0
- package/esm2022/ecl/shared/models/eui-ecl-gallery-item.model.mjs +2 -0
- package/esm2022/ecl/shared/models/eui-ecl-language.model.mjs +2 -0
- package/esm2022/ecl/shared/models/eui-ecl-menu-item.model.mjs +2 -0
- package/esm2022/ecl/shared/models/index.mjs +8 -0
- package/esm2022/ecl/shared/services/eui-ecl-default-language.service.mjs +295 -0
- package/esm2022/ecl/shared/services/eui-ecl-language.service.mjs +3 -0
- package/esm2022/ecl/shared/services/eui-ecl-theme.service.mjs +46 -0
- package/esm2022/ecl/shared/services/index.mjs +4 -0
- package/esm2022/ecl/shared/utils/constants/constants.mjs +11 -0
- package/esm2022/ecl/shared/utils/constants/index.mjs +2 -0
- package/esm2022/ecl/shared/utils/directives/eui-ecl-click-outside/eui-ecl-click-outside.directive.mjs +31 -0
- package/esm2022/ecl/shared/utils/directives/eui-ecl-click-outside/index.mjs +2 -0
- package/esm2022/ecl/shared/utils/directives/eui-ecl-hidden/eui-ecl-hidden.directive.mjs +24 -0
- package/esm2022/ecl/shared/utils/directives/eui-ecl-hidden/eui-ecl-hidden.module.mjs +18 -0
- package/esm2022/ecl/shared/utils/directives/eui-ecl-hidden/index.mjs +3 -0
- package/esm2022/ecl/shared/utils/directives/index.mjs +3 -0
- package/esm2022/ecl/shared/utils/dom/dom-helpers.mjs +29 -0
- package/esm2022/ecl/shared/utils/dom/index.mjs +2 -0
- package/esm2022/ecl/shared/utils/index.mjs +4 -0
- package/esm2022/ecl/webcomponents/ecl-message-wc/ecl-message-wc.component.mjs +33 -0
- package/esm2022/ecl/webcomponents/ecl-message-wc/eui-components-ecl-webcomponents-ecl-message-wc.mjs +5 -0
- package/esm2022/ecl/webcomponents/ecl-message-wc/index.mjs +3 -0
- package/esm2022/ecl/webcomponents/ecl-message-wc/module.mjs +27 -0
- package/esm2022/ecl/webcomponents/ecl-webcomponents-all/eui-components-ecl-webcomponents-ecl-webcomponents-all.mjs +5 -0
- package/esm2022/ecl/webcomponents/ecl-webcomponents-all/index.mjs +2 -0
- package/esm2022/ecl/webcomponents/ecl-webcomponents-all/module.mjs +20 -0
- package/esm2022/eui-alert/eui-alert.component.mjs +15 -11
- package/esm2022/eui-all/eui-all.module.mjs +5 -10
- package/esm2022/eui-autocomplete/eui-autocomplete.component.mjs +20 -73
- package/esm2022/eui-autocomplete/eui-autocomplete.module.mjs +5 -5
- package/esm2022/eui-badge/eui-badge.component.mjs +8 -8
- package/esm2022/eui-block-content/eui-block-content.component.mjs +5 -5
- package/esm2022/eui-block-content/eui-block-content.module.mjs +5 -5
- package/esm2022/eui-block-document/eui-block-document.component.mjs +5 -5
- package/esm2022/eui-block-document/eui-block-document.module.mjs +5 -5
- package/esm2022/eui-button/eui-button.component.mjs +14 -14
- package/esm2022/eui-button-group/eui-button-group.component.mjs +9 -9
- package/esm2022/eui-buttons/eui-buttons.component.mjs +19 -14
- package/esm2022/eui-card/components/eui-card-content/eui-card-content.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-action-buttons.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-action-icons.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-footer/eui-card-footer-menu-content.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-footer/eui-card-footer.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-header/eui-card-header-left-content.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-header/eui-card-header-right-content.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-header/eui-card-header-subtitle.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-header/eui-card-header-title.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-header/eui-card-header.component.mjs +5 -15
- package/esm2022/eui-card/components/eui-card-header-body/eui-card-header-body.component.mjs +4 -4
- package/esm2022/eui-card/components/eui-card-media/eui-card-media.component.mjs +4 -4
- package/esm2022/eui-card/eui-card.component.mjs +12 -18
- package/esm2022/eui-card/eui-card.module.mjs +5 -5
- package/esm2022/eui-card/services/ui-state.service.mjs +4 -4
- package/esm2022/eui-chip/eui-chip.component.mjs +7 -7
- package/esm2022/eui-chip/eui-chip.module.mjs +5 -5
- package/esm2022/eui-chip-list/eui-chip-list.component.mjs +43 -7
- package/esm2022/eui-chip-list/eui-chip-list.module.mjs +5 -5
- package/esm2022/eui-chip-list/services/eui-chip-list-drag.service.mjs +4 -4
- package/esm2022/eui-dashboard-button/eui-dashboard-button.component.mjs +14 -14
- package/esm2022/eui-dashboard-card/eui-dashboard-card.component.mjs +14 -10
- package/esm2022/eui-date-range-selector/eui-date-range-selector.component.mjs +4 -5
- package/esm2022/eui-date-range-selector/eui-date-range-selector.module.mjs +5 -5
- package/esm2022/eui-datepicker/eui-datepicker.component.mjs +16 -37
- package/esm2022/eui-datepicker/eui-datepicker.module.mjs +5 -5
- package/esm2022/eui-dialog/container/eui-dialog-container.component.mjs +4 -4
- package/esm2022/eui-dialog/eui-dialog.component.mjs +20 -12
- package/esm2022/eui-dialog/eui-dialog.module.mjs +5 -5
- package/esm2022/eui-dialog/services/eui-dialog.service.mjs +4 -4
- package/esm2022/eui-dimmer/dimmer.component.mjs +5 -5
- package/esm2022/eui-dimmer/dimmer.module.mjs +5 -5
- package/esm2022/eui-disable-content/eui-disable-content.component.mjs +8 -8
- package/esm2022/eui-discussion-thread/eui-discussion-thread-item.component.mjs +8 -6
- package/esm2022/eui-discussion-thread/eui-discussion-thread.component.mjs +5 -5
- package/esm2022/eui-discussion-thread/eui-discussion-thread.module.mjs +8 -6
- package/esm2022/eui-dropdown/directives/eui-dropdown-content.directive.mjs +4 -4
- package/esm2022/eui-dropdown/dropdown-item/eui-dropdown-item.component.mjs +7 -7
- package/esm2022/eui-dropdown/eui-dropdown.component.mjs +5 -5
- package/esm2022/eui-dropdown/eui-dropdown.module.mjs +9 -9
- package/esm2022/eui-dropdown/eui-dropdown.service.mjs +4 -4
- package/esm2022/eui-feedback-message/eui-feedback-message.component.mjs +4 -4
- package/esm2022/eui-feedback-message/eui-feedback-message.module.mjs +5 -5
- package/esm2022/eui-fieldset/eui-fieldset.component.mjs +18 -13
- package/esm2022/eui-fieldset/eui-fieldset.module.mjs +5 -5
- package/esm2022/eui-file-upload/eui-file-upload.component.mjs +11 -7
- package/esm2022/eui-file-upload/eui-file-upload.module.mjs +5 -5
- package/esm2022/eui-file-upload/file-preview/file-preview.component.mjs +28 -29
- package/esm2022/eui-file-upload/pipes/filesize.pipe.mjs +4 -4
- package/esm2022/eui-file-upload/progress/eui-file-upload-progress.component.mjs +4 -4
- package/esm2022/eui-file-upload/utils/eui-file-upload.utils.mjs +4 -4
- package/esm2022/eui-growl/eui-growl.component.mjs +9 -4
- package/esm2022/eui-growl/eui-growl.module.mjs +5 -5
- package/esm2022/eui-icon/eui-icon-color.component.mjs +4 -4
- package/esm2022/eui-icon/eui-icon-svg.component.mjs +4 -4
- package/esm2022/eui-icon/eui-icon.component.mjs +4 -4
- package/esm2022/eui-icon/eui-icon.module.mjs +5 -5
- package/esm2022/eui-icon-toggle/eui-icon-toggle.component.mjs +8 -11
- package/esm2022/eui-icon-toggle/eui-icon-toggle.module.mjs +5 -5
- package/esm2022/eui-input-checkbox/eui-input-checkbox.component.mjs +6 -7
- package/esm2022/eui-input-checkbox/eui-input-checkbox.module.mjs +5 -5
- package/esm2022/eui-input-group/eui-input-group.component.mjs +5 -5
- package/esm2022/eui-input-group/eui-input-group.module.mjs +5 -5
- package/esm2022/eui-input-number/eui-input-number.component.mjs +5 -5
- package/esm2022/eui-input-number/eui-input-number.module.mjs +5 -5
- package/esm2022/eui-input-number/eui-number-control.directive.mjs +4 -4
- package/esm2022/eui-input-radio/eui-input-radio.component.mjs +5 -5
- package/esm2022/eui-input-radio/eui-input-radio.module.mjs +5 -5
- package/esm2022/eui-input-text/eui-input-text.component.mjs +7 -7
- package/esm2022/eui-input-text/eui-input-text.module.mjs +5 -5
- package/esm2022/eui-label/eui-label.component.mjs +4 -4
- package/esm2022/eui-label/eui-label.module.mjs +5 -5
- package/esm2022/eui-list/eui-list-item/eui-list-item.component.mjs +6 -6
- package/esm2022/eui-list/eui-list.component.mjs +5 -5
- package/esm2022/eui-list/eui-list.module.mjs +5 -5
- package/esm2022/eui-list/services/eui-list.service.mjs +4 -4
- package/esm2022/eui-menu/eui-menu-item.component.mjs +17 -6
- package/esm2022/eui-menu/eui-menu.component.mjs +5 -9
- package/esm2022/eui-menu/eui-menu.module.mjs +5 -5
- package/esm2022/eui-message-box/eui-message-box.component.mjs +17 -9
- package/esm2022/eui-message-box/eui-message-box.module.mjs +5 -5
- package/esm2022/eui-message-box/services/eui-message-box.service.mjs +4 -4
- package/esm2022/eui-overlay/components/eui-overlay-body/eui-overlay-body.component.mjs +5 -5
- package/esm2022/eui-overlay/components/eui-overlay-footer/eui-overlay-footer.component.mjs +5 -5
- package/esm2022/eui-overlay/components/eui-overlay-header/eui-overlay-header-title/eui-overlay-header-title.component.mjs +7 -7
- package/esm2022/eui-overlay/components/eui-overlay-header/eui-overlay-header.component.mjs +7 -7
- package/esm2022/eui-overlay/eui-overlay.component.mjs +8 -8
- package/esm2022/eui-page/components/eui-page-breadcrumb/eui-page-breadcrumb.component.mjs +4 -4
- package/esm2022/eui-page/components/eui-page-column/eui-page-column.component.mjs +35 -36
- package/esm2022/eui-page/components/eui-page-columns/eui-page-columns.component.mjs +6 -6
- package/esm2022/eui-page/components/eui-page-content/eui-page-content.component.mjs +4 -4
- package/esm2022/eui-page/components/eui-page-footer/eui-page-footer.component.mjs +4 -4
- package/esm2022/eui-page/components/eui-page-header/eui-page-header.component.mjs +11 -11
- package/esm2022/eui-page/components/eui-page-hero-header/eui-page-hero-header.component.mjs +7 -7
- package/esm2022/eui-page/components/eui-page-top-content/eui-page-top-content.component.mjs +4 -4
- package/esm2022/eui-page/eui-page.component.mjs +5 -5
- package/esm2022/eui-page/eui-page.module.mjs +5 -5
- package/esm2022/eui-paginator/eui-paginator.component.mjs +6 -6
- package/esm2022/eui-paginator/eui-paginator.module.mjs +5 -5
- package/esm2022/eui-popover/directives/eui-popover-arrow-position.directive.mjs +4 -4
- package/esm2022/eui-popover/eui-popover.component.mjs +16 -8
- package/esm2022/eui-popover/eui-popover.module.mjs +5 -5
- package/esm2022/eui-progress-bar/eui-progress-bar.component.mjs +4 -4
- package/esm2022/eui-progress-bar/eui-progress-bar.module.mjs +5 -5
- package/esm2022/eui-progress-circle/eui-progress-circle.component.mjs +9 -9
- package/esm2022/eui-select/eui-select-control.directive.mjs +4 -4
- package/esm2022/eui-select/eui-select-multiple.directive.mjs +4 -4
- package/esm2022/eui-select/eui-select-mutli-option.directive.mjs +4 -4
- package/esm2022/eui-select/eui-select-option.directive.mjs +4 -4
- package/esm2022/eui-select/eui-select.component.mjs +5 -5
- package/esm2022/eui-select/eui-select.module.mjs +5 -5
- package/esm2022/eui-sidebar-menu/eui-sidebar-menu.component.mjs +15 -7
- package/esm2022/eui-sidebar-menu/eui-sidebar-menu.module.mjs +5 -5
- package/esm2022/eui-slide-toggle/eui-slide-toggle.component.mjs +9 -10
- package/esm2022/eui-slide-toggle/eui-slide-toggle.module.mjs +5 -5
- package/esm2022/eui-table/directives/eui-table-sticky-columns.directive.mjs +4 -4
- package/esm2022/eui-table/eui-table.component.mjs +4 -6
- package/esm2022/eui-table/eui-table.module.mjs +5 -5
- package/esm2022/eui-table/expandable-row/eui-table-expandable-row.component.mjs +4 -4
- package/esm2022/eui-table/filter/eui-table-filter.component.mjs +4 -4
- package/esm2022/eui-table/pipes/eui-table-highlight-filter.pipe.mjs +4 -4
- package/esm2022/eui-table/selectable-header/eui-table-selectable-header.component.mjs +4 -4
- package/esm2022/eui-table/selectable-row/eui-table-selectable-row.component.mjs +4 -4
- package/esm2022/eui-table/services/eui-table-selectable-row.service.mjs +4 -4
- package/esm2022/eui-table/services/eui-table-sort.service.mjs +4 -4
- package/esm2022/eui-table/sortable-col/eui-table-sortable-col.component.mjs +4 -4
- package/esm2022/eui-tabs/eui-tab/eui-tab.component.mjs +5 -5
- package/esm2022/eui-tabs/eui-tab-content/eui-tab-content.component.mjs +4 -4
- package/esm2022/eui-tabs/eui-tab-label/eui-tab-label.component.mjs +7 -7
- package/esm2022/eui-tabs/eui-tabs.component.mjs +8 -19
- package/esm2022/eui-tabs/eui-tabs.module.mjs +5 -5
- package/esm2022/eui-textarea/auto-resize.directive.mjs +4 -4
- package/esm2022/eui-textarea/eui-textarea.component.mjs +5 -5
- package/esm2022/eui-textarea/eui-textarea.module.mjs +5 -5
- package/esm2022/eui-timebar/eui-timebar.component.mjs +8 -8
- package/esm2022/eui-timeline/eui-timeline-item.component.mjs +4 -4
- package/esm2022/eui-timeline/eui-timeline.component.mjs +4 -4
- package/esm2022/eui-timeline/eui-timeline.module.mjs +5 -5
- package/esm2022/eui-timepicker/eui-timepicker.component.mjs +4 -4
- package/esm2022/eui-timepicker/eui-timepicker.module.mjs +5 -5
- package/esm2022/eui-tree/eui-dropdown-tree.directive.mjs +8 -8
- package/esm2022/eui-tree/eui-tree-form-control.directive.mjs +8 -8
- package/esm2022/eui-tree/eui-tree.component.mjs +8 -8
- package/esm2022/eui-wizard/eui-wizard-step.component.mjs +4 -4
- package/esm2022/eui-wizard/eui-wizard.component.mjs +4 -4
- package/esm2022/eui-wizard/eui-wizard.module.mjs +5 -5
- package/esm2022/eui-wizard/services/eui-wizard.service.mjs +4 -4
- package/esm2022/externals/charts/chart/chart.component.mjs +4 -4
- package/esm2022/externals/charts/eui-charts.module.mjs +5 -5
- package/esm2022/externals/eui-editor/counters/eui-editor-counters.component.mjs +4 -4
- package/esm2022/externals/eui-editor/directives/eui-editor-maxlength.directive.mjs +4 -4
- package/esm2022/externals/eui-editor/eui-editor.component.mjs +9 -170
- package/esm2022/externals/eui-editor/eui-editor.module.mjs +5 -5
- package/esm2022/externals/eui-editor/html-view/eui-editor-html-view.component.mjs +4 -4
- package/esm2022/externals/eui-editor/image-url-dialog/image-url-dialog.component.mjs +4 -4
- package/esm2022/externals/eui-editor/json-view/eui-editor-json-view.component.mjs +4 -4
- package/esm2022/externals/quill/quill-editor.component.mjs +4 -4
- package/esm2022/externals/quill/quill.module.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-breadcrumb/breadcrumb.component.mjs +4 -4
- package/esm2022/layout/eui-app/eui-app-breadcrumb/breadcrumb.module.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-footer/footer.component.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-footer/footer.module.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-header/header.component.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-header/header.module.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-body/sidebar-body.component.mjs +4 -4
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-drawer/sidebar-drawer.component.mjs +7 -7
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-footer/sidebar-footer.component.mjs +6 -6
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-header/sidebar-header.component.mjs +6 -6
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-header-user-profile/sidebar-header-user-profile.component.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.mjs +11 -7
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.component.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-sidebar/sidebar.module.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-toolbar/toolbar.component.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-toolbar/toolbar.module.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app-top-message/top-message.component.mjs +10 -6
- package/esm2022/layout/eui-app/eui-app-top-message/top-message.module.mjs +5 -5
- package/esm2022/layout/eui-app/eui-app.component.mjs +8 -8
- package/esm2022/layout/eui-app/eui-app.module.mjs +5 -5
- package/esm2022/layout/eui-breadcrumb/breadcrumb.component.mjs +4 -4
- package/esm2022/layout/eui-breadcrumb/breadcrumb.module.mjs +5 -5
- package/esm2022/layout/eui-breadcrumb/breadcrumb.service.mjs +4 -4
- package/esm2022/layout/eui-breadcrumb/collapsed-breadcrumb/collapsed-breadcrumb.component.mjs +7 -7
- package/esm2022/layout/eui-breadcrumb/item/breadcrumb-item.component.mjs +4 -4
- package/esm2022/layout/eui-footer/footer.component.mjs +5 -5
- package/esm2022/layout/eui-footer/footer.module.mjs +5 -5
- package/esm2022/layout/eui-header/header-app/header-app.component.mjs +13 -13
- package/esm2022/layout/eui-header/header-app-name/header-app-name.component.mjs +4 -4
- package/esm2022/layout/eui-header/header-app-name-logo/header-app-name-logo.component.mjs +4 -4
- package/esm2022/layout/eui-header/header-app-subtitle/header-app-subtitle.component.mjs +4 -4
- package/esm2022/layout/eui-header/header-environment/header-environment.component.mjs +4 -4
- package/esm2022/layout/eui-header/header-logo/header-logo.component.mjs +4 -4
- package/esm2022/layout/eui-header/header-user-profile/header-user-profile.component.mjs +4 -4
- package/esm2022/layout/eui-header/header.component.mjs +6 -6
- package/esm2022/layout/eui-header/header.module.mjs +5 -5
- package/esm2022/layout/eui-language-selector/language-selector.component.mjs +7 -7
- package/esm2022/layout/eui-language-selector/language-selector.module.mjs +5 -5
- package/esm2022/layout/eui-language-selector/modal-selector/modal-selector.component.mjs +5 -5
- package/esm2022/layout/eui-layout.module.mjs +5 -5
- package/esm2022/layout/eui-notifications/eui-notification-item.component.mjs +4 -4
- package/esm2022/layout/eui-notifications/eui-notifications.component.mjs +4 -4
- package/esm2022/layout/eui-notifications/eui-notifications.module.mjs +5 -5
- package/esm2022/layout/eui-notifications-v2/eui-notification-item.component.mjs +4 -4
- package/esm2022/layout/eui-notifications-v2/eui-notifications.component.mjs +4 -4
- package/esm2022/layout/eui-notifications-v2/eui-notifications.module.mjs +5 -5
- package/esm2022/layout/eui-search/search.component.mjs +4 -4
- package/esm2022/layout/eui-search/search.module.mjs +5 -5
- package/esm2022/layout/eui-sidebar-toggle/sidebar-toggle.component.mjs +4 -4
- package/esm2022/layout/eui-sidebar-toggle/sidebar-toggle.module.mjs +5 -5
- package/esm2022/layout/eui-toolbar/toolbar-app/toolbar-app.component.mjs +6 -6
- package/esm2022/layout/eui-toolbar/toolbar-center/toolbar-center.component.mjs +4 -4
- package/esm2022/layout/eui-toolbar/toolbar-environment/toolbar-environment.component.mjs +6 -6
- package/esm2022/layout/eui-toolbar/toolbar-item/toolbar-item.component.mjs +4 -4
- package/esm2022/layout/eui-toolbar/toolbar-item-notifications/toolbar-item-notifications.component.mjs +4 -4
- package/esm2022/layout/eui-toolbar/toolbar-item-search/toolbar-item-search.component.mjs +4 -4
- package/esm2022/layout/eui-toolbar/toolbar-item-user-profile/toolbar-item-user-profile.component.mjs +4 -4
- package/esm2022/layout/eui-toolbar/toolbar-items/toolbar-items.component.mjs +4 -4
- package/esm2022/layout/eui-toolbar/toolbar-logo/toolbar-logo.component.mjs +4 -4
- package/esm2022/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.mjs +14 -6
- package/esm2022/layout/eui-toolbar/toolbar.component.mjs +6 -6
- package/esm2022/layout/eui-toolbar/toolbar.module.mjs +5 -5
- package/esm2022/layout/eui-user-profile/user-profile-card/user-profile-card.component.mjs +4 -4
- package/esm2022/layout/eui-user-profile/user-profile-menu/user-profile-menu.component.mjs +4 -4
- package/esm2022/layout/eui-user-profile/user-profile-menu-item/user-profile-menu-item.component.mjs +4 -4
- package/esm2022/layout/eui-user-profile/user-profile.component.mjs +6 -6
- package/esm2022/layout/eui-user-profile/user-profile.module.mjs +5 -5
- package/esm2022/pipes/eui-is-empty.pipe.mjs +8 -8
- package/esm2022/pipes/eui-truncate.pipe.mjs +8 -8
- package/esm2022/shared/base/base-states.directive.mjs +4 -4
- package/esm2022/shared/base/base.directive.mjs +4 -4
- package/esm2022/shared/eui-common-header/common-header.component.mjs +9 -9
- package/esm2022/shared/eui-expand-content/eui-expand-content.component.mjs +9 -9
- package/esm2022/shared/input.directive.mjs +4 -4
- package/eui-alert/eui-alert.component.d.ts +3 -1
- package/eui-alert/eui-alert.component.d.ts.map +1 -1
- package/eui-all/eui-all.module.d.ts +23 -24
- package/eui-all/eui-all.module.d.ts.map +1 -1
- package/eui-autocomplete/eui-autocomplete.component.d.ts +7 -23
- package/eui-autocomplete/eui-autocomplete.component.d.ts.map +1 -1
- package/eui-badge/eui-badge.component.d.ts +1 -1
- package/eui-badge/eui-badge.component.d.ts.map +1 -1
- package/eui-buttons/eui-buttons.component.d.ts +6 -1
- package/eui-buttons/eui-buttons.component.d.ts.map +1 -1
- package/eui-card/components/eui-card-header/eui-card-header.component.d.ts +1 -5
- package/eui-card/components/eui-card-header/eui-card-header.component.d.ts.map +1 -1
- package/eui-card/eui-card.component.d.ts +1 -3
- package/eui-card/eui-card.component.d.ts.map +1 -1
- package/eui-chip-list/eui-chip-list.component.d.ts +8 -17
- package/eui-chip-list/eui-chip-list.component.d.ts.map +1 -1
- package/eui-dashboard-card/eui-dashboard-card.component.d.ts +4 -2
- package/eui-dashboard-card/eui-dashboard-card.component.d.ts.map +1 -1
- package/eui-date-range-selector/eui-date-range-selector.component.d.ts +0 -1
- package/eui-date-range-selector/eui-date-range-selector.component.d.ts.map +1 -1
- package/eui-datepicker/eui-datepicker.component.d.ts +1 -10
- package/eui-datepicker/eui-datepicker.component.d.ts.map +1 -1
- package/eui-dialog/eui-dialog.component.d.ts +5 -1
- package/eui-dialog/eui-dialog.component.d.ts.map +1 -1
- package/eui-disable-content/eui-disable-content.component.d.ts.map +1 -1
- package/eui-discussion-thread/eui-discussion-thread.module.d.ts +3 -1
- package/eui-discussion-thread/eui-discussion-thread.module.d.ts.map +1 -1
- package/eui-fieldset/eui-fieldset.component.d.ts +3 -1
- package/eui-fieldset/eui-fieldset.component.d.ts.map +1 -1
- package/eui-file-upload/eui-file-upload.component.d.ts +5 -3
- package/eui-file-upload/eui-file-upload.component.d.ts.map +1 -1
- package/eui-file-upload/file-preview/file-preview.component.d.ts +1 -0
- package/eui-file-upload/file-preview/file-preview.component.d.ts.map +1 -1
- package/eui-file-upload/pipes/filesize.pipe.d.ts.map +1 -1
- package/eui-growl/eui-growl.component.d.ts +5 -10
- package/eui-growl/eui-growl.component.d.ts.map +1 -1
- package/eui-icon-toggle/eui-icon-toggle.component.d.ts.map +1 -1
- package/eui-input-checkbox/eui-input-checkbox.component.d.ts +1 -1
- package/eui-input-checkbox/eui-input-checkbox.component.d.ts.map +1 -1
- package/eui-menu/eui-menu-item.component.d.ts +5 -1
- package/eui-menu/eui-menu-item.component.d.ts.map +1 -1
- package/eui-menu/eui-menu.component.d.ts +1 -6
- package/eui-menu/eui-menu.component.d.ts.map +1 -1
- package/eui-message-box/eui-message-box.component.d.ts +5 -1
- package/eui-message-box/eui-message-box.component.d.ts.map +1 -1
- package/eui-overlay/components/eui-overlay-header/eui-overlay-header-title/eui-overlay-header-title.component.d.ts.map +1 -1
- package/eui-overlay/components/eui-overlay-header/eui-overlay-header.component.d.ts.map +1 -1
- package/eui-page/components/eui-page-column/eui-page-column.component.d.ts +5 -5
- package/eui-page/components/eui-page-column/eui-page-column.component.d.ts.map +1 -1
- package/eui-page/components/eui-page-columns/eui-page-columns.component.d.ts.map +1 -1
- package/eui-page/components/eui-page-footer/eui-page-footer.component.d.ts.map +1 -1
- package/eui-page/components/eui-page-hero-header/eui-page-hero-header.component.d.ts.map +1 -1
- package/eui-paginator/eui-paginator.component.d.ts.map +1 -1
- package/eui-popover/eui-popover.component.d.ts +6 -2
- package/eui-popover/eui-popover.component.d.ts.map +1 -1
- package/eui-sidebar-menu/eui-sidebar-menu.component.d.ts +8 -1
- package/eui-sidebar-menu/eui-sidebar-menu.component.d.ts.map +1 -1
- package/eui-slide-toggle/eui-slide-toggle.component.d.ts +3 -3
- package/eui-slide-toggle/eui-slide-toggle.component.d.ts.map +1 -1
- package/eui-table/eui-table.component.d.ts +1 -5
- package/eui-table/eui-table.component.d.ts.map +1 -1
- package/eui-tabs/eui-tabs.component.d.ts +1 -11
- package/eui-tabs/eui-tabs.component.d.ts.map +1 -1
- package/externals/eui-editor/eui-editor.component.d.ts +1 -73
- package/externals/eui-editor/eui-editor.component.d.ts.map +1 -1
- package/fesm2022/eui-components-directives.mjs +67 -67
- package/fesm2022/eui-components-directives.mjs.map +1 -1
- package/fesm2022/eui-components-ecl-eui-ecl-banner.mjs +274 -0
- package/fesm2022/eui-components-ecl-eui-ecl-banner.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-eui-ecl-button.mjs +89 -0
- package/fesm2022/eui-components-ecl-eui-ecl-button.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-eui-ecl-carousel.mjs +402 -0
- package/fesm2022/eui-components-ecl-eui-ecl-carousel.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-eui-ecl-icon.mjs +145 -0
- package/fesm2022/eui-components-ecl-eui-ecl-icon.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-eui-ecl-label.mjs +48 -0
- package/fesm2022/eui-components-ecl-eui-ecl-label.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-eui-ecl-link.mjs +140 -0
- package/fesm2022/eui-components-ecl-eui-ecl-link.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-eui-ecl-message.mjs +125 -0
- package/fesm2022/eui-components-ecl-eui-ecl-message.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-shared.mjs +507 -0
- package/fesm2022/eui-components-ecl-shared.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-webcomponents-ecl-message-wc.mjs +63 -0
- package/fesm2022/eui-components-ecl-webcomponents-ecl-message-wc.mjs.map +1 -0
- package/fesm2022/eui-components-ecl-webcomponents-ecl-webcomponents-all.mjs +27 -0
- package/fesm2022/eui-components-ecl-webcomponents-ecl-webcomponents-all.mjs.map +1 -0
- package/fesm2022/eui-components-eui-alert.mjs +14 -10
- package/fesm2022/eui-components-eui-alert.mjs.map +1 -1
- package/fesm2022/eui-components-eui-all.mjs +4 -9
- package/fesm2022/eui-components-eui-all.mjs.map +1 -1
- package/fesm2022/eui-components-eui-autocomplete.mjs +23 -76
- package/fesm2022/eui-components-eui-autocomplete.mjs.map +1 -1
- package/fesm2022/eui-components-eui-badge.mjs +7 -7
- package/fesm2022/eui-components-eui-badge.mjs.map +1 -1
- package/fesm2022/eui-components-eui-block-content.mjs +8 -8
- package/fesm2022/eui-components-eui-block-content.mjs.map +1 -1
- package/fesm2022/eui-components-eui-block-document.mjs +8 -8
- package/fesm2022/eui-components-eui-block-document.mjs.map +1 -1
- package/fesm2022/eui-components-eui-button-group.mjs +8 -8
- package/fesm2022/eui-components-eui-button-group.mjs.map +1 -1
- package/fesm2022/eui-components-eui-button.mjs +13 -13
- package/fesm2022/eui-components-eui-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-buttons.mjs +18 -13
- package/fesm2022/eui-components-eui-buttons.mjs.map +1 -1
- package/fesm2022/eui-components-eui-card.mjs +55 -71
- package/fesm2022/eui-components-eui-card.mjs.map +1 -1
- package/fesm2022/eui-components-eui-chip-list.mjs +49 -13
- package/fesm2022/eui-components-eui-chip-list.mjs.map +1 -1
- package/fesm2022/eui-components-eui-chip.mjs +10 -10
- package/fesm2022/eui-components-eui-chip.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dashboard-button.mjs +13 -13
- package/fesm2022/eui-components-eui-dashboard-button.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dashboard-card.mjs +13 -9
- package/fesm2022/eui-components-eui-dashboard-card.mjs.map +1 -1
- package/fesm2022/eui-components-eui-date-range-selector.mjs +7 -8
- package/fesm2022/eui-components-eui-date-range-selector.mjs.map +1 -1
- package/fesm2022/eui-components-eui-datepicker.mjs +19 -40
- package/fesm2022/eui-components-eui-datepicker.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dialog.mjs +29 -21
- package/fesm2022/eui-components-eui-dialog.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dimmer.mjs +8 -8
- package/fesm2022/eui-components-eui-dimmer.mjs.map +1 -1
- package/fesm2022/eui-components-eui-disable-content.mjs +7 -7
- package/fesm2022/eui-components-eui-disable-content.mjs.map +1 -1
- package/fesm2022/eui-components-eui-discussion-thread.mjs +18 -14
- package/fesm2022/eui-components-eui-discussion-thread.mjs.map +1 -1
- package/fesm2022/eui-components-eui-dropdown.mjs +24 -24
- package/fesm2022/eui-components-eui-dropdown.mjs.map +1 -1
- package/fesm2022/eui-components-eui-feedback-message.mjs +7 -7
- package/fesm2022/eui-components-eui-feedback-message.mjs.map +1 -1
- package/fesm2022/eui-components-eui-fieldset.mjs +21 -16
- package/fesm2022/eui-components-eui-fieldset.mjs.map +1 -1
- package/fesm2022/eui-components-eui-file-upload.mjs +50 -47
- package/fesm2022/eui-components-eui-file-upload.mjs.map +1 -1
- package/fesm2022/eui-components-eui-growl.mjs +12 -7
- package/fesm2022/eui-components-eui-growl.mjs.map +1 -1
- package/fesm2022/eui-components-eui-icon-toggle.mjs +11 -14
- package/fesm2022/eui-components-eui-icon-toggle.mjs.map +1 -1
- package/fesm2022/eui-components-eui-icon.mjs +13 -13
- package/fesm2022/eui-components-eui-icon.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-checkbox.mjs +9 -10
- package/fesm2022/eui-components-eui-input-checkbox.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-group.mjs +8 -8
- package/fesm2022/eui-components-eui-input-group.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-number.mjs +11 -11
- package/fesm2022/eui-components-eui-input-number.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-radio.mjs +8 -8
- package/fesm2022/eui-components-eui-input-radio.mjs.map +1 -1
- package/fesm2022/eui-components-eui-input-text.mjs +10 -10
- package/fesm2022/eui-components-eui-input-text.mjs.map +1 -1
- package/fesm2022/eui-components-eui-label.mjs +7 -7
- package/fesm2022/eui-components-eui-label.mjs.map +1 -1
- package/fesm2022/eui-components-eui-list.mjs +16 -16
- package/fesm2022/eui-components-eui-list.mjs.map +1 -1
- package/fesm2022/eui-components-eui-menu.mjs +24 -17
- package/fesm2022/eui-components-eui-menu.mjs.map +1 -1
- package/fesm2022/eui-components-eui-message-box.mjs +23 -15
- package/fesm2022/eui-components-eui-message-box.mjs.map +1 -1
- package/fesm2022/eui-components-eui-overlay.mjs +26 -26
- package/fesm2022/eui-components-eui-overlay.mjs.map +1 -1
- package/fesm2022/eui-components-eui-page.mjs +73 -74
- package/fesm2022/eui-components-eui-page.mjs.map +1 -1
- package/fesm2022/eui-components-eui-paginator.mjs +9 -9
- package/fesm2022/eui-components-eui-paginator.mjs.map +1 -1
- package/fesm2022/eui-components-eui-popover.mjs +22 -14
- package/fesm2022/eui-components-eui-popover.mjs.map +1 -1
- package/fesm2022/eui-components-eui-progress-bar.mjs +7 -7
- package/fesm2022/eui-components-eui-progress-bar.mjs.map +1 -1
- package/fesm2022/eui-components-eui-progress-circle.mjs +8 -8
- package/fesm2022/eui-components-eui-progress-circle.mjs.map +1 -1
- package/fesm2022/eui-components-eui-select.mjs +20 -20
- package/fesm2022/eui-components-eui-select.mjs.map +1 -1
- package/fesm2022/eui-components-eui-sidebar-menu.mjs +18 -10
- package/fesm2022/eui-components-eui-sidebar-menu.mjs.map +1 -1
- package/fesm2022/eui-components-eui-slide-toggle.mjs +12 -13
- package/fesm2022/eui-components-eui-slide-toggle.mjs.map +1 -1
- package/fesm2022/eui-components-eui-table.mjs +34 -36
- package/fesm2022/eui-components-eui-table.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tabs.mjs +24 -35
- package/fesm2022/eui-components-eui-tabs.mjs.map +1 -1
- package/fesm2022/eui-components-eui-textarea.mjs +11 -11
- package/fesm2022/eui-components-eui-textarea.mjs.map +1 -1
- package/fesm2022/eui-components-eui-timebar.mjs +7 -7
- package/fesm2022/eui-components-eui-timebar.mjs.map +1 -1
- package/fesm2022/eui-components-eui-timeline.mjs +10 -10
- package/fesm2022/eui-components-eui-timeline.mjs.map +1 -1
- package/fesm2022/eui-components-eui-timepicker.mjs +7 -7
- package/fesm2022/eui-components-eui-timepicker.mjs.map +1 -1
- package/fesm2022/eui-components-eui-tree.mjs +21 -21
- package/fesm2022/eui-components-eui-tree.mjs.map +1 -1
- package/fesm2022/eui-components-eui-wizard.mjs +13 -13
- package/fesm2022/eui-components-eui-wizard.mjs.map +1 -1
- package/fesm2022/eui-components-externals-charts.mjs +7 -7
- package/fesm2022/eui-components-externals-charts.mjs.map +1 -1
- package/fesm2022/eui-components-externals-eui-editor.mjs +27 -188
- package/fesm2022/eui-components-externals-eui-editor.mjs.map +1 -1
- package/fesm2022/eui-components-externals-quill.mjs +7 -7
- package/fesm2022/eui-components-externals-quill.mjs.map +1 -1
- package/fesm2022/eui-components-layout.mjs +275 -259
- package/fesm2022/eui-components-layout.mjs.map +1 -1
- package/fesm2022/eui-components-pipes.mjs +14 -14
- package/fesm2022/eui-components-pipes.mjs.map +1 -1
- package/fesm2022/eui-components-shared-base.mjs +6 -6
- package/fesm2022/eui-components-shared-base.mjs.map +1 -1
- package/fesm2022/eui-components-shared.mjs +19 -19
- package/fesm2022/eui-components-shared.mjs.map +1 -1
- package/layout/eui-app/eui-app-sidebar/sidebar-drawer/sidebar-drawer.component.d.ts.map +1 -1
- package/layout/eui-app/eui-app-sidebar/sidebar-footer/sidebar-footer.component.d.ts.map +1 -1
- package/layout/eui-app/eui-app-sidebar/sidebar-header/sidebar-header.component.d.ts.map +1 -1
- package/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.d.ts +3 -1
- package/layout/eui-app/eui-app-sidebar/sidebar-menu/sidebar-menu.component.d.ts.map +1 -1
- package/layout/eui-app/eui-app-top-message/top-message.component.d.ts +3 -1
- package/layout/eui-app/eui-app-top-message/top-message.component.d.ts.map +1 -1
- package/layout/eui-header/header.component.d.ts.map +1 -1
- package/layout/eui-language-selector/language-selector.component.d.ts.map +1 -1
- package/layout/eui-toolbar/toolbar-app/toolbar-app.component.d.ts.map +1 -1
- package/layout/eui-toolbar/toolbar-environment/toolbar-environment.component.d.ts.map +1 -1
- package/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.d.ts +3 -1
- package/layout/eui-toolbar/toolbar-menu/toolbar-menu.component.d.ts.map +1 -1
- package/layout/eui-toolbar/toolbar.component.d.ts.map +1 -1
- package/package.json +72 -18
- package/pipes/eui-truncate.pipe.d.ts.map +1 -1
- package/esm2022/eui-picker/eui-components-eui-picker.mjs +0 -5
- package/esm2022/eui-picker/eui-picker.component.mjs +0 -164
- package/esm2022/eui-picker/eui-picker.module.mjs +0 -41
- package/esm2022/eui-picker/index.mjs +0 -4
- package/esm2022/eui-picker/modal-picker/eui-modal-picker.component.mjs +0 -72
- package/esm2022/eui-picker/models/eui-picker-item.model.mjs +0 -7
- package/eui-picker/eui-components-eui-picker.d.ts.map +0 -1
- package/eui-picker/eui-picker.component.d.ts +0 -55
- package/eui-picker/eui-picker.component.d.ts.map +0 -1
- package/eui-picker/eui-picker.module.d.ts +0 -16
- package/eui-picker/eui-picker.module.d.ts.map +0 -1
- package/eui-picker/index.d.ts +0 -4
- package/eui-picker/index.d.ts.map +0 -1
- package/eui-picker/modal-picker/eui-modal-picker.component.d.ts +0 -22
- package/eui-picker/modal-picker/eui-modal-picker.component.d.ts.map +0 -1
- package/eui-picker/models/eui-picker-item.model.d.ts +0 -7
- package/eui-picker/models/eui-picker-item.model.d.ts.map +0 -1
- package/fesm2022/eui-components-eui-picker.mjs +0 -277
- package/fesm2022/eui-components-eui-picker.mjs.map +0 -1
@@ -21,7 +21,7 @@ import * as i7 from "@eui/components/eui-chip-list";
|
|
21
21
|
import * as i8 from "@eui/components/eui-input-text";
|
22
22
|
export class EuiAutocompleteComponent extends BaseDirective {
|
23
23
|
get cssClasses() {
|
24
|
-
return [this.hasChips ?
|
24
|
+
return [this.hasChips ? 'eui-autocomplete--has-chips' : '', super.getCssClasses('eui-autocomplete')].join(' ').trim();
|
25
25
|
}
|
26
26
|
get hasChips() {
|
27
27
|
return this._hasChips;
|
@@ -151,32 +151,17 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
151
151
|
this.chipsPosition = 'top';
|
152
152
|
this.visibleOptions = 5;
|
153
153
|
this.dragAndDropConnectedTo = [];
|
154
|
-
/** @deprecated This will be removed in next version of eui */
|
155
|
-
this.closed = new EventEmitter();
|
156
|
-
/** @deprecated This will be removed in next version of eui */
|
157
|
-
this.opened = new EventEmitter();
|
158
|
-
/** @deprecated This will be removed in next version of eui */
|
159
|
-
this.selectionChanged = new EventEmitter();
|
160
|
-
/** @deprecated This will be removed in next version of eui */
|
161
|
-
this.itemAdded = new EventEmitter();
|
162
|
-
/** @deprecated This will be removed in next version of eui */
|
163
|
-
this.itemRemoved = new EventEmitter();
|
164
|
-
/** @deprecated This will be removed in next version of eui */
|
165
|
-
this.inputChanged = new EventEmitter();
|
166
|
-
/** @deprecated This will be removed in next version of eui */
|
167
|
-
this.chipDragStarted = new EventEmitter();
|
168
|
-
/** @deprecated This will be removed in next version of eui */
|
169
|
-
this.chipDragReleased = new EventEmitter();
|
170
|
-
/** @deprecated This will be removed in next version of eui */
|
171
|
-
this.chipDropped = new EventEmitter();
|
172
154
|
// euiInputText does not send event when the the field is cleared
|
173
155
|
this.clear = new EventEmitter();
|
174
|
-
|
156
|
+
/**@deprecated will be replaced in the next eUI version by panelClose */
|
175
157
|
this.close = new EventEmitter();
|
176
|
-
|
158
|
+
this.panelClose = new EventEmitter();
|
159
|
+
/**@deprecated will be replaced in the next eUI version by panelOpen */
|
177
160
|
this.open = new EventEmitter();
|
178
|
-
|
161
|
+
this.panelOpen = new EventEmitter();
|
162
|
+
/**@deprecated will be replaced in the next eUI version by inputBlur */
|
179
163
|
this.blur = new EventEmitter();
|
164
|
+
this.inputBlur = new EventEmitter();
|
180
165
|
this.selectionChange = new EventEmitter();
|
181
166
|
this.itemAdd = new EventEmitter();
|
182
167
|
this.itemRemove = new EventEmitter();
|
@@ -320,9 +305,7 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
320
305
|
this.autocompleteInput.nativeElement.value = '';
|
321
306
|
this.autocompleteControl.setValue(null);
|
322
307
|
this.autocompleteInputTrigger.closePanel();
|
323
|
-
this.selectionChanged.emit(this.autocompleteDataSelected);
|
324
308
|
this.selectionChange.emit(this.autocompleteDataSelected);
|
325
|
-
this.itemAdded.emit(new EuiAutoCompleteItem({ label: newValue.trim() }));
|
326
309
|
this.itemAdd.emit(new EuiAutoCompleteItem({ label: newValue.trim() }));
|
327
310
|
}
|
328
311
|
}
|
@@ -343,9 +326,7 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
343
326
|
if (this.hasChips) {
|
344
327
|
this.autocompleteOptions.next(this._filter(''));
|
345
328
|
}
|
346
|
-
this.selectionChanged.emit(this.autocompleteDataSelected);
|
347
329
|
this.selectionChange.emit(this.autocompleteDataSelected);
|
348
|
-
this.itemAdded.emit(value);
|
349
330
|
this.itemAdd.emit(value);
|
350
331
|
}
|
351
332
|
onChipRemove(e) {
|
@@ -359,9 +340,7 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
359
340
|
this.autocompleteOptions.next(this.isItemsSorted ? this.orderItems(this._filter(''), this.itemsSortOrder) : this._filter(''));
|
360
341
|
}
|
361
342
|
this.onChange(this.autocompleteDataSelected.length > 0 ? this.autocompleteDataSelected : null);
|
362
|
-
this.selectionChanged.emit(this.autocompleteDataSelected);
|
363
343
|
this.selectionChange.emit(this.autocompleteDataSelected);
|
364
|
-
this.itemRemoved.emit(autocompleteDataRemoved);
|
365
344
|
this.itemRemove.emit(autocompleteDataRemoved);
|
366
345
|
if (!(e.removed instanceof EuiChip) &&
|
367
346
|
e.removed.event instanceof KeyboardEvent &&
|
@@ -373,22 +352,6 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
373
352
|
.focus();
|
374
353
|
}
|
375
354
|
}
|
376
|
-
/** @deprecated This will be removed in eUI-14 */
|
377
|
-
onClick() {
|
378
|
-
if (!this.readonly) {
|
379
|
-
if (this.nbClick > 0) {
|
380
|
-
this.matAutocomplete.isOpen ? this.autocompleteInputTrigger.closePanel() : this.autocompleteInputTrigger.openPanel();
|
381
|
-
}
|
382
|
-
this.nbClick += 1;
|
383
|
-
}
|
384
|
-
}
|
385
|
-
/** @deprecated This will be removed in eUI-14 */
|
386
|
-
resetNbClick(e) {
|
387
|
-
if (!e.relatedTarget || e.relatedTarget['className'].indexOf('mat-option') === -1) {
|
388
|
-
this.nbClick = 0;
|
389
|
-
}
|
390
|
-
this.onTouch();
|
391
|
-
}
|
392
355
|
onFocus() {
|
393
356
|
if (this.isForceSelection) {
|
394
357
|
this.autocompleteControl.setValue(null);
|
@@ -403,6 +366,7 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
403
366
|
}, 250);
|
404
367
|
}
|
405
368
|
this.blur.emit();
|
369
|
+
this.inputBlur.emit();
|
406
370
|
}
|
407
371
|
trackByFn(index) {
|
408
372
|
return index;
|
@@ -410,8 +374,8 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
410
374
|
onClose() {
|
411
375
|
this.scrollDispatcherSubscription.unsubscribe();
|
412
376
|
if (!this.ignoreOpenCloseEvents) {
|
413
|
-
this.closed.emit();
|
414
377
|
this.close.emit();
|
378
|
+
this.panelClose.emit();
|
415
379
|
}
|
416
380
|
this.virtualScrolling.scrollToIndex(0);
|
417
381
|
this.selectedOptionIndex = -1;
|
@@ -427,8 +391,8 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
427
391
|
}
|
428
392
|
});
|
429
393
|
if (!this.ignoreOpenCloseEvents) {
|
430
|
-
this.opened.emit();
|
431
394
|
this.open.emit();
|
395
|
+
this.panelOpen.emit();
|
432
396
|
}
|
433
397
|
let visibleRangeStart = 0;
|
434
398
|
let visibleRangeEnd = 4;
|
@@ -498,17 +462,13 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
498
462
|
this.chips = this.mapAsChip();
|
499
463
|
this.autocompleteOptions.next(this._filter(''));
|
500
464
|
this.onChange(this.autocompleteDataSelected.length > 0 ? this.autocompleteDataSelected : null);
|
501
|
-
this.selectionChanged.emit(this.autocompleteDataSelected);
|
502
465
|
this.selectionChange.emit(this.autocompleteDataSelected);
|
503
|
-
this.chipDropped.emit(e);
|
504
466
|
this.chipDrop.emit(e);
|
505
467
|
}
|
506
468
|
onChipDragStarted(e) {
|
507
|
-
this.chipDragStarted.emit(e);
|
508
469
|
this.chipDragStart.emit(e);
|
509
470
|
}
|
510
471
|
onChipDragReleased(e) {
|
511
|
-
this.chipDragReleased.emit(e);
|
512
472
|
this.chipDragRelease.emit(e);
|
513
473
|
}
|
514
474
|
onClear() {
|
@@ -558,7 +518,6 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
558
518
|
}
|
559
519
|
}
|
560
520
|
}
|
561
|
-
this.inputChanged.emit(value);
|
562
521
|
this.inputChange.emit(value);
|
563
522
|
if (!this.async) {
|
564
523
|
const filterValue = typeof value === 'string' || !value ? value : value.label;
|
@@ -669,10 +628,10 @@ export class EuiAutocompleteComponent extends BaseDirective {
|
|
669
628
|
_calculateNewItemSize(baseFontSize = '16px') {
|
670
629
|
return (parseInt(baseFontSize, 10) * 3).toString() || '';
|
671
630
|
}
|
672
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-
|
673
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.7", type: EuiAutocompleteComponent, selector: "eui-autocomplete, input[euiAutocomplete]", inputs: { toggleLinkMoreLabel: "toggleLinkMoreLabel", toggleLinkLessLabel: "toggleLinkLessLabel", autocompleteData: "autocompleteData", autocompleteDataSelected: "autocompleteDataSelected", chipsSortOrder: "chipsSortOrder", itemsSortOrder: "itemsSortOrder", placeholder: "placeholder", matching: "matching", chipsPosition: "chipsPosition", panelWidth: "panelWidth", visibleOptions: "visibleOptions", classList: "classList", groupBy: "groupBy", dragAndDropSourceName: "dragAndDropSourceName", dragAndDropConnectedTo: "dragAndDropConnectedTo", hasChips: "hasChips", isGrid: "isGrid", async: "async", addOnBlur: "addOnBlur", isFreeValueAllowed: "isFreeValueAllowed", isDuplicateValueAllowed: "isDuplicateValueAllowed", isLoading: "isLoading", isChipsRemovable: "isChipsRemovable", maxVisibleChipsCount: "maxVisibleChipsCount", chipsLabelTruncateCount: "chipsLabelTruncateCount", isMaxVisibleChipsOpened: "isMaxVisibleChipsOpened", readonly: "readonly", isChipsSorted: "isChipsSorted", isItemsSorted: "isItemsSorted", isChipsDragAndDrop: "isChipsDragAndDrop", isForceSelection: "isForceSelection", autoActiveFirstOption: "autoActiveFirstOption" }, outputs: { closed: "closed", opened: "opened", selectionChanged: "selectionChanged", itemAdded: "itemAdded", itemRemoved: "itemRemoved", inputChanged: "inputChanged", chipDragStarted: "chipDragStarted", chipDragReleased: "chipDragReleased", chipDropped: "chipDropped", clear: "clear", close: "close", open: "open", blur: "blur", selectionChange: "selectionChange", itemAdd: "itemAdd", itemRemove: "itemRemove", inputChange: "inputChange", chipDragStart: "chipDragStart", chipDragRelease: "chipDragRelease", chipDrop: "chipDrop" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "templates", predicate: EuiTemplateDirective }], viewQueries: [{ propertyName: "autocompleteInput", first: true, predicate: ["autocompleteInput"], descendants: true, read: ElementRef }, { propertyName: "autocompleteInputTrigger", first: true, predicate: ["autocompleteInputTrigger"], descendants: true, read: MatAutocompleteTrigger }, { propertyName: "matAutocomplete", first: true, predicate: ["auto"], descendants: true }, { propertyName: "chipList", first: true, predicate: ["chipList"], descendants: true }, { propertyName: "virtualScrolling", first: true, predicate: ["virtualScrolling"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-autocomplete__container\" matAutocompleteOrigin #origin=\"matAutocompleteOrigin\">\n <div class=\"eui-autocomplete__wrapper eui-autocomplete__wrapper--{{ chipsPosition }}\">\n <ng-template [ngIf]=\"chipsPosition === 'bottom'\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n\n <ng-container *ngIf=\"hasChips\">\n <eui-chip-list\n #chipList\n [chips]=\"chips\"\n [isGrid]=\"isChipsGrid\"\n [isChipsDragAndDrop]=\"isChipsDragAndDrop\"\n [isChipsRemovable]=\"isChipsRemovable && !readonly\"\n [isChipsSorted]=\"isChipsSorted\"\n [chipsSortOrder]=\"chipsSortOrder\"\n [maxVisibleChipsCount]=\"maxVisibleChipsCount\"\n [isMaxVisibleChipsOpened]=\"isMaxVisibleChipsOpened\"\n [toggleLinkMoreLabel]=\"toggleLinkMoreLabel\"\n [toggleLinkLessLabel]=\"toggleLinkLessLabel\"\n [chipsLabelTruncateCount]=\"chipsLabelTruncateCount\"\n [dragAndDropSourceName]=\"dragAndDropSourceName\"\n [dragAndDropConnectedTo]=\"dragAndDropConnectedTo\"\n (chipDropped)=\"onChipDropped($event)\"\n (chipDragStarted)=\"onChipDragStarted($event)\"\n (chipDragReleased)=\"onChipDragReleased($event)\"\n (chipRemove)=\"onChipRemove($event)\"\n (chiplistFocus)=\"onChipListFocus()\">\n <euiChipListAppendContent>\n <ng-template [ngIf]=\"chipsPosition === 'inside'\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n </euiChipListAppendContent>\n </eui-chip-list>\n </ng-container>\n\n <ng-template [ngIf]=\"chipsPosition === 'top' || !hasChips\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n\n <ng-template #field>\n <span class=\"eui-autocomplete__field-wrapper\">\n <ng-container *ngIf=\"!hasChips\">\n <input\n [euiClearable]=\"!readonly && !isLoading && !isDisabled\"\n [euiLoading]=\"isLoading\"\n euiInputText\n #autocompleteInput\n #autocompleteInputTrigger\n placeholder=\"{{ placeholder }}\"\n [matAutocompleteDisabled]=\"readonly\"\n [formControl]=\"autocompleteControl\"\n [matAutocomplete]=\"auto\"\n [readonly]=\"readonly\"\n [attr.aria-label]=\"placeholder ? placeholder : 'Autocomplete Input Field'\"\n (clear)=\"onClear()\"\n (focusout)=\"onFocusOut()\"\n (focus)=\"onFocus()\"\n role=\"combobox\"\n aria-autocomplete=\"both\"\n aria-haspopup=\"true\"\n aria-controls=\"autocompleteId\" />\n </ng-container>\n <ng-container *ngIf=\"hasChips\">\n <input\n [euiClearable]=\"!readonly && !isLoading && !isDisabled\"\n [euiLoading]=\"isLoading\"\n euiInputText\n #autocompleteInput\n #autocompleteInputTrigger\n placeholder=\"{{ placeholder }}\"\n [matAutocompleteDisabled]=\"readonly\"\n [formControl]=\"autocompleteControl\"\n [matAutocomplete]=\"auto\"\n [matAutocompleteConnectedTo]=\"chipsPosition === 'inside' ? origin : null\"\n [readonly]=\"readonly\"\n [attr.aria-label]=\"placeholder ? placeholder : 'Autocomplete Input Field'\"\n (clear)=\"onClear()\"\n (focusout)=\"onFocusOut(); addOnBlurHandler($event)\"\n (focus)=\"onFocus()\"\n (keydown.enter)=\"addOnEnterHandler()\"\n (keydown.backspace)=\"onKeyDownBackspace()\"\n role=\"combobox\"\n aria-autocomplete=\"both\"\n aria-haspopup=\"true\"\n aria-controls=\"autocompleteId\" />\n </ng-container>\n\n <mat-autocomplete\n [id]=\"autocompleteId\"\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth === 'auto' ? null : panelWidth\"\n [class]=\"classList\"\n [autoActiveFirstOption]=\"autoActiveFirstOption\"\n (closed)=\"onClose()\"\n (opened)=\"onOpen()\"\n (optionSelected)=\"onOptionSelected($event)\">\n <ng-container *ngIf=\"groupBy\">\n <cdk-virtual-scroll-viewport\n #virtualScrolling\n itemSize=\"48\"\n minBufferPx=\"500\"\n maxBufferPx=\"750\"\n [style.min-height]=\"cdkVirtualScrollViewport + 'px'\">\n <ng-container *ngFor=\"let distinctOptionGroup of distinctOptionGroups\">\n <mat-optgroup\n [class.eui-autocomplete__optgroup--custom]=\"autocompleteOptGroupTemplate\"\n *ngIf=\"(groupedItems[distinctOptionGroup] | async).length > 0\"\n [label]=\"distinctOptionGroup\">\n <ng-container *ngIf=\"autocompleteOptGroupTemplate\">\n <div class=\"eui-autocomplete__optgroup--custom-optgroup-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptGroupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: distinctOptionGroup } }\"></ng-template>\n </div>\n </ng-container>\n <mat-option\n *ngFor=\"let groupedItem of groupedItems[distinctOptionGroup] | async; trackBy: trackByFn\"\n [disabled]=\"groupedItem.isDisabled\"\n [class]=\"\n groupedItem.typeClass\n ? 'mat-option eui-autocomplete__option eui-autocomplete__option--' + groupedItem.typeClass\n : 'mat-option eui-autocomplete__option'\n \"\n [class.eui-autocomplete__option--custom]=\"autocompleteOptionTemplate\"\n [value]=\"groupedItem\">\n <span *ngIf=\"groupedItem.iconClass\" class=\"{{ groupedItem.iconClass }}\"></span>\n <ng-container *ngIf=\"!autocompleteOptionTemplate\">\n {{ groupedItem.label }}\n </ng-container>\n <ng-container *ngIf=\"autocompleteOptionTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: groupedItem }\"></ng-template>\n </ng-container>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n <ng-container *ngIf=\"!groupBy\">\n <cdk-virtual-scroll-viewport\n #virtualScrolling\n [itemSize]=\"itemSize\"\n minBufferPx=\"500\"\n maxBufferPx=\"750\"\n [style.min-height]=\"cdkVirtualScrollViewport + 'px'\">\n <mat-option\n *cdkVirtualFor=\"let autocompleteOption of autocompleteOptions | async; let i = index; trackBy: trackByFn\"\n [disabled]=\"autocompleteOption.isDisabled\"\n [class]=\"\n autocompleteOption.typeClass\n ? 'mat-option eui-autocomplete__option eui-autocomplete__option--' + autocompleteOption.typeClass\n : 'mat-option eui-autocomplete__option'\n \"\n [class.eui-autocomplete__option--custom]=\"autocompleteOptionTemplate\"\n [class.mat-mdc-option-active]=\"i === selectedOptionIndex\"\n [class.mdc-list-item--selected]=\"false\"\n [value]=\"autocompleteOption\">\n <span *ngIf=\"autocompleteOption.iconClass\" class=\"{{ autocompleteOption.iconClass }}\"></span>\n <ng-container *ngIf=\"!autocompleteOptionTemplate\">{{ autocompleteOption.label }}</ng-container>\n <ng-container *ngIf=\"autocompleteOptionTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: autocompleteOption }\"></ng-template>\n </ng-container>\n </mat-option>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n </mat-autocomplete>\n </span>\n </ng-template>\n </div>\n</div>\n", styles: [".eui-autocomplete{--eui-autocomplete-input-width: var(--eui-base-spacing-3xl);width:100%}.eui-autocomplete__container .eui-autocomplete__field-wrapper{display:flex;position:relative;width:100%}.eui-autocomplete__container .eui-autocomplete__field-wrapper input{min-width:var(--eui-autocomplete-input-width)}.eui-autocomplete--no-max-height{max-height:none!important}.eui-autocomplete__option{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);border-left:var(--eui-border-state-width) solid transparent;display:flex;height:auto!important;min-height:var(--eui-base-spacing-3xl)!important}.eui-autocomplete__option .eui-icon,.eui-autocomplete__option .eui-icon-svg,.eui-autocomplete__option .eui-flag-icon{margin-right:var(--eui-base-spacing-xs)}.eui-autocomplete__option .mat-pseudo-checkbox-checked,.eui-autocomplete__option .mat-pseudo-checkbox-indeterminate,.eui-autocomplete__option .mat-accent .mat-pseudo-checkbox-checked,.eui-autocomplete__option .mat-accent .mat-pseudo-checkbox-indeterminate{background:transparent}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-input-text{border:0}.eui-autocomplete .eui-autocomplete__wrapper--inside euichiplistappendcontent{display:inline-flex;flex-grow:1}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-chip-list-container{width:100%}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-chip-list-container .eui-chip-list__list{flex-wrap:inherit!important;width:100%}.eui-autocomplete--has-chips .eui-input-text[readonly]{display:none}.mat-mdc-autocomplete-panel{padding:0!important}.mat-mdc-autocomplete-panel .mat-mdc-optgroup-label{align-items:center;background-color:var(--eui-base-color-grey-10);color:var(--eui-base-color-grey-80);display:flex;font-family:var(--eui-base-font-family);font-size:var(--eui-base-font-size);font-weight:700;margin-bottom:0}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom .mat-mdc-optgroup-label{display:none}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom-optgroup-wrapper{align-items:center;background-color:var(--eui-base-color-grey-10);color:var(--eui-base-color-grey-80);display:flex;font-size:var(--eui-base-font-size);font-weight:700;height:auto;line-height:var(--eui-base-spacing-3xl);min-height:var(--eui-base-spacing-3xl);padding:0 var(--eui-base-spacing-s)}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom-optgroup-wrapper .eui-icon{margin-right:var(--eui-base-spacing-2xs)}.mat-mdc-autocomplete-panel .mdc-list-item--selected{background:none!important}.mat-mdc-autocomplete-panel .mdc-list-item--selected:hover{background:rgba(0,0,0,.04)!important}.mat-mdc-autocomplete-panel .mdc-list-item--selected .mdc-list-item__primary-text{color:inherit!important}.eui-autocomplete--primary input{background-color:var(--eui-base-color-primary-10)}.eui-autocomplete--secondary input{background-color:var(--eui-base-color-grey-10)}.eui-autocomplete--info input{background-color:var(--eui-base-color-info-10)}.eui-autocomplete--success input{background-color:var(--eui-base-color-success-10)}.eui-autocomplete--warning input{background-color:var(--eui-base-color-warning-10)}.eui-autocomplete--danger input{background-color:var(--eui-base-color-danger-10)}.eui-autocomplete--accent input{background-color:var(--eui-base-color-accent-10)}.eui-autocomplete__wrapper--bottom .eui-autocomplete__field-wrapper{display:block;margin-bottom:var(--eui-base-spacing-2xs)}.eui-autocomplete__wrapper--inside{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);padding:var(--eui-base-spacing-2xs) var(--eui-base-spacing-2xs) 0 var(--eui-base-spacing-2xs)}.eui-autocomplete__wrapper--inside .mat-chip-list .mat-chip-list-wrapper,.eui-autocomplete__wrapper--inside .mat-chip-list .mat-standard-chip{align-items:center;margin-bottom:0}.eui-autocomplete__wrapper--inside .mat-autocomplete-trigger{background:none;border:0}.eui-autocomplete__wrapper--inside .mat-autocomplete-trigger:focus{border:0;box-shadow:var(--eui-base-shadow-0)}.eui-autocomplete__option--primary{border-left-color:var(--eui-base-color-primary-100)}.eui-autocomplete__option--secondary{border-left-color:var(--eui-base-color-grey-25)}.eui-autocomplete__option--info{border-left-color:var(--eui-base-color-info-100)}.eui-autocomplete__option--success{border-left-color:var(--eui-base-color-success-100)}.eui-autocomplete__option--warning{border-left-color:var(--eui-base-color-warning-100)}.eui-autocomplete__option--danger{border-left-color:var(--eui-base-color-danger-100)}.eui-autocomplete__option--accent{border-left-color:var(--eui-base-color-accent-100)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i6.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "component", type: i7.EuiChipListComponent, selector: "eui-chip-list, div[euiChipList], ul[euiChipList]", inputs: ["chips", "toggleLinkMoreLabel", "toggleLinkLessLabel", "chipsSortOrder", "dragAndDropSourceName", "dragAndDropConnectedTo", "ariaLabel", "dropListOrientation", "isSquared", "isChipsRemovable", "maxVisibleChipsCount", "chipsLabelTruncateCount", "isMaxVisibleChipsOpened", "isChipsSorted", "isChipsDragAndDrop", "isGrid"], outputs: ["chipsInit", "chipRemove", "chipDragStarted", "chipDragReleased", "chipDropped", "chiplistFocus"] }, { kind: "directive", type: i7.EuiChipListAppendContentDirective, selector: "euiChipListAppendContent" }, { kind: "component", type: i8.EuiInputTextComponent, selector: "input[euiInputText]", inputs: ["class", "isInvalid"] }, { kind: "directive", type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
631
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: EuiAutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }, { token: i2.ScrollDispatcher }, { token: i0.ElementRef }, { token: i3.EuiAppShellService }], target: i0.ɵɵFactoryTarget.Component }); }
|
632
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-rc.0", type: EuiAutocompleteComponent, selector: "eui-autocomplete, input[euiAutocomplete]", inputs: { toggleLinkMoreLabel: "toggleLinkMoreLabel", toggleLinkLessLabel: "toggleLinkLessLabel", autocompleteData: "autocompleteData", autocompleteDataSelected: "autocompleteDataSelected", chipsSortOrder: "chipsSortOrder", itemsSortOrder: "itemsSortOrder", placeholder: "placeholder", matching: "matching", chipsPosition: "chipsPosition", panelWidth: "panelWidth", visibleOptions: "visibleOptions", classList: "classList", groupBy: "groupBy", dragAndDropSourceName: "dragAndDropSourceName", dragAndDropConnectedTo: "dragAndDropConnectedTo", hasChips: "hasChips", isGrid: "isGrid", async: "async", addOnBlur: "addOnBlur", isFreeValueAllowed: "isFreeValueAllowed", isDuplicateValueAllowed: "isDuplicateValueAllowed", isLoading: "isLoading", isChipsRemovable: "isChipsRemovable", maxVisibleChipsCount: "maxVisibleChipsCount", chipsLabelTruncateCount: "chipsLabelTruncateCount", isMaxVisibleChipsOpened: "isMaxVisibleChipsOpened", readonly: "readonly", isChipsSorted: "isChipsSorted", isItemsSorted: "isItemsSorted", isChipsDragAndDrop: "isChipsDragAndDrop", isForceSelection: "isForceSelection", autoActiveFirstOption: "autoActiveFirstOption" }, outputs: { clear: "clear", close: "close", panelClose: "panelClose", open: "open", panelOpen: "panelOpen", blur: "blur", inputBlur: "inputBlur", selectionChange: "selectionChange", itemAdd: "itemAdd", itemRemove: "itemRemove", inputChange: "inputChange", chipDragStart: "chipDragStart", chipDragRelease: "chipDragRelease", chipDrop: "chipDrop" }, host: { properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "templates", predicate: EuiTemplateDirective }], viewQueries: [{ propertyName: "autocompleteInput", first: true, predicate: ["autocompleteInput"], descendants: true, read: ElementRef }, { propertyName: "autocompleteInputTrigger", first: true, predicate: ["autocompleteInputTrigger"], descendants: true, read: MatAutocompleteTrigger }, { propertyName: "matAutocomplete", first: true, predicate: ["auto"], descendants: true }, { propertyName: "chipList", first: true, predicate: ["chipList"], descendants: true }, { propertyName: "virtualScrolling", first: true, predicate: ["virtualScrolling"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"eui-autocomplete__container\" matAutocompleteOrigin #origin=\"matAutocompleteOrigin\">\n <div class=\"eui-autocomplete__wrapper eui-autocomplete__wrapper--{{ chipsPosition }}\">\n <ng-template [ngIf]=\"chipsPosition === 'bottom'\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n\n <ng-container *ngIf=\"hasChips\">\n <eui-chip-list\n #chipList\n [chips]=\"chips\"\n [isGrid]=\"isChipsGrid\"\n [isChipsDragAndDrop]=\"isChipsDragAndDrop\"\n [isChipsRemovable]=\"isChipsRemovable && !readonly\"\n [isChipsSorted]=\"isChipsSorted\"\n [chipsSortOrder]=\"chipsSortOrder\"\n [maxVisibleChipsCount]=\"maxVisibleChipsCount\"\n [isMaxVisibleChipsOpened]=\"isMaxVisibleChipsOpened\"\n [toggleLinkMoreLabel]=\"toggleLinkMoreLabel\"\n [toggleLinkLessLabel]=\"toggleLinkLessLabel\"\n [chipsLabelTruncateCount]=\"chipsLabelTruncateCount\"\n [dragAndDropSourceName]=\"dragAndDropSourceName\"\n [dragAndDropConnectedTo]=\"dragAndDropConnectedTo\"\n (chipDropped)=\"onChipDropped($event)\"\n (chipDragStarted)=\"onChipDragStarted($event)\"\n (chipDragReleased)=\"onChipDragReleased($event)\"\n (chipRemove)=\"onChipRemove($event)\"\n (chiplistFocus)=\"onChipListFocus()\">\n <euiChipListAppendContent>\n <ng-template [ngIf]=\"chipsPosition === 'inside'\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n </euiChipListAppendContent>\n </eui-chip-list>\n </ng-container>\n\n <ng-template [ngIf]=\"chipsPosition === 'top' || !hasChips\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n\n <ng-template #field>\n <span class=\"eui-autocomplete__field-wrapper\">\n <ng-container *ngIf=\"!hasChips\">\n <input\n [euiClearable]=\"!readonly && !isLoading && !isDisabled\"\n [euiLoading]=\"isLoading\"\n euiInputText\n #autocompleteInput\n #autocompleteInputTrigger\n placeholder=\"{{ placeholder }}\"\n [matAutocompleteDisabled]=\"readonly\"\n [formControl]=\"autocompleteControl\"\n [matAutocomplete]=\"auto\"\n [readonly]=\"readonly\"\n [attr.aria-label]=\"placeholder ? placeholder : 'Autocomplete Input Field'\"\n (clear)=\"onClear()\"\n (focusout)=\"onFocusOut()\"\n (focus)=\"onFocus()\"\n role=\"combobox\"\n aria-autocomplete=\"both\"\n aria-haspopup=\"true\"\n aria-controls=\"autocompleteId\" />\n </ng-container>\n <ng-container *ngIf=\"hasChips\">\n <input\n [euiClearable]=\"!readonly && !isLoading && !isDisabled\"\n [euiLoading]=\"isLoading\"\n euiInputText\n #autocompleteInput\n #autocompleteInputTrigger\n placeholder=\"{{ placeholder }}\"\n [matAutocompleteDisabled]=\"readonly\"\n [formControl]=\"autocompleteControl\"\n [matAutocomplete]=\"auto\"\n [matAutocompleteConnectedTo]=\"chipsPosition === 'inside' ? origin : null\"\n [readonly]=\"readonly\"\n [attr.aria-label]=\"placeholder ? placeholder : 'Autocomplete Input Field'\"\n (clear)=\"onClear()\"\n (focusout)=\"onFocusOut(); addOnBlurHandler($event)\"\n (focus)=\"onFocus()\"\n (keydown.enter)=\"addOnEnterHandler()\"\n (keydown.backspace)=\"onKeyDownBackspace()\"\n role=\"combobox\"\n aria-autocomplete=\"both\"\n aria-haspopup=\"true\"\n aria-controls=\"autocompleteId\" />\n </ng-container>\n\n <mat-autocomplete\n [id]=\"autocompleteId\"\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth === 'auto' ? null : panelWidth\"\n [class]=\"classList\"\n [autoActiveFirstOption]=\"autoActiveFirstOption\"\n (closed)=\"onClose()\"\n (opened)=\"onOpen()\"\n (optionSelected)=\"onOptionSelected($event)\">\n <ng-container *ngIf=\"groupBy\">\n <cdk-virtual-scroll-viewport\n #virtualScrolling\n itemSize=\"48\"\n minBufferPx=\"500\"\n maxBufferPx=\"750\"\n [style.min-height]=\"cdkVirtualScrollViewport + 'px'\">\n <ng-container *ngFor=\"let distinctOptionGroup of distinctOptionGroups\">\n <mat-optgroup\n [class.eui-autocomplete__optgroup--custom]=\"autocompleteOptGroupTemplate\"\n *ngIf=\"(groupedItems[distinctOptionGroup] | async).length > 0\"\n [label]=\"distinctOptionGroup\">\n <ng-container *ngIf=\"autocompleteOptGroupTemplate\">\n <div class=\"eui-autocomplete__optgroup--custom-optgroup-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptGroupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: distinctOptionGroup } }\"></ng-template>\n </div>\n </ng-container>\n <mat-option\n *ngFor=\"let groupedItem of groupedItems[distinctOptionGroup] | async; trackBy: trackByFn\"\n [disabled]=\"groupedItem.isDisabled\"\n [class]=\"\n groupedItem.typeClass\n ? 'mat-option eui-autocomplete__option eui-autocomplete__option--' + groupedItem.typeClass\n : 'mat-option eui-autocomplete__option'\n \"\n [class.eui-autocomplete__option--custom]=\"autocompleteOptionTemplate\"\n [value]=\"groupedItem\">\n <span *ngIf=\"groupedItem.iconClass\" class=\"{{ groupedItem.iconClass }}\"></span>\n <ng-container *ngIf=\"!autocompleteOptionTemplate\">\n {{ groupedItem.label }}\n </ng-container>\n <ng-container *ngIf=\"autocompleteOptionTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: groupedItem }\"></ng-template>\n </ng-container>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n <ng-container *ngIf=\"!groupBy\">\n <cdk-virtual-scroll-viewport\n #virtualScrolling\n [itemSize]=\"itemSize\"\n minBufferPx=\"500\"\n maxBufferPx=\"750\"\n [style.min-height]=\"cdkVirtualScrollViewport + 'px'\">\n <mat-option\n *cdkVirtualFor=\"let autocompleteOption of autocompleteOptions | async; let i = index; trackBy: trackByFn\"\n [disabled]=\"autocompleteOption.isDisabled\"\n [class]=\"\n autocompleteOption.typeClass\n ? 'mat-option eui-autocomplete__option eui-autocomplete__option--' + autocompleteOption.typeClass\n : 'mat-option eui-autocomplete__option'\n \"\n [class.eui-autocomplete__option--custom]=\"autocompleteOptionTemplate\"\n [class.mat-mdc-option-active]=\"i === selectedOptionIndex\"\n [class.mdc-list-item--selected]=\"false\"\n [value]=\"autocompleteOption\">\n <span *ngIf=\"autocompleteOption.iconClass\" class=\"{{ autocompleteOption.iconClass }}\"></span>\n <ng-container *ngIf=\"!autocompleteOptionTemplate\">{{ autocompleteOption.label }}</ng-container>\n <ng-container *ngIf=\"autocompleteOptionTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: autocompleteOption }\"></ng-template>\n </ng-container>\n </mat-option>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n </mat-autocomplete>\n </span>\n </ng-template>\n </div>\n</div>\n", styles: [".eui-autocomplete{--eui-autocomplete-input-width: var(--eui-base-spacing-3xl);width:100%}.eui-autocomplete__container .eui-autocomplete__field-wrapper{display:flex;position:relative;width:100%}.eui-autocomplete__container .eui-autocomplete__field-wrapper input{min-width:var(--eui-autocomplete-input-width)}.eui-autocomplete--no-max-height{max-height:none!important}.eui-autocomplete__option{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);border-left:var(--eui-border-state-width) solid transparent;display:flex;height:auto!important;min-height:var(--eui-base-spacing-3xl)!important}.eui-autocomplete__option .eui-icon,.eui-autocomplete__option .eui-icon-svg,.eui-autocomplete__option .eui-flag-icon{margin-right:var(--eui-base-spacing-xs)}.eui-autocomplete__option .mat-pseudo-checkbox-checked,.eui-autocomplete__option .mat-pseudo-checkbox-indeterminate,.eui-autocomplete__option .mat-accent .mat-pseudo-checkbox-checked,.eui-autocomplete__option .mat-accent .mat-pseudo-checkbox-indeterminate{background:transparent}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-input-text{border:0}.eui-autocomplete .eui-autocomplete__wrapper--inside euichiplistappendcontent{display:inline-flex;flex-grow:1}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-chip-list-container{width:100%}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-chip-list-container .eui-chip-list__list{flex-wrap:inherit!important;width:100%}.eui-autocomplete--has-chips .eui-input-text[readonly]{display:none}.mat-mdc-autocomplete-panel{padding:0!important}.mat-mdc-autocomplete-panel .mat-mdc-optgroup-label{align-items:center;background-color:var(--eui-base-color-grey-10);color:var(--eui-base-color-grey-80);display:flex;font-family:var(--eui-base-font-family);font-size:var(--eui-base-font-size);font-weight:700;margin-bottom:0}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom .mat-mdc-optgroup-label{display:none}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom-optgroup-wrapper{align-items:center;background-color:var(--eui-base-color-grey-10);color:var(--eui-base-color-grey-80);display:flex;font-size:var(--eui-base-font-size);font-weight:700;height:auto;line-height:var(--eui-base-spacing-3xl);min-height:var(--eui-base-spacing-3xl);padding:0 var(--eui-base-spacing-s)}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom-optgroup-wrapper .eui-icon{margin-right:var(--eui-base-spacing-2xs)}.mat-mdc-autocomplete-panel .mdc-list-item--selected{background:none!important}.mat-mdc-autocomplete-panel .mdc-list-item--selected:hover{background:rgba(0,0,0,.04)!important}.mat-mdc-autocomplete-panel .mdc-list-item--selected .mdc-list-item__primary-text{color:inherit!important}.eui-autocomplete--primary input{background-color:var(--eui-base-color-primary-10)}.eui-autocomplete--secondary input{background-color:var(--eui-base-color-grey-10)}.eui-autocomplete--info input{background-color:var(--eui-base-color-info-10)}.eui-autocomplete--success input{background-color:var(--eui-base-color-success-10)}.eui-autocomplete--warning input{background-color:var(--eui-base-color-warning-10)}.eui-autocomplete--danger input{background-color:var(--eui-base-color-danger-10)}.eui-autocomplete--accent input{background-color:var(--eui-base-color-accent-10)}.eui-autocomplete__wrapper--bottom .eui-autocomplete__field-wrapper{display:block;margin-bottom:var(--eui-base-spacing-2xs)}.eui-autocomplete__wrapper--inside{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);padding:var(--eui-base-spacing-2xs) var(--eui-base-spacing-2xs) 0 var(--eui-base-spacing-2xs)}.eui-autocomplete__wrapper--inside .mat-chip-list .mat-chip-list-wrapper,.eui-autocomplete__wrapper--inside .mat-chip-list .mat-standard-chip{align-items:center;margin-bottom:0}.eui-autocomplete__wrapper--inside .mat-autocomplete-trigger{background:none;border:0}.eui-autocomplete__wrapper--inside .mat-autocomplete-trigger:focus{border:0;box-shadow:var(--eui-base-shadow-0)}.eui-autocomplete__option--primary{border-left-color:var(--eui-base-color-primary-100)}.eui-autocomplete__option--secondary{border-left-color:var(--eui-base-color-grey-25)}.eui-autocomplete__option--info{border-left-color:var(--eui-base-color-info-100)}.eui-autocomplete__option--success{border-left-color:var(--eui-base-color-success-100)}.eui-autocomplete__option--warning{border-left-color:var(--eui-base-color-warning-100)}.eui-autocomplete__option--danger{border-left-color:var(--eui-base-color-danger-100)}.eui-autocomplete__option--accent{border-left-color:var(--eui-base-color-accent-100)}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i6.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "directive", type: i5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i5.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "component", type: i7.EuiChipListComponent, selector: "eui-chip-list, div[euiChipList], ul[euiChipList]", inputs: ["chips", "toggleLinkMoreLabel", "toggleLinkLessLabel", "chipsSortOrder", "dragAndDropSourceName", "dragAndDropConnectedTo", "ariaLabel", "dropListOrientation", "isSquared", "isChipsRemovable", "maxVisibleChipsCount", "chipsLabelTruncateCount", "isMaxVisibleChipsOpened", "isChipsSorted", "isChipsDragAndDrop", "isGrid"], outputs: ["chipsInit", "chipRemove", "chipDragStarted", "chipDragReleased", "chipDropped", "chipDragStart", "chipDragRelease", "chipDrop", "chiplistFocus"] }, { kind: "directive", type: i7.EuiChipListAppendContentDirective, selector: "euiChipListAppendContent" }, { kind: "component", type: i8.EuiInputTextComponent, selector: "input[euiInputText]", inputs: ["class", "isInvalid"] }, { kind: "directive", type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
674
633
|
}
|
675
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-
|
634
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-rc.0", ngImport: i0, type: EuiAutocompleteComponent, decorators: [{
|
676
635
|
type: Component,
|
677
636
|
args: [{ selector: 'eui-autocomplete, input[euiAutocomplete]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"eui-autocomplete__container\" matAutocompleteOrigin #origin=\"matAutocompleteOrigin\">\n <div class=\"eui-autocomplete__wrapper eui-autocomplete__wrapper--{{ chipsPosition }}\">\n <ng-template [ngIf]=\"chipsPosition === 'bottom'\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n\n <ng-container *ngIf=\"hasChips\">\n <eui-chip-list\n #chipList\n [chips]=\"chips\"\n [isGrid]=\"isChipsGrid\"\n [isChipsDragAndDrop]=\"isChipsDragAndDrop\"\n [isChipsRemovable]=\"isChipsRemovable && !readonly\"\n [isChipsSorted]=\"isChipsSorted\"\n [chipsSortOrder]=\"chipsSortOrder\"\n [maxVisibleChipsCount]=\"maxVisibleChipsCount\"\n [isMaxVisibleChipsOpened]=\"isMaxVisibleChipsOpened\"\n [toggleLinkMoreLabel]=\"toggleLinkMoreLabel\"\n [toggleLinkLessLabel]=\"toggleLinkLessLabel\"\n [chipsLabelTruncateCount]=\"chipsLabelTruncateCount\"\n [dragAndDropSourceName]=\"dragAndDropSourceName\"\n [dragAndDropConnectedTo]=\"dragAndDropConnectedTo\"\n (chipDropped)=\"onChipDropped($event)\"\n (chipDragStarted)=\"onChipDragStarted($event)\"\n (chipDragReleased)=\"onChipDragReleased($event)\"\n (chipRemove)=\"onChipRemove($event)\"\n (chiplistFocus)=\"onChipListFocus()\">\n <euiChipListAppendContent>\n <ng-template [ngIf]=\"chipsPosition === 'inside'\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n </euiChipListAppendContent>\n </eui-chip-list>\n </ng-container>\n\n <ng-template [ngIf]=\"chipsPosition === 'top' || !hasChips\">\n <ng-container *ngTemplateOutlet=\"field\"></ng-container>\n </ng-template>\n\n <ng-template #field>\n <span class=\"eui-autocomplete__field-wrapper\">\n <ng-container *ngIf=\"!hasChips\">\n <input\n [euiClearable]=\"!readonly && !isLoading && !isDisabled\"\n [euiLoading]=\"isLoading\"\n euiInputText\n #autocompleteInput\n #autocompleteInputTrigger\n placeholder=\"{{ placeholder }}\"\n [matAutocompleteDisabled]=\"readonly\"\n [formControl]=\"autocompleteControl\"\n [matAutocomplete]=\"auto\"\n [readonly]=\"readonly\"\n [attr.aria-label]=\"placeholder ? placeholder : 'Autocomplete Input Field'\"\n (clear)=\"onClear()\"\n (focusout)=\"onFocusOut()\"\n (focus)=\"onFocus()\"\n role=\"combobox\"\n aria-autocomplete=\"both\"\n aria-haspopup=\"true\"\n aria-controls=\"autocompleteId\" />\n </ng-container>\n <ng-container *ngIf=\"hasChips\">\n <input\n [euiClearable]=\"!readonly && !isLoading && !isDisabled\"\n [euiLoading]=\"isLoading\"\n euiInputText\n #autocompleteInput\n #autocompleteInputTrigger\n placeholder=\"{{ placeholder }}\"\n [matAutocompleteDisabled]=\"readonly\"\n [formControl]=\"autocompleteControl\"\n [matAutocomplete]=\"auto\"\n [matAutocompleteConnectedTo]=\"chipsPosition === 'inside' ? origin : null\"\n [readonly]=\"readonly\"\n [attr.aria-label]=\"placeholder ? placeholder : 'Autocomplete Input Field'\"\n (clear)=\"onClear()\"\n (focusout)=\"onFocusOut(); addOnBlurHandler($event)\"\n (focus)=\"onFocus()\"\n (keydown.enter)=\"addOnEnterHandler()\"\n (keydown.backspace)=\"onKeyDownBackspace()\"\n role=\"combobox\"\n aria-autocomplete=\"both\"\n aria-haspopup=\"true\"\n aria-controls=\"autocompleteId\" />\n </ng-container>\n\n <mat-autocomplete\n [id]=\"autocompleteId\"\n #auto=\"matAutocomplete\"\n [panelWidth]=\"panelWidth === 'auto' ? null : panelWidth\"\n [class]=\"classList\"\n [autoActiveFirstOption]=\"autoActiveFirstOption\"\n (closed)=\"onClose()\"\n (opened)=\"onOpen()\"\n (optionSelected)=\"onOptionSelected($event)\">\n <ng-container *ngIf=\"groupBy\">\n <cdk-virtual-scroll-viewport\n #virtualScrolling\n itemSize=\"48\"\n minBufferPx=\"500\"\n maxBufferPx=\"750\"\n [style.min-height]=\"cdkVirtualScrollViewport + 'px'\">\n <ng-container *ngFor=\"let distinctOptionGroup of distinctOptionGroups\">\n <mat-optgroup\n [class.eui-autocomplete__optgroup--custom]=\"autocompleteOptGroupTemplate\"\n *ngIf=\"(groupedItems[distinctOptionGroup] | async).length > 0\"\n [label]=\"distinctOptionGroup\">\n <ng-container *ngIf=\"autocompleteOptGroupTemplate\">\n <div class=\"eui-autocomplete__optgroup--custom-optgroup-wrapper\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptGroupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { label: distinctOptionGroup } }\"></ng-template>\n </div>\n </ng-container>\n <mat-option\n *ngFor=\"let groupedItem of groupedItems[distinctOptionGroup] | async; trackBy: trackByFn\"\n [disabled]=\"groupedItem.isDisabled\"\n [class]=\"\n groupedItem.typeClass\n ? 'mat-option eui-autocomplete__option eui-autocomplete__option--' + groupedItem.typeClass\n : 'mat-option eui-autocomplete__option'\n \"\n [class.eui-autocomplete__option--custom]=\"autocompleteOptionTemplate\"\n [value]=\"groupedItem\">\n <span *ngIf=\"groupedItem.iconClass\" class=\"{{ groupedItem.iconClass }}\"></span>\n <ng-container *ngIf=\"!autocompleteOptionTemplate\">\n {{ groupedItem.label }}\n </ng-container>\n <ng-container *ngIf=\"autocompleteOptionTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: groupedItem }\"></ng-template>\n </ng-container>\n </mat-option>\n </mat-optgroup>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n <ng-container *ngIf=\"!groupBy\">\n <cdk-virtual-scroll-viewport\n #virtualScrolling\n [itemSize]=\"itemSize\"\n minBufferPx=\"500\"\n maxBufferPx=\"750\"\n [style.min-height]=\"cdkVirtualScrollViewport + 'px'\">\n <mat-option\n *cdkVirtualFor=\"let autocompleteOption of autocompleteOptions | async; let i = index; trackBy: trackByFn\"\n [disabled]=\"autocompleteOption.isDisabled\"\n [class]=\"\n autocompleteOption.typeClass\n ? 'mat-option eui-autocomplete__option eui-autocomplete__option--' + autocompleteOption.typeClass\n : 'mat-option eui-autocomplete__option'\n \"\n [class.eui-autocomplete__option--custom]=\"autocompleteOptionTemplate\"\n [class.mat-mdc-option-active]=\"i === selectedOptionIndex\"\n [class.mdc-list-item--selected]=\"false\"\n [value]=\"autocompleteOption\">\n <span *ngIf=\"autocompleteOption.iconClass\" class=\"{{ autocompleteOption.iconClass }}\"></span>\n <ng-container *ngIf=\"!autocompleteOptionTemplate\">{{ autocompleteOption.label }}</ng-container>\n <ng-container *ngIf=\"autocompleteOptionTemplate\">\n <ng-template\n [ngTemplateOutlet]=\"autocompleteOptionTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: autocompleteOption }\"></ng-template>\n </ng-container>\n </mat-option>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n </mat-autocomplete>\n </span>\n </ng-template>\n </div>\n</div>\n", styles: [".eui-autocomplete{--eui-autocomplete-input-width: var(--eui-base-spacing-3xl);width:100%}.eui-autocomplete__container .eui-autocomplete__field-wrapper{display:flex;position:relative;width:100%}.eui-autocomplete__container .eui-autocomplete__field-wrapper input{min-width:var(--eui-autocomplete-input-width)}.eui-autocomplete--no-max-height{max-height:none!important}.eui-autocomplete__option{align-items:center;border-bottom:1px solid var(--eui-base-color-grey-10);border-left:var(--eui-border-state-width) solid transparent;display:flex;height:auto!important;min-height:var(--eui-base-spacing-3xl)!important}.eui-autocomplete__option .eui-icon,.eui-autocomplete__option .eui-icon-svg,.eui-autocomplete__option .eui-flag-icon{margin-right:var(--eui-base-spacing-xs)}.eui-autocomplete__option .mat-pseudo-checkbox-checked,.eui-autocomplete__option .mat-pseudo-checkbox-indeterminate,.eui-autocomplete__option .mat-accent .mat-pseudo-checkbox-checked,.eui-autocomplete__option .mat-accent .mat-pseudo-checkbox-indeterminate{background:transparent}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-input-text{border:0}.eui-autocomplete .eui-autocomplete__wrapper--inside euichiplistappendcontent{display:inline-flex;flex-grow:1}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-chip-list-container{width:100%}.eui-autocomplete .eui-autocomplete__wrapper--inside .eui-chip-list-container .eui-chip-list__list{flex-wrap:inherit!important;width:100%}.eui-autocomplete--has-chips .eui-input-text[readonly]{display:none}.mat-mdc-autocomplete-panel{padding:0!important}.mat-mdc-autocomplete-panel .mat-mdc-optgroup-label{align-items:center;background-color:var(--eui-base-color-grey-10);color:var(--eui-base-color-grey-80);display:flex;font-family:var(--eui-base-font-family);font-size:var(--eui-base-font-size);font-weight:700;margin-bottom:0}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom .mat-mdc-optgroup-label{display:none}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom-optgroup-wrapper{align-items:center;background-color:var(--eui-base-color-grey-10);color:var(--eui-base-color-grey-80);display:flex;font-size:var(--eui-base-font-size);font-weight:700;height:auto;line-height:var(--eui-base-spacing-3xl);min-height:var(--eui-base-spacing-3xl);padding:0 var(--eui-base-spacing-s)}.mat-mdc-autocomplete-panel .eui-autocomplete__optgroup--custom-optgroup-wrapper .eui-icon{margin-right:var(--eui-base-spacing-2xs)}.mat-mdc-autocomplete-panel .mdc-list-item--selected{background:none!important}.mat-mdc-autocomplete-panel .mdc-list-item--selected:hover{background:rgba(0,0,0,.04)!important}.mat-mdc-autocomplete-panel .mdc-list-item--selected .mdc-list-item__primary-text{color:inherit!important}.eui-autocomplete--primary input{background-color:var(--eui-base-color-primary-10)}.eui-autocomplete--secondary input{background-color:var(--eui-base-color-grey-10)}.eui-autocomplete--info input{background-color:var(--eui-base-color-info-10)}.eui-autocomplete--success input{background-color:var(--eui-base-color-success-10)}.eui-autocomplete--warning input{background-color:var(--eui-base-color-warning-10)}.eui-autocomplete--danger input{background-color:var(--eui-base-color-danger-10)}.eui-autocomplete--accent input{background-color:var(--eui-base-color-accent-10)}.eui-autocomplete__wrapper--bottom .eui-autocomplete__field-wrapper{display:block;margin-bottom:var(--eui-base-spacing-2xs)}.eui-autocomplete__wrapper--inside{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-50);border-radius:var(--eui-base-border-radius);padding:var(--eui-base-spacing-2xs) var(--eui-base-spacing-2xs) 0 var(--eui-base-spacing-2xs)}.eui-autocomplete__wrapper--inside .mat-chip-list .mat-chip-list-wrapper,.eui-autocomplete__wrapper--inside .mat-chip-list .mat-standard-chip{align-items:center;margin-bottom:0}.eui-autocomplete__wrapper--inside .mat-autocomplete-trigger{background:none;border:0}.eui-autocomplete__wrapper--inside .mat-autocomplete-trigger:focus{border:0;box-shadow:var(--eui-base-shadow-0)}.eui-autocomplete__option--primary{border-left-color:var(--eui-base-color-primary-100)}.eui-autocomplete__option--secondary{border-left-color:var(--eui-base-color-grey-25)}.eui-autocomplete__option--info{border-left-color:var(--eui-base-color-info-100)}.eui-autocomplete__option--success{border-left-color:var(--eui-base-color-success-100)}.eui-autocomplete__option--warning{border-left-color:var(--eui-base-color-warning-100)}.eui-autocomplete__option--danger{border-left-color:var(--eui-base-color-danger-100)}.eui-autocomplete__option--accent{border-left-color:var(--eui-base-color-accent-100)}\n"] }]
|
678
637
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{
|
@@ -709,32 +668,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.7",
|
|
709
668
|
type: Input
|
710
669
|
}], dragAndDropConnectedTo: [{
|
711
670
|
type: Input
|
712
|
-
}], closed: [{
|
713
|
-
type: Output
|
714
|
-
}], opened: [{
|
715
|
-
type: Output
|
716
|
-
}], selectionChanged: [{
|
717
|
-
type: Output
|
718
|
-
}], itemAdded: [{
|
719
|
-
type: Output
|
720
|
-
}], itemRemoved: [{
|
721
|
-
type: Output
|
722
|
-
}], inputChanged: [{
|
723
|
-
type: Output
|
724
|
-
}], chipDragStarted: [{
|
725
|
-
type: Output
|
726
|
-
}], chipDragReleased: [{
|
727
|
-
type: Output
|
728
|
-
}], chipDropped: [{
|
729
|
-
type: Output
|
730
671
|
}], clear: [{
|
731
672
|
type: Output
|
732
673
|
}], close: [{
|
733
674
|
type: Output
|
675
|
+
}], panelClose: [{
|
676
|
+
type: Output
|
734
677
|
}], open: [{
|
735
678
|
type: Output
|
679
|
+
}], panelOpen: [{
|
680
|
+
type: Output
|
736
681
|
}], blur: [{
|
737
682
|
type: Output
|
683
|
+
}], inputBlur: [{
|
684
|
+
type: Output
|
738
685
|
}], selectionChange: [{
|
739
686
|
type: Output
|
740
687
|
}], itemAdd: [{
|
@@ -805,4 +752,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.7",
|
|
805
752
|
}], autoActiveFirstOption: [{
|
806
753
|
type: Input
|
807
754
|
}] } });
|
808
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktYXV0b2NvbXBsZXRlL2V1aS1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWF1dG9jb21wbGV0ZS9ldWktYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFHakIsVUFBVSxFQUNWLFNBQVMsRUFHVCxNQUFNLEVBQ04sWUFBWSxFQUtaLGVBQWUsRUFDZixXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFtQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRyxPQUFPLEVBQWlELHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHdkgsT0FBTyxFQUFzQixRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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RixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBU0YsdUJBQXVCO3NCQUQxQixLQUFLO2dCQVNGLFNBQVM7c0JBRFosS0FBSztnQkFTRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBU0Ysb0JBQW9CO3NCQUR2QixLQUFLO2dCQVNGLHVCQUF1QjtzQkFEMUIsS0FBSztnQkFTRix1QkFBdUI7c0JBRDFCLEtBQUs7Z0JBU0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBU0YsYUFBYTtzQkFEaEIsS0FBSztnQkFTRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBU0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVNGLHFCQUFxQjtzQkFEeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgRWxlbWVudFJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgT25DaGFuZ2VzLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgU2VsZixcbiAgICBPcHRpb25hbCxcbiAgICBEb0NoZWNrLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgQm9vbGVhbklucHV0LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBDT01NQSwgRU5URVIgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgc2tpcCwgc3RhcnRXaXRoLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSwgU2Nyb2xsRGlzcGF0Y2hlciwgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5cbmltcG9ydCB7IEV1aUFwcFNoZWxsU2VydmljZSwgdW5pcXVlSWQgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgRXVpQ2hpcCwgRXVpQ2hpcFRvb2x0aXAgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWNoaXAnO1xuaW1wb3J0IHsgRXVpQ2hpcERyYWdEcm9wLCBFdWlDaGlwTGlzdENvbXBvbmVudCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktY2hpcC1saXN0JztcbmltcG9ydCB7IEV1aVRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQmFzZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9zaGFyZWQnO1xuXG5pbXBvcnQgeyBFdWlBdXRvQ29tcGxldGVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvZXVpLWF1dG9jb21wbGV0ZS1pdGVtLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aS1hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHNlbGVjdG9yOiAnZXVpLWF1dG9jb21wbGV0ZSwgaW5wdXRbZXVpQXV0b2NvbXBsZXRlXScsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpQXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gICAgZXh0ZW5kcyBCYXNlRGlyZWN0aXZlXG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgRG9DaGVjayB7XG4gICAgQElucHV0KCkgdG9nZ2xlTGlua01vcmVMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSB0b2dnbGVMaW5rTGVzc0xhYmVsOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpIGF1dG9jb21wbGV0ZURhdGE6IEV1aUF1dG9Db21wbGV0ZUl0ZW1bXSA9IFtdO1xuICAgIEBJbnB1dCgpIGF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZDogRXVpQXV0b0NvbXBsZXRlSXRlbVtdID0gW107XG4gICAgQElucHV0KCkgY2hpcHNTb3J0T3JkZXI6ICdBU0MnIHwgJ0RFU0MnID0gJ0FTQyc7XG4gICAgQElucHV0KCkgaXRlbXNTb3J0T3JkZXI6ICdBU0MnIHwgJ0RFU0MnID0gJ0FTQyc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcbiAgICBASW5wdXQoKSBtYXRjaGluZzogJ3N0YXJ0V2l0aCcgfCAnY29udGFpbnMnID0gJ2NvbnRhaW5zJztcbiAgICBASW5wdXQoKSBjaGlwc1Bvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nIHwgJ2luc2lkZScgPSAndG9wJztcbiAgICBASW5wdXQoKSBwYW5lbFdpZHRoOiBzdHJpbmcgfCBudW1iZXI7XG4gICAgQElucHV0KCkgdmlzaWJsZU9wdGlvbnMgPSA1O1xuICAgIEBJbnB1dCgpIGNsYXNzTGlzdDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGdyb3VwQnk6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcFNvdXJjZU5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBkcmFnQW5kRHJvcENvbm5lY3RlZFRvOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLyoqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgdmVyc2lvbiBvZiBldWkgKi9cbiAgICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8qKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24gb2YgZXVpICovXG4gICAgQE91dHB1dCgpIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gbmV4dCB2ZXJzaW9uIG9mIGV1aSAqL1xuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlBdXRvQ29tcGxldGVJdGVtW10+KCk7XG4gICAgLyoqIEBkZXByZWNhdGVkIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIG5leHQgdmVyc2lvbiBvZiBldWkgKi9cbiAgICBAT3V0cHV0KCkgaXRlbUFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlBdXRvQ29tcGxldGVJdGVtPigpO1xuICAgIC8qKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24gb2YgZXVpICovXG4gICAgQE91dHB1dCgpIGl0ZW1SZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlBdXRvQ29tcGxldGVJdGVtPigpO1xuICAgIC8qKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24gb2YgZXVpICovXG4gICAgQE91dHB1dCgpIGlucHV0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIC8qKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24gb2YgZXVpICovXG4gICAgQE91dHB1dCgpIGNoaXBEcmFnU3RhcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIC8qKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24gb2YgZXVpICovXG4gICAgQE91dHB1dCgpIGNoaXBEcmFnUmVsZWFzZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gbmV4dCB2ZXJzaW9uIG9mIGV1aSAqL1xuICAgIEBPdXRwdXQoKSBjaGlwRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIC8vIGV1aUlucHV0VGV4dCBkb2VzIG5vdCBzZW5kIGV2ZW50IHdoZW4gdGhlIHRoZSBmaWVsZCBpcyBjbGVhcmVkXG4gICAgQE91dHB1dCgpIGNsZWFyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSBvcGVuID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICAgIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUF1dG9Db21wbGV0ZUl0ZW1bXT4oKTtcbiAgICBAT3V0cHV0KCkgaXRlbUFkZCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQXV0b0NvbXBsZXRlSXRlbT4oKTtcbiAgICBAT3V0cHV0KCkgaXRlbVJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQXV0b0NvbXBsZXRlSXRlbT4oKTtcbiAgICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcERyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8RXVpQ2hpcERyYWdEcm9wPigpO1xuICAgIEBPdXRwdXQoKSBjaGlwRHJhZ1JlbGVhc2UgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcERyb3AgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbdGhpcy5oYXNDaGlwcyA/IGBldWktYXV0b2NvbXBsZXRlLS1oYXMtY2hpcHNgIDogYGAsIHN1cGVyLmdldENzc0NsYXNzZXMoJ2V1aS1hdXRvY29tcGxldGUnKV0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkcmVuKEV1aVRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxFdWlUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBhdXRvY29tcGxldGVJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGVJbnB1dFRyaWdnZXInLCB7IHJlYWQ6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIgfSkgYXV0b2NvbXBsZXRlSW5wdXRUcmlnZ2VyOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyO1xuICAgIEBWaWV3Q2hpbGQoJ2F1dG8nKSBtYXRBdXRvY29tcGxldGU6IE1hdEF1dG9jb21wbGV0ZTtcbiAgICBAVmlld0NoaWxkKCdjaGlwTGlzdCcpIGNoaXBMaXN0OiBFdWlDaGlwTGlzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCd2aXJ0dWFsU2Nyb2xsaW5nJykgdmlydHVhbFNjcm9sbGluZzogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgcHVibGljIGF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogeyBsYWJlbDogc3RyaW5nIH0gfT47XG4gICAgcHVibGljIGF1dG9jb21wbGV0ZU9wdEdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiB7IGxhYmVsOiBzdHJpbmcgfSB9PjtcbiAgICBwdWJsaWMgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xuICAgIHB1YmxpYyBhdXRvY29tcGxldGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgcHVibGljIGF1dG9jb21wbGV0ZU9wdGlvbnM6IEJlaGF2aW9yU3ViamVjdDxFdWlBdXRvQ29tcGxldGVJdGVtW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFdWlBdXRvQ29tcGxldGVJdGVtW10+KHRoaXMuYXV0b2NvbXBsZXRlRGF0YSk7XG4gICAgcHVibGljIGNoaXBzOiBFdWlDaGlwW10gPSBbXTtcbiAgICBwdWJsaWMgZGlzdGluY3RPcHRpb25Hcm91cHM6IHN0cmluZ1tdO1xuICAgIHB1YmxpYyBncm91cGVkSXRlbXM6IHsgW2lkOiBzdHJpbmddOiBPYnNlcnZhYmxlPEV1aUF1dG9Db21wbGV0ZUl0ZW1bXT4gfTtcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlSWQgPSBgZXVpLWF1dG9jb21wbGV0ZS0ke3VuaXF1ZUlkKCl9YDtcbiAgICBwdWJsaWMgaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIHB1YmxpYyBzZWxlY3RlZE9wdGlvbkluZGV4ID0gLTE7XG4gICAgcHVibGljIGl0ZW1TaXplID0gJzQ4JztcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc0NoaXBzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzQ2hpcHM7XG4gICAgfVxuICAgIHNldCBoYXNDaGlwcyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc0NoaXBzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGFzQ2hpcHMgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0dyaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0dyaWQ7XG4gICAgfVxuICAgIHNldCBpc0dyaWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0dyaWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0dyaWQgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGFzeW5jKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXN5bmM7XG4gICAgfVxuICAgIHNldCBhc3luYyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2FzeW5jID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfYXN5bmMgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBhZGRPbkJsdXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRPbkJsdXI7XG4gICAgfVxuICAgIHNldCBhZGRPbkJsdXIodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9hZGRPbkJsdXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9hZGRPbkJsdXIgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0ZyZWVWYWx1ZUFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0ZyZWVWYWx1ZUFsbG93ZWQ7XG4gICAgfVxuICAgIHNldCBpc0ZyZWVWYWx1ZUFsbG93ZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0ZyZWVWYWx1ZUFsbG93ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0ZyZWVWYWx1ZUFsbG93ZWQgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzRHVwbGljYXRlVmFsdWVBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNEdXBsaWNhdGVWYWx1ZUFsbG93ZWQ7XG4gICAgfVxuICAgIHNldCBpc0R1cGxpY2F0ZVZhbHVlQWxsb3dlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzRHVwbGljYXRlVmFsdWVBbGxvd2VkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNEdXBsaWNhdGVWYWx1ZUFsbG93ZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gICAgfVxuICAgIHNldCBpc0xvYWRpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0xvYWRpbmcgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0NoaXBzUmVtb3ZhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDaGlwc1JlbW92YWJsZTtcbiAgICB9XG4gICAgc2V0IGlzQ2hpcHNSZW1vdmFibGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0NoaXBzUmVtb3ZhYmxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNDaGlwc1JlbW92YWJsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBnZXQgbWF4VmlzaWJsZUNoaXBzQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFZpc2libGVDaGlwc0NvdW50O1xuICAgIH1cbiAgICBzZXQgbWF4VmlzaWJsZUNoaXBzQ291bnQodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIHRoaXMuX21heFZpc2libGVDaGlwc0NvdW50ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9tYXhWaXNpYmxlQ2hpcHNDb3VudCA9IG51bGw7XG4gICAgQElucHV0KClcbiAgICBnZXQgY2hpcHNMYWJlbFRydW5jYXRlQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoaXBzTGFiZWxUcnVuY2F0ZUNvdW50O1xuICAgIH1cbiAgICBzZXQgY2hpcHNMYWJlbFRydW5jYXRlQ291bnQodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgICAgIHRoaXMuX2NoaXBzTGFiZWxUcnVuY2F0ZUNvdW50ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCA9IG51bGw7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc01heFZpc2libGVDaGlwc09wZW5lZDtcbiAgICB9XG4gICAgc2V0IGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc01heFZpc2libGVDaGlwc09wZW5lZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlYWRvbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gICAgfVxuICAgIHNldCByZWFkb25seSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3JlYWRvbmx5ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfcmVhZG9ubHkgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0NoaXBzU29ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDaGlwc1NvcnRlZDtcbiAgICB9XG4gICAgc2V0IGlzQ2hpcHNTb3J0ZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0NoaXBzU29ydGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNDaGlwc1NvcnRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzSXRlbXNTb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0l0ZW1zU29ydGVkO1xuICAgIH1cbiAgICBzZXQgaXNJdGVtc1NvcnRlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzSXRlbXNTb3J0ZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0l0ZW1zU29ydGVkID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDaGlwc0RyYWdBbmREcm9wKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDaGlwc0RyYWdBbmREcm9wO1xuICAgIH1cbiAgICBzZXQgaXNDaGlwc0RyYWdBbmREcm9wKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDaGlwc0RyYWdBbmREcm9wID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNDaGlwc0RyYWdBbmREcm9wID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNGb3JjZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRm9yY2VTZWxlY3Rpb247XG4gICAgfVxuICAgIHNldCBpc0ZvcmNlU2VsZWN0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNGb3JjZVNlbGVjdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzRm9yY2VTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBhdXRvQWN0aXZlRmlyc3RPcHRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb247XG4gICAgfVxuICAgIHNldCBhdXRvQWN0aXZlRmlyc3RPcHRpb24odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9hdXRvQWN0aXZlRmlyc3RPcHRpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9hdXRvQWN0aXZlRmlyc3RPcHRpb24gPSB0cnVlO1xuXG4gICAgZ2V0IGlzQ2hpcHNHcmlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNHcmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNDaGlwc0RyYWdBbmREcm9wICYmIHRoaXMuZHJhZ0FuZERyb3BDb25uZWN0ZWRUby5sZW5ndGggPT09IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNHcmlkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBuYkNsaWNrID0gMDtcbiAgICBwcml2YXRlIGlnbm9yZU9wZW5DbG9zZUV2ZW50cyA9IGZhbHNlO1xuICAgIHByaXZhdGUgdmFsdWU6IEV1aUF1dG9Db21wbGV0ZUl0ZW0gfCBFdWlBdXRvQ29tcGxldGVJdGVtW10gPSBudWxsO1xuICAgIHByaXZhdGUgZmllbGRWYWx1ZSA9IG51bGw7XG4gICAgcHJpdmF0ZSBzY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgIHByaXZhdGUga2V5Ym9hcmRPcHRpb25TZWxlY3RvckhhbmRsZXJTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgc2Nyb2xsRGlzcGF0Y2hlcjogU2Nyb2xsRGlzcGF0Y2hlcixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGFzU2VydmljZTogRXVpQXBwU2hlbGxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGMgJiYgYy5hdXRvY29tcGxldGVEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMubmV4dCh0aGlzLl9maWx0ZXIoJycpKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBCeSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBpbmdIYW5kbGVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyAmJiBjLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCAmJiB0aGlzLmhhc0NoaXBzKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA9IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLm1hcChcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpID0+IG5ldyBFdWlBdXRvQ29tcGxldGVJdGVtKE9iamVjdC5hc3NpZ24oe30sIHNlbGVjdGVkLCB7IGV1aUludGVybmFsSWQ6IHRoaXMuZ2VuZXJhdGVJZCgpIH0pKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm1hcEFzQ2hpcCgpO1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLm5leHQodGhpcy5fZmlsdGVyKCcnKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyAmJiBjLnZpc2libGVPcHRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmNsYXNzTGlzdCA9ICdldWktYXV0b2NvbXBsZXRlLS1uby1tYXgtaGVpZ2h0JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGFydCA9IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyBudWxsIDogdGhpcy52YWx1ZT8ubGFiZWw7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5uZXh0KHRoaXMuX2ZpbHRlcihzdGFydCkpO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBzdGFydFdpdGgoc3RhcnQpLCBza2lwKDEpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZUhhbmRsZXIodmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5ncm91cEJ5KSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwaW5nSGFuZGxlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3Vic2NyaWJlIHRvIENTUyB2YXJpYWJsZSBjaGFuZ2VzIGluIG9yZGVyIHRvIGFkYXB0IHRoZSBpdGVtU2l6ZSBvZiB0aGUgdmlydHVhbFNjcm9sbGluZ1xuICAgICAgICB0aGlzLmFzU2VydmljZVxuICAgICAgICAgICAgLmdldFN0YXRlKCdhcHBCYXNlRm9udFNpemUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoYmFzZUZvbnRTaXplOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1TaXplID0gdGhpcy5fY2FsY3VsYXRlTmV3SXRlbVNpemUoYmFzZUZvbnRTaXplKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRPRE86IFJlZmFjdG9yIG5nRG9DaGVjayB3aGVuIGV1aUlucHV0IFRleHQgd2lsbCByZWZhY3RvciB0aGlzIGhvb2tzXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wudG91Y2hlZCA/IHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5tYXJrQXNUb3VjaGVkKCkgOiB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wubWFya0FzVW50b3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuaW52YWxpZCA/IHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pIDogdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldEVycm9ycyhudWxsKTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09ICdkcm9wZG93bk9wdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2Ryb3Bkb3duT3B0R3JvdXAnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRHcm91cFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm1hcEFzQ2hpcCgpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgZ2V0IG5iT3B0aW9uc1Zpc2libGUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0IGNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy52aXNpYmxlT3B0aW9ucyAhPT0gNSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMgKiA0ODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMudmFsdWUubGVuZ3RoID49IHRoaXMubmJPcHRpb25zVmlzaWJsZSA/IDI0MCA6IHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy52YWx1ZS5sZW5ndGggKiA0ODtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGRPbkJsdXJIYW5kbGVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFkZE9uQmx1cikge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0OiBIVE1MRWxlbWVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoIXRhcmdldCB8fCB0YXJnZXQudGFnTmFtZSAhPT0gJ01BVC1PUFRJT04nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmF1dG9jb21wbGV0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQobmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE9uRW50ZXJIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgdGhpcy5hZGQobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGQobmV3VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0ZyZWVWYWx1ZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIGlmICgobmV3VmFsdWUgfHwgJycpLnRyaW0oKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kSXRlbSA9ICF0aGlzLmlzRHVwbGljYXRlVmFsdWVBbGxvd2VkXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQuZmluZCgoc2VsZWN0ZWRJdGVtKSA9PiBzZWxlY3RlZEl0ZW0ubGFiZWwudG9TdHJpbmcoKS50cmltKCkgPT09IG5ld1ZhbHVlLnRyaW0oKSlcbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmICghZm91bmRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLnB1c2gobmV3IEV1aUF1dG9Db21wbGV0ZUl0ZW0oeyBsYWJlbDogbmV3VmFsdWUudHJpbSgpIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMubWFwQXNDaGlwKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXRUcmlnZ2VyLmNsb3NlUGFuZWwoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdCh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1BZGRlZC5lbWl0KG5ldyBFdWlBdXRvQ29tcGxldGVJdGVtKHsgbGFiZWw6IG5ld1ZhbHVlLnRyaW0oKSB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUFkZC5lbWl0KG5ldyBFdWlBdXRvQ29tcGxldGVJdGVtKHsgbGFiZWw6IG5ld1ZhbHVlLnRyaW0oKSB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3B0aW9uU2VsZWN0ZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5vcHRpb24udmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWUubGFiZWw7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wuc2V0VmFsdWUodmFsdWUubGFiZWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhhc0NoaXBzKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMubmV4dCh0aGlzLl9maWx0ZXIoJycpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuaXRlbUFkZGVkLmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLml0ZW1BZGQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpcFJlbW92ZShlOiB7IGNoaXBzOiBFdWlDaGlwW107IHJlbW92ZWQ6IEV1aUNoaXAgfCB7IGNoaXA6IEV1aUNoaXA7IGV2ZW50OiBFdmVudCB9IH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXV0b2NvbXBsZXRlRGF0YVJlbW92ZWQgPSB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5maW5kKChkYXRhKSA9PlxuICAgICAgICAgICAgZS5yZW1vdmVkIGluc3RhbmNlb2YgRXVpQ2hpcFxuICAgICAgICAgICAgICAgID8gZGF0YS5ldWlJbnRlcm5hbElkID09PSBlLnJlbW92ZWQuZXVpSW50ZXJuYWxJZFxuICAgICAgICAgICAgICAgIDogZGF0YS5ldWlJbnRlcm5hbElkID09PSBlLnJlbW92ZWQuY2hpcC5ldWlJbnRlcm5hbElkLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkID0gdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQuZmlsdGVyKChkYXRhKSA9PlxuICAgICAgICAgICAgZS5yZW1vdmVkIGluc3RhbmNlb2YgRXVpQ2hpcFxuICAgICAgICAgICAgICAgID8gZGF0YS5ldWlJbnRlcm5hbElkICE9PSBlLnJlbW92ZWQuZXVpSW50ZXJuYWxJZFxuICAgICAgICAgICAgICAgIDogZGF0YS5ldWlJbnRlcm5hbElkICE9PSBlLnJlbW92ZWQuY2hpcC5ldWlJbnRlcm5hbElkLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghdGhpcy5pc0R1cGxpY2F0ZVZhbHVlQWxsb3dlZCkge1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLm5leHQoXG4gICAgICAgICAgICAgICAgdGhpcy5pc0l0ZW1zU29ydGVkID8gKHRoaXMub3JkZXJJdGVtcyh0aGlzLl9maWx0ZXIoJycpLCB0aGlzLml0ZW1zU29ydE9yZGVyKSBhcyBFdWlBdXRvQ29tcGxldGVJdGVtW10pIDogdGhpcy5fZmlsdGVyKCcnKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLmxlbmd0aCA+IDAgPyB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA6IG51bGwpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdCh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQpO1xuICAgICAgICB0aGlzLml0ZW1SZW1vdmVkLmVtaXQoYXV0b2NvbXBsZXRlRGF0YVJlbW92ZWQpO1xuICAgICAgICB0aGlzLml0ZW1SZW1vdmUuZW1pdChhdXRvY29tcGxldGVEYXRhUmVtb3ZlZCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICEoZS5yZW1vdmVkIGluc3RhbmNlb2YgRXVpQ2hpcCkgJiZcbiAgICAgICAgICAgIGUucmVtb3ZlZC5ldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiZcbiAgICAgICAgICAgIChlLnJlbW92ZWQuZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCkuY29kZSA9PT0gJ0JhY2tzcGFjZScgJiZcbiAgICAgICAgICAgIHRoaXMuY2hpcExpc3QuZXVpQ2hpcEl0ZW1zLmxlbmd0aCA+IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNoaXBMaXN0LmV1aUNoaXBJdGVtc1xuICAgICAgICAgICAgICAgIC5nZXQodGhpcy5jaGlwTGlzdC5ldWlDaGlwSXRlbXMubGVuZ3RoIC0gMilcbiAgICAgICAgICAgICAgICAubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZXVpLWNoaXBfX3JlbW92ZS1pY29uJylcbiAgICAgICAgICAgICAgICAuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAZGVwcmVjYXRlZCBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBlVUktMTQgKi9cbiAgICBwdWJsaWMgb25DbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5uYkNsaWNrID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubWF0QXV0b2NvbXBsZXRlLmlzT3BlbiA/IHRoaXMuYXV0b2NvbXBsZXRlSW5wdXRUcmlnZ2VyLmNsb3NlUGFuZWwoKSA6IHRoaXMuYXV0b2NvbXBsZXRlSW5wdXRUcmlnZ2VyLm9wZW5QYW5lbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5uYkNsaWNrICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQgVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gZVVJLTE0ICovXG4gICAgcHVibGljIHJlc2V0TmJDbGljayhlOiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghZS5yZWxhdGVkVGFyZ2V0IHx8IGUucmVsYXRlZFRhcmdldFsnY2xhc3NOYW1lJ10uaW5kZXhPZignbWF0LW9wdGlvbicpID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5uYkNsaWNrID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZvY3VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0ZvcmNlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25Gb2N1c091dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGb3JjZVNlbGVjdGlvbikge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgfSwgMjUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYmx1ci5lbWl0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgaWYgKCF0aGlzLmlnbm9yZU9wZW5DbG9zZUV2ZW50cykge1xuICAgICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsaW5nLnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleCA9IC0xO1xuICAgICAgICB0aGlzLmtleWJvYXJkT3B0aW9uU2VsZWN0b3JIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uT3BlbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uID0gdGhpcy5zY3JvbGxEaXNwYXRjaGVyXG4gICAgICAgICAgICAuYW5jZXN0b3JTY3JvbGxlZCh0aGlzLmF1dG9jb21wbGV0ZUlucHV0KVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IENka1Njcm9sbGFibGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxhYmxlUGFyZW50ID0gZXZlbnQgPyBldmVudC5nZXRFbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudCA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKTtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQubmF0aXZlRWxlbWVudCwgc2Nyb2xsYWJsZVBhcmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFRyaWdnZXIuY2xvc2VQYW5lbCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICBpZiAoIXRoaXMuaWdub3JlT3BlbkNsb3NlRXZlbnRzKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZC5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLm9wZW4uZW1pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZpc2libGVSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgbGV0IHZpc2libGVSYW5nZUVuZCA9IDQ7XG5cbiAgICAgICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy52YWx1ZS5sZW5ndGggPCB0aGlzLm5iT3B0aW9uc1Zpc2libGUpIHtcbiAgICAgICAgICAgIHZpc2libGVSYW5nZUVuZCA9IHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy52YWx1ZS5sZW5ndGggLSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5rZXlib2FyZE9wdGlvblNlbGVjdG9ySGFuZGxlclN1YnNjcmlwdGlvbiA9IGZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZTogS2V5Ym9hcmRFdmVudCkgPT4gZS5jb2RlID09PSAnQXJyb3dEb3duJyB8fCBlLmNvZGUgPT09ICdBcnJvd1VwJyksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuYXV0b0FjdGl2ZUZpcnN0T3B0aW9uID8geyBjb2RlOiAnQXJyb3dEb3duJyB9IDogbnVsbCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93RG93bicgJiYgdGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4IDwgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLnZhbHVlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93VXAnICYmIHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleC0tO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY0luZGV4ID0gdGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4IC0gdGhpcy52aXJ0dWFsU2Nyb2xsaW5nLmdldFJlbmRlcmVkUmFuZ2UoKS5zdGFydDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdEF1dG9jb21wbGV0ZS5fa2V5TWFuYWdlci5zZXRBY3RpdmVJdGVtKGNJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0QXV0b2NvbXBsZXRlLm9wdGlvbnMudG9BcnJheSgpW2NJbmRleF0/LnNldEFjdGl2ZVN0eWxlcygpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmNvZGUgPT09ICdBcnJvd0Rvd24nICYmIGNJbmRleCA+IHZpc2libGVSYW5nZUVuZCAtIHZpc2libGVSYW5nZVN0YXJ0IC0gdmlzaWJsZVJhbmdlRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4ID4gdmlzaWJsZVJhbmdlRW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsaW5nLnNjcm9sbFRvSW5kZXgodGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4IC0gdmlzaWJsZVJhbmdlRW5kICsgdmlzaWJsZVJhbmdlU3RhcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVSYW5nZVN0YXJ0Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVJhbmdlRW5kKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93VXAnICYmIGNJbmRleCA8IHZpc2libGVSYW5nZVN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4IDwgdmlzaWJsZVJhbmdlU3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxpbmcuc2Nyb2xsVG9JbmRleCh0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGVSYW5nZVN0YXJ0LS07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVJhbmdlRW5kLS07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogRXVpQXV0b0NvbXBsZXRlSXRlbSB8IEV1aUF1dG9Db21wbGV0ZUl0ZW1bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzQ2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkID0gdmFsdWUgPyAodmFsdWUgYXMgRXVpQXV0b0NvbXBsZXRlSXRlbVtdKSA6IFtdO1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQgPSB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5tYXAoXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkKSA9PiBuZXcgRXVpQXV0b0NvbXBsZXRlSXRlbShPYmplY3QuYXNzaWduKHt9LCBzZWxlY3RlZCwgeyBldWlJbnRlcm5hbElkOiB0aGlzLmdlbmVyYXRlSWQoKSB9KSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jaGlwcyA9IFsuLi50aGlzLm1hcEFzQ2hpcCgpXTtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5wYXRjaFZhbHVlKG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcblxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLm5leHQodGhpcy5fZmlsdGVyKCcnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wucGF0Y2hWYWx1ZSh2YWx1ZSA/ICh2YWx1ZSBhcyBFdWlBdXRvQ29tcGxldGVJdGVtKS5sYWJlbCA6IG51bGwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWx1ZSA9IHZhbHVlID8gKHZhbHVlIGFzIEV1aUF1dG9Db21wbGV0ZUl0ZW0pLmxhYmVsIDogbnVsbDtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5uZXh0KHRoaXMuX2ZpbHRlcih0aGlzLmZpZWxkVmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Rpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgaXNEaXNhYmxlZCA/IHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5kaXNhYmxlKCkgOiB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoID0gZm47XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpcERyb3BwZWQoZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkID0gZS5jaGlwcy5tYXAoKGM6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5maW5kKChhKSA9PiBhLmlkID09PSBjLmlkKTtcbiAgICAgICAgICAgIHJldHVybiBmb3VuZCA/IGZvdW5kIDogbmV3IEV1aUF1dG9Db21wbGV0ZUl0ZW0oeyAuLi5jLmRhdGEsIGV1aUludGVybmFsSWQ6IGMuZXVpSW50ZXJuYWxJZCB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMubWFwQXNDaGlwKCk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5uZXh0KHRoaXMuX2ZpbHRlcignJykpO1xuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQubGVuZ3RoID4gMCA/IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkIDogbnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCk7XG5cbiAgICAgICAgdGhpcy5jaGlwRHJvcHBlZC5lbWl0KGUpO1xuICAgICAgICB0aGlzLmNoaXBEcm9wLmVtaXQoZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpcERyYWdTdGFydGVkKGU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcmFnU3RhcnRlZC5lbWl0KGUpO1xuICAgICAgICB0aGlzLmNoaXBEcmFnU3RhcnQuZW1pdChlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGlwRHJhZ1JlbGVhc2VkKGU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLmNoaXBEcmFnUmVsZWFzZWQuZW1pdChlKTtcbiAgICAgICAgdGhpcy5jaGlwRHJhZ1JlbGVhc2UuZW1pdChlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhci5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpcExpc3RGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFRyaWdnZXIuY2xvc2VQYW5lbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbktleURvd25CYWNrc3BhY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNoaXBzUG9zaXRpb24gPT09ICdpbnNpZGUnICYmIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9PT0gJycgJiYgdGhpcy5jaGlwTGlzdC5ldWlDaGlwSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vbkNoaXBMaXN0Rm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2hpcExpc3QuZXVpQ2hpcEl0ZW1zLmxhc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZXVpLWNoaXBfX3JlbW92ZS1pY29uJykuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNWaXNpYmxlKG9yaWdpbjogSFRNTEVsZW1lbnQsIHNjcm9sbGFibGVQYXJlbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG9yaWdpblkgPSAob3JpZ2luIGFzIGFueSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZVBhcmVudFkgPSBNYXRoLmFicyhzY3JvbGxhYmxlUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnkpO1xuICAgICAgICBjb25zdCBzY3JvbGxhYmxlUGFyZW50SGVpZ2h0ID0gc2Nyb2xsYWJsZVBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgLSA1MDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKG9yaWdpblkgPiAwICYmIG9yaWdpblkgPCBzY3JvbGxhYmxlUGFyZW50SGVpZ2h0KSB8fFxuICAgICAgICAgICAgKG9yaWdpblkgLSBzY3JvbGxhYmxlUGFyZW50WSA+IDAgJiYgb3JpZ2luWSA8IHNjcm9sbGFibGVQYXJlbnRZICsgc2Nyb2xsYWJsZVBhcmVudEhlaWdodClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlucHV0VmFsdWVIYW5kbGVyKHZhbHVlOiBzdHJpbmcgfCBFdWlBdXRvQ29tcGxldGVJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaXBzKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA9IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLm1hcChcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpID0+IG5ldyBFdWlBdXRvQ29tcGxldGVJdGVtKE9iamVjdC5hc3NpZ24oe30sIHNlbGVjdGVkLCB7IGV1aUludGVybmFsSWQ6IHRoaXMuZ2VuZXJhdGVJZCgpIH0pKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm1hcEFzQ2hpcCgpO1xuXG4gICAgICAgICAgICAvLyB2YWx1ZSBpcyBudWxsIHdoZW4gY2hpcHMgaXMgYWRkZWQsIHRlc3RpbmcgdmFsdWUgcHJldmVudCBoYXZpbmcgdHdvIHZhbHVlY2hhbmdlcyB0cmlnZ2VyZWRcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLmxlbmd0aCA+IDAgPyB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA6IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZEl0ZW0gPSB0aGlzLmF1dG9jb21wbGV0ZURhdGEuZmluZCgoZGF0YSkgPT5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSAmJiBkYXRhLmxhYmVsICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YS5sYWJlbC50b0xvd2VyQ2FzZSgpLnRyaW0oKSA9PT0gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChmb3VuZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShmb3VuZEl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID8gdGhpcy5vbkNoYW5nZShuZXcgRXVpQXV0b0NvbXBsZXRlSXRlbSh7IGxhYmVsOiB2YWx1ZSB9KSkgOiB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5uZXh0KHRoaXMuX2ZpbHRlcignJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2VkLmVtaXQodmFsdWUgYXMgc3RyaW5nKTtcbiAgICAgICAgdGhpcy5pbnB1dENoYW5nZS5lbWl0KHZhbHVlIGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmFzeW5jKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgIXZhbHVlID8gdmFsdWUgOiB2YWx1ZS5sYWJlbDtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5uZXh0KFxuICAgICAgICAgICAgICAgIHRoaXMuaXNJdGVtc1NvcnRlZFxuICAgICAgICAgICAgICAgICAgICA/ICh0aGlzLm9yZGVySXRlbXModGhpcy5fZmlsdGVyKGZpbHRlclZhbHVlIGFzIHN0cmluZyksIHRoaXMuaXRlbXNTb3J0T3JkZXIpIGFzIEV1aUF1dG9Db21wbGV0ZUl0ZW1bXSlcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9maWx0ZXIoZmlsdGVyVmFsdWUgYXMgc3RyaW5nKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgcHJpdmF0ZSBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcblxuICAgIHByaXZhdGUgX2ZpbHRlcihzdHI6IHN0cmluZyk6IEV1aUF1dG9Db21wbGV0ZUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkSXRlbXM6IEV1aUF1dG9Db21wbGV0ZUl0ZW1bXSA9IFtdO1xuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZURhdGEuZm9yRWFjaCgoaXRlbTogRXVpQXV0b0NvbXBsZXRlSXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm91bmRJdGVtID1cbiAgICAgICAgICAgICAgICAhdGhpcy5pc0R1cGxpY2F0ZVZhbHVlQWxsb3dlZCAmJiBBcnJheS5pc0FycmF5KHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLmZpbmQoKHNlbGVjdGVkSXRlbTogRXVpQXV0b0NvbXBsZXRlSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbS5pZCA9PT0gaXRlbS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKCFmb3VuZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoaW5nID09PSAnY29udGFpbnMnICYmIGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHN0ci50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoaW5nID09PSAnc3RhcnRXaXRoJyAmJiBpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuc3Vic3RyKDAsIHN0ci50b1N0cmluZygpLmxlbmd0aCkgPT09IHN0ci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5pc0l0ZW1zU29ydGVkID8gKHRoaXMub3JkZXJJdGVtcyhmaWx0ZXJlZEl0ZW1zLCB0aGlzLml0ZW1zU29ydE9yZGVyKSBhcyBFdWlBdXRvQ29tcGxldGVJdGVtW10pIDogZmlsdGVyZWRJdGVtcztcbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcEFzQ2hpcCgpOiBFdWlDaGlwW10ge1xuICAgICAgICBjb25zdCBjaGlwcyA9IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLm1hcChcbiAgICAgICAgICAgIChzZWxlY3RlZCkgPT5cbiAgICAgICAgICAgICAgICBuZXcgRXVpQ2hpcCh7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBzZWxlY3RlZC5pZCxcbiAgICAgICAgICAgICAgICAgICAgZXVpSW50ZXJuYWxJZDogc2VsZWN0ZWQuZXVpSW50ZXJuYWxJZCxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHNlbGVjdGVkLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICB0eXBlQ2xhc3M6IHNlbGVjdGVkLnR5cGVDbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgaXNPdXRsaW5lOiBzZWxlY3RlZC5pc091dGxpbmUsXG4gICAgICAgICAgICAgICAgICAgIGlzUm91bmRlZDogc2VsZWN0ZWQuaXNSb3VuZGVkLFxuICAgICAgICAgICAgICAgICAgICBzaXplQ2xhc3M6IHNlbGVjdGVkLnNpemVDbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgaXNSZW1vdmFibGU6IHNlbGVjdGVkLmlzUmVtb3ZhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwTWVzc2FnZTogc2VsZWN0ZWQudG9vbHRpcD8udG9vbHRpcE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA6IG5ldyBFdWlDaGlwVG9vbHRpcChzZWxlY3RlZC50b29sdGlwKSxcbiAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzOiBzZWxlY3RlZC5pY29uQ2xhc3MsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDaGlwc1NvcnRlZCA/ICh0aGlzLm9yZGVySXRlbXMoY2hpcHMsIHRoaXMuY2hpcHNTb3J0T3JkZXIpIGFzIEV1aUNoaXBbXSkgOiBjaGlwcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9yZGVySXRlbXModGFiOiBFdWlBdXRvQ29tcGxldGVJdGVtW10gfCBFdWlDaGlwW10sIHNvcnRPcmRlcjogJ0FTQycgfCAnREVTQycpOiBFdWlBdXRvQ29tcGxldGVJdGVtW10gfCBFdWlDaGlwW10ge1xuICAgICAgICB0YWIuc29ydCgoYTogRXVpQXV0b0NvbXBsZXRlSXRlbSB8IEV1aUNoaXAsIGI6IEV1aUF1dG9Db21wbGV0ZUl0ZW0gfCBFdWlDaGlwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhT2JqID0gYS5sYWJlbC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgY29uc3QgYk9iaiA9IGIubGFiZWwudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgICAgaWYgKHNvcnRPcmRlciA9PT0gJ0FTQycpIHtcbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA8IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA+IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA+IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYU9iaiA8IGJPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGFiO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ3JvdXBpbmdIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc3RpbmN0T3B0aW9uR3JvdXBzID0gdGhpcy5hdXRvY29tcGxldGVEYXRhLm1hcCgoaXRlbSkgPT5cbiAgICAgICAgICAgIHRoaXMuZ3JvdXBCeS5zcGxpdCgnLicpLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHByZXYgPyBwcmV2W2N1cnJdIDogbnVsbCksIGl0ZW0gfHwgc2VsZiksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5kaXN0aW5jdE9wdGlvbkdyb3VwcyA9IHRoaXMuZGlzdGluY3RPcHRpb25Hcm91cHNcbiAgICAgICAgICAgIC5maWx0ZXIoKG4sIGkpID0+IHRoaXMuZGlzdGluY3RPcHRpb25Hcm91cHMuaW5kZXhPZihuKSA9PT0gaSlcbiAgICAgICAgICAgIC5zb3J0KChhOiBzdHJpbmcsIGI6IHN0cmluZykgPT4gKGEgPiBiID8gMSA6IC0xKSk7XG5cbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKGF1dG9jb21wbGV0ZU9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGxldCBncm91cGVkSXRlbXM6IEV1aUF1dG9Db21wbGV0ZUl0ZW1bXTtcbiAgICAgICAgICAgIHRoaXMuZGlzdGluY3RPcHRpb25Hcm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBncm91cGVkSXRlbXMgPSBhdXRvY29tcGxldGVPcHRpb25zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmID0gdGhpcy5ncm91cEJ5LnNwbGl0KCcuJykucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAocHJldiA/IHByZXZbY3Vycl0gOiBudWxsKSwgaXRlbSB8fCBzZWxmKTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZiA9PT0gZ3JvdXA7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0l0ZW1zU29ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwZWRJdGVtcyA9IHRoaXMub3JkZXJJdGVtcyhncm91cGVkSXRlbXMsIHRoaXMuaXRlbXNTb3J0T3JkZXIpIGFzIEV1aUF1dG9Db21wbGV0ZUl0ZW1bXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwZWRJdGVtcyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5ncm91cGVkSXRlbXMsXG4gICAgICAgICAgICAgICAgICAgIFtncm91cF06IG9mKGdyb3VwZWRJdGVtcyksXG4gICAgICAgICAgICAgICAgfSBhcyB7IFtpZDogc3RyaW5nXTogT2JzZXJ2YWJsZTxFdWlBdXRvQ29tcGxldGVJdGVtW10+IH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgbWluLWhlaWdodCB2YWx1ZSBvZiB0aGUgZXVpLWF1dG9jb21wbGV0ZV9fb3B0aW9uIGNsYXNzXG4gICAgICogRGVmYXVsdDogLS1ldWktYmFzZS1zcGFjaW5nLTN4bCAoM3JlbSBvbiBkZWZhdWx0IDE2cHgvMXJlbSBiYXNpcylcbiAgICAgKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVOZXdJdGVtU2l6ZShiYXNlRm9udFNpemUgPSAnMTZweCcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHBhcnNlSW50KGJhc2VGb250U2l6ZSwgMTApICogMykudG9TdHJpbmcoKSB8fCAnJztcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZXVpLWF1dG9jb21wbGV0ZV9fY29udGFpbmVyXCIgbWF0QXV0b2NvbXBsZXRlT3JpZ2luICNvcmlnaW49XCJtYXRBdXRvY29tcGxldGVPcmlnaW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZXVpLWF1dG9jb21wbGV0ZV9fd3JhcHBlciBldWktYXV0b2NvbXBsZXRlX193cmFwcGVyLS17eyBjaGlwc1Bvc2l0aW9uIH19XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJjaGlwc1Bvc2l0aW9uID09PSAnYm90dG9tJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0NoaXBzXCI+XG4gICAgICAgICAgICA8ZXVpLWNoaXAtbGlzdFxuICAgICAgICAgICAgICAgICNjaGlwTGlzdFxuICAgICAgICAgICAgICAgIFtjaGlwc109XCJjaGlwc1wiXG4gICAgICAgICAgICAgICAgW2lzR3JpZF09XCJpc0NoaXBzR3JpZFwiXG4gICAgICAgICAgICAgICAgW2lzQ2hpcHNEcmFnQW5kRHJvcF09XCJpc0NoaXBzRHJhZ0FuZERyb3BcIlxuICAgICAgICAgICAgICAgIFtpc0NoaXBzUmVtb3ZhYmxlXT1cImlzQ2hpcHNSZW1vdmFibGUgJiYgIXJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICBbaXNDaGlwc1NvcnRlZF09XCJpc0NoaXBzU29ydGVkXCJcbiAgICAgICAgICAgICAgICBbY2hpcHNTb3J0T3JkZXJdPVwiY2hpcHNTb3J0T3JkZXJcIlxuICAgICAgICAgICAgICAgIFttYXhWaXNpYmxlQ2hpcHNDb3VudF09XCJtYXhWaXNpYmxlQ2hpcHNDb3VudFwiXG4gICAgICAgICAgICAgICAgW2lzTWF4VmlzaWJsZUNoaXBzT3BlbmVkXT1cImlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkXCJcbiAgICAgICAgICAgICAgICBbdG9nZ2xlTGlua01vcmVMYWJlbF09XCJ0b2dnbGVMaW5rTW9yZUxhYmVsXCJcbiAgICAgICAgICAgICAgICBbdG9nZ2xlTGlua0xlc3NMYWJlbF09XCJ0b2dnbGVMaW5rTGVzc0xhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2hpcHNMYWJlbFRydW5jYXRlQ291bnRdPVwiY2hpcHNMYWJlbFRydW5jYXRlQ291bnRcIlxuICAgICAgICAgICAgICAgIFtkcmFnQW5kRHJvcFNvdXJjZU5hbWVdPVwiZHJhZ0FuZERyb3BTb3VyY2VOYW1lXCJcbiAgICAgICAgICAgICAgICBbZHJhZ0FuZERyb3BDb25uZWN0ZWRUb109XCJkcmFnQW5kRHJvcENvbm5lY3RlZFRvXCJcbiAgICAgICAgICAgICAgICAoY2hpcERyb3BwZWQpPVwib25DaGlwRHJvcHBlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2hpcERyYWdTdGFydGVkKT1cIm9uQ2hpcERyYWdTdGFydGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjaGlwRHJhZ1JlbGVhc2VkKT1cIm9uQ2hpcERyYWdSZWxlYXNlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2hpcFJlbW92ZSk9XCJvbkNoaXBSZW1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNoaXBsaXN0Rm9jdXMpPVwib25DaGlwTGlzdEZvY3VzKClcIj5cbiAgICAgICAgICAgICAgICA8ZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY2hpcHNQb3NpdGlvbiA9PT0gJ2luc2lkZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZXVpQ2hpcExpc3RBcHBlbmRDb250ZW50PlxuICAgICAgICAgICAgPC9ldWktY2hpcC1saXN0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY2hpcHNQb3NpdGlvbiA9PT0gJ3RvcCcgfHwgIWhhc0NoaXBzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZpZWxkPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldWktYXV0b2NvbXBsZXRlX19maWVsZC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoYXNDaGlwc1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlDbGVhcmFibGVdPVwiIXJlYWRvbmx5ICYmICFpc0xvYWRpbmcgJiYgIWlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUxvYWRpbmddPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV1aUlucHV0VGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgI2F1dG9jb21wbGV0ZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAjYXV0b2NvbXBsZXRlSW5wdXRUcmlnZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7IHBsYWNlaG9sZGVyIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVEaXNhYmxlZF09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiYXV0b2NvbXBsZXRlQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICdBdXRvY29tcGxldGUgSW5wdXQgRmllbGQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGVhcik9XCJvbkNsZWFyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImJvdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImF1dG9jb21wbGV0ZUlkXCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQ2hpcHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpQ2xlYXJhYmxlXT1cIiFyZWFkb25seSAmJiAhaXNMb2FkaW5nICYmICFpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBldWlJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICNhdXRvY29tcGxldGVJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgI2F1dG9jb21wbGV0ZUlucHV0VHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlRGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImF1dG9jb21wbGV0ZUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUb109XCJjaGlwc1Bvc2l0aW9uID09PSAnaW5zaWRlJyA/IG9yaWdpbiA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICdBdXRvY29tcGxldGUgSW5wdXQgRmllbGQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGVhcik9XCJvbkNsZWFyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNPdXQoKTsgYWRkT25CbHVySGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYWRkT25FbnRlckhhbmRsZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwib25LZXlEb3duQmFja3NwYWNlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwiYm90aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwiYXV0b2NvbXBsZXRlSWRcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImF1dG9jb21wbGV0ZUlkXCJcbiAgICAgICAgICAgICAgICAgICAgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgICAgICBbcGFuZWxXaWR0aF09XCJwYW5lbFdpZHRoID09PSAnYXV0bycgPyBudWxsIDogcGFuZWxXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbGFzc0xpc3RcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b0FjdGl2ZUZpcnN0T3B0aW9uXT1cImF1dG9BY3RpdmVGaXJzdE9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChjbG9zZWQpPVwib25DbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5lZCk9XCJvbk9wZW4oKVwiXG4gICAgICAgICAgICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyb3VwQnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdmlydHVhbFNjcm9sbGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiNDhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkJ1ZmZlclB4PVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCdWZmZXJQeD1cIjc1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwiY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0ICsgJ3B4J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRpc3RpbmN0T3B0aW9uR3JvdXAgb2YgZGlzdGluY3RPcHRpb25Hcm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRncm91cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1hdXRvY29tcGxldGVfX29wdGdyb3VwLS1jdXN0b21dPVwiYXV0b2NvbXBsZXRlT3B0R3JvdXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cGVkSXRlbXNbZGlzdGluY3RPcHRpb25Hcm91cF0gfCBhc3luYykubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZGlzdGluY3RPcHRpb25Hcm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1dG9jb21wbGV0ZU9wdEdyb3VwVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXVpLWF1dG9jb21wbGV0ZV9fb3B0Z3JvdXAtLWN1c3RvbS1vcHRncm91cC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXV0b2NvbXBsZXRlT3B0R3JvdXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHsgbGFiZWw6IGRpc3RpbmN0T3B0aW9uR3JvdXAgfSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZ3JvdXBlZEl0ZW0gb2YgZ3JvdXBlZEl0ZW1zW2Rpc3RpbmN0T3B0aW9uR3JvdXBdIHwgYXN5bmM7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwZWRJdGVtLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZEl0ZW0udHlwZUNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdtYXQtb3B0aW9uIGV1aS1hdXRvY29tcGxldGVfX29wdGlvbiBldWktYXV0b2NvbXBsZXRlX19vcHRpb24tLScgKyBncm91cGVkSXRlbS50eXBlQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ21hdC1vcHRpb24gZXVpLWF1dG9jb21wbGV0ZV9fb3B0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmV1aS1hdXRvY29tcGxldGVfX29wdGlvbi0tY3VzdG9tXT1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ3JvdXBlZEl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdyb3VwZWRJdGVtLmljb25DbGFzc1wiIGNsYXNzPVwie3sgZ3JvdXBlZEl0ZW0uaWNvbkNsYXNzIH19XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXBlZEl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGdyb3VwZWRJdGVtIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cEJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZpcnR1YWxTY3JvbGxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbkJ1ZmZlclB4PVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhCdWZmZXJQeD1cIjc1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwiY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0ICsgJ3B4J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IGF1dG9jb21wbGV0ZU9wdGlvbiBvZiBhdXRvY29tcGxldGVPcHRpb25zIHwgYXN5bmM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhdXRvY29tcGxldGVPcHRpb24uaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZU9wdGlvbi50eXBlQ2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdtYXQtb3B0aW9uIGV1aS1hdXRvY29tcGxldGVfX29wdGlvbiBldWktYXV0b2NvbXBsZXRlX19vcHRpb24tLScgKyBhdXRvY29tcGxldGVPcHRpb24udHlwZUNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnbWF0LW9wdGlvbiBldWktYXV0b2NvbXBsZXRlX19vcHRpb24nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktYXV0b2NvbXBsZXRlX19vcHRpb24tLWN1c3RvbV09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tYXQtbWRjLW9wdGlvbi1hY3RpdmVdPVwiaSA9PT0gc2VsZWN0ZWRPcHRpb25JbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZGMtbGlzdC1pdGVtLS1zZWxlY3RlZF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhdXRvY29tcGxldGVPcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb24uaWNvbkNsYXNzXCIgY2xhc3M9XCJ7eyBhdXRvY29tcGxldGVPcHRpb24uaWNvbkNsYXNzIH19XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlXCI+e3sgYXV0b2NvbXBsZXRlT3B0aW9uLmxhYmVsIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogYXV0b2NvbXBsZXRlT3B0aW9uIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
755
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9ldWktYXV0b2NvbXBsZXRlL2V1aS1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLWF1dG9jb21wbGV0ZS9ldWktYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFHakIsVUFBVSxFQUNWLFNBQVMsRUFHVCxNQUFNLEVBQ04sWUFBWSxFQUtaLGVBQWUsRUFDZixXQUFXLEVBQ1gsSUFBSSxFQUNKLFFBQVEsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFtQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBNkIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBYyxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRyxPQUFPLEVBQWlELHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHdkgsT0FBTyxFQUFzQixRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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UUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNVLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBZ0J6QixRQUFRO3NCQURYLEtBQUs7Z0JBU0YsTUFBTTtzQkFEVCxLQUFLO2dCQVNGLEtBQUs7c0JBRFIsS0FBSztnQkFTRixTQUFTO3NCQURaLEtBQUs7Z0JBU0Ysa0JBQWtCO3NCQURyQixLQUFLO2dCQVNGLHVCQUF1QjtzQkFEMUIsS0FBSztnQkFTRixTQUFTO3NCQURaLEtBQUs7Z0JBU0YsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVNGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkFTRix1QkFBdUI7c0JBRDFCLEtBQUs7Z0JBU0YsdUJBQXVCO3NCQUQxQixLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixhQUFhO3NCQURoQixLQUFLO2dCQVNGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBU0Ysa0JBQWtCO3NCQURyQixLQUFLO2dCQVNGLGdCQUFnQjtzQkFEbkIsS0FBSztnQkFTRixxQkFBcUI7c0JBRHhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIFNlbGYsXG4gICAgT3B0aW9uYWwsXG4gICAgRG9DaGVjayxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIEJvb2xlYW5JbnB1dCwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IHNraXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3ViamVjdCwgQmVoYXZpb3JTdWJqZWN0LCBvZiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQsIGZpbHRlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50LCBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUsIFNjcm9sbERpc3BhdGNoZXIsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuXG5pbXBvcnQgeyBFdWlBcHBTaGVsbFNlcnZpY2UsIHVuaXF1ZUlkIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IEV1aUNoaXAsIEV1aUNoaXBUb29sdGlwIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS1jaGlwJztcbmltcG9ydCB7IEV1aUNoaXBEcmFnRHJvcCwgRXVpQ2hpcExpc3RDb21wb25lbnQgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvZXVpLWNoaXAtbGlzdCc7XG5pbXBvcnQgeyBFdWlUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEJhc2VEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvc2hhcmVkJztcblxuaW1wb3J0IHsgRXVpQXV0b0NvbXBsZXRlSXRlbSB9IGZyb20gJy4vbW9kZWxzL2V1aS1hdXRvY29tcGxldGUtaXRlbS5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnLi9ldWktYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2V1aS1hdXRvY29tcGxldGUsIGlucHV0W2V1aUF1dG9jb21wbGV0ZV0nLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEV1aUF1dG9jb21wbGV0ZUNvbXBvbmVudFxuICAgIGV4dGVuZHMgQmFzZURpcmVjdGl2ZVxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIERvQ2hlY2sge1xuICAgIEBJbnB1dCgpIHRvZ2dsZUxpbmtNb3JlTGFiZWw6IHN0cmluZyA9IG51bGw7XG4gICAgQElucHV0KCkgdG9nZ2xlTGlua0xlc3NMYWJlbDogc3RyaW5nID0gbnVsbDtcbiAgICBASW5wdXQoKSBhdXRvY29tcGxldGVEYXRhOiBFdWlBdXRvQ29tcGxldGVJdGVtW10gPSBbXTtcbiAgICBASW5wdXQoKSBhdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQ6IEV1aUF1dG9Db21wbGV0ZUl0ZW1bXSA9IFtdO1xuICAgIEBJbnB1dCgpIGNoaXBzU29ydE9yZGVyOiAnQVNDJyB8ICdERVNDJyA9ICdBU0MnO1xuICAgIEBJbnB1dCgpIGl0ZW1zU29ydE9yZGVyOiAnQVNDJyB8ICdERVNDJyA9ICdBU0MnO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XG4gICAgQElucHV0KCkgbWF0Y2hpbmc6ICdzdGFydFdpdGgnIHwgJ2NvbnRhaW5zJyA9ICdjb250YWlucyc7XG4gICAgQElucHV0KCkgY2hpcHNQb3NpdGlvbjogJ3RvcCcgfCAnYm90dG9tJyB8ICdpbnNpZGUnID0gJ3RvcCc7XG4gICAgQElucHV0KCkgcGFuZWxXaWR0aDogc3RyaW5nIHwgbnVtYmVyO1xuICAgIEBJbnB1dCgpIHZpc2libGVPcHRpb25zID0gNTtcbiAgICBASW5wdXQoKSBjbGFzc0xpc3Q6IHN0cmluZztcbiAgICBASW5wdXQoKSBncm91cEJ5OiBzdHJpbmc7XG4gICAgQElucHV0KCkgZHJhZ0FuZERyb3BTb3VyY2VOYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZHJhZ0FuZERyb3BDb25uZWN0ZWRUbzogc3RyaW5nW10gPSBbXTtcbiAgICBcbiAgICAvLyBldWlJbnB1dFRleHQgZG9lcyBub3Qgc2VuZCBldmVudCB3aGVuIHRoZSB0aGUgZmllbGQgaXMgY2xlYXJlZFxuICAgIEBPdXRwdXQoKSBjbGVhciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICAvKipAZGVwcmVjYXRlZCB3aWxsIGJlIHJlcGxhY2VkIGluIHRoZSBuZXh0IGVVSSB2ZXJzaW9uIGJ5IHBhbmVsQ2xvc2UgKi9cbiAgICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHBhbmVsQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgLyoqQGRlcHJlY2F0ZWQgd2lsbCBiZSByZXBsYWNlZCBpbiB0aGUgbmV4dCBlVUkgdmVyc2lvbiBieSBwYW5lbE9wZW4gKi9cbiAgICBAT3V0cHV0KCkgb3BlbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgcGFuZWxPcGVuID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIC8qKkBkZXByZWNhdGVkIHdpbGwgYmUgcmVwbGFjZWQgaW4gdGhlIG5leHQgZVVJIHZlcnNpb24gYnkgaW5wdXRCbHVyICovXG4gICAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGlucHV0Qmx1ciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlBdXRvQ29tcGxldGVJdGVtW10+KCk7XG4gICAgQE91dHB1dCgpIGl0ZW1BZGQgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUF1dG9Db21wbGV0ZUl0ZW0+KCk7XG4gICAgQE91dHB1dCgpIGl0ZW1SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUF1dG9Db21wbGV0ZUl0ZW0+KCk7XG4gICAgQE91dHB1dCgpIGlucHV0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcmFnU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPEV1aUNoaXBEcmFnRHJvcD4oKTtcbiAgICBAT3V0cHV0KCkgY2hpcERyYWdSZWxlYXNlID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG4gICAgQE91dHB1dCgpIGNoaXBEcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxFdWlDaGlwRHJhZ0Ryb3A+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW3RoaXMuaGFzQ2hpcHMgPyAnZXVpLWF1dG9jb21wbGV0ZS0taGFzLWNoaXBzJyA6ICcnLCBzdXBlci5nZXRDc3NDbGFzc2VzKCdldWktYXV0b2NvbXBsZXRlJyldLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZHJlbihFdWlUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8RXVpVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gICAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlSW5wdXQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgYXV0b2NvbXBsZXRlSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnYXV0b2NvbXBsZXRlSW5wdXRUcmlnZ2VyJywgeyByZWFkOiBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0pIGF1dG9jb21wbGV0ZUlucHV0VHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcjtcbiAgICBAVmlld0NoaWxkKCdhdXRvJykgbWF0QXV0b2NvbXBsZXRlOiBNYXRBdXRvY29tcGxldGU7XG4gICAgQFZpZXdDaGlsZCgnY2hpcExpc3QnKSBjaGlwTGlzdDogRXVpQ2hpcExpc3RDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgndmlydHVhbFNjcm9sbGluZycpIHZpcnR1YWxTY3JvbGxpbmc6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IHsgbGFiZWw6IHN0cmluZyB9IH0+O1xuICAgIHB1YmxpYyBhdXRvY29tcGxldGVPcHRHcm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogeyBsYWJlbDogc3RyaW5nIH0gfT47XG4gICAgcHVibGljIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICAgIHB1YmxpYyBhdXRvY29tcGxldGVPcHRpb25zOiBCZWhhdmlvclN1YmplY3Q8RXVpQXV0b0NvbXBsZXRlSXRlbVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RXVpQXV0b0NvbXBsZXRlSXRlbVtdPih0aGlzLmF1dG9jb21wbGV0ZURhdGEpO1xuICAgIHB1YmxpYyBjaGlwczogRXVpQ2hpcFtdID0gW107XG4gICAgcHVibGljIGRpc3RpbmN0T3B0aW9uR3JvdXBzOiBzdHJpbmdbXTtcbiAgICBwdWJsaWMgZ3JvdXBlZEl0ZW1zOiB7IFtpZDogc3RyaW5nXTogT2JzZXJ2YWJsZTxFdWlBdXRvQ29tcGxldGVJdGVtW10+IH07XG4gICAgcHVibGljIGF1dG9jb21wbGV0ZUlkID0gYGV1aS1hdXRvY29tcGxldGUtJHt1bmlxdWVJZCgpfWA7XG4gICAgcHVibGljIGlzRGlzYWJsZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgc2VsZWN0ZWRPcHRpb25JbmRleCA9IC0xO1xuICAgIHB1YmxpYyBpdGVtU2l6ZSA9ICc0OCc7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNDaGlwcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaXBzO1xuICAgIH1cbiAgICBzZXQgaGFzQ2hpcHModmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9oYXNDaGlwcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hhc0NoaXBzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNHcmlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNHcmlkO1xuICAgIH1cbiAgICBzZXQgaXNHcmlkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNHcmlkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNHcmlkID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBhc3luYygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FzeW5jO1xuICAgIH1cbiAgICBzZXQgYXN5bmModmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9hc3luYyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2FzeW5jID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgYWRkT25CbHVyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkT25CbHVyO1xuICAgIH1cbiAgICBzZXQgYWRkT25CbHVyKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fYWRkT25CbHVyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfYWRkT25CbHVyID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNGcmVlVmFsdWVBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGcmVlVmFsdWVBbGxvd2VkO1xuICAgIH1cbiAgICBzZXQgaXNGcmVlVmFsdWVBbGxvd2VkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNGcmVlVmFsdWVBbGxvd2VkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNGcmVlVmFsdWVBbGxvd2VkID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0R1cGxpY2F0ZVZhbHVlQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRHVwbGljYXRlVmFsdWVBbGxvd2VkO1xuICAgIH1cbiAgICBzZXQgaXNEdXBsaWNhdGVWYWx1ZUFsbG93ZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0R1cGxpY2F0ZVZhbHVlQWxsb3dlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzRHVwbGljYXRlVmFsdWVBbGxvd2VkID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2FkaW5nO1xuICAgIH1cbiAgICBzZXQgaXNMb2FkaW5nKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNMb2FkaW5nID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDaGlwc1JlbW92YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNSZW1vdmFibGU7XG4gICAgfVxuICAgIHNldCBpc0NoaXBzUmVtb3ZhYmxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDaGlwc1JlbW92YWJsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNSZW1vdmFibGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IG1heFZpc2libGVDaGlwc0NvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhWaXNpYmxlQ2hpcHNDb3VudDtcbiAgICB9XG4gICAgc2V0IG1heFZpc2libGVDaGlwc0NvdW50KHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICB0aGlzLl9tYXhWaXNpYmxlQ2hpcHNDb3VudCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbWF4VmlzaWJsZUNoaXBzQ291bnQgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudDtcbiAgICB9XG4gICAgc2V0IGNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50KHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgICAgICB0aGlzLl9jaGlwc0xhYmVsVHJ1bmNhdGVDb3VudCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfY2hpcHNMYWJlbFRydW5jYXRlQ291bnQgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzTWF4VmlzaWJsZUNoaXBzT3BlbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQ7XG4gICAgfVxuICAgIHNldCBpc01heFZpc2libGVDaGlwc09wZW5lZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzTWF4VmlzaWJsZUNoaXBzT3BlbmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNNYXhWaXNpYmxlQ2hpcHNPcGVuZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICAgIH1cbiAgICBzZXQgcmVhZG9ubHkodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9yZWFkb25seSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX3JlYWRvbmx5ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDaGlwc1NvcnRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNTb3J0ZWQ7XG4gICAgfVxuICAgIHNldCBpc0NoaXBzU29ydGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDaGlwc1NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNTb3J0ZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0l0ZW1zU29ydGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJdGVtc1NvcnRlZDtcbiAgICB9XG4gICAgc2V0IGlzSXRlbXNTb3J0ZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0l0ZW1zU29ydGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNJdGVtc1NvcnRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2hpcHNEcmFnQW5kRHJvcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcDtcbiAgICB9XG4gICAgc2V0IGlzQ2hpcHNEcmFnQW5kRHJvcCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2hpcHNEcmFnQW5kRHJvcCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzRm9yY2VTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0ZvcmNlU2VsZWN0aW9uO1xuICAgIH1cbiAgICBzZXQgaXNGb3JjZVNlbGVjdGlvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzRm9yY2VTZWxlY3Rpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0ZvcmNlU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b0FjdGl2ZUZpcnN0T3B0aW9uO1xuICAgIH1cbiAgICBzZXQgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fYXV0b0FjdGl2ZUZpcnN0T3B0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfYXV0b0FjdGl2ZUZpcnN0T3B0aW9uID0gdHJ1ZTtcblxuICAgIGdldCBpc0NoaXBzR3JpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzR3JpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2hpcHNEcmFnQW5kRHJvcCAmJiB0aGlzLmRyYWdBbmREcm9wQ29ubmVjdGVkVG8ubGVuZ3RoID09PSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzR3JpZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgbmJDbGljayA9IDA7XG4gICAgcHJpdmF0ZSBpZ25vcmVPcGVuQ2xvc2VFdmVudHMgPSBmYWxzZTtcbiAgICBwcml2YXRlIHZhbHVlOiBFdWlBdXRvQ29tcGxldGVJdGVtIHwgRXVpQXV0b0NvbXBsZXRlSXRlbVtdID0gbnVsbDtcbiAgICBwcml2YXRlIGZpZWxkVmFsdWUgPSBudWxsO1xuICAgIHByaXZhdGUgc2Nyb2xsRGlzcGF0Y2hlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIGtleWJvYXJkT3B0aW9uU2VsZWN0b3JIYW5kbGVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBAU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgY29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBhc1NlcnZpY2U6IEV1aUFwcFNoZWxsU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoYzogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoYyAmJiBjLmF1dG9jb21wbGV0ZURhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5uZXh0KHRoaXMuX2ZpbHRlcignJykpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5ncm91cEJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cGluZ0hhbmRsZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjICYmIGMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkICYmIHRoaXMuaGFzQ2hpcHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkID0gdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQubWFwKFxuICAgICAgICAgICAgICAgIChzZWxlY3RlZCkgPT4gbmV3IEV1aUF1dG9Db21wbGV0ZUl0ZW0oT2JqZWN0LmFzc2lnbih7fSwgc2VsZWN0ZWQsIHsgZXVpSW50ZXJuYWxJZDogdGhpcy5nZW5lcmF0ZUlkKCkgfSkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMubWFwQXNDaGlwKCk7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMubmV4dCh0aGlzLl9maWx0ZXIoJycpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjICYmIGMudmlzaWJsZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0ID0gJ2V1aS1hdXRvY29tcGxldGUtLW5vLW1heC1oZWlnaHQnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSA/IG51bGwgOiB0aGlzLnZhbHVlPy5sYWJlbDtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLm5leHQodGhpcy5fZmlsdGVyKHN0YXJ0KSk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIHN0YXJ0V2l0aChzdGFydCksIHNraXAoMSkpLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlSGFuZGxlcih2YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmdyb3VwQnkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBpbmdIYW5kbGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gQ1NTIHZhcmlhYmxlIGNoYW5nZXMgaW4gb3JkZXIgdG8gYWRhcHQgdGhlIGl0ZW1TaXplIG9mIHRoZSB2aXJ0dWFsU2Nyb2xsaW5nXG4gICAgICAgIHRoaXMuYXNTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0U3RhdGUoJ2FwcEJhc2VGb250U2l6ZScpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChiYXNlRm9udFNpemU6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVNpemUgPSB0aGlzLl9jYWxjdWxhdGVOZXdJdGVtU2l6ZShiYXNlRm9udFNpemUpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogUmVmYWN0b3IgbmdEb0NoZWNrIHdoZW4gZXVpSW5wdXQgVGV4dCB3aWxsIHJlZmFjdG9yIHRoaXMgaG9va3NcbiAgICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC50b3VjaGVkID8gdGhpcy5hdXRvY29tcGxldGVDb250cm9sLm1hcmtBc1RvdWNoZWQoKSA6IHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5pbnZhbGlkID8gdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSkgOiB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2Ryb3Bkb3duT3B0aW9uJykge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZHJvcGRvd25PcHRHcm91cCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdEdyb3VwVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5oYXNDaGlwcykge1xuICAgICAgICAgICAgdGhpcy5jaGlwcyA9IHRoaXMubWFwQXNDaGlwKCk7XG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBnZXQgbmJPcHRpb25zVmlzaWJsZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgY2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zICE9PSA1KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9ucyAqIDQ4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy52YWx1ZS5sZW5ndGggPj0gdGhpcy5uYk9wdGlvbnNWaXNpYmxlID8gMjQwIDogdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLnZhbHVlLmxlbmd0aCAqIDQ4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE9uQmx1ckhhbmRsZXIoZXZlbnQ6IEZvY3VzRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYWRkT25CbHVyKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQ6IEhUTUxFbGVtZW50ID0gZXZlbnQucmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghdGFyZ2V0IHx8IHRhcmdldC50YWdOYW1lICE9PSAnTUFULU9QVElPTicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZChuZXdWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkT25FbnRlckhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5hdXRvY29tcGxldGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgICAgICB0aGlzLmFkZChuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZChuZXdWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRnJlZVZhbHVlQWxsb3dlZCkge1xuICAgICAgICAgICAgaWYgKChuZXdWYWx1ZSB8fCAnJykudHJpbSgpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmRJdGVtID0gIXRoaXMuaXNEdXBsaWNhdGVWYWx1ZUFsbG93ZWRcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5maW5kKChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbS5sYWJlbC50b1N0cmluZygpLnRyaW0oKSA9PT0gbmV3VmFsdWUudHJpbSgpKVxuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFmb3VuZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQucHVzaChuZXcgRXVpQXV0b0NvbXBsZXRlSXRlbSh7IGxhYmVsOiBuZXdWYWx1ZS50cmltKCkgfSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5tYXBBc0NoaXAoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFRyaWdnZXIuY2xvc2VQYW5lbCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1BZGQuZW1pdChuZXcgRXVpQXV0b0NvbXBsZXRlSXRlbSh7IGxhYmVsOiBuZXdWYWx1ZS50cmltKCkgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbk9wdGlvblNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQub3B0aW9uLnZhbHVlO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc0NoaXBzKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlLmxhYmVsO1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnNldFZhbHVlKHZhbHVlLmxhYmVsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNDaGlwcykge1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLm5leHQodGhpcy5fZmlsdGVyKCcnKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkKTtcbiAgICAgICAgdGhpcy5pdGVtQWRkLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoaXBSZW1vdmUoZTogeyBjaGlwczogRXVpQ2hpcFtdOyByZW1vdmVkOiBFdWlDaGlwIHwgeyBjaGlwOiBFdWlDaGlwOyBldmVudDogRXZlbnQgfSB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZURhdGFSZW1vdmVkID0gdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQuZmluZCgoZGF0YSkgPT5cbiAgICAgICAgICAgIGUucmVtb3ZlZCBpbnN0YW5jZW9mIEV1aUNoaXBcbiAgICAgICAgICAgICAgICA/IGRhdGEuZXVpSW50ZXJuYWxJZCA9PT0gZS5yZW1vdmVkLmV1aUludGVybmFsSWRcbiAgICAgICAgICAgICAgICA6IGRhdGEuZXVpSW50ZXJuYWxJZCA9PT0gZS5yZW1vdmVkLmNoaXAuZXVpSW50ZXJuYWxJZCxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA9IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLmZpbHRlcigoZGF0YSkgPT5cbiAgICAgICAgICAgIGUucmVtb3ZlZCBpbnN0YW5jZW9mIEV1aUNoaXBcbiAgICAgICAgICAgICAgICA/IGRhdGEuZXVpSW50ZXJuYWxJZCAhPT0gZS5yZW1vdmVkLmV1aUludGVybmFsSWRcbiAgICAgICAgICAgICAgICA6IGRhdGEuZXVpSW50ZXJuYWxJZCAhPT0gZS5yZW1vdmVkLmNoaXAuZXVpSW50ZXJuYWxJZCxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIXRoaXMuaXNEdXBsaWNhdGVWYWx1ZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5uZXh0KFxuICAgICAgICAgICAgICAgIHRoaXMuaXNJdGVtc1NvcnRlZCA/ICh0aGlzLm9yZGVySXRlbXModGhpcy5fZmlsdGVyKCcnKSwgdGhpcy5pdGVtc1NvcnRPcmRlcikgYXMgRXVpQXV0b0NvbXBsZXRlSXRlbVtdKSA6IHRoaXMuX2ZpbHRlcignJyksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5sZW5ndGggPiAwID8gdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQgOiBudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCk7XG4gICAgICAgIHRoaXMuaXRlbVJlbW92ZS5lbWl0KGF1dG9jb21wbGV0ZURhdGFSZW1vdmVkKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIShlLnJlbW92ZWQgaW5zdGFuY2VvZiBFdWlDaGlwKSAmJlxuICAgICAgICAgICAgZS5yZW1vdmVkLmV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCAmJlxuICAgICAgICAgICAgKGUucmVtb3ZlZC5ldmVudCBhcyBLZXlib2FyZEV2ZW50KS5jb2RlID09PSAnQmFja3NwYWNlJyAmJlxuICAgICAgICAgICAgdGhpcy5jaGlwTGlzdC5ldWlDaGlwSXRlbXMubGVuZ3RoID4gMVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2hpcExpc3QuZXVpQ2hpcEl0ZW1zXG4gICAgICAgICAgICAgICAgLmdldCh0aGlzLmNoaXBMaXN0LmV1aUNoaXBJdGVtcy5sZW5ndGggLSAyKVxuICAgICAgICAgICAgICAgIC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ldWktY2hpcF9fcmVtb3ZlLWljb24nKVxuICAgICAgICAgICAgICAgIC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzRm9yY2VTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkZvY3VzT3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2goKTtcblxuICAgICAgICBpZiAodGhpcy5pc0ZvcmNlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICB9LCAyNTApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ibHVyLmVtaXQoKTtcbiAgICAgICAgdGhpcy5pbnB1dEJsdXIuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY3JvbGxEaXNwYXRjaGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIGlmICghdGhpcy5pZ25vcmVPcGVuQ2xvc2VFdmVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICAgICAgICAgICAgdGhpcy5wYW5lbENsb3NlLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxpbmcuc2Nyb2xsVG9JbmRleCgwKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4ID0gLTE7XG4gICAgICAgIHRoaXMua2V5Ym9hcmRPcHRpb25TZWxlY3RvckhhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25PcGVuKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXJTdWJzY3JpcHRpb24gPSB0aGlzLnNjcm9sbERpc3BhdGNoZXJcbiAgICAgICAgICAgIC5hbmNlc3RvclNjcm9sbGVkKHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogQ2RrU2Nyb2xsYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbGFibGVQYXJlbnQgPSBldmVudCA/IGV2ZW50LmdldEVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50IDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1Zpc2libGUodGhpcy5hdXRvY29tcGxldGVJbnB1dC5uYXRpdmVFbGVtZW50LCBzY3JvbGxhYmxlUGFyZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0VHJpZ2dlci5jbG9zZVBhbmVsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIGlmICghdGhpcy5pZ25vcmVPcGVuQ2xvc2VFdmVudHMpIHtcbiAgICAgICAgICAgIHRoaXMub3Blbi5lbWl0KCk7XG4gICAgICAgICAgICB0aGlzLnBhbmVsT3Blbi5lbWl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmlzaWJsZVJhbmdlU3RhcnQgPSAwO1xuICAgICAgICBsZXQgdmlzaWJsZVJhbmdlRW5kID0gNDtcblxuICAgICAgICBpZiAodGhpcy5hdXRvY29tcGxldGVPcHRpb25zLnZhbHVlLmxlbmd0aCA8IHRoaXMubmJPcHRpb25zVmlzaWJsZSkge1xuICAgICAgICAgICAgdmlzaWJsZVJhbmdlRW5kID0gdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmtleWJvYXJkT3B0aW9uU2VsZWN0b3JIYW5kbGVyU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5ZG93bicpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICAgICAgICAgICAgZmlsdGVyKChlOiBLZXlib2FyZEV2ZW50KSA9PiBlLmNvZGUgPT09ICdBcnJvd0Rvd24nIHx8IGUuY29kZSA9PT0gJ0Fycm93VXAnKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodGhpcy5hdXRvQWN0aXZlRmlyc3RPcHRpb24gPyB7IGNvZGU6ICdBcnJvd0Rvd24nIH0gOiBudWxsKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS5jb2RlID09PSAnQXJyb3dEb3duJyAmJiB0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXggPCB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMudmFsdWUubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5jb2RlID09PSAnQXJyb3dVcCcgJiYgdGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbkluZGV4LS07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjSW5kZXggPSB0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXggLSB0aGlzLnZpcnR1YWxTY3JvbGxpbmcuZ2V0UmVuZGVyZWRSYW5nZSgpLnN0YXJ0O1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0QXV0b2NvbXBsZXRlLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oY0luZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRBdXRvY29tcGxldGUub3B0aW9ucy50b0FycmF5KClbY0luZGV4XT8uc2V0QWN0aXZlU3R5bGVzKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuY29kZSA9PT0gJ0Fycm93RG93bicgJiYgY0luZGV4ID4gdmlzaWJsZVJhbmdlRW5kIC0gdmlzaWJsZVJhbmdlU3RhcnQgLSB2aXNpYmxlUmFuZ2VFbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXggPiB2aXNpYmxlUmFuZ2VFbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxpbmcuc2Nyb2xsVG9JbmRleCh0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXggLSB2aXNpYmxlUmFuZ2VFbmQgKyB2aXNpYmxlUmFuZ2VTdGFydCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVJhbmdlU3RhcnQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlUmFuZ2VFbmQrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5jb2RlID09PSAnQXJyb3dVcCcgJiYgY0luZGV4IDwgdmlzaWJsZVJhbmdlU3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9uSW5kZXggPCB2aXNpYmxlUmFuZ2VTdGFydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbGluZy5zY3JvbGxUb0luZGV4KHRoaXMuc2VsZWN0ZWRPcHRpb25JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZVJhbmdlU3RhcnQtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlUmFuZ2VFbmQtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBFdWlBdXRvQ29tcGxldGVJdGVtIHwgRXVpQXV0b0NvbXBsZXRlSXRlbVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5oYXNDaGlwcykge1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQgPSB2YWx1ZSA/ICh2YWx1ZSBhcyBFdWlBdXRvQ29tcGxldGVJdGVtW10pIDogW107XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA9IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLm1hcChcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpID0+IG5ldyBFdWlBdXRvQ29tcGxldGVJdGVtKE9iamVjdC5hc3NpZ24oe30sIHNlbGVjdGVkLCB7IGV1aUludGVybmFsSWQ6IHRoaXMuZ2VuZXJhdGVJZCgpIH0pKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmNoaXBzID0gWy4uLnRoaXMubWFwQXNDaGlwKCldO1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sLnBhdGNoVmFsdWUobnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMubmV4dCh0aGlzLl9maWx0ZXIoJycpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlID8gKHZhbHVlIGFzIEV1aUF1dG9Db21wbGV0ZUl0ZW0pLmxhYmVsIDogbnVsbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgICAgdGhpcy5maWVsZFZhbHVlID0gdmFsdWUgPyAodmFsdWUgYXMgRXVpQXV0b0NvbXBsZXRlSXRlbSkubGFiZWwgOiBudWxsO1xuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLm5leHQodGhpcy5fZmlsdGVyKHRoaXMuZmllbGRWYWx1ZSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICBpc0Rpc2FibGVkID8gdGhpcy5hdXRvY29tcGxldGVDb250cm9sLmRpc2FibGUoKSA6IHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbC5lbmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGlwRHJvcHBlZChlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQgPSBlLmNoaXBzLm1hcCgoYzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZCA9IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLmZpbmQoKGEpID0+IGEuaWQgPT09IGMuaWQpO1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kID8gZm91bmQgOiBuZXcgRXVpQXV0b0NvbXBsZXRlSXRlbSh7IC4uLmMuZGF0YSwgZXVpSW50ZXJuYWxJZDogYy5ldWlJbnRlcm5hbElkIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNoaXBzID0gdGhpcy5tYXBBc0NoaXAoKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zLm5leHQodGhpcy5fZmlsdGVyKCcnKSk7XG5cbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5sZW5ndGggPiAwID8gdGhpcy5hdXRvY29tcGxldGVEYXRhU2VsZWN0ZWQgOiBudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCk7XG5cbiAgICAgICAgdGhpcy5jaGlwRHJvcC5lbWl0KGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoaXBEcmFnU3RhcnRlZChlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlwRHJhZ1N0YXJ0LmVtaXQoZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpcERyYWdSZWxlYXNlZChlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGlwRHJhZ1JlbGVhc2UuZW1pdChlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhci5uZXh0KHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hpcExpc3RGb2N1cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dFRyaWdnZXIuY2xvc2VQYW5lbCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbktleURvd25CYWNrc3BhY2UoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNoaXBzUG9zaXRpb24gPT09ICdpbnNpZGUnICYmIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9PT0gJycgJiYgdGhpcy5jaGlwTGlzdC5ldWlDaGlwSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vbkNoaXBMaXN0Rm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuY2hpcExpc3QuZXVpQ2hpcEl0ZW1zLmxhc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZXVpLWNoaXBfX3JlbW92ZS1pY29uJykuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNWaXNpYmxlKG9yaWdpbjogSFRNTEVsZW1lbnQsIHNjcm9sbGFibGVQYXJlbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG9yaWdpblkgPSAob3JpZ2luIGFzIGFueSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkueTtcbiAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZVBhcmVudFkgPSBNYXRoLmFicyhzY3JvbGxhYmxlUGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnkpO1xuICAgICAgICBjb25zdCBzY3JvbGxhYmxlUGFyZW50SGVpZ2h0ID0gc2Nyb2xsYWJsZVBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgLSA1MDtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKG9yaWdpblkgPiAwICYmIG9yaWdpblkgPCBzY3JvbGxhYmxlUGFyZW50SGVpZ2h0KSB8fFxuICAgICAgICAgICAgKG9yaWdpblkgLSBzY3JvbGxhYmxlUGFyZW50WSA+IDAgJiYgb3JpZ2luWSA8IHNjcm9sbGFibGVQYXJlbnRZICsgc2Nyb2xsYWJsZVBhcmVudEhlaWdodClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlucHV0VmFsdWVIYW5kbGVyKHZhbHVlOiBzdHJpbmcgfCBFdWlBdXRvQ29tcGxldGVJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmhhc0NoaXBzKSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA9IHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLm1hcChcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpID0+IG5ldyBFdWlBdXRvQ29tcGxldGVJdGVtKE9iamVjdC5hc3NpZ24oe30sIHNlbGVjdGVkLCB7IGV1aUludGVybmFsSWQ6IHRoaXMuZ2VuZXJhdGVJZCgpIH0pKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuY2hpcHMgPSB0aGlzLm1hcEFzQ2hpcCgpO1xuXG4gICAgICAgICAgICAvLyB2YWx1ZSBpcyBudWxsIHdoZW4gY2hpcHMgaXMgYWRkZWQsIHRlc3RpbmcgdmFsdWUgcHJldmVudCBoYXZpbmcgdHdvIHZhbHVlY2hhbmdlcyB0cmlnZ2VyZWRcbiAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuYXV0b2NvbXBsZXRlRGF0YVNlbGVjdGVkLmxlbmd0aCA+IDAgPyB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZCA6IG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZEl0ZW0gPSB0aGlzLmF1dG9jb21wbGV0ZURhdGEuZmluZCgoZGF0YSkgPT5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSAmJiBkYXRhLmxhYmVsICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZGF0YS5sYWJlbC50b0xvd2VyQ2FzZSgpLnRyaW0oKSA9PT0gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChmb3VuZEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZShmb3VuZEl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID8gdGhpcy5vbkNoYW5nZShuZXcgRXVpQXV0b0NvbXBsZXRlSXRlbSh7IGxhYmVsOiB2YWx1ZSB9KSkgOiB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5uZXh0KHRoaXMuX2ZpbHRlcignJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRDaGFuZ2UuZW1pdCh2YWx1ZSBhcyBzdHJpbmcpO1xuXG4gICAgICAgIGlmICghdGhpcy5hc3luYykge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8ICF2YWx1ZSA/IHZhbHVlIDogdmFsdWUubGFiZWw7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMubmV4dChcbiAgICAgICAgICAgICAgICB0aGlzLmlzSXRlbXNTb3J0ZWRcbiAgICAgICAgICAgICAgICAgICAgPyAodGhpcy5vcmRlckl0ZW1zKHRoaXMuX2ZpbHRlcihmaWx0ZXJWYWx1ZSBhcyBzdHJpbmcpLCB0aGlzLml0ZW1zU29ydE9yZGVyKSBhcyBFdWlBdXRvQ29tcGxldGVJdGVtW10pXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fZmlsdGVyKGZpbHRlclZhbHVlIGFzIHN0cmluZyksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHByaXZhdGUgb25Ub3VjaDogYW55ID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIF9maWx0ZXIoc3RyOiBzdHJpbmcpOiBFdWlBdXRvQ29tcGxldGVJdGVtW10ge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zOiBFdWlBdXRvQ29tcGxldGVJdGVtW10gPSBbXTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVEYXRhLmZvckVhY2goKGl0ZW06IEV1aUF1dG9Db21wbGV0ZUl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kSXRlbSA9XG4gICAgICAgICAgICAgICAgIXRoaXMuaXNEdXBsaWNhdGVWYWx1ZUFsbG93ZWQgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5maW5kKChzZWxlY3RlZEl0ZW06IEV1aUF1dG9Db21wbGV0ZUl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZEl0ZW0uaWQgPT09IGl0ZW0uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkgPT09IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICghZm91bmRJdGVtKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0cikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaGluZyA9PT0gJ2NvbnRhaW5zJyAmJiBpdGVtLmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzdHIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tYXRjaGluZyA9PT0gJ3N0YXJ0V2l0aCcgJiYgaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpLnN1YnN0cigwLCBzdHIudG9TdHJpbmcoKS5sZW5ndGgpID09PSBzdHIudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJdGVtc1NvcnRlZCA/ICh0aGlzLm9yZGVySXRlbXMoZmlsdGVyZWRJdGVtcywgdGhpcy5pdGVtc1NvcnRPcmRlcikgYXMgRXVpQXV0b0NvbXBsZXRlSXRlbVtdKSA6IGZpbHRlcmVkSXRlbXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYXBBc0NoaXAoKTogRXVpQ2hpcFtdIHtcbiAgICAgICAgY29uc3QgY2hpcHMgPSB0aGlzLmF1dG9jb21wbGV0ZURhdGFTZWxlY3RlZC5tYXAoXG4gICAgICAgICAgICAoc2VsZWN0ZWQpID0+XG4gICAgICAgICAgICAgICAgbmV3IEV1aUNoaXAoe1xuICAgICAgICAgICAgICAgICAgICBpZDogc2VsZWN0ZWQuaWQsXG4gICAgICAgICAgICAgICAgICAgIGV1aUludGVybmFsSWQ6IHNlbGVjdGVkLmV1aUludGVybmFsSWQsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBzZWxlY3RlZC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZUNsYXNzOiBzZWxlY3RlZC50eXBlQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgIGlzT3V0bGluZTogc2VsZWN0ZWQuaXNPdXRsaW5lLFxuICAgICAgICAgICAgICAgICAgICBpc1JvdW5kZWQ6IHNlbGVjdGVkLmlzUm91bmRlZCxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZUNsYXNzOiBzZWxlY3RlZC5zaXplQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgIGlzUmVtb3ZhYmxlOiBzZWxlY3RlZC5pc1JlbW92YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcE1lc3NhZ2U6IHNlbGVjdGVkLnRvb2x0aXA/LnRvb2x0aXBNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiBuZXcgRXVpQ2hpcFRvb2x0aXAoc2VsZWN0ZWQudG9vbHRpcCksXG4gICAgICAgICAgICAgICAgICAgIGljb25DbGFzczogc2VsZWN0ZWQuaWNvbkNsYXNzLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmlzQ2hpcHNTb3J0ZWQgPyAodGhpcy5vcmRlckl0ZW1zKGNoaXBzLCB0aGlzLmNoaXBzU29ydE9yZGVyKSBhcyBFdWlDaGlwW10pIDogY2hpcHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcmRlckl0ZW1zKHRhYjogRXVpQXV0b0NvbXBsZXRlSXRlbVtdIHwgRXVpQ2hpcFtdLCBzb3J0T3JkZXI6ICdBU0MnIHwgJ0RFU0MnKTogRXVpQXV0b0NvbXBsZXRlSXRlbVtdIHwgRXVpQ2hpcFtdIHtcbiAgICAgICAgdGFiLnNvcnQoKGE6IEV1aUF1dG9Db21wbGV0ZUl0ZW0gfCBFdWlDaGlwLCBiOiBFdWlBdXRvQ29tcGxldGVJdGVtIHwgRXVpQ2hpcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYU9iaiA9IGEubGFiZWwudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IGJPYmogPSBiLmxhYmVsLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGlmIChzb3J0T3JkZXIgPT09ICdBU0MnKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPCBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPiBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPiBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFPYmogPCBiT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRhYjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdyb3VwaW5nSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXN0aW5jdE9wdGlvbkdyb3VwcyA9IHRoaXMuYXV0b2NvbXBsZXRlRGF0YS5tYXAoKGl0ZW0pID0+XG4gICAgICAgICAgICB0aGlzLmdyb3VwQnkuc3BsaXQoJy4nKS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChwcmV2ID8gcHJldltjdXJyXSA6IG51bGwpLCBpdGVtIHx8IHNlbGYpLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGlzdGluY3RPcHRpb25Hcm91cHMgPSB0aGlzLmRpc3RpbmN0T3B0aW9uR3JvdXBzXG4gICAgICAgICAgICAuZmlsdGVyKChuLCBpKSA9PiB0aGlzLmRpc3RpbmN0T3B0aW9uR3JvdXBzLmluZGV4T2YobikgPT09IGkpXG4gICAgICAgICAgICAuc29ydCgoYTogc3RyaW5nLCBiOiBzdHJpbmcpID0+IChhID4gYiA/IDEgOiAtMSkpO1xuXG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChhdXRvY29tcGxldGVPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBsZXQgZ3JvdXBlZEl0ZW1zOiBFdWlBdXRvQ29tcGxldGVJdGVtW107XG4gICAgICAgICAgICB0aGlzLmRpc3RpbmN0T3B0aW9uR3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgZ3JvdXBlZEl0ZW1zID0gYXV0b2NvbXBsZXRlT3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZiA9IHRoaXMuZ3JvdXBCeS5zcGxpdCgnLicpLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHByZXYgPyBwcmV2W2N1cnJdIDogbnVsbCksIGl0ZW0gfHwgc2VsZik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgPT09IGdyb3VwO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJdGVtc1NvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBncm91cGVkSXRlbXMgPSB0aGlzLm9yZGVySXRlbXMoZ3JvdXBlZEl0ZW1zLCB0aGlzLml0ZW1zU29ydE9yZGVyKSBhcyBFdWlBdXRvQ29tcGxldGVJdGVtW107XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cGVkSXRlbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZ3JvdXBlZEl0ZW1zLFxuICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdOiBvZihncm91cGVkSXRlbXMpLFxuICAgICAgICAgICAgICAgIH0gYXMgeyBbaWQ6IHN0cmluZ106IE9ic2VydmFibGU8RXVpQXV0b0NvbXBsZXRlSXRlbVtdPiB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIG1pbi1oZWlnaHQgdmFsdWUgb2YgdGhlIGV1aS1hdXRvY29tcGxldGVfX29wdGlvbiBjbGFzc1xuICAgICAqIERlZmF1bHQ6IC0tZXVpLWJhc2Utc3BhY2luZy0zeGwgKDNyZW0gb24gZGVmYXVsdCAxNnB4LzFyZW0gYmFzaXMpXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTmV3SXRlbVNpemUoYmFzZUZvbnRTaXplID0gJzE2cHgnKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIChwYXJzZUludChiYXNlRm9udFNpemUsIDEwKSAqIDMpLnRvU3RyaW5nKCkgfHwgJyc7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImV1aS1hdXRvY29tcGxldGVfX2NvbnRhaW5lclwiIG1hdEF1dG9jb21wbGV0ZU9yaWdpbiAjb3JpZ2luPVwibWF0QXV0b2NvbXBsZXRlT3JpZ2luXCI+XG4gICAgPGRpdiBjbGFzcz1cImV1aS1hdXRvY29tcGxldGVfX3dyYXBwZXIgZXVpLWF1dG9jb21wbGV0ZV9fd3JhcHBlci0te3sgY2hpcHNQb3NpdGlvbiB9fVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiY2hpcHNQb3NpdGlvbiA9PT0gJ2JvdHRvbSdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNDaGlwc1wiPlxuICAgICAgICAgICAgPGV1aS1jaGlwLWxpc3RcbiAgICAgICAgICAgICAgICAjY2hpcExpc3RcbiAgICAgICAgICAgICAgICBbY2hpcHNdPVwiY2hpcHNcIlxuICAgICAgICAgICAgICAgIFtpc0dyaWRdPVwiaXNDaGlwc0dyaWRcIlxuICAgICAgICAgICAgICAgIFtpc0NoaXBzRHJhZ0FuZERyb3BdPVwiaXNDaGlwc0RyYWdBbmREcm9wXCJcbiAgICAgICAgICAgICAgICBbaXNDaGlwc1JlbW92YWJsZV09XCJpc0NoaXBzUmVtb3ZhYmxlICYmICFyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgW2lzQ2hpcHNTb3J0ZWRdPVwiaXNDaGlwc1NvcnRlZFwiXG4gICAgICAgICAgICAgICAgW2NoaXBzU29ydE9yZGVyXT1cImNoaXBzU29ydE9yZGVyXCJcbiAgICAgICAgICAgICAgICBbbWF4VmlzaWJsZUNoaXBzQ291bnRdPVwibWF4VmlzaWJsZUNoaXBzQ291bnRcIlxuICAgICAgICAgICAgICAgIFtpc01heFZpc2libGVDaGlwc09wZW5lZF09XCJpc01heFZpc2libGVDaGlwc09wZW5lZFwiXG4gICAgICAgICAgICAgICAgW3RvZ2dsZUxpbmtNb3JlTGFiZWxdPVwidG9nZ2xlTGlua01vcmVMYWJlbFwiXG4gICAgICAgICAgICAgICAgW3RvZ2dsZUxpbmtMZXNzTGFiZWxdPVwidG9nZ2xlTGlua0xlc3NMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2NoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XT1cImNoaXBzTGFiZWxUcnVuY2F0ZUNvdW50XCJcbiAgICAgICAgICAgICAgICBbZHJhZ0FuZERyb3BTb3VyY2VOYW1lXT1cImRyYWdBbmREcm9wU291cmNlTmFtZVwiXG4gICAgICAgICAgICAgICAgW2RyYWdBbmREcm9wQ29ubmVjdGVkVG9dPVwiZHJhZ0FuZERyb3BDb25uZWN0ZWRUb1wiXG4gICAgICAgICAgICAgICAgKGNoaXBEcm9wcGVkKT1cIm9uQ2hpcERyb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNoaXBEcmFnU3RhcnRlZCk9XCJvbkNoaXBEcmFnU3RhcnRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2hpcERyYWdSZWxlYXNlZCk9XCJvbkNoaXBEcmFnUmVsZWFzZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNoaXBSZW1vdmUpPVwib25DaGlwUmVtb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjaGlwbGlzdEZvY3VzKT1cIm9uQ2hpcExpc3RGb2N1cygpXCI+XG4gICAgICAgICAgICAgICAgPGV1aUNoaXBMaXN0QXBwZW5kQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImNoaXBzUG9zaXRpb24gPT09ICdpbnNpZGUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2V1aUNoaXBMaXN0QXBwZW5kQ29udGVudD5cbiAgICAgICAgICAgIDwvZXVpLWNoaXAtbGlzdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImNoaXBzUG9zaXRpb24gPT09ICd0b3AnIHx8ICFoYXNDaGlwc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmaWVsZD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXVpLWF1dG9jb21wbGV0ZV9fZmllbGQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGFzQ2hpcHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpQ2xlYXJhYmxlXT1cIiFyZWFkb25seSAmJiAhaXNMb2FkaW5nICYmICFpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtldWlMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBldWlJbnB1dFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICNhdXRvY29tcGxldGVJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgI2F1dG9jb21wbGV0ZUlucHV0VHJpZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlRGlzYWJsZWRdPVwicmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImF1dG9jb21wbGV0ZUNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnQXV0b2NvbXBsZXRlIElucHV0IEZpZWxkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXIpPVwib25DbGVhcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJib3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJhdXRvY29tcGxldGVJZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0NoaXBzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW2V1aUNsZWFyYWJsZV09XCIhcmVhZG9ubHkgJiYgIWlzTG9hZGluZyAmJiAhaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXVpTG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZXVpSW5wdXRUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAjYXV0b2NvbXBsZXRlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICNhdXRvY29tcGxldGVJbnB1dFRyaWdnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgcGxhY2Vob2xkZXIgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZURpc2FibGVkXT1cInJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJhdXRvY29tcGxldGVDb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlQ29ubmVjdGVkVG9dPVwiY2hpcHNQb3NpdGlvbiA9PT0gJ2luc2lkZScgPyBvcmlnaW4gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnQXV0b2NvbXBsZXRlIElucHV0IEZpZWxkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXIpPVwib25DbGVhcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJvbkZvY3VzT3V0KCk7IGFkZE9uQmx1ckhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFkZE9uRW50ZXJIYW5kbGVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uYmFja3NwYWNlKT1cIm9uS2V5RG93bkJhY2tzcGFjZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImJvdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1jb250cm9scz1cImF1dG9jb21wbGV0ZUlkXCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJhdXRvY29tcGxldGVJZFwiXG4gICAgICAgICAgICAgICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW3BhbmVsV2lkdGhdPVwicGFuZWxXaWR0aCA9PT0gJ2F1dG8nID8gbnVsbCA6IHBhbmVsV2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY2xhc3NMaXN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9BY3RpdmVGaXJzdE9wdGlvbl09XCJhdXRvQWN0aXZlRmlyc3RPcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cIm9uQ2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuZWQpPVwib25PcGVuKClcIlxuICAgICAgICAgICAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25PcHRpb25TZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncm91cEJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZpcnR1YWxTY3JvbGxpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2l6ZT1cIjQ4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5CdWZmZXJQeD1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4QnVmZmVyUHg9XCI3NTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCArICdweCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkaXN0aW5jdE9wdGlvbkdyb3VwIG9mIGRpc3RpbmN0T3B0aW9uR3JvdXBzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0Z3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktYXV0b2NvbXBsZXRlX19vcHRncm91cC0tY3VzdG9tXT1cImF1dG9jb21wbGV0ZU9wdEdyb3VwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXBlZEl0ZW1zW2Rpc3RpbmN0T3B0aW9uR3JvdXBdIHwgYXN5bmMpLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImRpc3RpbmN0T3B0aW9uR3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhdXRvY29tcGxldGVPcHRHcm91cFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aS1hdXRvY29tcGxldGVfX29wdGdyb3VwLS1jdXN0b20tb3B0Z3JvdXAtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF1dG9jb21wbGV0ZU9wdEdyb3VwVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB7IGxhYmVsOiBkaXN0aW5jdE9wdGlvbkdyb3VwIH0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwZWRJdGVtIG9mIGdyb3VwZWRJdGVtc1tkaXN0aW5jdE9wdGlvbkdyb3VwXSB8IGFzeW5jOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJncm91cGVkSXRlbS5pc0Rpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwZWRJdGVtLnR5cGVDbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbWF0LW9wdGlvbiBldWktYXV0b2NvbXBsZXRlX19vcHRpb24gZXVpLWF1dG9jb21wbGV0ZV9fb3B0aW9uLS0nICsgZ3JvdXBlZEl0ZW0udHlwZUNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdtYXQtb3B0aW9uIGV1aS1hdXRvY29tcGxldGVfX29wdGlvbidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5ldWktYXV0b2NvbXBsZXRlX19vcHRpb24tLWN1c3RvbV09XCJhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImdyb3VwZWRJdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJncm91cGVkSXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cInt7IGdyb3VwZWRJdGVtLmljb25DbGFzcyB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdyb3VwZWRJdGVtLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBncm91cGVkSXRlbSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0Z3JvdXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBCeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICN2aXJ0dWFsU2Nyb2xsaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1TaXplXT1cIml0ZW1TaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5CdWZmZXJQeD1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4QnVmZmVyUHg9XCI3NTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImNka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCArICdweCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cImxldCBhdXRvY29tcGxldGVPcHRpb24gb2YgYXV0b2NvbXBsZXRlT3B0aW9ucyB8IGFzeW5jOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXV0b2NvbXBsZXRlT3B0aW9uLmlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGVPcHRpb24udHlwZUNsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnbWF0LW9wdGlvbiBldWktYXV0b2NvbXBsZXRlX19vcHRpb24gZXVpLWF1dG9jb21wbGV0ZV9fb3B0aW9uLS0nICsgYXV0b2NvbXBsZXRlT3B0aW9uLnR5cGVDbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ21hdC1vcHRpb24gZXVpLWF1dG9jb21wbGV0ZV9fb3B0aW9uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXVpLWF1dG9jb21wbGV0ZV9fb3B0aW9uLS1jdXN0b21dPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubWF0LW1kYy1vcHRpb24tYWN0aXZlXT1cImkgPT09IHNlbGVjdGVkT3B0aW9uSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MubWRjLWxpc3QtaXRlbS0tc2VsZWN0ZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYXV0b2NvbXBsZXRlT3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXV0b2NvbXBsZXRlT3B0aW9uLmljb25DbGFzc1wiIGNsYXNzPVwie3sgYXV0b2NvbXBsZXRlT3B0aW9uLmljb25DbGFzcyB9fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhdXRvY29tcGxldGVPcHRpb25UZW1wbGF0ZVwiPnt7IGF1dG9jb21wbGV0ZU9wdGlvbi5sYWJlbCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXV0b2NvbXBsZXRlT3B0aW9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImF1dG9jb21wbGV0ZU9wdGlvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGF1dG9jb21wbGV0ZU9wdGlvbiB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|