ontimize-web-ngx 15.7.0 → 15.7.1
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/esm2020/lib/components/app-header/o-app-header.component.mjs +4 -4
- package/esm2020/lib/components/app-header/o-app-header.module.mjs +5 -5
- package/esm2020/lib/components/app-sidenav/image/o-app-sidenav-image.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/menu-group/o-app-sidenav-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/menu-item/o-app-sidenav-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/o-app-sidenav.component.mjs +4 -4
- package/esm2020/lib/components/app-sidenav/o-app-sidenav.module.mjs +5 -5
- package/esm2020/lib/components/bar-menu/locale-menu-item/o-locale-bar-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-group/o-bar-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-item/o-bar-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-nested/o-bar-menu-nested.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/menu-separator/o-bar-menu-separator.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu-base.class.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu.component.mjs +4 -4
- package/esm2020/lib/components/bar-menu/o-bar-menu.module.mjs +5 -5
- package/esm2020/lib/components/bar-menu/o-base-menu-item.class.mjs +4 -4
- package/esm2020/lib/components/breadcrumb/o-breadcrumb.component.mjs +4 -4
- package/esm2020/lib/components/breadcrumb/o-breadcrumb.module.mjs +5 -5
- package/esm2020/lib/components/button/o-button.component.mjs +4 -4
- package/esm2020/lib/components/button/o-button.module.mjs +5 -5
- package/esm2020/lib/components/button-toggle/o-button-toggle-group/o-button-toggle-group.component.mjs +4 -4
- package/esm2020/lib/components/button-toggle/o-button-toggle.component.mjs +4 -4
- package/esm2020/lib/components/button-toggle/o-button-toggle.module.mjs +5 -5
- package/esm2020/lib/components/card-menu-item/o-card-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/card-menu-item/o-card-menu-item.module.mjs +5 -5
- package/esm2020/lib/components/container/column/o-column.component.mjs +4 -4
- package/esm2020/lib/components/container/column/o-column.module.mjs +5 -5
- package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.component.mjs +4 -4
- package/esm2020/lib/components/container/column-collapsible/o-column-collapsible.module.mjs +5 -5
- package/esm2020/lib/components/container/o-container-collapsible-component.class.mjs +4 -4
- package/esm2020/lib/components/container/o-container-component.class.mjs +4 -4
- package/esm2020/lib/components/container/row/o-row.component.mjs +4 -4
- package/esm2020/lib/components/container/row/o-row.module.mjs +5 -5
- package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.component.mjs +4 -4
- package/esm2020/lib/components/container/row-collapsible/o-row-collapsible.module.mjs +5 -5
- package/esm2020/lib/components/contextmenu/context-menu/o-context-menu-content.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu/o-wrapper-content-menu/o-wrapper-content-menu.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-group/o-context-menu-group.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-item/o-context-menu-item.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/context-menu-separator/o-context-menu-separator.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-content-menu-base-item.class.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu-overlay.service.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.component.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.directive.mjs +4 -4
- package/esm2020/lib/components/contextmenu/o-context-menu.module.mjs +5 -5
- package/esm2020/lib/components/contextmenu/o-context-menu.service.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/dual-list-selector-item/date/o-dual-list-selector-date-item.component.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +4 -4
- package/esm2020/lib/components/dual-list-selector/o-dual-list-selector.module.mjs +5 -5
- package/esm2020/lib/components/expandable-container/o-expandable-container.component.mjs +4 -4
- package/esm2020/lib/components/expandable-container/o-expandable-container.module.mjs +5 -5
- package/esm2020/lib/components/filter-builder/filter-builder-menu/filter-builder-menu.component.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder-clear.directive.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder-query.directive.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder.component.mjs +4 -4
- package/esm2020/lib/components/filter-builder/o-filter-builder.module.mjs +5 -5
- package/esm2020/lib/components/form/guards/o-form-can-deactivate.guard.mjs +4 -4
- package/esm2020/lib/components/form/navigation/o-form-confirm-exit.service.mjs +4 -4
- package/esm2020/lib/components/form/navigation/o-form-navigation.component.mjs +4 -4
- package/esm2020/lib/components/form/o-form.component.mjs +4 -4
- package/esm2020/lib/components/form/o-form.module.mjs +5 -5
- package/esm2020/lib/components/form/services/o-form-message.service.mjs +4 -4
- package/esm2020/lib/components/form/toolbar/o-form-toolbar.component.mjs +4 -4
- package/esm2020/lib/components/form/toolbar/o-form-toolbar.module.mjs +5 -5
- package/esm2020/lib/components/form-container/o-form-container.component.mjs +4 -4
- package/esm2020/lib/components/form-container/o-form-container.module.mjs +5 -5
- package/esm2020/lib/components/grid/grid-item/o-grid-item.component.mjs +4 -4
- package/esm2020/lib/components/grid/grid-item/o-grid-item.directive.mjs +4 -4
- package/esm2020/lib/components/grid/o-grid.component.mjs +4 -4
- package/esm2020/lib/components/grid/o-grid.module.mjs +5 -5
- package/esm2020/lib/components/grid/skeketon/o-grid-skeleton.component.mjs +4 -4
- package/esm2020/lib/components/image/fullscreen/fullscreen-dialog.component.mjs +4 -4
- package/esm2020/lib/components/image/o-image.component.mjs +4 -4
- package/esm2020/lib/components/image/o-image.module.mjs +5 -5
- package/esm2020/lib/components/input/checkbox/o-checkbox.component.mjs +4 -4
- package/esm2020/lib/components/input/checkbox/o-checkbox.module.mjs +5 -5
- package/esm2020/lib/components/input/combo/combo-renderer/boolean/o-combo-renderer-boolean.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/currency/o-combo-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/date/o-combo-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/icon/o-combo-renderer-icon.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/integer/o-combo-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/o-combo-renderer.class.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/percentage/o-combo-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-renderer/real/o-combo-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/combo-search/o-combo-search.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/o-combo.component.mjs +4 -4
- package/esm2020/lib/components/input/combo/o-combo.module.mjs +5 -5
- package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +4 -4
- package/esm2020/lib/components/input/currency-input/o-currency-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-input/o-date-input.component.mjs +4 -4
- package/esm2020/lib/components/input/date-input/o-date-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-range/o-daterange-input.component.mjs +4 -4
- package/esm2020/lib/components/input/date-range/o-daterange-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.component.mjs +4 -4
- package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.directive.mjs +4 -4
- package/esm2020/lib/components/input/date-range-legacy/o-daterange-input.module.mjs +5 -5
- package/esm2020/lib/components/input/date-range-legacy/o-daterange-picker.component.mjs +4 -4
- package/esm2020/lib/components/input/email-input/o-email-input.component.mjs +4 -4
- package/esm2020/lib/components/input/email-input/o-email-input.module.mjs +5 -5
- package/esm2020/lib/components/input/file-input/o-file-input.component.mjs +4 -4
- package/esm2020/lib/components/input/file-input/o-file-input.module.mjs +5 -5
- package/esm2020/lib/components/input/hour-input/index.mjs +4 -0
- package/esm2020/lib/components/input/hour-input/o-hour-input.component.mjs +38 -9
- package/esm2020/lib/components/input/hour-input/o-hour-input.directive.mjs +46 -0
- package/esm2020/lib/components/input/hour-input/o-hour-input.module.mjs +8 -7
- package/esm2020/lib/components/input/html-input/o-html-input.component.mjs +4 -4
- package/esm2020/lib/components/input/html-input/o-html-input.module.mjs +5 -5
- package/esm2020/lib/components/input/index.mjs +2 -3
- package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +4 -4
- package/esm2020/lib/components/input/integer-input/o-integer-input.module.mjs +5 -5
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/currency/o-list-picker-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/date/o-list-picker-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/integer/o-list-picker-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/o-list-picker-renderer.class.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/percentage/o-list-picker-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/listpicker-renderer/real/o-list-picker-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker.component.mjs +4 -4
- package/esm2020/lib/components/input/listpicker/o-list-picker.module.mjs +5 -5
- package/esm2020/lib/components/input/nif-input/o-nif-input.component.mjs +4 -4
- package/esm2020/lib/components/input/nif-input/o-nif-input.module.mjs +5 -5
- package/esm2020/lib/components/input/o-boolean-form-data-component.class.mjs +4 -4
- package/esm2020/lib/components/input/o-form-service-component.class.mjs +4 -4
- package/esm2020/lib/components/input/password-input/o-password-input.component.mjs +4 -4
- package/esm2020/lib/components/input/password-input/o-password-input.module.mjs +5 -5
- package/esm2020/lib/components/input/percent-input/o-percent-input.component.mjs +4 -4
- package/esm2020/lib/components/input/percent-input/o-percent-input.module.mjs +5 -5
- package/esm2020/lib/components/input/phone-input/data/country-code.mjs +4 -4
- package/esm2020/lib/components/input/phone-input/o-phone-input.component.mjs +4 -4
- package/esm2020/lib/components/input/phone-input/o-phone-input.module.mjs +5 -5
- package/esm2020/lib/components/input/radio/o-radio.component.mjs +4 -4
- package/esm2020/lib/components/input/radio/o-radio.module.mjs +5 -5
- package/esm2020/lib/components/input/real-input/o-real-input.component.mjs +4 -4
- package/esm2020/lib/components/input/real-input/o-real-input.module.mjs +5 -5
- package/esm2020/lib/components/input/search-input/o-search-input.component.mjs +4 -4
- package/esm2020/lib/components/input/search-input/o-search-input.module.mjs +5 -5
- package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.component.mjs +4 -4
- package/esm2020/lib/components/input/slide-toggle/o-slide-toggle.module.mjs +5 -5
- package/esm2020/lib/components/input/slider/o-slider.component.mjs +4 -4
- package/esm2020/lib/components/input/slider/o-slider.module.mjs +5 -5
- package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +4 -4
- package/esm2020/lib/components/input/text-input/o-text-input.module.mjs +5 -5
- package/esm2020/lib/components/input/textarea-input/o-textarea-input.component.mjs +4 -4
- package/esm2020/lib/components/input/textarea-input/o-textarea-input.module.mjs +5 -5
- package/esm2020/lib/components/input/time-input/o-time-input.component.mjs +4 -4
- package/esm2020/lib/components/input/time-input/o-time-input.module.mjs +5 -5
- package/esm2020/lib/components/language-selector/o-language-selector.component.mjs +4 -4
- package/esm2020/lib/components/language-selector/o-language-selector.module.mjs +5 -5
- package/esm2020/lib/components/list/list-item/o-list-item.component.mjs +4 -4
- package/esm2020/lib/components/list/list-item/o-list-item.directive.mjs +4 -4
- package/esm2020/lib/components/list/o-list.component.mjs +4 -4
- package/esm2020/lib/components/list/o-list.module.mjs +5 -5
- package/esm2020/lib/components/list/renderers/avatar/o-list-item-avatar.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/card/o-list-item-card.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/card-image/o-list-item-card-image.component.mjs +4 -4
- package/esm2020/lib/components/list/renderers/o-list-item-card-renderer.class.mjs +4 -4
- package/esm2020/lib/components/list/renderers/o-list-item-text-renderer.class.mjs +4 -4
- package/esm2020/lib/components/list/renderers/text/o-list-item-text.component.mjs +4 -4
- package/esm2020/lib/components/list/skeleton/o-list-skeleton.component.mjs +4 -4
- package/esm2020/lib/components/material/ckeditor/ck-editor.component.mjs +4 -4
- package/esm2020/lib/components/material/ckeditor/ck-editor.module.mjs +5 -5
- package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.component.mjs +4 -4
- package/esm2020/lib/components/o-data-toolbar/o-data-toolbar.module.mjs +5 -5
- package/esm2020/lib/components/o-form-data-component.class.mjs +4 -4
- package/esm2020/lib/components/o-repeatable-skeleton.component.mjs +4 -4
- package/esm2020/lib/components/o-service-base-component.class.mjs +15 -10
- package/esm2020/lib/components/o-service-component.class.mjs +7 -7
- package/esm2020/lib/components/o-skeleton.component.mjs +4 -4
- package/esm2020/lib/components/table/column/calculated/o-table-column-calculated.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/boolean/o-table-cell-editor-boolean.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/date/o-table-cell-editor-date.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/email/o-table-cell-editor-email.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.mjs +10 -4
- package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/text/o-table-cell-editor-text.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.mjs +26 -12
- package/esm2020/lib/components/table/column/cell-renderer/action/o-table-cell-renderer-action.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/boolean/o-table-cell-renderer-boolean.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/currency/o-table-cell-renderer-currency.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/date/o-table-cell-renderer-date.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/image/o-table-cell-renderer-image.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/integer/o-table-cell-renderer-integer.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/o-base-table-cell-renderer.class.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/percentage/o-table-cell-renderer-percentage.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/real/o-table-cell-renderer-real.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/service/o-table-cell-renderer-service.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/time/o-table-cell-renderer-time.component.mjs +4 -4
- package/esm2020/lib/components/table/column/cell-renderer/translate/o-table-cell-renderer-translate.component.mjs +4 -4
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/contextmenu/o-table-context-menu.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +137 -66
- package/esm2020/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/o-table-base-dialog.class.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.mjs +6 -6
- package/esm2020/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.mjs +11 -14
- package/esm2020/lib/components/table/extensions/footer/paginator/o-table-mat-paginator-intl.mjs +4 -4
- package/esm2020/lib/components/table/extensions/footer/paginator/o-table-paginator.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-column-resizer/o-table-column-resizer.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-column-select-all/o-table-column-select-all.directive.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-filter/columns/o-table-columns-filter-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-filter/o-table-columns-filter.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-grouping/columns/o-table-columns-grouping-column.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-columns-grouping/o-table-columns-grouping.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-header/o-table-header.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-header-column-filter-icon/o-table-header-column-filter-icon.component.mjs +5 -5
- package/esm2020/lib/components/table/extensions/header/table-header-select-all/o-table-header-select-all.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-insertable-row/o-table-insertable-row.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-option/o-table-option.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/header/table-quickfilter/o-table-quickfilter.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table-datasource.service.mjs +4 -4
- package/esm2020/lib/components/table/extensions/o-table-strategy.service.mjs +10 -4
- package/esm2020/lib/components/table/extensions/pipes/o-table-row-class.pipe.mjs +4 -4
- package/esm2020/lib/components/table/extensions/row/o-table-row.directive.mjs +4 -4
- package/esm2020/lib/components/table/extensions/row/table-row-expandable/o-table-row-expandable.component.mjs +4 -4
- package/esm2020/lib/components/table/extensions/skeleton/o-table-skeleton.component.mjs +19 -19
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort-header.mjs +14 -7
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort-module.mjs +5 -5
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +4 -4
- package/esm2020/lib/components/table/index.mjs +2 -1
- package/esm2020/lib/components/table/o-table-base.class.mjs +1 -1
- package/esm2020/lib/components/table/o-table-loading.service.mjs +113 -0
- package/esm2020/lib/components/table/o-table.component.mjs +66 -61
- package/esm2020/lib/components/table/o-table.module.mjs +12 -8
- package/esm2020/lib/components/tree/header/tree-menu/o-tree-menu.component.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree-dao.service.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree.component.mjs +4 -4
- package/esm2020/lib/components/tree/o-tree.module.mjs +5 -5
- package/esm2020/lib/components/tree/tree-node/tree-node.component.mjs +4 -4
- package/esm2020/lib/components/user-info/o-user-info.component.mjs +4 -4
- package/esm2020/lib/components/user-info/o-user-info.module.mjs +5 -5
- package/esm2020/lib/components/user-info/user-info-configuration/o-user-info-configuration.directive.mjs +4 -4
- package/esm2020/lib/components/user-info/user-info-configuration-item/o-user-info-configuration-item.directive.mjs +4 -4
- package/esm2020/lib/config/o-modules.mjs +5 -5
- package/esm2020/lib/directives/input-regulate.directive.mjs +4 -4
- package/esm2020/lib/directives/keyboard-listener.directive.mjs +4 -4
- package/esm2020/lib/directives/locker.directive.mjs +4 -4
- package/esm2020/lib/directives/o-file-drag-and-drop.directive.mjs +4 -4
- package/esm2020/lib/directives/o-hidden.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-error.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-prefix.directive.mjs +4 -4
- package/esm2020/lib/directives/o-mat-suffix.directive.mjs +4 -4
- package/esm2020/lib/directives/o-tab-group.directive.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/app-layout-header/o-app-layout-header.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/app-layout-sidenav/o-app-layout-sidenav.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/o-app-layout.component.mjs +4 -4
- package/esm2020/lib/layouts/app-layout/o-app-layout.module.mjs +5 -5
- package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.component.mjs +4 -4
- package/esm2020/lib/layouts/card-menu-layout/o-card-menu-layout.module.mjs +5 -5
- package/esm2020/lib/layouts/form-layout/dialog/o-form-layout-dialog.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/dialog/options/o-form-layout-dialog-options.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/directives/o-form-layout-manager-content.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/guards/o-form-layout-can-activate-child.guard.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/o-form-layout-manager.module.mjs +5 -5
- package/esm2020/lib/layouts/form-layout/split-pane/o-form-layout-split-pane.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/split-pane/options/o-form-layout-split-pane-options.directive.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/tabgroup/o-form-layout-tabgroup.component.mjs +4 -4
- package/esm2020/lib/layouts/form-layout/tabgroup/options/o-form-layout-tabgroup-options.directive.mjs +4 -4
- package/esm2020/lib/ontimize-web-ngx.module.mjs +5 -5
- package/esm2020/lib/pipes/columns-filter.pipe.mjs +4 -4
- package/esm2020/lib/pipes/is-empty-value.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-currency.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-icon.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-integer.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-moment.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-percentage.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-real.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-safe.pipe.mjs +4 -4
- package/esm2020/lib/pipes/o-translate.pipe.mjs +8 -8
- package/esm2020/lib/pipes/order-by.pipe.mjs +4 -4
- package/esm2020/lib/services/app-menu.service.mjs +4 -4
- package/esm2020/lib/services/appearance.service.mjs +4 -4
- package/esm2020/lib/services/auth-guard.service.mjs +4 -4
- package/esm2020/lib/services/auth.service.mjs +4 -4
- package/esm2020/lib/services/base-service-response.adapter.mjs +4 -4
- package/esm2020/lib/services/base-service.class.mjs +4 -4
- package/esm2020/lib/services/currency.service.mjs +4 -4
- package/esm2020/lib/services/dialog.service.mjs +4 -4
- package/esm2020/lib/services/icon.service.mjs +4 -4
- package/esm2020/lib/services/jsonapi/jsonapi-preferences.service.mjs +4 -4
- package/esm2020/lib/services/jsonapi/jsonapi-service-response.adapter.mjs +4 -4
- package/esm2020/lib/services/jsonapi/jsonapi.service.mjs +4 -4
- package/esm2020/lib/services/local-storage.service.mjs +4 -4
- package/esm2020/lib/services/login-storage.service.mjs +4 -4
- package/esm2020/lib/services/moment.service.mjs +4 -4
- package/esm2020/lib/services/navigation.service.mjs +4 -4
- package/esm2020/lib/services/number.service.mjs +4 -4
- package/esm2020/lib/services/o-auth.service.mjs +4 -4
- package/esm2020/lib/services/o-breadcrumb.service.mjs +4 -4
- package/esm2020/lib/services/o-error-dialog-manager.service.mjs +4 -4
- package/esm2020/lib/services/o-form-layout-manager.service.mjs +4 -4
- package/esm2020/lib/services/o-modules-info.service.mjs +4 -4
- package/esm2020/lib/services/o-user-info.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/o-preference-response.adapter.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-base-service.class.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-ee.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-export.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-file.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-preferences.service.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize-service-response.adapter.mjs +4 -4
- package/esm2020/lib/services/ontimize/ontimize.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-base-provider.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-provider-3x.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-export-data-provider.service.mjs +4 -4
- package/esm2020/lib/services/ontimize-icon-registry.service.mjs +4 -4
- package/esm2020/lib/services/pagination-context.service.mjs +4 -4
- package/esm2020/lib/services/parser/o-service-response.parser.mjs +4 -4
- package/esm2020/lib/services/permissions/o-permissions.module.mjs +5 -5
- package/esm2020/lib/services/permissions/ontimize-ee-permissions.service.mjs +4 -4
- package/esm2020/lib/services/permissions/ontimize-permissions.service.mjs +4 -4
- package/esm2020/lib/services/permissions/permissions-can-activate.guard.mjs +4 -4
- package/esm2020/lib/services/permissions/permissions.service.mjs +4 -4
- package/esm2020/lib/services/remote-config.service.mjs +5 -5
- package/esm2020/lib/services/request-adapter/jsonapi-request-arguments.adapter.mjs +4 -4
- package/esm2020/lib/services/request-adapter/ontimize-request-arguments.adapter.mjs +4 -4
- package/esm2020/lib/services/share-can-activate-child.service.mjs +4 -4
- package/esm2020/lib/services/snackbar.service.mjs +4 -4
- package/esm2020/lib/services/state/o-app-menu-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-component-state.service.mjs +10 -10
- package/esm2020/lib/services/state/o-filter-builder-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-form-layout-manager-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-grid-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-list-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-table-component-state.class.mjs +1 -1
- package/esm2020/lib/services/state/o-table-component-state.service.mjs +4 -4
- package/esm2020/lib/services/state/o-tree-component-state.service.mjs +4 -4
- package/esm2020/lib/services/translate/o-translate.parser.mjs +4 -4
- package/esm2020/lib/services/translate/o-translate.service.mjs +4 -4
- package/esm2020/lib/shared/components/dialog/o-dialog-internal.component.mjs +4 -4
- package/esm2020/lib/shared/components/dialog/o-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/error403/o-error-403.component.mjs +4 -4
- package/esm2020/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.mjs +4 -4
- package/esm2020/lib/shared/components/snackbar/o-snackbar-base.class.mjs +4 -4
- package/esm2020/lib/shared/components/snackbar/o-snackbar.component.mjs +4 -4
- package/esm2020/lib/shared/components/validation/o-error.component.mjs +4 -4
- package/esm2020/lib/shared/components/validation/o-validator.component.mjs +4 -4
- package/esm2020/lib/shared/material/custom.material.module.mjs +5 -5
- package/esm2020/lib/shared/material/date/ontimize-moment-date-adapter.mjs +4 -4
- package/esm2020/lib/shared/shared.module.mjs +5 -5
- package/esm2020/lib/types/aggregate-function.type.mjs +1 -1
- package/esm2020/lib/types/table/o-table-global-config.type.mjs +1 -1
- package/fesm2015/ontimize-web-ngx.mjs +1582 -1283
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +1567 -1280
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/dual-list-selector/o-dual-list-selector.component.d.ts +1 -1
- package/lib/components/input/hour-input/index.d.ts +3 -0
- package/lib/components/input/hour-input/o-hour-input.component.d.ts +6 -2
- package/lib/components/input/hour-input/o-hour-input.directive.d.ts +8 -0
- package/lib/components/input/hour-input/o-hour-input.module.d.ts +5 -4
- package/lib/components/input/index.d.ts +1 -2
- package/lib/components/o-service-base-component.class.d.ts +1 -0
- package/lib/components/table/column/cell-editor/o-base-table-cell-editor.class.d.ts +5 -3
- package/lib/components/table/column/cell-editor/time/o-table-cell-editor-time.component.d.ts +2 -2
- package/lib/components/table/extensions/default-o-table.datasource.d.ts +6 -1
- package/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.d.ts +1 -1
- package/lib/components/table/extensions/footer/aggregate/o-table-column-aggregate.component.d.ts +1 -1
- package/lib/components/table/extensions/footer/expanded/o-table-expanded-footer.directive.d.ts +1 -2
- package/lib/components/table/extensions/o-table-strategy.service.d.ts +2 -1
- package/lib/components/table/extensions/skeleton/o-table-skeleton.component.d.ts +1 -0
- package/lib/components/table/extensions/sort/o-mat-sort-header.d.ts +5 -3
- package/lib/components/table/index.d.ts +1 -0
- package/lib/components/table/o-table-base.class.d.ts +3 -1
- package/lib/components/table/o-table-loading.service.d.ts +28 -0
- package/lib/components/table/o-table.component.d.ts +3 -1
- package/lib/components/table/o-table.module.d.ts +2 -1
- package/lib/services/state/o-table-component-state.class.d.ts +1 -1
- package/lib/types/aggregate-function.type.d.ts +2 -1
- package/lib/types/table/o-table-global-config.type.d.ts +4 -0
- package/package.json +2 -2
|
@@ -666,8 +666,8 @@ export class OTreeComponent extends AbstractOServiceComponent {
|
|
|
666
666
|
return this.daoTree.queryNodeChildren(flatNode, this.recursive);
|
|
667
667
|
}
|
|
668
668
|
}
|
|
669
|
-
OTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
670
|
-
OTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
669
|
+
OTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: forwardRef(() => OFormComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
670
|
+
OTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTreeComponent, selector: "o-tree", inputs: { oattr: ["attr", "oattr"], service: "service", entity: "entity", columns: "columns", keys: "keys", parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], insertButton: ["insert-button", "insertButton"], refreshButton: ["refresh-button", "refreshButton"], deleteButton: ["delete-button", "deleteButton"], visibleColumns: ["visible-columns", "visibleColumns"], selectAllCheckbox: ["select-all-checkbox", "selectAllCheckbox"], separator: "separator", parentColumn: ["parent-column", "parentColumn"], sortColumn: ["sort-column", "sortColumn"], selectAllCheckboxVisible: ["select-all-checkbox-visible", "selectAllCheckboxVisible"], filterCaseSensitive: ["filter-case-sensitive", "filterCaseSensitive"], quickFilter: ["quick-filter", "quickFilter"], quickFilterPlaceholder: ["quick-filter-placeholder", "quickFilterPlaceholder"], quickFilterColumns: ["quick-filter-columns", "quickFilterColumns"], detailMode: ["detail-mode", "detailMode"], detailFormRoute: ["detail-form-route", "detailFormRoute"], showButtonsText: ["show-buttons-text", "showButtonsText"], rootTitle: ["root-title", "rootTitle"], recursive: "recursive", route: "route" }, outputs: { onNodeSelected: "onNodeSelected", onNodeExpanded: "onNodeExpanded", onNodeCollapsed: "onNodeCollapsed", onLoadNextLevel: "onLoadNextLevel", onDataLoaded: "onDataLoaded", onNodeClick: "onNodeClick" }, host: { properties: { "class.o-tree": "true" } }, providers: [
|
|
671
671
|
OTreeDao,
|
|
672
672
|
OntimizeServiceProvider,
|
|
673
673
|
ComponentStateServiceProvider,
|
|
@@ -697,7 +697,7 @@ __decorate([
|
|
|
697
697
|
BooleanInputConverter(),
|
|
698
698
|
__metadata("design:type", Boolean)
|
|
699
699
|
], OTreeComponent.prototype, "recursive", void 0);
|
|
700
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
700
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeComponent, decorators: [{
|
|
701
701
|
type: Component,
|
|
702
702
|
args: [{ selector: 'o-tree', inputs: DEFAULT_INPUTS_O_TREE, outputs: DEFAULT_OUTPUTS_O_TREE, encapsulation: ViewEncapsulation.None, host: {
|
|
703
703
|
'[class.o-tree]': 'true'
|
|
@@ -728,4 +728,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
728
728
|
type: ContentChild,
|
|
729
729
|
args: [forwardRef(() => OTreeNodeComponent), { descendants: false }]
|
|
730
730
|
}] } });
|
|
731
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFHakcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThC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Y2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgT1RyZWVDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLXRyZWUtY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyZWVQZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tdHJlZS1wZXJtaXNzaW9ucy50eXBlJztcbmltcG9ydCB7IE9UcmVlRmxhdE5vZGUgfSBmcm9tICcuLi8uLi90eXBlcy90cmVlLWZsYXQtbm9kZS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL2ZpbHRlci1leHByZXNzaW9uLnV0aWxzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RPU2VydmljZUNvbXBvbmVudCB9IGZyb20gJy4uL28tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgT1RyZWVEYW8gfSBmcm9tICcuL28tdHJlZS1kYW8uc2VydmljZSc7XG5pbXBvcnQgeyBPVHJlZURhdGFTb3VyY2UgfSBmcm9tICcuL28tdHJlZS5kYXRhc291cmNlJztcbmltcG9ydCB7IE9UcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlL3RyZWUtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VydmljZVV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC9zZXJ2aWNlLnV0aWxzJztcbmltcG9ydCB7IE9QZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tcGVybWlzc2lvbnMudHlwZSc7XG5pbXBvcnQgeyBTUUxPcmRlciB9IGZyb20gJy4uLy4uL3R5cGVzL3NxbC1vcmRlci50eXBlJztcbmltcG9ydCB7IE9RdWVyeURhdGFBcmdzIH0gZnJvbSAnLi4vLi4vdHlwZXMvcXVlcnktZGF0YS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE9UcmVlQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tdHJlZS1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgT1F1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vLi4vdHlwZXMvcXVlcnktcGFyYW1zLnR5cGUnO1xuaW1wb3J0IHsgT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSB9IGZyb20gJy4uLy4uL2luamVjdGlvbi10b2tlbnMnO1xuXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RSRUUgPSBbXG4gIC8vIGF0dHIgW3N0cmluZ106IGxpc3QgaWRlbnRpZmllci4gSXQgaXMgbWFuZGF0b3J5IGlmIGRhdGEgYXJlIHByb3ZpZGVkIHRocm91Z2ggdGhlIGRhdGEgYXR0cmlidXRlLiBEZWZhdWx0OiBlbnRpdHkgKGlmIHNldCkuXG4gICdvYXR0cjogYXR0cicsXG5cbiAgLy8gc2VydmljZSBbc3RyaW5nXTogSkVFIHNlcnZpY2UgcGF0aC4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdzZXJ2aWNlJyxcblxuICAvLyBlbnRpdHkgW3N0cmluZ106IGVudGl0eSBvZiB0aGUgc2VydmljZS4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdlbnRpdHknLFxuXG4gIC8vIGNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGVudGl0eSwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdjb2x1bW5zJyxcblxuICAvLyBrZXlzIFtzdHJpbmddOiBlbnRpdHkga2V5cywgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdrZXlzJyxcblxuICAvLyBwYXJlbnQta2V5cyBbc3RyaW5nXTogcGFyZW50IGtleXMgdG8gZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3BhcmVudEtleXM6IHBhcmVudC1rZXlzJyxcblxuICAvLyBxdWVyeS1tZXRob2QgW3N0cmluZ106IG5hbWUgb2YgdGhlIHNlcnZpY2UgbWV0aG9kIHRvIHBlcmZvcm0gcXVlcmllcy4gRGVmYXVsdDogcXVlcnkuXG4gICdxdWVyeU1ldGhvZDogcXVlcnktbWV0aG9kJyxcblxuICAvLyBpbnNlcnQtYnV0dG9uIFtub3x5ZXNdOiBzaG93IGluc2VydCBidXR0b24uIERlZmF1bHQ6IHllcy5cbiAgJ2luc2VydEJ1dHRvbjogaW5zZXJ0LWJ1dHRvbicsXG5cbiAgLy8gcmVmcmVzaC1idXR0b24gW25vfHllc106IHNob3cgcmVmcmVzaCBidXR0b24uIERlZmF1bHQ6IHllcy5cbiAgJ3JlZnJlc2hCdXR0b246IHJlZnJlc2gtYnV0dG9uJyxcblxuICAvLyBkZWxldGUtYnV0dG9uIFtub3x5ZXNdOiBzaG93IGRlbGV0ZSBidXR0b24gd2hlbiB1c2VyIHNlbGVjdCBpdGVtcy4gRGVmYXVsdDogeWVzLlxuICAnZGVsZXRlQnV0dG9uOiBkZWxldGUtYnV0dG9uJyxcblxuICAvLyBFTkQgT0YgREVGQVVMVF9JTlBVVFNfT19TRVJWSUNFX0NPTVBPTkVOVFxuICAndmlzaWJsZUNvbHVtbnM6IHZpc2libGUtY29sdW1ucycsXG4gICdzZWxlY3RBbGxDaGVja2JveDogc2VsZWN0LWFsbC1jaGVja2JveCcsXG4gICdzZXBhcmF0b3InLFxuICAncGFyZW50Q29sdW1uOiBwYXJlbnQtY29sdW1uJyxcbiAgJ3NvcnRDb2x1bW46IHNvcnQtY29sdW1uJyxcbiAgLy8gc2VsZWN0LWFsbC1jaGVja2JveC12aXNpYmxlIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgc2VsZWN0aW9uIGNoZWNrIGJveGVzLkRlZmF1bHQ6IG5vLlxuICAnc2VsZWN0QWxsQ2hlY2tib3hWaXNpYmxlOiBzZWxlY3QtYWxsLWNoZWNrYm94LXZpc2libGUnLFxuICAvLyBmaWx0ZXIgW3llc3xub3x0cnVlfGZhbHNlXTogd2hldGhlciBmaWx0ZXIgaXMgY2FzZSBzZW5zaXRpdmUuIERlZmF1bHQ6IG5vLlxuICAnZmlsdGVyQ2FzZVNlbnNpdGl2ZTogZmlsdGVyLWNhc2Utc2Vuc2l0aXZlJyxcbiAgLy8gcXVpY2stZmlsdGVyIFtub3x5ZXNdOiBzaG93IHF1aWNrIGZpbHRlci4gRGVmYXVsdDogeWVzLlxuICAncXVpY2tGaWx0ZXI6IHF1aWNrLWZpbHRlcicsXG4gIC8vIHF1aWNrLWZpbHRlci1wbGFjZWhvbGRlcjogcXVpY2sgZmlsdGVyIHBsYWNlaG9sZGVyXG4gICdxdWlja0ZpbHRlclBsYWNlaG9sZGVyOiBxdWljay1maWx0ZXItcGxhY2Vob2xkZXInLFxuICAvLyBxdWljay1maWx0ZXItY29sdW1ucyBbc3RyaW5nXTogY29sdW1ucyBvZiB0aGUgZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3F1aWNrRmlsdGVyQ29sdW1uczogcXVpY2stZmlsdGVyLWNvbHVtbnMnLFxuICAvLyBkZXRhaWwtbW9kZSBbbm9uZXxjbGlja3xkb3VibGVjbGlja106IHdheSB0byBvcGVuIHRoZSBkZXRhaWwgZm9ybSBvZiBhIHJvdy4gRGVmYXVsdDogJ2NsaWNrJy5cbiAgJ2RldGFpbE1vZGU6IGRldGFpbC1tb2RlJyxcbiAgLy8gZGV0YWlsLWZvcm0tcm91dGUgW3N0cmluZ106IHJvdXRlIG9mIGRldGFpbCBmb3JtLiBEZWZhdWx0OiAnZGV0YWlsJy5cbiAgJ2RldGFpbEZvcm1Sb3V0ZTogZGV0YWlsLWZvcm0tcm91dGUnLFxuICAvLyBzaG93LWJ1dHRvbnMtdGV4dCBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHRleHQgb2YgaGVhZGVyIGJ1dHRvbnMuIERlZmF1bHQ6IHllcy5cbiAgJ3Nob3dCdXR0b25zVGV4dDogc2hvdy1idXR0b25zLXRleHQnLFxuICAncm9vdFRpdGxlOiByb290LXRpdGxlJyxcbiAgJ3JlY3Vyc2l2ZScsXG4gICdyb3V0ZSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UUkVFID0gWydvbk5vZGVTZWxlY3RlZCcsICdvbk5vZGVFeHBhbmRlZCcsICdvbk5vZGVDb2xsYXBzZWQnLCAnb25Mb2FkTmV4dExldmVsJywgJ29uRGF0YUxvYWRlZCcsICdvbk5vZGVDbGljayddO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vby10cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10cmVlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UUkVFLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19UUkVFLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRyZWVdJzogJ3RydWUnXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIE9UcmVlRGFvLFxuICAgIE9udGltaXplU2VydmljZVByb3ZpZGVyLFxuICAgIENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLFxuICAgIHsgcHJvdmlkZTogT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgdXNlQ2xhc3M6IE9UcmVlQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0sXG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBPVHJlZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0T1NlcnZpY2VDb21wb25lbnQ8T1RyZWVDb21wb25lbnRTdGF0ZVNlcnZpY2U+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIGdldExldmVsID0gKG5vZGU6IE9UcmVlRmxhdE5vZGUpID0+IG5vZGUubGV2ZWw7XG5cbiAgaXNFeHBhbmRhYmxlID0gKG5vZGU6IE9UcmVlRmxhdE5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcblxuICBnZXRDaGlsZHJlbiA9IChub2RlOiBPVHJlZUZsYXROb2RlKTogYW55ID0+IHtcbiAgICBpZiAodGhpcy5yZWN1cnNpdmUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFJlY3Vyc2l2ZUNoaWxkcmVuTm9kZShub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJlZU5vZGVDaGlsZHJlbihub2RlKTtcbiAgICB9XG4gIH1cblxuICBnZXRUcmVlTm9kZUNoaWxkcmVuKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiBhbnkge1xuICAgIGlmIChub2RlLmxldmVsID09PSAwICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMucm9vdFRpdGxlKSkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE5vZGVzO1xuICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZE5vZGUpIHtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChub2RlLmNoaWxkTm9kZS5yb290VGl0bGUpICYmICFVdGlsLmlzRGVmaW5lZChub2RlLnJvb3ROb2RlKSkge1xuICAgICAgICBsZXQgcm9vdE5vZGU6IE9UcmVlRmxhdE5vZGUgPSB7XG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCArIDEsIHJvb3ROb2RlOiB0cnVlLCBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChub2RlLmNoaWxkTm9kZS5yb290VGl0bGUpLCBsZXZlbDogbm9kZS5sZXZlbCArIDEsIGV4cGFuZGFibGU6IHRydWUsIGRhdGE6IG5vZGUuZGF0YSwgaXNMb2FkaW5nOiBmYWxzZSwgbm9kZTogbm9kZS5jaGlsZE5vZGUsIGNoaWxkTm9kZTogbm9kZS5jaGlsZE5vZGVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLnNldChyb290Tm9kZSwgbm9kZSk7XG4gICAgICAgIHJldHVybiBbcm9vdE5vZGVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRRdWVyeURhdGEobm9kZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVOb2Rlcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW1bdGhpcy5wYXJlbnRLZXlzXSA9PT0gbm9kZVt0aGlzLmtleXNdKTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWN1cnNpdmVDaGlsZHJlbk5vZGUobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGFueSB7XG4gICAgaWYgKG5vZGUubGV2ZWwgPT09IDAgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5yb290VGl0bGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Tm9kZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkUXVlcnlEYXRhKG5vZGUpO1xuICAgIH1cblxuICB9XG4gIGdldENvbXBvbmVudEZpbHRlcihleGlzdGluZ0ZpbHRlcjogYW55ID0ge30pOiBhbnkge1xuICAgIGxldCBmaWx0ZXIgPSBleGlzdGluZ0ZpbHRlcjtcbiAgICBpZiAodGhpcy5yZWN1cnNpdmUgJiYgdGhpcy5wYXJlbnRDb2x1bW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFyZW50SXRlbUV4cHIgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uRnJvbU9iamVjdChmaWx0ZXIpO1xuICAgICAgY29uc3QgcGFyZW50Tm90TnVsbEV4cHIgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uSXNOdWxsKHRoaXMucGFyZW50Q29sdW1uKTtcbiAgICAgIGNvbnN0IGZpbHRlckV4cHIgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRDb21wbGV4RXhwcmVzc2lvbihwYXJlbnRJdGVtRXhwciwgcGFyZW50Tm90TnVsbEV4cHIsIEZpbHRlckV4cHJlc3Npb25VdGlscy5PUF9BTkQpO1xuICAgICAgZmlsdGVyID0ge307XG4gICAgICBmaWx0ZXJbRmlsdGVyRXhwcmVzc2lvblV0aWxzLkZJTFRFUl9FWFBSRVNTSU9OX0tFWV0gPSBmaWx0ZXJFeHByO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZ2V0Q29tcG9uZW50RmlsdGVyKGZpbHRlcik7XG4gIH1cblxuICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIF9ub2RlRGF0YTogT1RyZWVGbGF0Tm9kZSkgPT4gX25vZGVEYXRhLmV4cGFuZGFibGU7XG5cbiAgaGFzTm9Db250ZW50ID0gKF86IG51bWJlciwgX25vZGVEYXRhOiBPVHJlZUZsYXROb2RlKSA9PiBfbm9kZURhdGEubGFiZWwgPT09ICcnO1xuXG4gIGhhc0xvYWRNb3JlID0gKG5vZGU6IE9UcmVlRmxhdE5vZGUpID0+IHRoaXMuZ2V0TG9naWNhbExldmVsKG5vZGUpID4gMCAmJiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgJiYgbm9kZS5ub2RlLnBhZ2VhYmxlO1xuXG4gIG9uTG9hZE1vcmUoZXZlbnQ6IEV2ZW50LCBub2RlOiBPVHJlZUZsYXROb2RlKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLmdldFBhcmVudE5vZGUobm9kZSk7XG5cbiAgICBpZiAoIXBhcmVudE5vZGUgfHwgcGFyZW50Tm9kZS5pc0xvYWRpbmcpIHJldHVybjtcblxuICAgIHBhcmVudE5vZGUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBwYXJlbnROb2RlLm9mZnNldCA9IE1hdGgubWluKFxuICAgICAgKHBhcmVudE5vZGUub2Zmc2V0ID8/IDApICsgcGFyZW50Tm9kZS5jaGlsZE5vZGUucXVlcnlSb3dzLFxuICAgICAgcGFyZW50Tm9kZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcik7XG4gICAgcGFyZW50Tm9kZS5oYXNNb3JlID0gcGFyZW50Tm9kZS5vZmZzZXQgKyBwYXJlbnROb2RlLmNoaWxkTm9kZS5xdWVyeVJvd3MgPCBwYXJlbnROb2RlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyO1xuXG4gICAgdGhpcy5nZXRDaGlsZHJlbihwYXJlbnROb2RlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gcmVzLmRhdGEgfHwgW107XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZVRyZWUocGFyZW50Tm9kZSwgbmV3RGF0YSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoJ0VSUk9SJywgJ01FU1NBR0VTLkVSUk9SX1FVRVJZJyk7XG4gICAgICAgIHBhcmVudE5vZGUuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpc0xhc3RDaGlsZEFuZEhhc01vcmUobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5nZXQobm9kZSk7XG4gICAgaWYgKCFwYXJlbnQ/Lmhhc01vcmUpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHNpYmxpbmdzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhwYXJlbnQpXG4gICAgICAuZmlsdGVyKGNoaWxkID0+IGNoaWxkLmxldmVsID09PSBub2RlLmxldmVsKTtcblxuICAgIGlmICghc2libGluZ3MgfHwgc2libGluZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBsYXN0U2libGluZyA9IHNpYmxpbmdzW3NpYmxpbmdzLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBub2RlLmlkID09PSBsYXN0U2libGluZy5pZDtcbiAgfVxuXG4gIGRhdGFTb3VyY2U6IE9UcmVlRGF0YVNvdXJjZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcmVmcmVzaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBkZWxldGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dCdXR0b25zVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHZpc2libGVDb2x1bW5zOiBzdHJpbmc7XG4gIHNlcGFyYXRvcjogc3RyaW5nID0gQ29kZXMuSFlQSEVOX1NFUEFSQVRPUjtcbiAgcGFyZW50Q29sdW1uOiBzdHJpbmc7XG4gIHNvcnRDb2x1bW46IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2VsZWN0QWxsQ2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBfcXVpY2tGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFnaW5hdGlvbkNvbnRyb2xzID0gZmFsc2U7XG4gIHF1aWNrRmlsdGVyQ29sdW1uczogc3RyaW5nO1xuICBzZWxlY3RlZE5vZGU6IE9UcmVlRmxhdE5vZGU7XG4gIGNoaWxkcmVOb2RlczogT1RyZWVGbGF0Tm9kZVtdID0gW107XG4gIG5vZGVzQXJyYXk6IE9UcmVlRmxhdE5vZGVbXSA9IFtdO1xuICBhbmNlc3RvcnM6IGFueVtdID0gW107XG5cbiAgb25Ob2RlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbk5vZGVFeHBhbmRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTm9kZUNvbGxhcHNlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTG9hZE5leHRMZXZlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTm9kZUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICByb290VGl0bGU6IHN0cmluZztcbiAgcm9vdE5vZGVzOiBPVHJlZUZsYXROb2RlW10gPSBbXTtcbiAgZGFvVHJlZTogT1RyZWVEYW87XG5cbiAgQENvbnRlbnRDaGlsZCgnbGVhZk5vZGVUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgbGVhZk5vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdwYXJlbnROb2RlVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHBhcmVudE5vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICB0cmVlRmxhdHRlbmVyOiBhbnk7XG4gIHRyZWVDb250cm9sOiBGbGF0VHJlZUNvbnRyb2w8T1RyZWVGbGF0Tm9kZSwgT1RyZWVGbGF0Tm9kZT5cblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgbWF0cGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cbiAgQENvbnRlbnRDaGlsZCgnbm9kZVRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBzZXQgbm9kZVRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMubGVhZk5vZGVUZW1wbGF0ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5wYXJlbnROb2RlVGVtcGxhdGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gT1RyZWVOb2RlQ29tcG9uZW50KSwgeyBkZXNjZW5kYW50czogZmFsc2UgfSlcbiAgdHJlZU5vZGUhOiBPVHJlZU5vZGVDb21wb25lbnQ7XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uczogT1RyZWVQZXJtaXNzaW9ucztcbiAgcHJvdGVjdGVkIGFjdGlvbnNQZXJtaXNzaW9uczogT1Blcm1pc3Npb25zW107XG4gIHByb3RlY3RlZCB2aXNpYmxlQ29sdW1uc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgZW5hYmxlZERlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHB1YmxpYyByb3V0ZTogc3RyaW5nO1xuICBwdWJsaWMgc29ydENvbHVtbkFycmF5OiBTUUxPcmRlcltdO1xuXG4gIGdldCBzaG93VHJlZU1lbnVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdGljT3B0ID0gdGhpcy5zZWxlY3RBbGxDaGVja2JveDtcbiAgICByZXR1cm4gc3RhdGljT3B0O1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtQ29tcG9uZW50KSkgZm9ybTogT0Zvcm1Db21wb25lbnRcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGVsUmVmLCBmb3JtKTtcbiAgICB0aGlzLmRhb1RyZWUgPSB0aGlzLmluamVjdG9yLmdldChPVHJlZURhbylcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRUcmVlQ29udHJvbCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVBhcmFtcygpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+ICh0aGlzLmVuYWJsZWREZWxldGVCdXR0b24gPSAhdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldFRyZWVQZXJtaXNzaW9ucyh0aGlzLm9hdHRyLCB0aGlzLmFjdFJvdXRlKTtcbiAgICB0aGlzLmFjdGlvbnNQZXJtaXNzaW9ucyA9IHRoaXMuZ2V0QWN0aW9uc1Blcm1pc3Npb25zKHRoaXMucGVybWlzc2lvbnMpO1xuICAgIHRoaXMuc2V0QnV0dG9uUGVybWlzc2lvbnModGhpcy5hY3Rpb25zUGVybWlzc2lvbnMpO1xuICB9XG5cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5pbml0aWFsaXplRGFvKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZURhbygpIHtcblxuICAgIGlmICh0aGlzLnN0YXRpY0RhdGEpIHtcbiAgICAgIHRoaXMucXVlcnlPbkJpbmQgPSBmYWxzZTtcbiAgICAgIHRoaXMucXVlcnlPbkluaXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0RGF0YUFycmF5KHRoaXMuc3RhdGljRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uZmlndXJlU2VydmljZSgpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVQYXJhbXMoKTogdm9pZCB7XG4gICAgLy8gSWYgdmlzaWJsZS1jb2x1bW5zIGlzIG5vdCBwcmVzZW50IHRoZW4gdmlzaWJsZS1jb2x1bW5zIGlzIGFsbCBjb2x1bW5zXG4gICAgaWYgKCF0aGlzLnZpc2libGVDb2x1bW5zKSB7XG4gICAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gMDtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlID8/IDA7XG4gICAgfVxuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5xdWlja0ZpbHRlckNvbHVtbnMpKSB7XG4gICAgICB0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucyA9IHRoaXMudmlzaWJsZUNvbHVtbnM7XG4gICAgfVxuICAgIHRoaXMucGFyc2VTb3J0Q29sdW1uKCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT1RyZWVDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1uc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMudmlzaWJsZUNvbHVtbnMsIHRydWUpO1xuICAgIHRoaXMucXVpY2tGaWx0ZXJDb2xBcnJheSA9IFV0aWwucGFyc2VBcnJheSh0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucywgdHJ1ZSk7XG4gICAgdGhpcy5zZXREYXRhc291cmNlKCk7XG4gICAgdGhpcy5hZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5yZWdpc3RlclF1aWNrRmlsdGVyKHRoaXMuc2VhcmNoSW5wdXRDb21wb25lbnQpO1xuICAgIGlmICh0aGlzLnF1ZXJ5T25Jbml0KSB7XG4gICAgICB0aGlzLnF1ZXJ5RGF0YSgpO1xuICAgIH1cbiAgICB0aGlzLm1hbmFnZUN1c3RvbVBlcm1pc3Npb25zKHRoaXMuYWN0aW9uc1Blcm1pc3Npb25zLCAnW28tdHJlZS1idXR0b25dJyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJUcmVlTm9kZShvVHJlZU5vZGU6IE9UcmVlTm9kZUNvbXBvbmVudCkge1xuICAgIC8vIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2goKVxuICB9XG5cbiAgY2hlY2tib3hDbGlja2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgbGVhZk5vZGVDbGlja2VkKGV2ZW50OiBFdmVudCwgbm9kZTogT1RyZWVGbGF0Tm9kZSk6IHZvaWQge1xuICAgIHRoaXMubm9kZUNsaWNrZWQobm9kZSwgZXZlbnQpO1xuICB9XG5cbiAgcGFyZW50Tm9kZUNsaWNrZWQoZXZlbnQ6IEV2ZW50LCBub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5ub2RlQ2xpY2tlZChub2RlLCBldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbm9kZUNsaWNrZWQobm9kZTogT1RyZWVGbGF0Tm9kZSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9uTm9kZUNsaWNrLmVtaXQobm9kZSk7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBub2RlO1xuICAgIGlmICh0aGlzLmRldGFpbE1vZGUgIT09IENvZGVzLkRFVEFJTF9NT0RFX05PTkUgJiYgIXRoaXMuaXNSb290Tm9kZShub2RlKSkge1xuICAgICAgbm9kZS5ub2RlLnZpZXdEZXRhaWwobm9kZS5kYXRhLCB7IGxhYmVsOiBub2RlLmxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlzUm9vdE5vZGUobm9kZTogT1RyZWVGbGF0Tm9kZSkge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChub2RlLnJvb3ROb2RlKSAmJiBub2RlLnJvb3ROb2RlO1xuICB9XG5cbiAgb25DbGlja1RvZ2dsZUJ1dHRvbihldmVudDogRXZlbnQsIG5vZGUpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKSB7XG4gICAgICB0aGlzLm9uTm9kZUV4cGFuZGVkLmVtaXQobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25Ob2RlQ29sbGFwc2VkLmVtaXQobm9kZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAqIFRvZ2dsZSB0aGUgbm9kZSwgcmVtb3ZlIGZyb20gZGlzcGxheSBsaXN0XG4gICovXG4gIHRvZ2dsZU5vZGUobm9kZTogT1RyZWVGbGF0Tm9kZSwgZXhwYW5kOiBib29sZWFuKSB7XG4gICAgbm9kZS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGlmIChleHBhbmQgJiYgbm9kZS5leHBhbmRhYmxlKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSk7XG4gICAgICBpZiAoVXRpbC5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlVHJlZShub2RlLCBjaGlsZHJlbiwgZXhwYW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXN5bmNUcmVlKGNoaWxkcmVuLCBub2RlLCBleHBhbmQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlVHJlZShub2RlLCBbXSwgZXhwYW5kKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQXN5bmNUcmVlKGNoaWxkcmVuOiBhbnksIGZsYXROb2RlOiBPVHJlZUZsYXROb2RlLCBleHBhbmQ6IGJvb2xlYW4pIHtcbiAgICBjaGlsZHJlbi5zdWJzY3JpYmUoKHJlczogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGlmIChyZXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgY29uc3QgYXJyRGF0YSA9IChyZXMuZGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJlcy5kYXRhIDogW107XG4gICAgICAgIGRhdGEgPSBVdGlsLmlzQXJyYXkoYXJyRGF0YSkgPyBhcnJEYXRhIDogW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnJlY3Vyc2l2ZSA/IGZsYXROb2RlLm5vZGUgOiBmbGF0Tm9kZS5jaGlsZE5vZGU7XG4gICAgICBmbGF0Tm9kZS5oYXNNb3JlID0gZmFsc2U7XG5cbiAgICAgIGZsYXROb2RlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gbm9kZS5wYWdlYWJsZSA/IHJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciA6IGRhdGEubGVuZ3RoO1xuXG4gICAgICBjb25zdCBjYW5Mb2FkTW9yZSA9IHRoaXMuaGFzTG9hZE1vcmUoZmxhdE5vZGUpO1xuICAgICAgZmxhdE5vZGUuaGFzTW9yZSA9IGZhbHNlO1xuICAgICAgaWYgKGNhbkxvYWRNb3JlKSB7XG4gICAgICAgIGZsYXROb2RlLmhhc01vcmUgPSBVdGlsLmlzRGVmaW5lZChyZXMuc3RhcnRSZWNvcmRJbmRleCkgPyAobm9kZS5xdWVyeVJvd3MgKyByZXMuc3RhcnRSZWNvcmRJbmRleCA8IHJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcikgOiAodGhpcy5xdWVyeVJvd3MgPCBkYXRhLmxlbmd0aCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlVHJlZShmbGF0Tm9kZSwgZGF0YSwgZXhwYW5kKTtcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgZmxhdE5vZGUuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24pKSB7XG4gICAgICAgIHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uKGVycik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9FcnJvckRpYWxvZ01hbmFnZXIub3BlbkVycm9yRGlhbG9nKGVycik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cbiAgLyoqIFRvZ2dsZSBhIGxlYWYgdG8tZG8gaXRlbSBzZWxlY3Rpb24uIENoZWNrIGFsbCB0aGUgcGFyZW50cyB0byBzZWUgaWYgdGhleSBjaGFuZ2VkICovXG4gIHRvZG9MZWFmSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy50b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlKTtcbiAgfVxuXG4gIC8qKiBUb2dnbGUgdGhlIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBTZWxlY3QvZGVzZWxlY3QgYWxsIHRoZSBkZXNjZW5kYW50cyBub2RlICovXG4gIHRvZG9JdGVtU2VsZWN0aW9uVG9nZ2xlKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbi50b2dnbGUobm9kZSk7XG5cbiAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XG4gICAgdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVxuICAgICAgPyB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4uZGVzY2VuZGFudHMpXG4gICAgICA6IHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KC4uLmRlc2NlbmRhbnRzKTtcblxuICAgIC8vIEZvcmNlIHVwZGF0ZSBmb3IgdGhlIHBhcmVudFxuICAgIGRlc2NlbmRhbnRzLmV2ZXJ5KChjaGlsZCkgPT4gdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZCkpO1xuICAgIHRoaXMub25Ob2RlU2VsZWN0ZWQuZW1pdChub2RlLmRhdGEpO1xuXG5cbiAgfVxuXG5cbiAgLyoqIFdoZXRoZXIgYWxsIHRoZSBkZXNjZW5kYW50cyBvZiB0aGUgbm9kZSBhcmUgc2VsZWN0ZWQuICovXG4gIGRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuICAgIGxldCBkZXNjQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XG4gICAgaWYgKG5vZGUuZXhwYW5kYWJsZSkge1xuXG4gICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpICYmIGRlc2NlbmRhbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGVzY0FsbFNlbGVjdGVkID0gZGVzY2VuZGFudHMuZXZlcnkoKGNoaWxkKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpXG4gICAgICAgICk7XG4gICAgICAgIGRlc2NBbGxTZWxlY3RlZCA/IHRoaXMuc2VsZWN0aW9uLnNlbGVjdChub2RlKSA6IHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KG5vZGUpO1xuICAgICAgICByZXR1cm4gZGVzY0FsbFNlbGVjdGVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk7XG4gICAgfVxuXG4gIH1cblxuICAvKiogV2hldGhlciBwYXJ0IG9mIHRoZSBkZXNjZW5kYW50cyBhcmUgc2VsZWN0ZWQgKi9cbiAgZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlOiBPVHJlZUZsYXROb2RlKTogYm9vbGVhbiB7XG5cbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xuICAgIGlmIChub2RlLmV4cGFuZGFibGUpIHtcbiAgICAgIGlmIChkZXNjZW5kYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdCA9IGRlc2NlbmRhbnRzLnNvbWUoKGNoaWxkKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQgJiYgIXRoaXMuZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlKTtcblxuICB9XG5cblxuICBwcm90ZWN0ZWQgc2V0VHJlZUNvbnRyb2woKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnRyZWVDb250cm9sKSkge1xuICAgICAgdGhpcy50cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2w8T1RyZWVGbGF0Tm9kZT4odGhpcy5nZXRMZXZlbCwgdGhpcy5pc0V4cGFuZGFibGUpO1xuICAgIH1cbiAgfVxuICAvKiogKi9cblxuICBwcm90ZWN0ZWQgc2V0RGF0YXNvdXJjZSgpIHtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuZGF0YVNvdXJjZSkpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBPVHJlZURhdGFTb3VyY2UodGhpcywgdGhpcy50cmVlQ29udHJvbCwgdGhpcy5pbmplY3Rvcik7XG4gICAgfVxuXG4gIH1cblxuICBnZXRQYXJlbnROb2Rlcyhub2RlOiBPVHJlZUZsYXROb2RlLCBpbmRleDogbnVtYmVyLCB0cmVlOiBPVHJlZUZsYXROb2RlW10pOiBPVHJlZUZsYXROb2RlW10ge1xuICAgIGxldCBwYXJlbnROb2RlID0gdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLmdldChub2RlKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocGFyZW50Tm9kZSkpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nTm9kZSA9IHRyZWUuZmluZEluZGV4KHggPT4geFsnaWQnXSA9PT0gcGFyZW50Tm9kZVsnaWQnXSkgPiAtMTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChwYXJlbnROb2RlKSkge1xuICAgICAgICBpZiAoIWV4aXN0aW5nTm9kZSkge1xuICAgICAgICAgIC8vaWYgbm90IGV4aXN0IG5vZGUgaW4gdHJlZSB0aGVuLCBhZGQgcGFyZW50IGJlZm9yZSBub2RlXG4gICAgICAgICAgdHJlZS5zcGxpY2UoaW5kZXgsIDAsIHBhcmVudE5vZGUpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFyZW50Tm9kZXMocGFyZW50Tm9kZSwgaW5kZXgsIHRyZWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vaWYgbm90IGV4aXN0IG5vZGUgaW4gdHJlZSB0aGVuLCBhZGQgcGFyZW50IGJlZm9yZSBub2RlXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFyZW50Tm9kZXMocGFyZW50Tm9kZSwgaW5kZXgsIHRyZWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJlZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRyZWU7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyRGF0YSh2YWx1ZT86IHN0cmluZywgbG9hZE1vcmU/OiBib29sZWFuKTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgY29uc3QgcXVlcnlBcmdzOiBPUXVlcnlEYXRhQXJncyA9IHtcbiAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICBsZW5ndGg6IHRoaXMucXVlcnlSb3dzLFxuICAgICAgICByZXBsYWNlOiB0cnVlXG4gICAgICB9O1xuICAgICAgdGhpcy5xdWVyeURhdGEodm9pZCAwLCBxdWVyeUFyZ3MpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJlZFRyZWVEYXRhID0gW107XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBmb3IgKGxldCBbbmVzdGVkTm9kZV0gb2YgdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwKSB7XG4gICAgICAgIGlmIChuZXN0ZWROb2RlLmxhYmVsLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZih2YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSA+IC0xKSB7XG4gICAgICAgICAgZmlsdGVyZWRUcmVlRGF0YS5wdXNoKG5lc3RlZE5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgd2hpbGUgKGluZGV4IDwgZmlsdGVyZWRUcmVlRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgbGV0IG5vZGUgPSBmaWx0ZXJlZFRyZWVEYXRhW2luZGV4XTtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZXMgPSB0aGlzLmdldFBhcmVudE5vZGVzKG5vZGUsIGluZGV4LCBmaWx0ZXJlZFRyZWVEYXRhKTtcbiAgICAgICAgaWYgKCFVdGlsLmlzQXJyYXlFbXB0eShwYXJlbnROb2RlcykpIHtcbiAgICAgICAgICBmaWx0ZXJlZFRyZWVEYXRhID0gcGFyZW50Tm9kZXM7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZmlsdGVyZWRUcmVlRGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyZWRUcmVlRGF0YSA9IHRoaXMuZGF0YVJlc3BvbnNlQXJyYXk7XG4gICAgICB0aGlzLnNldERhdGFBcnJheShmaWx0ZXJlZFRyZWVEYXRhKTtcbiAgICB9XG5cblxuICAgIC8vIE5vdGlmeSB0aGUgY2hhbmdlLlxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgbGV0IHJvb3ROb2RlcyA9IGZpbHRlcmVkVHJlZURhdGEuZmlsdGVyKG5vZGUgPT4gbm9kZS5sZXZlbCA9PSAwKTtcbiAgICAgIHRoaXMuZXhwYW5kTm9kZXNXaXRoTm9kZXMocm9vdE5vZGVzKTtcbiAgICB9XG5cbiAgfVxuICAvKipcbiAgICogRXhwYW5kcyBub2RlcyB3aXRoIG5vZGVzXG4gICAqIEBwYXJhbSB0cmVlRGF0YVxuICAgKi9cbiAgZXhwYW5kTm9kZXNXaXRoTm9kZXModHJlZURhdGE6IE9UcmVlRmxhdE5vZGVbXSkge1xuICAgIHRyZWVEYXRhLmZpbHRlcihub2RlID0+IG5vZGUuZXhwYW5kYWJsZSkuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcbiAgICAgIGlmIChkZXNjZW5kYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xuICAgICAgICB0aGlzLmV4cGFuZE5vZGVzV2l0aE5vZGVzKGRlc2NlbmRhbnRzKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAgKiBHZXRzIGRhdGEgdHJlZVxuICAgICogQHJldHVybnNcbiAgICAqL1xuICBnZXREYXRhQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGFvVHJlZS5kYXRhO1xuICB9XG5cbiAgc2V0RGF0YUFycmF5KGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5jbGVhcigpO1xuICAgIHRoaXMuZGFvVHJlZS5zZXREYXRhQXJyYXkoZGF0YSk7XG4gICAgaWYgKHRoaXMucmVjdXJzaXZlKSB7XG4gICAgICB0aGlzLmNoaWxkcmVOb2RlcyA9IGRhdGEuZmlsdGVyKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMucGFyZW50Q29sdW1uXSAhPSBudWxsXG4gICAgICApO1xuICAgICAgdGhpcy5yb290Tm9kZXMgPSBkYXRhLmZpbHRlcihcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gIVV0aWwuaXNEZWZpbmVkKGl0ZW1bdGhpcy5wYXJlbnRDb2x1bW5dKSB8fCBpdGVtW3RoaXMucGFyZW50Q29sdW1uXSA9PT0gbnVsbFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvb3ROb2RlcyA9IGRhdGE7XG5cbiAgICBsZXQgbGV2ZWwgPSAwO1xuICAgIGxldCByb290Tm9kZTogT1RyZWVGbGF0Tm9kZTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5yb290VGl0bGUpKSB7XG4gICAgICBsZXZlbCA9ICsxO1xuICAgICAgcm9vdE5vZGUgPSB7IGlkOiAwLCBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLnJvb3RUaXRsZSksIHJvb3ROb2RlOiB0cnVlLCBsZXZlbDogMCwgZXhwYW5kYWJsZTogdHJ1ZSwgZGF0YToge30sIGlzTG9hZGluZzogZmFsc2UgfTtcbiAgICAgIHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5zZXQocm9vdE5vZGUsIG51bGwpO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBbcm9vdE5vZGVdO1xuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQocm9vdE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMucm9vdE5vZGVzLm1hcChub2RlID0+IHRoaXMudHJhbnNmb3JtZXIobm9kZSwgbGV2ZWwpKTtcbiAgICB9XG5cbiAgfVxuXG4gIHRyYW5zZm9ybWVyID0gKG5vZGU6IGFueSwgbGV2ZWw6IG51bWJlciwgcGFyZW50Tm9kZT86IGFueSkgPT4ge1xuXG4gICAgY29uc3Qgbm9kZUNoaWxkcmVuID0gdGhpcy5jaGlsZHJlTm9kZXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtW3RoaXMucGFyZW50Q29sdW1uXSA9PT0gbm9kZVt0aGlzLmtleXNdKTtcbiAgICBjb25zdCBmbGF0Tm9kZTogT1RyZWVGbGF0Tm9kZSA9XG4gICAge1xuICAgICAgJ2lkJzogdGhpcy5nZXROb2RlSWQobm9kZSwgcGFyZW50Tm9kZSksXG4gICAgICAnbGFiZWwnOiB0aGlzLmdldEl0ZW1UZXh0KG5vZGUpLFxuICAgICAgJ2xldmVsJzogbGV2ZWwsXG4gICAgICAnbm9kZSc6IHRoaXMsXG4gICAgICBjaGlsZE5vZGU6IHRoaXMudHJlZU5vZGUsXG4gICAgICAnZXhwYW5kYWJsZSc6IFV0aWwuaXNEZWZpbmVkKHRoaXMudHJlZU5vZGUpIHx8ICEhbm9kZUNoaWxkcmVuPy5sZW5ndGggfHwgdGhpcy5yZWN1cnNpdmUsXG4gICAgICAnZGF0YSc6IG5vZGUsXG4gICAgICAnaXNMb2FkaW5nJzogZmFsc2UsXG4gICAgICAncm91dGUnOiB0aGlzLnJvdXRlLFxuICAgICAgJ29mZnNldCc6IHRoaXMucGFyZW50Q29tcG9uZW50Py5xdWVyeVJvd3MgPz8gMFxuICAgIH07XG5cbiAgICB0aGlzLmRhb1RyZWUuZmxhdE5vZGVNYXAuc2V0KGZsYXROb2RlLCBwYXJlbnROb2RlKTtcblxuICAgIC8vcmVjdXJzaXZlXG4gICAgbm9kZUNoaWxkcmVuLmZvckVhY2gobm9kZSA9PiB0aGlzLnRyYW5zZm9ybWVyKG5vZGUsIGxldmVsICsgMSkpO1xuICAgIHJldHVybiBmbGF0Tm9kZTtcblxuXG4gIH1cblxuICBvblNlbGVjdENoZWNrYm94Q2hhbmdlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdEFsbENoZWNrYm94VmlzaWJsZSA9IHZpc2libGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydChhcnJheTogT1RyZWVGbGF0Tm9kZVtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydENvbHVtbiAhPSBudWxsKSB7XG4gICAgICBhcnJheS5zb3J0KChhLCBiKSA9PlxuICAgICAgICBhLmRhdGFbdGhpcy5zb3J0Q29sdW1uXS5sb2NhbGVDb21wYXJlKGIuZGF0YVt0aGlzLnNvcnRDb2x1bW5dKVxuICAgICAgKTtcbiAgICAgIGFycmF5XG4gICAgICAgIC5maWx0ZXIoKG5vZGUpID0+ICEhdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKSlcbiAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHRoaXMuc29ydCh0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1UZXh0KGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUNvbHVtbnNBcnJheVxuICAgICAgLmZpbHRlcigoY29sKSA9PiBpdGVtW2NvbF0gIT0gbnVsbCAmJiBgJHtpdGVtW2NvbF19YC5sZW5ndGggPiAwKVxuICAgICAgLm1hcCgoY29sKSA9PiBpdGVtW2NvbF0pXG4gICAgICAuam9pbih0aGlzLnNlcGFyYXRvcik7XG4gIH1cblxuICBnZXRJdGVtS2V5KGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMua2V5c0FycmF5Lm1hcCgoY29sKSA9PiBpdGVtW2NvbF0pLmpvaW4oJzsnKTtcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGZpbHRlckJ5UXVpY2tGaWx0ZXJDb2x1bW5zKFxuICAgIGl0ZW06IGFueSxcbiAgICBxdWlja2ZpbHRlcjogc3RyaW5nXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNhc2VTZW5zaXRpdmUgPSB0aGlzLmlzRmlsdGVyQ2FzZVNlbnNpdGl2ZSgpO1xuICAgIGNvbnN0IHJlZ0V4cFN0ciA9IG5ldyBSZWdFeHAoXG4gICAgICBVdGlsLmVzY2FwZVNwZWNpYWxDaGFyYWN0ZXIoXG4gICAgICAgIFV0aWwubm9ybWFsaXplU3RyaW5nKHF1aWNrZmlsdGVyLCAhY2FzZVNlbnNpdGl2ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmdldFF1aWNrRmlsdGVyQ29sdW1ucygpLnNvbWUoKGNvbCkgPT5cbiAgICAgIHJlZ0V4cFN0ci50ZXN0KFV0aWwubm9ybWFsaXplU3RyaW5nKGl0ZW0uZGF0YVtjb2xdICsgJycsICFjYXNlU2Vuc2l0aXZlKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBzdXBlci5pbnNlcnREZXRhaWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROb2RlSWQoaXRlbTogYW55LCBwYXJlbnROb2RlOiBhbnkpIHtcbiAgICAvKiogcmV2aXNhcmxvOmlndWFsIGNvbiBpZCBpbmNyZW1lbnRhbCBlcmEgbWFzIGZhY2lsIGUgaWd1YWwgZGUgZWZpY2llbnRlICovXG4gICAgbGV0IGlkID0gJyc7XG4gICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWQgKz0gaXRlbVtrZXldO1xuICAgIH0pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnBhcmVudEtleXMpICYmIFV0aWwuaXNEZWZpbmVkKHBhcmVudE5vZGUpKSB7XG4gICAgICBpZCArPSBwYXJlbnROb2RlLmlkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmtleXMgKyAnOicgKyBpZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBuYXZpZ2F0ZVRvVmlld0RldGFpbChub2RlOiBPVHJlZUZsYXROb2RlKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG5vZGUucm91dGUpKSB7XG4gICAgICBsZXQgcm91dGUgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGxldCBub2RlUm91dGUgPSBub2RlLnJvdXRlO1xuICAgICAgbGV0IHJvdXRlQXJyYXkgPSBub2RlUm91dGUuc3BsaXQoQ29kZXMuUk9VVEVfU0VQQVJBVE9SKTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSByb3V0ZUFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChyb3V0ZUFycmF5W2ldLnN0YXJ0c1dpdGgoQ29kZXMuUk9VVEVfVkFSSUFCTEVfQ0hBUikpIHtcbiAgICAgICAgICByb3V0ZUFycmF5W2ldID0gbm9kZS5kYXRhW3JvdXRlQXJyYXlbaV0uc3Vic3RyaW5nKDEpXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcm91dGUgPSByb3V0ZUFycmF5LmpvaW4oQ29kZXMuUk9VVEVfU0VQQVJBVE9SKTtcblxuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlKSkge1xuICAgICAgICBjb25zdCBleHRyYXMgPSB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RSb3V0ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdLCBleHRyYXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWROb2RlKG5vZGU6IE9UcmVlRmxhdE5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE5vZGUgPT0gbm9kZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1EZXRhaWxDbGljayhub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVJdGVtQ2xpY2sobm9kZS5kYXRhKTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLl9zZWxlY3Rpb24pKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSwgdHJ1ZSwgKHNtMSwgc20yKSA9PiBzbTEuaWQgPT09IHNtMi5pZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb247XG4gIH1cblxuICBnZXRTZWxlY3RlZEl0ZW1zKCk6IGFueVtdIHtcbiAgICBjb25zdCBzZWxlY3RlZEZsYXROb2RlcyA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICAgIGNvbnN0IHNlbGVjdGVkS2V5cyA9IHRoaXMuZ2V0U2VsZWN0ZWROb2RlS2V5cyhzZWxlY3RlZEZsYXROb2Rlcyk7XG5cbiAgICBjb25zdCBub2RlTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBjb25zdCByb290Tm9kZXM6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZsYXROb2RlIG9mIHNlbGVjdGVkRmxhdE5vZGVzKSB7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZsYXROb2RlSWRlbnRpZmllcihmbGF0Tm9kZSk7XG4gICAgICBjb25zdCB0cmVlTm9kZSA9IHRoaXMuY3JlYXRlVHJlZU5vZGUoZmxhdE5vZGUpO1xuICAgICAgbm9kZU1hcC5zZXQoa2V5LCB0cmVlTm9kZSk7XG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5nZXQoZmxhdE5vZGUpO1xuICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgcm9vdE5vZGVzLnB1c2godHJlZU5vZGUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFyZW50S2V5ID0gdGhpcy5nZXRGbGF0Tm9kZUlkZW50aWZpZXIocGFyZW50KTtcbiAgICAgIGlmICghc2VsZWN0ZWRLZXlzLmhhcyhwYXJlbnRLZXkpKSB7XG4gICAgICAgIHJvb3ROb2Rlcy5wdXNoKHRyZWVOb2RlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLmVuc3VyZU5vZGVJbk1hcChwYXJlbnQsIG5vZGVNYXApO1xuICAgICAgdGhpcy5hZGRDaGlsZFRvUGFyZW50KHBhcmVudE5vZGUsIHRyZWVOb2RlKTtcblxuICAgICAgaWYgKHRoaXMuc2hvdWxkQmVSb290KHBhcmVudCwgc2VsZWN0ZWRLZXlzKSAmJiAhcm9vdE5vZGVzLmluY2x1ZGVzKHBhcmVudE5vZGUpKSB7XG4gICAgICAgIHJvb3ROb2Rlcy5wdXNoKHBhcmVudE5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290Tm9kZXM7XG4gIH1cblxuICBwdWJsaWMgcGFyc2VTb3J0Q29sdW1uKCk6IHZvaWQge1xuICAgIHRoaXMuc29ydENvbHVtbkFycmF5ID0gU2VydmljZVV0aWxzLnBhcnNlU29ydENvbHVtbnModGhpcy5zb3J0Q29sdW1uKSB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXI6IG9iamVjdCwgb3ZyckFyZ3M/OiBPUXVlcnlEYXRhQXJncyk6IE9RdWVyeVBhcmFtcyB7XG4gICAgY29uc3QgcXVlcnlBcmd1bWVudHMgPSBzdXBlci5nZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXIsIG92cnJBcmdzKTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuc29ydENvbHVtbkFycmF5KSkge1xuICAgICAgICBxdWVyeUFyZ3VtZW50c1s2XSA9IHRoaXMuc29ydENvbHVtbkFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcXVlcnlBcmd1bWVudHM7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEJlUm9vdChwYXJlbnQ6IE9UcmVlRmxhdE5vZGUsIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5nZXQocGFyZW50KTtcbiAgICBpZiAoIWdyYW5kUGFyZW50KSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IGdyYW5kUGFyZW50S2V5ID0gdGhpcy5nZXRGbGF0Tm9kZUlkZW50aWZpZXIoZ3JhbmRQYXJlbnQpO1xuICAgIHJldHVybiAhc2VsZWN0ZWRLZXlzLmhhcyhncmFuZFBhcmVudEtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlVHJlZU5vZGUoZmxhdE5vZGU6IE9UcmVlRmxhdE5vZGUpOiBhbnkge1xuICAgIHJldHVybiBmbGF0Tm9kZS5ub2RlXG4gICAgICA/IHsgLi4uZmxhdE5vZGUuZGF0YSB9XG4gICAgICA6IHsgbGFiZWw6IGZsYXROb2RlLmxhYmVsIH07XG4gIH1cblxuXG4gIHByb3RlY3RlZCBnZXRGbGF0Tm9kZUlkZW50aWZpZXIoZmxhdE5vZGU6IE9UcmVlRmxhdE5vZGUpOiBzdHJpbmcge1xuICAgIGlmIChmbGF0Tm9kZS5ub2RlPy5nZXRJdGVtS2V5KSB7XG4gICAgICByZXR1cm4gZmxhdE5vZGUubm9kZS5nZXRJdGVtS2V5KGZsYXROb2RlLmRhdGEpO1xuICAgIH0gZWxzZSBpZiAoZmxhdE5vZGUuaWQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZsYXROb2RlLmlkLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBmbGF0Tm9kZS5sYWJlbDtcblxuICB9XG4gIHByaXZhdGUgYWRkQ2hpbGRUb1BhcmVudChwYXJlbnROb2RlOiBhbnksIGNoaWxkTm9kZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFwYXJlbnROb2RlLmNoaWxkcmVuKSB7XG4gICAgICBwYXJlbnROb2RlLmNoaWxkcmVuID0gW107XG4gICAgfVxuICAgIHBhcmVudE5vZGUuY2hpbGRyZW4ucHVzaChjaGlsZE5vZGUpO1xuICB9XG5cbiAgYWRkUGFyZW50VG9Sb290SWZOb0dyYW5kcGFyZW50U2VsZWN0ZWQoXG4gICAgcGFyZW50OiBPVHJlZUZsYXROb2RlLFxuICAgIHBhcmVudEtleTogc3RyaW5nLFxuICAgIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4sXG4gICAgbm9kZU1hcDogTWFwPHN0cmluZywgYW55PixcbiAgICByb290Tm9kZXM6IGFueVtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLmdldChwYXJlbnQpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50S2V5ID0gZ3JhbmRQYXJlbnQgPyB0aGlzLmdldEZsYXROb2RlSWRlbnRpZmllcihncmFuZFBhcmVudCkgOiBudWxsO1xuXG4gICAgaWYgKCFncmFuZFBhcmVudCB8fCAhc2VsZWN0ZWRLZXlzLmhhcyhncmFuZFBhcmVudEtleSkpIHtcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlTWFwLmdldChwYXJlbnRLZXkpO1xuICAgICAgaWYgKCFyb290Tm9kZXMuaW5jbHVkZXMocGFyZW50Tm9kZSkpIHtcbiAgICAgICAgcm9vdE5vZGVzLnB1c2gocGFyZW50Tm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZW5zdXJlTm9kZUluTWFwKGZsYXROb2RlOiBPVHJlZUZsYXROb2RlLCBtYXA6IE1hcDxzdHJpbmcsIGFueT4pOiBhbnkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmxhdE5vZGVJZGVudGlmaWVyKGZsYXROb2RlKTtcbiAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgbWFwLnNldChrZXksIHRoaXMuY3JlYXRlVHJlZU5vZGUoZmxhdE5vZGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcC5nZXQoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWROb2RlS2V5cyhub2RlczogT1RyZWVGbGF0Tm9kZVtdKTogU2V0PHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgU2V0KG5vZGVzLm1hcChub2RlID0+IHRoaXMuZ2V0RmxhdE5vZGVJZGVudGlmaWVyKG5vZGUpKSk7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZsYXROb2RlcygpOiBPVHJlZUZsYXROb2RlW10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZDtcbiAgfVxuXG4gIGdldFBhcmVudE5vZGUobm9kZTogYW55KTogT1RyZWVGbGF0Tm9kZSB7XG4gICAgY29uc3QgY3VycmVudExldmVsID0gdGhpcy5nZXRMZXZlbChub2RlKTtcbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmluZGV4T2Yobm9kZSkgLSAxO1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgY3VycmVudE5vZGUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcbiAgICAgIGlmICh0aGlzLmdldExldmVsKGN1cnJlbnROb2RlKSA9PT0gY3VycmVudExldmVsIC0gMSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVsb2FkRGF0YShjbGVhclNlbGVjdGVkSXRlbXM6IGJvb2xlYW4gPSB0cnVlKSB7XG5cbiAgICBpZiAoY2xlYXJTZWxlY3RlZEl0ZW1zKSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgbGV0IHF1ZXJ5QXJnczogT1F1ZXJ5RGF0YUFyZ3M7XG4gICAgaWYgKHRoaXMucGFnZWFibGUpIHtcbiAgICAgIHF1ZXJ5QXJncyA9IHtcbiAgICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlICogdGhpcy5xdWVyeVJvd3MsXG4gICAgICAgIGxlbmd0aDogdGhpcy5xdWVyeVJvd3NcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMucXVlcnlEYXRhKHZvaWQgMCwgcXVlcnlBcmdzKTtcbiAgfVxuXG4gIGdldExvZ2ljYWxMZXZlbChub2RlOiBPVHJlZUZsYXROb2RlKTogbnVtYmVyIHtcbiAgICBjb25zdCBoYXNGYWtlUm9vdCA9IHRoaXMuaGFzRmFrZVJvb3QoKTsgLy8gTG8gZGVmaW5lcyBzZWfDum4gdHUgZXN0cnVjdHVyYVxuICAgIHJldHVybiBoYXNGYWtlUm9vdCA/IG5vZGUubGV2ZWwgLSAxIDogbm9kZS5sZXZlbDtcbiAgfVxuXG4gIGhhc0Zha2VSb290KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucm9vdFRpdGxlO1xuICB9XG5cbiAgcHVibGljIGNoaWxkUXVlcnlEYXRhKGZsYXROb2RlOiBPVHJlZUZsYXROb2RlKTogT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U+IHwgT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kYW9UcmVlLnF1ZXJ5Tm9kZUNoaWxkcmVuKGZsYXROb2RlLCB0aGlzLnJlY3Vyc2l2ZSk7XG4gIH1cblxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGw+XG4gIDxkaXYgZnhGbGV4PlxuICAgIDxkaXYgKm5nSWY9XCJoYXNDb250cm9scygpXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QnV0dG9uc1RleHQ7ZWxzZSBzaG93QnV0dG9uc1dpdGhvdXRUZXh0XCI+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkSW5zZXJ0QnV0dG9uXCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmFkZFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyAnSU5TRVJUJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVmcmVzaEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gYXJpYS1sYWJlbD1cIlJlZnJlc2hcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRSZWZyZXNoQnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZWxvYWREYXRhKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdSRUZSRVNIJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVsZXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpkZWxldGVcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0RFTEVURScgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0J1dHRvbnNXaXRob3V0VGV4dD5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkSW5zZXJ0QnV0dG9uXCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmFkZFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVmcmVzaEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlJlZnJlc2hcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRSZWZyZXNoQnV0dG9uXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphdXRvcmVuZXdcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRlbGV0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkRlbGV0ZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6ZGVsZXRlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbby10cmVlLWJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhGbGV4PlxuICAgICAgICA8c3BhbiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxvLXNlYXJjaC1pbnB1dCAqbmdJZj1cInF1aWNrRmlsdGVyXCIgW2ZpbHRlci1jYXNlLXNlbnNpdGl2ZV09XCJmaWx0ZXJDYXNlU2Vuc2l0aXZlXCIgW3Nob3ctY2FzZS1zZW5zaXRpdmUtY2hlY2tib3hdPVwic2hvd0Nhc2VTZW5zaXRpdmVDaGVja2JveCgpXCJcbiAgICAgICAgW2NvbHVtbnNdPVwicXVpY2tGaWx0ZXJDb2x1bW5zXCIgW3BsYWNlaG9sZGVyXT1cInF1aWNrRmlsdGVyUGxhY2Vob2xkZXJcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZsb2F0LWxhYmVsPVwibmV2ZXJcIiBzaG93LW1lbnU9XCJub1wiPlxuICAgICAgPC9vLXNlYXJjaC1pbnB1dD5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2hvd1RyZWVNZW51QnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiby10cmVlLW1lbnUtYnV0dG9uXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRyZWVNZW51Lm1hdE1lbnVcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6bW9yZV92ZXJ0XCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG8tdHJlZS1tZW51ICN0cmVlTWVudSBbc2VsZWN0LWFsbC1jaGVja2JveF09XCJzZWxlY3RBbGxDaGVja2JveFwiIFtzZWxlY3QtYWxsLWNoZWNrYm94LXZpc2libGVdPVwic2VsZWN0QWxsQ2hlY2tib3hWaXNpYmxlXCJcbiAgICAgICAgKG9uU2VsZWN0Q2hlY2tib3hDaGFuZ2UpPVwib25TZWxlY3RDaGVja2JveENoYW5nZSgkZXZlbnQpXCI+PC9vLXRyZWUtbWVudT5cblxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cblxuICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIChjbGljayk9XCJsZWFmTm9kZUNsaWNrZWQoJGV2ZW50LCBub2RlKVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xuICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkLW5vZGUnOiBpc1NlbGVjdGVkTm9kZShub2RlKX1cIj5cbiAgICAgICAgPCEtLSB1c2UgYSBkaXNhYmxlZCBidXR0b24gdG8gcHJvdmlkZSBwYWRkaW5nIGZvciB0cmVlIGxlYWYgLS0+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD48L2J1dHRvbj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVMZWFmTm9kZVRwbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVMZWFmTm9kZVRwbFwiIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGVja2JveENsaWNrZWQoJGV2ZW50KVwiIChjaGFuZ2UpPVwidG9kb0xlYWZJdGVtU2VsZWN0aW9uVG9nZ2xlKG5vZGUpXCIgKGtleURvd24pPVwiY2hlY2tib3hDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxlYWZOb2RlRnVsbHRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6bm9kZX1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2ltcGxlTGVhZk5vZGVUcGw+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGVhZk5vZGVGdWxsdGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDpub2RlfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImlzTGFzdENoaWxkQW5kSGFzTW9yZShub2RlKVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAjYnV0dG9uTG9hZE1vcmUgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25Mb2FkTW9yZSgkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgICAgIHt7ICdPX1RSRUUuTE9BRF9NT1JFJyB8IG9UcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L21hdC10cmVlLW5vZGU+XG4gICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBoYXNDaGlsZFwiIChjbGljayk9XCJwYXJlbnROb2RlQ2xpY2tlZCgkZXZlbnQsIG5vZGUpXCIgbWF0VHJlZU5vZGVQYWRkaW5nXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQtbm9kZSc6IGlzU2VsZWN0ZWROb2RlKG5vZGUpfVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIid0b2dnbGUgJyArIG5vZGUubGFiZWxcIiBtYXRUcmVlTm9kZVRvZ2dsZSAoY2xpY2spPVwib25DbGlja1RvZ2dsZUJ1dHRvbigkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPlxuICAgICAgICAgICAge3t0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2V4cGFuZF9tb3JlJyA6ICdjaGV2cm9uX3JpZ2h0J319XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVQYXJlbnROb2RlVHBsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVQYXJlbnROb2RlVHBsXCIgKGNsaWNrKT1cImNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlKVwiIFtjaGVja2VkXT1cImRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSlcIiBbaW5kZXRlcm1pbmF0ZV09XCJkZXNjZW5kYW50c1BhcnRpYWxseVNlbGVjdGVkKG5vZGUpXCI+XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGFyZW50Tm9kZUZ1bGx0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGV9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW1wbGVQYXJlbnROb2RlVHBsPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGFyZW50Tm9kZUZ1bGx0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGV9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC10cmVlLW5vZGU+XG5cblxuICAgIDwvbWF0LXRyZWU+XG4gIDwvZGl2PlxuXG4gIDwhLS0gbWF0IHBhZ2luYXRpb24tLT5cbiAgPG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uQ29udHJvbHMgJiYgcGFnZWFibGVcIiAjbWF0cGFnaW5hdG9yIFtsZW5ndGhdPVwiZGF0YVNvdXJjZT8ucmVzdWx0c0xlbmd0aFwiIFtwYWdlU2l6ZV09XCJxdWVyeVJvd3NcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgW3BhZ2VJbmRleF09XCJjdXJyZW50UGFnZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCIgKHBhZ2UpPVwib25DaGFuZ2VQYWdlKCRldmVudClcIlxuICAgIFtuZ1N0eWxlXT1cInsndmlzaWJpbGl0eSc6IChsb2FkaW5nIHwgYXN5bmMpID09PSBmYWxzZSA/ICd2aXNpYmxlJzonaGlkZGVuJ31cIj48L21hdC1wYWdpbmF0b3I+XG5cblxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtbm9kZSAjbGVhZk5vZGVGdWxsdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsZWFmTm9kZVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRMZWFmTm9kZVRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxlYWZOb2RlVGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGUuZGF0YX1cIj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TGVhZk5vZGVUcGw+XG4gICAge3tub2RlLmxhYmVsfX1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtbm9kZSAjcGFyZW50Tm9kZUZ1bGx0ZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhcmVudE5vZGVUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0UGFyZW50Tm9kZVRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBhcmVudE5vZGVUZW1wbGF0ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6bm9kZS5kYXRhfVwiPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRQYXJlbnROb2RlVHBsPlxuICAgIDxzcGFuPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwibm9kZS5pc0xvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGZ4RmxleD48L21hdC1wcm9ncmVzcy1iYXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
731
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBR1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYyxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFekUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEcsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFHakcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOEJBQThC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Y2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEZsYXRUcmVlQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90cmVlJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgU2VydmljZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zZXJ2aWNlLXJlc3BvbnNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZVNlcnZpY2VQcm92aWRlciwgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgT1RyZWVDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLXRyZWUtY29tcG9uZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyZWVQZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tdHJlZS1wZXJtaXNzaW9ucy50eXBlJztcbmltcG9ydCB7IE9UcmVlRmxhdE5vZGUgfSBmcm9tICcuLi8uLi90eXBlcy90cmVlLWZsYXQtbm9kZS50eXBlJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBGaWx0ZXJFeHByZXNzaW9uVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL2ZpbHRlci1leHByZXNzaW9uLnV0aWxzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0Zvcm1Db21wb25lbnQgfSBmcm9tICcuLi9mb3JtL28tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RPU2VydmljZUNvbXBvbmVudCB9IGZyb20gJy4uL28tc2VydmljZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgT1RyZWVEYW8gfSBmcm9tICcuL28tdHJlZS1kYW8uc2VydmljZSc7XG5pbXBvcnQgeyBPVHJlZURhdGFTb3VyY2UgfSBmcm9tICcuL28tdHJlZS5kYXRhc291cmNlJztcbmltcG9ydCB7IE9UcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlL3RyZWUtbm9kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VydmljZVV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC9zZXJ2aWNlLnV0aWxzJztcbmltcG9ydCB7IE9QZXJtaXNzaW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzL28tcGVybWlzc2lvbnMudHlwZSc7XG5pbXBvcnQgeyBTUUxPcmRlciB9IGZyb20gJy4uLy4uL3R5cGVzL3NxbC1vcmRlci50eXBlJztcbmltcG9ydCB7IE9RdWVyeURhdGFBcmdzIH0gZnJvbSAnLi4vLi4vdHlwZXMvcXVlcnktZGF0YS1hcmdzLnR5cGUnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE9UcmVlQ29tcG9uZW50U3RhdGVDbGFzcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0YXRlL28tdHJlZS1jb21wb25lbnQtc3RhdGUuY2xhc3MnO1xuaW1wb3J0IHsgT1F1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vLi4vdHlwZXMvcXVlcnktcGFyYW1zLnR5cGUnO1xuaW1wb3J0IHsgT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSB9IGZyb20gJy4uLy4uL2luamVjdGlvbi10b2tlbnMnO1xuXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RSRUUgPSBbXG4gIC8vIGF0dHIgW3N0cmluZ106IGxpc3QgaWRlbnRpZmllci4gSXQgaXMgbWFuZGF0b3J5IGlmIGRhdGEgYXJlIHByb3ZpZGVkIHRocm91Z2ggdGhlIGRhdGEgYXR0cmlidXRlLiBEZWZhdWx0OiBlbnRpdHkgKGlmIHNldCkuXG4gICdvYXR0cjogYXR0cicsXG5cbiAgLy8gc2VydmljZSBbc3RyaW5nXTogSkVFIHNlcnZpY2UgcGF0aC4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdzZXJ2aWNlJyxcblxuICAvLyBlbnRpdHkgW3N0cmluZ106IGVudGl0eSBvZiB0aGUgc2VydmljZS4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdlbnRpdHknLFxuXG4gIC8vIGNvbHVtbnMgW3N0cmluZ106IGNvbHVtbnMgb2YgdGhlIGVudGl0eSwgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdjb2x1bW5zJyxcblxuICAvLyBrZXlzIFtzdHJpbmddOiBlbnRpdHkga2V5cywgc2VwYXJhdGVkIGJ5ICc7Jy4gRGVmYXVsdDogbm8gdmFsdWUuXG4gICdrZXlzJyxcblxuICAvLyBwYXJlbnQta2V5cyBbc3RyaW5nXTogcGFyZW50IGtleXMgdG8gZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3BhcmVudEtleXM6IHBhcmVudC1rZXlzJyxcblxuICAvLyBxdWVyeS1tZXRob2QgW3N0cmluZ106IG5hbWUgb2YgdGhlIHNlcnZpY2UgbWV0aG9kIHRvIHBlcmZvcm0gcXVlcmllcy4gRGVmYXVsdDogcXVlcnkuXG4gICdxdWVyeU1ldGhvZDogcXVlcnktbWV0aG9kJyxcblxuICAvLyBpbnNlcnQtYnV0dG9uIFtub3x5ZXNdOiBzaG93IGluc2VydCBidXR0b24uIERlZmF1bHQ6IHllcy5cbiAgJ2luc2VydEJ1dHRvbjogaW5zZXJ0LWJ1dHRvbicsXG5cbiAgLy8gcmVmcmVzaC1idXR0b24gW25vfHllc106IHNob3cgcmVmcmVzaCBidXR0b24uIERlZmF1bHQ6IHllcy5cbiAgJ3JlZnJlc2hCdXR0b246IHJlZnJlc2gtYnV0dG9uJyxcblxuICAvLyBkZWxldGUtYnV0dG9uIFtub3x5ZXNdOiBzaG93IGRlbGV0ZSBidXR0b24gd2hlbiB1c2VyIHNlbGVjdCBpdGVtcy4gRGVmYXVsdDogeWVzLlxuICAnZGVsZXRlQnV0dG9uOiBkZWxldGUtYnV0dG9uJyxcblxuICAvLyBFTkQgT0YgREVGQVVMVF9JTlBVVFNfT19TRVJWSUNFX0NPTVBPTkVOVFxuICAndmlzaWJsZUNvbHVtbnM6IHZpc2libGUtY29sdW1ucycsXG4gICdzZWxlY3RBbGxDaGVja2JveDogc2VsZWN0LWFsbC1jaGVja2JveCcsXG4gICdzZXBhcmF0b3InLFxuICAncGFyZW50Q29sdW1uOiBwYXJlbnQtY29sdW1uJyxcbiAgJ3NvcnRDb2x1bW46IHNvcnQtY29sdW1uJyxcbiAgLy8gc2VsZWN0LWFsbC1jaGVja2JveC12aXNpYmxlIFt5ZXN8bm98dHJ1ZXxmYWxzZV06IHNob3cgc2VsZWN0aW9uIGNoZWNrIGJveGVzLkRlZmF1bHQ6IG5vLlxuICAnc2VsZWN0QWxsQ2hlY2tib3hWaXNpYmxlOiBzZWxlY3QtYWxsLWNoZWNrYm94LXZpc2libGUnLFxuICAvLyBmaWx0ZXIgW3llc3xub3x0cnVlfGZhbHNlXTogd2hldGhlciBmaWx0ZXIgaXMgY2FzZSBzZW5zaXRpdmUuIERlZmF1bHQ6IG5vLlxuICAnZmlsdGVyQ2FzZVNlbnNpdGl2ZTogZmlsdGVyLWNhc2Utc2Vuc2l0aXZlJyxcbiAgLy8gcXVpY2stZmlsdGVyIFtub3x5ZXNdOiBzaG93IHF1aWNrIGZpbHRlci4gRGVmYXVsdDogeWVzLlxuICAncXVpY2tGaWx0ZXI6IHF1aWNrLWZpbHRlcicsXG4gIC8vIHF1aWNrLWZpbHRlci1wbGFjZWhvbGRlcjogcXVpY2sgZmlsdGVyIHBsYWNlaG9sZGVyXG4gICdxdWlja0ZpbHRlclBsYWNlaG9sZGVyOiBxdWljay1maWx0ZXItcGxhY2Vob2xkZXInLFxuICAvLyBxdWljay1maWx0ZXItY29sdW1ucyBbc3RyaW5nXTogY29sdW1ucyBvZiB0aGUgZmlsdGVyLCBzZXBhcmF0ZWQgYnkgJzsnLiBEZWZhdWx0OiBubyB2YWx1ZS5cbiAgJ3F1aWNrRmlsdGVyQ29sdW1uczogcXVpY2stZmlsdGVyLWNvbHVtbnMnLFxuICAvLyBkZXRhaWwtbW9kZSBbbm9uZXxjbGlja3xkb3VibGVjbGlja106IHdheSB0byBvcGVuIHRoZSBkZXRhaWwgZm9ybSBvZiBhIHJvdy4gRGVmYXVsdDogJ2NsaWNrJy5cbiAgJ2RldGFpbE1vZGU6IGRldGFpbC1tb2RlJyxcbiAgLy8gZGV0YWlsLWZvcm0tcm91dGUgW3N0cmluZ106IHJvdXRlIG9mIGRldGFpbCBmb3JtLiBEZWZhdWx0OiAnZGV0YWlsJy5cbiAgJ2RldGFpbEZvcm1Sb3V0ZTogZGV0YWlsLWZvcm0tcm91dGUnLFxuICAvLyBzaG93LWJ1dHRvbnMtdGV4dCBbeWVzfG5vfHRydWV8ZmFsc2VdOiBzaG93IHRleHQgb2YgaGVhZGVyIGJ1dHRvbnMuIERlZmF1bHQ6IHllcy5cbiAgJ3Nob3dCdXR0b25zVGV4dDogc2hvdy1idXR0b25zLXRleHQnLFxuICAncm9vdFRpdGxlOiByb290LXRpdGxlJyxcbiAgJ3JlY3Vyc2l2ZScsXG4gICdyb3V0ZSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UUkVFID0gWydvbk5vZGVTZWxlY3RlZCcsICdvbk5vZGVFeHBhbmRlZCcsICdvbk5vZGVDb2xsYXBzZWQnLCAnb25Mb2FkTmV4dExldmVsJywgJ29uRGF0YUxvYWRlZCcsICdvbk5vZGVDbGljayddO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRyZWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vby10cmVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby10cmVlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19UUkVFLFxuICBvdXRwdXRzOiBERUZBVUxUX09VVFBVVFNfT19UUkVFLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLXRyZWVdJzogJ3RydWUnXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIE9UcmVlRGFvLFxuICAgIE9udGltaXplU2VydmljZVByb3ZpZGVyLFxuICAgIENvbXBvbmVudFN0YXRlU2VydmljZVByb3ZpZGVyLFxuICAgIHsgcHJvdmlkZTogT19DT01QT05FTlRfU1RBVEVfU0VSVklDRSwgdXNlQ2xhc3M6IE9UcmVlQ29tcG9uZW50U3RhdGVTZXJ2aWNlIH0sXG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBPVHJlZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0T1NlcnZpY2VDb21wb25lbnQ8T1RyZWVDb21wb25lbnRTdGF0ZVNlcnZpY2U+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuXG4gIGdldExldmVsID0gKG5vZGU6IE9UcmVlRmxhdE5vZGUpID0+IG5vZGUubGV2ZWw7XG5cbiAgaXNFeHBhbmRhYmxlID0gKG5vZGU6IE9UcmVlRmxhdE5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcblxuICBnZXRDaGlsZHJlbiA9IChub2RlOiBPVHJlZUZsYXROb2RlKTogYW55ID0+IHtcbiAgICBpZiAodGhpcy5yZWN1cnNpdmUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFJlY3Vyc2l2ZUNoaWxkcmVuTm9kZShub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJlZU5vZGVDaGlsZHJlbihub2RlKTtcbiAgICB9XG4gIH1cblxuICBnZXRUcmVlTm9kZUNoaWxkcmVuKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiBhbnkge1xuICAgIGlmIChub2RlLmxldmVsID09PSAwICYmIFV0aWwuaXNEZWZpbmVkKHRoaXMucm9vdFRpdGxlKSkge1xuICAgICAgcmV0dXJuIHRoaXMucm9vdE5vZGVzO1xuICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZE5vZGUpIHtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChub2RlLmNoaWxkTm9kZS5yb290VGl0bGUpICYmICFVdGlsLmlzRGVmaW5lZChub2RlLnJvb3ROb2RlKSkge1xuICAgICAgICBsZXQgcm9vdE5vZGU6IE9UcmVlRmxhdE5vZGUgPSB7XG4gICAgICAgICAgaWQ6IHRoaXMuZGF0YVNvdXJjZS5kYXRhLmxlbmd0aCArIDEsIHJvb3ROb2RlOiB0cnVlLCBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChub2RlLmNoaWxkTm9kZS5yb290VGl0bGUpLCBsZXZlbDogbm9kZS5sZXZlbCArIDEsIGV4cGFuZGFibGU6IHRydWUsIGRhdGE6IG5vZGUuZGF0YSwgaXNMb2FkaW5nOiBmYWxzZSwgbm9kZTogbm9kZS5jaGlsZE5vZGUsIGNoaWxkTm9kZTogbm9kZS5jaGlsZE5vZGVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLnNldChyb290Tm9kZSwgbm9kZSk7XG4gICAgICAgIHJldHVybiBbcm9vdE5vZGVdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRRdWVyeURhdGEobm9kZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVOb2Rlcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW1bdGhpcy5wYXJlbnRLZXlzXSA9PT0gbm9kZVt0aGlzLmtleXNdKTtcbiAgICB9XG4gIH1cblxuICBnZXRSZWN1cnNpdmVDaGlsZHJlbk5vZGUobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGFueSB7XG4gICAgaWYgKG5vZGUubGV2ZWwgPT09IDAgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5yb290VGl0bGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Tm9kZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkUXVlcnlEYXRhKG5vZGUpO1xuICAgIH1cblxuICB9XG4gIGdldENvbXBvbmVudEZpbHRlcihleGlzdGluZ0ZpbHRlcjogYW55ID0ge30pOiBhbnkge1xuICAgIGxldCBmaWx0ZXIgPSBleGlzdGluZ0ZpbHRlcjtcbiAgICBpZiAodGhpcy5yZWN1cnNpdmUgJiYgdGhpcy5wYXJlbnRDb2x1bW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFyZW50SXRlbUV4cHIgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uRnJvbU9iamVjdChmaWx0ZXIpO1xuICAgICAgY29uc3QgcGFyZW50Tm90TnVsbEV4cHIgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRFeHByZXNzaW9uSXNOdWxsKHRoaXMucGFyZW50Q29sdW1uKTtcbiAgICAgIGNvbnN0IGZpbHRlckV4cHIgPSBGaWx0ZXJFeHByZXNzaW9uVXRpbHMuYnVpbGRDb21wbGV4RXhwcmVzc2lvbihwYXJlbnRJdGVtRXhwciwgcGFyZW50Tm90TnVsbEV4cHIsIEZpbHRlckV4cHJlc3Npb25VdGlscy5PUF9BTkQpO1xuICAgICAgZmlsdGVyID0ge307XG4gICAgICBmaWx0ZXJbRmlsdGVyRXhwcmVzc2lvblV0aWxzLkZJTFRFUl9FWFBSRVNTSU9OX0tFWV0gPSBmaWx0ZXJFeHByO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuZ2V0Q29tcG9uZW50RmlsdGVyKGZpbHRlcik7XG4gIH1cblxuICBoYXNDaGlsZCA9IChfOiBudW1iZXIsIF9ub2RlRGF0YTogT1RyZWVGbGF0Tm9kZSkgPT4gX25vZGVEYXRhLmV4cGFuZGFibGU7XG5cbiAgaGFzTm9Db250ZW50ID0gKF86IG51bWJlciwgX25vZGVEYXRhOiBPVHJlZUZsYXROb2RlKSA9PiBfbm9kZURhdGEubGFiZWwgPT09ICcnO1xuXG4gIGhhc0xvYWRNb3JlID0gKG5vZGU6IE9UcmVlRmxhdE5vZGUpID0+IHRoaXMuZ2V0TG9naWNhbExldmVsKG5vZGUpID4gMCAmJiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgJiYgbm9kZS5ub2RlLnBhZ2VhYmxlO1xuXG4gIG9uTG9hZE1vcmUoZXZlbnQ6IEV2ZW50LCBub2RlOiBPVHJlZUZsYXROb2RlKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLmdldFBhcmVudE5vZGUobm9kZSk7XG5cbiAgICBpZiAoIXBhcmVudE5vZGUgfHwgcGFyZW50Tm9kZS5pc0xvYWRpbmcpIHJldHVybjtcblxuICAgIHBhcmVudE5vZGUuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBwYXJlbnROb2RlLm9mZnNldCA9IE1hdGgubWluKFxuICAgICAgKHBhcmVudE5vZGUub2Zmc2V0ID8/IDApICsgcGFyZW50Tm9kZS5jaGlsZE5vZGUucXVlcnlSb3dzLFxuICAgICAgcGFyZW50Tm9kZS50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcik7XG4gICAgcGFyZW50Tm9kZS5oYXNNb3JlID0gcGFyZW50Tm9kZS5vZmZzZXQgKyBwYXJlbnROb2RlLmNoaWxkTm9kZS5xdWVyeVJvd3MgPCBwYXJlbnROb2RlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyO1xuXG4gICAgdGhpcy5nZXRDaGlsZHJlbihwYXJlbnROb2RlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChyZXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gcmVzLmRhdGEgfHwgW107XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnVwZGF0ZVRyZWUocGFyZW50Tm9kZSwgbmV3RGF0YSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoJ0VSUk9SJywgJ01FU1NBR0VTLkVSUk9SX1FVRVJZJyk7XG4gICAgICAgIHBhcmVudE5vZGUuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpc0xhc3RDaGlsZEFuZEhhc01vcmUobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5nZXQobm9kZSk7XG4gICAgaWYgKCFwYXJlbnQ/Lmhhc01vcmUpIHJldHVybiBmYWxzZTtcblxuICAgIGNvbnN0IHNpYmxpbmdzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhwYXJlbnQpXG4gICAgICAuZmlsdGVyKGNoaWxkID0+IGNoaWxkLmxldmVsID09PSBub2RlLmxldmVsKTtcblxuICAgIGlmICghc2libGluZ3MgfHwgc2libGluZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBsYXN0U2libGluZyA9IHNpYmxpbmdzW3NpYmxpbmdzLmxlbmd0aCAtIDFdO1xuICAgIHJldHVybiBub2RlLmlkID09PSBsYXN0U2libGluZy5pZDtcbiAgfVxuXG4gIGRhdGFTb3VyY2U6IE9UcmVlRGF0YVNvdXJjZTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcmVmcmVzaEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBkZWxldGVCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dCdXR0b25zVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHZpc2libGVDb2x1bW5zOiBzdHJpbmc7XG4gIHNlcGFyYXRvcjogc3RyaW5nID0gQ29kZXMuSFlQSEVOX1NFUEFSQVRPUjtcbiAgcGFyZW50Q29sdW1uOiBzdHJpbmc7XG4gIHNvcnRDb2x1bW46IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2VsZWN0QWxsQ2hlY2tib3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHJlY3Vyc2l2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBfcXVpY2tGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcGFnaW5hdGlvbkNvbnRyb2xzID0gZmFsc2U7XG4gIHF1aWNrRmlsdGVyQ29sdW1uczogc3RyaW5nO1xuICBzZWxlY3RlZE5vZGU6IE9UcmVlRmxhdE5vZGU7XG4gIGNoaWxkcmVOb2RlczogT1RyZWVGbGF0Tm9kZVtdID0gW107XG4gIG5vZGVzQXJyYXk6IE9UcmVlRmxhdE5vZGVbXSA9IFtdO1xuICBhbmNlc3RvcnM6IGFueVtdID0gW107XG5cbiAgb25Ob2RlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBvbk5vZGVFeHBhbmRlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTm9kZUNvbGxhcHNlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTG9hZE5leHRMZXZlbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIG9uTm9kZUNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICByb290VGl0bGU6IHN0cmluZztcbiAgcm9vdE5vZGVzOiBPVHJlZUZsYXROb2RlW10gPSBbXTtcbiAgZGFvVHJlZTogT1RyZWVEYW87XG5cbiAgQENvbnRlbnRDaGlsZCgnbGVhZk5vZGVUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgbGVhZk5vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdwYXJlbnROb2RlVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IGZhbHNlIH0pXG4gIHBhcmVudE5vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICB0cmVlRmxhdHRlbmVyOiBhbnk7XG4gIHRyZWVDb250cm9sOiBGbGF0VHJlZUNvbnRyb2w8T1RyZWVGbGF0Tm9kZSwgT1RyZWVGbGF0Tm9kZT5cblxuICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvcikgbWF0cGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG5cbiAgQENvbnRlbnRDaGlsZCgnbm9kZVRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBzZXQgbm9kZVRlbXBsYXRlKHZhbHVlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMubGVhZk5vZGVUZW1wbGF0ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5wYXJlbnROb2RlVGVtcGxhdGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBAQ29udGVudENoaWxkKGZvcndhcmRSZWYoKCkgPT4gT1RyZWVOb2RlQ29tcG9uZW50KSwgeyBkZXNjZW5kYW50czogZmFsc2UgfSlcbiAgdHJlZU5vZGUhOiBPVHJlZU5vZGVDb21wb25lbnQ7XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uczogT1RyZWVQZXJtaXNzaW9ucztcbiAgcHJvdGVjdGVkIGFjdGlvbnNQZXJtaXNzaW9uczogT1Blcm1pc3Npb25zW107XG4gIHByb3RlY3RlZCB2aXNpYmxlQ29sdW1uc0FycmF5OiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgZW5hYmxlZERlbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHB1YmxpYyByb3V0ZTogc3RyaW5nO1xuICBwdWJsaWMgc29ydENvbHVtbkFycmF5OiBTUUxPcmRlcltdO1xuXG4gIGdldCBzaG93VHJlZU1lbnVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdGljT3B0ID0gdGhpcy5zZWxlY3RBbGxDaGVja2JveDtcbiAgICByZXR1cm4gc3RhdGljT3B0O1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE9Gb3JtQ29tcG9uZW50KSkgZm9ybTogT0Zvcm1Db21wb25lbnRcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IsIGVsUmVmLCBmb3JtKTtcbiAgICB0aGlzLmRhb1RyZWUgPSB0aGlzLmluamVjdG9yLmdldChPVHJlZURhbylcblxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRUcmVlQ29udHJvbCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVBhcmFtcygpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+ICh0aGlzLmVuYWJsZWREZWxldGVCdXR0b24gPSAhdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSgpKVxuICAgICAgKVxuICAgICk7XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldFRyZWVQZXJtaXNzaW9ucyh0aGlzLm9hdHRyLCB0aGlzLmFjdFJvdXRlKTtcbiAgICB0aGlzLmFjdGlvbnNQZXJtaXNzaW9ucyA9IHRoaXMuZ2V0QWN0aW9uc1Blcm1pc3Npb25zKHRoaXMucGVybWlzc2lvbnMpO1xuICAgIHRoaXMuc2V0QnV0dG9uUGVybWlzc2lvbnModGhpcy5hY3Rpb25zUGVybWlzc2lvbnMpO1xuICB9XG5cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5pbml0aWFsaXplRGFvKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZURhbygpIHtcblxuICAgIGlmICh0aGlzLnN0YXRpY0RhdGEpIHtcbiAgICAgIHRoaXMucXVlcnlPbkJpbmQgPSBmYWxzZTtcbiAgICAgIHRoaXMucXVlcnlPbkluaXQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2V0RGF0YUFycmF5KHRoaXMuc3RhdGljRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29uZmlndXJlU2VydmljZSgpO1xuICAgIH1cbiAgfVxuXG4gIGluaXRpYWxpemVQYXJhbXMoKTogdm9pZCB7XG4gICAgLy8gSWYgdmlzaWJsZS1jb2x1bW5zIGlzIG5vdCBwcmVzZW50IHRoZW4gdmlzaWJsZS1jb2x1bW5zIGlzIGFsbCBjb2x1bW5zXG4gICAgaWYgKCF0aGlzLnZpc2libGVDb2x1bW5zKSB7XG4gICAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5jb2x1bW5zO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLnN0YXRlLnF1ZXJ5UmVjb3JkT2Zmc2V0ID0gMDtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlID8/IDA7XG4gICAgfVxuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5xdWlja0ZpbHRlckNvbHVtbnMpKSB7XG4gICAgICB0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucyA9IHRoaXMudmlzaWJsZUNvbHVtbnM7XG4gICAgfVxuICAgIHRoaXMucGFyc2VTb3J0Q29sdW1uKCk7XG4gIH1cblxuICBnZXQgc3RhdGUoKTogT1RyZWVDb21wb25lbnRTdGF0ZUNsYXNzIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdGF0ZVNlcnZpY2Uuc3RhdGU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1uc0FycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMudmlzaWJsZUNvbHVtbnMsIHRydWUpO1xuICAgIHRoaXMucXVpY2tGaWx0ZXJDb2xBcnJheSA9IFV0aWwucGFyc2VBcnJheSh0aGlzLnF1aWNrRmlsdGVyQ29sdW1ucywgdHJ1ZSk7XG4gICAgdGhpcy5zZXREYXRhc291cmNlKCk7XG4gICAgdGhpcy5hZnRlclZpZXdJbml0KCk7XG4gICAgdGhpcy5yZWdpc3RlclF1aWNrRmlsdGVyKHRoaXMuc2VhcmNoSW5wdXRDb21wb25lbnQpO1xuICAgIGlmICh0aGlzLnF1ZXJ5T25Jbml0KSB7XG4gICAgICB0aGlzLnF1ZXJ5RGF0YSgpO1xuICAgIH1cbiAgICB0aGlzLm1hbmFnZUN1c3RvbVBlcm1pc3Npb25zKHRoaXMuYWN0aW9uc1Blcm1pc3Npb25zLCAnW28tdHJlZS1idXR0b25dJyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJUcmVlTm9kZShvVHJlZU5vZGU6IE9UcmVlTm9kZUNvbXBvbmVudCkge1xuICAgIC8vIHRoaXMuZGF0YVNvdXJjZS5kYXRhLmZvckVhY2goKVxuICB9XG5cbiAgY2hlY2tib3hDbGlja2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgbGVhZk5vZGVDbGlja2VkKGV2ZW50OiBFdmVudCwgbm9kZTogT1RyZWVGbGF0Tm9kZSk6IHZvaWQge1xuICAgIHRoaXMubm9kZUNsaWNrZWQobm9kZSwgZXZlbnQpO1xuICB9XG5cbiAgcGFyZW50Tm9kZUNsaWNrZWQoZXZlbnQ6IEV2ZW50LCBub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5ub2RlQ2xpY2tlZChub2RlLCBldmVudCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbm9kZUNsaWNrZWQobm9kZTogT1RyZWVGbGF0Tm9kZSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9uTm9kZUNsaWNrLmVtaXQobm9kZSk7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBub2RlO1xuICAgIGlmICh0aGlzLmRldGFpbE1vZGUgIT09IENvZGVzLkRFVEFJTF9NT0RFX05PTkUgJiYgIXRoaXMuaXNSb290Tm9kZShub2RlKSkge1xuICAgICAgbm9kZS5ub2RlLnZpZXdEZXRhaWwobm9kZS5kYXRhLCB7IGxhYmVsOiBub2RlLmxhYmVsIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlzUm9vdE5vZGUobm9kZTogT1RyZWVGbGF0Tm9kZSkge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZChub2RlLnJvb3ROb2RlKSAmJiBub2RlLnJvb3ROb2RlO1xuICB9XG5cbiAgb25DbGlja1RvZ2dsZUJ1dHRvbihldmVudDogRXZlbnQsIG5vZGUpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKSB7XG4gICAgICB0aGlzLm9uTm9kZUV4cGFuZGVkLmVtaXQobm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub25Ob2RlQ29sbGFwc2VkLmVtaXQobm9kZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAqIFRvZ2dsZSB0aGUgbm9kZSwgcmVtb3ZlIGZyb20gZGlzcGxheSBsaXN0XG4gICovXG4gIHRvZ2dsZU5vZGUobm9kZTogT1RyZWVGbGF0Tm9kZSwgZXhwYW5kOiBib29sZWFuKSB7XG4gICAgbm9kZS5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGlmIChleHBhbmQgJiYgbm9kZS5leHBhbmRhYmxlKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4obm9kZSk7XG4gICAgICBpZiAoVXRpbC5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlVHJlZShub2RlLCBjaGlsZHJlbiwgZXhwYW5kKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXN5bmNUcmVlKGNoaWxkcmVuLCBub2RlLCBleHBhbmQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlVHJlZShub2RlLCBbXSwgZXhwYW5kKTtcbiAgICB9XG5cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQXN5bmNUcmVlKGNoaWxkcmVuOiBhbnksIGZsYXROb2RlOiBPVHJlZUZsYXROb2RlLCBleHBhbmQ6IGJvb2xlYW4pIHtcbiAgICBjaGlsZHJlbi5zdWJzY3JpYmUoKHJlczogU2VydmljZVJlc3BvbnNlKSA9PiB7XG4gICAgICBsZXQgZGF0YTtcbiAgICAgIGlmIChyZXMuaXNTdWNjZXNzZnVsKCkpIHtcbiAgICAgICAgY29uc3QgYXJyRGF0YSA9IChyZXMuZGF0YSAhPT0gdW5kZWZpbmVkKSA/IHJlcy5kYXRhIDogW107XG4gICAgICAgIGRhdGEgPSBVdGlsLmlzQXJyYXkoYXJyRGF0YSkgPyBhcnJEYXRhIDogW107XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLnJlY3Vyc2l2ZSA/IGZsYXROb2RlLm5vZGUgOiBmbGF0Tm9kZS5jaGlsZE5vZGU7XG4gICAgICBmbGF0Tm9kZS5oYXNNb3JlID0gZmFsc2U7XG5cbiAgICAgIGZsYXROb2RlLnRvdGFsUXVlcnlSZWNvcmRzTnVtYmVyID0gbm9kZS5wYWdlYWJsZSA/IHJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlciA6IGRhdGEubGVuZ3RoO1xuXG4gICAgICBjb25zdCBjYW5Mb2FkTW9yZSA9IHRoaXMuaGFzTG9hZE1vcmUoZmxhdE5vZGUpO1xuICAgICAgZmxhdE5vZGUuaGFzTW9yZSA9IGZhbHNlO1xuICAgICAgaWYgKGNhbkxvYWRNb3JlKSB7XG4gICAgICAgIGZsYXROb2RlLmhhc01vcmUgPSBVdGlsLmlzRGVmaW5lZChyZXMuc3RhcnRSZWNvcmRJbmRleCkgPyAobm9kZS5xdWVyeVJvd3MgKyByZXMuc3RhcnRSZWNvcmRJbmRleCA8IHJlcy50b3RhbFF1ZXJ5UmVjb3Jkc051bWJlcikgOiAodGhpcy5xdWVyeVJvd3MgPCBkYXRhLmxlbmd0aCk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGFTb3VyY2UudXBkYXRlVHJlZShmbGF0Tm9kZSwgZGF0YSwgZXhwYW5kKTtcbiAgICB9LCBlcnIgPT4ge1xuICAgICAgZmxhdE5vZGUuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5xdWVyeUZhbGxiYWNrRnVuY3Rpb24pKSB7XG4gICAgICAgIHRoaXMucXVlcnlGYWxsYmFja0Z1bmN0aW9uKGVycik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9FcnJvckRpYWxvZ01hbmFnZXIub3BlbkVycm9yRGlhbG9nKGVycik7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cbiAgLyoqIFRvZ2dsZSBhIGxlYWYgdG8tZG8gaXRlbSBzZWxlY3Rpb24uIENoZWNrIGFsbCB0aGUgcGFyZW50cyB0byBzZWUgaWYgdGhleSBjaGFuZ2VkICovXG4gIHRvZG9MZWFmSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy50b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlKTtcbiAgfVxuXG4gIC8qKiBUb2dnbGUgdGhlIHRvLWRvIGl0ZW0gc2VsZWN0aW9uLiBTZWxlY3QvZGVzZWxlY3QgYWxsIHRoZSBkZXNjZW5kYW50cyBub2RlICovXG4gIHRvZG9JdGVtU2VsZWN0aW9uVG9nZ2xlKG5vZGU6IE9UcmVlRmxhdE5vZGUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbi50b2dnbGUobm9kZSk7XG5cbiAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XG4gICAgdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChub2RlKVxuICAgICAgPyB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4uZGVzY2VuZGFudHMpXG4gICAgICA6IHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KC4uLmRlc2NlbmRhbnRzKTtcblxuICAgIC8vIEZvcmNlIHVwZGF0ZSBmb3IgdGhlIHBhcmVudFxuICAgIGRlc2NlbmRhbnRzLmV2ZXJ5KChjaGlsZCkgPT4gdGhpcy5zZWxlY3Rpb24uaXNTZWxlY3RlZChjaGlsZCkpO1xuICAgIHRoaXMub25Ob2RlU2VsZWN0ZWQuZW1pdChub2RlLmRhdGEpO1xuXG5cbiAgfVxuXG5cbiAgLyoqIFdoZXRoZXIgYWxsIHRoZSBkZXNjZW5kYW50cyBvZiB0aGUgbm9kZSBhcmUgc2VsZWN0ZWQuICovXG4gIGRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZTogT1RyZWVGbGF0Tm9kZSk6IGJvb2xlYW4ge1xuICAgIGxldCBkZXNjQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBjb25zdCBkZXNjZW5kYW50cyA9IHRoaXMudHJlZUNvbnRyb2wuZ2V0RGVzY2VuZGFudHMobm9kZSk7XG4gICAgaWYgKG5vZGUuZXhwYW5kYWJsZSkge1xuXG4gICAgICBpZiAodGhpcy50cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpICYmIGRlc2NlbmRhbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGVzY0FsbFNlbGVjdGVkID0gZGVzY2VuZGFudHMuZXZlcnkoKGNoaWxkKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpXG4gICAgICAgICk7XG4gICAgICAgIGRlc2NBbGxTZWxlY3RlZCA/IHRoaXMuc2VsZWN0aW9uLnNlbGVjdChub2RlKSA6IHRoaXMuc2VsZWN0aW9uLmRlc2VsZWN0KG5vZGUpO1xuICAgICAgICByZXR1cm4gZGVzY0FsbFNlbGVjdGVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQobm9kZSk7XG4gICAgfVxuXG4gIH1cblxuICAvKiogV2hldGhlciBwYXJ0IG9mIHRoZSBkZXNjZW5kYW50cyBhcmUgc2VsZWN0ZWQgKi9cbiAgZGVzY2VuZGFudHNQYXJ0aWFsbHlTZWxlY3RlZChub2RlOiBPVHJlZUZsYXROb2RlKTogYm9vbGVhbiB7XG5cbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gICAgY29uc3QgZGVzY2VuZGFudHMgPSB0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpO1xuICAgIGlmIChub2RlLmV4cGFuZGFibGUpIHtcbiAgICAgIGlmIChkZXNjZW5kYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdCA9IGRlc2NlbmRhbnRzLnNvbWUoKGNoaWxkKSA9PlxuICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmlzU2VsZWN0ZWQoY2hpbGQpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQgJiYgIXRoaXMuZGVzY2VuZGFudHNBbGxTZWxlY3RlZChub2RlKTtcblxuICB9XG5cblxuICBwcm90ZWN0ZWQgc2V0VHJlZUNvbnRyb2woKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLnRyZWVDb250cm9sKSkge1xuICAgICAgdGhpcy50cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2w8T1RyZWVGbGF0Tm9kZT4odGhpcy5nZXRMZXZlbCwgdGhpcy5pc0V4cGFuZGFibGUpO1xuICAgIH1cbiAgfVxuICAvKiogKi9cblxuICBwcm90ZWN0ZWQgc2V0RGF0YXNvdXJjZSgpIHtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuZGF0YVNvdXJjZSkpIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBPVHJlZURhdGFTb3VyY2UodGhpcywgdGhpcy50cmVlQ29udHJvbCwgdGhpcy5pbmplY3Rvcik7XG4gICAgfVxuXG4gIH1cblxuICBnZXRQYXJlbnROb2Rlcyhub2RlOiBPVHJlZUZsYXROb2RlLCBpbmRleDogbnVtYmVyLCB0cmVlOiBPVHJlZUZsYXROb2RlW10pOiBPVHJlZUZsYXROb2RlW10ge1xuICAgIGxldCBwYXJlbnROb2RlID0gdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLmdldChub2RlKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQocGFyZW50Tm9kZSkpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nTm9kZSA9IHRyZWUuZmluZEluZGV4KHggPT4geFsnaWQnXSA9PT0gcGFyZW50Tm9kZVsnaWQnXSkgPiAtMTtcbiAgICAgIGlmIChVdGlsLmlzRGVmaW5lZChwYXJlbnROb2RlKSkge1xuICAgICAgICBpZiAoIWV4aXN0aW5nTm9kZSkge1xuICAgICAgICAgIC8vaWYgbm90IGV4aXN0IG5vZGUgaW4gdHJlZSB0aGVuLCBhZGQgcGFyZW50IGJlZm9yZSBub2RlXG4gICAgICAgICAgdHJlZS5zcGxpY2UoaW5kZXgsIDAsIHBhcmVudE5vZGUpXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFyZW50Tm9kZXMocGFyZW50Tm9kZSwgaW5kZXgsIHRyZWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vaWYgbm90IGV4aXN0IG5vZGUgaW4gdHJlZSB0aGVuLCBhZGQgcGFyZW50IGJlZm9yZSBub2RlXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGFyZW50Tm9kZXMocGFyZW50Tm9kZSwgaW5kZXgsIHRyZWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdHJlZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRyZWU7XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyRGF0YSh2YWx1ZT86IHN0cmluZywgbG9hZE1vcmU/OiBib29sZWFuKTogdm9pZCB7XG5cbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgY29uc3QgcXVlcnlBcmdzOiBPUXVlcnlEYXRhQXJncyA9IHtcbiAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICBsZW5ndGg6IHRoaXMucXVlcnlSb3dzLFxuICAgICAgICByZXBsYWNlOiB0cnVlXG4gICAgICB9O1xuICAgICAgdGhpcy5xdWVyeURhdGEodm9pZCAwLCBxdWVyeUFyZ3MpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJlZFRyZWVEYXRhID0gW107XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBmb3IgKGxldCBbbmVzdGVkTm9kZV0gb2YgdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwKSB7XG4gICAgICAgIGlmIChuZXN0ZWROb2RlLmxhYmVsLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZih2YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpKSA+IC0xKSB7XG4gICAgICAgICAgZmlsdGVyZWRUcmVlRGF0YS5wdXNoKG5lc3RlZE5vZGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgd2hpbGUgKGluZGV4IDwgZmlsdGVyZWRUcmVlRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgbGV0IG5vZGUgPSBmaWx0ZXJlZFRyZWVEYXRhW2luZGV4XTtcbiAgICAgICAgY29uc3QgcGFyZW50Tm9kZXMgPSB0aGlzLmdldFBhcmVudE5vZGVzKG5vZGUsIGluZGV4LCBmaWx0ZXJlZFRyZWVEYXRhKTtcbiAgICAgICAgaWYgKCFVdGlsLmlzQXJyYXlFbXB0eShwYXJlbnROb2RlcykpIHtcbiAgICAgICAgICBmaWx0ZXJlZFRyZWVEYXRhID0gcGFyZW50Tm9kZXM7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZmlsdGVyZWRUcmVlRGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyZWRUcmVlRGF0YSA9IHRoaXMuZGF0YVJlc3BvbnNlQXJyYXk7XG4gICAgICB0aGlzLnNldERhdGFBcnJheShmaWx0ZXJlZFRyZWVEYXRhKTtcbiAgICB9XG5cblxuICAgIC8vIE5vdGlmeSB0aGUgY2hhbmdlLlxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgbGV0IHJvb3ROb2RlcyA9IGZpbHRlcmVkVHJlZURhdGEuZmlsdGVyKG5vZGUgPT4gbm9kZS5sZXZlbCA9PSAwKTtcbiAgICAgIHRoaXMuZXhwYW5kTm9kZXNXaXRoTm9kZXMocm9vdE5vZGVzKTtcbiAgICB9XG5cbiAgfVxuICAvKipcbiAgICogRXhwYW5kcyBub2RlcyB3aXRoIG5vZGVzXG4gICAqIEBwYXJhbSB0cmVlRGF0YVxuICAgKi9cbiAgZXhwYW5kTm9kZXNXaXRoTm9kZXModHJlZURhdGE6IE9UcmVlRmxhdE5vZGVbXSkge1xuICAgIHRyZWVEYXRhLmZpbHRlcihub2RlID0+IG5vZGUuZXhwYW5kYWJsZSkuZm9yRWFjaChub2RlID0+IHtcbiAgICAgIGNvbnN0IGRlc2NlbmRhbnRzID0gdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKTtcbiAgICAgIGlmIChkZXNjZW5kYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xuICAgICAgICB0aGlzLmV4cGFuZE5vZGVzV2l0aE5vZGVzKGRlc2NlbmRhbnRzKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAgKiBHZXRzIGRhdGEgdHJlZVxuICAgICogQHJldHVybnNcbiAgICAqL1xuICBnZXREYXRhQXJyYXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGFvVHJlZS5kYXRhO1xuICB9XG5cbiAgc2V0RGF0YUFycmF5KGRhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5jbGVhcigpO1xuICAgIHRoaXMuZGFvVHJlZS5zZXREYXRhQXJyYXkoZGF0YSk7XG4gICAgaWYgKHRoaXMucmVjdXJzaXZlKSB7XG4gICAgICB0aGlzLmNoaWxkcmVOb2RlcyA9IGRhdGEuZmlsdGVyKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtW3RoaXMucGFyZW50Q29sdW1uXSAhPSBudWxsXG4gICAgICApO1xuICAgICAgdGhpcy5yb290Tm9kZXMgPSBkYXRhLmZpbHRlcihcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gIVV0aWwuaXNEZWZpbmVkKGl0ZW1bdGhpcy5wYXJlbnRDb2x1bW5dKSB8fCBpdGVtW3RoaXMucGFyZW50Q29sdW1uXSA9PT0gbnVsbFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvb3ROb2RlcyA9IGRhdGE7XG5cbiAgICBsZXQgbGV2ZWwgPSAwO1xuICAgIGxldCByb290Tm9kZTogT1RyZWVGbGF0Tm9kZTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5yb290VGl0bGUpKSB7XG4gICAgICBsZXZlbCA9ICsxO1xuICAgICAgcm9vdE5vZGUgPSB7IGlkOiAwLCBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLnJvb3RUaXRsZSksIHJvb3ROb2RlOiB0cnVlLCBsZXZlbDogMCwgZXhwYW5kYWJsZTogdHJ1ZSwgZGF0YToge30sIGlzTG9hZGluZzogZmFsc2UgfTtcbiAgICAgIHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5zZXQocm9vdE5vZGUsIG51bGwpO1xuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBbcm9vdE5vZGVdO1xuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQocm9vdE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMucm9vdE5vZGVzLm1hcChub2RlID0+IHRoaXMudHJhbnNmb3JtZXIobm9kZSwgbGV2ZWwpKTtcbiAgICB9XG5cbiAgfVxuXG4gIHRyYW5zZm9ybWVyID0gKG5vZGU6IGFueSwgbGV2ZWw6IG51bWJlciwgcGFyZW50Tm9kZT86IGFueSkgPT4ge1xuXG4gICAgY29uc3Qgbm9kZUNoaWxkcmVuID0gdGhpcy5jaGlsZHJlTm9kZXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtW3RoaXMucGFyZW50Q29sdW1uXSA9PT0gbm9kZVt0aGlzLmtleXNdKTtcbiAgICBjb25zdCBmbGF0Tm9kZTogT1RyZWVGbGF0Tm9kZSA9XG4gICAge1xuICAgICAgJ2lkJzogdGhpcy5nZXROb2RlSWQobm9kZSwgcGFyZW50Tm9kZSksXG4gICAgICAnbGFiZWwnOiB0aGlzLmdldEl0ZW1UZXh0KG5vZGUpLFxuICAgICAgJ2xldmVsJzogbGV2ZWwsXG4gICAgICAnbm9kZSc6IHRoaXMsXG4gICAgICBjaGlsZE5vZGU6IHRoaXMudHJlZU5vZGUsXG4gICAgICAnZXhwYW5kYWJsZSc6IFV0aWwuaXNEZWZpbmVkKHRoaXMudHJlZU5vZGUpIHx8ICEhbm9kZUNoaWxkcmVuPy5sZW5ndGggfHwgdGhpcy5yZWN1cnNpdmUsXG4gICAgICAnZGF0YSc6IG5vZGUsXG4gICAgICAnaXNMb2FkaW5nJzogZmFsc2UsXG4gICAgICAncm91dGUnOiB0aGlzLnJvdXRlLFxuICAgICAgJ29mZnNldCc6IHRoaXMucGFyZW50Q29tcG9uZW50Py5xdWVyeVJvd3MgPz8gMFxuICAgIH07XG5cbiAgICB0aGlzLmRhb1RyZWUuZmxhdE5vZGVNYXAuc2V0KGZsYXROb2RlLCBwYXJlbnROb2RlKTtcblxuICAgIC8vcmVjdXJzaXZlXG4gICAgbm9kZUNoaWxkcmVuLmZvckVhY2gobm9kZSA9PiB0aGlzLnRyYW5zZm9ybWVyKG5vZGUsIGxldmVsICsgMSkpO1xuICAgIHJldHVybiBmbGF0Tm9kZTtcblxuXG4gIH1cblxuICBvblNlbGVjdENoZWNrYm94Q2hhbmdlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNlbGVjdEFsbENoZWNrYm94VmlzaWJsZSA9IHZpc2libGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgc29ydChhcnJheTogT1RyZWVGbGF0Tm9kZVtdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydENvbHVtbiAhPSBudWxsKSB7XG4gICAgICBhcnJheS5zb3J0KChhLCBiKSA9PlxuICAgICAgICBhLmRhdGFbdGhpcy5zb3J0Q29sdW1uXS5sb2NhbGVDb21wYXJlKGIuZGF0YVt0aGlzLnNvcnRDb2x1bW5dKVxuICAgICAgKTtcbiAgICAgIGFycmF5XG4gICAgICAgIC5maWx0ZXIoKG5vZGUpID0+ICEhdGhpcy50cmVlQ29udHJvbC5nZXREZXNjZW5kYW50cyhub2RlKSlcbiAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHRoaXMuc29ydCh0aGlzLnRyZWVDb250cm9sLmdldERlc2NlbmRhbnRzKG5vZGUpKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1UZXh0KGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZUNvbHVtbnNBcnJheVxuICAgICAgLmZpbHRlcigoY29sKSA9PiBpdGVtW2NvbF0gIT0gbnVsbCAmJiBgJHtpdGVtW2NvbF19YC5sZW5ndGggPiAwKVxuICAgICAgLm1hcCgoY29sKSA9PiBpdGVtW2NvbF0pXG4gICAgICAuam9pbih0aGlzLnNlcGFyYXRvcik7XG4gIH1cblxuICBnZXRJdGVtS2V5KGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMua2V5c0FycmF5Lm1hcCgoY29sKSA9PiBpdGVtW2NvbF0pLmpvaW4oJzsnKTtcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGZpbHRlckJ5UXVpY2tGaWx0ZXJDb2x1bW5zKFxuICAgIGl0ZW06IGFueSxcbiAgICBxdWlja2ZpbHRlcjogc3RyaW5nXG4gICk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNhc2VTZW5zaXRpdmUgPSB0aGlzLmlzRmlsdGVyQ2FzZVNlbnNpdGl2ZSgpO1xuICAgIGNvbnN0IHJlZ0V4cFN0ciA9IG5ldyBSZWdFeHAoXG4gICAgICBVdGlsLmVzY2FwZVNwZWNpYWxDaGFyYWN0ZXIoXG4gICAgICAgIFV0aWwubm9ybWFsaXplU3RyaW5nKHF1aWNrZmlsdGVyLCAhY2FzZVNlbnNpdGl2ZSlcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmdldFF1aWNrRmlsdGVyQ29sdW1ucygpLnNvbWUoKGNvbCkgPT5cbiAgICAgIHJlZ0V4cFN0ci50ZXN0KFV0aWwubm9ybWFsaXplU3RyaW5nKGl0ZW0uZGF0YVtjb2xdICsgJycsICFjYXNlU2Vuc2l0aXZlKSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBzdXBlci5pbnNlcnREZXRhaWwoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXROb2RlSWQoaXRlbTogYW55LCBwYXJlbnROb2RlOiBhbnkpIHtcbiAgICAvKiogcmV2aXNhcmxvOmlndWFsIGNvbiBpZCBpbmNyZW1lbnRhbCBlcmEgbWFzIGZhY2lsIGUgaWd1YWwgZGUgZWZpY2llbnRlICovXG4gICAgbGV0IGlkID0gJyc7XG4gICAgdGhpcy5rZXlzQXJyYXkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWQgKz0gaXRlbVtrZXldO1xuICAgIH0pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnBhcmVudEtleXMpICYmIFV0aWwuaXNEZWZpbmVkKHBhcmVudE5vZGUpKSB7XG4gICAgICBpZCArPSBwYXJlbnROb2RlLmlkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmtleXMgKyAnOicgKyBpZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBuYXZpZ2F0ZVRvVmlld0RldGFpbChub2RlOiBPVHJlZUZsYXROb2RlKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG5vZGUucm91dGUpKSB7XG4gICAgICBsZXQgcm91dGUgPSB1bmRlZmluZWQ7XG5cbiAgICAgIGxldCBub2RlUm91dGUgPSBub2RlLnJvdXRlO1xuICAgICAgbGV0IHJvdXRlQXJyYXkgPSBub2RlUm91dGUuc3BsaXQoQ29kZXMuUk9VVEVfU0VQQVJBVE9SKTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSByb3V0ZUFycmF5Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChyb3V0ZUFycmF5W2ldLnN0YXJ0c1dpdGgoQ29kZXMuUk9VVEVfVkFSSUFCTEVfQ0hBUikpIHtcbiAgICAgICAgICByb3V0ZUFycmF5W2ldID0gbm9kZS5kYXRhW3JvdXRlQXJyYXlbaV0uc3Vic3RyaW5nKDEpXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcm91dGUgPSByb3V0ZUFycmF5LmpvaW4oQ29kZXMuUk9VVEVfU0VQQVJBVE9SKTtcblxuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJvdXRlKSkge1xuICAgICAgICBjb25zdCBleHRyYXMgPSB7XG4gICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5hY3RSb3V0ZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVdLCBleHRyYXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzU2VsZWN0ZWROb2RlKG5vZGU6IE9UcmVlRmxhdE5vZGUpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE5vZGUgPT0gbm9kZTtcbiAgfVxuXG4gIHB1YmxpYyBvbkl0ZW1EZXRhaWxDbGljayhub2RlOiBPVHJlZUZsYXROb2RlKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVJdGVtQ2xpY2sobm9kZS5kYXRhKTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLl9zZWxlY3Rpb24pKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSwgdHJ1ZSwgKHNtMSwgc20yKSA9PiBzbTEuaWQgPT09IHNtMi5pZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb247XG4gIH1cblxuICBnZXRTZWxlY3RlZEl0ZW1zKCk6IGFueVtdIHtcbiAgICBjb25zdCBzZWxlY3RlZEZsYXROb2RlcyA9IHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkO1xuICAgIGNvbnN0IHNlbGVjdGVkS2V5cyA9IHRoaXMuZ2V0U2VsZWN0ZWROb2RlS2V5cyhzZWxlY3RlZEZsYXROb2Rlcyk7XG5cbiAgICBjb25zdCBub2RlTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBjb25zdCByb290Tm9kZXM6IGFueVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGZsYXROb2RlIG9mIHNlbGVjdGVkRmxhdE5vZGVzKSB7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLmdldEZsYXROb2RlSWRlbnRpZmllcihmbGF0Tm9kZSk7XG4gICAgICBjb25zdCB0cmVlTm9kZSA9IHRoaXMuY3JlYXRlVHJlZU5vZGUoZmxhdE5vZGUpO1xuICAgICAgbm9kZU1hcC5zZXQoa2V5LCB0cmVlTm9kZSk7XG5cbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5nZXQoZmxhdE5vZGUpO1xuICAgICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgICAgcm9vdE5vZGVzLnB1c2godHJlZU5vZGUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGFyZW50S2V5ID0gdGhpcy5nZXRGbGF0Tm9kZUlkZW50aWZpZXIocGFyZW50KTtcbiAgICAgIGlmICghc2VsZWN0ZWRLZXlzLmhhcyhwYXJlbnRLZXkpKSB7XG4gICAgICAgIHJvb3ROb2Rlcy5wdXNoKHRyZWVOb2RlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLmVuc3VyZU5vZGVJbk1hcChwYXJlbnQsIG5vZGVNYXApO1xuICAgICAgdGhpcy5hZGRDaGlsZFRvUGFyZW50KHBhcmVudE5vZGUsIHRyZWVOb2RlKTtcblxuICAgICAgaWYgKHRoaXMuc2hvdWxkQmVSb290KHBhcmVudCwgc2VsZWN0ZWRLZXlzKSAmJiAhcm9vdE5vZGVzLmluY2x1ZGVzKHBhcmVudE5vZGUpKSB7XG4gICAgICAgIHJvb3ROb2Rlcy5wdXNoKHBhcmVudE5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByb290Tm9kZXM7XG4gIH1cblxuICBwdWJsaWMgcGFyc2VTb3J0Q29sdW1uKCk6IHZvaWQge1xuICAgIHRoaXMuc29ydENvbHVtbkFycmF5ID0gU2VydmljZVV0aWxzLnBhcnNlU29ydENvbHVtbnModGhpcy5zb3J0Q29sdW1uKSB8fCBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXI6IG9iamVjdCwgb3ZyckFyZ3M/OiBPUXVlcnlEYXRhQXJncyk6IE9RdWVyeVBhcmFtcyB7XG4gICAgY29uc3QgcXVlcnlBcmd1bWVudHMgPSBzdXBlci5nZXRRdWVyeUFyZ3VtZW50cyhmaWx0ZXIsIG92cnJBcmdzKTtcbiAgICBpZiAodGhpcy5wYWdlYWJsZSkge1xuICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuc29ydENvbHVtbkFycmF5KSkge1xuICAgICAgICBxdWVyeUFyZ3VtZW50c1s2XSA9IHRoaXMuc29ydENvbHVtbkFycmF5O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcXVlcnlBcmd1bWVudHM7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEJlUm9vdChwYXJlbnQ6IE9UcmVlRmxhdE5vZGUsIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgICBjb25zdCBncmFuZFBhcmVudCA9IHRoaXMuZGFvVHJlZS5mbGF0Tm9kZU1hcC5nZXQocGFyZW50KTtcbiAgICBpZiAoIWdyYW5kUGFyZW50KSByZXR1cm4gdHJ1ZTtcblxuICAgIGNvbnN0IGdyYW5kUGFyZW50S2V5ID0gdGhpcy5nZXRGbGF0Tm9kZUlkZW50aWZpZXIoZ3JhbmRQYXJlbnQpO1xuICAgIHJldHVybiAhc2VsZWN0ZWRLZXlzLmhhcyhncmFuZFBhcmVudEtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlVHJlZU5vZGUoZmxhdE5vZGU6IE9UcmVlRmxhdE5vZGUpOiBhbnkge1xuICAgIHJldHVybiBmbGF0Tm9kZS5ub2RlXG4gICAgICA/IHsgLi4uZmxhdE5vZGUuZGF0YSB9XG4gICAgICA6IHsgbGFiZWw6IGZsYXROb2RlLmxhYmVsIH07XG4gIH1cblxuXG4gIHByb3RlY3RlZCBnZXRGbGF0Tm9kZUlkZW50aWZpZXIoZmxhdE5vZGU6IE9UcmVlRmxhdE5vZGUpOiBzdHJpbmcge1xuICAgIGlmIChmbGF0Tm9kZS5ub2RlPy5nZXRJdGVtS2V5KSB7XG4gICAgICByZXR1cm4gZmxhdE5vZGUubm9kZS5nZXRJdGVtS2V5KGZsYXROb2RlLmRhdGEpO1xuICAgIH0gZWxzZSBpZiAoZmxhdE5vZGUuaWQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZsYXROb2RlLmlkLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBmbGF0Tm9kZS5sYWJlbDtcblxuICB9XG4gIHByaXZhdGUgYWRkQ2hpbGRUb1BhcmVudChwYXJlbnROb2RlOiBhbnksIGNoaWxkTm9kZTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFwYXJlbnROb2RlLmNoaWxkcmVuKSB7XG4gICAgICBwYXJlbnROb2RlLmNoaWxkcmVuID0gW107XG4gICAgfVxuICAgIHBhcmVudE5vZGUuY2hpbGRyZW4ucHVzaChjaGlsZE5vZGUpO1xuICB9XG5cbiAgYWRkUGFyZW50VG9Sb290SWZOb0dyYW5kcGFyZW50U2VsZWN0ZWQoXG4gICAgcGFyZW50OiBPVHJlZUZsYXROb2RlLFxuICAgIHBhcmVudEtleTogc3RyaW5nLFxuICAgIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4sXG4gICAgbm9kZU1hcDogTWFwPHN0cmluZywgYW55PixcbiAgICByb290Tm9kZXM6IGFueVtdXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGdyYW5kUGFyZW50ID0gdGhpcy5kYW9UcmVlLmZsYXROb2RlTWFwLmdldChwYXJlbnQpO1xuICAgIGNvbnN0IGdyYW5kUGFyZW50S2V5ID0gZ3JhbmRQYXJlbnQgPyB0aGlzLmdldEZsYXROb2RlSWRlbnRpZmllcihncmFuZFBhcmVudCkgOiBudWxsO1xuXG4gICAgaWYgKCFncmFuZFBhcmVudCB8fCAhc2VsZWN0ZWRLZXlzLmhhcyhncmFuZFBhcmVudEtleSkpIHtcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSBub2RlTWFwLmdldChwYXJlbnRLZXkpO1xuICAgICAgaWYgKCFyb290Tm9kZXMuaW5jbHVkZXMocGFyZW50Tm9kZSkpIHtcbiAgICAgICAgcm9vdE5vZGVzLnB1c2gocGFyZW50Tm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHByaXZhdGUgZW5zdXJlTm9kZUluTWFwKGZsYXROb2RlOiBPVHJlZUZsYXROb2RlLCBtYXA6IE1hcDxzdHJpbmcsIGFueT4pOiBhbnkge1xuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0RmxhdE5vZGVJZGVudGlmaWVyKGZsYXROb2RlKTtcbiAgICBpZiAoIW1hcC5oYXMoa2V5KSkge1xuICAgICAgbWFwLnNldChrZXksIHRoaXMuY3JlYXRlVHJlZU5vZGUoZmxhdE5vZGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcC5nZXQoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0ZWROb2RlS2V5cyhub2RlczogT1RyZWVGbGF0Tm9kZVtdKTogU2V0PHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgU2V0KG5vZGVzLm1hcChub2RlID0+IHRoaXMuZ2V0RmxhdE5vZGVJZGVudGlmaWVyKG5vZGUpKSk7XG4gIH1cblxuICBnZXRTZWxlY3RlZEZsYXROb2RlcygpOiBPVHJlZUZsYXROb2RlW10ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZDtcbiAgfVxuXG4gIGdldFBhcmVudE5vZGUobm9kZTogYW55KTogT1RyZWVGbGF0Tm9kZSB7XG4gICAgY29uc3QgY3VycmVudExldmVsID0gdGhpcy5nZXRMZXZlbChub2RlKTtcbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmluZGV4T2Yobm9kZSkgLSAxO1xuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgY3VycmVudE5vZGUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlc1tpXTtcbiAgICAgIGlmICh0aGlzLmdldExldmVsKGN1cnJlbnROb2RlKSA9PT0gY3VycmVudExldmVsIC0gMSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVsb2FkRGF0YShjbGVhclNlbGVjdGVkSXRlbXM6IGJvb2xlYW4gPSB0cnVlKSB7XG5cbiAgICBpZiAoY2xlYXJTZWxlY3RlZEl0ZW1zKSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgbGV0IHF1ZXJ5QXJnczogT1F1ZXJ5RGF0YUFyZ3M7XG4gICAgaWYgKHRoaXMucGFnZWFibGUpIHtcbiAgICAgIHF1ZXJ5QXJncyA9IHtcbiAgICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlICogdGhpcy5xdWVyeVJvd3MsXG4gICAgICAgIGxlbmd0aDogdGhpcy5xdWVyeVJvd3NcbiAgICAgIH07XG4gICAgfVxuICAgIHRoaXMucXVlcnlEYXRhKHZvaWQgMCwgcXVlcnlBcmdzKTtcbiAgfVxuXG4gIGdldExvZ2ljYWxMZXZlbChub2RlOiBPVHJlZUZsYXROb2RlKTogbnVtYmVyIHtcbiAgICBjb25zdCBoYXNGYWtlUm9vdCA9IHRoaXMuaGFzRmFrZVJvb3QoKTsgLy8gTG8gZGVmaW5lcyBzZWfDum4gdHUgZXN0cnVjdHVyYVxuICAgIHJldHVybiBoYXNGYWtlUm9vdCA/IG5vZGUubGV2ZWwgLSAxIDogbm9kZS5sZXZlbDtcbiAgfVxuXG4gIGhhc0Zha2VSb290KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMucm9vdFRpdGxlO1xuICB9XG5cbiAgcHVibGljIGNoaWxkUXVlcnlEYXRhKGZsYXROb2RlOiBPVHJlZUZsYXROb2RlKTogT2JzZXJ2YWJsZTxTZXJ2aWNlUmVzcG9uc2U+IHwgT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kYW9UcmVlLnF1ZXJ5Tm9kZUNoaWxkcmVuKGZsYXROb2RlLCB0aGlzLnJlY3Vyc2l2ZSk7XG4gIH1cblxufVxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGw+XG4gIDxkaXYgZnhGbGV4PlxuICAgIDxkaXYgKm5nSWY9XCJoYXNDb250cm9scygpXCIgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93QnV0dG9uc1RleHQ7ZWxzZSBzaG93QnV0dG9uc1dpdGhvdXRUZXh0XCI+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkSW5zZXJ0QnV0dG9uXCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmFkZFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyAnSU5TRVJUJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVmcmVzaEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gYXJpYS1sYWJlbD1cIlJlZnJlc2hcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRSZWZyZXNoQnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZWxvYWREYXRhKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6YXV0b3JlbmV3XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7ICdSRUZSRVNIJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGVsZXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBhcmlhLWxhYmVsPVwiRGVsZXRlXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkRGVsZXRlQnV0dG9uXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpkZWxldGVcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgJ0RFTEVURScgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd0J1dHRvbnNXaXRob3V0VGV4dD5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaW5zZXJ0QnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiSW5zZXJ0XCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkSW5zZXJ0QnV0dG9uXCIgKGNsaWNrKT1cImFkZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cIm9udGltaXplOmFkZFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicmVmcmVzaEJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlJlZnJlc2hcIiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRSZWZyZXNoQnV0dG9uXCIgKGNsaWNrKT1cInJlbG9hZERhdGEoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJvbnRpbWl6ZTphdXRvcmVuZXdcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRlbGV0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkRlbGV0ZVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlZERlbGV0ZUJ1dHRvblwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWVuYWJsZWREZWxldGVCdXR0b25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6ZGVsZXRlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbby10cmVlLWJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgZnhGbGV4PlxuICAgICAgICA8c3BhbiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwidGl0bGVcIj57eyB0aXRsZSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxvLXNlYXJjaC1pbnB1dCAqbmdJZj1cInF1aWNrRmlsdGVyXCIgW2ZpbHRlci1jYXNlLXNlbnNpdGl2ZV09XCJmaWx0ZXJDYXNlU2Vuc2l0aXZlXCIgW3Nob3ctY2FzZS1zZW5zaXRpdmUtY2hlY2tib3hdPVwic2hvd0Nhc2VTZW5zaXRpdmVDaGVja2JveCgpXCJcbiAgICAgICAgW2NvbHVtbnNdPVwicXVpY2tGaWx0ZXJDb2x1bW5zXCIgW3BsYWNlaG9sZGVyXT1cInF1aWNrRmlsdGVyUGxhY2Vob2xkZXJcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZsb2F0LWxhYmVsPVwibmV2ZXJcIiBzaG93LW1lbnU9XCJub1wiPlxuICAgICAgPC9vLXNlYXJjaC1pbnB1dD5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwic2hvd1RyZWVNZW51QnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiby10cmVlLW1lbnUtYnV0dG9uXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInRyZWVNZW51Lm1hdE1lbnVcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwib250aW1pemU6bW9yZV92ZXJ0XCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG8tdHJlZS1tZW51ICN0cmVlTWVudSBbc2VsZWN0LWFsbC1jaGVja2JveF09XCJzZWxlY3RBbGxDaGVja2JveFwiIFtzZWxlY3QtYWxsLWNoZWNrYm94LXZpc2libGVdPVwic2VsZWN0QWxsQ2hlY2tib3hWaXNpYmxlXCJcbiAgICAgICAgKG9uU2VsZWN0Q2hlY2tib3hDaGFuZ2UpPVwib25TZWxlY3RDaGVja2JveENoYW5nZSgkZXZlbnQpXCI+PC9vLXRyZWUtbWVudT5cblxuICAgIDwvZGl2PlxuXG4gICAgPG1hdC10cmVlIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIiBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIj5cblxuICAgICAgPCEtLSBUaGlzIGlzIHRoZSB0cmVlIG5vZGUgdGVtcGxhdGUgZm9yIGxlYWYgbm9kZXMgLS0+XG4gICAgICA8bWF0LXRyZWUtbm9kZSAqbWF0VHJlZU5vZGVEZWY9XCJsZXQgbm9kZVwiIChjbGljayk9XCJsZWFmTm9kZUNsaWNrZWQoJGV2ZW50LCBub2RlKVwiIG1hdFRyZWVOb2RlVG9nZ2xlIG1hdFRyZWVOb2RlUGFkZGluZ1xuICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkLW5vZGUnOiBpc1NlbGVjdGVkTm9kZShub2RlKX1cIj5cbiAgICAgICAgPCEtLSB1c2UgYSBkaXNhYmxlZCBidXR0b24gdG8gcHJvdmlkZSBwYWRkaW5nIGZvciB0cmVlIGxlYWYgLS0+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cbiAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD48L2J1dHRvbj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVMZWFmTm9kZVRwbFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kZS13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVMZWFmTm9kZVRwbFwiIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKG5vZGUpXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjaGVja2JveENsaWNrZWQoJGV2ZW50KVwiIChjaGFuZ2UpPVwidG9kb0xlYWZJdGVtU2VsZWN0aW9uVG9nZ2xlKG5vZGUpXCIgKGtleURvd24pPVwiY2hlY2tib3hDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxlYWZOb2RlRnVsbHRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6bm9kZX1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2ltcGxlTGVhZk5vZGVUcGw+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGVhZk5vZGVGdWxsdGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDpub2RlfVwiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImlzTGFzdENoaWxkQW5kSGFzTW9yZShub2RlKVwiPlxuICAgICAgICAgICAgPGJ1dHRvbiAjYnV0dG9uTG9hZE1vcmUgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25Mb2FkTW9yZSgkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgICAgIHt7ICdPX1RSRUUuTE9BRF9NT1JFJyB8IG9UcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L21hdC10cmVlLW5vZGU+XG4gICAgICA8IS0tIFRoaXMgaXMgdGhlIHRyZWUgbm9kZSB0ZW1wbGF0ZSBmb3IgZXhwYW5kYWJsZSBub2RlcyAtLT5cbiAgICAgIDxtYXQtdHJlZS1ub2RlICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBoYXNDaGlsZFwiIChjbGljayk9XCJwYXJlbnROb2RlQ2xpY2tlZCgkZXZlbnQsIG5vZGUpXCIgbWF0VHJlZU5vZGVQYWRkaW5nXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWQtbm9kZSc6IGlzU2VsZWN0ZWROb2RlKG5vZGUpfVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBbYXR0ci5hcmlhLWxhYmVsXT1cIid0b2dnbGUgJyArIG5vZGUubGFiZWxcIiBtYXRUcmVlTm9kZVRvZ2dsZSAoY2xpY2spPVwib25DbGlja1RvZ2dsZUJ1dHRvbigkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LWljb24tcnRsLW1pcnJvclwiPlxuICAgICAgICAgICAge3t0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpID8gJ2V4cGFuZF9tb3JlJyA6ICdjaGV2cm9uX3JpZ2h0J319XG4gICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVQYXJlbnROb2RlVHBsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cInNlbGVjdEFsbENoZWNrYm94VmlzaWJsZTsgZWxzZSBzaW1wbGVQYXJlbnROb2RlVHBsXCIgKGNsaWNrKT1cImNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2RvSXRlbVNlbGVjdGlvblRvZ2dsZShub2RlKVwiIFtjaGVja2VkXT1cImRlc2NlbmRhbnRzQWxsU2VsZWN0ZWQobm9kZSlcIiBbaW5kZXRlcm1pbmF0ZV09XCJkZXNjZW5kYW50c1BhcnRpYWxseVNlbGVjdGVkKG5vZGUpXCI+XG4gICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGFyZW50Tm9kZUZ1bGx0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGV9XCI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW1wbGVQYXJlbnROb2RlVHBsPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGFyZW50Tm9kZUZ1bGx0ZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGV9XCI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L21hdC10cmVlLW5vZGU+XG5cblxuICAgIDwvbWF0LXRyZWU+XG4gIDwvZGl2PlxuXG4gIDwhLS0gbWF0IHBhZ2luYXRpb24tLT5cbiAgPG1hdC1wYWdpbmF0b3IgKm5nSWY9XCJwYWdpbmF0aW9uQ29udHJvbHMgJiYgcGFnZWFibGVcIiAjbWF0cGFnaW5hdG9yIFtsZW5ndGhdPVwiZGF0YVNvdXJjZT8ucmVzdWx0c0xlbmd0aFwiIFtwYWdlU2l6ZV09XCJxdWVyeVJvd3NcIlxuICAgIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCIgW3BhZ2VJbmRleF09XCJjdXJyZW50UGFnZVwiIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCIgKHBhZ2UpPVwib25DaGFuZ2VQYWdlKCRldmVudClcIlxuICAgIFtuZ1N0eWxlXT1cInsndmlzaWJpbGl0eSc6IChsb2FkaW5nIHwgYXN5bmMpID09PSBmYWxzZSA/ICd2aXNpYmxlJzonaGlkZGVuJ31cIj48L21hdC1wYWdpbmF0b3I+XG5cblxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtbm9kZSAjbGVhZk5vZGVGdWxsdGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJsZWFmTm9kZVRlbXBsYXRlOyBlbHNlIGRlZmF1bHRMZWFmTm9kZVRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxlYWZOb2RlVGVtcGxhdGVcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Om5vZGUuZGF0YX1cIj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TGVhZk5vZGVUcGw+XG4gICAge3tub2RlLmxhYmVsfX1cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtbm9kZSAjcGFyZW50Tm9kZUZ1bGx0ZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhcmVudE5vZGVUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0UGFyZW50Tm9kZVRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBhcmVudE5vZGVUZW1wbGF0ZVwiXG4gICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6bm9kZS5kYXRhfVwiPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRQYXJlbnROb2RlVHBsPlxuICAgIDxzcGFuPnt7bm9kZS5sYWJlbH19PC9zcGFuPlxuICAgIDxtYXQtcHJvZ3Jlc3MtYmFyICpuZ0lmPVwibm9kZS5pc0xvYWRpbmdcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiIGZ4RmxleD48L21hdC1wcm9ncmVzcy1iYXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -10,10 +10,10 @@ import { OTreeMenuComponent } from './header/tree-menu/o-tree-menu.component';
|
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
export class OTreeModule {
|
|
12
12
|
}
|
|
13
|
-
OTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
14
|
-
OTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.
|
|
15
|
-
OTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
13
|
+
OTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
14
|
+
OTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: OTreeModule, declarations: [OTreeNodeComponent, OTreeComponent, OTreeMenuComponent], imports: [CommonModule, OSearchInputModule, OSharedModule, CdkTreeModule, MatTreeModule], exports: [OTreeComponent, OTreeNodeComponent] });
|
|
15
|
+
OTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeModule, imports: [CommonModule, OSearchInputModule, OSharedModule, CdkTreeModule, MatTreeModule] });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeModule, decorators: [{
|
|
17
17
|
type: NgModule,
|
|
18
18
|
args: [{
|
|
19
19
|
declarations: [OTreeNodeComponent, OTreeComponent, OTreeMenuComponent],
|
|
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
21
21
|
exports: [OTreeComponent, OTreeNodeComponent],
|
|
22
22
|
}]
|
|
23
23
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10cmVlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvby10cmVlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBTzlFLE1BQU0sT0FBTyxXQUFXOzt5R0FBWCxXQUFXOzBHQUFYLFdBQVcsaUJBSlAsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixhQUMzRCxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLGFBQzdFLGNBQWMsRUFBRSxrQkFBa0I7MEdBRWpDLFdBQVcsWUFIWixZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhOzRGQUc1RSxXQUFXO2tCQUx2QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQztvQkFDdEUsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDO29CQUN4RixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUM7aUJBQzlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT1RyZWVOb2RlQ29tcG9uZW50IH0gZnJvbSAnLi90cmVlLW5vZGUvdHJlZS1ub2RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDZGtUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9TaGFyZWRNb2R1bGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2hhcmVkLm1vZHVsZSc7XG5pbXBvcnQgeyBPVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vby10cmVlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPU2VhcmNoSW5wdXRNb2R1bGUgfSBmcm9tICcuLi9pbnB1dC9zZWFyY2gtaW5wdXQvby1zZWFyY2gtaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IE1hdFRyZWVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcbmltcG9ydCB7IE9UcmVlTWVudUNvbXBvbmVudCB9IGZyb20gJy4vaGVhZGVyL3RyZWUtbWVudS9vLXRyZWUtbWVudS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtPVHJlZU5vZGVDb21wb25lbnQsIE9UcmVlQ29tcG9uZW50LCBPVHJlZU1lbnVDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBPU2VhcmNoSW5wdXRNb2R1bGUsIE9TaGFyZWRNb2R1bGUsIENka1RyZWVNb2R1bGUsIE1hdFRyZWVNb2R1bGVdLFxuICBleHBvcnRzOiBbT1RyZWVDb21wb25lbnQsIE9UcmVlTm9kZUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE9UcmVlTW9kdWxlIHsgfVxuIl19
|
|
@@ -25,9 +25,9 @@ export class OTreeNodeComponent extends OTreeComponent {
|
|
|
25
25
|
this.setDatasource();
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
OTreeNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
|
29
|
-
OTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
|
28
|
+
OTreeNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeNodeComponent, deps: [{ token: i0.Injector }, { token: i0.ElementRef }, { token: forwardRef(() => OFormComponent), optional: true }, { token: forwardRef(() => OTreeComponent), optional: true }, { token: OTreeNodeComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
+
OTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTreeNodeComponent, selector: "o-tree-node", providers: [OntimizeServiceProvider], usesInheritance: true, ngImport: i0, template: ' ', isInline: true });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTreeNodeComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
32
|
args: [{
|
|
33
33
|
selector: 'o-tree-node',
|
|
@@ -49,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
49
49
|
}, {
|
|
50
50
|
type: Optional
|
|
51
51
|
}] }]; } });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUvdHJlZS1ub2RlL3RyZWUtbm9kZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFVLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0gsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7O0FBT3JELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxjQUFjO0lBRXBELFlBQ1MsUUFBa0IsRUFDekIsVUFBc0IsRUFDZ0MsSUFBb0IsRUFDYixlQUErQixFQUM3RCxVQUE4QjtRQUU3RCxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQU4zQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBR29DLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUM3RCxlQUFVLEdBQVYsVUFBVSxDQUFvQjtJQUcvRCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDOztnSEF2QlUsa0JBQWtCLG9FQUtQLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsNkJBQ2hDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0dBTjNDLGtCQUFrQixzQ0FGbEIsQ0FBQyx1QkFBdUIsQ0FBQyxpREFEMUIsR0FBRzs0RkFHRixrQkFBa0I7a0JBTDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRSxHQUFHO29CQUNiLFNBQVMsRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUNyQzs7MEJBTUksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDOzswQkFDbkQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDOzswQkFDbkQsUUFBUTs7MEJBQUksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgZm9yd2FyZFJlZiwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0LCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mYWN0b3JpZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Zvcm0nO1xuaW1wb3J0IHsgT1RyZWVDb21wb25lbnQgfSBmcm9tICcuLi9vLXRyZWUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10cmVlLW5vZGUnLFxuICB0ZW1wbGF0ZTogJyAnLFxuICBwcm92aWRlcnM6IFtPbnRpbWl6ZVNlcnZpY2VQcm92aWRlcl1cbn0pXG5leHBvcnQgY2xhc3MgT1RyZWVOb2RlQ29tcG9uZW50IGV4dGVuZHMgT1RyZWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0Zvcm1Db21wb25lbnQpKSBmb3JtOiBPRm9ybUNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT1RyZWVDb21wb25lbnQpKSBwdWJsaWMgcGFyZW50Q29tcG9uZW50OiBPVHJlZUNvbXBvbmVudCxcbiAgICBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgcGFyZW50Tm9kZTogT1RyZWVOb2RlQ29tcG9uZW50XG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yLCBlbGVtZW50UmVmLCBmb3JtKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVBhcmFtcygpO1xuICAgIHRoaXMucXVlcnlPbkJpbmQgPSB0cnVlO1xuICAgIHRoaXMucXVlcnlPbkluaXQgPSBmYWxzZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zQXJyYXkgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy52aXNpYmxlQ29sdW1ucywgdHJ1ZSk7XG4gICAgdGhpcy5xdWlja0ZpbHRlckNvbEFycmF5ID0gVXRpbC5wYXJzZUFycmF5KHRoaXMucXVpY2tGaWx0ZXJDb2x1bW5zLCB0cnVlKTtcbiAgICB0aGlzLnNldERhdGFzb3VyY2UoKTtcbiAgfVxuXG5cblxufVxuIl19
|