@wavemaker/app-ng-runtime 11.9.4-rc.5977 → 11.10.0-next.142020
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.
- app-ng-runtime/build-task/fesm2022/index.mjs +1 -1
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +3 -3
- app-ng-runtime/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.module.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/login/bundles/index.umd.js +2 -2
- app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +2 -2
- app-ng-runtime/components/advanced/login/esm2022/login.module.mjs +2 -2
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/marquee/bundles/index.umd.js +2 -2
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.directive.mjs +2 -2
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.module.mjs +2 -2
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +36 -36
- app-ng-runtime/components/base/esm2022/components.module.mjs +2 -2
- app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +16 -16
- app-ng-runtime/components/base/esm2022/pipes/image.pipe.mjs +2 -2
- app-ng-runtime/components/base/esm2022/pipes/sanitize.pipe.mjs +2 -2
- app-ng-runtime/components/base/esm2022/pipes/trust-as.pipe.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/stylable.component.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/text-content.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/container/container.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/message/message.component.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +3 -3
- app-ng-runtime/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +2 -2
- app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +2 -2
- app-ng-runtime/components/base/fesm2022/index.mjs +38 -38
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
- app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -10
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/html/html.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +2 -2
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +11 -11
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +4 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +2 -2
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +2 -2
- app-ng-runtime/components/basic/progress/esm2022/progress.module.mjs +2 -2
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -2
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -2
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +2 -2
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +3 -3
- app-ng-runtime/components/basic/search/esm2022/scrollable.directive.mjs +2 -2
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +2 -2
- app-ng-runtime/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +2 -2
- app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +2 -2
- app-ng-runtime/components/basic/tree/esm2022/tree.module.mjs +2 -2
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/chart/bundles/index.umd.js +3 -3
- app-ng-runtime/components/chart/esm2022/chart.component.mjs +2 -2
- app-ng-runtime/components/chart/esm2022/chart.module.mjs +2 -2
- app-ng-runtime/components/chart/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +2 -2
- app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +2 -2
- app-ng-runtime/components/containers/accordion/esm2022/accordion.module.mjs +2 -2
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +5 -5
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/layout-grid/bundles/index.umd.js +4 -4
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.module.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs +5 -5
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/linear-layout/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.module.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +2 -2
- app-ng-runtime/components/containers/panel/esm2022/panel.module.mjs +2 -2
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.module.mjs +2 -2
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +5 -5
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tile/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/tile/esm2022/tile.directive.mjs +2 -2
- app-ng-runtime/components/containers/tile/esm2022/tile.module.mjs +2 -2
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +2 -2
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +2 -2
- app-ng-runtime/components/containers/wizard/esm2022/wizard.module.mjs +2 -2
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/card/bundles/index.umd.js +5 -5
- app-ng-runtime/components/data/card/esm2022/card-actions/card-actions.directive.mjs +2 -2
- app-ng-runtime/components/data/card/esm2022/card-content/card-content.component.mjs +2 -2
- app-ng-runtime/components/data/card/esm2022/card-footer/card-footer.directive.mjs +2 -2
- app-ng-runtime/components/data/card/esm2022/card.component.mjs +2 -2
- app-ng-runtime/components/data/card/esm2022/card.module.mjs +2 -2
- app-ng-runtime/components/data/card/fesm2022/index.mjs +6 -6
- app-ng-runtime/components/data/card/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +9 -9
- app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form-widget.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form.component.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form.module.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/live-actions/dependson.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/live-actions/live-actions.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +2 -2
- app-ng-runtime/components/data/form/fesm2022/index.mjs +11 -11
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/list/bundles/index.umd.js +3 -3
- app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +2 -2
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +2 -2
- app-ng-runtime/components/data/list/esm2022/list.module.mjs +2 -2
- app-ng-runtime/components/data/list/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.module.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +2 -2
- app-ng-runtime/components/data/pagination/esm2022/pagination.module.mjs +2 -2
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +9 -9
- app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-row/table-row.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table.module.mjs +2 -2
- app-ng-runtime/components/data/table/fesm2022/index.mjs +11 -11
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +5 -5
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +6 -6
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/login-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +2 -2
- app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +2 -2
- app-ng-runtime/components/input/calendar/esm2022/calendar.module.mjs +2 -2
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +2 -2
- app-ng-runtime/components/input/chips/esm2022/chips.module.mjs +2 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +2 -2
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.module.mjs +2 -2
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +2 -2
- app-ng-runtime/components/input/currency/esm2022/currency.module.mjs +2 -2
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +21 -21
- app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/button-group/button-group.directive.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/composite/composite.directive.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/input.module.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +2 -2
- app-ng-runtime/components/input/default/fesm2022/index.mjs +26 -26
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +10 -10
- app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +1 -1
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +4 -4
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/epoch.module.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +3 -3
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +2 -2
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +11 -11
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +2 -2
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +2 -2
- app-ng-runtime/components/input/rating/esm2022/rating.module.mjs +2 -2
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +2 -2
- app-ng-runtime/components/input/slider/esm2022/slider.module.mjs +2 -2
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +2 -2
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -8
- app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +1 -1
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/menu.module.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +2 -2
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -10
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/navbar/bundles/index.umd.js +2 -2
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.component.mjs +2 -2
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.module.mjs +2 -2
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +2 -2
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +2 -2
- app-ng-runtime/components/navigation/popover/esm2022/popover.module.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/default/bundles/index.umd.js +7 -7
- app-ng-runtime/components/page/default/esm2022/content/content.component.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/layout.directive.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/page-content/page-content.component.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/page.directive.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/router-outlet.directive.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/spa-page.directive.mjs +2 -2
- app-ng-runtime/components/page/default/fesm2022/index.mjs +8 -8
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/footer/esm2022/footer.directive.mjs +2 -2
- app-ng-runtime/components/page/footer/esm2022/footer.module.mjs +2 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/header/esm2022/header.component.mjs +2 -2
- app-ng-runtime/components/page/header/esm2022/header.module.mjs +2 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.directive.mjs +2 -2
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +2 -2
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.module.mjs +2 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -2
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.directive.mjs +2 -2
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.module.mjs +2 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/bundles/index.umd.js +3 -3
- app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +2 -2
- app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +2 -2
- app-ng-runtime/components/prefab/esm2022/prefab.module.mjs +2 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +11 -11
- app-ng-runtime/core/esm2022/core.module.mjs +2 -2
- app-ng-runtime/core/esm2022/services/constant.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/field-type.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/field-widget.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/pagination.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/script-loader.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/user-custom-pipe-manager.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/utils.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/viewport.service.mjs +2 -2
- app-ng-runtime/core/fesm2022/index.mjs +13 -13
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/http/bundles/index.umd.js +2 -2
- app-ng-runtime/http/esm2022/http-service.module.mjs +2 -2
- app-ng-runtime/http/esm2022/http.service.mjs +2 -2
- app-ng-runtime/http/fesm2022/index.mjs +2 -2
- app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/locales/angular/global/af-na.js +1 -1
- app-ng-runtime/locales/angular/global/af.js +1 -1
- app-ng-runtime/locales/angular/global/agq.js +1 -1
- app-ng-runtime/locales/angular/global/ak.js +1 -1
- app-ng-runtime/locales/angular/global/am.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ae.js +1 -1
- app-ng-runtime/locales/angular/global/ar-bh.js +1 -1
- app-ng-runtime/locales/angular/global/ar-dj.js +1 -1
- app-ng-runtime/locales/angular/global/ar-dz.js +1 -1
- app-ng-runtime/locales/angular/global/ar-eg.js +1 -1
- app-ng-runtime/locales/angular/global/ar-eh.js +1 -1
- app-ng-runtime/locales/angular/global/ar-er.js +1 -1
- app-ng-runtime/locales/angular/global/ar-il.js +1 -1
- app-ng-runtime/locales/angular/global/ar-iq.js +1 -1
- app-ng-runtime/locales/angular/global/ar-jo.js +1 -1
- app-ng-runtime/locales/angular/global/ar-km.js +1 -1
- app-ng-runtime/locales/angular/global/ar-kw.js +1 -1
- app-ng-runtime/locales/angular/global/ar-lb.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ly.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ma.js +1 -1
- app-ng-runtime/locales/angular/global/ar-mr.js +1 -1
- app-ng-runtime/locales/angular/global/ar-om.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ps.js +1 -1
- app-ng-runtime/locales/angular/global/ar-qa.js +1 -1
- app-ng-runtime/locales/angular/global/ar-sa.js +1 -1
- app-ng-runtime/locales/angular/global/ar-sd.js +1 -1
- app-ng-runtime/locales/angular/global/ar-so.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ss.js +1 -1
- app-ng-runtime/locales/angular/global/ar-sy.js +1 -1
- app-ng-runtime/locales/angular/global/ar-td.js +1 -1
- app-ng-runtime/locales/angular/global/ar-tn.js +1 -1
- app-ng-runtime/locales/angular/global/ar-ye.js +1 -1
- app-ng-runtime/locales/angular/global/ar.js +1 -1
- app-ng-runtime/locales/angular/global/as.js +1 -1
- app-ng-runtime/locales/angular/global/asa.js +1 -1
- app-ng-runtime/locales/angular/global/ast.js +1 -1
- app-ng-runtime/locales/angular/global/az-cyrl.js +1 -1
- app-ng-runtime/locales/angular/global/az-latn.js +1 -1
- app-ng-runtime/locales/angular/global/az.js +1 -1
- app-ng-runtime/locales/angular/global/bas.js +1 -1
- app-ng-runtime/locales/angular/global/be-tarask.js +1 -1
- app-ng-runtime/locales/angular/global/be.js +1 -1
- app-ng-runtime/locales/angular/global/bem.js +1 -1
- app-ng-runtime/locales/angular/global/bez.js +1 -1
- app-ng-runtime/locales/angular/global/bg.js +1 -1
- app-ng-runtime/locales/angular/global/bm.js +1 -1
- app-ng-runtime/locales/angular/global/bn-in.js +1 -1
- app-ng-runtime/locales/angular/global/bn.js +1 -1
- app-ng-runtime/locales/angular/global/bo-in.js +1 -1
- app-ng-runtime/locales/angular/global/bo.js +1 -1
- app-ng-runtime/locales/angular/global/br.js +1 -1
- app-ng-runtime/locales/angular/global/brx.js +1 -1
- app-ng-runtime/locales/angular/global/bs-cyrl.js +1 -1
- app-ng-runtime/locales/angular/global/bs-latn.js +1 -1
- app-ng-runtime/locales/angular/global/bs.js +1 -1
- app-ng-runtime/locales/angular/global/ca-ad.js +1 -1
- app-ng-runtime/locales/angular/global/ca-es-valencia.js +1 -1
- app-ng-runtime/locales/angular/global/ca-fr.js +1 -1
- app-ng-runtime/locales/angular/global/ca-it.js +1 -1
- app-ng-runtime/locales/angular/global/ca.js +1 -1
- app-ng-runtime/locales/angular/global/ccp-in.js +1 -1
- app-ng-runtime/locales/angular/global/ccp.js +1 -1
- app-ng-runtime/locales/angular/global/ce.js +1 -1
- app-ng-runtime/locales/angular/global/ceb.js +1 -1
- app-ng-runtime/locales/angular/global/cgg.js +1 -1
- app-ng-runtime/locales/angular/global/chr.js +1 -1
- app-ng-runtime/locales/angular/global/ckb-ir.js +1 -1
- app-ng-runtime/locales/angular/global/ckb.js +1 -1
- app-ng-runtime/locales/angular/global/cs.js +1 -1
- app-ng-runtime/locales/angular/global/cy.js +1 -1
- app-ng-runtime/locales/angular/global/da-gl.js +1 -1
- app-ng-runtime/locales/angular/global/da.js +1 -1
- app-ng-runtime/locales/angular/global/dav.js +1 -1
- app-ng-runtime/locales/angular/global/de-at.js +1 -1
- app-ng-runtime/locales/angular/global/de-be.js +1 -1
- app-ng-runtime/locales/angular/global/de-ch.js +1 -1
- app-ng-runtime/locales/angular/global/de-it.js +1 -1
- app-ng-runtime/locales/angular/global/de-li.js +1 -1
- app-ng-runtime/locales/angular/global/de-lu.js +1 -1
- app-ng-runtime/locales/angular/global/de.js +1 -1
- app-ng-runtime/locales/angular/global/dje.js +1 -1
- app-ng-runtime/locales/angular/global/doi.js +1 -1
- app-ng-runtime/locales/angular/global/dsb.js +1 -1
- app-ng-runtime/locales/angular/global/dua.js +1 -1
- app-ng-runtime/locales/angular/global/dyo.js +1 -1
- app-ng-runtime/locales/angular/global/dz.js +1 -1
- app-ng-runtime/locales/angular/global/ebu.js +1 -1
- app-ng-runtime/locales/angular/global/ee-tg.js +1 -1
- app-ng-runtime/locales/angular/global/ee.js +1 -1
- app-ng-runtime/locales/angular/global/el-cy.js +1 -1
- app-ng-runtime/locales/angular/global/el.js +1 -1
- app-ng-runtime/locales/angular/global/en-001.js +1 -1
- app-ng-runtime/locales/angular/global/en-150.js +1 -1
- app-ng-runtime/locales/angular/global/en-ae.js +1 -1
- app-ng-runtime/locales/angular/global/en-ag.js +1 -1
- app-ng-runtime/locales/angular/global/en-ai.js +1 -1
- app-ng-runtime/locales/angular/global/en-as.js +1 -1
- app-ng-runtime/locales/angular/global/en-at.js +1 -1
- app-ng-runtime/locales/angular/global/en-au.js +1 -1
- app-ng-runtime/locales/angular/global/en-bb.js +1 -1
- app-ng-runtime/locales/angular/global/en-be.js +1 -1
- app-ng-runtime/locales/angular/global/en-bi.js +1 -1
- app-ng-runtime/locales/angular/global/en-bm.js +1 -1
- app-ng-runtime/locales/angular/global/en-bs.js +1 -1
- app-ng-runtime/locales/angular/global/en-bw.js +1 -1
- app-ng-runtime/locales/angular/global/en-bz.js +1 -1
- app-ng-runtime/locales/angular/global/en-ca.js +1 -1
- app-ng-runtime/locales/angular/global/en-cc.js +1 -1
- app-ng-runtime/locales/angular/global/en-ch.js +1 -1
- app-ng-runtime/locales/angular/global/en-ck.js +1 -1
- app-ng-runtime/locales/angular/global/en-cm.js +1 -1
- app-ng-runtime/locales/angular/global/en-cx.js +1 -1
- app-ng-runtime/locales/angular/global/en-cy.js +1 -1
- app-ng-runtime/locales/angular/global/en-de.js +1 -1
- app-ng-runtime/locales/angular/global/en-dg.js +1 -1
- app-ng-runtime/locales/angular/global/en-dk.js +1 -1
- app-ng-runtime/locales/angular/global/en-dm.js +1 -1
- app-ng-runtime/locales/angular/global/en-er.js +1 -1
- app-ng-runtime/locales/angular/global/en-fi.js +1 -1
- app-ng-runtime/locales/angular/global/en-fj.js +1 -1
- app-ng-runtime/locales/angular/global/en-fk.js +1 -1
- app-ng-runtime/locales/angular/global/en-fm.js +1 -1
- app-ng-runtime/locales/angular/global/en-gb.js +1 -1
- app-ng-runtime/locales/angular/global/en-gd.js +1 -1
- app-ng-runtime/locales/angular/global/en-gg.js +1 -1
- app-ng-runtime/locales/angular/global/en-gh.js +1 -1
- app-ng-runtime/locales/angular/global/en-gi.js +1 -1
- app-ng-runtime/locales/angular/global/en-gm.js +1 -1
- app-ng-runtime/locales/angular/global/en-gu.js +1 -1
- app-ng-runtime/locales/angular/global/en-gy.js +1 -1
- app-ng-runtime/locales/angular/global/en-hk.js +1 -1
- app-ng-runtime/locales/angular/global/en-ie.js +1 -1
- app-ng-runtime/locales/angular/global/en-il.js +1 -1
- app-ng-runtime/locales/angular/global/en-im.js +1 -1
- app-ng-runtime/locales/angular/global/en-in.js +1 -1
- app-ng-runtime/locales/angular/global/en-io.js +1 -1
- app-ng-runtime/locales/angular/global/en-je.js +1 -1
- app-ng-runtime/locales/angular/global/en-jm.js +1 -1
- app-ng-runtime/locales/angular/global/en-ke.js +1 -1
- app-ng-runtime/locales/angular/global/en-ki.js +1 -1
- app-ng-runtime/locales/angular/global/en-kn.js +1 -1
- app-ng-runtime/locales/angular/global/en-ky.js +1 -1
- app-ng-runtime/locales/angular/global/en-lc.js +1 -1
- app-ng-runtime/locales/angular/global/en-lr.js +1 -1
- app-ng-runtime/locales/angular/global/en-ls.js +1 -1
- app-ng-runtime/locales/angular/global/en-mg.js +1 -1
- app-ng-runtime/locales/angular/global/en-mh.js +1 -1
- app-ng-runtime/locales/angular/global/en-mo.js +1 -1
- app-ng-runtime/locales/angular/global/en-mp.js +1 -1
- app-ng-runtime/locales/angular/global/en-ms.js +1 -1
- app-ng-runtime/locales/angular/global/en-mt.js +1 -1
- app-ng-runtime/locales/angular/global/en-mu.js +1 -1
- app-ng-runtime/locales/angular/global/en-mv.js +1 -1
- app-ng-runtime/locales/angular/global/en-mw.js +1 -1
- app-ng-runtime/locales/angular/global/en-my.js +1 -1
- app-ng-runtime/locales/angular/global/en-na.js +1 -1
- app-ng-runtime/locales/angular/global/en-nf.js +1 -1
- app-ng-runtime/locales/angular/global/en-ng.js +1 -1
- app-ng-runtime/locales/angular/global/en-nl.js +1 -1
- app-ng-runtime/locales/angular/global/en-nr.js +1 -1
- app-ng-runtime/locales/angular/global/en-nu.js +1 -1
- app-ng-runtime/locales/angular/global/en-nz.js +1 -1
- app-ng-runtime/locales/angular/global/en-pg.js +1 -1
- app-ng-runtime/locales/angular/global/en-ph.js +1 -1
- app-ng-runtime/locales/angular/global/en-pk.js +1 -1
- app-ng-runtime/locales/angular/global/en-pn.js +1 -1
- app-ng-runtime/locales/angular/global/en-pr.js +1 -1
- app-ng-runtime/locales/angular/global/en-pw.js +1 -1
- app-ng-runtime/locales/angular/global/en-rw.js +1 -1
- app-ng-runtime/locales/angular/global/en-sb.js +1 -1
- app-ng-runtime/locales/angular/global/en-sc.js +1 -1
- app-ng-runtime/locales/angular/global/en-sd.js +1 -1
- app-ng-runtime/locales/angular/global/en-se.js +1 -1
- app-ng-runtime/locales/angular/global/en-sg.js +1 -1
- app-ng-runtime/locales/angular/global/en-sh.js +1 -1
- app-ng-runtime/locales/angular/global/en-si.js +1 -1
- app-ng-runtime/locales/angular/global/en-sl.js +1 -1
- app-ng-runtime/locales/angular/global/en-ss.js +1 -1
- app-ng-runtime/locales/angular/global/en-sx.js +1 -1
- app-ng-runtime/locales/angular/global/en-sz.js +1 -1
- app-ng-runtime/locales/angular/global/en-tc.js +1 -1
- app-ng-runtime/locales/angular/global/en-tk.js +1 -1
- app-ng-runtime/locales/angular/global/en-to.js +1 -1
- app-ng-runtime/locales/angular/global/en-tt.js +1 -1
- app-ng-runtime/locales/angular/global/en-tv.js +1 -1
- app-ng-runtime/locales/angular/global/en-tz.js +1 -1
- app-ng-runtime/locales/angular/global/en-ug.js +1 -1
- app-ng-runtime/locales/angular/global/en-um.js +1 -1
- app-ng-runtime/locales/angular/global/en-vc.js +1 -1
- app-ng-runtime/locales/angular/global/en-vg.js +1 -1
- app-ng-runtime/locales/angular/global/en-vi.js +1 -1
- app-ng-runtime/locales/angular/global/en-vu.js +1 -1
- app-ng-runtime/locales/angular/global/en-ws.js +1 -1
- app-ng-runtime/locales/angular/global/en-za.js +1 -1
- app-ng-runtime/locales/angular/global/en-zm.js +1 -1
- app-ng-runtime/locales/angular/global/en-zw.js +1 -1
- app-ng-runtime/locales/angular/global/en.js +1 -1
- app-ng-runtime/locales/angular/global/eo.js +1 -1
- app-ng-runtime/locales/angular/global/es-419.js +1 -1
- app-ng-runtime/locales/angular/global/es-ar.js +1 -1
- app-ng-runtime/locales/angular/global/es-bo.js +1 -1
- app-ng-runtime/locales/angular/global/es-br.js +1 -1
- app-ng-runtime/locales/angular/global/es-bz.js +1 -1
- app-ng-runtime/locales/angular/global/es-cl.js +1 -1
- app-ng-runtime/locales/angular/global/es-co.js +1 -1
- app-ng-runtime/locales/angular/global/es-cr.js +1 -1
- app-ng-runtime/locales/angular/global/es-cu.js +1 -1
- app-ng-runtime/locales/angular/global/es-do.js +1 -1
- app-ng-runtime/locales/angular/global/es-ea.js +1 -1
- app-ng-runtime/locales/angular/global/es-ec.js +1 -1
- app-ng-runtime/locales/angular/global/es-gq.js +1 -1
- app-ng-runtime/locales/angular/global/es-gt.js +1 -1
- app-ng-runtime/locales/angular/global/es-hn.js +1 -1
- app-ng-runtime/locales/angular/global/es-ic.js +1 -1
- app-ng-runtime/locales/angular/global/es-mx.js +1 -1
- app-ng-runtime/locales/angular/global/es-ni.js +1 -1
- app-ng-runtime/locales/angular/global/es-pa.js +1 -1
- app-ng-runtime/locales/angular/global/es-pe.js +1 -1
- app-ng-runtime/locales/angular/global/es-ph.js +1 -1
- app-ng-runtime/locales/angular/global/es-pr.js +1 -1
- app-ng-runtime/locales/angular/global/es-py.js +1 -1
- app-ng-runtime/locales/angular/global/es-sv.js +1 -1
- app-ng-runtime/locales/angular/global/es-us.js +1 -1
- app-ng-runtime/locales/angular/global/es-uy.js +1 -1
- app-ng-runtime/locales/angular/global/es-ve.js +1 -1
- app-ng-runtime/locales/angular/global/es.js +1 -1
- app-ng-runtime/locales/angular/global/et.js +1 -1
- app-ng-runtime/locales/angular/global/eu.js +1 -1
- app-ng-runtime/locales/angular/global/ewo.js +1 -1
- app-ng-runtime/locales/angular/global/fa-af.js +1 -1
- app-ng-runtime/locales/angular/global/fa.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-bf.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-cm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-gh.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-gm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-gw.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-lr.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-mr.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-ne.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-ng.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-sl.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm-sn.js +1 -1
- app-ng-runtime/locales/angular/global/ff-adlm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-cm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-gn.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-bf.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-cm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-gh.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-gm.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-gn.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-gw.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-lr.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-mr.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-ne.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-ng.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn-sl.js +1 -1
- app-ng-runtime/locales/angular/global/ff-latn.js +1 -1
- app-ng-runtime/locales/angular/global/ff-mr.js +1 -1
- app-ng-runtime/locales/angular/global/ff.js +1 -1
- app-ng-runtime/locales/angular/global/fi.js +1 -1
- app-ng-runtime/locales/angular/global/fil.js +1 -1
- app-ng-runtime/locales/angular/global/fo-dk.js +1 -1
- app-ng-runtime/locales/angular/global/fo.js +1 -1
- app-ng-runtime/locales/angular/global/fr-be.js +1 -1
- app-ng-runtime/locales/angular/global/fr-bf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-bi.js +1 -1
- app-ng-runtime/locales/angular/global/fr-bj.js +1 -1
- app-ng-runtime/locales/angular/global/fr-bl.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ca.js +1 -1
- app-ng-runtime/locales/angular/global/fr-cd.js +1 -1
- app-ng-runtime/locales/angular/global/fr-cf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-cg.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ch.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ci.js +1 -1
- app-ng-runtime/locales/angular/global/fr-cm.js +1 -1
- app-ng-runtime/locales/angular/global/fr-dj.js +1 -1
- app-ng-runtime/locales/angular/global/fr-dz.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ga.js +1 -1
- app-ng-runtime/locales/angular/global/fr-gf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-gn.js +1 -1
- app-ng-runtime/locales/angular/global/fr-gp.js +1 -1
- app-ng-runtime/locales/angular/global/fr-gq.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ht.js +1 -1
- app-ng-runtime/locales/angular/global/fr-km.js +1 -1
- app-ng-runtime/locales/angular/global/fr-lu.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ma.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mc.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mg.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ml.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mq.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mr.js +1 -1
- app-ng-runtime/locales/angular/global/fr-mu.js +1 -1
- app-ng-runtime/locales/angular/global/fr-nc.js +1 -1
- app-ng-runtime/locales/angular/global/fr-ne.js +1 -1
- app-ng-runtime/locales/angular/global/fr-pf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-pm.js +1 -1
- app-ng-runtime/locales/angular/global/fr-re.js +1 -1
- app-ng-runtime/locales/angular/global/fr-rw.js +1 -1
- app-ng-runtime/locales/angular/global/fr-sc.js +1 -1
- app-ng-runtime/locales/angular/global/fr-sn.js +1 -1
- app-ng-runtime/locales/angular/global/fr-sy.js +1 -1
- app-ng-runtime/locales/angular/global/fr-td.js +1 -1
- app-ng-runtime/locales/angular/global/fr-tg.js +1 -1
- app-ng-runtime/locales/angular/global/fr-tn.js +1 -1
- app-ng-runtime/locales/angular/global/fr-vu.js +1 -1
- app-ng-runtime/locales/angular/global/fr-wf.js +1 -1
- app-ng-runtime/locales/angular/global/fr-yt.js +1 -1
- app-ng-runtime/locales/angular/global/fr.js +1 -1
- app-ng-runtime/locales/angular/global/fur.js +1 -1
- app-ng-runtime/locales/angular/global/fy.js +1 -1
- app-ng-runtime/locales/angular/global/ga-gb.js +1 -1
- app-ng-runtime/locales/angular/global/ga.js +1 -1
- app-ng-runtime/locales/angular/global/gd.js +1 -1
- app-ng-runtime/locales/angular/global/gl.js +1 -1
- app-ng-runtime/locales/angular/global/gsw-fr.js +1 -1
- app-ng-runtime/locales/angular/global/gsw-li.js +1 -1
- app-ng-runtime/locales/angular/global/gsw.js +1 -1
- app-ng-runtime/locales/angular/global/gu.js +1 -1
- app-ng-runtime/locales/angular/global/guz.js +1 -1
- app-ng-runtime/locales/angular/global/gv.js +1 -1
- app-ng-runtime/locales/angular/global/ha-gh.js +1 -1
- app-ng-runtime/locales/angular/global/ha-ne.js +1 -1
- app-ng-runtime/locales/angular/global/ha.js +1 -1
- app-ng-runtime/locales/angular/global/haw.js +1 -1
- app-ng-runtime/locales/angular/global/he.js +1 -1
- app-ng-runtime/locales/angular/global/hi-latn.js +1 -1
- app-ng-runtime/locales/angular/global/hi.js +1 -1
- app-ng-runtime/locales/angular/global/hr-ba.js +1 -1
- app-ng-runtime/locales/angular/global/hr.js +1 -1
- app-ng-runtime/locales/angular/global/hsb.js +1 -1
- app-ng-runtime/locales/angular/global/hu.js +1 -1
- app-ng-runtime/locales/angular/global/hy.js +1 -1
- app-ng-runtime/locales/angular/global/ia.js +1 -1
- app-ng-runtime/locales/angular/global/id.js +1 -1
- app-ng-runtime/locales/angular/global/ig.js +1 -1
- app-ng-runtime/locales/angular/global/ii.js +1 -1
- app-ng-runtime/locales/angular/global/is.js +1 -1
- app-ng-runtime/locales/angular/global/it-ch.js +1 -1
- app-ng-runtime/locales/angular/global/it-sm.js +1 -1
- app-ng-runtime/locales/angular/global/it-va.js +1 -1
- app-ng-runtime/locales/angular/global/it.js +1 -1
- app-ng-runtime/locales/angular/global/ja.js +1 -1
- app-ng-runtime/locales/angular/global/jgo.js +1 -1
- app-ng-runtime/locales/angular/global/jmc.js +1 -1
- app-ng-runtime/locales/angular/global/jv.js +1 -1
- app-ng-runtime/locales/angular/global/ka.js +1 -1
- app-ng-runtime/locales/angular/global/kab.js +1 -1
- app-ng-runtime/locales/angular/global/kam.js +1 -1
- app-ng-runtime/locales/angular/global/kde.js +1 -1
- app-ng-runtime/locales/angular/global/kea.js +1 -1
- app-ng-runtime/locales/angular/global/kgp.js +1 -1
- app-ng-runtime/locales/angular/global/khq.js +1 -1
- app-ng-runtime/locales/angular/global/ki.js +1 -1
- app-ng-runtime/locales/angular/global/kk.js +1 -1
- app-ng-runtime/locales/angular/global/kkj.js +1 -1
- app-ng-runtime/locales/angular/global/kl.js +1 -1
- app-ng-runtime/locales/angular/global/kln.js +1 -1
- app-ng-runtime/locales/angular/global/km.js +1 -1
- app-ng-runtime/locales/angular/global/kn.js +1 -1
- app-ng-runtime/locales/angular/global/ko-kp.js +1 -1
- app-ng-runtime/locales/angular/global/ko.js +1 -1
- app-ng-runtime/locales/angular/global/kok.js +1 -1
- app-ng-runtime/locales/angular/global/ks-arab.js +1 -1
- app-ng-runtime/locales/angular/global/ks-deva.js +1 -1
- app-ng-runtime/locales/angular/global/ks.js +1 -1
- app-ng-runtime/locales/angular/global/ksb.js +1 -1
- app-ng-runtime/locales/angular/global/ksf.js +1 -1
- app-ng-runtime/locales/angular/global/ksh.js +1 -1
- app-ng-runtime/locales/angular/global/ku.js +1 -1
- app-ng-runtime/locales/angular/global/kw.js +1 -1
- app-ng-runtime/locales/angular/global/ky.js +1 -1
- app-ng-runtime/locales/angular/global/lag.js +1 -1
- app-ng-runtime/locales/angular/global/lb.js +1 -1
- app-ng-runtime/locales/angular/global/lg.js +1 -1
- app-ng-runtime/locales/angular/global/lkt.js +1 -1
- app-ng-runtime/locales/angular/global/ln-ao.js +1 -1
- app-ng-runtime/locales/angular/global/ln-cf.js +1 -1
- app-ng-runtime/locales/angular/global/ln-cg.js +1 -1
- app-ng-runtime/locales/angular/global/ln.js +1 -1
- app-ng-runtime/locales/angular/global/lo.js +1 -1
- app-ng-runtime/locales/angular/global/lrc-iq.js +1 -1
- app-ng-runtime/locales/angular/global/lrc.js +1 -1
- app-ng-runtime/locales/angular/global/lt.js +1 -1
- app-ng-runtime/locales/angular/global/lu.js +1 -1
- app-ng-runtime/locales/angular/global/luo.js +1 -1
- app-ng-runtime/locales/angular/global/luy.js +1 -1
- app-ng-runtime/locales/angular/global/lv.js +1 -1
- app-ng-runtime/locales/angular/global/mai.js +1 -1
- app-ng-runtime/locales/angular/global/mas-tz.js +1 -1
- app-ng-runtime/locales/angular/global/mas.js +1 -1
- app-ng-runtime/locales/angular/global/mer.js +1 -1
- app-ng-runtime/locales/angular/global/mfe.js +1 -1
- app-ng-runtime/locales/angular/global/mg.js +1 -1
- app-ng-runtime/locales/angular/global/mgh.js +1 -1
- app-ng-runtime/locales/angular/global/mgo.js +1 -1
- app-ng-runtime/locales/angular/global/mi.js +1 -1
- app-ng-runtime/locales/angular/global/mk.js +1 -1
- app-ng-runtime/locales/angular/global/ml.js +1 -1
- app-ng-runtime/locales/angular/global/mn.js +1 -1
- app-ng-runtime/locales/angular/global/mni-beng.js +1 -1
- app-ng-runtime/locales/angular/global/mni.js +1 -1
- app-ng-runtime/locales/angular/global/mr.js +1 -1
- app-ng-runtime/locales/angular/global/ms-bn.js +1 -1
- app-ng-runtime/locales/angular/global/ms-id.js +1 -1
- app-ng-runtime/locales/angular/global/ms-sg.js +1 -1
- app-ng-runtime/locales/angular/global/ms.js +1 -1
- app-ng-runtime/locales/angular/global/mt.js +1 -1
- app-ng-runtime/locales/angular/global/mua.js +1 -1
- app-ng-runtime/locales/angular/global/my.js +1 -1
- app-ng-runtime/locales/angular/global/mzn.js +1 -1
- app-ng-runtime/locales/angular/global/naq.js +1 -1
- app-ng-runtime/locales/angular/global/nb-sj.js +1 -1
- app-ng-runtime/locales/angular/global/nb.js +1 -1
- app-ng-runtime/locales/angular/global/nd.js +1 -1
- app-ng-runtime/locales/angular/global/nds-nl.js +1 -1
- app-ng-runtime/locales/angular/global/nds.js +1 -1
- app-ng-runtime/locales/angular/global/ne-in.js +1 -1
- app-ng-runtime/locales/angular/global/ne.js +1 -1
- app-ng-runtime/locales/angular/global/nl-aw.js +1 -1
- app-ng-runtime/locales/angular/global/nl-be.js +1 -1
- app-ng-runtime/locales/angular/global/nl-bq.js +1 -1
- app-ng-runtime/locales/angular/global/nl-cw.js +1 -1
- app-ng-runtime/locales/angular/global/nl-sr.js +1 -1
- app-ng-runtime/locales/angular/global/nl-sx.js +1 -1
- app-ng-runtime/locales/angular/global/nl.js +1 -1
- app-ng-runtime/locales/angular/global/nmg.js +1 -1
- app-ng-runtime/locales/angular/global/nn.js +1 -1
- app-ng-runtime/locales/angular/global/nnh.js +1 -1
- app-ng-runtime/locales/angular/global/no.js +1 -1
- app-ng-runtime/locales/angular/global/nus.js +1 -1
- app-ng-runtime/locales/angular/global/nyn.js +1 -1
- app-ng-runtime/locales/angular/global/om-ke.js +1 -1
- app-ng-runtime/locales/angular/global/om.js +1 -1
- app-ng-runtime/locales/angular/global/or.js +1 -1
- app-ng-runtime/locales/angular/global/os-ru.js +1 -1
- app-ng-runtime/locales/angular/global/os.js +1 -1
- app-ng-runtime/locales/angular/global/pa-arab.js +1 -1
- app-ng-runtime/locales/angular/global/pa-guru.js +1 -1
- app-ng-runtime/locales/angular/global/pa.js +1 -1
- app-ng-runtime/locales/angular/global/pcm.js +1 -1
- app-ng-runtime/locales/angular/global/pl.js +1 -1
- app-ng-runtime/locales/angular/global/ps-pk.js +1 -1
- app-ng-runtime/locales/angular/global/ps.js +1 -1
- app-ng-runtime/locales/angular/global/pt-ao.js +1 -1
- app-ng-runtime/locales/angular/global/pt-ch.js +1 -1
- app-ng-runtime/locales/angular/global/pt-cv.js +1 -1
- app-ng-runtime/locales/angular/global/pt-gq.js +1 -1
- app-ng-runtime/locales/angular/global/pt-gw.js +1 -1
- app-ng-runtime/locales/angular/global/pt-lu.js +1 -1
- app-ng-runtime/locales/angular/global/pt-mo.js +1 -1
- app-ng-runtime/locales/angular/global/pt-mz.js +1 -1
- app-ng-runtime/locales/angular/global/pt-pt.js +1 -1
- app-ng-runtime/locales/angular/global/pt-st.js +1 -1
- app-ng-runtime/locales/angular/global/pt-tl.js +1 -1
- app-ng-runtime/locales/angular/global/pt.js +1 -1
- app-ng-runtime/locales/angular/global/qu-bo.js +1 -1
- app-ng-runtime/locales/angular/global/qu-ec.js +1 -1
- app-ng-runtime/locales/angular/global/qu.js +1 -1
- app-ng-runtime/locales/angular/global/rm.js +1 -1
- app-ng-runtime/locales/angular/global/rn.js +1 -1
- app-ng-runtime/locales/angular/global/ro-md.js +1 -1
- app-ng-runtime/locales/angular/global/ro.js +1 -1
- app-ng-runtime/locales/angular/global/rof.js +1 -1
- app-ng-runtime/locales/angular/global/ru-by.js +1 -1
- app-ng-runtime/locales/angular/global/ru-kg.js +1 -1
- app-ng-runtime/locales/angular/global/ru-kz.js +1 -1
- app-ng-runtime/locales/angular/global/ru-md.js +1 -1
- app-ng-runtime/locales/angular/global/ru-ua.js +1 -1
- app-ng-runtime/locales/angular/global/ru.js +1 -1
- app-ng-runtime/locales/angular/global/rw.js +1 -1
- app-ng-runtime/locales/angular/global/rwk.js +1 -1
- app-ng-runtime/locales/angular/global/sa.js +1 -1
- app-ng-runtime/locales/angular/global/sah.js +1 -1
- app-ng-runtime/locales/angular/global/saq.js +1 -1
- app-ng-runtime/locales/angular/global/sat-olck.js +1 -1
- app-ng-runtime/locales/angular/global/sat.js +1 -1
- app-ng-runtime/locales/angular/global/sbp.js +1 -1
- app-ng-runtime/locales/angular/global/sc.js +1 -1
- app-ng-runtime/locales/angular/global/sd-arab.js +1 -1
- app-ng-runtime/locales/angular/global/sd-deva.js +1 -1
- app-ng-runtime/locales/angular/global/sd.js +1 -1
- app-ng-runtime/locales/angular/global/se-fi.js +1 -1
- app-ng-runtime/locales/angular/global/se-se.js +1 -1
- app-ng-runtime/locales/angular/global/se.js +1 -1
- app-ng-runtime/locales/angular/global/seh.js +1 -1
- app-ng-runtime/locales/angular/global/ses.js +1 -1
- app-ng-runtime/locales/angular/global/sg.js +1 -1
- app-ng-runtime/locales/angular/global/shi-latn.js +1 -1
- app-ng-runtime/locales/angular/global/shi-tfng.js +1 -1
- app-ng-runtime/locales/angular/global/shi.js +1 -1
- app-ng-runtime/locales/angular/global/si.js +1 -1
- app-ng-runtime/locales/angular/global/sk.js +1 -1
- app-ng-runtime/locales/angular/global/sl.js +1 -1
- app-ng-runtime/locales/angular/global/smn.js +1 -1
- app-ng-runtime/locales/angular/global/sn.js +1 -1
- app-ng-runtime/locales/angular/global/so-dj.js +1 -1
- app-ng-runtime/locales/angular/global/so-et.js +1 -1
- app-ng-runtime/locales/angular/global/so-ke.js +1 -1
- app-ng-runtime/locales/angular/global/so.js +1 -1
- app-ng-runtime/locales/angular/global/sq-mk.js +1 -1
- app-ng-runtime/locales/angular/global/sq-xk.js +1 -1
- app-ng-runtime/locales/angular/global/sq.js +1 -1
- app-ng-runtime/locales/angular/global/sr-cyrl-ba.js +1 -1
- app-ng-runtime/locales/angular/global/sr-cyrl-me.js +1 -1
- app-ng-runtime/locales/angular/global/sr-cyrl-xk.js +1 -1
- app-ng-runtime/locales/angular/global/sr-cyrl.js +1 -1
- app-ng-runtime/locales/angular/global/sr-latn-ba.js +1 -1
- app-ng-runtime/locales/angular/global/sr-latn-me.js +1 -1
- app-ng-runtime/locales/angular/global/sr-latn-xk.js +1 -1
- app-ng-runtime/locales/angular/global/sr-latn.js +1 -1
- app-ng-runtime/locales/angular/global/sr.js +1 -1
- app-ng-runtime/locales/angular/global/su-latn.js +1 -1
- app-ng-runtime/locales/angular/global/su.js +1 -1
- app-ng-runtime/locales/angular/global/sv-ax.js +1 -1
- app-ng-runtime/locales/angular/global/sv-fi.js +1 -1
- app-ng-runtime/locales/angular/global/sv.js +1 -1
- app-ng-runtime/locales/angular/global/sw-cd.js +1 -1
- app-ng-runtime/locales/angular/global/sw-ke.js +1 -1
- app-ng-runtime/locales/angular/global/sw-ug.js +1 -1
- app-ng-runtime/locales/angular/global/sw.js +1 -1
- app-ng-runtime/locales/angular/global/ta-lk.js +1 -1
- app-ng-runtime/locales/angular/global/ta-my.js +1 -1
- app-ng-runtime/locales/angular/global/ta-sg.js +1 -1
- app-ng-runtime/locales/angular/global/ta.js +1 -1
- app-ng-runtime/locales/angular/global/te.js +1 -1
- app-ng-runtime/locales/angular/global/teo-ke.js +1 -1
- app-ng-runtime/locales/angular/global/teo.js +1 -1
- app-ng-runtime/locales/angular/global/tg.js +1 -1
- app-ng-runtime/locales/angular/global/th.js +1 -1
- app-ng-runtime/locales/angular/global/ti-er.js +1 -1
- app-ng-runtime/locales/angular/global/ti.js +1 -1
- app-ng-runtime/locales/angular/global/tk.js +1 -1
- app-ng-runtime/locales/angular/global/to.js +1 -1
- app-ng-runtime/locales/angular/global/tr-cy.js +1 -1
- app-ng-runtime/locales/angular/global/tr.js +1 -1
- app-ng-runtime/locales/angular/global/tt.js +1 -1
- app-ng-runtime/locales/angular/global/twq.js +1 -1
- app-ng-runtime/locales/angular/global/tzm.js +1 -1
- app-ng-runtime/locales/angular/global/ug.js +1 -1
- app-ng-runtime/locales/angular/global/uk.js +1 -1
- app-ng-runtime/locales/angular/global/und.js +1 -1
- app-ng-runtime/locales/angular/global/ur-in.js +1 -1
- app-ng-runtime/locales/angular/global/ur.js +1 -1
- app-ng-runtime/locales/angular/global/uz-arab.js +1 -1
- app-ng-runtime/locales/angular/global/uz-cyrl.js +1 -1
- app-ng-runtime/locales/angular/global/uz-latn.js +1 -1
- app-ng-runtime/locales/angular/global/uz.js +1 -1
- app-ng-runtime/locales/angular/global/vai-latn.js +1 -1
- app-ng-runtime/locales/angular/global/vai-vaii.js +1 -1
- app-ng-runtime/locales/angular/global/vai.js +1 -1
- app-ng-runtime/locales/angular/global/vi.js +1 -1
- app-ng-runtime/locales/angular/global/vun.js +1 -1
- app-ng-runtime/locales/angular/global/wae.js +1 -1
- app-ng-runtime/locales/angular/global/wo.js +1 -1
- app-ng-runtime/locales/angular/global/xh.js +1 -1
- app-ng-runtime/locales/angular/global/xog.js +1 -1
- app-ng-runtime/locales/angular/global/yav.js +1 -1
- app-ng-runtime/locales/angular/global/yi.js +1 -1
- app-ng-runtime/locales/angular/global/yo-bj.js +1 -1
- app-ng-runtime/locales/angular/global/yo.js +1 -1
- app-ng-runtime/locales/angular/global/yrl-co.js +1 -1
- app-ng-runtime/locales/angular/global/yrl-ve.js +1 -1
- app-ng-runtime/locales/angular/global/yrl.js +1 -1
- app-ng-runtime/locales/angular/global/yue-hans.js +1 -1
- app-ng-runtime/locales/angular/global/yue-hant.js +1 -1
- app-ng-runtime/locales/angular/global/yue.js +1 -1
- app-ng-runtime/locales/angular/global/zgh.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hans-hk.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hans-mo.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hans-sg.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hans.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hant-hk.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hant-mo.js +1 -1
- app-ng-runtime/locales/angular/global/zh-hant.js +1 -1
- app-ng-runtime/locales/angular/global/zh.js +1 -1
- app-ng-runtime/locales/angular/global/zu.js +1 -1
- app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
- app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +9 -9
- app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +10 -10
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/basic/search/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/basic/search/esm2022/search.directive.mjs +2 -2
- app-ng-runtime/mobile/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +4 -4
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.module.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +4 -4
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.component.mjs +2 -2
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/input/file-upload/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +2 -2
- app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/left-panel/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +2 -2
- app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/mobile-navbar/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/bundles/index.umd.js +9 -9
- app-ng-runtime/mobile/core/esm2022/core.module.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-cache.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +2 -2
- app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +2 -2
- app-ng-runtime/mobile/core/fesm2022/index.mjs +10 -10
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/offline/bundles/index.umd.js +8 -8
- app-ng-runtime/mobile/offline/esm2022/offline.module.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/local-key-value.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/push.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/workers/id-resolver.mjs +2 -2
- app-ng-runtime/mobile/offline/fesm2022/index.mjs +10 -10
- app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/bundles/index.umd.js +5 -5
- app-ng-runtime/mobile/runtime/esm2022/components/app-ext.component.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/services/webprocess.service.mjs +2 -2
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs +5 -5
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +2 -2
- app-ng-runtime/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/variables/bundles/index.umd.js +1 -1
- app-ng-runtime/mobile/variables/esm2022/variables.module.mjs +2 -2
- app-ng-runtime/mobile/variables/fesm2022/index.mjs +1 -1
- app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/oAuth/bundles/index.umd.js +2 -2
- app-ng-runtime/oAuth/esm2022/oAuth.module.mjs +2 -2
- app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +2 -2
- app-ng-runtime/oAuth/fesm2022/index.mjs +2 -2
- app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +44 -46
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/app-spinner.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/prefab-preview.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/directives/prefab.directive.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/guards/auth.guard.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +6 -8
- app-ng-runtime/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/app-extension.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/app-js.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/app-variables.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/i18n.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/metadata.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/resolves/security-config.resolve.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/pipe-provider.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/pipe.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/util/fragment-monitor.mjs +2 -2
- app-ng-runtime/runtime/base/fesm2022/index.mjs +47 -49
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +7 -7
- app-ng-runtime/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +2 -2
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +9 -9
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -2
- app-ng-runtime/security/bundles/index.umd.js +2 -2
- app-ng-runtime/security/esm2022/security.module.mjs +2 -2
- app-ng-runtime/security/esm2022/security.service.mjs +2 -2
- app-ng-runtime/security/fesm2022/index.mjs +2 -2
- app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/transpiler/fesm2022/index.mjs +1 -1
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/bundles/index.umd.js +3 -3
- app-ng-runtime/variables/esm2022/service/metadata-service/metadata.service.mjs +2 -2
- app-ng-runtime/variables/esm2022/service/variables.service.mjs +2 -2
- app-ng-runtime/variables/esm2022/variables.module.mjs +2 -2
- app-ng-runtime/variables/fesm2022/index.mjs +4 -4
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
|
@@ -845,11 +845,11 @@ export class LocalDBManagementService {
|
|
|
845
845
|
return false;
|
|
846
846
|
});
|
|
847
847
|
}
|
|
848
|
-
static { this.ɵfac = function LocalDBManagementService_Factory(
|
|
848
|
+
static { this.ɵfac = function LocalDBManagementService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LocalDBManagementService)(i0.ɵɵinject(i1.AppVersion), i0.ɵɵinject(i2.DeviceService), i0.ɵɵinject(i2.DeviceFileService), i0.ɵɵinject(i3.File), i0.ɵɵinject(i4.LocalKeyValueService), i0.ɵɵinject(i5.SecurityService), i0.ɵɵinject(i6.SQLite)); }; }
|
|
849
849
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LocalDBManagementService, factory: LocalDBManagementService.ɵfac, providedIn: 'root' }); }
|
|
850
850
|
}
|
|
851
851
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocalDBManagementService, [{
|
|
852
852
|
type: Injectable,
|
|
853
853
|
args: [{ providedIn: 'root' }]
|
|
854
854
|
}], () => [{ type: i1.AppVersion }, { type: i2.DeviceService }, { type: i2.DeviceFileService }, { type: i3.File }, { type: i4.LocalKeyValueService }, { type: i5.SecurityService }, { type: i6.SQLite }], null); })();
|
|
855
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGItbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9iaWxlL29mZmxpbmUvc3JjL3NlcnZpY2VzL2xvY2FsLWRiLW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUUzRSxPQUFPLEVBQ0gsUUFBUSxFQUNSLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFNBQVMsRUFDVCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUE4QixRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixPQUFPLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsT0FBTyxFQUNQLFdBQVcsRUFDWCxHQUFHLEVBQ0gsR0FBRyxF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RkFDbEIsd0JBQXdCO2NBRHBDLFVBQVU7ZUFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcFZlcnNpb24gfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvYXBwLXZlcnNpb24vbmd4JztcbmltcG9ydCB7IEZpbGUgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvZmlsZS9uZ3gnO1xuaW1wb3J0IHsgU1FMaXRlLCBTUUxpdGVPYmplY3QgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvc3FsaXRlL25neCc7XG5cbmltcG9ydCB7XG4gICAgRGF0YVR5cGUsXG4gICAgREVGQVVMVF9GT1JNQVRTLFxuICAgIGV4ZWN1dGVQcm9taXNlQ2hhaW4sXG4gICAgZXh0cmFjdFR5cGUsXG4gICAgaXNBbmRyb2lkLFxuICAgIGlzSW9zLFxuICAgIG5vb3AsXG4gICAgdG9Qcm9taXNlLFxuICAgIHRyYW5zZm9ybUZpbGVVUklcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgRGV2aWNlRmlsZVNlcnZpY2UsIERldmljZVNlcnZpY2UgfSBmcm9tICdAd20vbW9iaWxlL2NvcmUnO1xuaW1wb3J0IHsgU2VjdXJpdHlTZXJ2aWNlIH0gZnJvbSAnQHdtL3NlY3VyaXR5JztcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAd20vdmFyaWFibGVzJztcblxuaW1wb3J0IHsgTG9jYWxLZXlWYWx1ZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLWtleS12YWx1ZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsREJTdG9yZSB9IGZyb20gJy4uL21vZGVscy9sb2NhbC1kYi1zdG9yZSc7XG5pbXBvcnQgeyBlc2NhcGVOYW1lIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgQ29sdW1uSW5mbywgREJJbmZvLCBFbnRpdHlJbmZvLCBOYW1lZFF1ZXJ5SW5mbywgUHVsbFR5cGUgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnJztcbmltcG9ydCB7XG4gICAgY2hhaW4sXG4gICAgZmluZCxcbiAgICBmb3JFYWNoLFxuICAgIGlzRW1wdHksXG4gICAgaXNVbmRlZmluZWQsXG4gICAgbWFwLFxuICAgIG5vdyxcbiAgICBwYXJzZUludCxcbiAgICByZXBsYWNlLFxuICAgIHRvVXBwZXIsXG4gICAgdG9TdHJpbmcsXG4gICAgdmFsdWVzLFxuICAgIGlzQXJyYXksIGFzc2lnbkluXG59IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmRlY2xhcmUgY29uc3QgbW9tZW50O1xuZGVjbGFyZSBjb25zdCBjb3Jkb3ZhO1xuZGVjbGFyZSBjb25zdCBaZWVwO1xuXG5jb25zdCAgTkVYVF9JRF9DT1VOVCA9ICdsb2NhbERCU3RvcmUubmV4dElkQ291bnQnO1xuY29uc3QgTUVUQV9MT0NBVElPTiA9ICd3d3cvbWV0YWRhdGEvYXBwJztcbmNvbnN0IE9GRkxJTkVfV0FWRU1BS0VSX0RBVEFCQVNFX1NDSEVNQSA9IHtcbiAgICBuYW1lOiAnd2F2ZW1ha2VyJyxcbiAgICB2ZXJzaW9uOiAxLFxuICAgIGlzSW50ZXJuYWw6IHRydWUsXG4gICAgdGFibGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdrZXlfdmFsdWUnLFxuICAgICAgICAgICAgZW50aXR5TmFtZTogJ2tleS12YWx1ZScsXG4gICAgICAgICAgICBjb2x1bW5zOiBbe1xuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogJ2lkJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRvclR5cGUgOiAnZGF0YWJhc2VJZGVudGl0eScsXG4gICAgICAgICAgICAgICAgc3FsVHlwZSA6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IHRydWVcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6ICdrZXknLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdrZXknXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6ICd2YWx1ZSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdvZmZsaW5lQ2hhbmdlTG9nJyxcbiAgICAgICAgICAgIGVudGl0eU5hbWU6ICdvZmZsaW5lQ2hhbmdlTG9nJyxcbiAgICAgICAgICAgIGNvbHVtbnM6IFt7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yVHlwZTogJ2RhdGFiYXNlSWRlbnRpdHknLFxuICAgICAgICAgICAgICAgIHNxbFR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IHRydWVcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2VydmljZScsXG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiAnc2VydmljZSdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnb3BlcmF0aW9uJyxcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6ICdvcGVyYXRpb24nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiAncGFyYW1zJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd0aW1lc3RhbXAnLFxuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogJ3RpbWVzdGFtcCdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGFzRXJyb3InLFxuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogJ2hhc0Vycm9yJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdlcnJvck1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogJ2Vycm9yTWVzc2FnZSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH1cbiAgICBdXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbGxCYWNrIHtcbiAgICBvbkRiQ3JlYXRlPzogKGluZm86IGFueSkgPT4gYW55O1xuICAgIHBvc3RJbXBvcnQ/OiAoaW1wb3J0Rm9sZGVyUGF0aDogc3RyaW5nLCBtZXRhSW5mbzogYW55KSA9PiBhbnk7XG4gICAgcHJlRXhwb3J0PzogKGZvbGRlclRvRXhwb3J0RnVsbFBhdGg6IHN0cmluZywgbWV0YUluZm86IGFueSkgPT4gYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBMb2NhbERCTWFuYWdlbWVudFNlcnZpY2Uge1xuICAgIHN0YXRpYyByZWFkb25seSBTRVJWSUNFX05BTUUgPSAnTG9jYWxEQk1hbmFnZW1lbnRTZXJ2aWNlJztcbiAgICBwcml2YXRlIGNhbGxiYWNrczogQ2FsbEJhY2tbXSA9IFtdO1xuICAgIHByaXZhdGUgZGJJbnN0YWxsRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYkluc3RhbGxEaXJlY3RvcnlOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYkluc3RhbGxQYXJlbnREaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIGRhdGFiYXNlczogTWFwPHN0cmluZywgREJJbmZvPjtcbiAgICBwcml2YXRlIF9sb2dTcWwgPSBmYWxzZTtcbiAgICBwdWJsaWMgbmV4dElkID0gMTAwMDAwMDAwMDAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtUHJvcGVydGllcyA9IHtcbiAgICAgICAgJ1VTRVJfSUQnIDoge1xuICAgICAgICAgICAgJ25hbWUnIDogJ1VTRVJfSUQnLFxuICAgICAgICAgICAgJ3ZhbHVlJyA6ICgpID0+IHRoaXMuc2VjdXJpdHlTZXJ2aWNlLmdldExvZ2dlZEluVXNlcigpLnRoZW4oIHVzZXJJbmZvID0+IHVzZXJJbmZvLnVzZXJJZClcbiAgICAgICAgfSxcbiAgICAgICAgJ1VTRVJfTkFNRScgOiB7XG4gICAgICAgICAgICAnbmFtZScgOiAnVVNFUl9OQU1FJyxcbiAgICAgICAgICAgICd2YWx1ZScgOiAoKSA9PiB0aGlzLnNlY3VyaXR5U2VydmljZS5nZXRMb2dnZWRJblVzZXIoKS50aGVuKCB1c2VySW5mbyA9PiB1c2VySW5mby51c2VyTmFtZSlcbiAgICAgICAgfSxcbiAgICAgICAgJ0RBVEVfVElNRScgOiB7XG4gICAgICAgICAgICAnbmFtZScgOiAnREFURV9USU1FJyxcbiAgICAgICAgICAgICd2YWx1ZScgOiAoKSA9PiBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tRERUaGg6bW06c3MnKVxuICAgICAgICB9LFxuICAgICAgICAnREFURScgOiB7XG4gICAgICAgICAgICAnbmFtZScgOiAnQ1VSUkVOVF9EQVRFJyxcbiAgICAgICAgICAgICd2YWx1ZScgOiAoKSA9PiBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxuICAgICAgICB9LFxuICAgICAgICAnVElNRScgOiB7XG4gICAgICAgICAgICAnbmFtZScgOiAnVElNRScsXG4gICAgICAgICAgICAndmFsdWUnIDogKCkgPT4gbW9tZW50KCkuZm9ybWF0KCdoaDptbTpzcycpXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwVmVyc2lvbjogQXBwVmVyc2lvbixcbiAgICAgICAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRldmljZUZpbGVTZXJ2aWNlOiBEZXZpY2VGaWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmaWxlOiBGaWxlLFxuICAgICAgICBwcml2YXRlIGxvY2FsS2V5VmFsdWVTZXJ2aWNlOiBMb2NhbEtleVZhbHVlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzZWN1cml0eVNlcnZpY2U6IFNlY3VyaXR5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzcWxpdGU6IFNRTGl0ZVxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyBhbGwgZGF0YWJhc2VzLlxuICAgICAqXG4gICAgICogQHJldHVybnMge29iamVjdH0gYSBwcm9taXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgLy8gQmVmb3JlIGNsb3NpbmcgZGF0YWJhc2VzLCBnaXZlIHNvbWUgdGltZSBmb3IgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb25zIChpZiBhbnkpLlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlUHJvbWlzZXMgPSBtYXAodmFsdWVzKHRoaXMuZGF0YWJhc2VzKSwgZGIgPT4gZGIuc3FsaXRlT2JqZWN0LmNsb3NlKCkpO1xuICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKGNsb3NlUHJvbWlzZXMpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dElkQ291bnQoKSB7XG4gICAgICAgIHRoaXMubmV4dElkID0gdGhpcy5uZXh0SWQgKyAxO1xuICAgICAgICB0aGlzLmxvY2FsS2V5VmFsdWVTZXJ2aWNlLnB1dChORVhUX0lEX0NPVU5ULCB0aGlzLm5leHRJZCk7XG4gICAgICAgIHJldHVybiB0aGlzLm5leHRJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIG5hbWVkIHF1ZXJ5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRiTmFtZSBuYW1lIG9mIGRhdGFiYXNlIG9uIHdoaWNoIHRoZSBuYW1lZCBxdWVyeSBoYXMgdG8gYmUgcnVuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5TmFtZSBuYW1lIG9mIHRoZSBxdWVyeSB0byBleGVjdXRlXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHBhcmFtcyBwYXJhbWV0ZXJzIHJlcXVpcmVkIGZvciBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBhIHByb21pc2UuXG4gICAgICovXG4gICAgcHVibGljIGV4ZWN1dGVOYW1lZFF1ZXJ5KGRiTmFtZTogc3RyaW5nLCBxdWVyeU5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcbiAgICAgICAgbGV0IHF1ZXJ5RGF0YSwgcGFyYW1Qcm9taXNlcztcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFiYXNlc1tkYk5hbWVdIHx8ICF0aGlzLmRhdGFiYXNlc1tkYk5hbWVdLnF1ZXJpZXNbcXVlcnlOYW1lXSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGBRdWVyeSBieSBuYW1lICcgJHtxdWVyeU5hbWV9ICcgTm90IEZvdW5kYCk7XG4gICAgICAgIH1cbiAgICAgICAgcXVlcnlEYXRhID0gdGhpcy5kYXRhYmFzZXNbZGJOYW1lXS5xdWVyaWVzW3F1ZXJ5TmFtZV07XG4gICAgICAgIHBhcmFtUHJvbWlzZXMgPSBjaGFpbihxdWVyeURhdGEucGFyYW1zKVxuICAgICAgICAgICAgLmZpbHRlcihwID0+IHAudmFyaWFibGVUeXBlICE9PSAnUFJPTVBUJylcbiAgICAgICAgICAgIC5mb3JFYWNoKHAgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSB0aGlzLnN5c3RlbVByb3BlcnRpZXNbcC52YXJpYWJsZVR5cGVdLnZhbHVlKHAubmFtZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Qcm9taXNlKHBhcmFtVmFsdWUpLnRoZW4odiA9PiBwYXJhbXNbcC5uYW1lXSA9IHYpO1xuICAgICAgICAgICAgfSkudmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBhcmFtUHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcGFyYW1zID0gbWFwKHF1ZXJ5RGF0YS5wYXJhbXMsIHAgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFNxbGl0ZSB3aWxsIGFjY2VwdCBEYXRlVGltZSB2YWx1ZSBhcyBiZWxvdyBmb3JtYXQuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXNbcC5uYW1lXSAhPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgJiYgKHAudHlwZSA9PT0gRGF0YVR5cGUuREFURVRJTUUgfHwgcC50eXBlID09PSBEYXRhVHlwZS5MT0NBTERBVEVUSU1FKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZShwYXJhbXNbcC5uYW1lXSwgcC50eXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gc3FsaXRlIGFjY2VwdHMgdGhlIGJvb2wgdmFsIGFzIDEsMCBoZW5jZSBjb252ZXJ0IHRoZSBib29sZWFuIHZhbHVlIHRvIG51bWJlclxuICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IERhdGFUeXBlLkJPT0xFQU4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEJvb2xUb0ludChwYXJhbXNbcC5uYW1lXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbXNbcC5uYW1lXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVNRTFF1ZXJ5KGRiTmFtZSwgcXVlcnlEYXRhLnF1ZXJ5LCBwYXJhbXMpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0Um93LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRyYW5zZm9ybTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KHJlc3VsdC5yb3dzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSb3cgPSByZXN1bHQucm93c1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUcmFuc2Zvcm0gPSBmaW5kKHF1ZXJ5RGF0YS5yZXNwb25zZS5wcm9wZXJ0aWVzLCBwID0+ICFmaXJzdFJvdy5oYXNPd25Qcm9wZXJ0eShwLmZpZWxkTmFtZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChuZWVkVHJhbnNmb3JtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yb3dzID0gbWFwKHJlc3VsdC5yb3dzLCByb3cgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFJvdyA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93V2l0aFVwcGVyS2V5cyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRvIG1ha2Ugc2VhcmNoIGZvciBkYXRhIGFzIGNhc2UtaW5zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaChyb3csICh2LCBrKSA9PiByb3dXaXRoVXBwZXJLZXlzW2sudG9VcHBlckNhc2UoKV0gPSB2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaChxdWVyeURhdGEucmVzcG9uc2UucHJvcGVydGllcywgcCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtYXQgdGhlIHZhbHVlIGRlcGVuZGluZyBvbiB0aGUgdHlwZVJlZiBzcGVjaWZpZWQgaW4gcHJvcGVydGllcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BUeXBlID0gZXh0cmFjdFR5cGUocC5maWVsZFR5cGUudHlwZVJlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXRWYWx1ZSA9IERFRkFVTFRfRk9STUFUU1t0b1VwcGVyKHByb3BUeXBlKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFZhbCA9IHJvd1twLm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsICYmIHR5cGVvZiBmaWVsZFZhbCAhPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocHJvcFR5cGUgPT09IERhdGFUeXBlLkRBVEVUSU1FIHx8IHByb3BUeXBlID09PSBEYXRhVHlwZS5MT0NBTERBVEVUSU1FIHx8IHByb3BUeXBlID09PSBEYXRhVHlwZS5EQVRFKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb21lbnQoZmllbGRWYWwpLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbcC5uYW1lXSA9IGZvcm1hdERhdGUoZmllbGRWYWwsIHByb3BUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vbWVudChmaWVsZFZhbCwgJ0hIOm1tJykuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBpbiBISDptbTpzcyBmb3JtYXQsIGl0IHJldHVybnMgYSB3cm9uZyBkYXRlLiBTbyBhcHBlbmQgdGhlIGRhdGUgdG8gdGhlIGdpdmVuIHZhbHVlIHRvIGdldCBkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1twLm5hbWVdID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJykgKyAnVCcgKyBmaWVsZFZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcFR5cGUgPT09IERhdGFUeXBlLkJPT0xFQU4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbcC5uYW1lXSA9IHRoaXMuY29udmVydEludFRvQm9vbChmaWVsZFZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dXaXRoVXBwZXJLZXlzW3AubmFtZUluVXBwZXJDYXNlXSA9IHJvd1twLm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSb3dbcC5uYW1lXSA9IHJvd1twLm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSb3dbcC5maWVsZE5hbWVdID0gcm93W3AuZmllbGROYW1lXSB8fCByb3dXaXRoVXBwZXJLZXlzW3AubmFtZUluVXBwZXJDYXNlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZFJvdztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZXhwb3J0IHRoZSBkYXRhYmFzZXMgaW4gYSB6aXAgZm9ybWF0LlxuICAgICAqXG4gICAgICogQHJldHVybnMge29iamVjdH0gYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiB6aXAgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwb3J0REIoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9sZGVyVG9FeHBvcnQgPSAnb2ZmbGluZV90ZW1wXycgKyBub3coKSxcbiAgICAgICAgICAgICAgICBmb2xkZXJUb0V4cG9ydEZ1bGxQYXRoID0gY29yZG92YS5maWxlLmNhY2hlRGlyZWN0b3J5ICsgZm9sZGVyVG9FeHBvcnQgKyAnLycsXG4gICAgICAgICAgICAgICAgemlwRmlsZU5hbWUgPSAnX29mZmxpbmVfZGF0YS56aXAnLFxuICAgICAgICAgICAgICAgIG1ldGFJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBhcHA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIE9TOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZE9uOiAwXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCB6aXBEaXJlY3Rvcnk7XG4gICAgICAgICAgICBpZiAoaXNJb3MoKSkge1xuICAgICAgICAgICAgICAgIC8vIEluIElPUywgc2F2ZSB6aXAgdG8gZG9jdW1lbnRzIGRpcmVjdG9yeSBzbyB0aGF0IHVzZXIgY2FuIGV4cG9ydCB0aGUgZmlsZSBmcm9tIElPUyBkZXZpY2VzIHVzaW5nIGlUVU5FUy5cbiAgICAgICAgICAgICAgICB6aXBEaXJlY3RvcnkgPSBjb3Jkb3ZhLmZpbGUuZG9jdW1lbnRzRGlyZWN0b3J5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBBbmRyb2lkLCBzYXZlIHppcCB0byBkb3dubG9hZCBkaXJlY3RvcnkuXG4gICAgICAgICAgICAgICAgemlwRGlyZWN0b3J5ID0gY29yZG92YS5maWxlLmV4dGVybmFsUm9vdERpcmVjdG9yeSArICdEb3dubG9hZC8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZvbGRlciB0byBjb3B5IGFsbCB0aGUgY29udGVudCB0byBleHBvcnRcbiAgICAgICAgICAgIHRoaXMuZmlsZS5jcmVhdGVEaXIoY29yZG92YS5maWxlLmNhY2hlRGlyZWN0b3J5LCBmb2xkZXJUb0V4cG9ydCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IGRhdGFiYXNlcyB0byB0ZW1wb3JhcnkgZm9sZGVyIGZvciBleHBvcnRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZS5jb3B5RGlyKHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5LCB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeU5hbWUsIGZvbGRlclRvRXhwb3J0RnVsbFBhdGgsICdkYXRhYmFzZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXBhcmUgbWV0YSBpbmZvIHRvIGlkZW50aWZ5IHRoZSB6aXAgYW5kIG90aGVyIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBcHBJbmZvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKGFwcEluZm8gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFJbmZvLmFwcCA9IChhcHBJbmZvIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW9zKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YUluZm8uT1MgPSAnSU9TJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQW5kcm9pZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFJbmZvLk9TID0gJ0FORFJPSUQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhSW5mby5jcmVhdGVkT24gPSBub3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWV0YUluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IGV4ZWN1dGVQcm9taXNlQ2hhaW4odGhpcy5nZXRDYWxsYmFja3NGb3IoJ3ByZUV4cG9ydCcpLCBbZm9sZGVyVG9FeHBvcnRGdWxsUGF0aCwgbWV0YUluZm9dKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZSBtZXRhIGRhdGEgdG8gTUVUQS5qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZS53cml0ZUZpbGUoZm9sZGVyVG9FeHBvcnRGdWxsUGF0aCwgJ01FVEEuanNvbicsIEpTT04uc3RyaW5naWZ5KG1ldGFJbmZvKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHJlcGFyZSBuYW1lIHRvIHVzZSBmb3IgdGhlIHppcC5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGFwcE5hbWUgPSBtZXRhSW5mby5hcHAubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZSA9IGFwcE5hbWUucmVwbGFjZSgvXFxzKy9nLCAnXycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VGaWxlU2VydmljZS5uZXdGaWxlTmFtZSh6aXBEaXJlY3RvcnksIGFwcE5hbWUgKyB6aXBGaWxlTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZpbGVOYW1lID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBaaXAgdGhlIHRlbXBvcmFyeSBmb2xkZXIgZm9yIGV4cG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocnMsIHJlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplZXAuemlwKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gOiBmb2xkZXJUb0V4cG9ydEZ1bGxQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gICA6IHppcERpcmVjdG9yeSArIGZpbGVOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHJzKHppcERpcmVjdG9yeSArIGZpbGVOYW1lKSwgcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihyZXNvbHZlLCByZWplY3QpXG4gICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGVtcG9yYXJ5IGZvbGRlciBmb3IgZXhwb3J0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRldmljZUZpbGVTZXJ2aWNlLnJlbW92ZURpcihjb3Jkb3ZhLmZpbGUuY2FjaGVEaXJlY3RvcnkgKyBmb2xkZXJUb0V4cG9ydCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICByZXR1cm5zIHN0b3JlIGJvdW5kIHRvIHRoZSBkYXRhTW9kZWxOYW1lIGFuZCBlbnRpdHlOYW1lLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGFNb2RlbE5hbWVcbiAgICAgKiBAcGFyYW0gZW50aXR5TmFtZVxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdG9yZShkYXRhTW9kZWxOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8TG9jYWxEQlN0b3JlPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhYmFzZXNbZGF0YU1vZGVsTmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZGF0YWJhc2VzW2RhdGFNb2RlbE5hbWVdLnN0b3Jlc1tlbnRpdHlOYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QoYHN0b3JlIHdpdGggbmFtZScke2VudGl0eU5hbWV9JyBpbiBkYXRhbW9kZWwgJyR7ZGF0YU1vZGVsTmFtZX0nIGlzIG5vdCBmb3VuZGApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVwbGFjZSB0aGUgZGF0YWJhc2VzIHdpdGggdGhlIGZpbGVzIHByb3ZpZGVkIGluIHppcC4gSWYgaW1wb3J0IGdldHMgZmFpbGVkLFxuICAgICAqIHRoZW4gYXBwIHJldmVydHMgYmFjayB0byB1c2Ugb2xkIGRhdGFiYXNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6aXBQYXRoIGxvY2F0aW9uIG9mIHRoZSB6aXAgZmlsZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJldmVydElmRmFpbHMgSWYgdHJ1ZSwgdGhlbiBhIGJhY2t1cCBpcyBjcmVhdGVkIGFuZCB3aGVuIGltcG9ydCBmYWlscywgYmFja3VwIGlzIHJldmVydGVkIGJhY2suXG4gICAgICogQHJldHVybnMge29iamVjdH0gYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiB6aXAgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW1wb3J0REIoemlwUGF0aDogc3RyaW5nLCByZXZlcnRJZkZhaWxzOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRGb2xkZXIgPSAnb2ZmbGluZV90ZW1wXycgKyBub3coKSxcbiAgICAgICAgICAgICAgICBpbXBvcnRGb2xkZXJGdWxsUGF0aCA9IGNvcmRvdmEuZmlsZS5jYWNoZURpcmVjdG9yeSArIGltcG9ydEZvbGRlciArICcvJztcbiAgICAgICAgICAgIGxldCB6aXBNZXRhO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZvbGRlciB0byB1bnppcCB0aGUgY29udGVudHMgb2YgdGhlIHppcC5cbiAgICAgICAgICAgIHRoaXMuZmlsZS5jcmVhdGVEaXIoY29yZG92YS5maWxlLmNhY2hlRGlyZWN0b3J5LCBpbXBvcnRGb2xkZXIsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC50aGVuKCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocnMsIHJlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVbnppcCB0byB0ZW1wb3JhcnkgbG9jYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFplZXAudW56aXAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IHppcFBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGltcG9ydEZvbGRlckZ1bGxQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBycywgcmUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAqIHJlYWQgbWV0YSBkYXRhIGFuZCBhbGxvdyBpbXBvcnQgb25seSBwYWNrYWdlIG5hbWUgb2YgdGhlIGFwcCBmcm9tIHdoaWNoIHRoaXMgemlwIGlzIGNyZWF0ZWRcbiAgICAgICAgICAgICAgICAgKiBhbmQgdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGlzIGFwcCBhcmUgc2FtZS5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWxlLnJlYWRBc1RleHQoaW1wb3J0Rm9sZGVyRnVsbFBhdGgsICdNRVRBLmpzb24nKVxuICAgICAgICAgICAgICAgICAgICAudGhlbih0ZXh0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgemlwTWV0YSA9IEpTT04ucGFyc2UodGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFwcEluZm8oKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFwcEluZm8gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXppcE1ldGEuYXBwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ21ldGEgaW5mb3JtYXRpb24gaXMgbm90IGZvdW5kIGluIHppcCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh6aXBNZXRhLmFwcC5wYWNrYWdlTmFtZSAhPT0gYXBwSW5mby5wYWNrYWdlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdkYXRhYmFzZSB6aXAgb2YgYXBwIHdpdGggc2FtZSBwYWNrYWdlIG5hbWUgY2FuIG9ubHkgYmUgaW1wb3J0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGJhY2t1cFppcDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9zZSgpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnRJZkZhaWxzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGJhY2t1cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cG9ydERCKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocGF0aCA9PiBiYWNrdXBaaXAgPSBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgZXhpc3RpbmcgZGF0YWJhc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VGaWxlU2VydmljZS5yZW1vdmVEaXIodGhpcy5kYkluc3RhbGxEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcHkgaW1wb3J0ZWQgZGF0YWJhc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWxlLmNvcHlEaXIoaW1wb3J0Rm9sZGVyRnVsbFBhdGgsICdkYXRhYmFzZXMnLCB0aGlzLmRiSW5zdGFsbFBhcmVudERpcmVjdG9yeSwgdGhpcy5kYkluc3RhbGxEaXJlY3RvcnlOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxvYWQgZGF0YWJhc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFiYXNlcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGF0YWJhc2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gZXhlY3V0ZVByb21pc2VDaGFpbih0aGlzLmdldENhbGxiYWNrc0ZvcigncG9zdEltcG9ydCcpLCBbaW1wb3J0Rm9sZGVyRnVsbFBhdGgsIHppcE1ldGFdKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2t1cFppcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRldmljZUZpbGVTZXJ2aWNlLnJlbW92ZUZpbGUoYmFja3VwWmlwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgKHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2t1cFppcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmltcG9ydERCKGJhY2t1cFppcCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlRmlsZVNlcnZpY2UucmVtb3ZlRmlsZShiYWNrdXBaaXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbihyZXNvbHZlLCByZWplY3QpXG4gICAgICAgICAgICAuY2F0Y2gobm9vcClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VGaWxlU2VydmljZS5yZW1vdmVEaXIoY29yZG92YS5maWxlLmNhY2hlRGlyZWN0b3J5ICsgaW1wb3J0Rm9sZGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YU1vZGVsTmFtZSBOYW1lIG9mIHRoZSBkYXRhIG1vZGVsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eU5hbWUgTmFtZSBvZiB0aGUgZW50aXR5XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdGlvbiBOYW1lIG9mIHRoZSBvcGVyYXRpb24gKFJFQUQsIElOU0VSVCwgVVBEQVRFLCBERUxFVEUpXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IHJldHVybnMgdHJ1ZSwgaWYgdGhlIGdpdmVuIG9wZXJhdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGFzIHBlciBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc09wZXJhdGlvbkFsbG93ZWQoZGF0YU1vZGVsTmFtZTogc3RyaW5nLCBlbnRpdHlOYW1lOiBzdHJpbmcsIG9wZXJhdGlvbjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b3JlKGRhdGFNb2RlbE5hbWUsIGVudGl0eU5hbWUpLnRoZW4oIHN0b3JlID0+IHtcbiAgICAgICAgICAgIGlmICghc3RvcmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uID09PSAnUkVBRCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmUuZW50aXR5U2NoZW1hLnB1c2hDb25maWcucmVhZEVuYWJsZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uID09PSAnSU5TRVJUJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5lbnRpdHlTY2hlbWEucHVzaENvbmZpZy5pbnNlcnRFbmFibGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ1VQREFURScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmUuZW50aXR5U2NoZW1hLnB1c2hDb25maWcudXBkYXRlRW5hYmxlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdERUxFVEUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmVudGl0eVNjaGVtYS5wdXNoQ29uZmlnLmRlbGV0ZUVuYWJsZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWREYXRhYmFzZXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgbGV0IG5ld0RhdGFiYXNlc0NyZWF0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuZGF0YWJhc2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZGF0YWJhc2VzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0lvcygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYkluc3RhbGxEaXJlY3RvcnlOYW1lID0gJ0xvY2FsRGF0YWJhc2UnO1xuICAgICAgICAgICAgICAgIHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5ID0gY29yZG92YS5maWxlLmFwcGxpY2F0aW9uU3RvcmFnZURpcmVjdG9yeSArICAnTGlicmFyeS8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeU5hbWUgPSAnZGF0YWJhc2VzJztcbiAgICAgICAgICAgICAgICB0aGlzLmRiSW5zdGFsbFBhcmVudERpcmVjdG9yeSA9IGNvcmRvdmEuZmlsZS5hcHBsaWNhdGlvblN0b3JhZ2VEaXJlY3Rvcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeSA9IHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5ICsgdGhpcy5kYkluc3RhbGxEaXJlY3RvcnlOYW1lO1xuXG4gICAgICAgICAgICB0aGlzLmRhdGFiYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBEQkluZm8+KCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRVcERhdGFiYXNlcygpXG4gICAgICAgICAgICAgICAgLnRoZW4oIGZsYWcgPT4gbmV3RGF0YWJhc2VzQ3JlYXRlZCA9IGZsYWcpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5sb2FkREJTY2hlbWFzKCkpXG4gICAgICAgICAgICAgICAgLnRoZW4obWV0YWRhdGEgPT4gdGhpcy5sb2FkTmFtZWRRdWVyaWVzKG1ldGFkYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihtZXRhZGF0YSA9PiB0aGlzLmxvYWRPZmZsaW5lQ29uZmlnKG1ldGFkYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihtZXRhZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChtYXAobWV0YWRhdGEsIGRiTWV0YWRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbkRhdGFiYXNlKGRiTWV0YWRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZGF0YWJhc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFiYXNlc1tkYk1ldGFkYXRhLnNjaGVtYS5uYW1lXSA9IGRhdGFiYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0b3JlKCd3YXZlbWFrZXInLCAna2V5LXZhbHVlJykudGhlbiggc3RvcmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbEtleVZhbHVlU2VydmljZS5pbml0KHN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsS2V5VmFsdWVTZXJ2aWNlLmdldChORVhUX0lEX0NPVU5UKS50aGVuKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRJZCA9IHZhbCB8fCB0aGlzLm5leHRJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0RhdGFiYXNlc0NyZWF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZURhdGEoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuZGlzYWJsZUZvcmVpZ25LZXlzKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5kZXZpY2VTZXJ2aWNlLmdldEFwcEJ1aWxkVGltZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGRiU2VlZENyZWF0aW9uVGltZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGVjdXRlUHJvbWlzZUNoYWluKG1hcCh0aGlzLmNhbGxiYWNrcywgJ29uRGJDcmVhdGUnKSwgW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZXMnIDogdGhpcy5kYXRhYmFzZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGJDcmVhdGVkT24nOiBub3coKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYlNlZWRDcmVhdGVkT24nIDogZGJTZWVkQ3JlYXRpb25UaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHRoaXMuZGF0YWJhc2VzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFiYXNlcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdXNpbmcgdGhpcyBmdW5jdGlvbiBvbmUgY2FuIGxpc3RlbiBldmVudHMgc3VjaCBhcyBvbkRiQ3JlYXRlLCAncHJlRXhwb3J0JyBhbmQgJ3Bvc3RJbXBvcnQnLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGxpc3RlbmVyIGFuIG9iamVjdCB3aXRoIGZ1bmN0aW9ucyBtYXBwZWQgdG8gZXZlbnQgbmFtZXMuXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyQ2FsbGJhY2sobGlzdGVuZXI6IENhbGxCYWNrKSB7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tzLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRMb2dTUWwoZmxhZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9sb2dTcWwgPSBmbGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYW55IGV4aXN0aW5nIGRhdGFiYXNlcyAoZXhjZXB0IHdhdmVtYWtlciBkYikgYW5kIGNvcGllcyB0aGUgZGF0YWJhc2VzIHRoYXQgYXJlIHBhY2thZ2VkIHdpdGggdGhlIGFwcC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHByaXZhdGUgY2xlYW5BbmRDb3B5RGF0YWJhc2VzKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGRiU2VlZEZvbGRlciA9IGNvcmRvdmEuZmlsZS5hcHBsaWNhdGlvbkRpcmVjdG9yeSArIE1FVEFfTE9DQVRJT047XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGUuY3JlYXRlRGlyKHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5LCB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeU5hbWUsIGZhbHNlKVxuICAgICAgICAgICAgLmNhdGNoKG5vb3ApXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLmRldmljZUZpbGVTZXJ2aWNlLmxpc3RGaWxlcyh0aGlzLmRiSW5zdGFsbERpcmVjdG9yeSwgLy4rXFwuZGIkLykpXG4gICAgICAgICAgICAudGhlbihmaWxlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGZpbGVzLm1hcChmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmWyduYW1lJ10gIT09ICd3YXZlbWFrZXIuZGInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZS5yZW1vdmVGaWxlKHRoaXMuZGJJbnN0YWxsRGlyZWN0b3J5LCBmWyduYW1lJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCAoKSA9PiB0aGlzLmRldmljZUZpbGVTZXJ2aWNlLmxpc3RGaWxlcyhkYlNlZWRGb2xkZXIsIC8uK1xcLmRiJC8pKVxuICAgICAgICAgICAgLnRoZW4oZmlsZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbGUuY3JlYXRlRGlyKHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5LCB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeU5hbWUsIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChmaWxlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPT4gdGhpcy5maWxlLmNvcHlGaWxlKGRiU2VlZEZvbGRlciwgZlsnbmFtZSddLCB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeSwgZlsnbmFtZSddKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFBpY2tzIGVzc2VudGlhbCBkZXRhaWxzIGZyb20gdGhlIGdpdmVuIHNjaGVtYS5cbiAgICBwcml2YXRlIGNvbXBhY3RFbnRpdHlTY2hlbWEoc2NoZW1hLCBlbnRpdHksIHRyYW5zZm9ybWVkU2NoZW1hcyk6IEVudGl0eUluZm8ge1xuICAgICAgICBjb25zdCByZXFFbnRpdHkgPSB0cmFuc2Zvcm1lZFNjaGVtYXNbZW50aXR5WydlbnRpdHlOYW1lJ11dIGFzIEVudGl0eUluZm87XG4gICAgICAgIHJlcUVudGl0eS5lbnRpdHlOYW1lID0gZW50aXR5WydlbnRpdHlOYW1lJ107XG4gICAgICAgIHJlcUVudGl0eS5uYW1lID0gZW50aXR5WyduYW1lJ107XG4gICAgICAgIHJlcUVudGl0eS5jb2x1bW5zID0gW107XG4gICAgICAgIGVudGl0eS5jb2x1bW5zLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSBjb2wuY29sdW1uVmFsdWUgPyBjb2wuY29sdW1uVmFsdWUuZGVmYXVsdFZhbHVlIDogJyc7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gY29sLnNxbFR5cGU7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ251bWJlcicgJiYgIWNvbC5wcmltYXJ5S2V5KSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gaXNFbXB0eShkZWZhdWx0VmFsdWUpID8gbnVsbCA6IHBhcnNlSW50KGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGlzRW1wdHkoZGVmYXVsdFZhbHVlKSA/IG51bGwgOiAoZGVmYXVsdFZhbHVlID09PSAndHJ1ZScgPyAxIDogMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGlzRW1wdHkoZGVmYXVsdFZhbHVlKSA/IG51bGwgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXFFbnRpdHkuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBjb2xbJ25hbWUnXSxcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGNvbFsnZmllbGROYW1lJ10sXG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yVHlwZTogY29sWydnZW5lcmF0b3JUeXBlJ10sXG4gICAgICAgICAgICAgICAgc3FsVHlwZTogY29sWydzcWxUeXBlJ10sXG4gICAgICAgICAgICAgICAgcHJpbWFyeUtleTogY29sWydwcmltYXJ5S2V5J10sXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JFYWNoKGVudGl0eS5yZWxhdGlvbnMsIHIgPT4ge1xuICAgICAgICAgICAgbGV0IHRhcmdldEVudGl0eVNjaGVtYSwgdGFyZ2V0RW50aXR5LCBjb2wsIHNvdXJjZUNvbHVtbiwgbWFwcGluZztcbiAgICAgICAgICAgIGlmIChyLmNhcmRpbmFsaXR5ID09PSAnTWFueVRvT25lJyB8fCByLmNhcmRpbmFsaXR5ID09PSAnT25lVG9PbmUnKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0RW50aXR5ID0gZmluZChzY2hlbWEudGFibGVzLCB0ID0+IHQubmFtZSA9PT0gci50YXJnZXRUYWJsZSk7XG4gICAgICAgICAgICAgICAgbWFwcGluZyA9IHIubWFwcGluZ3NbMF07XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldEVudGl0eSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbnRpdHkgPSB0YXJnZXRFbnRpdHkuZW50aXR5TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlQ29sdW1uID0gbWFwcGluZy5zb3VyY2VDb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIGNvbCA9IHJlcUVudGl0eS5jb2x1bW5zLmZpbmQoY29sdW1uID0+IGNvbHVtbi5uYW1lID09PSBzb3VyY2VDb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbnRpdHlTY2hlbWEgPSBzY2hlbWEudGFibGVzLmZpbmQodGFibGUgPT4gdGFibGUubmFtZSA9PT0gci50YXJnZXRUYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcmVpZ25SZWxhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUZpZWxkTmFtZTogci5maWVsZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbnRpdHk6IHRhcmdldEVudGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFRhYmxlOiByLnRhcmdldFRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29sdW1uOiBtYXBwaW5nLnRhcmdldENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFBhdGg6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU1hcHBlcjogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRGaWVsZE5hbWU6IHRhcmdldEVudGl0eVNjaGVtYS5jb2x1bW5zLmZpbmQoY29sdW1uID0+IGNvbHVtbi5uYW1lID09PSBtYXBwaW5nLnRhcmdldENvbHVtbikuZmllbGROYW1lXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGZvcmVpZ25SZWxhdGlvbi50YXJnZXRQYXRoID0gZm9yZWlnblJlbGF0aW9uLnNvdXJjZUZpZWxkTmFtZSArICcuJyArIGZvcmVpZ25SZWxhdGlvbi50YXJnZXRGaWVsZE5hbWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgZm9yZWlnblJlbGF0aW9uLmRhdGFNYXBwZXIgPSBjaGFpbih0YXJnZXRFbnRpdHlTY2hlbWEuY29sdW1ucylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5rZXlCeShjaGlsZENvbCA9PiBmb3JlaWduUmVsYXRpb24uc291cmNlRmllbGROYW1lICsgJy4nICsgY2hpbGRDb2wuZmllbGROYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcFZhbHVlcyhjaGlsZENvbCA9PiBuZXcgQ29sdW1uSW5mbyhjaGlsZENvbC5uYW1lLCBjaGlsZENvbC5maWVsZE5hbWUpKS52YWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb2wuZm9yZWlnblJlbGF0aW9ucyA9IGNvbC5mb3JlaWduUmVsYXRpb25zIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb2wuZm9yZWlnblJlbGF0aW9ucy5wdXNoKGZvcmVpZ25SZWxhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcUVudGl0eTtcbiAgICB9XG5cbiAgICAvLyBMb2FkcyBuZWNlc3NhcnkgZGV0YWlscyBvZiBxdWVyaWVzXG4gICAgcHJpdmF0ZSBjb21wYWN0UXVlcmllcyhxdWVyaWVzQnlEQik6IE1hcDxzdHJpbmcsIE5hbWVkUXVlcnlJbmZvPiB7XG4gICAgICAgIGNvbnN0IHF1ZXJpZXMgPSBuZXcgTWFwPHN0cmluZywgTmFtZWRRdWVyeUluZm8+KCk7XG5cbiAgICAgICAgZm9yRWFjaChxdWVyaWVzQnlEQi5xdWVyaWVzLCBxdWVyeURhdGEgPT4ge1xuICAgICAgICAgICAgbGV0IHF1ZXJ5LCBwYXJhbXM7XG4gICAgICAgICAgICBpZiAocXVlcnlEYXRhLm5hdGl2ZVNxbCAmJiBxdWVyeURhdGEudHlwZSA9PT0gJ1NFTEVDVCcpIHtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IGlzRW1wdHkocXVlcnlEYXRhLm9mZmxpbmVRdWVyeVN0cmluZykgPyBxdWVyeURhdGEucXVlcnlTdHJpbmcgOiBxdWVyeURhdGEub2ZmbGluZVF1ZXJ5U3RyaW5nO1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IG1hcCh0aGlzLmV4dHJhY3RRdWVyeVBhcmFtcyhxdWVyeSksIHAgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbU9iaiA9IGZpbmQocXVlcnlEYXRhLnBhcmFtZXRlcnMsIHsnbmFtZSc6IHB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHBhcmFtT2JqLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwYXJhbU9iai50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlOiBwYXJhbU9iai52YXJpYWJsZVR5cGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuZm9yRWFjaChwID0+IHF1ZXJ5ID0gcmVwbGFjZShxdWVyeSwgJzonICsgcC5uYW1lLCAnPycpKTtcbiAgICAgICAgICAgICAgICBxdWVyaWVzW3F1ZXJ5RGF0YS5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogcXVlcnlEYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBtYXAocXVlcnlEYXRhLnJlc3BvbnNlLnByb3BlcnRpZXMsIHAgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAubmFtZUluVXBwZXJDYXNlID0gcC5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxdWVyaWVzO1xuICAgIH1cblxuICAgIC8vIExvYWRzIG5lY2Vzc2FyeSBkZXRhaWxzIG9mIHJlbW90ZSBzY2hlbWFcbiAgICBwcml2YXRlIGNvbXBhY3RTY2hlbWEoc2NoZW1hKTogREJJbmZvIHtcbiAgICAgICAgY29uc3QgZGJJbmZvID0gbmV3IERCSW5mbygpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFNjaGVtYXMgPSBuZXcgTWFwPHN0cmluZywgRW50aXR5SW5mbz4oKTtcbiAgICAgICAgc2NoZW1hLnRhYmxlcy5mb3JFYWNoKGVudGl0eVNjaGVtYSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFNjaGVtYXNbZW50aXR5U2NoZW1hLmVudGl0eU5hbWVdID0ge307XG4gICAgICAgIH0pO1xuICAgICAgICBzY2hlbWEudGFibGVzLmZvckVhY2goZW50aXR5U2NoZW1hID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcGFjdEVudGl0eVNjaGVtYShzY2hlbWEsIGVudGl0eVNjaGVtYSwgdHJhbnNmb3JtZWRTY2hlbWFzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRiSW5mby5zY2hlbWEubmFtZSA9IHNjaGVtYS5uYW1lO1xuICAgICAgICBkYkluZm8uc2NoZW1hLmlzSW50ZXJuYWwgPSBzY2hlbWEuaXNJbnRlcm5hbDtcbiAgICAgICAgZGJJbmZvLnNjaGVtYS5lbnRpdGllcyA9IHRyYW5zZm9ybWVkU2NoZW1hcztcbiAgICAgICAgcmV0dXJuIGRiSW5mbztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRCb29sVG9JbnQoYm9vbDogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gdG9TdHJpbmcoYm9vbCkgPT09ICd0cnVlJyA/IDEgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydEludFRvQm9vbChpbnQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW50ID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFR1cm5zIG9mZiBmb3JlaWduIGtleXNcbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc2FibGVGb3JlaWduS2V5cygpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwobWFwKHRoaXMuZGF0YWJhc2VzLCBkYiA9PiB0aGlzLmV4ZWN1dGVTUUxRdWVyeShkYi5zY2hlbWEubmFtZSwgJ1BSQUdNQSBmb3JlaWduX2tleXMgPSBPRkYnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIFNRTCBxdWVyeTtcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYk5hbWVcbiAgICAgKiBAcGFyYW0gc3FsXG4gICAgICogQHBhcmFtIHBhcmFtc1xuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHB1YmxpYyBleGVjdXRlU1FMUXVlcnkoZGJOYW1lLCBzcWwsIHBhcmFtcz86IGFueVtdLCBsb2dPdXRwdXQ/OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGRiID0gdGhpcy5kYXRhYmFzZXNbZGJOYW1lXTtcbiAgICAgICAgaWYgKGRiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGIuc3FsaXRlT2JqZWN0LmV4ZWN1dGVTcWwoc3FsLCBwYXJhbXMsIGxvZ091dHB1dClcbiAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gW10sXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzID0gcmVzdWx0LnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHJvd3MuaXRlbShpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdyb3dzQWZmZWN0ZWQnICA6IHJlc3VsdC5yb3dzQWZmZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm93cycgICAgICAgICAgOiBkYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGBObyBEYXRhYmFzZSB3aXRoIG5hbWUgJHtkYk5hbWV9IGZvdW5kYCk7XG4gICAgfVxuXG4gICAgLy8gZ2V0IHRoZSBwYXJhbXMgb2YgdGhlIHF1ZXJ5IG9yIHByb2NlZHVyZS5cbiAgICBwcml2YXRlIGV4dHJhY3RRdWVyeVBhcmFtcyhxdWVyeSkge1xuICAgICAgICBsZXQgcGFyYW1zLCBhbGlhc1BhcmFtcztcbiAgICAgICAgYWxpYXNQYXJhbXMgPSBxdWVyeS5tYXRjaCgvW15cIidcXHdcXFxcXTpcXHMqXFx3K1xccyovZykgfHwgW107XG4gICAgICAgIGlmIChhbGlhc1BhcmFtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IGFsaWFzUGFyYW1zLm1hcCh4ID0+ICgvWz18XFxXXS9nLnRlc3QoeCkpID8geC5yZXBsYWNlKC9cXFcvZywgJycpLnRyaW0oKSA6IHgudHJpbSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYXBwbGljYXRpb24gaW5mbyBzdWNoIGFzIHBhY2thZ2VOYW1lLCBhcHBOYW1lLCB2ZXJzaW9uTnVtYmVyLCB2ZXJzaW9uQ29kZS5cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEFwcEluZm8oKSB7XG4gICAgICAgIGNvbnN0IGFwcEluZm8gPSB7XG4gICAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICAgIHBhY2thZ2VOYW1lOiAnJyxcbiAgICAgICAgICAgIHZlcnNpb25OdW1iZXI6ICcnLFxuICAgICAgICAgICAgdmVyc2lvbkNvZGU6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwVmVyc2lvbi5nZXRQYWNrYWdlTmFtZSgpXG4gICAgICAgICAgICAudGhlbihwYWNrYWdlTmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgYXBwSW5mby5wYWNrYWdlTmFtZSA9IHBhY2thZ2VOYW1lO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcFZlcnNpb24uZ2V0QXBwTmFtZSgpO1xuICAgICAgICAgICAgfSkudGhlbihhcHBOYW1lID0+IHtcbiAgICAgICAgICAgICAgICBhcHBJbmZvLm5hbWUgPSBhcHBOYW1lO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcFZlcnNpb24uZ2V0VmVyc2lvbk51bWJlcigpO1xuICAgICAgICAgICAgfSkudGhlbih2ZXJzaW9uTnVtYmVyID0+IHtcbiAgICAgICAgICAgICAgICBhcHBJbmZvLnZlcnNpb25OdW1iZXIgPSB2ZXJzaW9uTnVtYmVyO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcFZlcnNpb24uZ2V0VmVyc2lvbkNvZGUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4odmVyc2lvbkNvZGUgPT4ge1xuICAgICAgICAgICAgICAgIGFwcEluZm8udmVyc2lvbkNvZGUgPSAodmVyc2lvbkNvZGUgYXMgYW55KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwSW5mbztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2FsbGJhY2tzRm9yKGV2ZW50OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxiYWNrcy5tYXAoYyA9PiB7XG4gICAgICAgICAgICBpZiAoY1tldmVudF0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY1tldmVudF0uYmluZChjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2hlcyBmb3IgdGhlIGZpbGVzIHdpdGggZ2l2ZW4gcmVnZXggaW4gJ3d3dy9tZXRhZGF0YS9hcHAnYW5kIHJldHVybnMgYW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgSlNPTlxuICAgICAqIGNvbnRlbnQgcHJlc2VudCBpbiBlYWNoIGZpbGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZU5hbWVSZWdleCByZWdleCBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IgZmlsZXMuXG4gICAgICogQHJldHVybnMgeyp9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW4gYXJyYXlcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE1ldGFJbmZvKGZpbGVOYW1lUmVnZXg6IFJlZ0V4cCkge1xuICAgICAgICBjb25zdCBmb2xkZXIgPSBjb3Jkb3ZhLmZpbGUuYXBwbGljYXRpb25EaXJlY3RvcnkgKyBNRVRBX0xPQ0FUSU9OICsgJy8nO1xuICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VGaWxlU2VydmljZS5saXN0RmlsZXMoZm9sZGVyLCBmaWxlTmFtZVJlZ2V4KVxuICAgICAgICAgICAgLnRoZW4oZmlsZXMgPT4gUHJvbWlzZS5hbGwobWFwKGZpbGVzLCBmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvcmRvdmEgRmlsZSByZWFkZXIgaGFzIGJ1ZmZlciBpc3N1ZXMgd2l0aCBsYXJnZSBmaWxlcy5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvLCB1c2luZyBhamF4IHRvIHJldHJpZXZlIGxvY2FsIGpzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICQuZ2V0SlNPTih0cmFuc2Zvcm1GaWxlVVJJKGZvbGRlcikgKyBmWyduYW1lJ10sIGRhdGEgPT4gcmVzb2x2ZShkYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUsIGlmIHRoZSBnaXZlbiBlbnRpdHkncyBkYXRhIGlzIGJ1bmRsZWQgYWxvbmcgd2l0aCBhcHBsaWNhdGlvbiBpbnN0YWxsZXIuXG4gICAgICogQHBhcmFtIGRhdGFNb2RlbE5hbWUgbmFtZSBvZiB0aGUgZGF0YSBtb2RlbFxuICAgICAqIEBwYXJhbSBlbnRpdHlOYW1lIG5hbWUgb2YgdGhlIGVudGl0eVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAgICovXG4gICAgcHVibGljIGlzQnVuZGxlZChkYXRhTW9kZWxOYW1lLCBlbnRpdHlOYW1lKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvcmUoZGF0YU1vZGVsTmFtZSwgZW50aXR5TmFtZSkudGhlbihzdG9yZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZW50aXR5U2NoZW1hLnB1bGxDb25maWcucHVsbFR5cGUgPT09IFB1bGxUeXBlLkJVTkRMRUQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWRzIGxvY2FsIGRhdGFiYXNlIHNjaGVtYXMgZnJvbSAqX2RhdGFfbW9kZWwuanNvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHsqfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIG1ldGFkYXRhLlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZERCU2NoZW1hcygpOiBQcm9taXNlPE1hcDxzdHJpbmcsIERCSW5mbz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWV0YUluZm8oLy4rX2RhdGFNb2RlbFxcLmpzb24kLylcbiAgICAgICAgICAgIC50aGVuKCAoc2NoZW1hczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBuZXcgTWFwPHN0cmluZywgREJJbmZvPigpO1xuICAgICAgICAgICAgICAgIHNjaGVtYXMgPSBpc0FycmF5KHNjaGVtYXMpID8gc2NoZW1hcyA6IFtzY2hlbWFzXTtcbiAgICAgICAgICAgICAgICBzY2hlbWFzLnB1c2goT0ZGTElORV9XQVZFTUFLRVJfREFUQUJBU0VfU0NIRU1BKTtcbiAgICAgICAgICAgICAgICBzY2hlbWFzLm1hcChzID0+IHRoaXMuY29tcGFjdFNjaGVtYShzKSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocyA9PiAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFbcy5zY2hlbWEubmFtZV0gPSBzO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0YWRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIG5hbWVkIHF1ZXJpZXMgZnJvbSAqX3F1ZXJ5Lmpzb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyp9IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgeyp9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggbWV0YWRhdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWROYW1lZFF1ZXJpZXMobWV0YWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWV0YUluZm8oLy4rX3F1ZXJ5XFwuanNvbiQvKVxuICAgICAgICAgICAgLnRoZW4oKHF1ZXJpZXNCeURCczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcXVlcmllc0J5REJzID0gaXNBcnJheShxdWVyaWVzQnlEQnMpID8gcXVlcmllc0J5REJzIDogW3F1ZXJpZXNCeURCc107XG4gICAgICAgICAgICAgICAgcXVlcmllc0J5REJzLm1hcChlID0+IG1ldGFkYXRhW2UubmFtZV0ucXVlcmllcyA9IHRoaXMuY29tcGFjdFF1ZXJpZXMoZSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWQgb2ZmbGluZSBjb25maWd1cmF0aW9uIGZyb20gKl9vZmZsaW5lLmpzb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyp9IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgeyp9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggbWV0YWRhdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWRPZmZsaW5lQ29uZmlnKG1ldGFkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1ldGFJbmZvKC8uK19vZmZsaW5lXFwuanNvbiQvKVxuICAgICAgICAgICAgLnRoZW4oY29uZmlncyA9PiB7XG4gICAgICAgICAgICAgICAgZm9yRWFjaChjb25maWdzLCBjb25maWcgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGZvckVhY2goY29uZmlnLmVudGl0aWVzLCBlbnRpdHlDb25maWcgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50aXR5U2NoZW1hID0gZmluZChtZXRhZGF0YVtjb25maWcubmFtZV0uc2NoZW1hLmVudGl0aWVzLCBzY2hlbWEgPT4gc2NoZW1hLm5hbWUgPT09IGVudGl0eUNvbmZpZy5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbkluKGVudGl0eVNjaGVtYSwgZW50aXR5Q29uZmlnKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dTcWwoc3FsaXRlT2JqZWN0OiBTUUxpdGVPYmplY3QpIHtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gY29uc29sZSxcbiAgICAgICAgICAgIG9yaWdpbmFsRXhlY3V0ZVNxbCA9IHNxbGl0ZU9iamVjdC5leGVjdXRlU3FsO1xuICAgICAgICBzcWxpdGVPYmplY3QuZXhlY3V0ZVNxbCA9IChzcWwsIHBhcmFtcywgbG9nT3V0cHV0PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gbm93KCk7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxFeGVjdXRlU3FsLmNhbGwoc3FsaXRlT2JqZWN0LCBzcWwsIHBhcmFtcykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsb2dPdXRwdXQgfHwgdGhpcy5fbG9nU3FsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iakFyciA9IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93Q291bnQgPSByZXN1bHQucm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93Q291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqQXJyLnB1c2gocmVzdWx0LnJvd3MuaXRlbShpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdTUUwgXCIlc1wiICB3aXRoIHBhcmFtcyAlTyB0b29rIFslZCBtc10uIEFuZCB0aGUgcmVzdWx0IGlzICVPJywgc3FsLCBwYXJhbXMsIG5vdygpIC0gc3RhcnRUaW1lLCBvYmpBcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignU1FMIFwiJXNcIiB3aXRoIHBhcmFtcyAlTyBmYWlsZWQgd2l0aCBlcnJvciBtZXNzYWdlICVzJywgc3FsLCBwYXJhbXMsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTUUxpdGUgZG9lcyBub3Qgc3VwcG9ydCBib29sZWFuIGRhdGEuIEluc3RlYWQgb2YgdXNpbmcgYm9vbGVhbiB2YWx1ZXMsIGRhdGEgd2lsbCBiZSBjaGFuZ2VkIHRvIDAgb3IgMS5cbiAgICAgKiBJZiB0aGUgdmFsdWUgaXMgJ3RydWUnLCB0aGVuIDEgaXMgc2V0IGFzIHZhbHVlLiBJZiB2YWx1ZSBpcyBub3QgMSBub3IgbnVsbCwgdGhlbiBjb2x1bW4gdmFsdWUgaXMgc2V0IGFzIDAuXG4gICAgICogQHBhcmFtIGRiTmFtZVxuICAgICAqIEBwYXJhbSB0YWJsZU5hbWVcbiAgICAgKiBAcGFyYW0gY29sTmFtZVxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHByaXZhdGUgbm9ybWFsaXplQm9vbGVhbkRhdGEoZGJOYW1lLCB0YWJsZU5hbWUsIGNvbE5hbWUpIHtcbiAgICAgICAgY29uc3QgdHJ1ZVRvMVF1ZXJ5ID0gYHVwZGF0ZSAke2VzY2FwZU5hbWUodGFibGVOYW1lKX0gc2V0ICR7ZXNjYXBlTmFtZShjb2xOYW1lKX0gPSAxIHdoZXJlICR7ZXNjYXBlTmFtZShjb2xOYW1lKX0gPSAndHJ1ZSdgLFxuICAgICAgICAgICAgZXhjZXB0TnVsbEFuZDF0bzBRdWVyeSA9IGB1cGRhdGUgJHtlc2NhcGVOYW1lKHRhYmxlTmFtZSl9IHNldCAke2VzY2FwZU5hbWUoY29sTmFtZSl9ID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlICR7ZXNjYXBlTmFtZShjb2xOYW1lKX0gaXMgbm90IG51bGwgYW5kICR7ZXNjYXBlTmFtZShjb2xOYW1lKX0gIT0gMWA7XG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVTUUxRdWVyeShkYk5hbWUsIHRydWVUbzFRdWVyeSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuZXhlY3V0ZVNRTFF1ZXJ5KGRiTmFtZSwgZXhjZXB0TnVsbEFuZDF0bzBRdWVyeSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGRhdGEgdG8gc3VwcG9ydCBTUUxpdGUuXG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICovXG4gICAgcHJpdmF0ZSBub3JtYWxpemVEYXRhKCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwobWFwKHRoaXMuZGF0YWJhc2VzLCBkYXRhYmFzZSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwobWFwKGRhdGFiYXNlLnNjaGVtYS5lbnRpdGllcywgZW50aXR5U2NoZW1hID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwobWFwKGVudGl0eVNjaGVtYS5jb2x1bW5zLCBjb2x1bW4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLnNxbFR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplQm9vbGVhbkRhdGEoZGF0YWJhc2Uuc2NoZW1hLm5hbWUsIGVudGl0eVNjaGVtYS5uYW1lLCBjb2x1bW4ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5EYXRhYmFzZShkYXRhYmFzZTogREJJbmZvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNxbGl0ZS5jcmVhdGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IGRhdGFiYXNlLnNjaGVtYS5uYW1lICsgJy5kYicsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246ICdkZWZhdWx0J1xuICAgICAgICB9KS50aGVuKHNxbGl0ZU9iamVjdCA9PiB7XG4gICAgICAgICAgICBkYXRhYmFzZS5zcWxpdGVPYmplY3QgPSBzcWxpdGVPYmplY3Q7XG4gICAgICAgICAgICB0aGlzLmxvZ1NxbChzcWxpdGVPYmplY3QpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVQcm9taXNlcyA9IG1hcChkYXRhYmFzZS5zY2hlbWEuZW50aXRpZXMsIGVudGl0eVNjaGVtYSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gbmV3IExvY2FsREJTdG9yZSh0aGlzLmRldmljZUZpbGVTZXJ2aWNlLCBlbnRpdHlTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgc3FsaXRlT2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmNyZWF0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoc3RvcmVQcm9taXNlcykudGhlbihzdG9yZXMgPT4ge1xuICAgICAgICAgICAgICAgIGZvckVhY2goc3RvcmVzLCBzdG9yZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlLnN0b3Jlc1tzdG9yZS5lbnRpdHlTY2hlbWEuZW50aXR5TmFtZV0gPSBzdG9yZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YWJhc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBhcHAgaXMgb3BlbmVkIGZvciBmaXJzdCB0aW1lICBhZnRlciBhIGZyZXNoIGluc3RhbGwgb3IgdXBkYXRlLCB0aGVuIG9sZCBkYXRhYmFzZXMgYXJlIHJlbW92ZWQgYW5kXG4gICAgICogbmV3IGRhdGFiYXNlcyBhcmUgY3JlYXRlZCB1c2luZyBidW5kbGVkIGRhdGFiYXNlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHsqfSBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIHRydWUsIGlmIHRoZSBkYXRhYmFzZXMgYXJlIG5ld2x5IGNyZWF0ZWQgb3IgcmVzb2x2ZWQgd2l0aCBmYWxzZVxuICAgICAqIGlmIGV4aXN0aW5nIGRhdGFiYXNlcyBhcmUgYmVpbmcgdXNlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFVwRGF0YWJhc2VzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VTZXJ2aWNlLmdldEFwcEJ1aWxkVGltZSgpXG4gICAgICAgICAgICAudGhlbigoYnVpbGRUaW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGJJbmZvID0gdGhpcy5kZXZpY2VTZXJ2aWNlLmdldEVudHJ5KCdkYXRhYmFzZScpIHx8IHt9O1xuICAgICAgICAgICAgICAgIGlmICghZGJJbmZvLmxhc3RCdWlsZFRpbWUgfHwgZGJJbmZvLmxhc3RCdWlsZFRpbWUgIT09IGJ1aWxkVGltZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbkFuZENvcHlEYXRhYmFzZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiSW5mby5sYXN0QnVpbGRUaW1lID0gYnVpbGRUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRldmljZVNlcnZpY2Uuc3RvcmVFbnRyeSgnZGF0YWJhc2UnLCBkYkluZm8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
855
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGItbWFuYWdlbWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9iaWxlL29mZmxpbmUvc3JjL3NlcnZpY2VzL2xvY2FsLWRiLW1hbmFnZW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBZ0IsTUFBTSxxQ0FBcUMsQ0FBQztBQUUzRSxPQUFPLEVBQ0gsUUFBUSxFQUNSLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsV0FBVyxFQUNYLFNBQVMsRUFDVCxLQUFLLEVBQ0wsSUFBSSxFQUNKLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUE4QixRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM1RixPQUFPLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixPQUFPLEVBQ1AsT0FBTyxFQUNQLFdBQVcsRUFDWCxHQUFHLEVBQ0gsR0FBRyxF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RkFDbEIsd0JBQXdCO2NBRHBDLFVBQVU7ZUFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcFZlcnNpb24gfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvYXBwLXZlcnNpb24vbmd4JztcbmltcG9ydCB7IEZpbGUgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvZmlsZS9uZ3gnO1xuaW1wb3J0IHsgU1FMaXRlLCBTUUxpdGVPYmplY3QgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvc3FsaXRlL25neCc7XG5cbmltcG9ydCB7XG4gICAgRGF0YVR5cGUsXG4gICAgREVGQVVMVF9GT1JNQVRTLFxuICAgIGV4ZWN1dGVQcm9taXNlQ2hhaW4sXG4gICAgZXh0cmFjdFR5cGUsXG4gICAgaXNBbmRyb2lkLFxuICAgIGlzSW9zLFxuICAgIG5vb3AsXG4gICAgdG9Qcm9taXNlLFxuICAgIHRyYW5zZm9ybUZpbGVVUklcbn0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgRGV2aWNlRmlsZVNlcnZpY2UsIERldmljZVNlcnZpY2UgfSBmcm9tICdAd20vbW9iaWxlL2NvcmUnO1xuaW1wb3J0IHsgU2VjdXJpdHlTZXJ2aWNlIH0gZnJvbSAnQHdtL3NlY3VyaXR5JztcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAd20vdmFyaWFibGVzJztcblxuaW1wb3J0IHsgTG9jYWxLZXlWYWx1ZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLWtleS12YWx1ZS5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsREJTdG9yZSB9IGZyb20gJy4uL21vZGVscy9sb2NhbC1kYi1zdG9yZSc7XG5pbXBvcnQgeyBlc2NhcGVOYW1lIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHsgQ29sdW1uSW5mbywgREJJbmZvLCBFbnRpdHlJbmZvLCBOYW1lZFF1ZXJ5SW5mbywgUHVsbFR5cGUgfSBmcm9tICcuLi9tb2RlbHMvY29uZmlnJztcbmltcG9ydCB7XG4gICAgY2hhaW4sXG4gICAgZmluZCxcbiAgICBmb3JFYWNoLFxuICAgIGlzRW1wdHksXG4gICAgaXNVbmRlZmluZWQsXG4gICAgbWFwLFxuICAgIG5vdyxcbiAgICBwYXJzZUludCxcbiAgICByZXBsYWNlLFxuICAgIHRvVXBwZXIsXG4gICAgdG9TdHJpbmcsXG4gICAgdmFsdWVzLFxuICAgIGlzQXJyYXksIGFzc2lnbkluXG59IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmRlY2xhcmUgY29uc3QgbW9tZW50O1xuZGVjbGFyZSBjb25zdCBjb3Jkb3ZhO1xuZGVjbGFyZSBjb25zdCBaZWVwO1xuXG5jb25zdCAgTkVYVF9JRF9DT1VOVCA9ICdsb2NhbERCU3RvcmUubmV4dElkQ291bnQnO1xuY29uc3QgTUVUQV9MT0NBVElPTiA9ICd3d3cvbWV0YWRhdGEvYXBwJztcbmNvbnN0IE9GRkxJTkVfV0FWRU1BS0VSX0RBVEFCQVNFX1NDSEVNQSA9IHtcbiAgICBuYW1lOiAnd2F2ZW1ha2VyJyxcbiAgICB2ZXJzaW9uOiAxLFxuICAgIGlzSW50ZXJuYWw6IHRydWUsXG4gICAgdGFibGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdrZXlfdmFsdWUnLFxuICAgICAgICAgICAgZW50aXR5TmFtZTogJ2tleS12YWx1ZScsXG4gICAgICAgICAgICBjb2x1bW5zOiBbe1xuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogJ2lkJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRvclR5cGUgOiAnZGF0YWJhc2VJZGVudGl0eScsXG4gICAgICAgICAgICAgICAgc3FsVHlwZSA6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IHRydWVcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6ICdrZXknLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdrZXknXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3ZhbHVlJyxcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6ICd2YWx1ZSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdvZmZsaW5lQ2hhbmdlTG9nJyxcbiAgICAgICAgICAgIGVudGl0eU5hbWU6ICdvZmZsaW5lQ2hhbmdlTG9nJyxcbiAgICAgICAgICAgIGNvbHVtbnM6IFt7XG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiAnaWQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdpZCcsXG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yVHlwZTogJ2RhdGFiYXNlSWRlbnRpdHknLFxuICAgICAgICAgICAgICAgIHNxbFR5cGU6ICdudW1iZXInLFxuICAgICAgICAgICAgICAgIHByaW1hcnlLZXk6IHRydWVcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2VydmljZScsXG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiAnc2VydmljZSdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnb3BlcmF0aW9uJyxcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6ICdvcGVyYXRpb24nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3BhcmFtcycsXG4gICAgICAgICAgICAgICAgZmllbGROYW1lOiAncGFyYW1zJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd0aW1lc3RhbXAnLFxuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogJ3RpbWVzdGFtcCdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGFzRXJyb3InLFxuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogJ2hhc0Vycm9yJ1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdlcnJvck1lc3NhZ2UnLFxuICAgICAgICAgICAgICAgIGZpZWxkTmFtZTogJ2Vycm9yTWVzc2FnZSdcbiAgICAgICAgICAgIH1dXG4gICAgICAgIH1cbiAgICBdXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbGxCYWNrIHtcbiAgICBvbkRiQ3JlYXRlPzogKGluZm86IGFueSkgPT4gYW55O1xuICAgIHBvc3RJbXBvcnQ/OiAoaW1wb3J0Rm9sZGVyUGF0aDogc3RyaW5nLCBtZXRhSW5mbzogYW55KSA9PiBhbnk7XG4gICAgcHJlRXhwb3J0PzogKGZvbGRlclRvRXhwb3J0RnVsbFBhdGg6IHN0cmluZywgbWV0YUluZm86IGFueSkgPT4gYW55O1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBMb2NhbERCTWFuYWdlbWVudFNlcnZpY2Uge1xuICAgIHN0YXRpYyByZWFkb25seSBTRVJWSUNFX05BTUUgPSAnTG9jYWxEQk1hbmFnZW1lbnRTZXJ2aWNlJztcbiAgICBwcml2YXRlIGNhbGxiYWNrczogQ2FsbEJhY2tbXSA9IFtdO1xuICAgIHByaXZhdGUgZGJJbnN0YWxsRGlyZWN0b3J5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYkluc3RhbGxEaXJlY3RvcnlOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkYkluc3RhbGxQYXJlbnREaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIGRhdGFiYXNlczogTWFwPHN0cmluZywgREJJbmZvPjtcbiAgICBwcml2YXRlIF9sb2dTcWwgPSBmYWxzZTtcbiAgICBwdWJsaWMgbmV4dElkID0gMTAwMDAwMDAwMDAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3lzdGVtUHJvcGVydGllcyA9IHtcbiAgICAgICAgJ1VTRVJfSUQnIDoge1xuICAgICAgICAgICAgJ25hbWUnIDogJ1VTRVJfSUQnLFxuICAgICAgICAgICAgJ3ZhbHVlJyA6ICgpID0+IHRoaXMuc2VjdXJpdHlTZXJ2aWNlLmdldExvZ2dlZEluVXNlcigpLnRoZW4oIHVzZXJJbmZvID0+IHVzZXJJbmZvLnVzZXJJZClcbiAgICAgICAgfSxcbiAgICAgICAgJ1VTRVJfTkFNRScgOiB7XG4gICAgICAgICAgICAnbmFtZScgOiAnVVNFUl9OQU1FJyxcbiAgICAgICAgICAgICd2YWx1ZScgOiAoKSA9PiB0aGlzLnNlY3VyaXR5U2VydmljZS5nZXRMb2dnZWRJblVzZXIoKS50aGVuKCB1c2VySW5mbyA9PiB1c2VySW5mby51c2VyTmFtZSlcbiAgICAgICAgfSxcbiAgICAgICAgJ0RBVEVfVElNRScgOiB7XG4gICAgICAgICAgICAnbmFtZScgOiAnREFURV9USU1FJyxcbiAgICAgICAgICAgICd2YWx1ZScgOiAoKSA9PiBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tRERUaGg6bW06c3MnKVxuICAgICAgICB9LFxuICAgICAgICAnREFURScgOiB7XG4gICAgICAgICAgICAnbmFtZScgOiAnQ1VSUkVOVF9EQVRFJyxcbiAgICAgICAgICAgICd2YWx1ZScgOiAoKSA9PiBtb21lbnQoKS5mb3JtYXQoJ1lZWVktTU0tREQnKVxuICAgICAgICB9LFxuICAgICAgICAnVElNRScgOiB7XG4gICAgICAgICAgICAnbmFtZScgOiAnVElNRScsXG4gICAgICAgICAgICAndmFsdWUnIDogKCkgPT4gbW9tZW50KCkuZm9ybWF0KCdoaDptbTpzcycpXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYXBwVmVyc2lvbjogQXBwVmVyc2lvbixcbiAgICAgICAgcHJpdmF0ZSBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRldmljZUZpbGVTZXJ2aWNlOiBEZXZpY2VGaWxlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmaWxlOiBGaWxlLFxuICAgICAgICBwcml2YXRlIGxvY2FsS2V5VmFsdWVTZXJ2aWNlOiBMb2NhbEtleVZhbHVlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzZWN1cml0eVNlcnZpY2U6IFNlY3VyaXR5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzcWxpdGU6IFNRTGl0ZVxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyBhbGwgZGF0YWJhc2VzLlxuICAgICAqXG4gICAgICogQHJldHVybnMge29iamVjdH0gYSBwcm9taXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgLy8gQmVmb3JlIGNsb3NpbmcgZGF0YWJhc2VzLCBnaXZlIHNvbWUgdGltZSBmb3IgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb25zIChpZiBhbnkpLlxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IGNsb3NlUHJvbWlzZXMgPSBtYXAodmFsdWVzKHRoaXMuZGF0YWJhc2VzKSwgZGIgPT4gZGIuc3FsaXRlT2JqZWN0LmNsb3NlKCkpO1xuICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKGNsb3NlUHJvbWlzZXMpLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgIH0sIDEwMDApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV4dElkQ291bnQoKSB7XG4gICAgICAgIHRoaXMubmV4dElkID0gdGhpcy5uZXh0SWQgKyAxO1xuICAgICAgICB0aGlzLmxvY2FsS2V5VmFsdWVTZXJ2aWNlLnB1dChORVhUX0lEX0NPVU5ULCB0aGlzLm5leHRJZCk7XG4gICAgICAgIHJldHVybiB0aGlzLm5leHRJZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIG5hbWVkIHF1ZXJ5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRiTmFtZSBuYW1lIG9mIGRhdGFiYXNlIG9uIHdoaWNoIHRoZSBuYW1lZCBxdWVyeSBoYXMgdG8gYmUgcnVuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5TmFtZSBuYW1lIG9mIHRoZSBxdWVyeSB0byBleGVjdXRlXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHBhcmFtcyBwYXJhbWV0ZXJzIHJlcXVpcmVkIGZvciBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBhIHByb21pc2UuXG4gICAgICovXG4gICAgcHVibGljIGV4ZWN1dGVOYW1lZFF1ZXJ5KGRiTmFtZTogc3RyaW5nLCBxdWVyeU5hbWU6IHN0cmluZywgcGFyYW1zOiBhbnkpIHtcbiAgICAgICAgbGV0IHF1ZXJ5RGF0YSwgcGFyYW1Qcm9taXNlcztcbiAgICAgICAgaWYgKCF0aGlzLmRhdGFiYXNlc1tkYk5hbWVdIHx8ICF0aGlzLmRhdGFiYXNlc1tkYk5hbWVdLnF1ZXJpZXNbcXVlcnlOYW1lXSkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGBRdWVyeSBieSBuYW1lICcgJHtxdWVyeU5hbWV9ICcgTm90IEZvdW5kYCk7XG4gICAgICAgIH1cbiAgICAgICAgcXVlcnlEYXRhID0gdGhpcy5kYXRhYmFzZXNbZGJOYW1lXS5xdWVyaWVzW3F1ZXJ5TmFtZV07XG4gICAgICAgIHBhcmFtUHJvbWlzZXMgPSBjaGFpbihxdWVyeURhdGEucGFyYW1zKVxuICAgICAgICAgICAgLmZpbHRlcihwID0+IHAudmFyaWFibGVUeXBlICE9PSAnUFJPTVBUJylcbiAgICAgICAgICAgIC5mb3JFYWNoKHAgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSB0aGlzLnN5c3RlbVByb3BlcnRpZXNbcC52YXJpYWJsZVR5cGVdLnZhbHVlKHAubmFtZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9Qcm9taXNlKHBhcmFtVmFsdWUpLnRoZW4odiA9PiBwYXJhbXNbcC5uYW1lXSA9IHYpO1xuICAgICAgICAgICAgfSkudmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHBhcmFtUHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcGFyYW1zID0gbWFwKHF1ZXJ5RGF0YS5wYXJhbXMsIHAgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFNxbGl0ZSB3aWxsIGFjY2VwdCBEYXRlVGltZSB2YWx1ZSBhcyBiZWxvdyBmb3JtYXQuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXNbcC5uYW1lXSAhPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgJiYgKHAudHlwZSA9PT0gRGF0YVR5cGUuREFURVRJTUUgfHwgcC50eXBlID09PSBEYXRhVHlwZS5MT0NBTERBVEVUSU1FKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZShwYXJhbXNbcC5uYW1lXSwgcC50eXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gc3FsaXRlIGFjY2VwdHMgdGhlIGJvb2wgdmFsIGFzIDEsMCBoZW5jZSBjb252ZXJ0IHRoZSBib29sZWFuIHZhbHVlIHRvIG51bWJlclxuICAgICAgICAgICAgICAgIGlmIChwLnR5cGUgPT09IERhdGFUeXBlLkJPT0xFQU4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEJvb2xUb0ludChwYXJhbXNbcC5uYW1lXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbXNbcC5uYW1lXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVNRTFF1ZXJ5KGRiTmFtZSwgcXVlcnlEYXRhLnF1ZXJ5LCBwYXJhbXMpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0Um93LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmVlZFRyYW5zZm9ybTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KHJlc3VsdC5yb3dzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RSb3cgPSByZXN1bHQucm93c1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRUcmFuc2Zvcm0gPSBmaW5kKHF1ZXJ5RGF0YS5yZXNwb25zZS5wcm9wZXJ0aWVzLCBwID0+ICFmaXJzdFJvdy5oYXNPd25Qcm9wZXJ0eShwLmZpZWxkTmFtZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChuZWVkVHJhbnNmb3JtKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yb3dzID0gbWFwKHJlc3VsdC5yb3dzLCByb3cgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFJvdyA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93V2l0aFVwcGVyS2V5cyA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRvIG1ha2Ugc2VhcmNoIGZvciBkYXRhIGFzIGNhc2UtaW5zZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaChyb3csICh2LCBrKSA9PiByb3dXaXRoVXBwZXJLZXlzW2sudG9VcHBlckNhc2UoKV0gPSB2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaChxdWVyeURhdGEucmVzcG9uc2UucHJvcGVydGllcywgcCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JtYXQgdGhlIHZhbHVlIGRlcGVuZGluZyBvbiB0aGUgdHlwZVJlZiBzcGVjaWZpZWQgaW4gcHJvcGVydGllcy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb3BUeXBlID0gZXh0cmFjdFR5cGUocC5maWVsZFR5cGUudHlwZVJlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JtYXRWYWx1ZSA9IERFRkFVTFRfRk9STUFUU1t0b1VwcGVyKHByb3BUeXBlKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFZhbCA9IHJvd1twLm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkVmFsICYmIHR5cGVvZiBmaWVsZFZhbCAhPT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocHJvcFR5cGUgPT09IERhdGFUeXBlLkRBVEVUSU1FIHx8IHByb3BUeXBlID09PSBEYXRhVHlwZS5MT0NBTERBVEVUSU1FIHx8IHByb3BUeXBlID09PSBEYXRhVHlwZS5EQVRFKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb21lbnQoZmllbGRWYWwpLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbcC5uYW1lXSA9IGZvcm1hdERhdGUoZmllbGRWYWwsIHByb3BUeXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vbWVudChmaWVsZFZhbCwgJ0hIOm1tJykuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBpbiBISDptbTpzcyBmb3JtYXQsIGl0IHJldHVybnMgYSB3cm9uZyBkYXRlLiBTbyBhcHBlbmQgdGhlIGRhdGUgdG8gdGhlIGdpdmVuIHZhbHVlIHRvIGdldCBkYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1twLm5hbWVdID0gbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREJykgKyAnVCcgKyBmaWVsZFZhbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvcFR5cGUgPT09IERhdGFUeXBlLkJPT0xFQU4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dbcC5uYW1lXSA9IHRoaXMuY29udmVydEludFRvQm9vbChmaWVsZFZhbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dXaXRoVXBwZXJLZXlzW3AubmFtZUluVXBwZXJDYXNlXSA9IHJvd1twLm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSb3dbcC5uYW1lXSA9IHJvd1twLm5hbWVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtZWRSb3dbcC5maWVsZE5hbWVdID0gcm93W3AuZmllbGROYW1lXSB8fCByb3dXaXRoVXBwZXJLZXlzW3AubmFtZUluVXBwZXJDYXNlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZFJvdztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZXhwb3J0IHRoZSBkYXRhYmFzZXMgaW4gYSB6aXAgZm9ybWF0LlxuICAgICAqXG4gICAgICogQHJldHVybnMge29iamVjdH0gYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiB6aXAgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhwb3J0REIoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9sZGVyVG9FeHBvcnQgPSAnb2ZmbGluZV90ZW1wXycgKyBub3coKSxcbiAgICAgICAgICAgICAgICBmb2xkZXJUb0V4cG9ydEZ1bGxQYXRoID0gY29yZG92YS5maWxlLmNhY2hlRGlyZWN0b3J5ICsgZm9sZGVyVG9FeHBvcnQgKyAnLycsXG4gICAgICAgICAgICAgICAgemlwRmlsZU5hbWUgPSAnX29mZmxpbmVfZGF0YS56aXAnLFxuICAgICAgICAgICAgICAgIG1ldGFJbmZvID0ge1xuICAgICAgICAgICAgICAgICAgICBhcHA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIE9TOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgY3JlYXRlZE9uOiAwXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGxldCB6aXBEaXJlY3Rvcnk7XG4gICAgICAgICAgICBpZiAoaXNJb3MoKSkge1xuICAgICAgICAgICAgICAgIC8vIEluIElPUywgc2F2ZSB6aXAgdG8gZG9jdW1lbnRzIGRpcmVjdG9yeSBzbyB0aGF0IHVzZXIgY2FuIGV4cG9ydCB0aGUgZmlsZSBmcm9tIElPUyBkZXZpY2VzIHVzaW5nIGlUVU5FUy5cbiAgICAgICAgICAgICAgICB6aXBEaXJlY3RvcnkgPSBjb3Jkb3ZhLmZpbGUuZG9jdW1lbnRzRGlyZWN0b3J5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBBbmRyb2lkLCBzYXZlIHppcCB0byBkb3dubG9hZCBkaXJlY3RvcnkuXG4gICAgICAgICAgICAgICAgemlwRGlyZWN0b3J5ID0gY29yZG92YS5maWxlLmV4dGVybmFsUm9vdERpcmVjdG9yeSArICdEb3dubG9hZC8nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZvbGRlciB0byBjb3B5IGFsbCB0aGUgY29udGVudCB0byBleHBvcnRcbiAgICAgICAgICAgIHRoaXMuZmlsZS5jcmVhdGVEaXIoY29yZG92YS5maWxlLmNhY2hlRGlyZWN0b3J5LCBmb2xkZXJUb0V4cG9ydCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBDb3B5IGRhdGFiYXNlcyB0byB0ZW1wb3JhcnkgZm9sZGVyIGZvciBleHBvcnRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZS5jb3B5RGlyKHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5LCB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeU5hbWUsIGZvbGRlclRvRXhwb3J0RnVsbFBhdGgsICdkYXRhYmFzZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXBhcmUgbWV0YSBpbmZvIHRvIGlkZW50aWZ5IHRoZSB6aXAgYW5kIG90aGVyIGluZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBcHBJbmZvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKGFwcEluZm8gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFJbmZvLmFwcCA9IChhcHBJbmZvIGFzIGFueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW9zKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YUluZm8uT1MgPSAnSU9TJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQW5kcm9pZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFJbmZvLk9TID0gJ0FORFJPSUQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhSW5mby5jcmVhdGVkT24gPSBub3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWV0YUluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IGV4ZWN1dGVQcm9taXNlQ2hhaW4odGhpcy5nZXRDYWxsYmFja3NGb3IoJ3ByZUV4cG9ydCcpLCBbZm9sZGVyVG9FeHBvcnRGdWxsUGF0aCwgbWV0YUluZm9dKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXcml0ZSBtZXRhIGRhdGEgdG8gTUVUQS5qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZS53cml0ZUZpbGUoZm9sZGVyVG9FeHBvcnRGdWxsUGF0aCwgJ01FVEEuanNvbicsIEpTT04uc3RyaW5naWZ5KG1ldGFJbmZvKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUHJlcGFyZSBuYW1lIHRvIHVzZSBmb3IgdGhlIHppcC5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGFwcE5hbWUgPSBtZXRhSW5mby5hcHAubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYXBwTmFtZSA9IGFwcE5hbWUucmVwbGFjZSgvXFxzKy9nLCAnXycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VGaWxlU2VydmljZS5uZXdGaWxlTmFtZSh6aXBEaXJlY3RvcnksIGFwcE5hbWUgKyB6aXBGaWxlTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGZpbGVOYW1lID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBaaXAgdGhlIHRlbXBvcmFyeSBmb2xkZXIgZm9yIGV4cG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocnMsIHJlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFplZXAuemlwKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gOiBmb2xkZXJUb0V4cG9ydEZ1bGxQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gICA6IHppcERpcmVjdG9yeSArIGZpbGVOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICgpID0+IHJzKHppcERpcmVjdG9yeSArIGZpbGVOYW1lKSwgcmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbihyZXNvbHZlLCByZWplY3QpXG4gICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGVtcG9yYXJ5IGZvbGRlciBmb3IgZXhwb3J0XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRldmljZUZpbGVTZXJ2aWNlLnJlbW92ZURpcihjb3Jkb3ZhLmZpbGUuY2FjaGVEaXJlY3RvcnkgKyBmb2xkZXJUb0V4cG9ydCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICByZXR1cm5zIHN0b3JlIGJvdW5kIHRvIHRoZSBkYXRhTW9kZWxOYW1lIGFuZCBlbnRpdHlOYW1lLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGFNb2RlbE5hbWVcbiAgICAgKiBAcGFyYW0gZW50aXR5TmFtZVxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdG9yZShkYXRhTW9kZWxOYW1lOiBzdHJpbmcsIGVudGl0eU5hbWU6IHN0cmluZyk6IFByb21pc2U8TG9jYWxEQlN0b3JlPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhYmFzZXNbZGF0YU1vZGVsTmFtZV0pIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZGF0YWJhc2VzW2RhdGFNb2RlbE5hbWVdLnN0b3Jlc1tlbnRpdHlOYW1lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QoYHN0b3JlIHdpdGggbmFtZScke2VudGl0eU5hbWV9JyBpbiBkYXRhbW9kZWwgJyR7ZGF0YU1vZGVsTmFtZX0nIGlzIG5vdCBmb3VuZGApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVwbGFjZSB0aGUgZGF0YWJhc2VzIHdpdGggdGhlIGZpbGVzIHByb3ZpZGVkIGluIHppcC4gSWYgaW1wb3J0IGdldHMgZmFpbGVkLFxuICAgICAqIHRoZW4gYXBwIHJldmVydHMgYmFjayB0byB1c2Ugb2xkIGRhdGFiYXNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB6aXBQYXRoIGxvY2F0aW9uIG9mIHRoZSB6aXAgZmlsZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJldmVydElmRmFpbHMgSWYgdHJ1ZSwgdGhlbiBhIGJhY2t1cCBpcyBjcmVhdGVkIGFuZCB3aGVuIGltcG9ydCBmYWlscywgYmFja3VwIGlzIHJldmVydGVkIGJhY2suXG4gICAgICogQHJldHVybnMge29iamVjdH0gYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiB6aXAgaXMgY3JlYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW1wb3J0REIoemlwUGF0aDogc3RyaW5nLCByZXZlcnRJZkZhaWxzOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbXBvcnRGb2xkZXIgPSAnb2ZmbGluZV90ZW1wXycgKyBub3coKSxcbiAgICAgICAgICAgICAgICBpbXBvcnRGb2xkZXJGdWxsUGF0aCA9IGNvcmRvdmEuZmlsZS5jYWNoZURpcmVjdG9yeSArIGltcG9ydEZvbGRlciArICcvJztcbiAgICAgICAgICAgIGxldCB6aXBNZXRhO1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZvbGRlciB0byB1bnppcCB0aGUgY29udGVudHMgb2YgdGhlIHppcC5cbiAgICAgICAgICAgIHRoaXMuZmlsZS5jcmVhdGVEaXIoY29yZG92YS5maWxlLmNhY2hlRGlyZWN0b3J5LCBpbXBvcnRGb2xkZXIsIGZhbHNlKVxuICAgICAgICAgICAgICAgIC50aGVuKCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocnMsIHJlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBVbnppcCB0byB0ZW1wb3JhcnkgbG9jYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIFplZXAudW56aXAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb206IHppcFBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGltcG9ydEZvbGRlckZ1bGxQYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBycywgcmUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAqIHJlYWQgbWV0YSBkYXRhIGFuZCBhbGxvdyBpbXBvcnQgb25seSBwYWNrYWdlIG5hbWUgb2YgdGhlIGFwcCBmcm9tIHdoaWNoIHRoaXMgemlwIGlzIGNyZWF0ZWRcbiAgICAgICAgICAgICAgICAgKiBhbmQgdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGlzIGFwcCBhcmUgc2FtZS5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWxlLnJlYWRBc1RleHQoaW1wb3J0Rm9sZGVyRnVsbFBhdGgsICdNRVRBLmpzb24nKVxuICAgICAgICAgICAgICAgICAgICAudGhlbih0ZXh0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgemlwTWV0YSA9IEpTT04ucGFyc2UodGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFwcEluZm8oKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFwcEluZm8gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXppcE1ldGEuYXBwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ21ldGEgaW5mb3JtYXRpb24gaXMgbm90IGZvdW5kIGluIHppcCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh6aXBNZXRhLmFwcC5wYWNrYWdlTmFtZSAhPT0gYXBwSW5mby5wYWNrYWdlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCdkYXRhYmFzZSB6aXAgb2YgYXBwIHdpdGggc2FtZSBwYWNrYWdlIG5hbWUgY2FuIG9ubHkgYmUgaW1wb3J0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGJhY2t1cFppcDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9zZSgpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnRJZkZhaWxzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGJhY2t1cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmV4cG9ydERCKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4ocGF0aCA9PiBiYWNrdXBaaXAgPSBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgZXhpc3RpbmcgZGF0YWJhc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VGaWxlU2VydmljZS5yZW1vdmVEaXIodGhpcy5kYkluc3RhbGxEaXJlY3RvcnkpO1xuICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcHkgaW1wb3J0ZWQgZGF0YWJhc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maWxlLmNvcHlEaXIoaW1wb3J0Rm9sZGVyRnVsbFBhdGgsICdkYXRhYmFzZXMnLCB0aGlzLmRiSW5zdGFsbFBhcmVudERpcmVjdG9yeSwgdGhpcy5kYkluc3RhbGxEaXJlY3RvcnlOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyByZWxvYWQgZGF0YWJhc2VzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFiYXNlcyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkRGF0YWJhc2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gZXhlY3V0ZVByb21pc2VDaGFpbih0aGlzLmdldENhbGxiYWNrc0ZvcigncG9zdEltcG9ydCcpLCBbaW1wb3J0Rm9sZGVyRnVsbFBhdGgsIHppcE1ldGFdKSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2t1cFppcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRldmljZUZpbGVTZXJ2aWNlLnJlbW92ZUZpbGUoYmFja3VwWmlwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgKHJlYXNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2t1cFppcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmltcG9ydERCKGJhY2t1cFppcCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV2aWNlRmlsZVNlcnZpY2UucmVtb3ZlRmlsZShiYWNrdXBaaXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbihyZXNvbHZlLCByZWplY3QpXG4gICAgICAgICAgICAuY2F0Y2gobm9vcClcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VGaWxlU2VydmljZS5yZW1vdmVEaXIoY29yZG92YS5maWxlLmNhY2hlRGlyZWN0b3J5ICsgaW1wb3J0Rm9sZGVyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YU1vZGVsTmFtZSBOYW1lIG9mIHRoZSBkYXRhIG1vZGVsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eU5hbWUgTmFtZSBvZiB0aGUgZW50aXR5XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdGlvbiBOYW1lIG9mIHRoZSBvcGVyYXRpb24gKFJFQUQsIElOU0VSVCwgVVBEQVRFLCBERUxFVEUpXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IHJldHVybnMgdHJ1ZSwgaWYgdGhlIGdpdmVuIG9wZXJhdGlvbiBjYW4gYmUgcGVyZm9ybWVkIGFzIHBlciBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBpc09wZXJhdGlvbkFsbG93ZWQoZGF0YU1vZGVsTmFtZTogc3RyaW5nLCBlbnRpdHlOYW1lOiBzdHJpbmcsIG9wZXJhdGlvbjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0b3JlKGRhdGFNb2RlbE5hbWUsIGVudGl0eU5hbWUpLnRoZW4oIHN0b3JlID0+IHtcbiAgICAgICAgICAgIGlmICghc3RvcmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uID09PSAnUkVBRCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmUuZW50aXR5U2NoZW1hLnB1c2hDb25maWcucmVhZEVuYWJsZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3BlcmF0aW9uID09PSAnSU5TRVJUJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5lbnRpdHlTY2hlbWEucHVzaENvbmZpZy5pbnNlcnRFbmFibGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJ1VQREFURScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmUuZW50aXR5U2NoZW1hLnB1c2hDb25maWcudXBkYXRlRW5hYmxlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcGVyYXRpb24gPT09ICdERUxFVEUnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmVudGl0eVNjaGVtYS5wdXNoQ29uZmlnLmRlbGV0ZUVuYWJsZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWREYXRhYmFzZXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgbGV0IG5ld0RhdGFiYXNlc0NyZWF0ZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuZGF0YWJhc2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuZGF0YWJhc2VzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChpc0lvcygpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYkluc3RhbGxEaXJlY3RvcnlOYW1lID0gJ0xvY2FsRGF0YWJhc2UnO1xuICAgICAgICAgICAgICAgIHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5ID0gY29yZG92YS5maWxlLmFwcGxpY2F0aW9uU3RvcmFnZURpcmVjdG9yeSArICAnTGlicmFyeS8nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeU5hbWUgPSAnZGF0YWJhc2VzJztcbiAgICAgICAgICAgICAgICB0aGlzLmRiSW5zdGFsbFBhcmVudERpcmVjdG9yeSA9IGNvcmRvdmEuZmlsZS5hcHBsaWNhdGlvblN0b3JhZ2VEaXJlY3Rvcnk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeSA9IHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5ICsgdGhpcy5kYkluc3RhbGxEaXJlY3RvcnlOYW1lO1xuXG4gICAgICAgICAgICB0aGlzLmRhdGFiYXNlcyA9IG5ldyBNYXA8c3RyaW5nLCBEQkluZm8+KCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRVcERhdGFiYXNlcygpXG4gICAgICAgICAgICAgICAgLnRoZW4oIGZsYWcgPT4gbmV3RGF0YWJhc2VzQ3JlYXRlZCA9IGZsYWcpXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5sb2FkREJTY2hlbWFzKCkpXG4gICAgICAgICAgICAgICAgLnRoZW4obWV0YWRhdGEgPT4gdGhpcy5sb2FkTmFtZWRRdWVyaWVzKG1ldGFkYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihtZXRhZGF0YSA9PiB0aGlzLmxvYWRPZmZsaW5lQ29uZmlnKG1ldGFkYXRhKSlcbiAgICAgICAgICAgICAgICAudGhlbihtZXRhZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChtYXAobWV0YWRhdGEsIGRiTWV0YWRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbkRhdGFiYXNlKGRiTWV0YWRhdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oZGF0YWJhc2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFiYXNlc1tkYk1ldGFkYXRhLnNjaGVtYS5uYW1lXSA9IGRhdGFiYXNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFN0b3JlKCd3YXZlbWFrZXInLCAna2V5LXZhbHVlJykudGhlbiggc3RvcmUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2NhbEtleVZhbHVlU2VydmljZS5pbml0KHN0b3JlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsS2V5VmFsdWVTZXJ2aWNlLmdldChORVhUX0lEX0NPVU5UKS50aGVuKHZhbCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHRJZCA9IHZhbCB8fCB0aGlzLm5leHRJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0RhdGFiYXNlc0NyZWF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vcm1hbGl6ZURhdGEoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuZGlzYWJsZUZvcmVpZ25LZXlzKCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5kZXZpY2VTZXJ2aWNlLmdldEFwcEJ1aWxkVGltZSgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50aGVuKGRiU2VlZENyZWF0aW9uVGltZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBleGVjdXRlUHJvbWlzZUNoYWluKG1hcCh0aGlzLmNhbGxiYWNrcywgJ29uRGJDcmVhdGUnKSwgW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZXMnIDogdGhpcy5kYXRhYmFzZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGJDcmVhdGVkT24nOiBub3coKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYlNlZWRDcmVhdGVkT24nIDogZGJTZWVkQ3JlYXRpb25UaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHRoaXMuZGF0YWJhc2VzKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFiYXNlcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdXNpbmcgdGhpcyBmdW5jdGlvbiBvbmUgY2FuIGxpc3RlbiBldmVudHMgc3VjaCBhcyBvbkRiQ3JlYXRlLCAncHJlRXhwb3J0JyBhbmQgJ3Bvc3RJbXBvcnQnLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IGxpc3RlbmVyIGFuIG9iamVjdCB3aXRoIGZ1bmN0aW9ucyBtYXBwZWQgdG8gZXZlbnQgbmFtZXMuXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyQ2FsbGJhY2sobGlzdGVuZXI6IENhbGxCYWNrKSB7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tzLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRMb2dTUWwoZmxhZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9sb2dTcWwgPSBmbGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYW55IGV4aXN0aW5nIGRhdGFiYXNlcyAoZXhjZXB0IHdhdmVtYWtlciBkYikgYW5kIGNvcGllcyB0aGUgZGF0YWJhc2VzIHRoYXQgYXJlIHBhY2thZ2VkIHdpdGggdGhlIGFwcC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHByaXZhdGUgY2xlYW5BbmRDb3B5RGF0YWJhc2VzKCk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGRiU2VlZEZvbGRlciA9IGNvcmRvdmEuZmlsZS5hcHBsaWNhdGlvbkRpcmVjdG9yeSArIE1FVEFfTE9DQVRJT047XG4gICAgICAgIHJldHVybiB0aGlzLmZpbGUuY3JlYXRlRGlyKHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5LCB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeU5hbWUsIGZhbHNlKVxuICAgICAgICAgICAgLmNhdGNoKG5vb3ApXG4gICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLmRldmljZUZpbGVTZXJ2aWNlLmxpc3RGaWxlcyh0aGlzLmRiSW5zdGFsbERpcmVjdG9yeSwgLy4rXFwuZGIkLykpXG4gICAgICAgICAgICAudGhlbihmaWxlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGZpbGVzLm1hcChmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmWyduYW1lJ10gIT09ICd3YXZlbWFrZXIuZGInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmlsZS5yZW1vdmVGaWxlKHRoaXMuZGJJbnN0YWxsRGlyZWN0b3J5LCBmWyduYW1lJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKCAoKSA9PiB0aGlzLmRldmljZUZpbGVTZXJ2aWNlLmxpc3RGaWxlcyhkYlNlZWRGb2xkZXIsIC8uK1xcLmRiJC8pKVxuICAgICAgICAgICAgLnRoZW4oZmlsZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbGUuY3JlYXRlRGlyKHRoaXMuZGJJbnN0YWxsUGFyZW50RGlyZWN0b3J5LCB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeU5hbWUsIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKG5vb3ApXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiBQcm9taXNlLmFsbChmaWxlcy5tYXAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPT4gdGhpcy5maWxlLmNvcHlGaWxlKGRiU2VlZEZvbGRlciwgZlsnbmFtZSddLCB0aGlzLmRiSW5zdGFsbERpcmVjdG9yeSwgZlsnbmFtZSddKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFBpY2tzIGVzc2VudGlhbCBkZXRhaWxzIGZyb20gdGhlIGdpdmVuIHNjaGVtYS5cbiAgICBwcml2YXRlIGNvbXBhY3RFbnRpdHlTY2hlbWEoc2NoZW1hLCBlbnRpdHksIHRyYW5zZm9ybWVkU2NoZW1hcyk6IEVudGl0eUluZm8ge1xuICAgICAgICBjb25zdCByZXFFbnRpdHkgPSB0cmFuc2Zvcm1lZFNjaGVtYXNbZW50aXR5WydlbnRpdHlOYW1lJ11dIGFzIEVudGl0eUluZm87XG4gICAgICAgIHJlcUVudGl0eS5lbnRpdHlOYW1lID0gZW50aXR5WydlbnRpdHlOYW1lJ107XG4gICAgICAgIHJlcUVudGl0eS5uYW1lID0gZW50aXR5WyduYW1lJ107XG4gICAgICAgIHJlcUVudGl0eS5jb2x1bW5zID0gW107XG4gICAgICAgIGVudGl0eS5jb2x1bW5zLmZvckVhY2goY29sID0+IHtcbiAgICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSBjb2wuY29sdW1uVmFsdWUgPyBjb2wuY29sdW1uVmFsdWUuZGVmYXVsdFZhbHVlIDogJyc7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gY29sLnNxbFR5cGU7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ251bWJlcicgJiYgIWNvbC5wcmltYXJ5S2V5KSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gaXNFbXB0eShkZWZhdWx0VmFsdWUpID8gbnVsbCA6IHBhcnNlSW50KGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGlzRW1wdHkoZGVmYXVsdFZhbHVlKSA/IG51bGwgOiAoZGVmYXVsdFZhbHVlID09PSAndHJ1ZScgPyAxIDogMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGlzRW1wdHkoZGVmYXVsdFZhbHVlKSA/IG51bGwgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXFFbnRpdHkuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBjb2xbJ25hbWUnXSxcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IGNvbFsnZmllbGROYW1lJ10sXG4gICAgICAgICAgICAgICAgZ2VuZXJhdG9yVHlwZTogY29sWydnZW5lcmF0b3JUeXBlJ10sXG4gICAgICAgICAgICAgICAgc3FsVHlwZTogY29sWydzcWxUeXBlJ10sXG4gICAgICAgICAgICAgICAgcHJpbWFyeUtleTogY29sWydwcmltYXJ5S2V5J10sXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JFYWNoKGVudGl0eS5yZWxhdGlvbnMsIHIgPT4ge1xuICAgICAgICAgICAgbGV0IHRhcmdldEVudGl0eVNjaGVtYSwgdGFyZ2V0RW50aXR5LCBjb2wsIHNvdXJjZUNvbHVtbiwgbWFwcGluZztcbiAgICAgICAgICAgIGlmIChyLmNhcmRpbmFsaXR5ID09PSAnTWFueVRvT25lJyB8fCByLmNhcmRpbmFsaXR5ID09PSAnT25lVG9PbmUnKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0RW50aXR5ID0gZmluZChzY2hlbWEudGFibGVzLCB0ID0+IHQubmFtZSA9PT0gci50YXJnZXRUYWJsZSk7XG4gICAgICAgICAgICAgICAgbWFwcGluZyA9IHIubWFwcGluZ3NbMF07XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldEVudGl0eSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbnRpdHkgPSB0YXJnZXRFbnRpdHkuZW50aXR5TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlQ29sdW1uID0gbWFwcGluZy5zb3VyY2VDb2x1bW47XG4gICAgICAgICAgICAgICAgICAgIGNvbCA9IHJlcUVudGl0eS5jb2x1bW5zLmZpbmQoY29sdW1uID0+IGNvbHVtbi5uYW1lID09PSBzb3VyY2VDb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbnRpdHlTY2hlbWEgPSBzY2hlbWEudGFibGVzLmZpbmQodGFibGUgPT4gdGFibGUubmFtZSA9PT0gci50YXJnZXRUYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvcmVpZ25SZWxhdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUZpZWxkTmFtZTogci5maWVsZE5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRFbnRpdHk6IHRhcmdldEVudGl0eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFRhYmxlOiByLnRhcmdldFRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29sdW1uOiBtYXBwaW5nLnRhcmdldENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFBhdGg6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU1hcHBlcjogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRGaWVsZE5hbWU6IHRhcmdldEVudGl0eVNjaGVtYS5jb2x1bW5zLmZpbmQoY29sdW1uID0+IGNvbHVtbi5uYW1lID09PSBtYXBwaW5nLnRhcmdldENvbHVtbikuZmllbGROYW1lXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGZvcmVpZ25SZWxhdGlvbi50YXJnZXRQYXRoID0gZm9yZWlnblJlbGF0aW9uLnNvdXJjZUZpZWxkTmFtZSArICcuJyArIGZvcmVpZ25SZWxhdGlvbi50YXJnZXRGaWVsZE5hbWU7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgZm9yZWlnblJlbGF0aW9uLmRhdGFNYXBwZXIgPSBjaGFpbih0YXJnZXRFbnRpdHlTY2hlbWEuY29sdW1ucylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5rZXlCeShjaGlsZENvbCA9PiBmb3JlaWduUmVsYXRpb24uc291cmNlRmllbGROYW1lICsgJy4nICsgY2hpbGRDb2wuZmllbGROYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgLm1hcFZhbHVlcyhjaGlsZENvbCA9PiBuZXcgQ29sdW1uSW5mbyhjaGlsZENvbC5uYW1lLCBjaGlsZENvbC5maWVsZE5hbWUpKS52YWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb2wuZm9yZWlnblJlbGF0aW9ucyA9IGNvbC5mb3JlaWduUmVsYXRpb25zIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb2wuZm9yZWlnblJlbGF0aW9ucy5wdXNoKGZvcmVpZ25SZWxhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcUVudGl0eTtcbiAgICB9XG5cbiAgICAvLyBMb2FkcyBuZWNlc3NhcnkgZGV0YWlscyBvZiBxdWVyaWVzXG4gICAgcHJpdmF0ZSBjb21wYWN0UXVlcmllcyhxdWVyaWVzQnlEQik6IE1hcDxzdHJpbmcsIE5hbWVkUXVlcnlJbmZvPiB7XG4gICAgICAgIGNvbnN0IHF1ZXJpZXMgPSBuZXcgTWFwPHN0cmluZywgTmFtZWRRdWVyeUluZm8+KCk7XG5cbiAgICAgICAgZm9yRWFjaChxdWVyaWVzQnlEQi5xdWVyaWVzLCBxdWVyeURhdGEgPT4ge1xuICAgICAgICAgICAgbGV0IHF1ZXJ5LCBwYXJhbXM7XG4gICAgICAgICAgICBpZiAocXVlcnlEYXRhLm5hdGl2ZVNxbCAmJiBxdWVyeURhdGEudHlwZSA9PT0gJ1NFTEVDVCcpIHtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IGlzRW1wdHkocXVlcnlEYXRhLm9mZmxpbmVRdWVyeVN0cmluZykgPyBxdWVyeURhdGEucXVlcnlTdHJpbmcgOiBxdWVyeURhdGEub2ZmbGluZVF1ZXJ5U3RyaW5nO1xuICAgICAgICAgICAgICAgIHBhcmFtcyA9IG1hcCh0aGlzLmV4dHJhY3RRdWVyeVBhcmFtcyhxdWVyeSksIHAgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbU9iaiA9IGZpbmQocXVlcnlEYXRhLnBhcmFtZXRlcnMsIHsnbmFtZSc6IHB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHBhcmFtT2JqLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBwYXJhbU9iai50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlOiBwYXJhbU9iai52YXJpYWJsZVR5cGVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuZm9yRWFjaChwID0+IHF1ZXJ5ID0gcmVwbGFjZShxdWVyeSwgJzonICsgcC5uYW1lLCAnPycpKTtcbiAgICAgICAgICAgICAgICBxdWVyaWVzW3F1ZXJ5RGF0YS5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogcXVlcnlEYXRhLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBtYXAocXVlcnlEYXRhLnJlc3BvbnNlLnByb3BlcnRpZXMsIHAgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAubmFtZUluVXBwZXJDYXNlID0gcC5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBxdWVyaWVzO1xuICAgIH1cblxuICAgIC8vIExvYWRzIG5lY2Vzc2FyeSBkZXRhaWxzIG9mIHJlbW90ZSBzY2hlbWFcbiAgICBwcml2YXRlIGNvbXBhY3RTY2hlbWEoc2NoZW1hKTogREJJbmZvIHtcbiAgICAgICAgY29uc3QgZGJJbmZvID0gbmV3IERCSW5mbygpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFNjaGVtYXMgPSBuZXcgTWFwPHN0cmluZywgRW50aXR5SW5mbz4oKTtcbiAgICAgICAgc2NoZW1hLnRhYmxlcy5mb3JFYWNoKGVudGl0eVNjaGVtYSA9PiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFNjaGVtYXNbZW50aXR5U2NoZW1hLmVudGl0eU5hbWVdID0ge307XG4gICAgICAgIH0pO1xuICAgICAgICBzY2hlbWEudGFibGVzLmZvckVhY2goZW50aXR5U2NoZW1hID0+IHtcbiAgICAgICAgICAgIHRoaXMuY29tcGFjdEVudGl0eVNjaGVtYShzY2hlbWEsIGVudGl0eVNjaGVtYSwgdHJhbnNmb3JtZWRTY2hlbWFzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRiSW5mby5zY2hlbWEubmFtZSA9IHNjaGVtYS5uYW1lO1xuICAgICAgICBkYkluZm8uc2NoZW1hLmlzSW50ZXJuYWwgPSBzY2hlbWEuaXNJbnRlcm5hbDtcbiAgICAgICAgZGJJbmZvLnNjaGVtYS5lbnRpdGllcyA9IHRyYW5zZm9ybWVkU2NoZW1hcztcbiAgICAgICAgcmV0dXJuIGRiSW5mbztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRCb29sVG9JbnQoYm9vbDogYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gdG9TdHJpbmcoYm9vbCkgPT09ICd0cnVlJyA/IDEgOiAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydEludFRvQm9vbChpbnQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gaW50ID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFR1cm5zIG9mZiBmb3JlaWduIGtleXNcbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGRpc2FibGVGb3JlaWduS2V5cygpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwobWFwKHRoaXMuZGF0YWJhc2VzLCBkYiA9PiB0aGlzLmV4ZWN1dGVTUUxRdWVyeShkYi5zY2hlbWEubmFtZSwgJ1BSQUdNQSBmb3JlaWduX2tleXMgPSBPRkYnKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIFNRTCBxdWVyeTtcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYk5hbWVcbiAgICAgKiBAcGFyYW0gc3FsXG4gICAgICogQHBhcmFtIHBhcmFtc1xuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHB1YmxpYyBleGVjdXRlU1FMUXVlcnkoZGJOYW1lLCBzcWwsIHBhcmFtcz86IGFueVtdLCBsb2dPdXRwdXQ/OiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGRiID0gdGhpcy5kYXRhYmFzZXNbZGJOYW1lXTtcbiAgICAgICAgaWYgKGRiKSB7XG4gICAgICAgICAgICByZXR1cm4gZGIuc3FsaXRlT2JqZWN0LmV4ZWN1dGVTcWwoc3FsLCBwYXJhbXMsIGxvZ091dHB1dClcbiAgICAgICAgICAgICAgICAudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gW10sXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzID0gcmVzdWx0LnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHJvd3MuaXRlbShpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdyb3dzQWZmZWN0ZWQnICA6IHJlc3VsdC5yb3dzQWZmZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAncm93cycgICAgICAgICAgOiBkYXRhXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGBObyBEYXRhYmFzZSB3aXRoIG5hbWUgJHtkYk5hbWV9IGZvdW5kYCk7XG4gICAgfVxuXG4gICAgLy8gZ2V0IHRoZSBwYXJhbXMgb2YgdGhlIHF1ZXJ5IG9yIHByb2NlZHVyZS5cbiAgICBwcml2YXRlIGV4dHJhY3RRdWVyeVBhcmFtcyhxdWVyeSkge1xuICAgICAgICBsZXQgcGFyYW1zLCBhbGlhc1BhcmFtcztcbiAgICAgICAgYWxpYXNQYXJhbXMgPSBxdWVyeS5tYXRjaCgvW15cIidcXHdcXFxcXTpcXHMqXFx3K1xccyovZykgfHwgW107XG4gICAgICAgIGlmIChhbGlhc1BhcmFtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IGFsaWFzUGFyYW1zLm1hcCh4ID0+ICgvWz18XFxXXS9nLnRlc3QoeCkpID8geC5yZXBsYWNlKC9cXFcvZywgJycpLnRyaW0oKSA6IHgudHJpbSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYXBwbGljYXRpb24gaW5mbyBzdWNoIGFzIHBhY2thZ2VOYW1lLCBhcHBOYW1lLCB2ZXJzaW9uTnVtYmVyLCB2ZXJzaW9uQ29kZS5cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEFwcEluZm8oKSB7XG4gICAgICAgIGNvbnN0IGFwcEluZm8gPSB7XG4gICAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICAgIHBhY2thZ2VOYW1lOiAnJyxcbiAgICAgICAgICAgIHZlcnNpb25OdW1iZXI6ICcnLFxuICAgICAgICAgICAgdmVyc2lvbkNvZGU6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwVmVyc2lvbi5nZXRQYWNrYWdlTmFtZSgpXG4gICAgICAgICAgICAudGhlbihwYWNrYWdlTmFtZSA9PiB7XG4gICAgICAgICAgICAgICAgYXBwSW5mby5wYWNrYWdlTmFtZSA9IHBhY2thZ2VOYW1lO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcFZlcnNpb24uZ2V0QXBwTmFtZSgpO1xuICAgICAgICAgICAgfSkudGhlbihhcHBOYW1lID0+IHtcbiAgICAgICAgICAgICAgICBhcHBJbmZvLm5hbWUgPSBhcHBOYW1lO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcFZlcnNpb24uZ2V0VmVyc2lvbk51bWJlcigpO1xuICAgICAgICAgICAgfSkudGhlbih2ZXJzaW9uTnVtYmVyID0+IHtcbiAgICAgICAgICAgICAgICBhcHBJbmZvLnZlcnNpb25OdW1iZXIgPSB2ZXJzaW9uTnVtYmVyO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcFZlcnNpb24uZ2V0VmVyc2lvbkNvZGUoKTtcbiAgICAgICAgICAgIH0pLnRoZW4odmVyc2lvbkNvZGUgPT4ge1xuICAgICAgICAgICAgICAgIGFwcEluZm8udmVyc2lvbkNvZGUgPSAodmVyc2lvbkNvZGUgYXMgYW55KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBwSW5mbztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Q2FsbGJhY2tzRm9yKGV2ZW50OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhbGxiYWNrcy5tYXAoYyA9PiB7XG4gICAgICAgICAgICBpZiAoY1tldmVudF0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY1tldmVudF0uYmluZChjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2hlcyBmb3IgdGhlIGZpbGVzIHdpdGggZ2l2ZW4gcmVnZXggaW4gJ3d3dy9tZXRhZGF0YS9hcHAnYW5kIHJldHVybnMgYW4gYXJyYXkgdGhhdCBjb250YWlucyB0aGUgSlNPTlxuICAgICAqIGNvbnRlbnQgcHJlc2VudCBpbiBlYWNoIGZpbGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZU5hbWVSZWdleCByZWdleCBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IgZmlsZXMuXG4gICAgICogQHJldHVybnMgeyp9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggYW4gYXJyYXlcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE1ldGFJbmZvKGZpbGVOYW1lUmVnZXg6IFJlZ0V4cCkge1xuICAgICAgICBjb25zdCBmb2xkZXIgPSBjb3Jkb3ZhLmZpbGUuYXBwbGljYXRpb25EaXJlY3RvcnkgKyBNRVRBX0xPQ0FUSU9OICsgJy8nO1xuICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VGaWxlU2VydmljZS5saXN0RmlsZXMoZm9sZGVyLCBmaWxlTmFtZVJlZ2V4KVxuICAgICAgICAgICAgLnRoZW4oZmlsZXMgPT4gUHJvbWlzZS5hbGwobWFwKGZpbGVzLCBmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvcmRvdmEgRmlsZSByZWFkZXIgaGFzIGJ1ZmZlciBpc3N1ZXMgd2l0aCBsYXJnZSBmaWxlcy5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvLCB1c2luZyBhamF4IHRvIHJldHJpZXZlIGxvY2FsIGpzb25cbiAgICAgICAgICAgICAgICAgICAgICAgICQuZ2V0SlNPTih0cmFuc2Zvcm1GaWxlVVJJKGZvbGRlcikgKyBmWyduYW1lJ10sIGRhdGEgPT4gcmVzb2x2ZShkYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUsIGlmIHRoZSBnaXZlbiBlbnRpdHkncyBkYXRhIGlzIGJ1bmRsZWQgYWxvbmcgd2l0aCBhcHBsaWNhdGlvbiBpbnN0YWxsZXIuXG4gICAgICogQHBhcmFtIGRhdGFNb2RlbE5hbWUgbmFtZSBvZiB0aGUgZGF0YSBtb2RlbFxuICAgICAqIEBwYXJhbSBlbnRpdHlOYW1lIG5hbWUgb2YgdGhlIGVudGl0eVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAgICovXG4gICAgcHVibGljIGlzQnVuZGxlZChkYXRhTW9kZWxOYW1lLCBlbnRpdHlOYW1lKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvcmUoZGF0YU1vZGVsTmFtZSwgZW50aXR5TmFtZSkudGhlbihzdG9yZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuZW50aXR5U2NoZW1hLnB1bGxDb25maWcucHVsbFR5cGUgPT09IFB1bGxUeXBlLkJVTkRMRUQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWRzIGxvY2FsIGRhdGFiYXNlIHNjaGVtYXMgZnJvbSAqX2RhdGFfbW9kZWwuanNvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHsqfSBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIG1ldGFkYXRhLlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZERCU2NoZW1hcygpOiBQcm9taXNlPE1hcDxzdHJpbmcsIERCSW5mbz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWV0YUluZm8oLy4rX2RhdGFNb2RlbFxcLmpzb24kLylcbiAgICAgICAgICAgIC50aGVuKCAoc2NoZW1hczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSBuZXcgTWFwPHN0cmluZywgREJJbmZvPigpO1xuICAgICAgICAgICAgICAgIHNjaGVtYXMgPSBpc0FycmF5KHNjaGVtYXMpID8gc2NoZW1hcyA6IFtzY2hlbWFzXTtcbiAgICAgICAgICAgICAgICBzY2hlbWFzLnB1c2goT0ZGTElORV9XQVZFTUFLRVJfREFUQUJBU0VfU0NIRU1BKTtcbiAgICAgICAgICAgICAgICBzY2hlbWFzLm1hcChzID0+IHRoaXMuY29tcGFjdFNjaGVtYShzKSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocyA9PiAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFbcy5zY2hlbWEubmFtZV0gPSBzO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0YWRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb2FkIG5hbWVkIHF1ZXJpZXMgZnJvbSAqX3F1ZXJ5Lmpzb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyp9IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgeyp9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggbWV0YWRhdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWROYW1lZFF1ZXJpZXMobWV0YWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TWV0YUluZm8oLy4rX3F1ZXJ5XFwuanNvbiQvKVxuICAgICAgICAgICAgLnRoZW4oKHF1ZXJpZXNCeURCczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcXVlcmllc0J5REJzID0gaXNBcnJheShxdWVyaWVzQnlEQnMpID8gcXVlcmllc0J5REJzIDogW3F1ZXJpZXNCeURCc107XG4gICAgICAgICAgICAgICAgcXVlcmllc0J5REJzLm1hcChlID0+IG1ldGFkYXRhW2UubmFtZV0ucXVlcmllcyA9IHRoaXMuY29tcGFjdFF1ZXJpZXMoZSkpO1xuICAgICAgICAgICAgICAgIHJldHVybiBtZXRhZGF0YTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvYWQgb2ZmbGluZSBjb25maWd1cmF0aW9uIGZyb20gKl9vZmZsaW5lLmpzb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0geyp9IG1ldGFkYXRhXG4gICAgICogQHJldHVybnMgeyp9IEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdpdGggbWV0YWRhdGFcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWRPZmZsaW5lQ29uZmlnKG1ldGFkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE1ldGFJbmZvKC8uK19vZmZsaW5lXFwuanNvbiQvKVxuICAgICAgICAgICAgLnRoZW4oY29uZmlncyA9PiB7XG4gICAgICAgICAgICAgICAgZm9yRWFjaChjb25maWdzLCBjb25maWcgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGZvckVhY2goY29uZmlnLmVudGl0aWVzLCBlbnRpdHlDb25maWcgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50aXR5U2NoZW1hID0gZmluZChtZXRhZGF0YVtjb25maWcubmFtZV0uc2NoZW1hLmVudGl0aWVzLCBzY2hlbWEgPT4gc2NoZW1hLm5hbWUgPT09IGVudGl0eUNvbmZpZy5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbkluKGVudGl0eVNjaGVtYSwgZW50aXR5Q29uZmlnKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1ldGFkYXRhO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2dTcWwoc3FsaXRlT2JqZWN0OiBTUUxpdGVPYmplY3QpIHtcbiAgICAgICAgY29uc3QgbG9nZ2VyID0gY29uc29sZSxcbiAgICAgICAgICAgIG9yaWdpbmFsRXhlY3V0ZVNxbCA9IHNxbGl0ZU9iamVjdC5leGVjdXRlU3FsO1xuICAgICAgICBzcWxpdGVPYmplY3QuZXhlY3V0ZVNxbCA9IChzcWwsIHBhcmFtcywgbG9nT3V0cHV0PzogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRUaW1lID0gbm93KCk7XG4gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxFeGVjdXRlU3FsLmNhbGwoc3FsaXRlT2JqZWN0LCBzcWwsIHBhcmFtcykudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsb2dPdXRwdXQgfHwgdGhpcy5fbG9nU3FsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG9iakFyciA9IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93Q291bnQgPSByZXN1bHQucm93cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93Q291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqQXJyLnB1c2gocmVzdWx0LnJvd3MuaXRlbShpKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdTUUwgXCIlc1wiICB3aXRoIHBhcmFtcyAlTyB0b29rIFslZCBtc10uIEFuZCB0aGUgcmVzdWx0IGlzICVPJywgc3FsLCBwYXJhbXMsIG5vdygpIC0gc3RhcnRUaW1lLCBvYmpBcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignU1FMIFwiJXNcIiB3aXRoIHBhcmFtcyAlTyBmYWlsZWQgd2l0aCBlcnJvciBtZXNzYWdlICVzJywgc3FsLCBwYXJhbXMsIGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTUUxpdGUgZG9lcyBub3Qgc3VwcG9ydCBib29sZWFuIGRhdGEuIEluc3RlYWQgb2YgdXNpbmcgYm9vbGVhbiB2YWx1ZXMsIGRhdGEgd2lsbCBiZSBjaGFuZ2VkIHRvIDAgb3IgMS5cbiAgICAgKiBJZiB0aGUgdmFsdWUgaXMgJ3RydWUnLCB0aGVuIDEgaXMgc2V0IGFzIHZhbHVlLiBJZiB2YWx1ZSBpcyBub3QgMSBub3IgbnVsbCwgdGhlbiBjb2x1bW4gdmFsdWUgaXMgc2V0IGFzIDAuXG4gICAgICogQHBhcmFtIGRiTmFtZVxuICAgICAqIEBwYXJhbSB0YWJsZU5hbWVcbiAgICAgKiBAcGFyYW0gY29sTmFtZVxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHByaXZhdGUgbm9ybWFsaXplQm9vbGVhbkRhdGEoZGJOYW1lLCB0YWJsZU5hbWUsIGNvbE5hbWUpIHtcbiAgICAgICAgY29uc3QgdHJ1ZVRvMVF1ZXJ5ID0gYHVwZGF0ZSAke2VzY2FwZU5hbWUodGFibGVOYW1lKX0gc2V0ICR7ZXNjYXBlTmFtZShjb2xOYW1lKX0gPSAxIHdoZXJlICR7ZXNjYXBlTmFtZShjb2xOYW1lKX0gPSAndHJ1ZSdgLFxuICAgICAgICAgICAgZXhjZXB0TnVsbEFuZDF0bzBRdWVyeSA9IGB1cGRhdGUgJHtlc2NhcGVOYW1lKHRhYmxlTmFtZSl9IHNldCAke2VzY2FwZU5hbWUoY29sTmFtZSl9ID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlICR7ZXNjYXBlTmFtZShjb2xOYW1lKX0gaXMgbm90IG51bGwgYW5kICR7ZXNjYXBlTmFtZShjb2xOYW1lKX0gIT0gMWA7XG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVTUUxRdWVyeShkYk5hbWUsIHRydWVUbzFRdWVyeSlcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMuZXhlY3V0ZVNRTFF1ZXJ5KGRiTmFtZSwgZXhjZXB0TnVsbEFuZDF0bzBRdWVyeSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGRhdGEgdG8gc3VwcG9ydCBTUUxpdGUuXG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICovXG4gICAgcHJpdmF0ZSBub3JtYWxpemVEYXRhKCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwobWFwKHRoaXMuZGF0YWJhc2VzLCBkYXRhYmFzZSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwobWFwKGRhdGFiYXNlLnNjaGVtYS5lbnRpdGllcywgZW50aXR5U2NoZW1hID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwobWFwKGVudGl0eVNjaGVtYS5jb2x1bW5zLCBjb2x1bW4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29sdW1uLnNxbFR5cGUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplQm9vbGVhbkRhdGEoZGF0YWJhc2Uuc2NoZW1hLm5hbWUsIGVudGl0eVNjaGVtYS5uYW1lLCBjb2x1bW4ubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5EYXRhYmFzZShkYXRhYmFzZTogREJJbmZvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNxbGl0ZS5jcmVhdGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IGRhdGFiYXNlLnNjaGVtYS5uYW1lICsgJy5kYicsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246ICdkZWZhdWx0J1xuICAgICAgICB9KS50aGVuKHNxbGl0ZU9iamVjdCA9PiB7XG4gICAgICAgICAgICBkYXRhYmFzZS5zcWxpdGVPYmplY3QgPSBzcWxpdGVPYmplY3Q7XG4gICAgICAgICAgICB0aGlzLmxvZ1NxbChzcWxpdGVPYmplY3QpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVQcm9taXNlcyA9IG1hcChkYXRhYmFzZS5zY2hlbWEuZW50aXRpZXMsIGVudGl0eVNjaGVtYSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGNvbnN0IHN0b3JlID0gbmV3IExvY2FsREJTdG9yZSh0aGlzLmRldmljZUZpbGVTZXJ2aWNlLCBlbnRpdHlTY2hlbWEsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgc3FsaXRlT2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLmNyZWF0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoc3RvcmVQcm9taXNlcykudGhlbihzdG9yZXMgPT4ge1xuICAgICAgICAgICAgICAgIGZvckVhY2goc3RvcmVzLCBzdG9yZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlLnN0b3Jlc1tzdG9yZS5lbnRpdHlTY2hlbWEuZW50aXR5TmFtZV0gPSBzdG9yZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0YWJhc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBhcHAgaXMgb3BlbmVkIGZvciBmaXJzdCB0aW1lICBhZnRlciBhIGZyZXNoIGluc3RhbGwgb3IgdXBkYXRlLCB0aGVuIG9sZCBkYXRhYmFzZXMgYXJlIHJlbW92ZWQgYW5kXG4gICAgICogbmV3IGRhdGFiYXNlcyBhcmUgY3JlYXRlZCB1c2luZyBidW5kbGVkIGRhdGFiYXNlcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHsqfSBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB3aXRoIHRydWUsIGlmIHRoZSBkYXRhYmFzZXMgYXJlIG5ld2x5IGNyZWF0ZWQgb3IgcmVzb2x2ZWQgd2l0aCBmYWxzZVxuICAgICAqIGlmIGV4aXN0aW5nIGRhdGFiYXNlcyBhcmUgYmVpbmcgdXNlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFVwRGF0YWJhc2VzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kZXZpY2VTZXJ2aWNlLmdldEFwcEJ1aWxkVGltZSgpXG4gICAgICAgICAgICAudGhlbigoYnVpbGRUaW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGJJbmZvID0gdGhpcy5kZXZpY2VTZXJ2aWNlLmdldEVudHJ5KCdkYXRhYmFzZScpIHx8IHt9O1xuICAgICAgICAgICAgICAgIGlmICghZGJJbmZvLmxhc3RCdWlsZFRpbWUgfHwgZGJJbmZvLmxhc3RCdWlsZFRpbWUgIT09IGJ1aWxkVGltZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbkFuZENvcHlEYXRhYmFzZXMoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiSW5mby5sYXN0QnVpbGRUaW1lID0gYnVpbGRUaW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRldmljZVNlcnZpY2Uuc3RvcmVFbnRyeSgnZGF0YWJhc2UnLCBkYkluZm8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkudGhlbigoKSA9PiB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
@@ -183,11 +183,11 @@ export class LocalDbService {
|
|
|
183
183
|
});
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
|
-
static { this.ɵfac = function LocalDbService_Factory(
|
|
186
|
+
static { this.ɵfac = function LocalDbService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LocalDbService)(i0.ɵɵinject(i1.LocalDBManagementService)); }; }
|
|
187
187
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LocalDbService, factory: LocalDbService.ɵfac, providedIn: 'root' }); }
|
|
188
188
|
}
|
|
189
189
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocalDbService, [{
|
|
190
190
|
type: Injectable,
|
|
191
191
|
args: [{ providedIn: 'root' }]
|
|
192
192
|
}], () => [{ type: i1.LocalDBManagementService }], null); })();
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vYmlsZS9vZmZsaW5lL3NyYy9zZXJ2aWNlcy9sb2NhbC1kYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7QUFJaEQsTUFBTSxPQUFPLGNBQWM7YUFDUCxpQkFBWSxHQUFHLGdCQUFnQixBQUFuQixDQUFvQjtJQUtoRCxZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxNQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksZUFBZSxDQUFDLE1BQVcsRUFBRSxlQUFxQixFQUFFLGVBQXFCLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDMUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMs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QUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7K0VBaE1RLGNBQWM7dUVBQWQsY0FBYyxXQUFkLGNBQWMsbUJBREYsTUFBTTs7aUZBQ2xCLGNBQWM7Y0FEMUIsVUFBVTtlQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTG9jYWxEQk1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1kYi1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxEQlN0b3JlIH0gZnJvbSAnLi4vbW9kZWxzL2xvY2FsLWRiLXN0b3JlJztcbmltcG9ydCB7Zm9yRWFjaCwgZ2V0LCBtYXBLZXlzfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTG9jYWxEYlNlcnZpY2Uge1xuICAgIHN0YXRpYyByZWFkb25seSBTRVJWSUNFX05BTUUgPSAnTG9jYWxEYlNlcnZpY2UnO1xuICAgIHByaXZhdGUgc2VhcmNoVGFibGVEYXRhO1xuICAgIHByaXZhdGUgc2VhcmNoVGFibGVEYXRhV2l0aFF1ZXJ5O1xuICAgIHByaXZhdGUgZ2V0RGlzdGluY3REYXRhQnlGaWVsZHM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsREJNYW5hZ2VtZW50U2VydmljZTogTG9jYWxEQk1hbmFnZW1lbnRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGFibGVEYXRhID0gdGhpcy5yZWFkVGFibGVEYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2VhcmNoVGFibGVEYXRhV2l0aFF1ZXJ5ID0gdGhpcy5yZWFkVGFibGVEYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZ2V0RGlzdGluY3REYXRhQnlGaWVsZHMgPSB0aGlzLnJlYWRUYWJsZURhdGEuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3RvcmUocGFyYW1zOiBhbnkpOiBQcm9taXNlPExvY2FsREJTdG9yZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbERCTWFuYWdlbWVudFNlcnZpY2UuZ2V0U3RvcmUocGFyYW1zLmRhdGFNb2RlbE5hbWUsIHBhcmFtcy5lbnRpdHlOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gaW5zZXJ0IGRhdGEgaW50byB0aGUgc3BlY2lmaWVkIHRhYmxlLiBUaGlzIG1vZGlmaWNhdGlvbiB3aWxsIGJlIGFkZGVkIHRvIG9mZmxpbmUgY2hhbmdlIGxvZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbXNcbiAgICAgKiAgICAgICAgICAgICAgICAgT2JqZWN0IGNvbnRhaW5pbmcgbmFtZSBvZiB0aGUgcHJvamVjdCAmIHRhYmxlIGRhdGEgdG8gYmUgaW5zZXJ0ZWQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IHN1Y2Nlc3NDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gc3VjY2Vzcy5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uPX0gZmFpbHVyZUNhbGxiYWNrXG4gICAgICogICAgICAgICAgICAgICAgICAgIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIHRyaWdnZXJlZCBvbiBmYWlsdXJlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpbnNlcnRUYWJsZURhdGEocGFyYW1zOiBhbnksIHN1Y2Nlc3NDYWxsYmFjaz86IGFueSwgZmFpbHVyZUNhbGxiYWNrPzogYW55LCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5nZXRTdG9yZShwYXJhbXMpLnRoZW4oc3RvcmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNQS0F1dG9JbmNyZW1lbnRlZCA9IChzdG9yZS5wcmltYXJ5S2V5RmllbGQgJiYgc3RvcmUucHJpbWFyeUtleUZpZWxkLmdlbmVyYXRvclR5cGUgPT09ICdpZGVudGl0eScpO1xuICAgICAgICAgICAgaWYgKGdldChvcHRpb25zLCAncmVzZXRQcmltYXJ5S2V5JykgIT09IGZhbHNlICYmIGlzUEtBdXRvSW5jcmVtZW50ZWQgJiYgcGFyYW1zLmRhdGFbc3RvcmUucHJpbWFyeUtleU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5kYXRhW3N0b3JlLnByaW1hcnlLZXlOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5hZGQocGFyYW1zLmRhdGEpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnJlZnJlc2gocGFyYW1zLmRhdGEpLnRoZW4oc3VjY2Vzc0NhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS5jYXRjaChmYWlsdXJlQ2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0byBpbnNlcnQgbXVsdGkgcGFydCBkYXRhIGludG8gdGhlIHNwZWNpZmllZCB0YWJsZS4gVGhpcyBtb2RpZmljYXRpb24gd2lsbCBiZSBhZGRlZCB0byBvZmZsaW5lIGNoYW5nZSBsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogICAgICAgICAgICAgICAgIE9iamVjdCBjb250YWluaW5nIG5hbWUgb2YgdGhlIHByb2plY3QgJiB0YWJsZSBkYXRhIHRvIGJlIGluc2VydGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb249fSBzdWNjZXNzQ2FsbGJhY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdHJpZ2dlcmVkIG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IGZhaWx1cmVDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5zZXJ0TXVsdGlQYXJ0VGFibGVEYXRhKHBhcmFtczogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBhbnksIGZhaWx1cmVDYWxsYmFjaz86IGFueSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMuZ2V0U3RvcmUocGFyYW1zKS50aGVuKHN0b3JlID0+IHtcbiAgICAgICAgICAgIHN0b3JlLnNlcmlhbGl6ZShwYXJhbXMuZGF0YSkudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWJsZURhdGEocGFyYW1zLCBzdWNjZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goZmFpbHVyZUNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gdXBkYXRlIGRhdGEgaW4gdGhlIHNwZWNpZmllZCB0YWJsZS4gVGhpcyBtb2RpZmljYXRpb24gd2lsbCBiZSBhZGRlZCB0byBvZmZsaW5lIGNoYW5nZSBsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogICAgICAgICAgICAgICAgIE9iamVjdCBjb250YWluaW5nIG5hbWUgb2YgdGhlIHByb2plY3QgJiB0YWJsZSBkYXRhIHRvIGJlIHVwZGF0ZWQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IHN1Y2Nlc3NDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gc3VjY2Vzcy5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uPX0gZmFpbHVyZUNhbGxiYWNrXG4gICAgICogICAgICAgICAgICAgICAgICAgIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIHRyaWdnZXJlZCBvbiBmYWlsdXJlLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVUYWJsZURhdGEocGFyYW1zOiBhbnksIHN1Y2Nlc3NDYWxsYmFjaz86IGFueSwgZmFpbHVyZUNhbGxiYWNrPzogYW55KSB7XG4gICAgICAgIHRoaXMuZ2V0U3RvcmUocGFyYW1zKS50aGVuKHN0b3JlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zYXZlKHBhcmFtcy5kYXRhKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUucmVmcmVzaChwYXJhbXMuZGF0YSkudGhlbihzdWNjZXNzQ2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS5jYXRjaChmYWlsdXJlQ2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0byB1cGRhdGUgbXVsdGkgcGFydCBkYXRhIGluIHRoZSBzcGVjaWZpZWQgdGFibGUuIFRoaXMgbW9kaWZpY2F0aW9uIHdpbGwgYmUgYWRkZWQgdG8gb2ZmbGluZSBjaGFuZ2UgbG9nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHBhcmFtc1xuICAgICAqICAgICAgICAgICAgICAgICBPYmplY3QgY29udGFpbmluZyBuYW1lIG9mIHRoZSBwcm9qZWN0ICYgdGFibGUgZGF0YSB0byBiZSB1cGRhdGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb249fSBzdWNjZXNzQ2FsbGJhY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdHJpZ2dlcmVkIG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IGZhaWx1cmVDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlTXVsdGlQYXJ0VGFibGVEYXRhKHBhcmFtczogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBhbnksIGZhaWx1cmVDYWxsYmFjaz86IGFueSkgIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IChwYXJhbXMuZGF0YSAmJiBwYXJhbXMuZGF0YS5yb3dEYXRhKSB8fCBwYXJhbXMuZGF0YTtcbiAgICAgICAgdGhpcy5nZXRTdG9yZShwYXJhbXMpLnRoZW4oc3RvcmUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnNhdmUoZGF0YSk7XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZmFpbHVyZUNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gZGVsZXRlIGRhdGEgaW4gdGhlIHNwZWNpZmllZCB0YWJsZS4gVGhpcyBtb2RpZmljYXRpb24gd2lsbCBiZSBhZGRlZCB0byBvZmZsaW5lIGNoYW5nZSBsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogICAgICAgICAgICAgICAgIE9iamVjdCBjb250YWluaW5nIG5hbWUgb2YgdGhlIHByb2plY3QgJiB0YWJsZSBkYXRhIHRvIGJlIGluc2VydGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb249fSBzdWNjZXNzQ2FsbGJhY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdHJpZ2dlcmVkIG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IGZhaWx1cmVDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlVGFibGVEYXRhKHBhcmFtczogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBhbnksIGZhaWx1cmVDYWxsYmFjaz86IGFueSkge1xuICAgICAgICB0aGlzLmdldFN0b3JlKHBhcmFtcykudGhlbihzdG9yZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwa0ZpZWxkID0gc3RvcmUucHJpbWFyeUtleUZpZWxkLFxuICAgICAgICAgICAgICAgIGlkID0gcGFyYW1zW3BrRmllbGQuZmllbGROYW1lXSB8fCBwYXJhbXNbcGtGaWVsZC5uYW1lXSB8fCAocGFyYW1zLmRhdGEgJiYgcGFyYW1zLmRhdGFbcGtGaWVsZC5maWVsZE5hbWVdKSB8fCBwYXJhbXMuaWQ7XG4gICAgICAgICAgICBzdG9yZS5kZWxldGUoaWQpLnRoZW4oc3VjY2Vzc0NhbGxiYWNrKTtcbiAgICAgICAgfSkuY2F0Y2goZmFpbHVyZUNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gcmVhZCBkYXRhIGZyb20gYSBzcGVjaWZpZWQgdGFibGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogICAgICAgICAgICAgICAgIE9iamVjdCBjb250YWluaW5nIG5hbWUgb2YgdGhlIHByb2plY3QgJiB0YWJsZSBkYXRhIHRvIGJlIGluc2VydGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb249fSBzdWNjZXNzQ2FsbGJhY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdHJpZ2dlcmVkIG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IGZhaWx1cmVDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZFRhYmxlRGF0YShwYXJhbXM6IGFueSwgc3VjY2Vzc0NhbGxiYWNrPzogYW55LCBmYWlsdXJlQ2FsbGJhY2s/OiBhbnkpIHtcbiAgICAgICAgdGhpcy5nZXRTdG9yZShwYXJhbXMpLnRoZW4oc3RvcmUgPT4ge1xuICAgICAgICAgICAgbGV0IGZpbHRlciA9IHBhcmFtcy5maWx0ZXIoKGZpbHRlckdyb3VwLCBmaWx0ZXJGaWVsZHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRGaWVsZE5hbWVUb0NvbHVtbk5hbWUoc3RvcmUsIGZpbHRlckdyb3VwLCBmaWx0ZXJGaWVsZHMpO1xuICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAvLyBjb252ZXJ0IHdtX2Jvb2wgZnVuY3Rpb24gd2l0aCBib29sZWFuIHZhbHVlIHRvIDAvMVxuICAgICAgICAgICAgZmlsdGVyID0gZmlsdGVyLnJlcGxhY2UoL3dtX2Jvb2xcXCgndHJ1ZSdcXCkvZywgMSkucmVwbGFjZSgvd21fYm9vbFxcKCdmYWxzZSdcXCkvZywgMCk7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuY291bnQoZmlsdGVyKS50aGVuKHRvdGFsRWxlbWVudHMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBwYXJhbXMuc29ydC5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5maWx0ZXIoZmlsdGVyLCBzb3J0LCB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogKHBhcmFtcy5wYWdlIC0gMSkgKiBwYXJhbXMuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgbGltaXQ6IHBhcmFtcy5zaXplXG4gICAgICAgICAgICAgICAgfSkudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbEVsZW1lbnRzIC8gcGFyYW1zLnNpemUpO1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soe1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQnICAgICAgICAgOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0JyAgICAgICAgICAgOiAocGFyYW1zLnBhZ2UgPT09IDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3QnICAgICAgICAgICAgOiAocGFyYW1zLnBhZ2UgPT09IHRvdGFsUGFnZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcicgICAgICAgICAgOiAocGFyYW1zLnBhZ2UgLSAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXJPZkVsZW1lbnRzJzogZGF0YS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZScgICAgICAgICAgICA6IHBhcmFtcy5zaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnRlZCcgOiAhIXNvcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vuc29ydGVkJyA6ICFzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsRWxlbWVudHMnICAgOiB0b3RhbEVsZW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsUGFnZXMnICAgICAgOiB0b3RhbFBhZ2VzXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLmNhdGNoKGZhaWx1cmVDYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlc2NhcGVOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpO1xuICAgICAgICAgICAgcmV0dXJuICdcIicgKyBuYW1lLnJlcGxhY2UoL1xcLi9nLCAnXCIuXCInKSArICdcIic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyB0aGUgY29sdW1uTmFtZSBhcHBlbmRpbmcgd2l0aCB0aGUgc2NoZW1hIG5hbWUuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5OYW1lKHN0b3JlLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKHN0b3JlLmZpZWxkVG9Db2x1bW5NYXBwaW5nW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbk5hbWUgPSB0aGlzLmVzY2FwZU5hbWUoc3RvcmUuZmllbGRUb0NvbHVtbk1hcHBpbmdbZmllbGROYW1lXSk7XG4gICAgICAgICAgICBpZiAoY29sdW1uTmFtZS5pbmRleE9mKCcuJykgPCAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXNjYXBlTmFtZShzdG9yZS5lbnRpdHlTY2hlbWEubmFtZSkgKyAnLicgKyBjb2x1bW5OYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkTmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRGaWVsZE5hbWVUb0NvbHVtbk5hbWUoc3RvcmU6IExvY2FsREJTdG9yZSwgZmlsdGVyR3JvdXA6IGFueSwgb3B0aW9ucz86IGFueSkge1xuICAgICAgICBmb3JFYWNoKGZpbHRlckdyb3VwLnJ1bGVzLCBydWxlID0+IHtcbiAgICAgICAgICAgIGlmIChydWxlLnJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0RmllbGROYW1lVG9Db2x1bW5OYW1lKHN0b3JlLCBydWxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcnVsZS50YXJnZXQgPSB0aGlzLmdldENvbHVtbk5hbWUoc3RvcmUsIHJ1bGUudGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGhhbmRsaW5nIHRoZSBzY2VuYXJpbyB3aGVyZSB2YXJpYWJsZSBvcHRpb25zIGNhbiBoYXZlIGZpbHRlckZpZWxkLiBGb3IgZXhhbXBsZTogc2VhcmNoIGZpbHRlciBxdWVyeVxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmZpbHRlckZpZWxkcykge1xuICAgICAgICAgICAgb3B0aW9ucy5maWx0ZXJGaWVsZHMgPSBtYXBLZXlzKG9wdGlvbnMuZmlsdGVyRmllbGRzLCAodiwgaykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldENvbHVtbk5hbWUoc3RvcmUsIGspO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtZGIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vYmlsZS9vZmZsaW5lL3NyYy9zZXJ2aWNlcy9sb2NhbC1kYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFekUsT0FBTyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7QUFJaEQsTUFBTSxPQUFPLGNBQWM7YUFDUCxpQkFBWSxHQUFHLGdCQUFnQixBQUFuQixDQUFvQjtJQUtoRCxZQUFvQix3QkFBa0Q7UUFBbEQsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLFFBQVEsQ0FBQyxNQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksZUFBZSxDQUFDLE1BQVcsRUFBRSxlQUFxQixFQUFFLGVBQXFCLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDMUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMs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QUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQyxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMxRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7K0dBaE1RLGNBQWM7dUVBQWQsY0FBYyxXQUFkLGNBQWMsbUJBREYsTUFBTTs7aUZBQ2xCLGNBQWM7Y0FEMUIsVUFBVTtlQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTG9jYWxEQk1hbmFnZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1kYi1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxEQlN0b3JlIH0gZnJvbSAnLi4vbW9kZWxzL2xvY2FsLWRiLXN0b3JlJztcbmltcG9ydCB7Zm9yRWFjaCwgZ2V0LCBtYXBLZXlzfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTG9jYWxEYlNlcnZpY2Uge1xuICAgIHN0YXRpYyByZWFkb25seSBTRVJWSUNFX05BTUUgPSAnTG9jYWxEYlNlcnZpY2UnO1xuICAgIHByaXZhdGUgc2VhcmNoVGFibGVEYXRhO1xuICAgIHByaXZhdGUgc2VhcmNoVGFibGVEYXRhV2l0aFF1ZXJ5O1xuICAgIHByaXZhdGUgZ2V0RGlzdGluY3REYXRhQnlGaWVsZHM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsREJNYW5hZ2VtZW50U2VydmljZTogTG9jYWxEQk1hbmFnZW1lbnRTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGFibGVEYXRhID0gdGhpcy5yZWFkVGFibGVEYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2VhcmNoVGFibGVEYXRhV2l0aFF1ZXJ5ID0gdGhpcy5yZWFkVGFibGVEYXRhLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZ2V0RGlzdGluY3REYXRhQnlGaWVsZHMgPSB0aGlzLnJlYWRUYWJsZURhdGEuYmluZCh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3RvcmUocGFyYW1zOiBhbnkpOiBQcm9taXNlPExvY2FsREJTdG9yZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbERCTWFuYWdlbWVudFNlcnZpY2UuZ2V0U3RvcmUocGFyYW1zLmRhdGFNb2RlbE5hbWUsIHBhcmFtcy5lbnRpdHlOYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gaW5zZXJ0IGRhdGEgaW50byB0aGUgc3BlY2lmaWVkIHRhYmxlLiBUaGlzIG1vZGlmaWNhdGlvbiB3aWxsIGJlIGFkZGVkIHRvIG9mZmxpbmUgY2hhbmdlIGxvZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbXNcbiAgICAgKiAgICAgICAgICAgICAgICAgT2JqZWN0IGNvbnRhaW5pbmcgbmFtZSBvZiB0aGUgcHJvamVjdCAmIHRhYmxlIGRhdGEgdG8gYmUgaW5zZXJ0ZWQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IHN1Y2Nlc3NDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gc3VjY2Vzcy5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uPX0gZmFpbHVyZUNhbGxiYWNrXG4gICAgICogICAgICAgICAgICAgICAgICAgIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIHRyaWdnZXJlZCBvbiBmYWlsdXJlLlxuICAgICAqL1xuICAgIHB1YmxpYyBpbnNlcnRUYWJsZURhdGEocGFyYW1zOiBhbnksIHN1Y2Nlc3NDYWxsYmFjaz86IGFueSwgZmFpbHVyZUNhbGxiYWNrPzogYW55LCBvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5nZXRTdG9yZShwYXJhbXMpLnRoZW4oc3RvcmUgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNQS0F1dG9JbmNyZW1lbnRlZCA9IChzdG9yZS5wcmltYXJ5S2V5RmllbGQgJiYgc3RvcmUucHJpbWFyeUtleUZpZWxkLmdlbmVyYXRvclR5cGUgPT09ICdpZGVudGl0eScpO1xuICAgICAgICAgICAgaWYgKGdldChvcHRpb25zLCAncmVzZXRQcmltYXJ5S2V5JykgIT09IGZhbHNlICYmIGlzUEtBdXRvSW5jcmVtZW50ZWQgJiYgcGFyYW1zLmRhdGFbc3RvcmUucHJpbWFyeUtleU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5kYXRhW3N0b3JlLnByaW1hcnlLZXlOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5hZGQocGFyYW1zLmRhdGEpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JlLnJlZnJlc2gocGFyYW1zLmRhdGEpLnRoZW4oc3VjY2Vzc0NhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS5jYXRjaChmYWlsdXJlQ2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0byBpbnNlcnQgbXVsdGkgcGFydCBkYXRhIGludG8gdGhlIHNwZWNpZmllZCB0YWJsZS4gVGhpcyBtb2RpZmljYXRpb24gd2lsbCBiZSBhZGRlZCB0byBvZmZsaW5lIGNoYW5nZSBsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogICAgICAgICAgICAgICAgIE9iamVjdCBjb250YWluaW5nIG5hbWUgb2YgdGhlIHByb2plY3QgJiB0YWJsZSBkYXRhIHRvIGJlIGluc2VydGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb249fSBzdWNjZXNzQ2FsbGJhY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdHJpZ2dlcmVkIG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IGZhaWx1cmVDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaW5zZXJ0TXVsdGlQYXJ0VGFibGVEYXRhKHBhcmFtczogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBhbnksIGZhaWx1cmVDYWxsYmFjaz86IGFueSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMuZ2V0U3RvcmUocGFyYW1zKS50aGVuKHN0b3JlID0+IHtcbiAgICAgICAgICAgIHN0b3JlLnNlcmlhbGl6ZShwYXJhbXMuZGF0YSkudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRUYWJsZURhdGEocGFyYW1zLCBzdWNjZXNzQ2FsbGJhY2ssIGZhaWx1cmVDYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkuY2F0Y2goZmFpbHVyZUNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gdXBkYXRlIGRhdGEgaW4gdGhlIHNwZWNpZmllZCB0YWJsZS4gVGhpcyBtb2RpZmljYXRpb24gd2lsbCBiZSBhZGRlZCB0byBvZmZsaW5lIGNoYW5nZSBsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogICAgICAgICAgICAgICAgIE9iamVjdCBjb250YWluaW5nIG5hbWUgb2YgdGhlIHByb2plY3QgJiB0YWJsZSBkYXRhIHRvIGJlIHVwZGF0ZWQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IHN1Y2Nlc3NDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gc3VjY2Vzcy5cbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uPX0gZmFpbHVyZUNhbGxiYWNrXG4gICAgICogICAgICAgICAgICAgICAgICAgIENhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIHRyaWdnZXJlZCBvbiBmYWlsdXJlLlxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGVUYWJsZURhdGEocGFyYW1zOiBhbnksIHN1Y2Nlc3NDYWxsYmFjaz86IGFueSwgZmFpbHVyZUNhbGxiYWNrPzogYW55KSB7XG4gICAgICAgIHRoaXMuZ2V0U3RvcmUocGFyYW1zKS50aGVuKHN0b3JlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdG9yZS5zYXZlKHBhcmFtcy5kYXRhKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcmUucmVmcmVzaChwYXJhbXMuZGF0YSkudGhlbihzdWNjZXNzQ2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KS5jYXRjaChmYWlsdXJlQ2FsbGJhY2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB0byB1cGRhdGUgbXVsdGkgcGFydCBkYXRhIGluIHRoZSBzcGVjaWZpZWQgdGFibGUuIFRoaXMgbW9kaWZpY2F0aW9uIHdpbGwgYmUgYWRkZWQgdG8gb2ZmbGluZSBjaGFuZ2UgbG9nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHBhcmFtc1xuICAgICAqICAgICAgICAgICAgICAgICBPYmplY3QgY29udGFpbmluZyBuYW1lIG9mIHRoZSBwcm9qZWN0ICYgdGFibGUgZGF0YSB0byBiZSB1cGRhdGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb249fSBzdWNjZXNzQ2FsbGJhY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdHJpZ2dlcmVkIG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IGZhaWx1cmVDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlTXVsdGlQYXJ0VGFibGVEYXRhKHBhcmFtczogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBhbnksIGZhaWx1cmVDYWxsYmFjaz86IGFueSkgIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IChwYXJhbXMuZGF0YSAmJiBwYXJhbXMuZGF0YS5yb3dEYXRhKSB8fCBwYXJhbXMuZGF0YTtcbiAgICAgICAgdGhpcy5nZXRTdG9yZShwYXJhbXMpLnRoZW4oc3RvcmUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnNhdmUoZGF0YSk7XG4gICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2goZmFpbHVyZUNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gZGVsZXRlIGRhdGEgaW4gdGhlIHNwZWNpZmllZCB0YWJsZS4gVGhpcyBtb2RpZmljYXRpb24gd2lsbCBiZSBhZGRlZCB0byBvZmZsaW5lIGNoYW5nZSBsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogICAgICAgICAgICAgICAgIE9iamVjdCBjb250YWluaW5nIG5hbWUgb2YgdGhlIHByb2plY3QgJiB0YWJsZSBkYXRhIHRvIGJlIGluc2VydGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb249fSBzdWNjZXNzQ2FsbGJhY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdHJpZ2dlcmVkIG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IGZhaWx1cmVDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlVGFibGVEYXRhKHBhcmFtczogYW55LCBzdWNjZXNzQ2FsbGJhY2s/OiBhbnksIGZhaWx1cmVDYWxsYmFjaz86IGFueSkge1xuICAgICAgICB0aGlzLmdldFN0b3JlKHBhcmFtcykudGhlbihzdG9yZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwa0ZpZWxkID0gc3RvcmUucHJpbWFyeUtleUZpZWxkLFxuICAgICAgICAgICAgICAgIGlkID0gcGFyYW1zW3BrRmllbGQuZmllbGROYW1lXSB8fCBwYXJhbXNbcGtGaWVsZC5uYW1lXSB8fCAocGFyYW1zLmRhdGEgJiYgcGFyYW1zLmRhdGFbcGtGaWVsZC5maWVsZE5hbWVdKSB8fCBwYXJhbXMuaWQ7XG4gICAgICAgICAgICBzdG9yZS5kZWxldGUoaWQpLnRoZW4oc3VjY2Vzc0NhbGxiYWNrKTtcbiAgICAgICAgfSkuY2F0Y2goZmFpbHVyZUNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdG8gcmVhZCBkYXRhIGZyb20gYSBzcGVjaWZpZWQgdGFibGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zXG4gICAgICogICAgICAgICAgICAgICAgIE9iamVjdCBjb250YWluaW5nIG5hbWUgb2YgdGhlIHByb2plY3QgJiB0YWJsZSBkYXRhIHRvIGJlIGluc2VydGVkLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb249fSBzdWNjZXNzQ2FsbGJhY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgdHJpZ2dlcmVkIG9uIHN1Y2Nlc3MuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbj19IGZhaWx1cmVDYWxsYmFja1xuICAgICAqICAgICAgICAgICAgICAgICAgICBDYWxsYmFjayBmdW5jdGlvbiB0byBiZSB0cmlnZ2VyZWQgb24gZmFpbHVyZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZFRhYmxlRGF0YShwYXJhbXM6IGFueSwgc3VjY2Vzc0NhbGxiYWNrPzogYW55LCBmYWlsdXJlQ2FsbGJhY2s/OiBhbnkpIHtcbiAgICAgICAgdGhpcy5nZXRTdG9yZShwYXJhbXMpLnRoZW4oc3RvcmUgPT4ge1xuICAgICAgICAgICAgbGV0IGZpbHRlciA9IHBhcmFtcy5maWx0ZXIoKGZpbHRlckdyb3VwLCBmaWx0ZXJGaWVsZHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRGaWVsZE5hbWVUb0NvbHVtbk5hbWUoc3RvcmUsIGZpbHRlckdyb3VwLCBmaWx0ZXJGaWVsZHMpO1xuICAgICAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgICAgICAvLyBjb252ZXJ0IHdtX2Jvb2wgZnVuY3Rpb24gd2l0aCBib29sZWFuIHZhbHVlIHRvIDAvMVxuICAgICAgICAgICAgZmlsdGVyID0gZmlsdGVyLnJlcGxhY2UoL3dtX2Jvb2xcXCgndHJ1ZSdcXCkvZywgMSkucmVwbGFjZSgvd21fYm9vbFxcKCdmYWxzZSdcXCkvZywgMCk7XG4gICAgICAgICAgICByZXR1cm4gc3RvcmUuY291bnQoZmlsdGVyKS50aGVuKHRvdGFsRWxlbWVudHMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNvcnQgPSBwYXJhbXMuc29ydC5zcGxpdCgnPScpWzFdO1xuICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5maWx0ZXIoZmlsdGVyLCBzb3J0LCB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldDogKHBhcmFtcy5wYWdlIC0gMSkgKiBwYXJhbXMuc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgbGltaXQ6IHBhcmFtcy5zaXplXG4gICAgICAgICAgICAgICAgfSkudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbEVsZW1lbnRzIC8gcGFyYW1zLnNpemUpO1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soe1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQnICAgICAgICAgOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0JyAgICAgICAgICAgOiAocGFyYW1zLnBhZ2UgPT09IDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3QnICAgICAgICAgICAgOiAocGFyYW1zLnBhZ2UgPT09IHRvdGFsUGFnZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcicgICAgICAgICAgOiAocGFyYW1zLnBhZ2UgLSAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdudW1iZXJPZkVsZW1lbnRzJzogZGF0YS5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZScgICAgICAgICAgICA6IHBhcmFtcy5zaXplLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnQnICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvcnRlZCcgOiAhIXNvcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Vuc29ydGVkJyA6ICFzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsRWxlbWVudHMnICAgOiB0b3RhbEVsZW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RvdGFsUGFnZXMnICAgICAgOiB0b3RhbFBhZ2VzXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLmNhdGNoKGZhaWx1cmVDYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlc2NhcGVOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9cIi9nLCAnXCJcIicpO1xuICAgICAgICAgICAgcmV0dXJuICdcIicgKyBuYW1lLnJlcGxhY2UoL1xcLi9nLCAnXCIuXCInKSArICdcIic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyB0aGUgY29sdW1uTmFtZSBhcHBlbmRpbmcgd2l0aCB0aGUgc2NoZW1hIG5hbWUuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5OYW1lKHN0b3JlLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKHN0b3JlLmZpZWxkVG9Db2x1bW5NYXBwaW5nW2ZpZWxkTmFtZV0pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbk5hbWUgPSB0aGlzLmVzY2FwZU5hbWUoc3RvcmUuZmllbGRUb0NvbHVtbk1hcHBpbmdbZmllbGROYW1lXSk7XG4gICAgICAgICAgICBpZiAoY29sdW1uTmFtZS5pbmRleE9mKCcuJykgPCAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXNjYXBlTmFtZShzdG9yZS5lbnRpdHlTY2hlbWEubmFtZSkgKyAnLicgKyBjb2x1bW5OYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkTmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRGaWVsZE5hbWVUb0NvbHVtbk5hbWUoc3RvcmU6IExvY2FsREJTdG9yZSwgZmlsdGVyR3JvdXA6IGFueSwgb3B0aW9ucz86IGFueSkge1xuICAgICAgICBmb3JFYWNoKGZpbHRlckdyb3VwLnJ1bGVzLCBydWxlID0+IHtcbiAgICAgICAgICAgIGlmIChydWxlLnJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0RmllbGROYW1lVG9Db2x1bW5OYW1lKHN0b3JlLCBydWxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcnVsZS50YXJnZXQgPSB0aGlzLmdldENvbHVtbk5hbWUoc3RvcmUsIHJ1bGUudGFyZ2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGhhbmRsaW5nIHRoZSBzY2VuYXJpbyB3aGVyZSB2YXJpYWJsZSBvcHRpb25zIGNhbiBoYXZlIGZpbHRlckZpZWxkLiBGb3IgZXhhbXBsZTogc2VhcmNoIGZpbHRlciBxdWVyeVxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmZpbHRlckZpZWxkcykge1xuICAgICAgICAgICAgb3B0aW9ucy5maWx0ZXJGaWVsZHMgPSBtYXBLZXlzKG9wdGlvbnMuZmlsdGVyRmllbGRzLCAodiwgaykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldENvbHVtbk5hbWUoc3RvcmUsIGspO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -77,11 +77,11 @@ export class LocalKeyValueService {
|
|
|
77
77
|
}];
|
|
78
78
|
return this.store.filter(filterCriteria);
|
|
79
79
|
}
|
|
80
|
-
static { this.ɵfac = function LocalKeyValueService_Factory(
|
|
80
|
+
static { this.ɵfac = function LocalKeyValueService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LocalKeyValueService)(); }; }
|
|
81
81
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LocalKeyValueService, factory: LocalKeyValueService.ɵfac, providedIn: 'root' }); }
|
|
82
82
|
}
|
|
83
83
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocalKeyValueService, [{
|
|
84
84
|
type: Injectable,
|
|
85
85
|
args: [{ providedIn: 'root' }]
|
|
86
86
|
}], null, null); })();
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwta2V5LXZhbHVlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb2JpbGUvb2ZmbGluZS9zcmMvc2VydmljZXMvbG9jYWwta2V5LXZhbHVlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLG9CQUFvQjthQUNiLGlCQUFZLEdBQUcsc0JBQXNCLEFBQXpCLENBQTBCO0lBR3REOzs7OztPQUtHO0lBQ0ksR0FBRyxDQUFDLEdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQzthQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDWCxJQUFJLEtBQUssQ0FBQztZQUNWLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUN4QixJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNSLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksSUFBSSxDQUFDLFVBQXdCO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUs7UUFDakIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ25CLElBQUksRUFBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDbkIsS0FBSyxFQUFHLEdBQUc7b0JBQ1gsT0FBTyxFQUFHLEtBQUs7aUJBQ2xCLENBQUMsQ0FBQztZQUNQLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dCQUNsQixLQUFLLEVBQUcsR0FBRztnQkFDWCxPQUFPLEVBQUcsS0FBSzthQUNsQixDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxHQUFHO1FBQ2IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQUc7UUFDbEIsTUFBTSxjQUFjLEdBQUcsQ0FBQztnQkFDcEIsZUFBZSxFQUFHLEtBQUs7Z0JBQ3ZCLGdCQUFnQixFQUFHLEdBQUc7Z0JBQ3RCLGVBQWUsRUFBRyxRQUFRO2dCQUMxQixpQkFBaUIsRUFBRyxRQUFRO2FBQy9CLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0MsQ0FBQztxSEFsRlEsb0JBQW9CO3VFQUFwQixvQkFBb0IsV0FBcEIsb0JBQW9CLG1CQURSLE1BQU07O2lGQUNsQixvQkFBb0I7Y0FEaEMsVUFBVTtlQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTG9jYWxEQlN0b3JlIH0gZnJvbSAnLi4vbW9kZWxzL2xvY2FsLWRiLXN0b3JlJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgTG9jYWxLZXlWYWx1ZVNlcnZpY2Uge1xuICAgIHN0YXRpYyByZWFkb25seSBTRVJWSUNFX05BTUUgPSAnTG9jYWxLZXlWYWx1ZVNlcnZpY2UnO1xuICAgIHByaXZhdGUgc3RvcmU6IExvY2FsREJTdG9yZTtcblxuICAgIC8qKlxuICAgICAqIHJldHJpZXZlcyB0aGUgdmFsdWUgbWFwcGVkIHRvIHRoZSBrZXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IGtleVxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IGEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gdmFsdWUgaXMgcmV0cmlldmVkIGZyb20gc3RvcmUuXG4gICAgICovXG4gICAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoRW50cnkoa2V5KVxuICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlc3VsdFswXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIHRoZSBzZXJ2aWNlIHdpdGggdGhlIGdpdmVuIHN0b3JlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IHN0b3JlVG9Vc2UgYSBzdG9yZSB3aXRoIGlkLCBrZXksIHZhbHVlIHdpdGggZmllbGRzLlxuICAgICAqIEByZXR1cm5zIHtvYmplY3R9IGEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIHdoZW4gZGF0YSBpcyBwZXJzaXN0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGluaXQoc3RvcmVUb1VzZTogTG9jYWxEQlN0b3JlKSB7XG4gICAgICAgIHRoaXMuc3RvcmUgPSBzdG9yZVRvVXNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsZWFyIGRhdGEgaW4gYWxsIGRhdGFiYXNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkga2V5XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIHZhbHVlXG4gICAgICogQHJldHVybnMge29iamVjdH0gYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiBkYXRhIGlzIHBlcnNpc3RlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcHV0KGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEVudHJ5KGtleSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnNhdmUoe1xuICAgICAgICAgICAgICAgICAgICAnaWQnIDogcmVzdWx0WzBdLmlkLFxuICAgICAgICAgICAgICAgICAgICAna2V5JyA6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJyA6IHZhbHVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5hZGQoe1xuICAgICAgICAgICAgICAgICdrZXknIDoga2V5LFxuICAgICAgICAgICAgICAgICd2YWx1ZScgOiB2YWx1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsZWFyIGRhdGEgaW4gYWxsIGRhdGFiYXNlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkga2V5XG4gICAgICogQHJldHVybnMge29iamVjdH0gYSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgd2hlbiByZXNwZWN0aXZlIHZhbHVlIGlzIHJlbW92ZWQgZnJvbSBzdG9yZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlKGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaEVudHJ5KGtleSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLmRlbGV0ZShyZXN1bHRbMF0uaWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZldGNoRW50cnkoa2V5KSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckNyaXRlcmlhID0gW3tcbiAgICAgICAgICAgICdhdHRyaWJ1dGVOYW1lJyA6ICdrZXknLFxuICAgICAgICAgICAgJ2F0dHJpYnV0ZVZhbHVlJyA6IGtleSxcbiAgICAgICAgICAgICdhdHRyaWJ1dGVUeXBlJyA6ICdTVFJJTkcnLFxuICAgICAgICAgICAgJ2ZpbHRlckNvbmRpdGlvbicgOiAnRVFVQUxTJ1xuICAgICAgICB9XTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuZmlsdGVyKGZpbHRlckNyaXRlcmlhKTtcbiAgICB9XG59XG4iXX0=
|