@wavemaker/app-ng-runtime 11.10.5-rc.6096 → 11.11.0-next.27920
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-task/bundles/index.umd.js +94 -68
- package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +8 -8
- package/build-task/esm2022/containers/repeat-template.build.mjs +5 -5
- package/build-task/esm2022/containers/wizard/wizard-step/wizard-step.build.mjs +2 -2
- package/build-task/esm2022/containers/wizard/wizard.build.mjs +33 -4
- package/build-task/esm2022/data/form/form-field/form-field.build.mjs +10 -10
- package/build-task/esm2022/data/table/table-column/table-column.build.mjs +15 -11
- package/build-task/esm2022/page/page.build.mjs +2 -8
- package/build-task/esm2022/public_api.mjs +1 -1
- package/build-task/fesm2022/index.mjs +95 -69
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/components/advanced/carousel/bundles/index.umd.js +8 -36
- package/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +1 -1
- package/components/advanced/carousel/carousel.directive.d.ts +1 -1
- package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +3 -2
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +3 -2
- package/components/advanced/carousel/esm2022/public_api.mjs +1 -2
- package/components/advanced/carousel/fesm2022/index.mjs +8 -36
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- package/components/advanced/carousel/public_api.d.ts +0 -1
- package/components/advanced/custom/bundles/index.umd.js +8 -33
- package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -1
- package/components/advanced/custom/custom-widget.directive.d.ts +1 -1
- package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +3 -2
- package/components/advanced/custom/esm2022/custom-widget.directive.mjs +3 -2
- package/components/advanced/custom/esm2022/public_api.mjs +1 -2
- package/components/advanced/custom/fesm2022/index.mjs +7 -32
- package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
- package/components/advanced/custom/public_api.d.ts +0 -1
- package/components/advanced/login/bundles/index.umd.js +10 -34
- package/components/advanced/login/esm2022/login.component.mjs +7 -6
- package/components/advanced/login/esm2022/public_api.mjs +1 -2
- package/components/advanced/login/fesm2022/index.mjs +8 -32
- package/components/advanced/login/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/login.component.d.ts +1 -1
- package/components/advanced/login/public_api.d.ts +0 -1
- package/components/advanced/marquee/bundles/index.umd.js +6 -29
- package/components/advanced/marquee/esm2022/marquee.directive.mjs +3 -2
- package/components/advanced/marquee/esm2022/public_api.mjs +1 -2
- package/components/advanced/marquee/fesm2022/index.mjs +5 -28
- package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
- package/components/advanced/marquee/marquee.directive.d.ts +1 -1
- package/components/advanced/marquee/public_api.d.ts +0 -1
- package/components/base/bundles/index.umd.js +76 -274
- package/components/base/components.module.d.ts +13 -15
- package/components/base/directives/show-in-device.directive.d.ts +1 -1
- package/components/base/esm2022/components.module.mjs +7 -13
- package/components/base/esm2022/directives/show-in-device.directive.mjs +3 -2
- package/components/base/esm2022/pipes/custom-pipes.mjs +32 -16
- package/components/base/esm2022/pipes/image.pipe.mjs +3 -2
- package/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -2
- package/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -2
- package/components/base/esm2022/public_api.mjs +1 -2
- package/components/base/esm2022/utils/form-utils.mjs +2 -1
- package/components/base/esm2022/utils/live-utils.mjs +3 -7
- package/components/base/esm2022/widgets/common/base/base.component.mjs +3 -5
- package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/container/container.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -3
- package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/message/message.component.mjs +5 -5
- package/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +5 -3
- package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +3 -2
- package/components/base/fesm2022/index.mjs +76 -272
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +16 -16
- package/components/base/pipes/image.pipe.d.ts +1 -1
- package/components/base/pipes/sanitize.pipe.d.ts +1 -1
- package/components/base/pipes/trust-as.pipe.d.ts +1 -1
- package/components/base/public_api.d.ts +0 -1
- package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +1 -1
- package/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
- package/components/base/widgets/common/base/text-content.directive.d.ts +1 -1
- package/components/base/widgets/common/container/container.directive.d.ts +1 -1
- package/components/base/widgets/common/item-template/item-template.directive.d.ts +1 -1
- package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
- package/components/base/widgets/common/message/message.component.d.ts +1 -1
- package/components/base/widgets/common/partial/partial.directive.d.ts +1 -1
- package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +2 -2
- package/components/base/widgets/common/redraw/redrawable.directive.d.ts +1 -1
- package/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +1 -1
- package/components/basic/default/anchor/anchor.component.d.ts +1 -1
- package/components/basic/default/audio/audio.component.d.ts +1 -1
- package/components/basic/default/bundles/index.umd.js +100 -148
- package/components/basic/default/esm2022/anchor/anchor.component.mjs +23 -21
- package/components/basic/default/esm2022/audio/audio.component.mjs +7 -6
- package/components/basic/default/esm2022/html/html.directive.mjs +3 -2
- package/components/basic/default/esm2022/icon/icon.component.mjs +17 -16
- package/components/basic/default/esm2022/iframe/iframe.component.mjs +14 -13
- package/components/basic/default/esm2022/label/label.directive.mjs +3 -2
- package/components/basic/default/esm2022/picture/picture.directive.mjs +3 -2
- package/components/basic/default/esm2022/picture/picture.props.mjs +1 -5
- package/components/basic/default/esm2022/public_api.mjs +1 -2
- package/components/basic/default/esm2022/spinner/spinner.component.mjs +26 -24
- package/components/basic/default/esm2022/video/video.component.mjs +19 -18
- package/components/basic/default/fesm2022/index.mjs +101 -148
- package/components/basic/default/fesm2022/index.mjs.map +1 -1
- package/components/basic/default/html/html.directive.d.ts +1 -1
- package/components/basic/default/icon/icon.component.d.ts +1 -1
- package/components/basic/default/iframe/iframe.component.d.ts +1 -1
- package/components/basic/default/label/label.directive.d.ts +1 -1
- package/components/basic/default/picture/picture.directive.d.ts +1 -1
- package/components/basic/default/public_api.d.ts +0 -1
- package/components/basic/default/spinner/spinner.component.d.ts +1 -1
- package/components/basic/default/video/video.component.d.ts +1 -1
- package/components/basic/progress/bundles/index.umd.js +20 -51
- package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +12 -11
- package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
- package/components/basic/progress/esm2022/public_api.mjs +1 -2
- package/components/basic/progress/fesm2022/index.mjs +19 -49
- package/components/basic/progress/fesm2022/index.mjs.map +1 -1
- package/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -1
- package/components/basic/progress/progress-circle/progress-circle.component.d.ts +1 -1
- package/components/basic/progress/public_api.d.ts +0 -1
- package/components/basic/rich-text-editor/bundles/index.umd.js +15 -40
- package/components/basic/rich-text-editor/esm2022/public_api.mjs +1 -2
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +13 -12
- package/components/basic/rich-text-editor/fesm2022/index.mjs +13 -37
- package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- package/components/basic/rich-text-editor/public_api.d.ts +0 -1
- package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +1 -1
- package/components/basic/search/bundles/index.umd.js +170 -207
- package/components/basic/search/esm2022/public_api.mjs +1 -2
- package/components/basic/search/esm2022/scrollable.directive.mjs +3 -2
- package/components/basic/search/esm2022/search.component.mjs +76 -72
- package/components/basic/search/fesm2022/index.mjs +107 -143
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/public_api.d.ts +0 -1
- package/components/basic/search/scrollable.directive.d.ts +1 -1
- package/components/basic/search/search.component.d.ts +1 -1
- package/components/basic/tree/bundles/index.umd.js +9 -33
- package/components/basic/tree/esm2022/public_api.mjs +1 -2
- package/components/basic/tree/esm2022/tree.component.mjs +7 -6
- package/components/basic/tree/fesm2022/index.mjs +8 -32
- package/components/basic/tree/fesm2022/index.mjs.map +1 -1
- package/components/basic/tree/public_api.d.ts +0 -1
- package/components/basic/tree/tree.component.d.ts +1 -1
- package/components/chart/bundles/index.umd.js +25 -53
- package/components/chart/chart.component.d.ts +1 -1
- package/components/chart/esm2022/chart.component.mjs +26 -24
- package/components/chart/esm2022/chart.utils.mjs +2 -1
- package/components/chart/esm2022/public_api.mjs +1 -2
- package/components/chart/fesm2022/index.mjs +26 -52
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/chart/public_api.d.ts +0 -1
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -1
- package/components/containers/accordion/accordion.directive.d.ts +1 -1
- package/components/containers/accordion/bundles/index.umd.js +208 -237
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -11
- package/components/containers/accordion/esm2022/accordion.directive.mjs +5 -4
- package/components/containers/accordion/esm2022/public_api.mjs +1 -2
- package/components/containers/accordion/fesm2022/index.mjs +189 -217
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/public_api.d.ts +0 -1
- package/components/containers/layout-grid/bundles/index.umd.js +13 -43
- package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +7 -9
- package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +3 -2
- package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +3 -2
- package/components/containers/layout-grid/esm2022/public_api.mjs +1 -2
- package/components/containers/layout-grid/fesm2022/index.mjs +13 -43
- package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
- package/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +1 -1
- package/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +1 -1
- package/components/containers/layout-grid/layout-grid.directive.d.ts +1 -1
- package/components/containers/layout-grid/public_api.d.ts +0 -1
- package/components/containers/linear-layout/bundles/index.umd.js +8 -33
- package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +3 -2
- package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +3 -2
- package/components/containers/linear-layout/esm2022/public_api.mjs +1 -2
- package/components/containers/linear-layout/fesm2022/index.mjs +7 -32
- package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
- package/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +1 -1
- package/components/containers/linear-layout/linear-layout.directive.d.ts +1 -1
- package/components/containers/linear-layout/public_api.d.ts +0 -1
- package/components/containers/panel/bundles/index.umd.js +87 -118
- package/components/containers/panel/esm2022/panel.component.mjs +48 -46
- package/components/containers/panel/esm2022/public_api.mjs +1 -2
- package/components/containers/panel/fesm2022/index.mjs +49 -79
- package/components/containers/panel/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/panel.component.d.ts +1 -1
- package/components/containers/panel/public_api.d.ts +0 -1
- package/components/containers/tabs/bundles/index.umd.js +84 -116
- package/components/containers/tabs/esm2022/public_api.mjs +1 -2
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +8 -10
- package/components/containers/tabs/esm2022/tabs.component.mjs +35 -33
- package/components/containers/tabs/esm2022/tabs.props.mjs +1 -5
- package/components/containers/tabs/fesm2022/index.mjs +45 -76
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/public_api.d.ts +0 -1
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +1 -1
- package/components/containers/tabs/tabs.component.d.ts +1 -1
- package/components/containers/tile/bundles/index.umd.js +6 -29
- package/components/containers/tile/esm2022/public_api.mjs +1 -2
- package/components/containers/tile/esm2022/tile.directive.mjs +3 -2
- package/components/containers/tile/fesm2022/index.mjs +5 -28
- package/components/containers/tile/fesm2022/index.mjs.map +1 -1
- package/components/containers/tile/public_api.d.ts +0 -1
- package/components/containers/tile/tile.directive.d.ts +1 -1
- package/components/containers/wizard/bundles/index.umd.js +355 -186
- package/components/containers/wizard/esm2022/public_api.mjs +2 -3
- package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +3 -2
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +176 -0
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.props.mjs +8 -5
- package/components/containers/wizard/esm2022/wizard.component.mjs +264 -102
- package/components/containers/wizard/esm2022/wizard.props.mjs +8 -4
- package/components/containers/wizard/fesm2022/index.mjs +323 -152
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/public_api.d.ts +1 -2
- package/components/containers/wizard/wizard-action/wizard-action.directive.d.ts +1 -1
- package/components/containers/wizard/wizard-step/{wizard-step.directive.d.ts → wizard-step.component.d.ts} +12 -6
- package/components/containers/wizard/wizard.component.d.ts +64 -18
- package/components/data/card/bundles/index.umd.js +92 -135
- package/components/data/card/card-actions/card-actions.directive.d.ts +1 -1
- package/components/data/card/card-content/card-content.component.d.ts +1 -1
- package/components/data/card/card-footer/card-footer.directive.d.ts +1 -1
- package/components/data/card/card.component.d.ts +1 -1
- package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +3 -2
- package/components/data/card/esm2022/card-content/card-content.component.mjs +7 -6
- package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +3 -2
- package/components/data/card/esm2022/card.component.mjs +39 -38
- package/components/data/card/esm2022/public_api.mjs +1 -2
- package/components/data/card/fesm2022/index.mjs +49 -92
- package/components/data/card/fesm2022/index.mjs.map +1 -1
- package/components/data/card/public_api.d.ts +0 -1
- package/components/data/form/bundles/index.umd.js +115 -182
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +3 -2
- package/components/data/form/esm2022/form-widget.directive.mjs +3 -2
- package/components/data/form/esm2022/form.component.mjs +101 -104
- package/components/data/form/esm2022/form.props.mjs +1 -11
- package/components/data/form/esm2022/live-actions/dependson.directive.mjs +3 -2
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +3 -2
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +3 -6
- package/components/data/form/esm2022/public_api.mjs +1 -2
- package/components/data/form/fesm2022/index.mjs +117 -184
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form-action/form-action.directive.d.ts +1 -1
- package/components/data/form/form-field/form-field.directive.d.ts +1 -1
- package/components/data/form/form-widget.directive.d.ts +1 -1
- package/components/data/form/form.component.d.ts +1 -1
- package/components/data/form/live-actions/dependson.directive.d.ts +1 -1
- package/components/data/form/live-actions/live-actions.directive.d.ts +1 -1
- package/components/data/form/live-filter/live-filter.directive.d.ts +1 -1
- package/components/data/form/live-form/live-form.directive.d.ts +1 -1
- package/components/data/form/public_api.d.ts +0 -1
- package/components/data/list/bundles/index.umd.js +195 -504
- package/components/data/list/esm2022/list-item.directive.mjs +4 -3
- package/components/data/list/esm2022/list.component.mjs +187 -232
- package/components/data/list/esm2022/list.props.mjs +2 -3
- package/components/data/list/esm2022/public_api.mjs +1 -2
- package/components/data/list/fesm2022/index.mjs +193 -502
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list-item.directive.d.ts +1 -1
- package/components/data/list/list.component.d.ts +1 -1
- package/components/data/list/public_api.d.ts +0 -1
- package/components/data/live-table/bundles/index.umd.js +9 -33
- package/components/data/live-table/esm2022/live-table.component.mjs +7 -6
- package/components/data/live-table/esm2022/public_api.mjs +1 -2
- package/components/data/live-table/fesm2022/index.mjs +8 -32
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/live-table.component.d.ts +1 -1
- package/components/data/live-table/public_api.d.ts +0 -1
- package/components/data/pagination/bundles/index.umd.js +80 -110
- package/components/data/pagination/esm2022/pagination.component.mjs +80 -76
- package/components/data/pagination/esm2022/public_api.mjs +1 -2
- package/components/data/pagination/fesm2022/index.mjs +81 -110
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +1 -1
- package/components/data/pagination/public_api.d.ts +0 -1
- package/components/data/table/bundles/index.umd.js +66 -135
- package/components/data/table/esm2022/public_api.mjs +1 -2
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -2
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +3 -2
- package/components/data/table/esm2022/table-cud.directive.mjs +3 -2
- package/components/data/table/esm2022/table-filter.directive.mjs +4 -2
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +3 -2
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
- package/components/data/table/esm2022/table.component.mjs +50 -49
- package/components/data/table/fesm2022/index.mjs +70 -140
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/public_api.d.ts +0 -1
- package/components/data/table/table-action/table-action.directive.d.ts +1 -1
- package/components/data/table/table-column/table-column.directive.d.ts +1 -1
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +1 -1
- package/components/data/table/table-cud.directive.d.ts +1 -1
- package/components/data/table/table-filter.directive.d.ts +1 -1
- package/components/data/table/table-row/table-row.directive.d.ts +1 -1
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +1 -1
- package/components/data/table/table.component.d.ts +1 -1
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +1 -1
- package/components/dialogs/alert-dialog/bundles/index.umd.js +32 -64
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +10 -10
- package/components/dialogs/alert-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +11 -43
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/alert-dialog/public_api.d.ts +0 -1
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +10 -42
- package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +1 -1
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -9
- package/components/dialogs/confirm-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +10 -42
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/confirm-dialog/public_api.d.ts +0 -1
- package/components/dialogs/default/bundles/index.umd.js +76 -136
- package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +1 -1
- package/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +1 -1
- package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +1 -1
- package/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +3 -2
- package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +3 -2
- package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +70 -97
- package/components/dialogs/default/esm2022/public_api.mjs +1 -2
- package/components/dialogs/default/fesm2022/index.mjs +78 -137
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/public_api.d.ts +0 -1
- package/components/dialogs/design-dialog/bundles/index.umd.js +16 -47
- package/components/dialogs/design-dialog/dialog.component.d.ts +1 -1
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +14 -13
- package/components/dialogs/design-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/design-dialog/fesm2022/index.mjs +14 -45
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/public_api.d.ts +0 -1
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -57
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -21
- package/components/dialogs/iframe-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +21 -57
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +1 -1
- package/components/dialogs/iframe-dialog/public_api.d.ts +0 -1
- package/components/dialogs/login-dialog/bundles/index.umd.js +6 -38
- package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +3 -2
- package/components/dialogs/login-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/login-dialog/fesm2022/index.mjs +6 -41
- package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/login-dialog/login-dialog.directive.d.ts +1 -1
- package/components/dialogs/login-dialog/public_api.d.ts +0 -1
- package/components/dialogs/partial-dialog/bundles/index.umd.js +17 -49
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +16 -15
- package/components/dialogs/partial-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +16 -47
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +1 -1
- package/components/dialogs/partial-dialog/public_api.d.ts +0 -1
- package/components/input/calendar/bundles/index.umd.js +19 -46
- package/components/input/calendar/calendar.component.d.ts +1 -1
- package/components/input/calendar/esm2022/calendar.component.mjs +24 -10
- package/components/input/calendar/esm2022/calendar.props.mjs +1 -1
- package/components/input/calendar/esm2022/public_api.mjs +1 -2
- package/components/input/calendar/fesm2022/index.mjs +26 -48
- package/components/input/calendar/fesm2022/index.mjs.map +1 -1
- package/components/input/calendar/public_api.d.ts +0 -1
- package/components/input/chips/bundles/index.umd.js +86 -114
- package/components/input/chips/chips.component.d.ts +1 -1
- package/components/input/chips/esm2022/chips.component.mjs +28 -27
- package/components/input/chips/esm2022/public_api.mjs +1 -2
- package/components/input/chips/fesm2022/index.mjs +29 -56
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/chips/public_api.d.ts +0 -1
- package/components/input/color-picker/bundles/index.umd.js +10 -40
- package/components/input/color-picker/color-picker.component.d.ts +1 -1
- package/components/input/color-picker/esm2022/color-picker.component.mjs +10 -6
- package/components/input/color-picker/esm2022/public_api.mjs +1 -2
- package/components/input/color-picker/fesm2022/index.mjs +11 -40
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/public_api.d.ts +0 -1
- package/components/input/currency/bundles/index.umd.js +11 -41
- package/components/input/currency/currency.component.d.ts +1 -1
- package/components/input/currency/esm2022/currency.component.mjs +8 -6
- package/components/input/currency/esm2022/public_api.mjs +1 -2
- package/components/input/currency/fesm2022/index.mjs +11 -41
- package/components/input/currency/fesm2022/index.mjs.map +1 -1
- package/components/input/currency/public_api.d.ts +0 -1
- package/components/input/default/bundles/index.umd.js +2183 -2263
- package/components/input/default/button/button.component.d.ts +1 -1
- package/components/input/default/button-group/button-group.directive.d.ts +1 -1
- package/components/input/default/caption-position.directive.d.ts +1 -1
- package/components/input/default/checkbox/checkbox.component.d.ts +1 -1
- package/components/input/default/checkboxset/checkboxset.component.d.ts +1 -1
- package/components/input/default/composite/composite.directive.d.ts +1 -1
- package/components/input/default/esm2022/button/button.component.mjs +23 -21
- package/components/input/default/esm2022/button-group/button-group.directive.mjs +3 -2
- package/components/input/default/esm2022/caption-position.directive.mjs +3 -2
- package/components/input/default/esm2022/checkbox/checkbox.component.mjs +9 -6
- package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +73 -72
- package/components/input/default/esm2022/composite/composite.directive.mjs +3 -2
- package/components/input/default/esm2022/number/number.component.mjs +9 -6
- package/components/input/default/esm2022/public_api.mjs +1 -2
- package/components/input/default/esm2022/radioset/radioset.component.mjs +73 -72
- package/components/input/default/esm2022/select/select.component.mjs +29 -32
- package/components/input/default/esm2022/switch/switch.component.mjs +29 -27
- package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +9 -6
- package/components/input/default/esm2022/text/color/input-color.component.mjs +9 -6
- package/components/input/default/esm2022/text/email/input-email.component.mjs +9 -6
- package/components/input/default/esm2022/text/number/input-number.component.mjs +9 -6
- package/components/input/default/esm2022/text/text/input-text.component.mjs +10 -6
- package/components/input/default/esm2022/textarea/textarea.component.mjs +14 -11
- package/components/input/default/fesm2022/index.mjs +2198 -2277
- package/components/input/default/fesm2022/index.mjs.map +1 -1
- package/components/input/default/number/number.component.d.ts +1 -1
- package/components/input/default/public_api.d.ts +0 -1
- package/components/input/default/radioset/radioset.component.d.ts +1 -1
- package/components/input/default/select/select.component.d.ts +1 -1
- package/components/input/default/switch/switch.component.d.ts +1 -1
- package/components/input/default/text/calendar/input-calendar.component.d.ts +1 -1
- package/components/input/default/text/color/input-color.component.d.ts +1 -1
- package/components/input/default/text/email/input-email.component.d.ts +1 -1
- package/components/input/default/text/number/input-number.component.d.ts +1 -1
- package/components/input/default/text/text/input-text.component.d.ts +1 -1
- package/components/input/default/textarea/textarea.component.d.ts +1 -1
- package/components/input/epoch/base-date-time.component.d.ts +0 -1
- package/components/input/epoch/bundles/index.umd.js +181 -229
- package/components/input/epoch/date/date.component.d.ts +1 -1
- package/components/input/epoch/date/imaskUtil.d.ts +2 -2
- package/components/input/epoch/date-time/date-time-picker.component.d.ts +6 -6
- package/components/input/epoch/date-time/date-time.component.d.ts +1 -1
- package/components/input/epoch/esm2022/base-date-time.component.mjs +5 -9
- package/components/input/epoch/esm2022/date/date.component.mjs +19 -18
- package/components/input/epoch/esm2022/date/imaskUtil.mjs +2 -1
- package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +75 -62
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +27 -24
- package/components/input/epoch/esm2022/picker/picker.component.mjs +33 -28
- package/components/input/epoch/esm2022/public_api.mjs +1 -2
- package/components/input/epoch/esm2022/time/time.component.mjs +24 -21
- package/components/input/epoch/fesm2022/index.mjs +158 -204
- package/components/input/epoch/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/picker/picker.component.d.ts +2 -2
- package/components/input/epoch/public_api.d.ts +0 -1
- package/components/input/epoch/time/time.component.d.ts +1 -1
- package/components/input/file-upload/bundles/index.umd.js +135 -178
- package/components/input/file-upload/esm2022/file-upload.component.mjs +133 -150
- package/components/input/file-upload/esm2022/public_api.mjs +1 -2
- package/components/input/file-upload/fesm2022/index.mjs +133 -175
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/file-upload.component.d.ts +1 -2
- package/components/input/file-upload/public_api.d.ts +0 -1
- package/components/input/rating/bundles/index.umd.js +50 -77
- package/components/input/rating/esm2022/public_api.mjs +1 -2
- package/components/input/rating/esm2022/rating.component.mjs +23 -20
- package/components/input/rating/fesm2022/index.mjs +23 -49
- package/components/input/rating/fesm2022/index.mjs.map +1 -1
- package/components/input/rating/public_api.d.ts +0 -1
- package/components/input/rating/rating.component.d.ts +1 -1
- package/components/input/slider/bundles/index.umd.js +35 -63
- package/components/input/slider/esm2022/public_api.mjs +1 -2
- package/components/input/slider/esm2022/slider.component.mjs +15 -13
- package/components/input/slider/fesm2022/index.mjs +15 -42
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/public_api.d.ts +0 -1
- package/components/input/slider/slider.component.d.ts +1 -1
- package/components/navigation/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/components/navigation/breadcrumb/bundles/index.umd.js +40 -67
- package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +23 -21
- package/components/navigation/breadcrumb/esm2022/public_api.mjs +1 -2
- package/components/navigation/breadcrumb/fesm2022/index.mjs +23 -50
- package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- package/components/navigation/breadcrumb/public_api.d.ts +0 -1
- package/components/navigation/menu/bundles/index.umd.js +642 -696
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +1 -1
- package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +11 -9
- package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +24 -18
- package/components/navigation/menu/esm2022/menu.component.mjs +34 -31
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +3 -2
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +39 -29
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +6 -3
- package/components/navigation/menu/esm2022/public_api.mjs +1 -2
- package/components/navigation/menu/fesm2022/index.mjs +534 -587
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +1 -1
- package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +1 -1
- package/components/navigation/menu/menu.component.d.ts +1 -1
- package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +1 -1
- package/components/navigation/menu/nav/nav.component.d.ts +1 -1
- package/components/navigation/menu/nav/navigation-control.directive.d.ts +1 -1
- package/components/navigation/menu/public_api.d.ts +0 -1
- package/components/navigation/navbar/bundles/index.umd.js +20 -44
- package/components/navigation/navbar/esm2022/navbar.component.mjs +18 -16
- package/components/navigation/navbar/esm2022/public_api.mjs +1 -2
- package/components/navigation/navbar/fesm2022/index.mjs +18 -41
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- package/components/navigation/navbar/navbar.component.d.ts +1 -1
- package/components/navigation/navbar/public_api.d.ts +0 -1
- package/components/navigation/popover/bundles/index.umd.js +12 -43
- package/components/navigation/popover/esm2022/popover.component.mjs +11 -9
- package/components/navigation/popover/esm2022/public_api.mjs +1 -2
- package/components/navigation/popover/fesm2022/index.mjs +11 -41
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +1 -1
- package/components/navigation/popover/public_api.d.ts +0 -1
- package/components/page/default/bundles/index.umd.js +96 -138
- package/components/page/default/content/content.component.d.ts +1 -1
- package/components/page/default/esm2022/content/content.component.mjs +7 -6
- package/components/page/default/esm2022/layout.directive.mjs +3 -2
- package/components/page/default/esm2022/page-content/page-content.component.mjs +7 -6
- package/components/page/default/esm2022/page-content/page-content.props.mjs +2 -3
- package/components/page/default/esm2022/page.directive.mjs +3 -2
- package/components/page/default/esm2022/public_api.mjs +1 -2
- package/components/page/default/esm2022/router-outlet.directive.mjs +3 -2
- package/components/page/default/esm2022/spa-page.directive.mjs +3 -2
- package/components/page/default/fesm2022/index.mjs +96 -138
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/default/layout.directive.d.ts +1 -1
- package/components/page/default/page-content/page-content.component.d.ts +1 -1
- package/components/page/default/page.directive.d.ts +1 -1
- package/components/page/default/public_api.d.ts +0 -1
- package/components/page/default/router-outlet.directive.d.ts +1 -1
- package/components/page/default/spa-page.directive.d.ts +1 -1
- package/components/page/footer/bundles/index.umd.js +6 -29
- package/components/page/footer/esm2022/footer.directive.mjs +3 -2
- package/components/page/footer/esm2022/public_api.mjs +1 -2
- package/components/page/footer/fesm2022/index.mjs +5 -28
- package/components/page/footer/fesm2022/index.mjs.map +1 -1
- package/components/page/footer/footer.directive.d.ts +1 -1
- package/components/page/footer/public_api.d.ts +0 -1
- package/components/page/header/bundles/index.umd.js +9 -33
- package/components/page/header/esm2022/header.component.mjs +7 -6
- package/components/page/header/esm2022/public_api.mjs +1 -2
- package/components/page/header/fesm2022/index.mjs +8 -32
- package/components/page/header/fesm2022/index.mjs.map +1 -1
- package/components/page/header/header.component.d.ts +1 -1
- package/components/page/header/public_api.d.ts +0 -1
- package/components/page/left-panel/bundles/index.umd.js +6 -29
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -2
- package/components/page/left-panel/esm2022/public_api.mjs +1 -2
- package/components/page/left-panel/fesm2022/index.mjs +5 -28
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/left-panel/left-panel.directive.d.ts +1 -1
- package/components/page/left-panel/public_api.d.ts +0 -1
- package/components/page/right-panel/bundles/index.umd.js +6 -29
- package/components/page/right-panel/esm2022/public_api.mjs +1 -2
- package/components/page/right-panel/esm2022/right-panel.directive.mjs +3 -2
- package/components/page/right-panel/fesm2022/index.mjs +5 -28
- package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/right-panel/public_api.d.ts +0 -1
- package/components/page/right-panel/right-panel.directive.d.ts +1 -1
- package/components/page/top-nav/bundles/index.umd.js +6 -29
- package/components/page/top-nav/esm2022/public_api.mjs +1 -2
- package/components/page/top-nav/esm2022/top-nav.directive.mjs +3 -2
- package/components/page/top-nav/fesm2022/index.mjs +5 -28
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- package/components/page/top-nav/public_api.d.ts +0 -1
- package/components/page/top-nav/top-nav.directive.d.ts +1 -1
- package/components/prefab/bundles/index.umd.js +8 -33
- package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
- package/components/prefab/esm2022/prefab.directive.mjs +3 -2
- package/components/prefab/esm2022/public_api.mjs +1 -2
- package/components/prefab/fesm2022/index.mjs +7 -32
- package/components/prefab/fesm2022/index.mjs.map +1 -1
- package/components/prefab/prefab-container/prefab-container.directive.d.ts +1 -1
- package/components/prefab/prefab.directive.d.ts +1 -1
- package/components/prefab/public_api.d.ts +0 -1
- package/core/bundles/index.umd.js +30 -85
- package/core/esm2022/public_api.mjs +2 -3
- package/core/esm2022/utils/build-utils.mjs +9 -5
- package/core/esm2022/utils/utils.mjs +11 -40
- package/core/fesm2022/index.mjs +31 -81
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +1 -2
- package/core/utils/utils.d.ts +1 -3
- package/http/bundles/index.umd.js +9 -34
- package/http/esm2022/http.service.mjs +6 -3
- package/http/esm2022/public_api.mjs +4 -2
- package/http/fesm2022/index.mjs +9 -34
- package/http/fesm2022/index.mjs.map +1 -1
- package/http/public_api.d.ts +3 -1
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +7 -42
- package/oAuth/esm2022/oAuth.utils.mjs +6 -23
- package/oAuth/esm2022/public_api.mjs +1 -2
- package/oAuth/fesm2022/index.mjs +7 -40
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/public_api.d.ts +0 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +681 -596
- package/runtime/base/components/app-component/app.component.d.ts +1 -1
- package/runtime/base/components/app-spinner.component.d.ts +1 -1
- package/runtime/base/components/custom-toaster.component.d.ts +1 -1
- package/runtime/base/components/empty-component/empty-page.component.d.ts +1 -1
- package/runtime/base/components/prefab-preview.component.d.ts +1 -1
- package/runtime/base/directives/accessroles.directive.d.ts +1 -1
- package/runtime/base/directives/prefab.directive.d.ts +1 -1
- package/runtime/base/esm2022/components/app-component/app.component.mjs +42 -49
- package/runtime/base/esm2022/components/app-spinner.component.mjs +29 -21
- package/runtime/base/esm2022/components/base-page.component.mjs +3 -11
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +3 -11
- package/runtime/base/esm2022/components/custom-toaster.component.mjs +20 -14
- package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +8 -6
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +3 -2
- package/runtime/base/esm2022/directives/prefab.directive.mjs +3 -2
- package/runtime/base/esm2022/public_api.mjs +1 -1
- package/runtime/base/esm2022/resolves/security-config.resolve.mjs +4 -6
- package/runtime/base/esm2022/runtime-base.module.mjs +486 -337
- package/runtime/base/esm2022/services/app.manager.service.mjs +31 -48
- package/runtime/base/esm2022/services/i18n.service.mjs +37 -72
- package/runtime/base/fesm2022/index.mjs +689 -605
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/runtime-base.module.d.ts +115 -84
- package/runtime/base/services/i18n.service.d.ts +1 -1
- package/runtime/dynamic/app/components/page-wrapper.component.d.ts +1 -1
- package/runtime/dynamic/bundles/index.umd.js +113 -69
- package/runtime/dynamic/esm2022/app/app.module.mjs +151 -105
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +7 -4
- package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +4 -2
- package/runtime/dynamic/esm2022/main.mjs +2 -7
- package/runtime/dynamic/fesm2022/index.mjs +159 -114
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/security/bundles/index.umd.js +3 -34
- package/security/esm2022/public_api.mjs +1 -2
- package/security/esm2022/security.service.mjs +4 -15
- package/security/fesm2022/index.mjs +5 -32
- package/security/fesm2022/index.mjs.map +1 -1
- package/security/public_api.d.ts +0 -1
- package/transpiler/bundles/index.umd.js +271 -168
- package/transpiler/esm2022/build.mjs +1 -6
- package/transpiler/esm2022/imports.mjs +268 -161
- package/transpiler/fesm2022/index.mjs +267 -165
- package/transpiler/fesm2022/index.mjs.map +1 -1
- package/variables/bundles/index.umd.js +14 -198
- package/variables/constants/variables.constants.d.ts +0 -2
- package/variables/esm2022/constants/variables.constants.mjs +1 -3
- package/variables/esm2022/factory/variable-manager.factory.mjs +1 -3
- package/variables/esm2022/factory/variable.factory.mjs +1 -5
- package/variables/esm2022/manager/action/logout-action.manager.mjs +5 -7
- package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +3 -3
- package/variables/esm2022/public_api.mjs +1 -5
- package/variables/esm2022/service/metadata-service/metadata.service.mjs +6 -11
- package/variables/esm2022/util/variable/service-variable.utils.mjs +1 -4
- package/variables/esm2022/util/variable/variables.utils.mjs +4 -19
- package/variables/fesm2022/index.mjs +15 -198
- package/variables/fesm2022/index.mjs.map +1 -1
- package/variables/public_api.d.ts +0 -4
- package/components/advanced/carousel/carousel.module.d.ts +0 -11
- package/components/advanced/carousel/esm2022/carousel.module.mjs +0 -36
- package/components/advanced/custom/custom-widget.module.d.ts +0 -10
- package/components/advanced/custom/esm2022/custom-widget.module.mjs +0 -32
- package/components/advanced/login/esm2022/login.module.mjs +0 -28
- package/components/advanced/login/login.module.d.ts +0 -9
- package/components/advanced/marquee/esm2022/marquee.module.mjs +0 -28
- package/components/advanced/marquee/marquee.module.d.ts +0 -9
- package/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +0 -221
- package/components/base/widgets/common/smooth-scroll/smooth-scroll.directive.d.ts +0 -22
- package/components/basic/default/basic.module.d.ts +0 -17
- package/components/basic/default/esm2022/basic.module.mjs +0 -60
- package/components/basic/progress/esm2022/progress.module.mjs +0 -36
- package/components/basic/progress/progress.module.d.ts +0 -11
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +0 -28
- package/components/basic/rich-text-editor/rich-text-editor.module.d.ts +0 -9
- package/components/basic/search/esm2022/search.module.mjs +0 -45
- package/components/basic/search/search.module.d.ts +0 -12
- package/components/basic/tree/esm2022/tree.module.mjs +0 -28
- package/components/basic/tree/tree.module.d.ts +0 -9
- package/components/chart/chart.module.d.ts +0 -10
- package/components/chart/esm2022/chart.module.mjs +0 -32
- package/components/containers/accordion/accordion.module.d.ts +0 -10
- package/components/containers/accordion/esm2022/accordion.module.mjs +0 -32
- package/components/containers/layout-grid/esm2022/layout-grid.module.mjs +0 -36
- package/components/containers/layout-grid/layout-grid.module.d.ts +0 -11
- package/components/containers/linear-layout/esm2022/linear-layout.module.mjs +0 -32
- package/components/containers/linear-layout/linear-layout.module.d.ts +0 -10
- package/components/containers/panel/esm2022/panel.module.mjs +0 -36
- package/components/containers/panel/panel.module.d.ts +0 -11
- package/components/containers/tabs/esm2022/tabs.module.mjs +0 -32
- package/components/containers/tabs/tabs.module.d.ts +0 -10
- package/components/containers/tile/esm2022/tile.module.mjs +0 -28
- package/components/containers/tile/tile.module.d.ts +0 -9
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +0 -140
- package/components/containers/wizard/esm2022/wizard.module.mjs +0 -40
- package/components/containers/wizard/wizard.module.d.ts +0 -12
- package/components/data/card/card.module.d.ts +0 -15
- package/components/data/card/esm2022/card.module.mjs +0 -52
- package/components/data/form/esm2022/form.module.mjs +0 -68
- package/components/data/form/form.module.d.ts +0 -19
- package/components/data/list/esm2022/list.module.mjs +0 -40
- package/components/data/list/list.module.d.ts +0 -11
- package/components/data/live-table/esm2022/live-table.module.mjs +0 -28
- package/components/data/live-table/live-table.module.d.ts +0 -9
- package/components/data/pagination/esm2022/pagination.module.mjs +0 -36
- package/components/data/pagination/pagination.module.d.ts +0 -11
- package/components/data/table/esm2022/table.module.mjs +0 -91
- package/components/data/table/table.module.d.ts +0 -24
- package/components/dialogs/alert-dialog/alert-dialog.module.d.ts +0 -11
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +0 -36
- package/components/dialogs/confirm-dialog/confirm-dialog.module.d.ts +0 -11
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +0 -36
- package/components/dialogs/default/dialog.module.d.ts +0 -12
- package/components/dialogs/default/esm2022/dialog.module.mjs +0 -40
- package/components/dialogs/design-dialog/design-dialog.module.d.ts +0 -11
- package/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +0 -36
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +0 -40
- package/components/dialogs/iframe-dialog/iframe-dialog.module.d.ts +0 -12
- package/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +0 -40
- package/components/dialogs/login-dialog/login-dialog.module.d.ts +0 -12
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +0 -36
- package/components/dialogs/partial-dialog/partial-dialog.module.d.ts +0 -11
- package/components/input/calendar/calendar.module.d.ts +0 -12
- package/components/input/calendar/esm2022/calendar.module.mjs +0 -40
- package/components/input/chips/chips.module.d.ts +0 -10
- package/components/input/chips/esm2022/chips.module.mjs +0 -32
- package/components/input/color-picker/color-picker.module.d.ts +0 -11
- package/components/input/color-picker/esm2022/color-picker.module.mjs +0 -36
- package/components/input/currency/currency.module.d.ts +0 -11
- package/components/input/currency/esm2022/currency.module.mjs +0 -36
- package/components/input/default/esm2022/input.module.mjs +0 -96
- package/components/input/default/input.module.d.ts +0 -26
- package/components/input/epoch/epoch.module.d.ts +0 -18
- package/components/input/epoch/esm2022/epoch.module.mjs +0 -70
- package/components/input/file-upload/esm2022/file-upload.module.mjs +0 -28
- package/components/input/file-upload/file-upload.module.d.ts +0 -9
- package/components/input/rating/esm2022/rating.module.mjs +0 -32
- package/components/input/rating/rating.module.d.ts +0 -10
- package/components/input/slider/esm2022/slider.module.mjs +0 -32
- package/components/input/slider/slider.module.d.ts +0 -10
- package/components/navigation/breadcrumb/breadcrumb.module.d.ts +0 -10
- package/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +0 -32
- package/components/navigation/menu/esm2022/menu.module.mjs +0 -71
- package/components/navigation/menu/menu.module.d.ts +0 -17
- package/components/navigation/navbar/esm2022/navbar.module.mjs +0 -28
- package/components/navigation/navbar/navbar.module.d.ts +0 -9
- package/components/navigation/popover/esm2022/popover.module.mjs +0 -36
- package/components/navigation/popover/popover.module.d.ts +0 -11
- package/components/page/default/esm2022/page.module.mjs +0 -55
- package/components/page/default/page.module.d.ts +0 -14
- package/components/page/footer/esm2022/footer.module.mjs +0 -28
- package/components/page/footer/footer.module.d.ts +0 -9
- package/components/page/header/esm2022/header.module.mjs +0 -28
- package/components/page/header/header.module.d.ts +0 -9
- package/components/page/left-panel/esm2022/left-panel.module.mjs +0 -28
- package/components/page/left-panel/left-panel.module.d.ts +0 -9
- package/components/page/right-panel/esm2022/right-panel.module.mjs +0 -28
- package/components/page/right-panel/right-panel.module.d.ts +0 -9
- package/components/page/top-nav/esm2022/top-nav.module.mjs +0 -28
- package/components/page/top-nav/top-nav.module.d.ts +0 -9
- package/components/prefab/esm2022/prefab.module.mjs +0 -32
- package/components/prefab/prefab.module.d.ts +0 -10
- package/core/core.module.d.ts +0 -9
- package/core/esm2022/core.module.mjs +0 -27
- package/http/esm2022/http-service.module.mjs +0 -36
- package/http/http-service.module.d.ts +0 -14
- package/locales/fullcalendar/af.js +0 -27
- package/locales/fullcalendar/ar-dz.js +0 -28
- package/locales/fullcalendar/ar-kw.js +0 -28
- package/locales/fullcalendar/ar-ly.js +0 -28
- package/locales/fullcalendar/ar-ma.js +0 -28
- package/locales/fullcalendar/ar-sa.js +0 -28
- package/locales/fullcalendar/ar-tn.js +0 -28
- package/locales/fullcalendar/ar.js +0 -28
- package/locales/fullcalendar/az.js +0 -29
- package/locales/fullcalendar/bg.js +0 -28
- package/locales/fullcalendar/bs.js +0 -29
- package/locales/fullcalendar/ca.js +0 -27
- package/locales/fullcalendar/cs.js +0 -29
- package/locales/fullcalendar/da.js +0 -27
- package/locales/fullcalendar/de.js +0 -30
- package/locales/fullcalendar/el.js +0 -27
- package/locales/fullcalendar/en-au.js +0 -14
- package/locales/fullcalendar/en-gb.js +0 -14
- package/locales/fullcalendar/en-nz.js +0 -14
- package/locales/fullcalendar/es-us.js +0 -27
- package/locales/fullcalendar/es.js +0 -27
- package/locales/fullcalendar/et.js +0 -29
- package/locales/fullcalendar/eu.js +0 -27
- package/locales/fullcalendar/fa.js +0 -30
- package/locales/fullcalendar/fi.js +0 -27
- package/locales/fullcalendar/fr-ca.js +0 -24
- package/locales/fullcalendar/fr-ch.js +0 -28
- package/locales/fullcalendar/fr.js +0 -28
- package/locales/fullcalendar/gl.js +0 -27
- package/locales/fullcalendar/he.js +0 -24
- package/locales/fullcalendar/hi.js +0 -29
- package/locales/fullcalendar/hr.js +0 -29
- package/locales/fullcalendar/hu.js +0 -27
- package/locales/fullcalendar/id.js +0 -27
- package/locales/fullcalendar/is.js +0 -27
- package/locales/fullcalendar/it.js +0 -29
- package/locales/fullcalendar/ja.js +0 -25
- package/locales/fullcalendar/ka.js +0 -29
- package/locales/fullcalendar/kk.js +0 -29
- package/locales/fullcalendar/ko.js +0 -23
- package/locales/fullcalendar/lb.js +0 -27
- package/locales/fullcalendar/lt.js +0 -27
- package/locales/fullcalendar/lv.js +0 -29
- package/locales/fullcalendar/mk.js +0 -25
- package/locales/fullcalendar/ms.js +0 -29
- package/locales/fullcalendar/nb.js +0 -27
- package/locales/fullcalendar/ne.js +0 -27
- package/locales/fullcalendar/nl.js +0 -27
- package/locales/fullcalendar/nn.js +0 -27
- package/locales/fullcalendar/pl.js +0 -27
- package/locales/fullcalendar/pt-br.js +0 -25
- package/locales/fullcalendar/pt.js +0 -27
- package/locales/fullcalendar/ro.js +0 -29
- package/locales/fullcalendar/ru.js +0 -29
- package/locales/fullcalendar/sk.js +0 -29
- package/locales/fullcalendar/sl.js +0 -27
- package/locales/fullcalendar/sq.js +0 -29
- package/locales/fullcalendar/sr-cyrl.js +0 -29
- package/locales/fullcalendar/sr.js +0 -29
- package/locales/fullcalendar/sv.js +0 -27
- package/locales/fullcalendar/th.js +0 -30
- package/locales/fullcalendar/tr.js +0 -27
- package/locales/fullcalendar/ug.js +0 -17
- package/locales/fullcalendar/uk.js +0 -29
- package/locales/fullcalendar/uz.js +0 -21
- package/locales/fullcalendar/vi.js +0 -29
- package/locales/fullcalendar/zh-cn.js +0 -30
- package/locales/fullcalendar/zh-tw.js +0 -23
- package/mobile/components/basic/default/.npmignore +0 -2
- package/mobile/components/basic/default/anchor/anchor.directive.d.ts +0 -8
- package/mobile/components/basic/default/app-update/app-update.component.d.ts +0 -26
- package/mobile/components/basic/default/basic.module.d.ts +0 -15
- package/mobile/components/basic/default/bundles/index.umd.js +0 -980
- package/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +0 -44
- package/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +0 -116
- package/mobile/components/basic/default/esm2022/basic.module.mjs +0 -52
- package/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +0 -236
- package/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +0 -85
- package/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +0 -61
- package/mobile/components/basic/default/esm2022/index.mjs +0 -5
- package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +0 -183
- package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.props.mjs +0 -5
- package/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +0 -47
- package/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +0 -175
- package/mobile/components/basic/default/esm2022/public_api.mjs +0 -10
- package/mobile/components/basic/default/fesm2022/index.mjs +0 -958
- package/mobile/components/basic/default/fesm2022/index.mjs.map +0 -1
- package/mobile/components/basic/default/file-browser/file-browser.component.d.ts +0 -39
- package/mobile/components/basic/default/file-browser/file-selector.service.d.ts +0 -27
- package/mobile/components/basic/default/image-cache/image-cache.directive.d.ts +0 -18
- package/mobile/components/basic/default/index.d.ts +0 -5
- package/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +0 -28
- package/mobile/components/basic/default/network-info-toaster/network-info-toaster.props.d.ts +0 -1
- package/mobile/components/basic/default/package.json +0 -23
- package/mobile/components/basic/default/process-manager/process-management.service.d.ts +0 -36
- package/mobile/components/basic/default/process-manager/process-manager.component.d.ts +0 -33
- package/mobile/components/basic/default/public_api.d.ts +0 -9
- package/mobile/components/basic/search/.npmignore +0 -2
- package/mobile/components/basic/search/bundles/index.umd.js +0 -66
- package/mobile/components/basic/search/esm2022/index.mjs +0 -5
- package/mobile/components/basic/search/esm2022/public_api.mjs +0 -3
- package/mobile/components/basic/search/esm2022/search.directive.mjs +0 -17
- package/mobile/components/basic/search/esm2022/search.module.mjs +0 -28
- package/mobile/components/basic/search/fesm2022/index.mjs +0 -49
- package/mobile/components/basic/search/fesm2022/index.mjs.map +0 -1
- package/mobile/components/basic/search/index.d.ts +0 -5
- package/mobile/components/basic/search/package.json +0 -23
- package/mobile/components/basic/search/public_api.d.ts +0 -2
- package/mobile/components/basic/search/search.directive.d.ts +0 -7
- package/mobile/components/basic/search/search.module.d.ts +0 -9
- package/mobile/components/containers/segmented-control/.npmignore +0 -2
- package/mobile/components/containers/segmented-control/bundles/index.umd.js +0 -281
- package/mobile/components/containers/segmented-control/esm2022/index.mjs +0 -5
- package/mobile/components/containers/segmented-control/esm2022/public_api.mjs +0 -4
- package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +0 -70
- package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.props.mjs +0 -14
- package/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +0 -147
- package/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +0 -32
- package/mobile/components/containers/segmented-control/esm2022/segmented-control.props.mjs +0 -9
- package/mobile/components/containers/segmented-control/fesm2022/index.mjs +0 -264
- package/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +0 -1
- package/mobile/components/containers/segmented-control/index.d.ts +0 -5
- package/mobile/components/containers/segmented-control/package.json +0 -23
- package/mobile/components/containers/segmented-control/public_api.d.ts +0 -3
- package/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +0 -18
- package/mobile/components/containers/segmented-control/segment-content/segment-content.props.d.ts +0 -1
- package/mobile/components/containers/segmented-control/segmented-control.component.d.ts +0 -20
- package/mobile/components/containers/segmented-control/segmented-control.module.d.ts +0 -10
- package/mobile/components/containers/segmented-control/segmented-control.props.d.ts +0 -1
- package/mobile/components/data/media-list/.npmignore +0 -2
- package/mobile/components/data/media-list/bundles/index.umd.js +0 -310
- package/mobile/components/data/media-list/esm2022/index.mjs +0 -5
- package/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +0 -24
- package/mobile/components/data/media-list/esm2022/media-list.component.mjs +0 -213
- package/mobile/components/data/media-list/esm2022/media-list.module.mjs +0 -48
- package/mobile/components/data/media-list/esm2022/media-list.props.mjs +0 -16
- package/mobile/components/data/media-list/esm2022/public_api.mjs +0 -4
- package/mobile/components/data/media-list/fesm2022/index.mjs +0 -297
- package/mobile/components/data/media-list/fesm2022/index.mjs.map +0 -1
- package/mobile/components/data/media-list/index.d.ts +0 -5
- package/mobile/components/data/media-list/media-list-item/media-list-item.directive.d.ts +0 -8
- package/mobile/components/data/media-list/media-list.component.d.ts +0 -33
- package/mobile/components/data/media-list/media-list.module.d.ts +0 -14
- package/mobile/components/data/media-list/media-list.props.d.ts +0 -1
- package/mobile/components/data/media-list/package.json +0 -23
- package/mobile/components/data/media-list/public_api.d.ts +0 -3
- package/mobile/components/device/barcode-scanner/.npmignore +0 -2
- package/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +0 -18
- package/mobile/components/device/barcode-scanner/barcode-scanner.module.d.ts +0 -9
- package/mobile/components/device/barcode-scanner/barcode-scanner.props.d.ts +0 -1
- package/mobile/components/device/barcode-scanner/bundles/index.umd.js +0 -129
- package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +0 -69
- package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +0 -28
- package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +0 -15
- package/mobile/components/device/barcode-scanner/esm2022/index.mjs +0 -5
- package/mobile/components/device/barcode-scanner/esm2022/public_api.mjs +0 -3
- package/mobile/components/device/barcode-scanner/fesm2022/index.mjs +0 -112
- package/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +0 -1
- package/mobile/components/device/barcode-scanner/index.d.ts +0 -5
- package/mobile/components/device/barcode-scanner/package.json +0 -23
- package/mobile/components/device/barcode-scanner/public_api.d.ts +0 -2
- package/mobile/components/device/camera/.npmignore +0 -2
- package/mobile/components/device/camera/bundles/index.umd.js +0 -170
- package/mobile/components/device/camera/camera.component.d.ts +0 -37
- package/mobile/components/device/camera/camera.module.d.ts +0 -9
- package/mobile/components/device/camera/camera.props.d.ts +0 -1
- package/mobile/components/device/camera/esm2022/camera.component.mjs +0 -101
- package/mobile/components/device/camera/esm2022/camera.module.mjs +0 -28
- package/mobile/components/device/camera/esm2022/camera.props.mjs +0 -25
- package/mobile/components/device/camera/esm2022/index.mjs +0 -5
- package/mobile/components/device/camera/esm2022/public_api.mjs +0 -3
- package/mobile/components/device/camera/fesm2022/index.mjs +0 -153
- package/mobile/components/device/camera/fesm2022/index.mjs.map +0 -1
- package/mobile/components/device/camera/index.d.ts +0 -5
- package/mobile/components/device/camera/package.json +0 -23
- package/mobile/components/device/camera/public_api.d.ts +0 -2
- package/mobile/components/input/file-upload/.npmignore +0 -2
- package/mobile/components/input/file-upload/bundles/index.umd.js +0 -88
- package/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +0 -41
- package/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +0 -28
- package/mobile/components/input/file-upload/esm2022/index.mjs +0 -5
- package/mobile/components/input/file-upload/esm2022/public_api.mjs +0 -3
- package/mobile/components/input/file-upload/fesm2022/index.mjs +0 -71
- package/mobile/components/input/file-upload/fesm2022/index.mjs.map +0 -1
- package/mobile/components/input/file-upload/file-upload.directive.d.ts +0 -11
- package/mobile/components/input/file-upload/file-upload.module.d.ts +0 -9
- package/mobile/components/input/file-upload/index.d.ts +0 -5
- package/mobile/components/input/file-upload/package.json +0 -23
- package/mobile/components/input/file-upload/public_api.d.ts +0 -2
- package/mobile/components/page/default/.npmignore +0 -2
- package/mobile/components/page/default/bundles/index.umd.js +0 -127
- package/mobile/components/page/default/esm2022/index.mjs +0 -5
- package/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +0 -24
- package/mobile/components/page/default/esm2022/page.directive.mjs +0 -58
- package/mobile/components/page/default/esm2022/page.module.mjs +0 -32
- package/mobile/components/page/default/esm2022/public_api.mjs +0 -4
- package/mobile/components/page/default/fesm2022/index.mjs +0 -110
- package/mobile/components/page/default/fesm2022/index.mjs.map +0 -1
- package/mobile/components/page/default/index.d.ts +0 -5
- package/mobile/components/page/default/package.json +0 -23
- package/mobile/components/page/default/page-content-loader/page-content-loader.component.d.ts +0 -7
- package/mobile/components/page/default/page.directive.d.ts +0 -19
- package/mobile/components/page/default/page.module.d.ts +0 -10
- package/mobile/components/page/default/public_api.d.ts +0 -3
- package/mobile/components/page/left-panel/.npmignore +0 -2
- package/mobile/components/page/left-panel/bundles/index.umd.js +0 -91
- package/mobile/components/page/left-panel/esm2022/index.mjs +0 -5
- package/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +0 -45
- package/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +0 -28
- package/mobile/components/page/left-panel/esm2022/public_api.mjs +0 -3
- package/mobile/components/page/left-panel/fesm2022/index.mjs +0 -74
- package/mobile/components/page/left-panel/fesm2022/index.mjs.map +0 -1
- package/mobile/components/page/left-panel/index.d.ts +0 -5
- package/mobile/components/page/left-panel/left-panel.directive.d.ts +0 -16
- package/mobile/components/page/left-panel/left-panel.module.d.ts +0 -9
- package/mobile/components/page/left-panel/package.json +0 -23
- package/mobile/components/page/left-panel/public_api.d.ts +0 -2
- package/mobile/components/page/mobile-navbar/.npmignore +0 -2
- package/mobile/components/page/mobile-navbar/bundles/index.umd.js +0 -332
- package/mobile/components/page/mobile-navbar/esm2022/index.mjs +0 -5
- package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +0 -247
- package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +0 -32
- package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.props.mjs +0 -41
- package/mobile/components/page/mobile-navbar/esm2022/public_api.mjs +0 -3
- package/mobile/components/page/mobile-navbar/fesm2022/index.mjs +0 -317
- package/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +0 -1
- package/mobile/components/page/mobile-navbar/index.d.ts +0 -5
- package/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +0 -50
- package/mobile/components/page/mobile-navbar/mobile-navbar.module.d.ts +0 -10
- package/mobile/components/page/mobile-navbar/mobile-navbar.props.d.ts +0 -2
- package/mobile/components/page/mobile-navbar/package.json +0 -23
- package/mobile/components/page/mobile-navbar/public_api.d.ts +0 -2
- package/mobile/components/page/tab-bar/.npmignore +0 -2
- package/mobile/components/page/tab-bar/bundles/index.umd.js +0 -279
- package/mobile/components/page/tab-bar/esm2022/index.mjs +0 -5
- package/mobile/components/page/tab-bar/esm2022/public_api.mjs +0 -3
- package/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +0 -28
- package/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +0 -219
- package/mobile/components/page/tab-bar/esm2022/tabbar.props.mjs +0 -15
- package/mobile/components/page/tab-bar/fesm2022/index.mjs +0 -262
- package/mobile/components/page/tab-bar/fesm2022/index.mjs.map +0 -1
- package/mobile/components/page/tab-bar/index.d.ts +0 -5
- package/mobile/components/page/tab-bar/package.json +0 -23
- package/mobile/components/page/tab-bar/public_api.d.ts +0 -2
- package/mobile/components/page/tab-bar/tab-bar.module.d.ts +0 -9
- package/mobile/components/page/tab-bar/tabbar.component.d.ts +0 -40
- package/mobile/components/page/tab-bar/tabbar.props.d.ts +0 -1
- package/mobile/core/.npmignore +0 -2
- package/mobile/core/bundles/index.umd.js +0 -1658
- package/mobile/core/core.module.d.ts +0 -15
- package/mobile/core/esm2022/core.module.mjs +0 -79
- package/mobile/core/esm2022/index.mjs +0 -5
- package/mobile/core/esm2022/native.xhr.mjs +0 -340
- package/mobile/core/esm2022/public_api.mjs +0 -12
- package/mobile/core/esm2022/services/device-file-cache.service.mjs +0 -92
- package/mobile/core/esm2022/services/device-file-download.service.mjs +0 -154
- package/mobile/core/esm2022/services/device-file-opener.service.mjs +0 -112
- package/mobile/core/esm2022/services/device-file-upload.service.mjs +0 -91
- package/mobile/core/esm2022/services/device-file.service.mjs +0 -237
- package/mobile/core/esm2022/services/device-start-up-service.mjs +0 -2
- package/mobile/core/esm2022/services/device.service.mjs +0 -150
- package/mobile/core/esm2022/services/ext-app-message.service.mjs +0 -114
- package/mobile/core/esm2022/services/network.service.mjs +0 -358
- package/mobile/core/fesm2022/index.mjs +0 -1660
- package/mobile/core/fesm2022/index.mjs.map +0 -1
- package/mobile/core/index.d.ts +0 -5
- package/mobile/core/native.xhr.d.ts +0 -36
- package/mobile/core/package.json +0 -28
- package/mobile/core/public_api.d.ts +0 -11
- package/mobile/core/services/device-file-cache.service.d.ts +0 -24
- package/mobile/core/services/device-file-download.service.d.ts +0 -36
- package/mobile/core/services/device-file-opener.service.d.ts +0 -25
- package/mobile/core/services/device-file-upload.service.d.ts +0 -27
- package/mobile/core/services/device-file.service.d.ts +0 -45
- package/mobile/core/services/device-start-up-service.d.ts +0 -4
- package/mobile/core/services/device.service.d.ts +0 -52
- package/mobile/core/services/ext-app-message.service.d.ts +0 -24
- package/mobile/core/services/network.service.d.ts +0 -118
- package/mobile/offline/.npmignore +0 -2
- package/mobile/offline/bundles/index.umd.js +0 -3512
- package/mobile/offline/esm2022/index.mjs +0 -5
- package/mobile/offline/esm2022/models/config.mjs +0 -64
- package/mobile/offline/esm2022/models/local-db-store.mjs +0 -412
- package/mobile/offline/esm2022/offline.module.mjs +0 -100
- package/mobile/offline/esm2022/public_api.mjs +0 -7
- package/mobile/offline/esm2022/services/change-log.service.mjs +0 -332
- package/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +0 -525
- package/mobile/offline/esm2022/services/local-db-management.service.mjs +0 -855
- package/mobile/offline/esm2022/services/local-db.service.mjs +0 -193
- package/mobile/offline/esm2022/services/local-key-value.service.mjs +0 -87
- package/mobile/offline/esm2022/services/push.service.mjs +0 -49
- package/mobile/offline/esm2022/services/workers/error-blocker.mjs +0 -115
- package/mobile/offline/esm2022/services/workers/file-handler.mjs +0 -162
- package/mobile/offline/esm2022/services/workers/id-resolver.mjs +0 -154
- package/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +0 -63
- package/mobile/offline/esm2022/utils/file-upload.utils.mjs +0 -59
- package/mobile/offline/esm2022/utils/live-variable.utils.mjs +0 -232
- package/mobile/offline/esm2022/utils/query-executor.utils.mjs +0 -82
- package/mobile/offline/esm2022/utils/security.utils.mjs +0 -119
- package/mobile/offline/esm2022/utils/utils.mjs +0 -8
- package/mobile/offline/fesm2022/index.mjs +0 -3529
- package/mobile/offline/fesm2022/index.mjs.map +0 -1
- package/mobile/offline/index.d.ts +0 -5
- package/mobile/offline/models/config.d.ts +0 -80
- package/mobile/offline/models/local-db-store.d.ts +0 -119
- package/mobile/offline/offline.module.d.ts +0 -17
- package/mobile/offline/package.json +0 -28
- package/mobile/offline/public_api.d.ts +0 -6
- package/mobile/offline/services/change-log.service.d.ts +0 -112
- package/mobile/offline/services/local-db-data-pull.service.d.ts +0 -139
- package/mobile/offline/services/local-db-management.service.d.ts +0 -179
- package/mobile/offline/services/local-db.service.d.ts +0 -83
- package/mobile/offline/services/local-key-value.service.d.ts +0 -38
- package/mobile/offline/services/push.service.d.ts +0 -11
- package/mobile/offline/services/workers/error-blocker.d.ts +0 -26
- package/mobile/offline/services/workers/file-handler.d.ts +0 -56
- package/mobile/offline/services/workers/id-resolver.d.ts +0 -26
- package/mobile/offline/services/workers/multi-part-param-transformer.d.ts +0 -11
- package/mobile/offline/utils/file-upload.utils.d.ts +0 -14
- package/mobile/offline/utils/live-variable.utils.d.ts +0 -24
- package/mobile/offline/utils/query-executor.utils.d.ts +0 -15
- package/mobile/offline/utils/security.utils.d.ts +0 -19
- package/mobile/offline/utils/utils.d.ts +0 -2
- package/mobile/placeholder/runtime/.npmignore +0 -2
- package/mobile/placeholder/runtime/bundles/index.umd.js +0 -70
- package/mobile/placeholder/runtime/components/app-ext.component.d.ts +0 -5
- package/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +0 -19
- package/mobile/placeholder/runtime/esm2022/index.mjs +0 -5
- package/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +0 -27
- package/mobile/placeholder/runtime/esm2022/public_api.mjs +0 -3
- package/mobile/placeholder/runtime/fesm2022/index.mjs +0 -50
- package/mobile/placeholder/runtime/fesm2022/index.mjs.map +0 -1
- package/mobile/placeholder/runtime/index.d.ts +0 -5
- package/mobile/placeholder/runtime/mobile-runtime.module.d.ts +0 -9
- package/mobile/placeholder/runtime/package.json +0 -27
- package/mobile/placeholder/runtime/public_api.d.ts +0 -2
- package/mobile/placeholder/runtime-dynamic/.npmignore +0 -2
- package/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +0 -40
- package/mobile/placeholder/runtime-dynamic/esm2022/index.mjs +0 -5
- package/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -13
- package/mobile/placeholder/runtime-dynamic/esm2022/public_api.mjs +0 -2
- package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +0 -20
- package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +0 -1
- package/mobile/placeholder/runtime-dynamic/index.d.ts +0 -5
- package/mobile/placeholder/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -7
- package/mobile/placeholder/runtime-dynamic/package.json +0 -23
- package/mobile/placeholder/runtime-dynamic/public_api.d.ts +0 -1
- package/mobile/runtime/.npmignore +0 -2
- package/mobile/runtime/bundles/index.umd.js +0 -732
- package/mobile/runtime/components/app-ext.component.d.ts +0 -14
- package/mobile/runtime/esm2022/components/app-ext.component.mjs +0 -59
- package/mobile/runtime/esm2022/index.mjs +0 -5
- package/mobile/runtime/esm2022/mobile-runtime.module.mjs +0 -351
- package/mobile/runtime/esm2022/public_api.mjs +0 -6
- package/mobile/runtime/esm2022/services/cookie.service.mjs +0 -135
- package/mobile/runtime/esm2022/services/http-interceptor.service.mjs +0 -147
- package/mobile/runtime/esm2022/services/webprocess.service.mjs +0 -76
- package/mobile/runtime/fesm2022/index.mjs +0 -742
- package/mobile/runtime/fesm2022/index.mjs.map +0 -1
- package/mobile/runtime/index.d.ts +0 -5
- package/mobile/runtime/mobile-runtime.module.d.ts +0 -51
- package/mobile/runtime/package.json +0 -28
- package/mobile/runtime/public_api.d.ts +0 -5
- package/mobile/runtime/services/cookie.service.d.ts +0 -31
- package/mobile/runtime/services/http-interceptor.service.d.ts +0 -19
- package/mobile/runtime/services/webprocess.service.d.ts +0 -15
- package/mobile/runtime-dynamic/.npmignore +0 -2
- package/mobile/runtime-dynamic/bundles/index.umd.js +0 -461
- package/mobile/runtime-dynamic/esm2022/index.mjs +0 -5
- package/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -48
- package/mobile/runtime-dynamic/esm2022/public_api.mjs +0 -2
- package/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +0 -404
- package/mobile/runtime-dynamic/fesm2022/index.mjs +0 -454
- package/mobile/runtime-dynamic/fesm2022/index.mjs.map +0 -1
- package/mobile/runtime-dynamic/index.d.ts +0 -5
- package/mobile/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -8
- package/mobile/runtime-dynamic/package.json +0 -23
- package/mobile/runtime-dynamic/public_api.d.ts +0 -1
- package/mobile/runtime-dynamic/services/live-sync.service.d.ts +0 -38
- package/mobile/variables/.npmignore +0 -2
- package/mobile/variables/bundles/index.umd.js +0 -1166
- package/mobile/variables/esm2022/index.mjs +0 -5
- package/mobile/variables/esm2022/public_api.mjs +0 -10
- package/mobile/variables/esm2022/services/calendar-service.mjs +0 -77
- package/mobile/variables/esm2022/services/camera-service.mjs +0 -70
- package/mobile/variables/esm2022/services/contacts-service.mjs +0 -74
- package/mobile/variables/esm2022/services/datasync-service.mjs +0 -363
- package/mobile/variables/esm2022/services/device-service/device-service.mjs +0 -161
- package/mobile/variables/esm2022/services/device-service/location-service.mjs +0 -200
- package/mobile/variables/esm2022/services/file-service.mjs +0 -87
- package/mobile/variables/esm2022/services/scan-service.mjs +0 -60
- package/mobile/variables/esm2022/variables.module.mjs +0 -78
- package/mobile/variables/fesm2022/index.mjs +0 -1143
- package/mobile/variables/fesm2022/index.mjs.map +0 -1
- package/mobile/variables/index.d.ts +0 -5
- package/mobile/variables/package.json +0 -28
- package/mobile/variables/public_api.d.ts +0 -9
- package/mobile/variables/services/calendar-service.d.ts +0 -10
- package/mobile/variables/services/camera-service.d.ts +0 -8
- package/mobile/variables/services/contacts-service.d.ts +0 -6
- package/mobile/variables/services/datasync-service.d.ts +0 -11
- package/mobile/variables/services/device-service/device-service.d.ts +0 -17
- package/mobile/variables/services/device-service/location-service.d.ts +0 -63
- package/mobile/variables/services/file-service.d.ts +0 -7
- package/mobile/variables/services/scan-service.d.ts +0 -7
- package/mobile/variables/variables.module.d.ts +0 -25
- package/oAuth/esm2022/oAuth.module.mjs +0 -19
- package/oAuth/oAuth.module.d.ts +0 -8
- package/scripts/fullcalendar/main.min.js +0 -6
- package/security/esm2022/security.module.mjs +0 -19
- package/security/security.module.d.ts +0 -8
- package/variables/esm2022/manager/variable/device-variable-manager.mjs +0 -48
- package/variables/esm2022/manager/variable/device-variable-operation.mjs +0 -2
- package/variables/esm2022/manager/variable/device-variable-service.mjs +0 -45
- package/variables/esm2022/model/variable/device-variable.mjs +0 -19
- package/variables/esm2022/variables.module.mjs +0 -52
- package/variables/manager/variable/device-variable-manager.d.ts +0 -26
- package/variables/manager/variable/device-variable-operation.d.ts +0 -37
- package/variables/manager/variable/device-variable-service.d.ts +0 -6
- package/variables/model/variable/device-variable.d.ts +0 -6
- package/variables/variables.module.d.ts +0 -16
|
@@ -3,7 +3,7 @@ import { Router } from '@angular/router';
|
|
|
3
3
|
import { DatePipe } from '@angular/common';
|
|
4
4
|
import { AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractSpinnerService, App, fetchContent, isDefined, triggerFn, $appDigest } from '@wm/core';
|
|
5
5
|
import { SecurityService } from '@wm/security';
|
|
6
|
-
import {
|
|
6
|
+
import { $rootScope, MetadataService, VariablesService } from '@wm/variables';
|
|
7
7
|
import { extend, forEach, get, isEmpty, isObject, isUndefined, merge, trim } from "lodash-es";
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "@wm/core";
|
|
@@ -195,60 +195,43 @@ export class AppManagerService {
|
|
|
195
195
|
// do not provide redirectTo page if fetching HOME page resulted 401
|
|
196
196
|
// on app load, by default Home page is loaded
|
|
197
197
|
page = this.$security.getRedirectPage(config);
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
// showing a redirecting message
|
|
223
|
-
document.body.textContent = get(this.getAppLocale(), ['MESSAGE_LOGIN_REDIRECTION']) || 'Redirecting to sso login...';
|
|
224
|
-
// appending redirect to page and page params
|
|
225
|
-
const ssoUrl = this.getDeployedURL() + SSO_URL + page + queryParams;
|
|
226
|
-
/*
|
|
227
|
-
* remove iFrame when redirected to IdP login page.
|
|
228
|
-
* this is being done as IDPs do not allow to get themselves loaded into iFrames.
|
|
229
|
-
* remove-toolbar has been assigned with a window name WM_PREVIEW_WINDOW, check if the iframe is our toolbar related and
|
|
230
|
-
* safely change the location of the parent toolbar with current url.
|
|
231
|
-
*/
|
|
232
|
-
if (window.self !== window.top) {
|
|
233
|
-
try {
|
|
234
|
-
if (window.parent && window.location.origin === window.parent.origin) {
|
|
235
|
-
if (window.parent.name === PREVIEW_WINDOW_NAME) {
|
|
236
|
-
window.parent.location.href = window.self.location.href;
|
|
237
|
-
window.parent.name = "";
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
window.location.href = ssoUrl;
|
|
198
|
+
page = page ? '?redirectPage=' + encodeURIComponent(page) : '';
|
|
199
|
+
/*
|
|
200
|
+
* For preview, this.$security.getRedirectedRouteQueryParams() gets the queryparams form the activated route(pagewrappercomponent)
|
|
201
|
+
* For deployed app, canactivate guard resolved to false and gets the queryparams from the canactivate gurard(no active route component)
|
|
202
|
+
*/
|
|
203
|
+
queryParams = (options && options.queryParams) || this.$security.getRedirectedRouteQueryParams();
|
|
204
|
+
queryParams = this.$security.getQueryString(queryParams);
|
|
205
|
+
queryParams = queryParams ? '?' + queryParams : '';
|
|
206
|
+
// showing a redirecting message
|
|
207
|
+
document.body.textContent = get(this.getAppLocale(), ['MESSAGE_LOGIN_REDIRECTION']) || 'Redirecting to sso login...';
|
|
208
|
+
// appending redirect to page and page params
|
|
209
|
+
const ssoUrl = this.getDeployedURL() + SSO_URL + page + queryParams;
|
|
210
|
+
/*
|
|
211
|
+
* remove iFrame when redirected to IdP login page.
|
|
212
|
+
* this is being done as IDPs do not allow to get themselves loaded into iFrames.
|
|
213
|
+
* remove-toolbar has been assigned with a window name WM_PREVIEW_WINDOW, check if the iframe is our toolbar related and
|
|
214
|
+
* safely change the location of the parent toolbar with current url.
|
|
215
|
+
*/
|
|
216
|
+
if (window.self !== window.top) {
|
|
217
|
+
try {
|
|
218
|
+
if (window.parent && window.location.origin === window.parent.origin) {
|
|
219
|
+
if (window.parent.name === PREVIEW_WINDOW_NAME) {
|
|
220
|
+
window.parent.location.href = window.self.location.href;
|
|
221
|
+
window.parent.name = "";
|
|
242
222
|
}
|
|
243
223
|
}
|
|
244
|
-
|
|
224
|
+
else {
|
|
245
225
|
window.location.href = ssoUrl;
|
|
246
226
|
}
|
|
247
227
|
}
|
|
248
|
-
|
|
228
|
+
catch (error) {
|
|
249
229
|
window.location.href = ssoUrl;
|
|
250
230
|
}
|
|
251
231
|
}
|
|
232
|
+
else {
|
|
233
|
+
window.location.href = ssoUrl;
|
|
234
|
+
}
|
|
252
235
|
}
|
|
253
236
|
/**
|
|
254
237
|
* Handles the app when a XHR request returns 401 response
|
|
@@ -489,4 +472,4 @@ export class AppManagerService {
|
|
|
489
472
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppManagerService, [{
|
|
490
473
|
type: Injectable
|
|
491
474
|
}], () => [{ type: i1.AbstractHttpService }, { type: i2.SecurityService }, { type: i1.AbstractDialogService }, { type: i3.Router }, { type: i1.App }, { type: i4.VariablesService }, { type: i4.MetadataService }, { type: i1.AbstractSpinnerService }, { type: i1.AbstractI18nService }, { type: i5.DatePipe }], null); })();
|
|
492
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUNILHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixHQUFHLEVBQ0gsWUFBWSxFQUNaLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFHLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQUU1RixJQUFLLGFBT0o7QUFQRCxXQUFLLGFBQWE7SUFDZCxzRUFBcUQsQ0FBQTtJQUNyRCxzRUFBcUQsQ0FBQTtJQUNyRCx5REFBaUQsQ0FBQTtJQUNqRCxvREFBNEMsQ0FBQTtJQUM1QyxpRUFBbUQsQ0FBQTtJQUNuRCxvQ0FBb0MsQ0FBQTtBQUN4QyxDQUFDLEVBUEksYUFBYSxLQUFiLGFBQWEsUUFPakI7QUFHRCxNQUFNLE9BQU8saUJBQWlCO2FBQ1YsaUJBQVksR0FBRyxtQkFBbUIsQUFBdEIsQ0FB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ci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gICAgQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgIEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgIEFwcCxcbiAgICBmZXRjaENvbnRlbnQsXG4gICAgaXNEZWZpbmVkLFxuICAgIHRyaWdnZXJGbixcbiAgICAkYXBwRGlnZXN0XG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSB9IGZyb20gJ0B3bS9zZWN1cml0eSc7XG5pbXBvcnQgeyBDT05TVEFOVFMsICRyb290U2NvcGUsIHJvdXRlclNlcnZpY2UsICBNZXRhZGF0YVNlcnZpY2UsIFZhcmlhYmxlc1NlcnZpY2UgfSBmcm9tICdAd20vdmFyaWFibGVzJztcbmltcG9ydCB7ZXh0ZW5kLCBmb3JFYWNoLCBnZXQsIGlzRW1wdHksIGlzT2JqZWN0LCBpc1VuZGVmaW5lZCwgbWVyZ2UsIHRyaW19IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZW51bSBQT1NUX01FU1NBR0VTIHtcbiAgICBISURFX1RFTVBMQVRFU19TSE9XX0NBU0UgPSAnaGlkZS10ZW1wbGF0ZXMtc2hvdy1jYXNlJyxcbiAgICBTSE9XX1RFTVBMQVRFU19TSE9XX0NBU0UgPSAnc2hvdy10ZW1wbGF0ZXMtc2hvdy1jYXNlJyxcbiAgICBVUERBVEVfTE9DQVRJT04gICAgICAgICAgPSAndXBkYXRlLWxvY2F0aW9uLXBhdGgnLFxuICAgIFNFTEVDVF9URU1QTEFURSAgICAgICAgICA9ICdzZWxlY3QtdGVtcGxhdGUnLFxuICAgIFRFTVBMQVRFQlVORExFX0NPTkZJRyAgICA9ICd0ZW1wbGF0ZS1idW5kbGUtY29uZmlnJyxcbiAgICBPTl9MT0FEICAgICAgICAgICAgICAgICAgPSAnb24tbG9hZCdcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFwcE1hbmFnZXJTZXJ2aWNlIHtcbiAgICBzdGF0aWMgcmVhZG9ubHkgU0VSVklDRV9OQU1FID0gJ0FwcE1hbmFnZXJTZXJ2aWNlJztcblxuICAgIHByaXZhdGUgYXBwVmFyaWFibGVzTG9hZGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBhcHBWYXJpYWJsZXNGaXJlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX25vUmVkaXJlY3QgPSBmYWxzZTtcbiAgICBwcml2YXRlIHRlbXBsYXRlczogQXJyYXk8YW55PjtcbiAgICBwcml2YXRlIGxhc3RMb2dnZWRVc2VySWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSAkaHR0cDogQWJzdHJhY3RIdHRwU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkc2VjdXJpdHk6IFNlY3VyaXR5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkZGlhbG9nOiBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlICRhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSAkdmFyaWFibGVzOiBWYXJpYWJsZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRtZXRhZGF0YTogTWV0YWRhdGFTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRzcGlubmVyOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRpMThuOiBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgKSB7XG4gICAgICAgIC8vIHJlZ2lzdGVyIG1ldGhvZCB0byBpbnZva2Ugb24gc2Vzc2lvbiB0aW1lb3V0XG4gICAgICAgIHRoaXMuJGh0dHAucmVnaXN0ZXJPblNlc3Npb25UaW1lb3V0KHRoaXMuaGFuZGxlNDAxLmJpbmQodGhpcykpO1xuXG4gICAgICAgIHRoaXMuJHZhcmlhYmxlcy5yZWdpc3RlckRlcGVuZGVuY3koJ2FwcE1hbmFnZXInLCB0aGlzKTtcblxuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd0b2dnbGUtdmFyaWFibGUtc3RhdGUnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFyaWFibGUgPSBkYXRhLnZhcmlhYmxlLFxuICAgICAgICAgICAgICAgIGFjdGl2ZSA9IGRhdGEuYWN0aXZlO1xuICAgICAgICAgICAgaWYgKCFpc0VtcHR5KHRyaW0odmFyaWFibGUuc3Bpbm5lckNvbnRleHQpKSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNwaW5uZXJFeGlzdHM7XG4gICAgICAgICAgICAgICAgICAgIC8vIFdNUy0yMTExNyA6IERvIG5vdCB0cmlnZ2VyIHNwaW5uZXIsIGlmIHRoZSBjdXJyZW50IHZhcmlhYmxlIGlzIHNhbWUgYXMgc3Bpbm5lciB3aGljaCBpcyBpbiBjb250ZXh0XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZS5fc3Bpbm5lcklkICYmIHZhcmlhYmxlLl9zcGlubmVySWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JFYWNoKHZhcmlhYmxlLl9zcGlubmVySWQsIChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc2xpY2UoMCwgaXRlbS5sYXN0SW5kZXhPZignXycpKSA9PT0gdmFyaWFibGUuX2lkICYmICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHQgJiYgKHRoaXMuJHNwaW5uZXIgYXMgYW55KS5tZXNzYWdlc0J5Q29udGV4dFt2YXJpYWJsZS5zcGlubmVyQ29udGV4dF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhcmlhYmxlLnNwaW5uZXJNZXNzYWdlID09PSAodGhpcy4kc3Bpbm5lciBhcyBhbnkpLm1lc3NhZ2VzQnlDb250ZXh0W3ZhcmlhYmxlLnNwaW5uZXJDb250ZXh0XVtcImZpbmFsTWVzc2FnZVwiXSB8fCB2YXJpYWJsZS5zcGlubmVyTWVzc2FnZSA9PT0gKHRoaXMuJHNwaW5uZXIgYXMgYW55KS5tZXNzYWdlc0J5Q29udGV4dFt2YXJpYWJsZS5zcGlubmVyQ29udGV4dF1baXRlbV0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXJFeGlzdHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzcGlubmVyRXhpc3RzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5fc3Bpbm5lcklkID0gdmFyaWFibGUuX3NwaW5uZXJJZCB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwaW5uZXJJZCA9IHRoaXMuJHNwaW5uZXIuc2hvdyh2YXJpYWJsZS5zcGlubmVyTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5faWQgKyAnXycgKyBEYXRlLm5vdygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLnNwaW5uZXJjbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5zcGlubmVyQ29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5fc3Bpbm5lcklkLnB1c2goc3Bpbm5lcklkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNwaW5uZXIuaGlkZSh2YXJpYWJsZS5fc3Bpbm5lcklkLnNoaWZ0KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuJGFwcC5zdWJzY3JpYmUoJ3VzZXJMb2dnZWRJbicsICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0TGFuZGluZ1BhZ2UoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmxhc3RMb2dnZWRVc2VySWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiRzZWN1cml0eS5nZXRDb25maWcoY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYoY29uZmlnICYmIGNvbmZpZy51c2VySW5mby51c2VySWQgIT09IHRoaXMubGFzdExvZ2dlZFVzZXJJZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kYXBwLmNsZWFyUGFnZUNhY2hlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuJGFwcC5zdWJzY3JpYmUoJ3VzZXJMb2dnZWRPdXQnLCAoKSA9PiB0aGlzLnNldExhbmRpbmdQYWdlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLiRhcHAuY2xlYXJQYWdlQ2FjaGUoKTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCdodHRwNDAxJywgKGQgPSB7fSkgPT4gdGhpcy5oYW5kbGU0MDEoZC5wYWdlLCBkLm9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBzZXNzaW9uIHRpbWVvdXQsIGlmIHRoZSBzZXNzaW9uIHRpbWVvdXQgY29uZmlnIGlzIHNldCB0byBhIGRpYWxvZywgdGhlbiBvcGVuIGxvZ2luIGRpYWxvZ1xuICAgICAqL1xuICAgIHByaXZhdGUgc2hvd0xvZ2luRGlhbG9nKCkge1xuICAgICAgICB0aGlzLiRzcGlubmVyLmhpZGUoJ2dsb2JhbFNwaW5uZXInKTtcbiAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIGNsb3NlIGFsbCBkaWFsb2dzIGNhbGwsIHNvIHRoZSBleGlzdGluZyBkaWFsb2dzIHJlbWFpbiBvcGVuIGFuZFxuICAgICAgICAvLyB0aGUgbG9naW4gZGlhbG9nIGNvbWVzIG9uIHRvcCBvZiBpdC5cbiAgICAgICAgdGhpcy4kZGlhbG9nLm9wZW4oJ0NvbW1vbkxvZ2luRGlhbG9nJyk7XG4gICAgICAgIC8vIFNpbmNlIHRoZSBsb2dpbiBkaWFsb2cgaXMgY2xvc2VkIGFuZCBvcGVuZWQgaXRzIHVwZGF0ZWQgcHJvcGVydHkgaXNuJ3QgcmVhZCBieSBhbmd1bGFyLlxuICAgICAgICAvLyBIZW5jZSB3ZSB0cmlnZ2VyIHRoZSBkaWdlc3QgY3ljbGVcbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgIH1cblxuICAgIGxvYWRBcHBKUygpIHtcblxuICAgIH1cblxuICAgIGxvYWRDb21tb25QYWdlKCkge1xuXG4gICAgfVxuXG4gICAgbG9hZFNlY3VyaXR5Q29uZmlnKGZvcmNlRmxhZz86IGJvb2xlYW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHNlY3VyaXR5LmxvYWQoZm9yY2VGbGFnKS50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuJGFwcC5sYW5kaW5nUGFnZU5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbG9hZE1ldGFkYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kbWV0YWRhdGEubG9hZCgpO1xuICAgIH1cblxuICAgIGxvYWRBcHBWYXJpYWJsZXModmFyaWFibGVzPzogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLmFwcFZhcmlhYmxlc0xvYWRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5pdCA9IHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLiR2YXJpYWJsZXMucmVnaXN0ZXIoJ2FwcCcsIHJlc3BvbnNlLCB0aGlzLiRhcHApO1xuICAgICAgICAgICAgLy8gbm90IGFzc2lnbmluZyBkaXJlY3RseSB0byB0aGlzLiRhcHAgdG8ga2VlcCB0aGUgcmVmZXJlbmNlIGluIHRhY3RcbiAgICAgICAgICAgIGV4dGVuZCh0aGlzLiRhcHAuVmFyaWFibGVzLCBkYXRhLlZhcmlhYmxlcyk7XG4gICAgICAgICAgICBleHRlbmQodGhpcy4kYXBwLkFjdGlvbnMsIGRhdGEuQWN0aW9ucyk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvZ2dlZEluVXNlclZhcmlhYmxlKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN1cHBvcnRlZExvY2FsZVZhcmlhYmxlKCk7XG4gICAgICAgICAgICB0aGlzLmFwcFZhcmlhYmxlc0xvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFwcFZhcmlhYmxlc0ZpcmVkID0gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGlzRGVmaW5lZCh2YXJpYWJsZXMpKSB7XG4gICAgICAgICAgICBpbml0KHZhcmlhYmxlcyk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy4kaHR0cC5nZXQoJy4vYXBwLnZhcmlhYmxlcy5qc29uJykudGhlbihyZXNwb25zZSA9PiBpbml0KHJlc3BvbnNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0dGVyIGFuZCBzZXR0ZXIgZm9yIHRoZSBwcm9wZXJ0eSBhcHBWYXJpYWJsZXNGaXJlZFxuICAgICAqIHRoaXMgZmxhZyBkZXRlcm1pbmVzIGlmIHRoZSBhcHAgdmFyaWFibGVzKHdpdGggc3RhcnRVcGRhdGU6dHJ1ZSkgaGF2ZSBiZWVuIGZpcmVkXG4gICAgICogdGhleSBzaG91bGQgZ2V0IGZpcmVkIG9ubHkgb25jZSB0aHJvdWdoIGFwcCBsaWZlY3ljbGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRmlyZWRcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBpc0FwcFZhcmlhYmxlc0ZpcmVkKGlzRmlyZWQ/OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc0RlZmluZWQoaXNGaXJlZCkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwVmFyaWFibGVzRmlyZWQgPSBpc0ZpcmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmFwcFZhcmlhYmxlc0ZpcmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJMb2dnZWRJblVzZXJWYXJpYWJsZSh2YXJpYWJsZSkge1xuICAgICAgICB2YXJpYWJsZS5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyaWFibGUucm9sZXMgICAgICAgICAgID0gW107XG4gICAgICAgIHZhcmlhYmxlLm5hbWUgICAgICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyaWFibGUuaWQgICAgICAgICAgICAgID0gdW5kZWZpbmVkO1xuICAgICAgICB2YXJpYWJsZS50ZW5hbnRJZCAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2dnZWRJblVzZXJWYXJpYWJsZSgpIHtcbiAgICAgICAgY29uc3QgbG9nZ2VkSW5Vc2VyID0gZ2V0KHRoaXMuJGFwcCwgJ1ZhcmlhYmxlcy5sb2dnZWRJblVzZXIuZGF0YVNldCcpO1xuXG4gICAgICAgIC8vIHNhbml0eSBjaGVja1xuICAgICAgICBpZiAoIWxvZ2dlZEluVXNlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5sb2FkKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWN1cml0eUNvbmZpZyA9IHRoaXMuJHNlY3VyaXR5LmdldCgpO1xuICAgICAgICAgICAgaWYgKHNlY3VyaXR5Q29uZmlnICYmIHNlY3VyaXR5Q29uZmlnLnNlY3VyaXR5RW5hYmxlZCAmJiBzZWN1cml0eUNvbmZpZy5hdXRoZW50aWNhdGVkKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLmlzQXV0aGVudGljYXRlZCA9IHNlY3VyaXR5Q29uZmlnLmF1dGhlbnRpY2F0ZWQ7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnJvbGVzICAgICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnVzZXJSb2xlcztcbiAgICAgICAgICAgICAgICBsb2dnZWRJblVzZXIubmFtZSAgICAgICAgICAgID0gc2VjdXJpdHlDb25maWcudXNlckluZm8udXNlck5hbWU7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLmlkICAgICAgICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnVzZXJJZDtcbiAgICAgICAgICAgICAgICBsb2dnZWRJblVzZXIudGVuYW50SWQgICAgICAgID0gc2VjdXJpdHlDb25maWcudXNlckluZm8udGVuYW50SWQ7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnVzZXJBdHRyaWJ1dGVzICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnVzZXJBdHRyaWJ1dGVzOyAvLyBhc3NpZ24gdGhlIGV4dHJhIHVzZXJBdHRyaWJ1dGVzIGZvciBjdXN0b20gdXNhZ2UuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJMb2dnZWRJblVzZXJWYXJpYWJsZShsb2dnZWRJblVzZXIpO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc1NlY3VyaXR5RW5hYmxlZCA9IHNlY3VyaXR5Q29uZmlnICYmIHNlY3VyaXR5Q29uZmlnLnNlY3VyaXR5RW5hYmxlZDtcbiAgICAgICAgICAgICAgICB0aHJvdyBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNlY3VyaXR5Q29uZmlnO1xuICAgICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLmlzQXV0aGVudGljYXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnJvbGVzICAgICAgICAgICA9IFtdO1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLm5hbWUgICAgICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pZCAgICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsb2dnZWRJblVzZXIudGVuYW50SWQgICAgICAgID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnVzZXJBdHRyaWJ1dGVzICA9IHt9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkaW5nIHRoZSBhcHAgdmFyaWFibGUgc3VwcG9ydGVkIGxvY2FsZSB3aXRoIHRoZSB3bVByb3BlcnRpZXMgaTE4biBEYXRhVmFsdWVzXG4gICAgICpcbiAgICAgKiBUT0RPW1ZpYmh1XTpcbiAgICAgKiBDYW4gd3JpdGUgYSBzaW1wbGUgbWlncmF0aW9uIHRvIHN5bmMgdGhlIHN1cHBvcnRlZExvY2FsZSB2YXJpYWJsZSB3aXRoICdfV01fQVBQX1BST1BFUlRJRVMuc3VwcG9ydGVkTGFuZ3VhZ2VzJ1xuICAgICAqIEhlbmNlLCB0aGlzIG1heSBub3QgYmUgcmVxdWlyZWRcbiAgICAgKlxuICAgICAqL1xuICAgIHVwZGF0ZVN1cHBvcnRlZExvY2FsZVZhcmlhYmxlKCkge1xuICAgICAgICBjb25zdCBzdXBwb3J0ZWRMb2NhbGVWYXIgPSBnZXQodGhpcy4kYXBwLCAnVmFyaWFibGVzLnN1cHBvcnRlZExvY2FsZScpO1xuICAgIH1cblxuICAgIGhhbmRsZVNTT0xvZ2luKGNvbmZpZywgb3B0aW9ucykge1xuICAgICAgICBjb25zdCBTU09fVVJMID0gJ3NlcnZpY2VzL3NlY3VyaXR5L3Nzb2xvZ2luJyxcbiAgICAgICAgICAgIFBSRVZJRVdfV0lORE9XX05BTUUgPSAnV01fUFJFVklFV19XSU5ET1cnO1xuICAgICAgICBsZXQgcGFnZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zO1xuXG4gICAgICAgIC8vIGRvIG5vdCBwcm92aWRlIHJlZGlyZWN0VG8gcGFnZSBpZiBmZXRjaGluZyBIT01FIHBhZ2UgcmVzdWx0ZWQgNDAxXG4gICAgICAgIC8vIG9uIGFwcCBsb2FkLCBieSBkZWZhdWx0IEhvbWUgcGFnZSBpcyBsb2FkZWRcbiAgICAgICAgcGFnZSA9IHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0UGFnZShjb25maWcpO1xuXG4gICAgICAgIGlmIChDT05TVEFOVFMuaGFzQ29yZG92YSkge1xuICAgICAgICAgICAgLy8gZ2V0IHByZXZpb3VzbHkgbG9nZ2VkSW5Vc2VyIG5hbWUgKGlmIGFueSlcbiAgICAgICAgICAgIGNvbnN0IGxhc3RMb2dnZWRJblVzZXJuYW1lID0gZ2V0KHRoaXMuJHNlY3VyaXR5LmdldCgpLCAndXNlckluZm8udXNlck5hbWUnKTtcbiAgICAgICAgICAgIHRoaXMuJHNlY3VyaXR5LmF1dGhJbkJyb3dzZXIoKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHRoaXMucmVsb2FkQXBwRGF0YSgpKVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJlc2VudExvZ2dlZEluVXNlcm5hbWUgPSBnZXQodGhpcy4kc2VjdXJpdHkuZ2V0KCksICd1c2VySW5mby51c2VyTmFtZScpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlc2VudExvZ2dlZEluVXNlcm5hbWUgJiYgcHJlc2VudExvZ2dlZEluVXNlcm5hbWUgPT09IGxhc3RMb2dnZWRJblVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlKFtwYWdlXSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlKFtgL2BdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFnZSA9IHBhZ2UgPyAnP3JlZGlyZWN0UGFnZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhZ2UpIDogJyc7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogRm9yIHByZXZpZXcsIHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCkgZ2V0cyB0aGUgcXVlcnlwYXJhbXMgZm9ybSB0aGUgYWN0aXZhdGVkIHJvdXRlKHBhZ2V3cmFwcGVyY29tcG9uZW50KVxuICAgICAgICAgICAgICogRm9yIGRlcGxveWVkIGFwcCwgY2FuYWN0aXZhdGUgZ3VhcmQgcmVzb2x2ZWQgdG8gZmFsc2UgYW5kIGdldHMgdGhlIHF1ZXJ5cGFyYW1zIGZyb20gdGhlIGNhbmFjdGl2YXRlIGd1cmFyZChubyBhY3RpdmUgcm91dGUgY29tcG9uZW50KVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IChvcHRpb25zICYmIG9wdGlvbnMucXVlcnlQYXJhbXMpIHx8IHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IHRoaXMuJHNlY3VyaXR5LmdldFF1ZXJ5U3RyaW5nKHF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgPyAnPycgKyBxdWVyeVBhcmFtcyA6ICcnO1xuICAgICAgICAgICAgLy8gc2hvd2luZyBhIHJlZGlyZWN0aW5nIG1lc3NhZ2VcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSBnZXQodGhpcy5nZXRBcHBMb2NhbGUoKSwgWydNRVNTQUdFX0xPR0lOX1JFRElSRUNUSU9OJ10pIHx8ICdSZWRpcmVjdGluZyB0byBzc28gbG9naW4uLi4nO1xuICAgICAgICAgICAgLy8gYXBwZW5kaW5nIHJlZGlyZWN0IHRvIHBhZ2UgYW5kIHBhZ2UgcGFyYW1zXG4gICAgICAgICAgICBjb25zdCBzc29VcmwgPSB0aGlzLmdldERlcGxveWVkVVJMKCkgKyBTU09fVVJMICsgcGFnZSArIHF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIHJlbW92ZSBpRnJhbWUgd2hlbiByZWRpcmVjdGVkIHRvIElkUCBsb2dpbiBwYWdlLlxuICAgICAgICAgICAgICogdGhpcyBpcyBiZWluZyBkb25lIGFzIElEUHMgZG8gbm90IGFsbG93IHRvIGdldCB0aGVtc2VsdmVzIGxvYWRlZCBpbnRvIGlGcmFtZXMuXG4gICAgICAgICAgICAgKiByZW1vdmUtdG9vbGJhciBoYXMgYmVlbiBhc3NpZ25lZCB3aXRoIGEgd2luZG93IG5hbWUgV01fUFJFVklFV19XSU5ET1csIGNoZWNrIGlmIHRoZSBpZnJhbWUgaXMgb3VyIHRvb2xiYXIgcmVsYXRlZCBhbmRcbiAgICAgICAgICAgICAqIHNhZmVseSBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJlbnQgdG9vbGJhciB3aXRoIGN1cnJlbnQgdXJsLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cubG9jYXRpb24ub3JpZ2luID09PSB3aW5kb3cucGFyZW50Lm9yaWdpbil7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cucGFyZW50Lm5hbWUgPT09IFBSRVZJRVdfV0lORE9XX05BTUUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cuc2VsZi5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQubmFtZSA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNzb1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyB0aGUgYXBwIHdoZW4gYSBYSFIgcmVxdWVzdCByZXR1cm5zIDQwMSByZXNwb25zZVxuICAgICAqIElmIG5vIHVzZXIgd2FzIGxvZ2dlZCBpbiBiZWZvcmUgNDAxIG9jY3VycmVkLCBGaXJzdCB0aW1lIExvZ2luIGlzIHNpbXVsYXRlZFxuICAgICAqIEVsc2UsIGEgc2Vzc2lvbiB0aW1lb3V0IGhhcyBvY2N1cnJlZCBhbmQgdGhlIHNhbWUgaXMgc2ltdWxhdGVkXG4gICAgICogQHBhcmFtIHBhZ2UgIGlmIHByb3ZpZGVkLCByZXByZXNlbnRzIHRoZSBwYWdlIG5hbWUgZm9yIHdoaWNoIFhIUiByZXF1ZXN0IHJldHVybmVkIDQwMSwgb24gcmUtbG9naW5cbiAgICAgKiAgICAgICAgICAgICAgaWYgbm90IHByb3ZpZGVkLCBhIHNlcnZpY2UgcmVxdWVzdCByZXR1cm5lZCA0MDFcbiAgICAgKiBAcGFyYW0gb25TdWNjZXNzIHN1Y2Nlc3MgaGFuZGxlclxuICAgICAqIEBwYXJhbSBvbkVycm9yIGVycm9yIGhhbmRsZXJcbiAgICAgKi9cbiAgICBoYW5kbGU0MDEocGFnZT8sIG9wdGlvbnM/KSB7XG4gICAgICAgIGxldCBzZXNzaW9uVGltZW91dENvbmZpZyxcbiAgICAgICAgICAgIHNlc3Npb25UaW1lb3V0TWV0aG9kLFxuICAgICAgICAgICAgbG9naW5Db25maWcsXG4gICAgICAgICAgICBsb2dpbk1ldGhvZDtcbiAgICAgICAgY29uc3QgTE9HSU5fTUVUSE9EID0ge1xuICAgICAgICAgICAgICAgICdESUFMT0cnIDogJ0RJQUxPRycsXG4gICAgICAgICAgICAgICAgJ1BBR0UnICAgOiAnUEFHRScsXG4gICAgICAgICAgICAgICAgJ1NTTycgICAgOiAnU1NPJ1xuICAgICAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLiRzZWN1cml0eS5nZXQoKTtcbiAgICAgICAgbGV0IHF1ZXJ5UGFyYW1zT2JqID0ge307XG4gICAgICAgIGxvZ2luQ29uZmlnID0gY29uZmlnLmxvZ2luQ29uZmlnO1xuICAgICAgICB0aGlzLmxhc3RMb2dnZWRVc2VySWQgPSBjb25maWcudXNlckluZm8gJiYgY29uZmlnLnVzZXJJbmZvLnVzZXJJZDtcbiAgICAgICAgLy8gaWYgdXNlciBmb3VuZCwgNDAxIHdhcyB0aHJvd24gYWZ0ZXIgc2Vzc2lvbiB0aW1lXG4gICAgICAgIGlmIChjb25maWcudXNlckluZm8gJiYgY29uZmlnLnVzZXJJbmZvLnVzZXJOYW1lKSB7XG4gICAgICAgICAgICBjb25maWcuYXV0aGVudGljYXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgc2Vzc2lvblRpbWVvdXRDb25maWcgPSBsb2dpbkNvbmZpZy5zZXNzaW9uVGltZW91dCB8fCB7J3R5cGUnOiBMT0dJTl9NRVRIT0QuRElBTE9HfTtcbiAgICAgICAgICAgIHNlc3Npb25UaW1lb3V0TWV0aG9kID0gc2Vzc2lvblRpbWVvdXRDb25maWcudHlwZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgc3dpdGNoIChzZXNzaW9uVGltZW91dE1ldGhvZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgTE9HSU5fTUVUSE9ELkRJQUxPRzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TG9naW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuUEFHRTpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0Q3VycmVudFJvdXRlUGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqWydyZWRpcmVjdFRvJ10gPSBwYWdlO1xuICAgICAgICAgICAgICAgICAgICAvLyBBZGRpbmcgcXVlcnkgcGFyYW1zKHBhZ2UgcGFyYW1zIG9mIHBhZ2UgYmVpbmcgcmVkaXJlY3RlZCB0bykgdG8gdGhlIFVSTC5cbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNPYmogPSBtZXJnZShxdWVyeVBhcmFtc09iaiwgdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RlZFJvdXRlUXVlcnlQYXJhbXMoKSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZWRpcmVjdCBwYWdlIHNob3VsZCBub3QgYmUgc2FtZSBhcyBzZXNzaW9uIHRpbWVvdXQgbG9naW4gcGFnZVxuICAgICAgICAgICAgICAgICAgICBpZiAoIHBhZ2UgIT09IHNlc3Npb25UaW1lb3V0Q29uZmlnLnBhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIubmF2aWdhdGUoW3Nlc3Npb25UaW1lb3V0Q29uZmlnLnBhZ2VOYW1lXSwge3F1ZXJ5UGFyYW1zOiBxdWVyeVBhcmFtc09ian0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTE9HSU5fTUVUSE9ELlNTTzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTU09Mb2dpbihjb25maWcsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0TGFuZGluZ1BhZ2UoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGlmIG5vIHVzZXIgZm91bmQsIDQwMSB3YXMgdGhyb3duIGZvciBmaXJzdCB0aW1lIGxvZ2luXG4gICAgICAgICAgICBsb2dpbk1ldGhvZCA9IGxvZ2luQ29uZmlnLnR5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHN3aXRjaCAobG9naW5NZXRob2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5ESUFMT0c6XG4gICAgICAgICAgICAgICAgICAgIC8vIFRocm91Z2ggbG9naW5EaWFsb2csIHVzZXIgd2lsbCByZW1haW4gaW4gdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGZhaWxlZCBjYWxscyB3aWxsIGJlIGV4ZWN1dGVkIHBvc3QgbG9naW4gdGhyb3VnaCBMb2dpblZhcmlhYmxlU2VydmljZS5cbiAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogdXNlciB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gcmVzcGVjdGl2ZSBsYW5kaW5nIHBhZ2Ugb25seSBpZiBkaWFsb2cgaXMgb3BlbmVkIG1hbnVhbGx5KG5vdCB0aHJvdWdoIGEgZmFpbGVkIDQwMSBjYWxsKS5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub1JlZGlyZWN0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dMb2dpbkRpYWxvZygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5QQUdFOlxuICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3QgcHJvdmlkZSByZWRpcmVjdFRvIHBhZ2UgaWYgZmV0Y2hpbmcgSE9NRSBwYWdlIHJlc3VsdGVkIDQwMVxuICAgICAgICAgICAgICAgICAgICAvLyBvbiBhcHAgbG9hZCwgYnkgZGVmYXVsdCBIb21lIHBhZ2UgaXMgbG9hZGVkXG4gICAgICAgICAgICAgICAgICAgIHBhZ2UgPSB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdFBhZ2UoY29uZmlnLCBwYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNPYmpbJ3JlZGlyZWN0VG8nXSA9IHBhZ2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4dHJhUXVlcnlQYXJhbXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLnF1ZXJ5UGFyYW1zKSB8fCB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdGVkUm91dGVRdWVyeVBhcmFtcygpO1xuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc09iaiA9IG1lcmdlKHF1ZXJ5UGFyYW1zT2JqLCBleHRyYVF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLm5hdmlnYXRlKFtsb2dpbkNvbmZpZy5wYWdlTmFtZV0sIHtxdWVyeVBhcmFtczogcXVlcnlQYXJhbXNPYmp9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kYXBwLmxhbmRpbmdQYWdlTmFtZSA9IGxvZ2luQ29uZmlnLnBhZ2VOYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5TU086XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU1NPTG9naW4oY29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIGRhdGEgZGVwZW5kZW50IG9uIGxvZ2dlZCBpbiB1c2VyXG4gICAgICogUmVsb2FkcyBzZWN1cml0eSBjb25maWcsIG1ldGFkYXRhXG4gICAgICogVXBkYXRlcyB0aGUgbG9nZ2VkSW5Vc2VyVmFyaWFibGVcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICAgKi9cbiAgICByZWxvYWRBcHBEYXRhKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2FkU2VjdXJpdHlDb25maWcodHJ1ZSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkTWV0YWRhdGEoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVMb2dnZWRJblVzZXJWYXJpYWJsZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5vUmVkaXJlY3QodmFsdWU/OiBib29sZWFuKSB7XG4gICAgICAgIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9ub1JlZGlyZWN0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbm9SZWRpcmVjdCA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gdGhpcy5fbm9SZWRpcmVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBpbnZva2VzIHNlc3Npb24gZmFpbHVyZSByZXF1ZXN0c1xuICAgICAqL1xuICAgIGV4ZWN1dGVTZXNzaW9uRmFpbHVyZVJlcXVlc3RzKCkge1xuICAgICAgICB0aGlzLiRodHRwLmV4ZWN1dGVTZXNzaW9uRmFpbHVyZVJlcXVlc3RzKCk7XG4gICAgfVxuXG4gICAgcHVzaFRvU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cyhjYWxsYmFjaykge1xuICAgICAgICB0aGlzLiRodHRwLnB1c2hUb1Nlc3Npb25GYWlsdXJlUXVldWUoY2FsbGJhY2spO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZXBsb3llZFVSTCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5kZXBsb3llZFVybCA/IHRoaXMuJGFwcC5kZXBsb3llZFVybCA6ICRyb290U2NvcGUucHJvamVjdC5kZXBsb3llZFVybDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGZXRjaGVzIHRoZSBjdXN0b211cmxzY2hlbWUgZm9yIGEgbW9iaWxlIGFwcFxuICAgICAqIHdoaWNoIGlzIHVzZWQgZm9yIHJlZGlyZWN0aW9uIGJhY2sgdG8gdGhlIGFwcCBmcm9tIGJyb3dzZXIgaW4gaW1wbGljaXQgb0F1dGggZmxvd1xuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAgICovXG4gICAgcHVibGljIGdldEN1c3RvbVVybFNjaGVtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5jdXN0b21VcmxTY2hlbWU7XG4gICAgfVxuXG4gICAgbm90aWZ5KGV2ZW50TmFtZSwgZGF0YSkge1xuICAgICAgICB0aGlzLiRhcHAubm90aWZ5KGV2ZW50TmFtZSwgZGF0YSk7XG4gICAgfVxuXG4gICAgc3Vic2NyaWJlKGV2ZW50TmFtZSwgZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLnN1YnNjcmliZShldmVudE5hbWUsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldEFjdGl2ZVBhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuYWN0aXZlUGFnZTtcbiAgICB9XG5cbiAgICBnZXRBcHBMb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuYXBwTG9jYWxlO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkTG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kaTE4bi5nZXRTZWxlY3RlZExvY2FsZSgpO1xuICAgIH1cblxuICAgIG5vdGlmeUFwcCh0ZW1wbGF0ZSwgdHlwZSwgdGl0bGU/KSB7XG4gICAgICAgIHRoaXMuJGFwcC5ub3RpZnlBcHAodGVtcGxhdGUsIHR5cGUsIHRpdGxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25CZWZvcmVTZXJ2aWNlIG1ldGhvZCBkZWZpbmVkIGluIGFwcC5qcyBvZiB0aGUgYXBwXG4gICAgICogQHBhcmFtIHJlcXVlc3RQYXJhbXNcbiAgICAgKi9cbiAgICBhcHBPbkJlZm9yZVNlcnZpY2VDYWxsKHJlcXVlc3RQYXJhbXM6IGFueSkge1xuICAgICAgICByZXR1cm4gdHJpZ2dlckZuKHRoaXMuJGFwcC5vbkJlZm9yZVNlcnZpY2VDYWxsLCByZXF1ZXN0UGFyYW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25TZXJ2aWNlU3VjY2VzcyBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICogQHBhcmFtIHhock9ialxuICAgICAqL1xuICAgIGFwcE9uU2VydmljZVN1Y2Nlc3MoZGF0YTogYW55LCB4aHJPYmo6IGFueSkge1xuICAgICAgICByZXR1cm4gdHJpZ2dlckZuKHRoaXMuJGFwcC5vblNlcnZpY2VTdWNjZXNzLCBkYXRhLCB4aHJPYmopO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHRoZSBvblNlcnZpY2VFcnJvciBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICogQHBhcmFtIHhock9iXG4gICAgICovXG4gICAgYXBwT25TZXJ2aWNlRXJyb3IoZGF0YTogYW55LCB4aHJPYj86IGFueSkge1xuICAgICAgICByZXR1cm4gdHJpZ2dlckZuKHRoaXMuJGFwcC5vblNlcnZpY2VFcnJvciwgZGF0YSwgeGhyT2IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHRoZSBhcHBWYXJpYWJsZXNSZWFkeSBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqL1xuICAgIGFwcFZhcmlhYmxlc1JlYWR5KCkge1xuICAgICAgICB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uQXBwVmFyaWFibGVzUmVhZHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIHRoZSBvbkJlZm9yZUFwcFJlYWR5IG1ldGhvZCBkZWZpbmVkIGluIGFwcC5qcyBvZiB0aGUgYXBwXG4gICAgICovXG4gICAgYmVmb3JlQXBwUmVhZHkoKSB7XG4gICAgICAgIHRyaWdnZXJGbih0aGlzLiRhcHAub25CZWZvcmVBcHBSZWFkeSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcGlwZSBiYXNlZCBvbiB0aGUgaW5wdXRcbiAgICAgKi9cbiAgICBnZXRQaXBlKHBpcGUpIHtcbiAgICAgICAgaWYgKHBpcGUgPT09ICdkYXRlJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGRhdGVQaXBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMYW5kaW5nUGFnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHNlY3VyaXR5LmdldFBhZ2VCeUxvZ2dlZEluVXNlcigpLnRoZW4ocCA9PiB0aGlzLiRhcHAubGFuZGluZ1BhZ2VOYW1lID0gPHN0cmluZz4gcCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRydWUgaWYgcHJlZmFiIHR5cGUgYXBwXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNQcmVmYWJUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmlzUHJlZmFiVHlwZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm4gdHJ1ZSBpZiB0ZW1wbGF0ZSBidW5kbGUgdHlwZSBhcHBcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBpc1RlbXBsYXRlQnVuZGxlVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5pc1RlbXBsYXRlQnVuZGxlVHlwZTtcbiAgICB9XG5cbiAgICBwb3N0TWVzc2FnZShjb250ZW50KSB7XG4gICAgICAgIHdpbmRvdy50b3AucG9zdE1lc3NhZ2UoY29udGVudCwgJyonKTtcbiAgICB9XG5cbiAgICBzaG93VGVtcGxhdGUoaWR4KSB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy50ZW1wbGF0ZXNbaWR4XTtcbiAgICAgICAgLy8gc2NvcGUuYWN0aXZlVGVtcGxhdGVJbmRleCA9IGlkeDtcbiAgICAgICAgdGhpcy4kcm91dGVyLm5hdmlnYXRlKFt0ZW1wbGF0ZS5pZF0pO1xuICAgIH1cbiAgICBwb3N0VGVtcGxhdGVCdW5kbGVJbmZvKCkge1xuXG4gICAgICAgIHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZ0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtc2dEYXRhID0gZXZ0LmRhdGE7XG5cbiAgICAgICAgICAgIGlmICghaXNPYmplY3QobXNnRGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG1zZ0RhdGEua2V5O1xuXG4gICAgICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgICAgIGNhc2UgUE9TVF9NRVNTQUdFUy5ISURFX1RFTVBMQVRFU19TSE9XX0NBU0U6XG4gICAgICAgICAgICAgICAgICAgIC8vIHNjb3BlLmhpZGVTaG93Q2FzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgUE9TVF9NRVNTQUdFUy5TRUxFQ1RfVEVNUExBVEU6XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93VGVtcGxhdGUobXNnRGF0YS50ZW1wbGF0ZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKHtrZXk6IFBPU1RfTUVTU0FHRVMuT05fTE9BRH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZmV0Y2hDb250ZW50KCdqc29uJywgJy4vY29uZmlnLmpzb24nLCB0cnVlLCByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IFtdO1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzID0gcmVzcG9uc2UudGVtcGxhdGVzO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdE1lc3NhZ2UoeydrZXknOiBQT1NUX01FU1NBR0VTLlRFTVBMQVRFQlVORExFX0NPTkZJRywgJ2NvbmZpZyc6IHJlc3BvbnNlfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBvc3RBcHBUeXBlSW5mbygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNUZW1wbGF0ZUJ1bmRsZVR5cGUoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zdFRlbXBsYXRlQnVuZGxlSW5mbygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
475
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUNILHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixHQUFHLEVBQ0gsWUFBWSxFQUNaLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFhLFVBQVUsRUFBa0IsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7O0FBRTVGLElBQUssYUFPSjtBQVBELFdBQUssYUFBYTtJQUNkLHNFQUFxRCxDQUFBO0lBQ3JELHNFQUFxRCxDQUFBO0lBQ3JELHlEQUFpRCxDQUFBO0lBQ2pELG9EQUE0QyxDQUFBO0lBQzVDLGlFQUFtRCxDQUFBO0lBQ25ELG9DQUFvQyxDQUFBO0FBQ3hDLENBQUMsRUFQSSxhQUFhLEtBQWIsYUFBYSxRQU9qQjtBQUdELE1BQU0sT0FBTyxpQkFBaUI7YUFDVixpQkFBWSxHQUFHLG1CQUFtQixBQUF0QixDQUF1QjtJQVFuRCxZQUNZLEtBQTBC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LFFBQVEsRUFBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztrSEEzZlEsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCOztpRkFBakIsaUJBQWlCO2NBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge1xuICAgIEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICBBYnN0cmFjdEh0dHBTZXJ2aWNlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICBBcHAsXG4gICAgZmV0Y2hDb250ZW50LFxuICAgIGlzRGVmaW5lZCxcbiAgICB0cmlnZ2VyRm4sXG4gICAgJGFwcERpZ2VzdFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBTZWN1cml0eVNlcnZpY2UgfSBmcm9tICdAd20vc2VjdXJpdHknO1xuaW1wb3J0IHsgQ09OU1RBTlRTLCAkcm9vdFNjb3BlLCByb3V0ZXJTZXJ2aWNlLCAgTWV0YWRhdGFTZXJ2aWNlLCBWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQge2V4dGVuZCwgZm9yRWFjaCwgZ2V0LCBpc0VtcHR5LCBpc09iamVjdCwgaXNVbmRlZmluZWQsIG1lcmdlLCB0cmltfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmVudW0gUE9TVF9NRVNTQUdFUyB7XG4gICAgSElERV9URU1QTEFURVNfU0hPV19DQVNFID0gJ2hpZGUtdGVtcGxhdGVzLXNob3ctY2FzZScsXG4gICAgU0hPV19URU1QTEFURVNfU0hPV19DQVNFID0gJ3Nob3ctdGVtcGxhdGVzLXNob3ctY2FzZScsXG4gICAgVVBEQVRFX0xPQ0FUSU9OICAgICAgICAgID0gJ3VwZGF0ZS1sb2NhdGlvbi1wYXRoJyxcbiAgICBTRUxFQ1RfVEVNUExBVEUgICAgICAgICAgPSAnc2VsZWN0LXRlbXBsYXRlJyxcbiAgICBURU1QTEFURUJVTkRMRV9DT05GSUcgICAgPSAndGVtcGxhdGUtYnVuZGxlLWNvbmZpZycsXG4gICAgT05fTE9BRCAgICAgICAgICAgICAgICAgID0gJ29uLWxvYWQnXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBNYW5hZ2VyU2VydmljZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfTkFNRSA9ICdBcHBNYW5hZ2VyU2VydmljZSc7XG5cbiAgICBwcml2YXRlIGFwcFZhcmlhYmxlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgYXBwVmFyaWFibGVzRmlyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ub1JlZGlyZWN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZXM6IEFycmF5PGFueT47XG4gICAgcHJpdmF0ZSBsYXN0TG9nZ2VkVXNlcklkO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgJGh0dHA6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJHNlY3VyaXR5OiBTZWN1cml0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJGRpYWxvZzogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRyb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSAkYXBwOiBBcHAsXG4gICAgICAgIHByaXZhdGUgJHZhcmlhYmxlczogVmFyaWFibGVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkc3Bpbm5lcjogQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkaTE4bjogQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgICkge1xuICAgICAgICAvLyByZWdpc3RlciBtZXRob2QgdG8gaW52b2tlIG9uIHNlc3Npb24gdGltZW91dFxuICAgICAgICB0aGlzLiRodHRwLnJlZ2lzdGVyT25TZXNzaW9uVGltZW91dCh0aGlzLmhhbmRsZTQwMS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLiR2YXJpYWJsZXMucmVnaXN0ZXJEZXBlbmRlbmN5KCdhcHBNYW5hZ2VyJywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgndG9nZ2xlLXZhcmlhYmxlLXN0YXRlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gZGF0YS52YXJpYWJsZSxcbiAgICAgICAgICAgICAgICBhY3RpdmUgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgICAgIGlmICghaXNFbXB0eSh0cmltKHZhcmlhYmxlLnNwaW5uZXJDb250ZXh0KSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzcGlubmVyRXhpc3RzO1xuICAgICAgICAgICAgICAgICAgICAvLyBXTVMtMjExMTcgOiBEbyBub3QgdHJpZ2dlciBzcGlubmVyLCBpZiB0aGUgY3VycmVudCB2YXJpYWJsZSBpcyBzYW1lIGFzIHNwaW5uZXIgd2hpY2ggaXMgaW4gY29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUuX3NwaW5uZXJJZCAmJiB2YXJpYWJsZS5fc3Bpbm5lcklkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaCh2YXJpYWJsZS5fc3Bpbm5lcklkLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnNsaWNlKDAsIGl0ZW0ubGFzdEluZGV4T2YoJ18nKSkgPT09IHZhcmlhYmxlLl9pZCAmJiAodGhpcy4kc3Bpbm5lciBhcyBhbnkpLm1lc3NhZ2VzQnlDb250ZXh0ICYmICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYWJsZS5zcGlubmVyTWVzc2FnZSA9PT0gKHRoaXMuJHNwaW5uZXIgYXMgYW55KS5tZXNzYWdlc0J5Q29udGV4dFt2YXJpYWJsZS5zcGlubmVyQ29udGV4dF1bXCJmaW5hbE1lc3NhZ2VcIl0gfHwgdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPT09ICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdW2l0ZW1dKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3Bpbm5lckV4aXN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZCA9IHZhcmlhYmxlLl9zcGlubmVySWQgfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGlubmVySWQgPSB0aGlzLiRzcGlubmVyLnNob3codmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX2lkICsgJ18nICsgRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5zcGlubmVyY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuc3Bpbm5lckNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZC5wdXNoKHNwaW5uZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzcGlubmVyLmhpZGUodmFyaWFibGUuX3NwaW5uZXJJZC5zaGlmdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkSW4nLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0TG9nZ2VkVXNlcklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc2VjdXJpdHkuZ2V0Q29uZmlnKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGNvbmZpZyAmJiBjb25maWcudXNlckluZm8udXNlcklkICE9PSB0aGlzLmxhc3RMb2dnZWRVc2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5jbGVhclBhZ2VDYWNoZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkT3V0JywgKCkgPT4gdGhpcy5zZXRMYW5kaW5nUGFnZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kYXBwLmNsZWFyUGFnZUNhY2hlKCk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgnaHR0cDQwMScsIChkID0ge30pID0+IHRoaXMuaGFuZGxlNDAxKGQucGFnZSwgZC5vcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gc2Vzc2lvbiB0aW1lb3V0LCBpZiB0aGUgc2Vzc2lvbiB0aW1lb3V0IGNvbmZpZyBpcyBzZXQgdG8gYSBkaWFsb2csIHRoZW4gb3BlbiBsb2dpbiBkaWFsb2dcbiAgICAgKi9cbiAgICBwcml2YXRlIHNob3dMb2dpbkRpYWxvZygpIHtcbiAgICAgICAgdGhpcy4kc3Bpbm5lci5oaWRlKCdnbG9iYWxTcGlubmVyJyk7XG4gICAgICAgIC8vIFJlbW92aW5nIHRoZSBjbG9zZSBhbGwgZGlhbG9ncyBjYWxsLCBzbyB0aGUgZXhpc3RpbmcgZGlhbG9ncyByZW1haW4gb3BlbiBhbmRcbiAgICAgICAgLy8gdGhlIGxvZ2luIGRpYWxvZyBjb21lcyBvbiB0b3Agb2YgaXQuXG4gICAgICAgIHRoaXMuJGRpYWxvZy5vcGVuKCdDb21tb25Mb2dpbkRpYWxvZycpO1xuICAgICAgICAvLyBTaW5jZSB0aGUgbG9naW4gZGlhbG9nIGlzIGNsb3NlZCBhbmQgb3BlbmVkIGl0cyB1cGRhdGVkIHByb3BlcnR5IGlzbid0IHJlYWQgYnkgYW5ndWxhci5cbiAgICAgICAgLy8gSGVuY2Ugd2UgdHJpZ2dlciB0aGUgZGlnZXN0IGN5Y2xlXG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwSlMoKSB7XG5cbiAgICB9XG5cbiAgICBsb2FkQ29tbW9uUGFnZSgpIHtcblxuICAgIH1cblxuICAgIGxvYWRTZWN1cml0eUNvbmZpZyhmb3JjZUZsYWc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5sb2FkKGZvcmNlRmxhZykudGhlbigocikgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiRhcHAubGFuZGluZ1BhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMYW5kaW5nUGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRNZXRhZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG1ldGFkYXRhLmxvYWQoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwVmFyaWFibGVzKHZhcmlhYmxlcz86IGFueSkge1xuICAgICAgICBpZiAodGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluaXQgPSByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy4kdmFyaWFibGVzLnJlZ2lzdGVyKCdhcHAnLCByZXNwb25zZSwgdGhpcy4kYXBwKTtcbiAgICAgICAgICAgIC8vIG5vdCBhc3NpZ25pbmcgZGlyZWN0bHkgdG8gdGhpcy4kYXBwIHRvIGtlZXAgdGhlIHJlZmVyZW5jZSBpbiB0YWN0XG4gICAgICAgICAgICBleHRlbmQodGhpcy4kYXBwLlZhcmlhYmxlcywgZGF0YS5WYXJpYWJsZXMpO1xuICAgICAgICAgICAgZXh0ZW5kKHRoaXMuJGFwcC5BY3Rpb25zLCBkYXRhLkFjdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2dnZWRJblVzZXJWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNGaXJlZCA9IGZhbHNlO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpc0RlZmluZWQodmFyaWFibGVzKSkge1xuICAgICAgICAgICAgaW5pdCh2YXJpYWJsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuJGh0dHAuZ2V0KCcuL2FwcC52YXJpYWJsZXMuanNvbicpLnRoZW4ocmVzcG9uc2UgPT4gaW5pdChyZXNwb25zZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHRlciBhbmQgc2V0dGVyIGZvciB0aGUgcHJvcGVydHkgYXBwVmFyaWFibGVzRmlyZWRcbiAgICAgKiB0aGlzIGZsYWcgZGV0ZXJtaW5lcyBpZiB0aGUgYXBwIHZhcmlhYmxlcyh3aXRoIHN0YXJ0VXBkYXRlOnRydWUpIGhhdmUgYmVlbiBmaXJlZFxuICAgICAqIHRoZXkgc2hvdWxkIGdldCBmaXJlZCBvbmx5IG9uY2UgdGhyb3VnaCBhcHAgbGlmZWN5Y2xlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpc0ZpcmVkXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNBcHBWYXJpYWJsZXNGaXJlZChpc0ZpcmVkPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNEZWZpbmVkKGlzRmlyZWQpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcFZhcmlhYmxlc0ZpcmVkID0gaXNGaXJlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hcHBWYXJpYWJsZXNGaXJlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICAgICAgdmFyaWFibGUuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7XG4gICAgICAgIHZhcmlhYmxlLnJvbGVzICAgICAgICAgICA9IFtdO1xuICAgICAgICB2YXJpYWJsZS5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhcmlhYmxlLmlkICAgICAgICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyaWFibGUudGVuYW50SWQgICAgICAgID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKSB7XG4gICAgICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IGdldCh0aGlzLiRhcHAsICdWYXJpYWJsZXMubG9nZ2VkSW5Vc2VyLmRhdGFTZXQnKTtcblxuICAgICAgICAvLyBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFsb2dnZWRJblVzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy4kc2VjdXJpdHkubG9hZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlDb25maWcgPSB0aGlzLiRzZWN1cml0eS5nZXQoKTtcbiAgICAgICAgICAgIGlmIChzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQgJiYgc2VjdXJpdHlDb25maWcuYXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBzZWN1cml0eUNvbmZpZy5hdXRoZW50aWNhdGVkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyUm9sZXM7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLm5hbWUgICAgICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnVzZXJOYW1lO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pZCAgICAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnRlbmFudElkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyQXR0cmlidXRlczsgLy8gYXNzaWduIHRoZSBleHRyYSB1c2VyQXR0cmlidXRlcyBmb3IgY3VzdG9tIHVzYWdlLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUobG9nZ2VkSW5Vc2VyKTtcbiAgICAgICAgICAgICAgICBsb2dnZWRJblVzZXIuaXNTZWN1cml0eUVuYWJsZWQgPSBzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgdGhyb3cgbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZWN1cml0eUNvbmZpZztcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBbXTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsb2dnZWRJblVzZXIuaWQgICAgICAgICAgICAgID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSB7fTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGluZyB0aGUgYXBwIHZhcmlhYmxlIHN1cHBvcnRlZCBsb2NhbGUgd2l0aCB0aGUgd21Qcm9wZXJ0aWVzIGkxOG4gRGF0YVZhbHVlc1xuICAgICAqXG4gICAgICogVE9ET1tWaWJodV06XG4gICAgICogQ2FuIHdyaXRlIGEgc2ltcGxlIG1pZ3JhdGlvbiB0byBzeW5jIHRoZSBzdXBwb3J0ZWRMb2NhbGUgdmFyaWFibGUgd2l0aCAnX1dNX0FQUF9QUk9QRVJUSUVTLnN1cHBvcnRlZExhbmd1YWdlcydcbiAgICAgKiBIZW5jZSwgdGhpcyBtYXkgbm90IGJlIHJlcXVpcmVkXG4gICAgICpcbiAgICAgKi9cbiAgICB1cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlVmFyID0gZ2V0KHRoaXMuJGFwcCwgJ1ZhcmlhYmxlcy5zdXBwb3J0ZWRMb2NhbGUnKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTU09Mb2dpbihjb25maWcsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgU1NPX1VSTCA9ICdzZXJ2aWNlcy9zZWN1cml0eS9zc29sb2dpbicsXG4gICAgICAgICAgICBQUkVWSUVXX1dJTkRPV19OQU1FID0gJ1dNX1BSRVZJRVdfV0lORE9XJztcbiAgICAgICAgbGV0IHBhZ2UsXG4gICAgICAgICAgICBxdWVyeVBhcmFtcztcblxuICAgICAgICAvLyBkbyBub3QgcHJvdmlkZSByZWRpcmVjdFRvIHBhZ2UgaWYgZmV0Y2hpbmcgSE9NRSBwYWdlIHJlc3VsdGVkIDQwMVxuICAgICAgICAvLyBvbiBhcHAgbG9hZCwgYnkgZGVmYXVsdCBIb21lIHBhZ2UgaXMgbG9hZGVkXG4gICAgICAgIHBhZ2UgPSB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdFBhZ2UoY29uZmlnKTtcblxuICAgICAgICAgICAgcGFnZSA9IHBhZ2UgPyAnP3JlZGlyZWN0UGFnZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhZ2UpIDogJyc7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogRm9yIHByZXZpZXcsIHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCkgZ2V0cyB0aGUgcXVlcnlwYXJhbXMgZm9ybSB0aGUgYWN0aXZhdGVkIHJvdXRlKHBhZ2V3cmFwcGVyY29tcG9uZW50KVxuICAgICAgICAgICAgICogRm9yIGRlcGxveWVkIGFwcCwgY2FuYWN0aXZhdGUgZ3VhcmQgcmVzb2x2ZWQgdG8gZmFsc2UgYW5kIGdldHMgdGhlIHF1ZXJ5cGFyYW1zIGZyb20gdGhlIGNhbmFjdGl2YXRlIGd1cmFyZChubyBhY3RpdmUgcm91dGUgY29tcG9uZW50KVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IChvcHRpb25zICYmIG9wdGlvbnMucXVlcnlQYXJhbXMpIHx8IHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IHRoaXMuJHNlY3VyaXR5LmdldFF1ZXJ5U3RyaW5nKHF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgPyAnPycgKyBxdWVyeVBhcmFtcyA6ICcnO1xuICAgICAgICAgICAgLy8gc2hvd2luZyBhIHJlZGlyZWN0aW5nIG1lc3NhZ2VcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSBnZXQodGhpcy5nZXRBcHBMb2NhbGUoKSwgWydNRVNTQUdFX0xPR0lOX1JFRElSRUNUSU9OJ10pIHx8ICdSZWRpcmVjdGluZyB0byBzc28gbG9naW4uLi4nO1xuICAgICAgICAgICAgLy8gYXBwZW5kaW5nIHJlZGlyZWN0IHRvIHBhZ2UgYW5kIHBhZ2UgcGFyYW1zXG4gICAgICAgICAgICBjb25zdCBzc29VcmwgPSB0aGlzLmdldERlcGxveWVkVVJMKCkgKyBTU09fVVJMICsgcGFnZSArIHF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIHJlbW92ZSBpRnJhbWUgd2hlbiByZWRpcmVjdGVkIHRvIElkUCBsb2dpbiBwYWdlLlxuICAgICAgICAgICAgICogdGhpcyBpcyBiZWluZyBkb25lIGFzIElEUHMgZG8gbm90IGFsbG93IHRvIGdldCB0aGVtc2VsdmVzIGxvYWRlZCBpbnRvIGlGcmFtZXMuXG4gICAgICAgICAgICAgKiByZW1vdmUtdG9vbGJhciBoYXMgYmVlbiBhc3NpZ25lZCB3aXRoIGEgd2luZG93IG5hbWUgV01fUFJFVklFV19XSU5ET1csIGNoZWNrIGlmIHRoZSBpZnJhbWUgaXMgb3VyIHRvb2xiYXIgcmVsYXRlZCBhbmRcbiAgICAgICAgICAgICAqIHNhZmVseSBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJlbnQgdG9vbGJhciB3aXRoIGN1cnJlbnQgdXJsLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cubG9jYXRpb24ub3JpZ2luID09PSB3aW5kb3cucGFyZW50Lm9yaWdpbil7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cucGFyZW50Lm5hbWUgPT09IFBSRVZJRVdfV0lORE9XX05BTUUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cuc2VsZi5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQubmFtZSA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNzb1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsO1xuICAgICAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGFwcCB3aGVuIGEgWEhSIHJlcXVlc3QgcmV0dXJucyA0MDEgcmVzcG9uc2VcbiAgICAgKiBJZiBubyB1c2VyIHdhcyBsb2dnZWQgaW4gYmVmb3JlIDQwMSBvY2N1cnJlZCwgRmlyc3QgdGltZSBMb2dpbiBpcyBzaW11bGF0ZWRcbiAgICAgKiBFbHNlLCBhIHNlc3Npb24gdGltZW91dCBoYXMgb2NjdXJyZWQgYW5kIHRoZSBzYW1lIGlzIHNpbXVsYXRlZFxuICAgICAqIEBwYXJhbSBwYWdlICBpZiBwcm92aWRlZCwgcmVwcmVzZW50cyB0aGUgcGFnZSBuYW1lIGZvciB3aGljaCBYSFIgcmVxdWVzdCByZXR1cm5lZCA0MDEsIG9uIHJlLWxvZ2luXG4gICAgICogICAgICAgICAgICAgIGlmIG5vdCBwcm92aWRlZCwgYSBzZXJ2aWNlIHJlcXVlc3QgcmV0dXJuZWQgNDAxXG4gICAgICogQHBhcmFtIG9uU3VjY2VzcyBzdWNjZXNzIGhhbmRsZXJcbiAgICAgKiBAcGFyYW0gb25FcnJvciBlcnJvciBoYW5kbGVyXG4gICAgICovXG4gICAgaGFuZGxlNDAxKHBhZ2U/LCBvcHRpb25zPykge1xuICAgICAgICBsZXQgc2Vzc2lvblRpbWVvdXRDb25maWcsXG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCxcbiAgICAgICAgICAgIGxvZ2luQ29uZmlnLFxuICAgICAgICAgICAgbG9naW5NZXRob2Q7XG4gICAgICAgIGNvbnN0IExPR0lOX01FVEhPRCA9IHtcbiAgICAgICAgICAgICAgICAnRElBTE9HJyA6ICdESUFMT0cnLFxuICAgICAgICAgICAgICAgICdQQUdFJyAgIDogJ1BBR0UnLFxuICAgICAgICAgICAgICAgICdTU08nICAgIDogJ1NTTydcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy4kc2VjdXJpdHkuZ2V0KCk7XG4gICAgICAgIGxldCBxdWVyeVBhcmFtc09iaiA9IHt9O1xuICAgICAgICBsb2dpbkNvbmZpZyA9IGNvbmZpZy5sb2dpbkNvbmZpZztcbiAgICAgICAgdGhpcy5sYXN0TG9nZ2VkVXNlcklkID0gY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgIC8vIGlmIHVzZXIgZm91bmQsIDQwMSB3YXMgdGhyb3duIGFmdGVyIHNlc3Npb24gdGltZVxuICAgICAgICBpZiAoY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VyTmFtZSkge1xuICAgICAgICAgICAgY29uZmlnLmF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNlc3Npb25UaW1lb3V0Q29uZmlnID0gbG9naW5Db25maWcuc2Vzc2lvblRpbWVvdXQgfHwgeyd0eXBlJzogTE9HSU5fTUVUSE9ELkRJQUxPR307XG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCA9IHNlc3Npb25UaW1lb3V0Q29uZmlnLnR5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHN3aXRjaCAoc2Vzc2lvblRpbWVvdXRNZXRob2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5ESUFMT0c6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xvZ2luRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTE9HSU5fTUVUSE9ELlBBR0U6XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9IHRoaXMuJHNlY3VyaXR5LmdldEN1cnJlbnRSb3V0ZVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc09ialsncmVkaXJlY3RUbyddID0gcGFnZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIHF1ZXJ5IHBhcmFtcyhwYWdlIHBhcmFtcyBvZiBwYWdlIGJlaW5nIHJlZGlyZWN0ZWQgdG8pIHRvIHRoZSBVUkwuXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqID0gbWVyZ2UocXVlcnlQYXJhbXNPYmosIHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCkpO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVkaXJlY3QgcGFnZSBzaG91bGQgbm90IGJlIHNhbWUgYXMgc2Vzc2lvbiB0aW1lb3V0IGxvZ2luIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwYWdlICE9PSBzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLm5hdmlnYXRlKFtzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZV0sIHtxdWVyeVBhcmFtczogcXVlcnlQYXJhbXNPYmp9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5TU086XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU1NPTG9naW4oY29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBubyB1c2VyIGZvdW5kLCA0MDEgd2FzIHRocm93biBmb3IgZmlyc3QgdGltZSBsb2dpblxuICAgICAgICAgICAgbG9naW5NZXRob2QgPSBsb2dpbkNvbmZpZy50eXBlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvZ2luTWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuRElBTE9HOlxuICAgICAgICAgICAgICAgICAgICAvLyBUaHJvdWdoIGxvZ2luRGlhbG9nLCB1c2VyIHdpbGwgcmVtYWluIGluIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBmYWlsZWQgY2FsbHMgd2lsbCBiZSBleGVjdXRlZCBwb3N0IGxvZ2luIHRocm91Z2ggTG9naW5WYXJpYWJsZVNlcnZpY2UuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHVzZXIgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHJlc3BlY3RpdmUgbGFuZGluZyBwYWdlIG9ubHkgaWYgZGlhbG9nIGlzIG9wZW5lZCBtYW51YWxseShub3QgdGhyb3VnaCBhIGZhaWxlZCA0MDEgY2FsbCkuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9SZWRpcmVjdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TG9naW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuUEFHRTpcbiAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHByb3ZpZGUgcmVkaXJlY3RUbyBwYWdlIGlmIGZldGNoaW5nIEhPTUUgcGFnZSByZXN1bHRlZCA0MDFcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gYXBwIGxvYWQsIGJ5IGRlZmF1bHQgSG9tZSBwYWdlIGlzIGxvYWRlZFxuICAgICAgICAgICAgICAgICAgICBwYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RQYWdlKGNvbmZpZywgcGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqWydyZWRpcmVjdFRvJ10gPSBwYWdlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYVF1ZXJ5UGFyYW1zID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5xdWVyeVBhcmFtcykgfHwgdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RlZFJvdXRlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNPYmogPSBtZXJnZShxdWVyeVBhcmFtc09iaiwgZXh0cmFRdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbbG9naW5Db25maWcucGFnZU5hbWVdLCB7cXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zT2JqfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5sYW5kaW5nUGFnZU5hbWUgPSBsb2dpbkNvbmZpZy5wYWdlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuU1NPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNTT0xvZ2luKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBkYXRhIGRlcGVuZGVudCBvbiBsb2dnZWQgaW4gdXNlclxuICAgICAqIFJlbG9hZHMgc2VjdXJpdHkgY29uZmlnLCBtZXRhZGF0YVxuICAgICAqIFVwZGF0ZXMgdGhlIGxvZ2dlZEluVXNlclZhcmlhYmxlXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICovXG4gICAgcmVsb2FkQXBwRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZFNlY3VyaXR5Q29uZmlnKHRydWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZE1ldGFkYXRhKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBub1JlZGlyZWN0KHZhbHVlPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9SZWRpcmVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX25vUmVkaXJlY3QgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vUmVkaXJlY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaW52b2tlcyBzZXNzaW9uIGZhaWx1cmUgcmVxdWVzdHNcbiAgICAgKi9cbiAgICBleGVjdXRlU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cygpIHtcbiAgICAgICAgdGhpcy4kaHR0cC5leGVjdXRlU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cygpO1xuICAgIH1cblxuICAgIHB1c2hUb1Nlc3Npb25GYWlsdXJlUmVxdWVzdHMoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy4kaHR0cC5wdXNoVG9TZXNzaW9uRmFpbHVyZVF1ZXVlKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVwbG95ZWRVUkwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuZGVwbG95ZWRVcmwgPyB0aGlzLiRhcHAuZGVwbG95ZWRVcmwgOiAkcm9vdFNjb3BlLnByb2plY3QuZGVwbG95ZWRVcmw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyB0aGUgY3VzdG9tdXJsc2NoZW1lIGZvciBhIG1vYmlsZSBhcHBcbiAgICAgKiB3aGljaCBpcyB1c2VkIGZvciByZWRpcmVjdGlvbiBiYWNrIHRvIHRoZSBhcHAgZnJvbSBicm93c2VyIGluIGltcGxpY2l0IG9BdXRoIGZsb3dcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXN0b21VcmxTY2hlbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuY3VzdG9tVXJsU2NoZW1lO1xuICAgIH1cblxuICAgIG5vdGlmeShldmVudE5hbWUsIGRhdGEpIHtcbiAgICAgICAgdGhpcy4kYXBwLm5vdGlmeShldmVudE5hbWUsIGRhdGEpO1xuICAgIH1cblxuICAgIHN1YnNjcmliZShldmVudE5hbWUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5zdWJzY3JpYmUoZXZlbnROYW1lLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRBY3RpdmVQYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmFjdGl2ZVBhZ2U7XG4gICAgfVxuXG4gICAgZ2V0QXBwTG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmFwcExvY2FsZTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZExvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGkxOG4uZ2V0U2VsZWN0ZWRMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBub3RpZnlBcHAodGVtcGxhdGUsIHR5cGUsIHRpdGxlPykge1xuICAgICAgICB0aGlzLiRhcHAubm90aWZ5QXBwKHRlbXBsYXRlLCB0eXBlLCB0aXRsZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIG9uQmVmb3JlU2VydmljZSBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1zXG4gICAgICovXG4gICAgYXBwT25CZWZvcmVTZXJ2aWNlQ2FsbChyZXF1ZXN0UGFyYW1zOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25CZWZvcmVTZXJ2aWNlQ2FsbCwgcmVxdWVzdFBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIG9uU2VydmljZVN1Y2Nlc3MgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBwYXJhbSB4aHJPYmpcbiAgICAgKi9cbiAgICBhcHBPblNlcnZpY2VTdWNjZXNzKGRhdGE6IGFueSwgeGhyT2JqOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25TZXJ2aWNlU3VjY2VzcywgZGF0YSwgeGhyT2JqKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25TZXJ2aWNlRXJyb3IgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBwYXJhbSB4aHJPYlxuICAgICAqL1xuICAgIGFwcE9uU2VydmljZUVycm9yKGRhdGE6IGFueSwgeGhyT2I/OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25TZXJ2aWNlRXJyb3IsIGRhdGEsIHhock9iKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgYXBwVmFyaWFibGVzUmVhZHkgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKi9cbiAgICBhcHBWYXJpYWJsZXNSZWFkeSgpIHtcbiAgICAgICAgdHJpZ2dlckZuKHRoaXMuJGFwcC5vbkFwcFZhcmlhYmxlc1JlYWR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25CZWZvcmVBcHBSZWFkeSBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqL1xuICAgIGJlZm9yZUFwcFJlYWR5KCkge1xuICAgICAgICB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uQmVmb3JlQXBwUmVhZHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBpcGUgYmFzZWQgb24gdGhlIGlucHV0XG4gICAgICovXG4gICAgZ2V0UGlwZShwaXBlKSB7XG4gICAgICAgIGlmIChwaXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRlUGlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGFuZGluZ1BhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5nZXRQYWdlQnlMb2dnZWRJblVzZXIoKS50aGVuKHAgPT4gdGhpcy4kYXBwLmxhbmRpbmdQYWdlTmFtZSA9IDxzdHJpbmc+IHApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybiB0cnVlIGlmIHByZWZhYiB0eXBlIGFwcFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGlzUHJlZmFiVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5pc1ByZWZhYlR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRydWUgaWYgdGVtcGxhdGUgYnVuZGxlIHR5cGUgYXBwXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNUZW1wbGF0ZUJ1bmRsZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuaXNUZW1wbGF0ZUJ1bmRsZVR5cGU7XG4gICAgfVxuXG4gICAgcG9zdE1lc3NhZ2UoY29udGVudCkge1xuICAgICAgICB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKGNvbnRlbnQsICcqJyk7XG4gICAgfVxuXG4gICAgc2hvd1RlbXBsYXRlKGlkeCkge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzW2lkeF07XG4gICAgICAgIC8vIHNjb3BlLmFjdGl2ZVRlbXBsYXRlSW5kZXggPSBpZHg7XG4gICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbdGVtcGxhdGUuaWRdKTtcbiAgICB9XG4gICAgcG9zdFRlbXBsYXRlQnVuZGxlSW5mbygpIHtcblxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gKGV2dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbXNnRGF0YSA9IGV2dC5kYXRhO1xuXG4gICAgICAgICAgICBpZiAoIWlzT2JqZWN0KG1zZ0RhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBtc2dEYXRhLmtleTtcblxuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFBPU1RfTUVTU0FHRVMuSElERV9URU1QTEFURVNfU0hPV19DQVNFOlxuICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5oaWRlU2hvd0Nhc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFBPU1RfTUVTU0FHRVMuU0VMRUNUX1RFTVBMQVRFOlxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RlbXBsYXRlKG1zZ0RhdGEudGVtcGxhdGVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3N0TWVzc2FnZSh7a2V5OiBQT1NUX01FU1NBR0VTLk9OX0xPQUR9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZldGNoQ29udGVudCgnanNvbicsICcuL2NvbmZpZy5qc29uJywgdHJ1ZSwgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IHJlc3BvbnNlLnRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKHsna2V5JzogUE9TVF9NRVNTQUdFUy5URU1QTEFURUJVTkRMRV9DT05GSUcsICdjb25maWcnOiByZXNwb25zZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwb3N0QXBwVHlwZUluZm8oKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVGVtcGxhdGVCdW5kbGVUeXBlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RUZW1wbGF0ZUJ1bmRsZUluZm8oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|