@wavemaker/app-ng-runtime 12.0.0-next.45002 → 12.0.0-next.45006
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- app-ng-runtime/build-task/.npmignore +2 -0
- app-ng-runtime/build-task/bundles/index.umd.js +341 -344
- app-ng-runtime/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +5 -3
- app-ng-runtime/build-task/esm2022/advanced/carousel/carousel.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/containers/repeat-template.build.mjs +5 -3
- app-ng-runtime/build-task/esm2022/containers/tabs/tabs.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/form/form.build.mjs +5 -2
- app-ng-runtime/build-task/esm2022/data/list/list.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/media-list/media-list.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/table/table-column/table-column.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/table/table.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/navigation/menu/menu.build.mjs +8 -3
- app-ng-runtime/build-task/esm2022/navigation/popover/popover.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/page/page-content/page-content.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
- app-ng-runtime/build-task/esm2022/public_api.mjs +1 -2
- app-ng-runtime/build-task/esm2022/utils/utils.mjs +1 -1
- app-ng-runtime/build-task/fesm2022/index.mjs +340 -341
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/build-task/public_api.d.ts +0 -1
- app-ng-runtime/components/advanced/carousel/.npmignore +2 -0
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +29 -18
- app-ng-runtime/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +3 -3
- app-ng-runtime/components/advanced/carousel/carousel.directive.d.ts +2 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +15 -9
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +12 -7
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.module.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +28 -16
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/custom/.npmignore +2 -0
- app-ng-runtime/components/advanced/custom/bundles/index.umd.js +31 -94
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +2 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +1 -0
- app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +4 -5
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +21 -13
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +5 -2
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +5 -5
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +2 -9
- app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +1 -2
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +31 -93
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/custom/public_api.d.ts +0 -1
- app-ng-runtime/components/advanced/login/.npmignore +2 -0
- app-ng-runtime/components/advanced/login/bundles/index.umd.js +19 -13
- app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +17 -10
- app-ng-runtime/components/advanced/login/esm2022/login.module.mjs +2 -2
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs +18 -11
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/login/login.component.d.ts +2 -2
- app-ng-runtime/components/advanced/marquee/.npmignore +2 -0
- app-ng-runtime/components/advanced/marquee/bundles/index.umd.js +11 -6
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.directive.mjs +12 -7
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.module.mjs +2 -2
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/marquee/marquee.directive.d.ts +2 -2
- app-ng-runtime/components/base/.npmignore +2 -0
- app-ng-runtime/components/base/bundles/index.umd.js +400 -312
- app-ng-runtime/components/base/directives/show-in-device.directive.d.ts +3 -6
- app-ng-runtime/components/base/esm2022/components.module.mjs +2 -2
- app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +13 -15
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +35 -34
- app-ng-runtime/components/base/esm2022/pipes/image.pipe.mjs +2 -2
- app-ng-runtime/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -3
- app-ng-runtime/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -3
- app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
- app-ng-runtime/components/base/esm2022/public_api.mjs +2 -1
- app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
- app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +48 -42
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
- app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +8 -7
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +23 -22
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +63 -42
- app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +4 -4
- app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +52 -18
- app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +6 -5
- app-ng-runtime/components/base/esm2022/widgets/common/base/stylable.component.mjs +3 -3
- app-ng-runtime/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -3
- app-ng-runtime/components/base/esm2022/widgets/common/container/container.directive.mjs +12 -7
- app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +5 -4
- app-ng-runtime/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +12 -7
- app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +14 -7
- app-ng-runtime/components/base/esm2022/widgets/common/message/message.component.mjs +16 -10
- app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +14 -8
- app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +9 -8
- app-ng-runtime/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +4 -4
- app-ng-runtime/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +15 -9
- app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +11 -10
- app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/framework/styler.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-props.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-registry.mjs +1 -1
- app-ng-runtime/components/base/fesm2022/index.mjs +405 -315
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/base/public_api.d.ts +1 -0
- app-ng-runtime/components/base/utils/data-utils.d.ts +1 -0
- app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/base/base-container.component.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +22 -4
- app-ng-runtime/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/container/container.directive.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/item-template/item-template.directive.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/message/message.component.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/partial/partial.directive.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +3 -3
- app-ng-runtime/components/basic/default/.npmignore +2 -0
- app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/bundles/index.umd.js +158 -115
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +31 -27
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +13 -7
- app-ng-runtime/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/html/html.directive.mjs +13 -8
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +19 -14
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +15 -9
- app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +15 -9
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +12 -7
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +34 -30
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +21 -17
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +157 -113
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/default/html/html.directive.d.ts +2 -2
- app-ng-runtime/components/basic/default/icon/icon.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/label/label.directive.d.ts +2 -2
- app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -2
- app-ng-runtime/components/basic/default/spinner/spinner.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -2
- app-ng-runtime/components/basic/progress/.npmignore +2 -0
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +40 -28
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +22 -15
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +17 -10
- app-ng-runtime/components/basic/progress/esm2022/progress.module.mjs +2 -2
- app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +39 -26
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -2
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +2 -2
- app-ng-runtime/components/basic/rich-text-editor/.npmignore +2 -0
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +19 -13
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +17 -10
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +2 -2
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +18 -11
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
- app-ng-runtime/components/basic/search/.npmignore +2 -0
- app-ng-runtime/components/basic/search/bundles/index.umd.js +186 -175
- app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
- app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
- app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
- app-ng-runtime/components/basic/search/esm2022/scrollable.directive.mjs +3 -3
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +148 -138
- app-ng-runtime/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +186 -174
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +2 -2
- app-ng-runtime/components/basic/tree/.npmignore +2 -0
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +23 -17
- app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +21 -14
- app-ng-runtime/components/basic/tree/esm2022/tree.module.mjs +2 -2
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs +22 -15
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/tree/tree.component.d.ts +2 -2
- app-ng-runtime/components/chart/.npmignore +2 -0
- app-ng-runtime/components/chart/bundles/index.umd.js +97 -84
- app-ng-runtime/components/chart/chart.component.d.ts +3 -3
- app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
- app-ng-runtime/components/chart/esm2022/chart.component.mjs +82 -68
- app-ng-runtime/components/chart/esm2022/chart.module.mjs +2 -2
- app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
- app-ng-runtime/components/chart/fesm2022/index.mjs +95 -81
- app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/accordion/.npmignore +2 -0
- app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -2
- app-ng-runtime/components/containers/accordion/accordion.directive.d.ts +2 -2
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +51 -40
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +23 -17
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +4 -4
- app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +25 -19
- app-ng-runtime/components/containers/accordion/esm2022/accordion.module.mjs +2 -2
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +50 -38
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/layout-grid/.npmignore +2 -0
- app-ng-runtime/components/containers/layout-grid/bundles/index.umd.js +32 -17
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +13 -8
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +12 -7
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +12 -7
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.module.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs +34 -19
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +2 -2
- app-ng-runtime/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +2 -2
- app-ng-runtime/components/containers/layout-grid/layout-grid.directive.d.ts +2 -2
- app-ng-runtime/components/containers/linear-layout/.npmignore +2 -0
- app-ng-runtime/components/containers/linear-layout/bundles/index.umd.js +21 -11
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +12 -7
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +12 -7
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.module.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs +23 -13
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +2 -2
- app-ng-runtime/components/containers/linear-layout/linear-layout.directive.d.ts +2 -2
- app-ng-runtime/components/containers/panel/.npmignore +2 -0
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +85 -85
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +83 -82
- app-ng-runtime/components/containers/panel/esm2022/panel.module.mjs +2 -2
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +84 -83
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/panel.component.d.ts +3 -3
- app-ng-runtime/components/containers/tabs/.npmignore +2 -0
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +74 -63
- app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +14 -8
- app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +4 -4
- app-ng-runtime/components/containers/tabs/esm2022/tabs.animator.mjs +1 -1
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +57 -51
- app-ng-runtime/components/containers/tabs/esm2022/tabs.module.mjs +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.props.mjs +1 -1
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +73 -61
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -2
- app-ng-runtime/components/containers/tabs/tabs.component.d.ts +2 -2
- app-ng-runtime/components/containers/tile/.npmignore +2 -0
- app-ng-runtime/components/containers/tile/bundles/index.umd.js +11 -6
- app-ng-runtime/components/containers/tile/esm2022/tile.directive.mjs +12 -7
- app-ng-runtime/components/containers/tile/esm2022/tile.module.mjs +2 -2
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tile/tile.directive.d.ts +2 -2
- app-ng-runtime/components/containers/wizard/.npmignore +2 -0
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +102 -98
- app-ng-runtime/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +13 -8
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +92 -93
- app-ng-runtime/components/containers/wizard/esm2022/wizard.module.mjs +2 -2
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +104 -100
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/wizard-step/wizard-step.directive.d.ts +2 -2
- app-ng-runtime/components/containers/wizard/wizard.component.d.ts +2 -2
- app-ng-runtime/components/data/card/.npmignore +2 -0
- app-ng-runtime/components/data/card/bundles/index.umd.js +70 -50
- app-ng-runtime/components/data/card/card-actions/card-actions.directive.d.ts +2 -2
- app-ng-runtime/components/data/card/card-content/card-content.component.d.ts +2 -2
- app-ng-runtime/components/data/card/card-footer/card-footer.directive.d.ts +2 -2
- app-ng-runtime/components/data/card/card.component.d.ts +2 -2
- app-ng-runtime/components/data/card/esm2022/card-actions/card-actions.directive.mjs +12 -7
- app-ng-runtime/components/data/card/esm2022/card-content/card-content.component.mjs +15 -9
- app-ng-runtime/components/data/card/esm2022/card-footer/card-footer.directive.mjs +12 -7
- app-ng-runtime/components/data/card/esm2022/card.component.mjs +38 -34
- app-ng-runtime/components/data/card/esm2022/card.module.mjs +2 -2
- app-ng-runtime/components/data/card/fesm2022/index.mjs +72 -52
- app-ng-runtime/components/data/card/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/.npmignore +2 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +197 -184
- app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +15 -9
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +21 -15
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.props.mjs +1 -1
- app-ng-runtime/components/data/form/esm2022/form-widget.directive.mjs +4 -4
- app-ng-runtime/components/data/form/esm2022/form.component.mjs +138 -134
- app-ng-runtime/components/data/form/esm2022/form.module.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form.props.mjs +1 -1
- app-ng-runtime/components/data/form/esm2022/live-actions/dependson.directive.mjs +4 -4
- app-ng-runtime/components/data/form/esm2022/live-actions/live-actions.directive.mjs +4 -4
- app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +7 -6
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +14 -13
- app-ng-runtime/components/data/form/fesm2022/index.mjs +201 -187
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-action/form-action.directive.d.ts +2 -2
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +2 -2
- app-ng-runtime/components/data/form/form.component.d.ts +4 -4
- app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
- app-ng-runtime/components/data/list/.npmignore +2 -0
- app-ng-runtime/components/data/list/bundles/index.umd.js +829 -818
- app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +9 -4
- app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +817 -810
- app-ng-runtime/components/data/list/esm2022/list.module.mjs +2 -2
- app-ng-runtime/components/data/list/fesm2022/index.mjs +828 -816
- app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/list/list-item.directive.d.ts +4 -0
- app-ng-runtime/components/data/list/list.component.d.ts +55 -54
- app-ng-runtime/components/data/live-table/.npmignore +2 -0
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +13 -7
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +14 -8
- app-ng-runtime/components/data/live-table/esm2022/live-table.module.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +15 -9
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/live-table/live-table.component.d.ts +2 -2
- app-ng-runtime/components/data/pagination/.npmignore +2 -0
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +113 -110
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +111 -107
- app-ng-runtime/components/data/pagination/esm2022/pagination.module.mjs +2 -2
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +112 -108
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/pagination.component.d.ts +2 -2
- app-ng-runtime/components/data/table/.npmignore +2 -0
- app-ng-runtime/components/data/table/bundles/index.umd.js +314 -269
- app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +15 -9
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +40 -25
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.props.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +13 -8
- app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +10 -9
- app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +56 -58
- app-ng-runtime/components/data/table/esm2022/table-row/table-row.directive.mjs +13 -8
- app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +14 -8
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +165 -150
- app-ng-runtime/components/data/table/esm2022/table.module.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table.props.mjs +2 -2
- app-ng-runtime/components/data/table/fesm2022/index.mjs +313 -267
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table-action/table-action.directive.d.ts +2 -2
- app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +8 -8
- app-ng-runtime/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -2
- app-ng-runtime/components/data/table/table-row/table-row.directive.d.ts +2 -2
- app-ng-runtime/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -2
- app-ng-runtime/components/data/table/table.component.d.ts +4 -4
- app-ng-runtime/components/dialogs/alert-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/alert-dialog/alert-dialog.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +15 -9
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +16 -10
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +17 -11
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +17 -11
- app-ng-runtime/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +18 -12
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +19 -13
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/.npmignore +2 -0
- app-ng-runtime/components/dialogs/default/base-dialog.d.ts +2 -2
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +75 -71
- app-ng-runtime/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +14 -9
- app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +4 -4
- app-ng-runtime/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +12 -7
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +49 -55
- app-ng-runtime/components/dialogs/default/esm2022/dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +76 -72
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +20 -14
- app-ng-runtime/components/dialogs/design-dialog/dialog.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +21 -15
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +22 -16
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -14
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -15
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +22 -16
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/login-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/login-dialog/bundles/index.umd.js +4 -4
- app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +4 -4
- app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +16 -10
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +17 -11
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +18 -12
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/partial-dialog.component.d.ts +2 -2
- app-ng-runtime/components/input/calendar/.npmignore +2 -0
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +46 -38
- app-ng-runtime/components/input/calendar/calendar.component.d.ts +2 -2
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +44 -35
- app-ng-runtime/components/input/calendar/esm2022/calendar.module.mjs +2 -2
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +45 -36
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/.npmignore +2 -0
- app-ng-runtime/components/input/chips/bundles/index.umd.js +69 -61
- app-ng-runtime/components/input/chips/chips.component.d.ts +3 -3
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +67 -58
- app-ng-runtime/components/input/chips/esm2022/chips.module.mjs +2 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +67 -58
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/.npmignore +2 -0
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +25 -12
- app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +2 -2
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +26 -13
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.module.mjs +2 -2
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +26 -13
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/.npmignore +2 -0
- app-ng-runtime/components/input/currency/bundles/index.umd.js +18 -11
- app-ng-runtime/components/input/currency/currency.component.d.ts +2 -2
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +19 -12
- app-ng-runtime/components/input/currency/esm2022/currency.module.mjs +2 -2
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +19 -12
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/.npmignore +2 -0
- app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
- app-ng-runtime/components/input/default/bundles/index.umd.js +583 -450
- app-ng-runtime/components/input/default/button/button.component.d.ts +2 -2
- app-ng-runtime/components/input/default/button-group/button-group.directive.d.ts +2 -2
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +3 -2
- app-ng-runtime/components/input/default/checkboxset/checkboxset.component.d.ts +2 -2
- app-ng-runtime/components/input/default/composite/composite.directive.d.ts +2 -2
- app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
- app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +3 -3
- app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +17 -11
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +32 -28
- app-ng-runtime/components/input/default/esm2022/button-group/button-group.directive.mjs +12 -7
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +5 -4
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +27 -17
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +107 -103
- app-ng-runtime/components/input/default/esm2022/composite/composite.directive.mjs +12 -7
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +32 -26
- app-ng-runtime/components/input/default/esm2022/input.module.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +17 -10
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +105 -102
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +43 -32
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +38 -31
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +18 -11
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +23 -12
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +23 -12
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +20 -11
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +35 -24
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +21 -12
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +20 -11
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +21 -12
- app-ng-runtime/components/input/default/fesm2022/index.mjs +586 -451
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +2 -2
- app-ng-runtime/components/input/default/radioset/radioset.component.d.ts +2 -2
- app-ng-runtime/components/input/default/select/select.component.d.ts +2 -2
- app-ng-runtime/components/input/default/switch/switch.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/base/base-input.d.ts +3 -2
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -1
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +2 -2
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/.npmignore +2 -0
- app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +200 -163
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +44 -36
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +29 -21
- app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/date/imaskUtil.mjs +1 -1
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +42 -41
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +49 -37
- app-ng-runtime/components/input/epoch/esm2022/epoch.module.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +7 -5
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +35 -24
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +197 -159
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/time/time.component.d.ts +2 -2
- app-ng-runtime/components/input/file-upload/.npmignore +2 -0
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +133 -135
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +131 -132
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +132 -133
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +2 -2
- app-ng-runtime/components/input/rating/.npmignore +2 -0
- app-ng-runtime/components/input/rating/bundles/index.umd.js +60 -51
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +58 -48
- app-ng-runtime/components/input/rating/esm2022/rating.module.mjs +2 -2
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +58 -48
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/rating/rating.component.d.ts +2 -2
- app-ng-runtime/components/input/slider/.npmignore +2 -0
- app-ng-runtime/components/input/slider/bundles/index.umd.js +23 -13
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +24 -14
- app-ng-runtime/components/input/slider/esm2022/slider.module.mjs +2 -2
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +24 -14
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/slider.component.d.ts +2 -2
- app-ng-runtime/components/navigation/breadcrumb/.npmignore +2 -0
- app-ng-runtime/components/navigation/breadcrumb/breadcrumb.component.d.ts +2 -2
- app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +33 -28
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +34 -29
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +35 -30
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/.npmignore +2 -0
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +160 -145
- app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +13 -7
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +5 -4
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +27 -26
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +44 -40
- app-ng-runtime/components/navigation/menu/esm2022/menu.module.mjs +4 -3
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +14 -8
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +63 -63
- app-ng-runtime/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +3 -3
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +160 -144
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu-adapator.component.d.ts +1 -1
- app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +2 -2
- app-ng-runtime/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -3
- app-ng-runtime/components/navigation/menu/nav/nav.component.d.ts +3 -4
- app-ng-runtime/components/navigation/navbar/.npmignore +2 -0
- app-ng-runtime/components/navigation/navbar/bundles/index.umd.js +29 -22
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.component.mjs +30 -23
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.module.mjs +2 -2
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs +31 -24
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/navbar/navbar.component.d.ts +2 -2
- app-ng-runtime/components/navigation/popover/.npmignore +2 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +18 -11
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +19 -12
- app-ng-runtime/components/navigation/popover/esm2022/popover.module.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +20 -13
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/popover.component.d.ts +2 -2
- app-ng-runtime/components/page/default/.npmignore +2 -0
- app-ng-runtime/components/page/default/bundles/index.umd.js +63 -31
- app-ng-runtime/components/page/default/content/content.component.d.ts +2 -2
- app-ng-runtime/components/page/default/esm2022/content/content.component.mjs +13 -7
- app-ng-runtime/components/page/default/esm2022/layout.directive.mjs +12 -7
- app-ng-runtime/components/page/default/esm2022/page-content/page-content.component.mjs +13 -7
- app-ng-runtime/components/page/default/esm2022/page.directive.mjs +12 -7
- app-ng-runtime/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/router-outlet.directive.mjs +12 -7
- app-ng-runtime/components/page/default/esm2022/spa-page.directive.mjs +12 -7
- app-ng-runtime/components/page/default/fesm2022/index.mjs +65 -33
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/default/layout.directive.d.ts +2 -2
- app-ng-runtime/components/page/default/page-content/page-content.component.d.ts +2 -2
- app-ng-runtime/components/page/default/page.directive.d.ts +2 -2
- app-ng-runtime/components/page/default/router-outlet.directive.d.ts +2 -2
- app-ng-runtime/components/page/default/spa-page.directive.d.ts +2 -2
- app-ng-runtime/components/page/footer/.npmignore +2 -0
- app-ng-runtime/components/page/footer/bundles/index.umd.js +11 -6
- app-ng-runtime/components/page/footer/esm2022/footer.directive.mjs +12 -7
- app-ng-runtime/components/page/footer/esm2022/footer.module.mjs +2 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/footer.directive.d.ts +2 -2
- app-ng-runtime/components/page/header/.npmignore +2 -0
- app-ng-runtime/components/page/header/bundles/index.umd.js +12 -6
- app-ng-runtime/components/page/header/esm2022/header.component.mjs +13 -7
- app-ng-runtime/components/page/header/esm2022/header.module.mjs +2 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +14 -8
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/header.component.d.ts +2 -2
- app-ng-runtime/components/page/left-panel/.npmignore +2 -0
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +12 -7
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.animator.mjs +1 -1
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.directive.mjs +13 -8
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +14 -9
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/left-panel.directive.d.ts +2 -2
- app-ng-runtime/components/page/right-panel/.npmignore +2 -0
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +11 -6
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +12 -7
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.module.mjs +2 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/right-panel.directive.d.ts +2 -2
- app-ng-runtime/components/page/top-nav/.npmignore +2 -0
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +11 -6
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.directive.mjs +12 -7
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.module.mjs +2 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/top-nav.directive.d.ts +2 -2
- app-ng-runtime/components/prefab/.npmignore +2 -0
- app-ng-runtime/components/prefab/bundles/index.umd.js +28 -18
- app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +14 -8
- app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +15 -9
- app-ng-runtime/components/prefab/esm2022/prefab.module.mjs +2 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs +26 -15
- app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/prefab-container/prefab-container.directive.d.ts +2 -2
- app-ng-runtime/components/prefab/prefab.directive.d.ts +2 -2
- app-ng-runtime/core/.npmignore +2 -0
- app-ng-runtime/core/bundles/index.umd.js +158 -146
- app-ng-runtime/core/esm2022/core.module.mjs +2 -2
- app-ng-runtime/core/esm2022/public_api.mjs +3 -2
- app-ng-runtime/core/esm2022/services/constant.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +26 -0
- app-ng-runtime/core/esm2022/services/field-type.service.mjs +5 -4
- app-ng-runtime/core/esm2022/services/field-widget.service.mjs +5 -4
- app-ng-runtime/core/esm2022/services/pagination.service.mjs +8 -7
- app-ng-runtime/core/esm2022/services/script-loader.service.mjs +3 -3
- app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +18 -17
- app-ng-runtime/core/esm2022/services/user-custom-pipe-manager.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/utils.service.mjs +5 -4
- app-ng-runtime/core/esm2022/services/viewport.service.mjs +5 -4
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
- app-ng-runtime/core/esm2022/utils/dom.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/event-notifier.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/expression-parser.mjs +6 -5
- app-ng-runtime/core/esm2022/utils/id-generator.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
- app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
- app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
- app-ng-runtime/core/esm2022/utils/wm-project-properties.mjs +1 -1
- app-ng-runtime/core/fesm2022/index.mjs +158 -142
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +2 -1
- app-ng-runtime/core/services/custom-icons-loader.service.d.ts +7 -0
- app-ng-runtime/core/services/pagination.service.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +5 -9
- app-ng-runtime/http/.npmignore +2 -0
- app-ng-runtime/http/bundles/index.umd.js +10 -10
- app-ng-runtime/http/esm2022/http-service.module.mjs +2 -2
- app-ng-runtime/http/esm2022/http.service.mjs +7 -6
- app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
- app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
- app-ng-runtime/http/fesm2022/index.mjs +7 -6
- app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/locales/angular/global/af-na.js +4 -4
- app-ng-runtime/locales/angular/global/af.js +4 -4
- app-ng-runtime/locales/angular/global/agq.js +4 -4
- app-ng-runtime/locales/angular/global/ak.js +4 -4
- app-ng-runtime/locales/angular/global/am.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ae.js +4 -4
- app-ng-runtime/locales/angular/global/ar-bh.js +4 -4
- app-ng-runtime/locales/angular/global/ar-dj.js +4 -4
- app-ng-runtime/locales/angular/global/ar-dz.js +4 -4
- app-ng-runtime/locales/angular/global/ar-eg.js +4 -4
- app-ng-runtime/locales/angular/global/ar-eh.js +4 -4
- app-ng-runtime/locales/angular/global/ar-er.js +4 -4
- app-ng-runtime/locales/angular/global/ar-il.js +4 -4
- app-ng-runtime/locales/angular/global/ar-iq.js +4 -4
- app-ng-runtime/locales/angular/global/ar-jo.js +4 -4
- app-ng-runtime/locales/angular/global/ar-km.js +4 -4
- app-ng-runtime/locales/angular/global/ar-kw.js +4 -4
- app-ng-runtime/locales/angular/global/ar-lb.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ly.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ma.js +4 -4
- app-ng-runtime/locales/angular/global/ar-mr.js +4 -4
- app-ng-runtime/locales/angular/global/ar-om.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ps.js +4 -4
- app-ng-runtime/locales/angular/global/ar-qa.js +4 -4
- app-ng-runtime/locales/angular/global/ar-sa.js +4 -4
- app-ng-runtime/locales/angular/global/ar-sd.js +4 -4
- app-ng-runtime/locales/angular/global/ar-so.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ss.js +4 -4
- app-ng-runtime/locales/angular/global/ar-sy.js +4 -4
- app-ng-runtime/locales/angular/global/ar-td.js +4 -4
- app-ng-runtime/locales/angular/global/ar-tn.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ye.js +4 -4
- app-ng-runtime/locales/angular/global/ar.js +4 -4
- app-ng-runtime/locales/angular/global/as.js +4 -4
- app-ng-runtime/locales/angular/global/asa.js +4 -4
- app-ng-runtime/locales/angular/global/ast.js +4 -4
- app-ng-runtime/locales/angular/global/az-cyrl.js +4 -4
- app-ng-runtime/locales/angular/global/az-latn.js +4 -4
- app-ng-runtime/locales/angular/global/az.js +4 -4
- app-ng-runtime/locales/angular/global/bas.js +4 -4
- app-ng-runtime/locales/angular/global/be-tarask.js +4 -4
- app-ng-runtime/locales/angular/global/be.js +4 -4
- app-ng-runtime/locales/angular/global/bem.js +4 -4
- app-ng-runtime/locales/angular/global/bez.js +4 -4
- app-ng-runtime/locales/angular/global/bg.js +4 -4
- app-ng-runtime/locales/angular/global/bm.js +4 -4
- app-ng-runtime/locales/angular/global/bn-in.js +4 -4
- app-ng-runtime/locales/angular/global/bn.js +4 -4
- app-ng-runtime/locales/angular/global/bo-in.js +4 -4
- app-ng-runtime/locales/angular/global/bo.js +4 -4
- app-ng-runtime/locales/angular/global/br.js +4 -4
- app-ng-runtime/locales/angular/global/brx.js +4 -4
- app-ng-runtime/locales/angular/global/bs-cyrl.js +4 -4
- app-ng-runtime/locales/angular/global/bs-latn.js +4 -4
- app-ng-runtime/locales/angular/global/bs.js +4 -4
- app-ng-runtime/locales/angular/global/ca-ad.js +4 -4
- app-ng-runtime/locales/angular/global/ca-es-valencia.js +4 -4
- app-ng-runtime/locales/angular/global/ca-fr.js +4 -4
- app-ng-runtime/locales/angular/global/ca-it.js +4 -4
- app-ng-runtime/locales/angular/global/ca.js +4 -4
- app-ng-runtime/locales/angular/global/ccp-in.js +4 -4
- app-ng-runtime/locales/angular/global/ccp.js +4 -4
- app-ng-runtime/locales/angular/global/ce.js +4 -4
- app-ng-runtime/locales/angular/global/ceb.js +4 -4
- app-ng-runtime/locales/angular/global/cgg.js +4 -4
- app-ng-runtime/locales/angular/global/chr.js +4 -4
- app-ng-runtime/locales/angular/global/ckb-ir.js +4 -4
- app-ng-runtime/locales/angular/global/ckb.js +4 -4
- app-ng-runtime/locales/angular/global/cs.js +4 -4
- app-ng-runtime/locales/angular/global/cy.js +4 -4
- app-ng-runtime/locales/angular/global/da-gl.js +4 -4
- app-ng-runtime/locales/angular/global/da.js +4 -4
- app-ng-runtime/locales/angular/global/dav.js +4 -4
- app-ng-runtime/locales/angular/global/de-at.js +4 -4
- app-ng-runtime/locales/angular/global/de-be.js +4 -4
- app-ng-runtime/locales/angular/global/de-ch.js +4 -4
- app-ng-runtime/locales/angular/global/de-it.js +4 -4
- app-ng-runtime/locales/angular/global/de-li.js +4 -4
- app-ng-runtime/locales/angular/global/de-lu.js +4 -4
- app-ng-runtime/locales/angular/global/de.js +4 -4
- app-ng-runtime/locales/angular/global/dje.js +4 -4
- app-ng-runtime/locales/angular/global/doi.js +4 -4
- app-ng-runtime/locales/angular/global/dsb.js +4 -4
- app-ng-runtime/locales/angular/global/dua.js +4 -4
- app-ng-runtime/locales/angular/global/dyo.js +4 -4
- app-ng-runtime/locales/angular/global/dz.js +4 -4
- app-ng-runtime/locales/angular/global/ebu.js +4 -4
- app-ng-runtime/locales/angular/global/ee-tg.js +4 -4
- app-ng-runtime/locales/angular/global/ee.js +4 -4
- app-ng-runtime/locales/angular/global/el-cy.js +4 -4
- app-ng-runtime/locales/angular/global/el.js +4 -4
- app-ng-runtime/locales/angular/global/en-001.js +4 -4
- app-ng-runtime/locales/angular/global/en-150.js +4 -4
- app-ng-runtime/locales/angular/global/en-ae.js +4 -4
- app-ng-runtime/locales/angular/global/en-ag.js +4 -4
- app-ng-runtime/locales/angular/global/en-ai.js +4 -4
- app-ng-runtime/locales/angular/global/en-as.js +4 -4
- app-ng-runtime/locales/angular/global/en-at.js +4 -4
- app-ng-runtime/locales/angular/global/en-au.js +4 -4
- app-ng-runtime/locales/angular/global/en-bb.js +4 -4
- app-ng-runtime/locales/angular/global/en-be.js +4 -4
- app-ng-runtime/locales/angular/global/en-bi.js +4 -4
- app-ng-runtime/locales/angular/global/en-bm.js +4 -4
- app-ng-runtime/locales/angular/global/en-bs.js +4 -4
- app-ng-runtime/locales/angular/global/en-bw.js +4 -4
- app-ng-runtime/locales/angular/global/en-bz.js +4 -4
- app-ng-runtime/locales/angular/global/en-ca.js +4 -4
- app-ng-runtime/locales/angular/global/en-cc.js +4 -4
- app-ng-runtime/locales/angular/global/en-ch.js +4 -4
- app-ng-runtime/locales/angular/global/en-ck.js +4 -4
- app-ng-runtime/locales/angular/global/en-cm.js +4 -4
- app-ng-runtime/locales/angular/global/en-cx.js +4 -4
- app-ng-runtime/locales/angular/global/en-cy.js +4 -4
- app-ng-runtime/locales/angular/global/en-de.js +4 -4
- app-ng-runtime/locales/angular/global/en-dg.js +4 -4
- app-ng-runtime/locales/angular/global/en-dk.js +4 -4
- app-ng-runtime/locales/angular/global/en-dm.js +4 -4
- app-ng-runtime/locales/angular/global/en-er.js +4 -4
- app-ng-runtime/locales/angular/global/en-fi.js +4 -4
- app-ng-runtime/locales/angular/global/en-fj.js +4 -4
- app-ng-runtime/locales/angular/global/en-fk.js +4 -4
- app-ng-runtime/locales/angular/global/en-fm.js +4 -4
- app-ng-runtime/locales/angular/global/en-gb.js +4 -4
- app-ng-runtime/locales/angular/global/en-gd.js +4 -4
- app-ng-runtime/locales/angular/global/en-gg.js +4 -4
- app-ng-runtime/locales/angular/global/en-gh.js +4 -4
- app-ng-runtime/locales/angular/global/en-gi.js +4 -4
- app-ng-runtime/locales/angular/global/en-gm.js +4 -4
- app-ng-runtime/locales/angular/global/en-gu.js +4 -4
- app-ng-runtime/locales/angular/global/en-gy.js +4 -4
- app-ng-runtime/locales/angular/global/en-hk.js +4 -4
- app-ng-runtime/locales/angular/global/en-ie.js +4 -4
- app-ng-runtime/locales/angular/global/en-il.js +4 -4
- app-ng-runtime/locales/angular/global/en-im.js +4 -4
- app-ng-runtime/locales/angular/global/en-in.js +4 -4
- app-ng-runtime/locales/angular/global/en-io.js +4 -4
- app-ng-runtime/locales/angular/global/en-je.js +4 -4
- app-ng-runtime/locales/angular/global/en-jm.js +4 -4
- app-ng-runtime/locales/angular/global/en-ke.js +4 -4
- app-ng-runtime/locales/angular/global/en-ki.js +4 -4
- app-ng-runtime/locales/angular/global/en-kn.js +4 -4
- app-ng-runtime/locales/angular/global/en-ky.js +4 -4
- app-ng-runtime/locales/angular/global/en-lc.js +4 -4
- app-ng-runtime/locales/angular/global/en-lr.js +4 -4
- app-ng-runtime/locales/angular/global/en-ls.js +4 -4
- app-ng-runtime/locales/angular/global/en-mg.js +4 -4
- app-ng-runtime/locales/angular/global/en-mh.js +4 -4
- app-ng-runtime/locales/angular/global/en-mo.js +4 -4
- app-ng-runtime/locales/angular/global/en-mp.js +4 -4
- app-ng-runtime/locales/angular/global/en-ms.js +4 -4
- app-ng-runtime/locales/angular/global/en-mt.js +4 -4
- app-ng-runtime/locales/angular/global/en-mu.js +4 -4
- app-ng-runtime/locales/angular/global/en-mv.js +4 -4
- app-ng-runtime/locales/angular/global/en-mw.js +4 -4
- app-ng-runtime/locales/angular/global/en-my.js +4 -4
- app-ng-runtime/locales/angular/global/en-na.js +4 -4
- app-ng-runtime/locales/angular/global/en-nf.js +4 -4
- app-ng-runtime/locales/angular/global/en-ng.js +4 -4
- app-ng-runtime/locales/angular/global/en-nl.js +4 -4
- app-ng-runtime/locales/angular/global/en-nr.js +4 -4
- app-ng-runtime/locales/angular/global/en-nu.js +4 -4
- app-ng-runtime/locales/angular/global/en-nz.js +4 -4
- app-ng-runtime/locales/angular/global/en-pg.js +4 -4
- app-ng-runtime/locales/angular/global/en-ph.js +4 -4
- app-ng-runtime/locales/angular/global/en-pk.js +4 -4
- app-ng-runtime/locales/angular/global/en-pn.js +4 -4
- app-ng-runtime/locales/angular/global/en-pr.js +4 -4
- app-ng-runtime/locales/angular/global/en-pw.js +4 -4
- app-ng-runtime/locales/angular/global/en-rw.js +4 -4
- app-ng-runtime/locales/angular/global/en-sb.js +4 -4
- app-ng-runtime/locales/angular/global/en-sc.js +4 -4
- app-ng-runtime/locales/angular/global/en-sd.js +4 -4
- app-ng-runtime/locales/angular/global/en-se.js +4 -4
- app-ng-runtime/locales/angular/global/en-sg.js +4 -4
- app-ng-runtime/locales/angular/global/en-sh.js +4 -4
- app-ng-runtime/locales/angular/global/en-si.js +4 -4
- app-ng-runtime/locales/angular/global/en-sl.js +4 -4
- app-ng-runtime/locales/angular/global/en-ss.js +4 -4
- app-ng-runtime/locales/angular/global/en-sx.js +4 -4
- app-ng-runtime/locales/angular/global/en-sz.js +4 -4
- app-ng-runtime/locales/angular/global/en-tc.js +4 -4
- app-ng-runtime/locales/angular/global/en-tk.js +4 -4
- app-ng-runtime/locales/angular/global/en-to.js +4 -4
- app-ng-runtime/locales/angular/global/en-tt.js +4 -4
- app-ng-runtime/locales/angular/global/en-tv.js +4 -4
- app-ng-runtime/locales/angular/global/en-tz.js +4 -4
- app-ng-runtime/locales/angular/global/en-ug.js +4 -4
- app-ng-runtime/locales/angular/global/en-um.js +4 -4
- app-ng-runtime/locales/angular/global/en-vc.js +4 -4
- app-ng-runtime/locales/angular/global/en-vg.js +4 -4
- app-ng-runtime/locales/angular/global/en-vi.js +4 -4
- app-ng-runtime/locales/angular/global/en-vu.js +4 -4
- app-ng-runtime/locales/angular/global/en-ws.js +4 -4
- app-ng-runtime/locales/angular/global/en-za.js +4 -4
- app-ng-runtime/locales/angular/global/en-zm.js +4 -4
- app-ng-runtime/locales/angular/global/en-zw.js +4 -4
- app-ng-runtime/locales/angular/global/en.js +4 -4
- app-ng-runtime/locales/angular/global/eo.js +4 -4
- app-ng-runtime/locales/angular/global/es-419.js +4 -4
- app-ng-runtime/locales/angular/global/es-ar.js +4 -4
- app-ng-runtime/locales/angular/global/es-bo.js +4 -4
- app-ng-runtime/locales/angular/global/es-br.js +4 -4
- app-ng-runtime/locales/angular/global/es-bz.js +4 -4
- app-ng-runtime/locales/angular/global/es-cl.js +4 -4
- app-ng-runtime/locales/angular/global/es-co.js +4 -4
- app-ng-runtime/locales/angular/global/es-cr.js +4 -4
- app-ng-runtime/locales/angular/global/es-cu.js +4 -4
- app-ng-runtime/locales/angular/global/es-do.js +4 -4
- app-ng-runtime/locales/angular/global/es-ea.js +4 -4
- app-ng-runtime/locales/angular/global/es-ec.js +4 -4
- app-ng-runtime/locales/angular/global/es-gq.js +4 -4
- app-ng-runtime/locales/angular/global/es-gt.js +4 -4
- app-ng-runtime/locales/angular/global/es-hn.js +4 -4
- app-ng-runtime/locales/angular/global/es-ic.js +4 -4
- app-ng-runtime/locales/angular/global/es-mx.js +4 -4
- app-ng-runtime/locales/angular/global/es-ni.js +4 -4
- app-ng-runtime/locales/angular/global/es-pa.js +4 -4
- app-ng-runtime/locales/angular/global/es-pe.js +4 -4
- app-ng-runtime/locales/angular/global/es-ph.js +4 -4
- app-ng-runtime/locales/angular/global/es-pr.js +4 -4
- app-ng-runtime/locales/angular/global/es-py.js +4 -4
- app-ng-runtime/locales/angular/global/es-sv.js +4 -4
- app-ng-runtime/locales/angular/global/es-us.js +4 -4
- app-ng-runtime/locales/angular/global/es-uy.js +4 -4
- app-ng-runtime/locales/angular/global/es-ve.js +4 -4
- app-ng-runtime/locales/angular/global/es.js +4 -4
- app-ng-runtime/locales/angular/global/et.js +4 -4
- app-ng-runtime/locales/angular/global/eu.js +4 -4
- app-ng-runtime/locales/angular/global/ewo.js +4 -4
- app-ng-runtime/locales/angular/global/fa-af.js +4 -4
- app-ng-runtime/locales/angular/global/fa.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-bf.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-cm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-gh.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-gm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-gw.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-lr.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-mr.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-ne.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-ng.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-sl.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-sn.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-cm.js +58 -44
- app-ng-runtime/locales/angular/global/ff-gn.js +58 -44
- app-ng-runtime/locales/angular/global/ff-latn-bf.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-cm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-gh.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-gm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-gn.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-gw.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-lr.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-mr.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-ne.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-ng.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-sl.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn.js +4 -4
- app-ng-runtime/locales/angular/global/ff-mr.js +58 -44
- app-ng-runtime/locales/angular/global/ff.js +4 -4
- app-ng-runtime/locales/angular/global/fi.js +4 -4
- app-ng-runtime/locales/angular/global/fil.js +4 -4
- app-ng-runtime/locales/angular/global/fo-dk.js +4 -4
- app-ng-runtime/locales/angular/global/fo.js +4 -4
- app-ng-runtime/locales/angular/global/fr-be.js +4 -4
- app-ng-runtime/locales/angular/global/fr-bf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-bi.js +4 -4
- app-ng-runtime/locales/angular/global/fr-bj.js +4 -4
- app-ng-runtime/locales/angular/global/fr-bl.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ca.js +4 -4
- app-ng-runtime/locales/angular/global/fr-cd.js +4 -4
- app-ng-runtime/locales/angular/global/fr-cf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-cg.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ch.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ci.js +4 -4
- app-ng-runtime/locales/angular/global/fr-cm.js +4 -4
- app-ng-runtime/locales/angular/global/fr-dj.js +4 -4
- app-ng-runtime/locales/angular/global/fr-dz.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ga.js +4 -4
- app-ng-runtime/locales/angular/global/fr-gf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-gn.js +4 -4
- app-ng-runtime/locales/angular/global/fr-gp.js +4 -4
- app-ng-runtime/locales/angular/global/fr-gq.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ht.js +4 -4
- app-ng-runtime/locales/angular/global/fr-km.js +4 -4
- app-ng-runtime/locales/angular/global/fr-lu.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ma.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mc.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mg.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ml.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mq.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mr.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mu.js +4 -4
- app-ng-runtime/locales/angular/global/fr-nc.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ne.js +4 -4
- app-ng-runtime/locales/angular/global/fr-pf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-pm.js +4 -4
- app-ng-runtime/locales/angular/global/fr-re.js +4 -4
- app-ng-runtime/locales/angular/global/fr-rw.js +4 -4
- app-ng-runtime/locales/angular/global/fr-sc.js +4 -4
- app-ng-runtime/locales/angular/global/fr-sn.js +4 -4
- app-ng-runtime/locales/angular/global/fr-sy.js +4 -4
- app-ng-runtime/locales/angular/global/fr-td.js +4 -4
- app-ng-runtime/locales/angular/global/fr-tg.js +4 -4
- app-ng-runtime/locales/angular/global/fr-tn.js +4 -4
- app-ng-runtime/locales/angular/global/fr-vu.js +4 -4
- app-ng-runtime/locales/angular/global/fr-wf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-yt.js +4 -4
- app-ng-runtime/locales/angular/global/fr.js +4 -4
- app-ng-runtime/locales/angular/global/fur.js +4 -4
- app-ng-runtime/locales/angular/global/fy.js +4 -4
- app-ng-runtime/locales/angular/global/ga-gb.js +4 -4
- app-ng-runtime/locales/angular/global/ga.js +4 -4
- app-ng-runtime/locales/angular/global/gd.js +4 -4
- app-ng-runtime/locales/angular/global/gl.js +4 -4
- app-ng-runtime/locales/angular/global/gsw-fr.js +4 -4
- app-ng-runtime/locales/angular/global/gsw-li.js +4 -4
- app-ng-runtime/locales/angular/global/gsw.js +4 -4
- app-ng-runtime/locales/angular/global/gu.js +4 -4
- app-ng-runtime/locales/angular/global/guz.js +4 -4
- app-ng-runtime/locales/angular/global/gv.js +4 -4
- app-ng-runtime/locales/angular/global/ha-gh.js +4 -4
- app-ng-runtime/locales/angular/global/ha-ne.js +4 -4
- app-ng-runtime/locales/angular/global/ha.js +4 -4
- app-ng-runtime/locales/angular/global/haw.js +4 -4
- app-ng-runtime/locales/angular/global/he.js +4 -4
- app-ng-runtime/locales/angular/global/hi-latn.js +4 -4
- app-ng-runtime/locales/angular/global/hi.js +4 -4
- app-ng-runtime/locales/angular/global/hr-ba.js +4 -4
- app-ng-runtime/locales/angular/global/hr.js +4 -4
- app-ng-runtime/locales/angular/global/hsb.js +4 -4
- app-ng-runtime/locales/angular/global/hu.js +4 -4
- app-ng-runtime/locales/angular/global/hy.js +4 -4
- app-ng-runtime/locales/angular/global/ia.js +4 -4
- app-ng-runtime/locales/angular/global/id.js +4 -4
- app-ng-runtime/locales/angular/global/ig.js +4 -4
- app-ng-runtime/locales/angular/global/ii.js +4 -4
- app-ng-runtime/locales/angular/global/is.js +4 -4
- app-ng-runtime/locales/angular/global/it-ch.js +4 -4
- app-ng-runtime/locales/angular/global/it-sm.js +4 -4
- app-ng-runtime/locales/angular/global/it-va.js +4 -4
- app-ng-runtime/locales/angular/global/it.js +4 -4
- app-ng-runtime/locales/angular/global/ja.js +4 -4
- app-ng-runtime/locales/angular/global/jgo.js +4 -4
- app-ng-runtime/locales/angular/global/jmc.js +4 -4
- app-ng-runtime/locales/angular/global/jv.js +4 -4
- app-ng-runtime/locales/angular/global/ka.js +4 -4
- app-ng-runtime/locales/angular/global/kab.js +4 -4
- app-ng-runtime/locales/angular/global/kam.js +4 -4
- app-ng-runtime/locales/angular/global/kde.js +4 -4
- app-ng-runtime/locales/angular/global/kea.js +4 -4
- app-ng-runtime/locales/angular/global/kgp.js +4 -4
- app-ng-runtime/locales/angular/global/khq.js +4 -4
- app-ng-runtime/locales/angular/global/ki.js +4 -4
- app-ng-runtime/locales/angular/global/kk.js +4 -4
- app-ng-runtime/locales/angular/global/kkj.js +4 -4
- app-ng-runtime/locales/angular/global/kl.js +4 -4
- app-ng-runtime/locales/angular/global/kln.js +4 -4
- app-ng-runtime/locales/angular/global/km.js +4 -4
- app-ng-runtime/locales/angular/global/kn.js +4 -4
- app-ng-runtime/locales/angular/global/ko-kp.js +4 -4
- app-ng-runtime/locales/angular/global/ko.js +4 -4
- app-ng-runtime/locales/angular/global/kok.js +4 -4
- app-ng-runtime/locales/angular/global/ks-arab.js +4 -4
- app-ng-runtime/locales/angular/global/ks-deva.js +4 -4
- app-ng-runtime/locales/angular/global/ks.js +4 -4
- app-ng-runtime/locales/angular/global/ksb.js +4 -4
- app-ng-runtime/locales/angular/global/ksf.js +4 -4
- app-ng-runtime/locales/angular/global/ksh.js +4 -4
- app-ng-runtime/locales/angular/global/ku.js +4 -4
- app-ng-runtime/locales/angular/global/kw.js +4 -4
- app-ng-runtime/locales/angular/global/ky.js +4 -4
- app-ng-runtime/locales/angular/global/lag.js +4 -4
- app-ng-runtime/locales/angular/global/lb.js +4 -4
- app-ng-runtime/locales/angular/global/lg.js +4 -4
- app-ng-runtime/locales/angular/global/lkt.js +4 -4
- app-ng-runtime/locales/angular/global/ln-ao.js +4 -4
- app-ng-runtime/locales/angular/global/ln-cf.js +4 -4
- app-ng-runtime/locales/angular/global/ln-cg.js +4 -4
- app-ng-runtime/locales/angular/global/ln.js +4 -4
- app-ng-runtime/locales/angular/global/lo.js +4 -4
- app-ng-runtime/locales/angular/global/lrc-iq.js +4 -4
- app-ng-runtime/locales/angular/global/lrc.js +4 -4
- app-ng-runtime/locales/angular/global/lt.js +4 -4
- app-ng-runtime/locales/angular/global/lu.js +4 -4
- app-ng-runtime/locales/angular/global/luo.js +4 -4
- app-ng-runtime/locales/angular/global/luy.js +4 -4
- app-ng-runtime/locales/angular/global/lv.js +4 -4
- app-ng-runtime/locales/angular/global/mai.js +4 -4
- app-ng-runtime/locales/angular/global/mas-tz.js +4 -4
- app-ng-runtime/locales/angular/global/mas.js +4 -4
- app-ng-runtime/locales/angular/global/mer.js +4 -4
- app-ng-runtime/locales/angular/global/mfe.js +4 -4
- app-ng-runtime/locales/angular/global/mg.js +4 -4
- app-ng-runtime/locales/angular/global/mgh.js +4 -4
- app-ng-runtime/locales/angular/global/mgo.js +4 -4
- app-ng-runtime/locales/angular/global/mi.js +4 -4
- app-ng-runtime/locales/angular/global/mk.js +4 -4
- app-ng-runtime/locales/angular/global/ml.js +4 -4
- app-ng-runtime/locales/angular/global/mn.js +4 -4
- app-ng-runtime/locales/angular/global/mni-beng.js +4 -4
- app-ng-runtime/locales/angular/global/mni.js +4 -4
- app-ng-runtime/locales/angular/global/mr.js +4 -4
- app-ng-runtime/locales/angular/global/ms-bn.js +4 -4
- app-ng-runtime/locales/angular/global/ms-id.js +4 -4
- app-ng-runtime/locales/angular/global/ms-sg.js +4 -4
- app-ng-runtime/locales/angular/global/ms.js +4 -4
- app-ng-runtime/locales/angular/global/mt.js +4 -4
- app-ng-runtime/locales/angular/global/mua.js +4 -4
- app-ng-runtime/locales/angular/global/my.js +4 -4
- app-ng-runtime/locales/angular/global/mzn.js +4 -4
- app-ng-runtime/locales/angular/global/naq.js +4 -4
- app-ng-runtime/locales/angular/global/nb-sj.js +4 -4
- app-ng-runtime/locales/angular/global/nb.js +4 -4
- app-ng-runtime/locales/angular/global/nd.js +4 -4
- app-ng-runtime/locales/angular/global/nds-nl.js +4 -4
- app-ng-runtime/locales/angular/global/nds.js +4 -4
- app-ng-runtime/locales/angular/global/ne-in.js +4 -4
- app-ng-runtime/locales/angular/global/ne.js +4 -4
- app-ng-runtime/locales/angular/global/nl-aw.js +4 -4
- app-ng-runtime/locales/angular/global/nl-be.js +4 -4
- app-ng-runtime/locales/angular/global/nl-bq.js +4 -4
- app-ng-runtime/locales/angular/global/nl-cw.js +4 -4
- app-ng-runtime/locales/angular/global/nl-sr.js +4 -4
- app-ng-runtime/locales/angular/global/nl-sx.js +4 -4
- app-ng-runtime/locales/angular/global/nl.js +4 -4
- app-ng-runtime/locales/angular/global/nmg.js +4 -4
- app-ng-runtime/locales/angular/global/nn.js +4 -4
- app-ng-runtime/locales/angular/global/nnh.js +4 -4
- app-ng-runtime/locales/angular/global/no.js +4 -4
- app-ng-runtime/locales/angular/global/nus.js +4 -4
- app-ng-runtime/locales/angular/global/nyn.js +4 -4
- app-ng-runtime/locales/angular/global/om-ke.js +4 -4
- app-ng-runtime/locales/angular/global/om.js +4 -4
- app-ng-runtime/locales/angular/global/or.js +4 -4
- app-ng-runtime/locales/angular/global/os-ru.js +4 -4
- app-ng-runtime/locales/angular/global/os.js +4 -4
- app-ng-runtime/locales/angular/global/pa-arab.js +4 -4
- app-ng-runtime/locales/angular/global/pa-guru.js +4 -4
- app-ng-runtime/locales/angular/global/pa.js +4 -4
- app-ng-runtime/locales/angular/global/pcm.js +4 -4
- app-ng-runtime/locales/angular/global/pl.js +4 -4
- app-ng-runtime/locales/angular/global/ps-pk.js +4 -4
- app-ng-runtime/locales/angular/global/ps.js +4 -4
- app-ng-runtime/locales/angular/global/pt-ao.js +4 -4
- app-ng-runtime/locales/angular/global/pt-ch.js +4 -4
- app-ng-runtime/locales/angular/global/pt-cv.js +4 -4
- app-ng-runtime/locales/angular/global/pt-gq.js +4 -4
- app-ng-runtime/locales/angular/global/pt-gw.js +4 -4
- app-ng-runtime/locales/angular/global/pt-lu.js +4 -4
- app-ng-runtime/locales/angular/global/pt-mo.js +4 -4
- app-ng-runtime/locales/angular/global/pt-mz.js +4 -4
- app-ng-runtime/locales/angular/global/pt-pt.js +4 -4
- app-ng-runtime/locales/angular/global/pt-st.js +4 -4
- app-ng-runtime/locales/angular/global/pt-tl.js +4 -4
- app-ng-runtime/locales/angular/global/pt.js +4 -4
- app-ng-runtime/locales/angular/global/qu-bo.js +4 -4
- app-ng-runtime/locales/angular/global/qu-ec.js +4 -4
- app-ng-runtime/locales/angular/global/qu.js +4 -4
- app-ng-runtime/locales/angular/global/rm.js +4 -4
- app-ng-runtime/locales/angular/global/rn.js +4 -4
- app-ng-runtime/locales/angular/global/ro-md.js +4 -4
- app-ng-runtime/locales/angular/global/ro.js +4 -4
- app-ng-runtime/locales/angular/global/rof.js +4 -4
- app-ng-runtime/locales/angular/global/ru-by.js +4 -4
- app-ng-runtime/locales/angular/global/ru-kg.js +4 -4
- app-ng-runtime/locales/angular/global/ru-kz.js +4 -4
- app-ng-runtime/locales/angular/global/ru-md.js +4 -4
- app-ng-runtime/locales/angular/global/ru-ua.js +4 -4
- app-ng-runtime/locales/angular/global/ru.js +4 -4
- app-ng-runtime/locales/angular/global/rw.js +4 -4
- app-ng-runtime/locales/angular/global/rwk.js +4 -4
- app-ng-runtime/locales/angular/global/sa.js +4 -4
- app-ng-runtime/locales/angular/global/sah.js +4 -4
- app-ng-runtime/locales/angular/global/saq.js +4 -4
- app-ng-runtime/locales/angular/global/sat-olck.js +4 -4
- app-ng-runtime/locales/angular/global/sat.js +4 -4
- app-ng-runtime/locales/angular/global/sbp.js +4 -4
- app-ng-runtime/locales/angular/global/sc.js +4 -4
- app-ng-runtime/locales/angular/global/sd-arab.js +4 -4
- app-ng-runtime/locales/angular/global/sd-deva.js +4 -4
- app-ng-runtime/locales/angular/global/sd.js +4 -4
- app-ng-runtime/locales/angular/global/se-fi.js +4 -4
- app-ng-runtime/locales/angular/global/se-se.js +4 -4
- app-ng-runtime/locales/angular/global/se.js +4 -4
- app-ng-runtime/locales/angular/global/seh.js +4 -4
- app-ng-runtime/locales/angular/global/ses.js +4 -4
- app-ng-runtime/locales/angular/global/sg.js +4 -4
- app-ng-runtime/locales/angular/global/shi-latn.js +4 -4
- app-ng-runtime/locales/angular/global/shi-tfng.js +4 -4
- app-ng-runtime/locales/angular/global/shi.js +4 -4
- app-ng-runtime/locales/angular/global/si.js +4 -4
- app-ng-runtime/locales/angular/global/sk.js +4 -4
- app-ng-runtime/locales/angular/global/sl.js +4 -4
- app-ng-runtime/locales/angular/global/smn.js +4 -4
- app-ng-runtime/locales/angular/global/sn.js +4 -4
- app-ng-runtime/locales/angular/global/so-dj.js +4 -4
- app-ng-runtime/locales/angular/global/so-et.js +4 -4
- app-ng-runtime/locales/angular/global/so-ke.js +4 -4
- app-ng-runtime/locales/angular/global/so.js +4 -4
- app-ng-runtime/locales/angular/global/sq-mk.js +4 -4
- app-ng-runtime/locales/angular/global/sq-xk.js +4 -4
- app-ng-runtime/locales/angular/global/sq.js +4 -4
- app-ng-runtime/locales/angular/global/sr-cyrl-ba.js +4 -4
- app-ng-runtime/locales/angular/global/sr-cyrl-me.js +4 -4
- app-ng-runtime/locales/angular/global/sr-cyrl-xk.js +4 -4
- app-ng-runtime/locales/angular/global/sr-cyrl.js +4 -4
- app-ng-runtime/locales/angular/global/sr-latn-ba.js +4 -4
- app-ng-runtime/locales/angular/global/sr-latn-me.js +4 -4
- app-ng-runtime/locales/angular/global/sr-latn-xk.js +4 -4
- app-ng-runtime/locales/angular/global/sr-latn.js +4 -4
- app-ng-runtime/locales/angular/global/sr.js +4 -4
- app-ng-runtime/locales/angular/global/su-latn.js +4 -4
- app-ng-runtime/locales/angular/global/su.js +4 -4
- app-ng-runtime/locales/angular/global/sv-ax.js +4 -4
- app-ng-runtime/locales/angular/global/sv-fi.js +4 -4
- app-ng-runtime/locales/angular/global/sv.js +4 -4
- app-ng-runtime/locales/angular/global/sw-cd.js +4 -4
- app-ng-runtime/locales/angular/global/sw-ke.js +4 -4
- app-ng-runtime/locales/angular/global/sw-ug.js +4 -4
- app-ng-runtime/locales/angular/global/sw.js +4 -4
- app-ng-runtime/locales/angular/global/ta-lk.js +4 -4
- app-ng-runtime/locales/angular/global/ta-my.js +4 -4
- app-ng-runtime/locales/angular/global/ta-sg.js +4 -4
- app-ng-runtime/locales/angular/global/ta.js +4 -4
- app-ng-runtime/locales/angular/global/te.js +4 -4
- app-ng-runtime/locales/angular/global/teo-ke.js +4 -4
- app-ng-runtime/locales/angular/global/teo.js +4 -4
- app-ng-runtime/locales/angular/global/tg.js +4 -4
- app-ng-runtime/locales/angular/global/th.js +4 -4
- app-ng-runtime/locales/angular/global/ti-er.js +4 -4
- app-ng-runtime/locales/angular/global/ti.js +4 -4
- app-ng-runtime/locales/angular/global/tk.js +4 -4
- app-ng-runtime/locales/angular/global/to.js +4 -4
- app-ng-runtime/locales/angular/global/tr-cy.js +4 -4
- app-ng-runtime/locales/angular/global/tr.js +4 -4
- app-ng-runtime/locales/angular/global/tt.js +4 -4
- app-ng-runtime/locales/angular/global/twq.js +4 -4
- app-ng-runtime/locales/angular/global/tzm.js +4 -4
- app-ng-runtime/locales/angular/global/ug.js +4 -4
- app-ng-runtime/locales/angular/global/uk.js +4 -4
- app-ng-runtime/locales/angular/global/und.js +4 -4
- app-ng-runtime/locales/angular/global/ur-in.js +4 -4
- app-ng-runtime/locales/angular/global/ur.js +4 -4
- app-ng-runtime/locales/angular/global/uz-arab.js +4 -4
- app-ng-runtime/locales/angular/global/uz-cyrl.js +4 -4
- app-ng-runtime/locales/angular/global/uz-latn.js +4 -4
- app-ng-runtime/locales/angular/global/uz.js +4 -4
- app-ng-runtime/locales/angular/global/vai-latn.js +4 -4
- app-ng-runtime/locales/angular/global/vai-vaii.js +4 -4
- app-ng-runtime/locales/angular/global/vai.js +4 -4
- app-ng-runtime/locales/angular/global/vi.js +4 -4
- app-ng-runtime/locales/angular/global/vun.js +4 -4
- app-ng-runtime/locales/angular/global/wae.js +4 -4
- app-ng-runtime/locales/angular/global/wo.js +4 -4
- app-ng-runtime/locales/angular/global/xh.js +4 -4
- app-ng-runtime/locales/angular/global/xog.js +4 -4
- app-ng-runtime/locales/angular/global/yav.js +4 -4
- app-ng-runtime/locales/angular/global/yi.js +4 -4
- app-ng-runtime/locales/angular/global/yo-bj.js +4 -4
- app-ng-runtime/locales/angular/global/yo.js +4 -4
- app-ng-runtime/locales/angular/global/yrl-co.js +4 -4
- app-ng-runtime/locales/angular/global/yrl-ve.js +4 -4
- app-ng-runtime/locales/angular/global/yrl.js +4 -4
- app-ng-runtime/locales/angular/global/yue-hans.js +4 -4
- app-ng-runtime/locales/angular/global/yue-hant.js +4 -4
- app-ng-runtime/locales/angular/global/yue.js +4 -4
- app-ng-runtime/locales/angular/global/zgh.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hans-hk.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hans-mo.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hans-sg.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hans.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hant-hk.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hant-mo.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hant.js +4 -4
- app-ng-runtime/locales/angular/global/zh.js +4 -4
- app-ng-runtime/locales/angular/global/zu.js +4 -4
- app-ng-runtime/mobile/components/basic/default/.npmignore +2 -0
- app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +148 -143
- app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +8 -7
- app-ng-runtime/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +7 -6
- app-ng-runtime/mobile/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +47 -43
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +7 -5
- app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +6 -5
- app-ng-runtime/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +49 -47
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +31 -32
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +146 -140
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +2 -2
- app-ng-runtime/mobile/components/basic/search/.npmignore +2 -0
- app-ng-runtime/mobile/components/basic/search/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/basic/search/esm2022/search.directive.mjs +3 -3
- app-ng-runtime/mobile/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/containers/segmented-control/.npmignore +2 -0
- app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +42 -30
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +14 -8
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +28 -21
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +41 -28
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/segmented-control.component.d.ts +2 -2
- app-ng-runtime/mobile/components/data/media-list/.npmignore +2 -0
- app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +53 -48
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +48 -42
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.module.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +50 -44
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/data/media-list/media-list.component.d.ts +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/.npmignore +2 -0
- app-ng-runtime/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +14 -8
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +15 -9
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +16 -10
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/.npmignore +2 -0
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +15 -9
- app-ng-runtime/mobile/components/device/camera/camera.component.d.ts +2 -2
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.component.mjs +16 -10
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +17 -11
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/input/file-upload/.npmignore +2 -0
- app-ng-runtime/mobile/components/input/file-upload/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +3 -3
- app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/default/.npmignore +2 -0
- app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +11 -10
- app-ng-runtime/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +4 -3
- app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +5 -4
- app-ng-runtime/mobile/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +8 -6
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/left-panel/.npmignore +2 -0
- app-ng-runtime/mobile/components/page/left-panel/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -3
- app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/mobile-navbar/.npmignore +2 -0
- app-ng-runtime/mobile/components/page/mobile-navbar/bundles/index.umd.js +40 -35
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +41 -36
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs +41 -36
- app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/.npmignore +2 -0
- app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +52 -46
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +50 -43
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +51 -44
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/tab-bar/tabbar.component.d.ts +2 -2
- app-ng-runtime/mobile/core/.npmignore +2 -0
- app-ng-runtime/mobile/core/bundles/index.umd.js +43 -43
- app-ng-runtime/mobile/core/esm2022/core.module.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +1 -1
- app-ng-runtime/mobile/core/esm2022/services/device-file-cache.service.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +7 -6
- app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +5 -4
- app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +6 -5
- app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +8 -7
- app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +5 -4
- app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +7 -6
- app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +11 -10
- app-ng-runtime/mobile/core/fesm2022/index.mjs +40 -39
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
- app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
- app-ng-runtime/mobile/offline/.npmignore +2 -0
- app-ng-runtime/mobile/offline/bundles/index.umd.js +176 -159
- app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
- app-ng-runtime/mobile/offline/esm2022/offline.module.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +9 -8
- app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +39 -37
- app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +56 -47
- app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +7 -6
- app-ng-runtime/mobile/offline/esm2022/services/local-key-value.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/push.service.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
- app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
- app-ng-runtime/mobile/offline/esm2022/services/workers/id-resolver.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
- app-ng-runtime/mobile/offline/esm2022/utils/file-upload.utils.mjs +1 -1
- app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
- app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
- app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
- app-ng-runtime/mobile/offline/esm2022/utils/utils.mjs +1 -1
- app-ng-runtime/mobile/offline/fesm2022/index.mjs +171 -153
- app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime/.npmignore +2 -0
- app-ng-runtime/mobile/placeholder/runtime/bundles/index.umd.js +3 -2
- app-ng-runtime/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +3 -2
- app-ng-runtime/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs +3 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/.npmignore +2 -0
- app-ng-runtime/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/.npmignore +2 -0
- app-ng-runtime/mobile/runtime/bundles/index.umd.js +21 -17
- app-ng-runtime/mobile/runtime/esm2022/components/app-ext.component.mjs +4 -3
- app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +5 -4
- app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +7 -3
- app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +6 -5
- app-ng-runtime/mobile/runtime/esm2022/services/webprocess.service.mjs +3 -3
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs +18 -13
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime-dynamic/.npmignore +2 -0
- app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +5 -5
- app-ng-runtime/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +5 -5
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +5 -5
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/variables/.npmignore +2 -0
- app-ng-runtime/mobile/variables/bundles/index.umd.js +28 -21
- app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +5 -5
- app-ng-runtime/mobile/variables/esm2022/services/contacts-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
- app-ng-runtime/mobile/variables/esm2022/services/device-service/device-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/services/device-service/location-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
- app-ng-runtime/mobile/variables/esm2022/services/scan-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/variables.module.mjs +3 -3
- app-ng-runtime/mobile/variables/fesm2022/index.mjs +24 -16
- app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/oAuth/.npmignore +2 -0
- app-ng-runtime/oAuth/bundles/index.umd.js +15 -15
- app-ng-runtime/oAuth/esm2022/oAuth.module.mjs +2 -2
- app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +6 -5
- app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
- app-ng-runtime/oAuth/fesm2022/index.mjs +12 -11
- app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/.npmignore +2 -0
- app-ng-runtime/runtime/base/bundles/index.umd.js +267 -251
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +3 -1
- app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +3 -3
- app-ng-runtime/runtime/base/directives/accessroles.directive.d.ts +4 -3
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +34 -30
- app-ng-runtime/runtime/base/esm2022/components/app-spinner.component.mjs +9 -8
- app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +9 -9
- app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +16 -15
- app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +15 -14
- app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +17 -16
- app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +16 -15
- app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +17 -15
- app-ng-runtime/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/components/prefab-preview.component.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +24 -16
- app-ng-runtime/runtime/base/esm2022/directives/prefab.directive.mjs +4 -4
- app-ng-runtime/runtime/base/esm2022/guards/auth.guard.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +4 -4
- app-ng-runtime/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +5 -5
- app-ng-runtime/runtime/base/esm2022/resolves/app-extension.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/app-js.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/app-variables.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/i18n.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/metadata.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/security-config.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +19 -16
- app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +9 -8
- app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -5
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +15 -13
- app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +10 -9
- app-ng-runtime/runtime/base/esm2022/services/pipe-provider.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/pipe.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +9 -8
- app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +8 -7
- app-ng-runtime/runtime/base/esm2022/util/fragment-monitor.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +7 -8
- app-ng-runtime/runtime/base/fesm2022/index.mjs +277 -260
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/overrides/wm_dom_renderer.d.ts +2 -2
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/runtime/dynamic/.npmignore +2 -0
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +22 -21
- app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +1 -1
- app-ng-runtime/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +4 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +6 -5
- app-ng-runtime/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +21 -19
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +2 -2
- app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
- app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
- app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
- app-ng-runtime/security/.npmignore +2 -0
- app-ng-runtime/security/bundles/index.umd.js +17 -17
- app-ng-runtime/security/esm2022/security.module.mjs +2 -2
- app-ng-runtime/security/esm2022/security.service.mjs +14 -13
- app-ng-runtime/security/fesm2022/index.mjs +14 -13
- app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/security/security.service.d.ts +1 -1
- app-ng-runtime/swipey/.npmignore +2 -0
- app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
- app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/transpiler/.npmignore +2 -0
- app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
- app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
- app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/.npmignore +2 -0
- app-ng-runtime/variables/bundles/index.umd.js +160 -150
- app-ng-runtime/variables/esm2022/factory/variable.factory.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
- app-ng-runtime/variables/esm2022/manager/action/logout-action.manager.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
- app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
- app-ng-runtime/variables/esm2022/manager/variable/device-variable-manager.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/variable/device-variable-service.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
- app-ng-runtime/variables/esm2022/model/action/notification-action.mjs +1 -1
- app-ng-runtime/variables/esm2022/service/metadata-service/metadata.service.mjs +3 -3
- app-ng-runtime/variables/esm2022/service/variables.service.mjs +9 -8
- app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
- app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
- app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
- app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
- app-ng-runtime/variables/esm2022/variables.module.mjs +2 -2
- app-ng-runtime/variables/fesm2022/index.mjs +174 -163
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
- app-ng-runtime/build-task/advanced/custom-widget-prop/custom-widget-prop.build.d.ts +0 -2
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-prop/custom-widget-prop.build.mjs +0 -10
- app-ng-runtime/components/advanced/custom/custom-widget-container-prop/custom-widget-container-prop.directive.d.ts +0 -20
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container-prop/custom-widget-container-prop.directive.mjs +0 -70
|
@@ -12,8 +12,8 @@ export class OAuthModule {
|
|
|
12
12
|
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: OAuthModule }); }
|
|
13
13
|
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({}); }
|
|
14
14
|
}
|
|
15
|
-
(
|
|
15
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OAuthModule, [{
|
|
16
16
|
type: NgModule,
|
|
17
17
|
args: [{}]
|
|
18
18
|
}], null, null); })();
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib0F1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvb0F1dGgvc3JjL29BdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBRy9DLE1BQU0sT0FBTyxXQUFXO0lBRXBCLE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTztZQUNILFFBQVEsRUFBRSxXQUFXO1lBQ3JCLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQztTQUM1QixDQUFDO0lBQ04sQ0FBQzs0RUFQUSxXQUFXO21FQUFYLFdBQVc7OztpRkFBWCxXQUFXO2NBRHZCLFFBQVE7ZUFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi9vQXV0aC5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIE9BdXRoTW9kdWxlIHtcblxuICAgIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8T0F1dGhNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBPQXV0aE1vZHVsZSxcbiAgICAgICAgICAgIHByb3ZpZGVyczogW09BdXRoU2VydmljZV1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -2,6 +2,7 @@ import { Injectable } from '@angular/core';
|
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
3
|
import { AbstractHttpService } from '@wm/core';
|
|
4
4
|
import { getAccessToken, performAuthorization, removeAccessToken } from './oAuth.utils';
|
|
5
|
+
import { find, remove } from "lodash-es";
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@wm/core";
|
|
7
8
|
export class OAuthService {
|
|
@@ -14,13 +15,13 @@ export class OAuthService {
|
|
|
14
15
|
return this.providers.asObservable();
|
|
15
16
|
}
|
|
16
17
|
addProviderConfig(provider) {
|
|
17
|
-
if (!(
|
|
18
|
+
if (!(find(this.providersConfig, { 'name': provider.name }))) {
|
|
18
19
|
this.providersConfig.push(provider);
|
|
19
20
|
}
|
|
20
21
|
this.providers.next(this.providersConfig);
|
|
21
22
|
}
|
|
22
23
|
removeProviderConfig(providerId) {
|
|
23
|
-
|
|
24
|
+
remove(this.providersConfig, provider => provider.name === providerId);
|
|
24
25
|
this.providers.next(this.providersConfig);
|
|
25
26
|
}
|
|
26
27
|
perfromOAuthorization(url, providerId, onSuccess, onError, securityObj, customUriScheme, deployedURL) {
|
|
@@ -35,7 +36,7 @@ export class OAuthService {
|
|
|
35
36
|
static { this.ɵfac = function OAuthService_Factory(t) { return new (t || OAuthService)(i0.ɵɵinject(i1.AbstractHttpService)); }; }
|
|
36
37
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: OAuthService, factory: OAuthService.ɵfac }); }
|
|
37
38
|
}
|
|
38
|
-
(
|
|
39
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OAuthService, [{
|
|
39
40
|
type: Injectable
|
|
40
|
-
}],
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
}], () => [{ type: i1.AbstractHttpService }], null); })();
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib0F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL29BdXRoL3NyYy9vQXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQzs7O0FBR3ZDLE1BQU0sT0FBTyxZQUFZO0lBQ3JCLFlBQW9CLFdBQWdDO1FBQWhDLGdCQUFXLEdBQVgsV0FBVyxDQUFxQjtRQUVwRCxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUUxQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztJQUprQyxDQUFDO0lBTXhELDZCQUE2QjtRQUN6QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFFBQVE7UUFDdEIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELG9CQUFvQixDQUFDLFVBQVU7UUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVksRUFBRSxlQUFnQixFQUFFLFdBQVk7UUFDbkcsb0JBQW9CLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcE0sQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCO1FBQ3RDLE9BQU8sY0FBYyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxRQUFRO1FBQ3RCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7NkVBakNRLFlBQVk7dUVBQVosWUFBWSxXQUFaLFlBQVk7O2lGQUFaLFlBQVk7Y0FEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEh0dHBTZXJ2aWNlIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlbiwgcGVyZm9ybUF1dGhvcml6YXRpb24sIHJlbW92ZUFjY2Vzc1Rva2VuIH0gZnJvbSAnLi9vQXV0aC51dGlscyc7XG5pbXBvcnQge2ZpbmQsIHJlbW92ZX0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT0F1dGhTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBBYnN0cmFjdEh0dHBTZXJ2aWNlKSB7fVxuXG4gICAgcHJvdmlkZXJzID0gbmV3IFN1YmplY3QoKTtcblxuICAgIHByb3ZpZGVyc0NvbmZpZyA9IFtdO1xuXG4gICAgZ2V0T0F1dGhQcm92aWRlcnNBc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXJzLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGFkZFByb3ZpZGVyQ29uZmlnKHByb3ZpZGVyKSB7XG4gICAgICAgIGlmICghKGZpbmQodGhpcy5wcm92aWRlcnNDb25maWcsIHsnbmFtZSc6IHByb3ZpZGVyLm5hbWV9KSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvdmlkZXJzQ29uZmlnLnB1c2gocHJvdmlkZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvdmlkZXJzLm5leHQodGhpcy5wcm92aWRlcnNDb25maWcpO1xuICAgIH1cblxuICAgIHJlbW92ZVByb3ZpZGVyQ29uZmlnKHByb3ZpZGVySWQpIHtcbiAgICAgICAgcmVtb3ZlKHRoaXMucHJvdmlkZXJzQ29uZmlnLCBwcm92aWRlciA9PiBwcm92aWRlci5uYW1lID09PSBwcm92aWRlcklkKTtcbiAgICAgICAgdGhpcy5wcm92aWRlcnMubmV4dCh0aGlzLnByb3ZpZGVyc0NvbmZpZyk7XG4gICAgfVxuXG4gICAgcGVyZnJvbU9BdXRob3JpemF0aW9uKHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCBvbkVycm9yLCBzZWN1cml0eU9iaj8sIGN1c3RvbVVyaVNjaGVtZT8sIGRlcGxveWVkVVJMPykge1xuICAgICAgICBwZXJmb3JtQXV0aG9yaXphdGlvbih1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgdGhpcy5odHRwU2VydmljZSwgdGhpcy5hZGRQcm92aWRlckNvbmZpZy5iaW5kKHRoaXMpLCB0aGlzLnJlbW92ZVByb3ZpZGVyQ29uZmlnLmJpbmQodGhpcyksIHNlY3VyaXR5T2JqLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMKTtcbiAgICB9XG5cbiAgICBnZXRBY2Nlc3NUb2tlbihwcm92aWRlciwgY2hlY2tMb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgcmV0dXJuIGdldEFjY2Vzc1Rva2VuKHByb3ZpZGVyLCBjaGVja0xvY2FsU3RvcmFnZSk7XG4gICAgfVxuXG4gICAgcmVtb3ZlQWNjZXNzVG9rZW4ocHJvdmlkZXIpIHtcbiAgICAgICAgcmVtb3ZlQWNjZXNzVG9rZW4ocHJvdmlkZXIpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { _WM_APP_PROJECT, hasCordova, isIE, getWmProjectProperties } from '@wm/core';
|
|
2
|
+
import { get, isUndefined } from "lodash-es";
|
|
2
3
|
const accessTokenSuffix = '.access_token', pkceIdentifier = 'pkce', implicitIdentifier = 'implicit';
|
|
3
4
|
let code_verifier, redirectUri;
|
|
4
5
|
export const parseConfig = (serviceParams) => {
|
|
@@ -24,7 +25,7 @@ export const parseConfig = (serviceParams) => {
|
|
|
24
25
|
for (param in urlParams) {
|
|
25
26
|
if (urlParams.hasOwnProperty(param)) {
|
|
26
27
|
val = urlParams[param];
|
|
27
|
-
if (!
|
|
28
|
+
if (!isUndefined(val) && val !== null) {
|
|
28
29
|
config.url = config.url.replace(new RegExp(':' + param, 'g'), val);
|
|
29
30
|
}
|
|
30
31
|
}
|
|
@@ -35,7 +36,7 @@ export const parseConfig = (serviceParams) => {
|
|
|
35
36
|
config.params = serviceParams.params;
|
|
36
37
|
}
|
|
37
38
|
/* check for data */
|
|
38
|
-
if (!
|
|
39
|
+
if (!isUndefined(serviceParams.data)) {
|
|
39
40
|
config.data = serviceParams.data;
|
|
40
41
|
}
|
|
41
42
|
/* check for data parameters, written to support old service calls (.json calls) */
|
|
@@ -211,10 +212,10 @@ function handleLoginForIE(url, providerId, onSuccess, onError, removeProviderCon
|
|
|
211
212
|
* @param providerInfo
|
|
212
213
|
*/
|
|
213
214
|
function isPassedFlow(providerInfo, flow) {
|
|
214
|
-
let oAuthFlow =
|
|
215
|
+
let oAuthFlow = get(providerInfo, 'oauth2Flow');
|
|
215
216
|
oAuthFlow = oAuthFlow ? oAuthFlow.toLowerCase() : oAuthFlow;
|
|
216
217
|
if (flow === pkceIdentifier) {
|
|
217
|
-
if (
|
|
218
|
+
if (get(providerInfo, 'oAuth2Pkce.enabled') === true) {
|
|
218
219
|
oAuthFlow = pkceIdentifier;
|
|
219
220
|
}
|
|
220
221
|
}
|
|
@@ -267,7 +268,7 @@ function postGetAuthorizationURL(url, providerId, onSuccess, removeProviderConfi
|
|
|
267
268
|
// Create and store a new PKCE code_verifier (the plaintext random secret)
|
|
268
269
|
code_verifier = generateRandomString();
|
|
269
270
|
let code_challenge;
|
|
270
|
-
if (
|
|
271
|
+
if (get(securityObj, 'oAuth2Pkce.challengeMethod') === 'plain') {
|
|
271
272
|
code_challenge = code_verifier;
|
|
272
273
|
url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, code_challenge, customUriScheme, deployedURL);
|
|
273
274
|
startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);
|
|
@@ -346,7 +347,7 @@ function constructURLForImplicitOrPKCE(providerId, providerInfo, requestSourceTy
|
|
|
346
347
|
url = commonUrl + '&response_type=' + responseType;
|
|
347
348
|
}
|
|
348
349
|
else {
|
|
349
|
-
url = commonUrl + '&response_type=code&code_challenge=' + code_challenge + '&code_challenge_method=' +
|
|
350
|
+
url = commonUrl + '&response_type=code&code_challenge=' + code_challenge + '&code_challenge_method=' + get(providerInfo, 'oAuth2Pkce.challengeMethod');
|
|
350
351
|
}
|
|
351
352
|
return url;
|
|
352
353
|
}
|
|
@@ -435,4 +436,4 @@ export const performAuthorization = (url, providerId, onSuccess, onError, http,
|
|
|
435
436
|
}
|
|
436
437
|
}
|
|
437
438
|
};
|
|
438
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib0F1dGgudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9vQXV0aC9zcmMvb0F1dGgudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBS3JGLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxFQUFFLGNBQWMsR0FBRyxNQUFNLEVBQUUsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBRXBHLElBQUksYUFBYSxFQUFFLFdBQVcsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxhQUFrQixFQUFPLEVBQUU7SUFFbkQsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUN2QixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBRTFDLE1BQU0sR0FBRztRQUNMLEdBQUcsRUFBRSw4Q0FBOEM7UUFDbkQsTUFBTSxFQUFFLEtBQUs7S0FDaEIsQ0FBQztJQUVGLHFHQUFxRztJQUNyRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDM0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzdELE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFdEMscUNBQXFDO1FBQ3JDLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDNUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFD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LFlBQVksRUFBRSxVQUFVO2dCQUN4QixtQkFBbUIsRUFBRSxpQkFBaUI7YUFDekMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDdkIsNkJBQTZCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3pNLENBQUMsQ0FBQyxDQUFDO1NBQ047S0FDSjtBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9XTV9BUFBfUFJPSkVDVCwgaGFzQ29yZG92YSwgaXNJRSwgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7dHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcblxuZGVjbGFyZSBjb25zdCBtb21lbnQsIF8sIGpzU0hBO1xuXG5jb25zdCBhY2Nlc3NUb2tlblN1ZmZpeCA9ICcuYWNjZXNzX3Rva2VuJywgcGtjZUlkZW50aWZpZXIgPSAncGtjZScsIGltcGxpY2l0SWRlbnRpZmllciA9ICdpbXBsaWNpdCc7XG5cbmxldCBjb2RlX3ZlcmlmaWVyLCByZWRpcmVjdFVyaTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29uZmlnID0gKHNlcnZpY2VQYXJhbXM6IGFueSk6IGFueSA9PiB7XG5cbiAgICBsZXQgdmFsLCBwYXJhbSwgY29uZmlnO1xuICAgIGNvbnN0IHVybFBhcmFtcyA9IHNlcnZpY2VQYXJhbXMudXJsUGFyYW1zO1xuXG4gICAgY29uZmlnID0ge1xuICAgICAgICB1cmw6ICdzZXJ2aWNlcy9vYXV0aDIvOnByb3ZpZGVySWQvYXV0aG9yaXphdGlvblVybCcsXG4gICAgICAgIG1ldGhvZDogJ0dFVCdcbiAgICB9O1xuXG4gICAgLypUbyBoYW5kbGUgZHluYW1pYyB1cmxzLCBhcHBlbmQgdGhlIHNlcnZpY2VQYXJhbXMuY29uZmlnLnVybCB3aXRoIHRoZSBzdGF0aWMgdXJsKGkuZS4sIGNvbmZpZy51cmwpKi9cbiAgICBpZiAoc2VydmljZVBhcmFtcy5jb25maWcpIHtcbiAgICAgICAgY29uZmlnLnVybCA9IChzZXJ2aWNlUGFyYW1zLmNvbmZpZy51cmwgfHwgJycpICsgY29uZmlnLnVybDtcbiAgICAgICAgY29uZmlnLm1ldGhvZCA9IHNlcnZpY2VQYXJhbXMuY29uZmlnLm1ldGhvZCB8fCBjb25maWcubWV0aG9kO1xuICAgICAgICBjb25maWcuaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xuXG4gICAgICAgIC8vIFRPRE9bU2h1YmhhbV0gLSBjaGFuZ2UgdG8gZm9yIC0gb2ZcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2VydmljZVBhcmFtcy5jb25maWcuaGVhZGVycykge1xuICAgICAgICAgICAgdmFsID0gc2VydmljZVBhcmFtcy5jb25maWcuaGVhZGVyc1trZXldO1xuICAgICAgICAgICAgY29uZmlnLmhlYWRlcnNba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiBjaGVjayBmb3IgdXJsIHBhcmFtZXRlcnMgdG8gcmVwbGFjZSB0aGUgdXJsICovXG4gICAgaWYgKHVybFBhcmFtcykge1xuICAgICAgICBmb3IgKHBhcmFtIGluIHVybFBhcmFtcykge1xuICAgICAgICAgICAgaWYgKHVybFBhcmFtcy5oYXNPd25Qcm9wZXJ0eShwYXJhbSkpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSB1cmxQYXJhbXNbcGFyYW1dO1xuICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcudXJsID0gY29uZmlnLnVybC5yZXBsYWNlKG5ldyBSZWdFeHAoJzonICsgcGFyYW0sICdnJyksIHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyogY2hlY2sgZm9yIGRhdGEgKi9cbiAgICBpZiAoc2VydmljZVBhcmFtcy5wYXJhbXMpIHtcbiAgICAgICAgY29uZmlnLnBhcmFtcyA9IHNlcnZpY2VQYXJhbXMucGFyYW1zO1xuICAgIH1cbiAgICAvKiBjaGVjayBmb3IgZGF0YSAqL1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChzZXJ2aWNlUGFyYW1zLmRhdGEpKSB7XG4gICAgICAgIGNvbmZpZy5kYXRhID0gc2VydmljZVBhcmFtcy5kYXRhO1xuICAgIH1cbiAgICAvKiBjaGVjayBmb3IgZGF0YSBwYXJhbWV0ZXJzLCB3cml0dGVuIHRvIHN1cHBvcnQgb2xkIHNlcnZpY2UgY2FsbHMgKC5qc29uIGNhbGxzKSAqL1xuICAgIGlmIChzZXJ2aWNlUGFyYW1zLmRhdGFQYXJhbXMpIHtcbiAgICAgICAgY29uZmlnLmRhdGEucGFyYW1zID0gc2VydmljZVBhcmFtcy5kYXRhUGFyYW1zO1xuICAgIH1cbiAgICAvKiBjaGVjayBmb3IgaGVhZGVycyAqL1xuICAgIGlmIChzZXJ2aWNlUGFyYW1zLmhlYWRlcnMpIHtcbiAgICAgICAgY29uZmlnLmhlYWRlcnMgPSBzZXJ2aWNlUGFyYW1zLmhlYWRlcnM7XG4gICAgfVxuXG4gICAgLyogc2V0IGV4dHJhIGNvbmZpZyBmbGFncyAqL1xuICAgIGNvbmZpZy5ieVBhc3NSZXN1bHQgICAgPSBzZXJ2aWNlUGFyYW1zLmJ5UGFzc1Jlc3VsdDtcbiAgICBjb25maWcuaXNEaXJlY3RDYWxsICAgID0gc2VydmljZVBhcmFtcy5pc0RpcmVjdENhbGw7XG4gICAgY29uZmlnLmlzRXh0VVJMICAgICAgICA9IHNlcnZpY2VQYXJhbXMuaXNFeHRVUkw7XG4gICAgY29uZmlnLnByZXZlbnRNdWx0aXBsZSA9IHNlcnZpY2VQYXJhbXMucHJldmVudE11bHRpcGxlO1xuICAgIGNvbmZpZy5yZXNwb25zZVR5cGUgICAgPSBzZXJ2aWNlUGFyYW1zLnJlc3BvbnNlVHlwZTtcblxuICAgIHJldHVybiBjb25maWc7XG59O1xuXG5jb25zdCBsaXN0ZW5lcnMgPSB7fSxcbiAgICBBQ0NFU1NUT0tFTl9QTEFDRUhPTERFUlMgPSB7XG4gICAgICAgICdTVFVESU8nOiAnV01fU1RVRElPXycsXG4gICAgICAgICdSVU4nOiAnV01fUlVOXydcbiAgICB9LFxuICAgIG5ld1dpbmRvd1Byb3BzID0gJ3dpZHRoPTQwMCxoZWlnaHQ9NjAwJztcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHJlbW92ZSB0aGUgYWNjZXNzVG9rZW4gZm9yIGEgcHJvdmlkZXJcbiAqIEBwYXJhbSBwcm92aWRlclxuICovXG5leHBvcnQgY29uc3QgcmVtb3ZlQWNjZXNzVG9rZW4gPSAocHJvdmlkZXIpID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbktleSA9IGdldEFjY2Vzc1Rva2VuUGxhY2Vob2xkZXIocHJvdmlkZXIpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGFjY2Vzc1Rva2VuS2V5KTtcbn07XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBhY2Nlc3N0b2tlbiBwbGFjZWhvbGRlciBiYXNlZCBvbiB0aGUgc3R1ZGlvIG9yIHJ1biBtb2RlIGZvciB0aGUgcHJvamVjdFxuICogQHBhcmFtIHByb3ZpZGVyXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZnVuY3Rpb24gZ2V0QWNjZXNzVG9rZW5QbGFjZWhvbGRlcihwcm92aWRlcikge1xuICAgIGxldCBhY2Nlc3NUb2tlbktleTtcbiAgICBhY2Nlc3NUb2tlbktleSA9IEFDQ0VTU1RPS0VOX1BMQUNFSE9MREVSUy5SVU4gKyBfV01fQVBQX1BST0pFQ1QuaWQgKyAnXycgKyBwcm92aWRlciArIGFjY2Vzc1Rva2VuU3VmZml4O1xuICAgIHJldHVybiBhY2Nlc3NUb2tlbktleTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBmYWtlIGxvY2FsIHN0b3JhZ2UgdXBkYXRlLCBzbyB0aGUgSUUgZ2V0cyB0aGUgbGF0ZXN0IHRva2VuIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSBjYWNoZWQgbG9jYWxTdG9yYWdlVmFsdWVcbiAqL1xuZnVuY3Rpb24gcGVyZm9ybUZha2VMb2NhbFN0b3JhZ2VVcGRhdGUoKSB7XG4gICAgY29uc3QgZHVtbXlfa2V5ID0gJ2R1bW15X2tleSc7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oZHVtbXlfa2V5LCBkdW1teV9rZXkpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGR1bW15X2tleSk7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBhY2Nlc3NUb2tlblxuICogQHBhcmFtIHByb3ZpZGVyXG4gKiBAcGFyYW0gYWNjZXNzdG9rZW5cbiAqL1xuZnVuY3Rpb24gc2V0QWNjZXNzVG9rZW4ocHJvdmlkZXIsIGFjY2Vzc3Rva2VuKSB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW5LZXkgPSBnZXRBY2Nlc3NUb2tlblBsYWNlaG9sZGVyKHByb3ZpZGVyKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShhY2Nlc3NUb2tlbktleSwgYWNjZXNzdG9rZW4pO1xufVxuXG4vKipcbiAqIHRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgYXV0aGVudGljYXRpb24gaXMgZG9uZSBhbmQgaW52b2tlcyB0aGUgc3VjY2Vzc0NhbGxiYWNrXG4gKiBAcGFyYW0gcHJvdmlkZXJJZFxuICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFja1xuICogQHBhcmFtIGV2dFxuICovXG5mdW5jdGlvbiBjaGVja0F1dGhlbnRpY2F0aW9uU3RhdHVzKHByb3ZpZGVySWQsIHN1Y2Nlc3NDYWxsYmFjaywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgZXZ0LCBodHRwPywgc2VjdXJpdHlPYmo/KSB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW5LZXkgPSBwcm92aWRlcklkICsgYWNjZXNzVG9rZW5TdWZmaXgsXG4gICAgICAgIGFjY2Vzc1Rva2VuT3JDb2RlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYWNjZXNzVG9rZW5LZXkpO1xuICAgIGlmIChldnQgJiYgZXZ0Lm9yaWdpbiAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbikge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChhY2Nlc3NUb2tlbk9yQ29kZSkge1xuICAgICAgICBpZiAoaXNQYXNzZWRGbG93KHNlY3VyaXR5T2JqLCBwa2NlSWRlbnRpZmllcikpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcSA9ICdjbGllbnRfaWQ9JyArIHNlY3VyaXR5T2JqLmNsaWVudElkICsgJyZjb2RlPScgKyBhY2Nlc3NUb2tlbk9yQ29kZSArICcmZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUmY29kZV92ZXJpZmllcj0nICsgY29kZV92ZXJpZmllciArICcmcmVkaXJlY3RfdXJpPScgKyByZWRpcmVjdFVyaTtcbiAgICAgICAgICAgIGh0dHAuc2VuZCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHVybDogc2VjdXJpdHlPYmouYWNjZXNzVG9rZW5VcmwsXG4gICAgICAgICAgICAgICAgZGF0YTogcmVxXG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlckFjY2Vzc1Rva2VuU3VjY2Vzc0NhbGxiYWNrKHByb3ZpZGVySWQsIHN1Y2Nlc3NDYWxsYmFjaywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgYWNjZXNzVG9rZW5LZXksIHJlc3BvbnNlLmJvZHkuYWNjZXNzX3Rva2VuKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJpZ2dlckFjY2Vzc1Rva2VuU3VjY2Vzc0NhbGxiYWNrKHByb3ZpZGVySWQsIHN1Y2Nlc3NDYWxsYmFjaywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgYWNjZXNzVG9rZW5LZXksIGFjY2Vzc1Rva2VuT3JDb2RlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBmdW5jdGlvbiB0cmlnZ2VyIHRoZSBzdWNjZXNzQ2FsbGJhY2sgYWZ0ZXIgZ2V0dGluZyB0aGUgYWNjZXNzIHRva2VuXG4gKi9cbmZ1bmN0aW9uIHRyaWdnZXJBY2Nlc3NUb2tlblN1Y2Nlc3NDYWxsYmFjayhwcm92aWRlcklkLCBzdWNjZXNzQ2FsbGJhY2ssIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIGFjY2Vzc1Rva2VuS2V5LCB0b2tlbikge1xuICAgIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2socHJvdmlkZXJJZCk7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYWNjZXNzVG9rZW5LZXkpO1xuICAgIHNldEFjY2Vzc1Rva2VuKHByb3ZpZGVySWQsIHRva2VuKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyc1twcm92aWRlcklkXSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGRlbGV0ZSBsaXN0ZW5lcnNbcHJvdmlkZXJJZF07XG4gICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiB0aGlzIGZ1bmN0aW9uIGtlZXBzIG9uIGNoZWNraW5nIHRoZSBhY2Nlc3N0b2tlbiBpbiB0aGUgTG9jYWxTdG9yYWdlIGFuZCB1cGRhdGVzIGl0IGFjY29yZGluZ2x5XG4gKiBAcGFyYW0gcHJvdmlkZXJJZFxuICogQHBhcmFtIG9uU3VjY2Vzc1xuICogQHBhcmFtIG9uRXJyb3JcbiAqIEBwYXJhbSBzdGFydFRpbWVcbiAqIEBwYXJhbSBsb2dpbk9ialxuICovXG5mdW5jdGlvbiBjaGVja0FjY2Vzc1Rva2VuSW5XaW5kb3cocHJvdmlkZXJJZCwgb25TdWNjZXNzLCBvbkVycm9yLCBzdGFydFRpbWUsIGxvZ2luT2JqLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrKSB7XG4gICAgcGVyZm9ybUZha2VMb2NhbFN0b3JhZ2VVcGRhdGUoKTtcbiAgICBjb25zdCBjdXJyZW50VGltZSA9IG1vbWVudC5kdXJhdGlvbihtb21lbnQoKS5mb3JtYXQoJ0hIOm1tJyksICdISDptbScpLFxuICAgICAgICB0aW1lRGlmZiA9IGN1cnJlbnRUaW1lLnN1YnRyYWN0KHN0YXJ0VGltZSksXG4gICAgICAgIGFjY2Vzc1Rva2VuID0gZ2V0QWNjZXNzVG9rZW4ocHJvdmlkZXJJZCwgdHJ1ZSk7XG4gICAgaWYgKGFjY2Vzc1Rva2VuKSB7XG4gICAgICAgIGxvZ2luT2JqLmFjY2Vzc3Rva2VuX3JldHJpZXZlZCA9IHRydWU7XG4gICAgICAgIHNldEFjY2Vzc1Rva2VuKHByb3ZpZGVySWQsIGFjY2Vzc1Rva2VuKTtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0ocHJvdmlkZXJJZCArIGFjY2Vzc1Rva2VuU3VmZml4KTtcbiAgICAgICAgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjayhwcm92aWRlcklkKTtcbiAgICAgICAgaWYgKG9uU3VjY2Vzcykge1xuICAgICAgICAgICAgb25TdWNjZXNzKCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRpbWVEaWZmLm1pbnV0ZXMoKSA+IDEgJiYgb25TdWNjZXNzICYmICFsb2dpbk9iai5hY2Nlc3N0b2tlbl9yZXRyaWV2ZWQpIHtcbiAgICAgICAgb25TdWNjZXNzKCdlcnJvcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY2hlY2tBY2Nlc3NUb2tlbkluV2luZG93KHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgc3RhcnRUaW1lLCBsb2dpbk9iaiwgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjayk7XG4gICAgICAgIH0sIDMwMDApO1xuICAgIH1cbn1cblxuLyoqXG4gKiBjaGVja3MgZm9yIHRoZSB3aW5kb3cgZXhpc3RlbmNlIGkuZSBpZiB0aGUgd2luZG93IGlzIG1hbnVhbGx5IGNsb3NlZCBieSB0aGUgdXNlciBvciBhbnkgc3VjaFxuICogQHBhcmFtIG9BdXRoV2luZG93XG4gKiBAcGFyYW0gcHJvdmlkZXJcbiAqIEBwYXJhbSBjYWxsYmFja1xuICovXG5mdW5jdGlvbiBjaGVja0ZvcldpbmRvd0V4aXN0ZW5jZShvQXV0aFdpbmRvdywgcHJvdmlkZXIsIGNhbGxiYWNrLCBwcm92aWRlckluZm8/KSB7XG4gICAgaWYgKG9BdXRoV2luZG93ICYmIGxpc3RlbmVyc1twcm92aWRlcl0pIHtcbiAgICAgICAgaWYgKCFvQXV0aFdpbmRvdy5jbG9zZWQpIHsgLy8gLmNsb3NlZCBpcyBzdXBwb3J0ZWQgYWNyb3NzIG1ham9yIGJyb3dzZXIgdmVuZG9ycyBob3dldmVyIGZvciBJRSB0aGUgdXNlciBoYXMgdG8gZW5hYmxlIHByb3RlY3RlZCBtb2RlIGZyb20gc2VjdXJpdHkgb3B0aW9uc1xuICAgICAgICAgICAgc2V0VGltZW91dChjaGVja0ZvcldpbmRvd0V4aXN0ZW5jZS5iaW5kKHVuZGVmaW5lZCwgb0F1dGhXaW5kb3csIHByb3ZpZGVyLCBjYWxsYmFjaywgcHJvdmlkZXJJbmZvKSwgMzAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWlzUGFzc2VkRmxvdyhwcm92aWRlckluZm8sIHBrY2VJZGVudGlmaWVyKSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXJzW3Byb3ZpZGVyXSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxpc3RlbmVyc1twcm92aWRlcl07XG4gICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCdlcnJvcicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKlxuICogdGhpcyBmdW5jdGlvbnMgaGFuZGxlcyB0aGUgbG9naWMgcmVsYXRlZCB0byB0aGUgd2luZG93IG9wZXJhdGlvbnMgaW4gSUVcbiAqIEBwYXJhbSB1cmxcbiAqIEBwYXJhbSBwcm92aWRlcklkXG4gKiBAcGFyYW0gb25TdWNjZXNzXG4gKiBAcGFyYW0gb25FcnJvclxuICovXG5mdW5jdGlvbiBoYW5kbGVMb2dpbkZvcklFKHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCBvbkVycm9yLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaj8sIHJlcXVlc3RTb3VyY2VUeXBlPywgY3VzdG9tVXJpU2NoZW1lPywgZGVwbG95ZWRVUkw/KSB7XG4gICAgY29uc3QgbG9naW5PYmogPSB7XG4gICAgICAgICdhY2Nlc3N0b2tlbl9yZXRyaWV2ZWQnOiBmYWxzZVxuICAgIH07XG4gICAgaWYgKGlzUGFzc2VkRmxvdyhzZWN1cml0eU9iaiwgaW1wbGljaXRJZGVudGlmaWVyKSkge1xuICAgICAgICB1cmwgPSBjb25zdHJ1Y3RVUkxGb3JJbXBsaWNpdE9yUEtDRShwcm92aWRlcklkLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIG51bGwsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwpO1xuICAgIH1cbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnLCBuZXdXaW5kb3dQcm9wcyk7XG4gICAgY2hlY2tBY2Nlc3NUb2tlbkluV2luZG93KHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgbW9tZW50LmR1cmF0aW9uKG1vbWVudCgpLmZvcm1hdCgnSEg6bW0nKSwgJ0hIOm1tJyksIGxvZ2luT2JqLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrKTtcbn1cblxuLyoqXG4gKiB0aGlzIGZ1bmN0aW9ucyByZXR1cm5zIGlmIHRoZSBjdXJyZW50IG9BdXRoIEZsb3cgbWF0Y2hlcyB0aGUgcGFzc2VkIGZsb3cgb3Igbm90XG4gKiBAcGFyYW0gcHJvdmlkZXJJbmZvXG4gKi9cbmZ1bmN0aW9uIGlzUGFzc2VkRmxvdyhwcm92aWRlckluZm8sIGZsb3cpIHtcbiAgICBsZXQgb0F1dGhGbG93ID0gXy5nZXQocHJvdmlkZXJJbmZvLCAnb2F1dGgyRmxvdycpO1xuICAgIG9BdXRoRmxvdyA9IG9BdXRoRmxvdyA/IG9BdXRoRmxvdy50b0xvd2VyQ2FzZSgpIDogb0F1dGhGbG93O1xuICAgIGlmIChmbG93ID09PSBwa2NlSWRlbnRpZmllcikge1xuICAgICAgICBpZiAoXy5nZXQocHJvdmlkZXJJbmZvLCAnb0F1dGgyUGtjZS5lbmFibGVkJykgPT09IHRydWUpIHtcbiAgICAgICAgICAgIG9BdXRoRmxvdyA9IHBrY2VJZGVudGlmaWVyO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvQXV0aEZsb3cgPT09IGZsb3c7XG59XG5cbi8qKlxuICogdGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBsaXN0ZW5lciBvbiB0aGUgd2luZG93IGFuZCBhc3NpZ25zIHRoZSBsaXN0ZW5lclxuICogQHBhcmFtIHByb3ZpZGVyXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqL1xuZnVuY3Rpb24gb25BdXRoV2luZG93T3Blbihwcm92aWRlciwgY2FsbGJhY2ssIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIGh0dHA/LCBzZWN1cml0eU9iaj8pIHtcbiAgICBsaXN0ZW5lcnNbcHJvdmlkZXJdID0gY2hlY2tBdXRoZW50aWNhdGlvblN0YXR1cy5iaW5kKHVuZGVmaW5lZCwgcHJvdmlkZXIsIGNhbGxiYWNrLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBudWxsLCBodHRwLCBzZWN1cml0eU9iaik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lcnNbcHJvdmlkZXJdLCBmYWxzZSk7XG59XG5cbi8vIEdlbmVyYXRlIGEgc2VjdXJlIHJhbmRvbSBzdHJpbmcgdXNpbmcgdGhlIGJyb3dzZXIgY3J5cHRvIGZ1bmN0aW9uc1xuZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21TdHJpbmcoKSB7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgVWludDMyQXJyYXkoMjgpO1xuICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShhcnJheSwgZGVjID0+ICgnMCcgKyBkZWMudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTIpKS5qb2luKCcnKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBBcnJheUJ1ZmZlclxuZnVuY3Rpb24gZ2V0RW5jcnlwdGVkQ29kZShwbGFpbikge1xuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUocGxhaW4pO1xuICAgIGNvbnN0IHNoYU9iaiA9IG5ldyBqc1NIQShcIlNIQS0yNTZcIiwgXCJVSU5UOEFSUkFZXCIsIHsgZW5jb2Rpbmc6IFwiVVRGOFwiIH0pO1xuICAgIHNoYU9iai51cGRhdGUoZGF0YSk7XG4gICAgcmV0dXJuIHNoYU9iai5nZXRIYXNoKFwiQVJSQVlCVUZGRVJcIik7XG59XG5cbi8vIEJhc2U2NC11cmxlbmNvZGVzIHRoZSBpbnB1dCBzdHJpbmdcbmZ1bmN0aW9uIGJhc2U2NHVybGVuY29kZShzdHIpIHtcbiAgICAvLyBDb252ZXJ0IHRoZSBBcnJheUJ1ZmZlciB0byBzdHJpbmcgdXNpbmcgVWludDggYXJyYXkgdG8gY29udmVydCB0byB3aGF0IGJ0b2EgYWNjZXB0cy5cbiAgICAvLyBidG9hIGFjY2VwdHMgY2hhcnMgb25seSB3aXRoaW4gYXNjaWkgMC0yNTUgYW5kIGJhc2U2NCBlbmNvZGVzIHRoZW0uXG4gICAgLy8gVGhlbiBjb252ZXJ0IHRoZSBiYXNlNjQgZW5jb2RlZCB0byBiYXNlNjR1cmwgZW5jb2RlZFxuICAgIC8vICAgKHJlcGxhY2UgKyB3aXRoIC0sIHJlcGxhY2UgLyB3aXRoIF8sIHRyaW0gdHJhaWxpbmcgPSlcbiAgICByZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIG5ldyBVaW50OEFycmF5KHN0cikpKVxuICAgICAgICAucmVwbGFjZSgvXFwrL2csICctJykucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvPSskLywgJycpO1xufVxuXG4vKipcbiAqIHRoaXMgZnVuY3Rpb24gaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCBlbmFibGVzIHRoZSBsaXN0ZW5lciBhbmQgY2hlY2tzIGZvciB0aGUgd2luZG93IGV4aXN0ZW5jZVxuICogQHBhcmFtIHByb3ZpZGVySWRcbiAqIEBwYXJhbSBvblN1Y2Nlc3NcbiAqIEBwYXJhbSB1cmxcbiAqL1xuZnVuY3Rpb24gcG9zdEdldEF1dGhvcml6YXRpb25VUkwodXJsLCBwcm92aWRlcklkLCBvblN1Y2Nlc3MsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIHNlY3VyaXR5T2JqPywgcmVxdWVzdFNvdXJjZVR5cGU/LCBjdXN0b21VcmlTY2hlbWU/LCBkZXBsb3llZFVSTD8sIGh0dHA/KSB7XG4gICAgaWYgKGlzUGFzc2VkRmxvdyhzZWN1cml0eU9iaiwgaW1wbGljaXRJZGVudGlmaWVyKSkge1xuICAgICAgICB1cmwgPSBjb25zdHJ1Y3RVUkxGb3JJbXBsaWNpdE9yUEtDRShwcm92aWRlcklkLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIG51bGwsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwpO1xuICAgICAgICBzdGFydG9BdXRoRmxvdyh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2VzcywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMLCBodHRwKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFzc2VkRmxvdyhzZWN1cml0eU9iaiwgcGtjZUlkZW50aWZpZXIpKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhbmQgc3RvcmUgYSBuZXcgUEtDRSBjb2RlX3ZlcmlmaWVyICh0aGUgcGxhaW50ZXh0IHJhbmRvbSBzZWNyZXQpXG4gICAgICAgIGNvZGVfdmVyaWZpZXIgPSBnZW5lcmF0ZVJhbmRvbVN0cmluZygpO1xuICAgICAgICBsZXQgY29kZV9jaGFsbGVuZ2U7XG4gICAgICAgIGlmIChfLmdldChzZWN1cml0eU9iaiwgJ29BdXRoMlBrY2UuY2hhbGxlbmdlTWV0aG9kJykgPT09ICdwbGFpbicpIHtcbiAgICAgICAgICAgIGNvZGVfY2hhbGxlbmdlID0gY29kZV92ZXJpZmllcjtcbiAgICAgICAgICAgIHVybCA9IGNvbnN0cnVjdFVSTEZvckltcGxpY2l0T3JQS0NFKHByb3ZpZGVySWQsIHNlY3VyaXR5T2JqLCByZXF1ZXN0U291cmNlVHlwZSwgY29kZV9jaGFsbGVuZ2UsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwpO1xuICAgICAgICAgICAgc3RhcnRvQXV0aEZsb3codXJsLCBwcm92aWRlcklkLCBvblN1Y2Nlc3MsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIHNlY3VyaXR5T2JqLCByZXF1ZXN0U291cmNlVHlwZSwgY3VzdG9tVXJpU2NoZW1lLCBkZXBsb3llZFVSTCwgaHR0cCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBlbmNyeXB0ZWRDb2RlID0gZ2V0RW5jcnlwdGVkQ29kZShjb2RlX3ZlcmlmaWVyKTtcbiAgICAgICAgICAgIGNvZGVfY2hhbGxlbmdlID0gYmFzZTY0dXJsZW5jb2RlKGVuY3J5cHRlZENvZGUpO1xuICAgICAgICAgICAgLy9jb2RlX2NoYWxsZW5nZSA9IGVuY3J5cHRlZENvZGU7XG4gICAgICAgICAgICB1cmwgPSBjb25zdHJ1Y3RVUkxGb3JJbXBsaWNpdE9yUEtDRShwcm92aWRlcklkLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGNvZGVfY2hhbGxlbmdlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMKTtcbiAgICAgICAgICAgIHN0YXJ0b0F1dGhGbG93KHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwsIGh0dHApO1xuXG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydG9BdXRoRmxvdyh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2VzcywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMLCBodHRwKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHN0YXJ0b0F1dGhGbG93KHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaj8sIHJlcXVlc3RTb3VyY2VUeXBlPywgY3VzdG9tVXJpU2NoZW1lPywgZGVwbG95ZWRVUkw/LCBodHRwPykge1xuICAgIGxldCBvQXV0aFdpbmRvdztcbiAgICBpZiAoaGFzQ29yZG92YSgpKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKHVybCwgJ19zeXN0ZW0nKTtcbiAgICAgICAgd2luZG93WydPQXV0aEluTW9iaWxlJ10ocHJvdmlkZXJJZCkudGhlbihhY2Nlc3NUb2tlbiA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBwcm92aWRlcklkICsgYWNjZXNzVG9rZW5TdWZmaXg7XG4gICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIGFjY2Vzc1Rva2VuKTtcbiAgICAgICAgICAgICAgICBjaGVja0F1dGhlbnRpY2F0aW9uU3RhdHVzKHByb3ZpZGVySWQsIG9uU3VjY2VzcywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgbnVsbCwgaHR0cCwgc2VjdXJpdHlPYmopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvblN1Y2Nlc3MoJ2Vycm9yJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9BdXRoV2luZG93ID0gd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJywgbmV3V2luZG93UHJvcHMpO1xuICAgICAgICBvbkF1dGhXaW5kb3dPcGVuKHByb3ZpZGVySWQsIG9uU3VjY2VzcywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgaHR0cCwgc2VjdXJpdHlPYmopO1xuICAgICAgICBjaGVja0ZvcldpbmRvd0V4aXN0ZW5jZShvQXV0aFdpbmRvdywgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCBzZWN1cml0eU9iaik7XG4gICAgfVxufVxuXG4vKipcbiAqIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCB0aGUgdXJsIGZvciBpbXBsaWNpdCBmbG93LlxuICogQHBhcmFtIHByb3ZpZGVySWQgcHJvdmlkZXIgaWQgZm9yIHdoaWNoIHRoZSB1cmwgaGFzIHRvIGJlIHNldFxuICogQHBhcmFtIHByb3ZpZGVySW5mbyBwcm92aWRlciBvYmplY3Qgd2hpY2ggY29udGFpbnMgZGV0YWlscyBzdWNoIGFzIHNjb3BlLCBjbGllbnQgaWQgZXRjXG4gKiBAcGFyYW0gcmVxdWVzdFNvdXJjZVR5cGUgcmVxdWVzdGluZyBzb3VyY2UgaXMgd2ViIG9yIG1vYmlsZVxuICogQHJldHVybnMgdXJsIHN0cmluZ1xuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RVUkxGb3JJbXBsaWNpdE9yUEtDRShwcm92aWRlcklkLCBwcm92aWRlckluZm8sIHJlcXVlc3RTb3VyY2VUeXBlLCBjb2RlX2NoYWxsZW5nZSwgY3VzdG9tVXJpU2NoZW1lPywgZGVwbG95ZWRVUkw/KSB7XG4gICAgcmVkaXJlY3RVcmkgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnLyMvJylbMF0gKyAnL29BdXRoQ2FsbGJhY2suaHRtbCc7XG4gICAgY29uc3QgY2xpZW50SWQgPSBwcm92aWRlckluZm8uY2xpZW50SWQ7XG4gICAgY29uc3Qgc2NvcGVzID0gcHJvdmlkZXJJbmZvLnNjb3Blcy5tYXAoZnVuY3Rpb24oc2NvcGUpIHsgcmV0dXJuIHNjb3BlLm5hbWUgfSkuam9pbignICcpO1xuICAgIGxldCBzdGF0ZTtcbiAgICBpZiAoZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLmlzVGVzdFJ1bnRpbWUgPT09IHRydWUpIHtcbiAgICAgICAgcmVkaXJlY3RVcmkgPSBsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvc3R1ZGlvL29BdXRoQ2FsbGJhY2suaHRtbCc7XG4gICAgfVxuICAgIGlmIChyZXF1ZXN0U291cmNlVHlwZSA9PT0gJ01PQklMRScpIHtcbiAgICAgICAgcmVkaXJlY3RVcmkgPSBkZXBsb3llZFVSTCArICdvQXV0aENhbGxiYWNrLmh0bWwnO1xuICAgIH1cbiAgICBjb25zdCBmbG93ID0gaXNQYXNzZWRGbG93KHByb3ZpZGVySW5mbywgaW1wbGljaXRJZGVudGlmaWVyKSA/IGltcGxpY2l0SWRlbnRpZmllciA6IHBrY2VJZGVudGlmaWVyO1xuICAgIHN0YXRlID0ge3Byb3ZpZGVySWQ6IHByb3ZpZGVySWQsIHN1ZmZpeDogYWNjZXNzVG9rZW5TdWZmaXgsIHJlcXVlc3RTb3VyY2VUeXBlOiByZXF1ZXN0U291cmNlVHlwZSwgZmxvdzogZmxvdywgc2NoZW1lOiBjdXN0b21VcmlTY2hlbWV9O1xuICAgIGNvbnN0IGF1dGhVcmxBcnIgPSBwcm92aWRlckluZm8uYXV0aG9yaXphdGlvblVybC5zcGxpdCgnPycpO1xuICAgIGxldCBjb25uZWN0b3I7XG4gICAgaWYgKGF1dGhVcmxBcnIubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIC8vcXVlcnkgcGFyYW1zIGRvbid0IGV4aXN0XG4gICAgICAgIGNvbm5lY3RvciA9ICc/JztcbiAgICB9IGVsc2UgaWYgKGF1dGhVcmxBcnIubGVuZ3RoID4gMSAmJiBhdXRoVXJsQXJyWzFdICE9PSAnJykge1xuICAgICAgICAvL3F1ZXJ5IHBhcmFtcyBleGlzdC4gQXBwZW5kICYgaW5zdGVhZCBvZiA/LlxuICAgICAgICBjb25uZWN0b3IgPSAnJic7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy9ub3RoaW5nIGV4aXN0cyBhZnRlciAnPycuIGNsaWVudF9pZCBjYW4gYmUgZGlyZWN0bHkgYXBwZW5kZWQ7XG4gICAgICAgIGNvbm5lY3RvciA9ICcnO1xuICAgIH1cbiAgICBjb25zdCBjb21tb25VcmwgPSBwcm92aWRlckluZm8uYXV0aG9yaXphdGlvblVybCArIGNvbm5lY3RvciArICdjbGllbnRfaWQ9JyArIGNsaWVudElkICsgJyZyZWRpcmVjdF91cmk9JyArIHJlZGlyZWN0VXJpICsgJyZzdGF0ZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHN0YXRlKSkgKyAnJnNjb3BlPScgKyBlbmNvZGVVUklDb21wb25lbnQoc2NvcGVzKTtcbiAgICBsZXQgdXJsO1xuICAgIGlmIChmbG93ID09PSBpbXBsaWNpdElkZW50aWZpZXIpIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VUeXBlID0gcHJvdmlkZXJJbmZvLnJlc3BvbnNlVHlwZSA/IHByb3ZpZGVySW5mby5yZXNwb25zZVR5cGUgOiAndG9rZW4nO1xuICAgICAgICB1cmwgPSBjb21tb25VcmwgKyAnJnJlc3BvbnNlX3R5cGU9JyArIHJlc3BvbnNlVHlwZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSBjb21tb25VcmwgKyAnJnJlc3BvbnNlX3R5cGU9Y29kZSZjb2RlX2NoYWxsZW5nZT0nICsgY29kZV9jaGFsbGVuZ2UgKyAnJmNvZGVfY2hhbGxlbmdlX21ldGhvZD0nICsgXy5nZXQocHJvdmlkZXJJbmZvLCAnb0F1dGgyUGtjZS5jaGFsbGVuZ2VNZXRob2QnKTtcbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbn1cblxuLyoqXG4gKiBmdW5jdGlvbiB0byBnZXQgdGhlIGF1dGhvcml6YXRpb24gdXJsXG4gKiBAcGFyYW0gcGFyYW1zIHByb3ZpZGVyIGlkIGZvciB3aGljaCB0aGUgYXV0aCB1cmwgaGFzIHRvIGJlIGZldGNoZWRcbiAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2sgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB1cG9uIHN1Y2Nlc3NmdWwgZmV0Y2ggb2YgdGhlIHByb3ZpZGVyc1xuICogQHBhcmFtIGZhaWx1cmVDYWxsYmFjayBjYWxsYmFjayB0byBiZSBpbnZva2VkIHVwb24gZXJyb3JcbiAqIEByZXR1cm5zIHsqfVxuICovXG5mdW5jdGlvbiBnZXRBdXRob3JpemF0aW9uVXJsKHBhcmFtcywgaHR0cCkge1xuICAgIGNvbnN0IGFjdGlvbiA9ICdnZXRBdXRob3JpemF0aW9uVXJsJyxcbiAgICAgICAgc2VydmljZVNldHRpbmdzID0gcGFyc2VDb25maWcoe1xuICAgICAgICAgICAgdGFyZ2V0OiAnb2F1dGhDb25maWd1cmF0aW9uJyxcbiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICAgICAgdXJsUGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBfV01fQVBQX1BST0pFQ1QuaWQsXG4gICAgICAgICAgICAgICAgcHJvdmlkZXJJZDogcGFyYW1zLnByb3ZpZGVySWRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAncmVxdWVzdFNvdXJjZVR5cGUnOiBwYXJhbXMucmVxdWVzdFNvdXJjZVR5cGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgcmV0dXJuIGh0dHAuc2VuZChzZXJ2aWNlU2V0dGluZ3MpO1xufVxuXG4vKipcbiAqIGZ1bmN0aW9uIHRyaWdnZXIgdGhlIGFkZFByb3ZpZGVyQ29uZmlnQ2FsbEJhY2sgYWZ0ZXIgZ2V0dGluZyB0aGUgYXV0aG9yaXphdGlvbiB1cmxcbiAqL1xuZnVuY3Rpb24gdHJpZ2dlclByb3ZpZGVyQ29uZmlnQ2FsbEJhY2sodXJsLCBwcm92aWRlcklkLCBvblN1Y2Nlc3MsIG9uRXJyb3IsIGh0dHAsIGFkZFByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIHNlY3VyaXR5T2JqLCByZXF1ZXN0U291cmNlVHlwZSwgY3VzdG9tVXJpU2NoZW1lLCBkZXBsb3llZFVSTCkge1xuICAgIGNvbnN0IHVybEJvZHkgPSBpc1Bhc3NlZEZsb3coc2VjdXJpdHlPYmosIGltcGxpY2l0SWRlbnRpZmllcikgfHwgaXNQYXNzZWRGbG93KHNlY3VyaXR5T2JqLCBwa2NlSWRlbnRpZmllcikgPyB1cmwgOiB1cmwuYm9keTtcbiAgICBhZGRQcm92aWRlckNvbmZpZ0NhbGxCYWNrKHtcbiAgICAgICAgbmFtZTogcHJvdmlkZXJJZCxcbiAgICAgICAgdXJsOiB1cmxCb2R5LFxuICAgICAgICBpbnZva2U6ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0lFKCkpIHsgLy8gaGFuZGxpbmcgZm9yIElFXG4gICAgICAgICAgICAgICAgaGFuZGxlTG9naW5Gb3JJRSh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcG9zdEdldEF1dGhvcml6YXRpb25VUkwodXJsQm9keSwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwsIGh0dHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogdGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgdGhlIGFjY2Vzc1Rva2VuIGJhc2VkIG9uIHRoZSBydW4vc3R1ZGlvbW9kZVxuICogQHBhcmFtIHByb3ZpZGVyXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuID0gKHByb3ZpZGVyLCBjaGVja0xvY2FsU3RvcmFnZSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuS2V5ID0gZ2V0QWNjZXNzVG9rZW5QbGFjZWhvbGRlcihwcm92aWRlcik7XG4gICAgaWYgKGNoZWNrTG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShwcm92aWRlciArIGFjY2Vzc1Rva2VuU3VmZml4KTtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGFjY2Vzc1Rva2VuS2V5KTtcbn07XG5cblxuLyoqXG4gKiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcGVyZm9ybSB0aGUgYXV0aG9yaXphdGlvbiBieSBvcGVuaW5nIHRoZSB3aW5kb3cgYW5kIGhhdmluZyBhY3RpdmUgbGlzdGVuZXJzXG4gKiBAcGFyYW0gdXJsXG4gKiBAcGFyYW0gcHJvdmlkZXJJZFxuICogQHBhcmFtIG9uU3VjY2Vzc1xuICogQHJldHVybnMgeyp9XG4gKi9cbmV4cG9ydCBjb25zdCBwZXJmb3JtQXV0aG9yaXphdGlvbiA9ICh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgaHR0cCwgYWRkUHJvdmlkZXJDb25maWdDYWxsQmFjaywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmo/LCBjdXN0b21VcmlTY2hlbWU/LCBkZXBsb3llZFVSTD8pID0+IHtcbiAgICBsZXQgcmVxdWVzdFNvdXJjZVR5cGUgPSAnV0VCJztcbiAgICBpZiAodXJsKSB7XG4gICAgICAgIGlmIChpc0lFKCkpIHsgLy8gaGFuZGxpbmcgZm9yIElFXG4gICAgICAgICAgICBoYW5kbGVMb2dpbkZvcklFKHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCBvbkVycm9yLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3RHZXRBdXRob3JpemF0aW9uVVJMKHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGh0dHApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGhhc0NvcmRvdmEoKSkge1xuICAgICAgICAgICAgcmVxdWVzdFNvdXJjZVR5cGUgPSAnTU9CSUxFJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNQYXNzZWRGbG93KHNlY3VyaXR5T2JqLCBpbXBsaWNpdElkZW50aWZpZXIpIHx8IGlzUGFzc2VkRmxvdyhzZWN1cml0eU9iaiwgcGtjZUlkZW50aWZpZXIpKSB7XG4gICAgICAgICAgICB0cmlnZ2VyUHJvdmlkZXJDb25maWdDYWxsQmFjayh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgaHR0cCwgYWRkUHJvdmlkZXJDb25maWdDYWxsQmFjaywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnZXRBdXRob3JpemF0aW9uVXJsKHtcbiAgICAgICAgICAgICAgICAncHJvdmlkZXJJZCc6IHByb3ZpZGVySWQsXG4gICAgICAgICAgICAgICAgJ3JlcXVlc3RTb3VyY2VUeXBlJzogcmVxdWVzdFNvdXJjZVR5cGVcbiAgICAgICAgICAgIH0sIGh0dHApLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJpZ2dlclByb3ZpZGVyQ29uZmlnQ2FsbEJhY2socmVzcG9uc2UsIHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgaHR0cCwgYWRkUHJvdmlkZXJDb25maWdDYWxsQmFjaywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufTtcbiJdfQ==
|
|
439
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib0F1dGgudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9vQXV0aC9zcmMvb0F1dGgudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3JGLE9BQU8sRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBSzNDLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxFQUFFLGNBQWMsR0FBRyxNQUFNLEVBQUUsa0JBQWtCLEdBQUcsVUFBVSxDQUFDO0FBRXBHLElBQUksYUFBYSxFQUFFLFdBQVcsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxhQUFrQixFQUFPLEVBQUU7SUFFbkQsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUN2QixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDO0lBRTFDLE1BQU0sR0FBRztRQUNMLEdBQUcsRUFBRSw4Q0FBOEM7UUFDbkQsTUFBTSxFQUFFLEtBQUs7S0FDaEIsQ0FBQztJQUVGLHFHQUFxRztJQUNyRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUMzRCxNQUFNLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDN0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUV0QyxxQ0FBcUM7UUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFD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QUFFLDRCQUE0QixDQUFDLENBQUM7UUFDeEYsQ0FBQzthQUFNLENBQUM7WUFDSix1QkFBdUIsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSw0QkFBNEIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUgsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ0osSUFBSSxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2YsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO1FBQ2pDLENBQUM7UUFDRCxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDN0YsNkJBQTZCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3BNLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxtQkFBbUIsQ0FBQztnQkFDdkIsWUFBWSxFQUFFLFVBQVU7Z0JBQ3hCLG1CQUFtQixFQUFFLGlCQUFpQjthQUN6QyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUN2Qiw2QkFBNkIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFLDRCQUE0QixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDek0sQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IF9XTV9BUFBfUFJPSkVDVCwgaGFzQ29yZG92YSwgaXNJRSwgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7Z2V0LCBpc1VuZGVmaW5lZH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0IG1vbWVudDtcbmRlY2xhcmUgY29uc3QganNTSEE7XG5cbmNvbnN0IGFjY2Vzc1Rva2VuU3VmZml4ID0gJy5hY2Nlc3NfdG9rZW4nLCBwa2NlSWRlbnRpZmllciA9ICdwa2NlJywgaW1wbGljaXRJZGVudGlmaWVyID0gJ2ltcGxpY2l0JztcblxubGV0IGNvZGVfdmVyaWZpZXIsIHJlZGlyZWN0VXJpO1xuXG5leHBvcnQgY29uc3QgcGFyc2VDb25maWcgPSAoc2VydmljZVBhcmFtczogYW55KTogYW55ID0+IHtcblxuICAgIGxldCB2YWwsIHBhcmFtLCBjb25maWc7XG4gICAgY29uc3QgdXJsUGFyYW1zID0gc2VydmljZVBhcmFtcy51cmxQYXJhbXM7XG5cbiAgICBjb25maWcgPSB7XG4gICAgICAgIHVybDogJ3NlcnZpY2VzL29hdXRoMi86cHJvdmlkZXJJZC9hdXRob3JpemF0aW9uVXJsJyxcbiAgICAgICAgbWV0aG9kOiAnR0VUJ1xuICAgIH07XG5cbiAgICAvKlRvIGhhbmRsZSBkeW5hbWljIHVybHMsIGFwcGVuZCB0aGUgc2VydmljZVBhcmFtcy5jb25maWcudXJsIHdpdGggdGhlIHN0YXRpYyB1cmwoaS5lLiwgY29uZmlnLnVybCkqL1xuICAgIGlmIChzZXJ2aWNlUGFyYW1zLmNvbmZpZykge1xuICAgICAgICBjb25maWcudXJsID0gKHNlcnZpY2VQYXJhbXMuY29uZmlnLnVybCB8fCAnJykgKyBjb25maWcudXJsO1xuICAgICAgICBjb25maWcubWV0aG9kID0gc2VydmljZVBhcmFtcy5jb25maWcubWV0aG9kIHx8IGNvbmZpZy5tZXRob2Q7XG4gICAgICAgIGNvbmZpZy5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgfHwge307XG5cbiAgICAgICAgLy8gVE9ET1tTaHViaGFtXSAtIGNoYW5nZSB0byBmb3IgLSBvZlxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzZXJ2aWNlUGFyYW1zLmNvbmZpZy5oZWFkZXJzKSB7XG4gICAgICAgICAgICB2YWwgPSBzZXJ2aWNlUGFyYW1zLmNvbmZpZy5oZWFkZXJzW2tleV07XG4gICAgICAgICAgICBjb25maWcuaGVhZGVyc1trZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qIGNoZWNrIGZvciB1cmwgcGFyYW1ldGVycyB0byByZXBsYWNlIHRoZSB1cmwgKi9cbiAgICBpZiAodXJsUGFyYW1zKSB7XG4gICAgICAgIGZvciAocGFyYW0gaW4gdXJsUGFyYW1zKSB7XG4gICAgICAgICAgICBpZiAodXJsUGFyYW1zLmhhc093blByb3BlcnR5KHBhcmFtKSkge1xuICAgICAgICAgICAgICAgIHZhbCA9IHVybFBhcmFtc1twYXJhbV07XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh2YWwpICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25maWcudXJsID0gY29uZmlnLnVybC5yZXBsYWNlKG5ldyBSZWdFeHAoJzonICsgcGFyYW0sICdnJyksIHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyogY2hlY2sgZm9yIGRhdGEgKi9cbiAgICBpZiAoc2VydmljZVBhcmFtcy5wYXJhbXMpIHtcbiAgICAgICAgY29uZmlnLnBhcmFtcyA9IHNlcnZpY2VQYXJhbXMucGFyYW1zO1xuICAgIH1cbiAgICAvKiBjaGVjayBmb3IgZGF0YSAqL1xuICAgIGlmICghaXNVbmRlZmluZWQoc2VydmljZVBhcmFtcy5kYXRhKSkge1xuICAgICAgICBjb25maWcuZGF0YSA9IHNlcnZpY2VQYXJhbXMuZGF0YTtcbiAgICB9XG4gICAgLyogY2hlY2sgZm9yIGRhdGEgcGFyYW1ldGVycywgd3JpdHRlbiB0byBzdXBwb3J0IG9sZCBzZXJ2aWNlIGNhbGxzICguanNvbiBjYWxscykgKi9cbiAgICBpZiAoc2VydmljZVBhcmFtcy5kYXRhUGFyYW1zKSB7XG4gICAgICAgIGNvbmZpZy5kYXRhLnBhcmFtcyA9IHNlcnZpY2VQYXJhbXMuZGF0YVBhcmFtcztcbiAgICB9XG4gICAgLyogY2hlY2sgZm9yIGhlYWRlcnMgKi9cbiAgICBpZiAoc2VydmljZVBhcmFtcy5oZWFkZXJzKSB7XG4gICAgICAgIGNvbmZpZy5oZWFkZXJzID0gc2VydmljZVBhcmFtcy5oZWFkZXJzO1xuICAgIH1cblxuICAgIC8qIHNldCBleHRyYSBjb25maWcgZmxhZ3MgKi9cbiAgICBjb25maWcuYnlQYXNzUmVzdWx0ICAgID0gc2VydmljZVBhcmFtcy5ieVBhc3NSZXN1bHQ7XG4gICAgY29uZmlnLmlzRGlyZWN0Q2FsbCAgICA9IHNlcnZpY2VQYXJhbXMuaXNEaXJlY3RDYWxsO1xuICAgIGNvbmZpZy5pc0V4dFVSTCAgICAgICAgPSBzZXJ2aWNlUGFyYW1zLmlzRXh0VVJMO1xuICAgIGNvbmZpZy5wcmV2ZW50TXVsdGlwbGUgPSBzZXJ2aWNlUGFyYW1zLnByZXZlbnRNdWx0aXBsZTtcbiAgICBjb25maWcucmVzcG9uc2VUeXBlICAgID0gc2VydmljZVBhcmFtcy5yZXNwb25zZVR5cGU7XG5cbiAgICByZXR1cm4gY29uZmlnO1xufTtcblxuY29uc3QgbGlzdGVuZXJzID0ge30sXG4gICAgQUNDRVNTVE9LRU5fUExBQ0VIT0xERVJTID0ge1xuICAgICAgICAnU1RVRElPJzogJ1dNX1NUVURJT18nLFxuICAgICAgICAnUlVOJzogJ1dNX1JVTl8nXG4gICAgfSxcbiAgICBuZXdXaW5kb3dQcm9wcyA9ICd3aWR0aD00MDAsaGVpZ2h0PTYwMCc7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZW1vdmUgdGhlIGFjY2Vzc1Rva2VuIGZvciBhIHByb3ZpZGVyXG4gKiBAcGFyYW0gcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZUFjY2Vzc1Rva2VuID0gKHByb3ZpZGVyKSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW5LZXkgPSBnZXRBY2Nlc3NUb2tlblBsYWNlaG9sZGVyKHByb3ZpZGVyKTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShhY2Nlc3NUb2tlbktleSk7XG59O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYWNjZXNzdG9rZW4gcGxhY2Vob2xkZXIgYmFzZWQgb24gdGhlIHN0dWRpbyBvciBydW4gbW9kZSBmb3IgdGhlIHByb2plY3RcbiAqIEBwYXJhbSBwcm92aWRlclxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGdldEFjY2Vzc1Rva2VuUGxhY2Vob2xkZXIocHJvdmlkZXIpIHtcbiAgICBsZXQgYWNjZXNzVG9rZW5LZXk7XG4gICAgYWNjZXNzVG9rZW5LZXkgPSBBQ0NFU1NUT0tFTl9QTEFDRUhPTERFUlMuUlVOICsgX1dNX0FQUF9QUk9KRUNULmlkICsgJ18nICsgcHJvdmlkZXIgKyBhY2Nlc3NUb2tlblN1ZmZpeDtcbiAgICByZXR1cm4gYWNjZXNzVG9rZW5LZXk7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgZmFrZSBsb2NhbCBzdG9yYWdlIHVwZGF0ZSwgc28gdGhlIElFIGdldHMgdGhlIGxhdGVzdCB0b2tlbiBpbnN0ZWFkIG9mIHJldHVybmluZyB0aGUgY2FjaGVkIGxvY2FsU3RvcmFnZVZhbHVlXG4gKi9cbmZ1bmN0aW9uIHBlcmZvcm1GYWtlTG9jYWxTdG9yYWdlVXBkYXRlKCkge1xuICAgIGNvbnN0IGR1bW15X2tleSA9ICdkdW1teV9rZXknO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGR1bW15X2tleSwgZHVtbXlfa2V5KTtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShkdW1teV9rZXkpO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgYWNjZXNzVG9rZW5cbiAqIEBwYXJhbSBwcm92aWRlclxuICogQHBhcmFtIGFjY2Vzc3Rva2VuXG4gKi9cbmZ1bmN0aW9uIHNldEFjY2Vzc1Rva2VuKHByb3ZpZGVyLCBhY2Nlc3N0b2tlbikge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuS2V5ID0gZ2V0QWNjZXNzVG9rZW5QbGFjZWhvbGRlcihwcm92aWRlcik7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oYWNjZXNzVG9rZW5LZXksIGFjY2Vzc3Rva2VuKTtcbn1cblxuLyoqXG4gKiB0aGlzIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGF1dGhlbnRpY2F0aW9uIGlzIGRvbmUgYW5kIGludm9rZXMgdGhlIHN1Y2Nlc3NDYWxsYmFja1xuICogQHBhcmFtIHByb3ZpZGVySWRcbiAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2tcbiAqIEBwYXJhbSBldnRcbiAqL1xuZnVuY3Rpb24gY2hlY2tBdXRoZW50aWNhdGlvblN0YXR1cyhwcm92aWRlcklkLCBzdWNjZXNzQ2FsbGJhY2ssIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIGV2dCwgaHR0cD8sIHNlY3VyaXR5T2JqPykge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuS2V5ID0gcHJvdmlkZXJJZCArIGFjY2Vzc1Rva2VuU3VmZml4LFxuICAgICAgICBhY2Nlc3NUb2tlbk9yQ29kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGFjY2Vzc1Rva2VuS2V5KTtcbiAgICBpZiAoZXZ0ICYmIGV2dC5vcmlnaW4gIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoYWNjZXNzVG9rZW5PckNvZGUpIHtcbiAgICAgICAgaWYgKGlzUGFzc2VkRmxvdyhzZWN1cml0eU9iaiwgcGtjZUlkZW50aWZpZXIpKSB7XG4gICAgICAgICAgICBjb25zdCByZXEgPSAnY2xpZW50X2lkPScgKyBzZWN1cml0eU9iai5jbGllbnRJZCArICcmY29kZT0nICsgYWNjZXNzVG9rZW5PckNvZGUgKyAnJmdyYW50X3R5cGU9YXV0aG9yaXphdGlvbl9jb2RlJmNvZGVfdmVyaWZpZXI9JyArIGNvZGVfdmVyaWZpZXIgKyAnJnJlZGlyZWN0X3VyaT0nICsgcmVkaXJlY3RVcmk7XG4gICAgICAgICAgICBodHRwLnNlbmQoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB1cmw6IHNlY3VyaXR5T2JqLmFjY2Vzc1Rva2VuVXJsLFxuICAgICAgICAgICAgICAgIGRhdGE6IHJlcVxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbihyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NUb2tlblN1Y2Nlc3NDYWxsYmFjayhwcm92aWRlcklkLCBzdWNjZXNzQ2FsbGJhY2ssIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIGFjY2Vzc1Rva2VuS2V5LCByZXNwb25zZS5ib2R5LmFjY2Vzc190b2tlbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyaWdnZXJBY2Nlc3NUb2tlblN1Y2Nlc3NDYWxsYmFjayhwcm92aWRlcklkLCBzdWNjZXNzQ2FsbGJhY2ssIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIGFjY2Vzc1Rva2VuS2V5LCBhY2Nlc3NUb2tlbk9yQ29kZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogZnVuY3Rpb24gdHJpZ2dlciB0aGUgc3VjY2Vzc0NhbGxiYWNrIGFmdGVyIGdldHRpbmcgdGhlIGFjY2VzcyB0b2tlblxuICovXG5mdW5jdGlvbiB0cmlnZ2VyQWNjZXNzVG9rZW5TdWNjZXNzQ2FsbGJhY2socHJvdmlkZXJJZCwgc3VjY2Vzc0NhbGxiYWNrLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBhY2Nlc3NUb2tlbktleSwgdG9rZW4pIHtcbiAgICByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrKHByb3ZpZGVySWQpO1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGFjY2Vzc1Rva2VuS2V5KTtcbiAgICBzZXRBY2Nlc3NUb2tlbihwcm92aWRlcklkLCB0b2tlbik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lcnNbcHJvdmlkZXJJZF0pO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBkZWxldGUgbGlzdGVuZXJzW3Byb3ZpZGVySWRdO1xuICAgICAgICBpZiAoc3VjY2Vzc0NhbGxiYWNrKSB7XG4gICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2sodG9rZW4pO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cbi8qKlxuICogdGhpcyBmdW5jdGlvbiBrZWVwcyBvbiBjaGVja2luZyB0aGUgYWNjZXNzdG9rZW4gaW4gdGhlIExvY2FsU3RvcmFnZSBhbmQgdXBkYXRlcyBpdCBhY2NvcmRpbmdseVxuICogQHBhcmFtIHByb3ZpZGVySWRcbiAqIEBwYXJhbSBvblN1Y2Nlc3NcbiAqIEBwYXJhbSBvbkVycm9yXG4gKiBAcGFyYW0gc3RhcnRUaW1lXG4gKiBAcGFyYW0gbG9naW5PYmpcbiAqL1xuZnVuY3Rpb24gY2hlY2tBY2Nlc3NUb2tlbkluV2luZG93KHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgc3RhcnRUaW1lLCBsb2dpbk9iaiwgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaykge1xuICAgIHBlcmZvcm1GYWtlTG9jYWxTdG9yYWdlVXBkYXRlKCk7XG4gICAgY29uc3QgY3VycmVudFRpbWUgPSBtb21lbnQuZHVyYXRpb24obW9tZW50KCkuZm9ybWF0KCdISDptbScpLCAnSEg6bW0nKSxcbiAgICAgICAgdGltZURpZmYgPSBjdXJyZW50VGltZS5zdWJ0cmFjdChzdGFydFRpbWUpLFxuICAgICAgICBhY2Nlc3NUb2tlbiA9IGdldEFjY2Vzc1Rva2VuKHByb3ZpZGVySWQsIHRydWUpO1xuICAgIGlmIChhY2Nlc3NUb2tlbikge1xuICAgICAgICBsb2dpbk9iai5hY2Nlc3N0b2tlbl9yZXRyaWV2ZWQgPSB0cnVlO1xuICAgICAgICBzZXRBY2Nlc3NUb2tlbihwcm92aWRlcklkLCBhY2Nlc3NUb2tlbik7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHByb3ZpZGVySWQgKyBhY2Nlc3NUb2tlblN1ZmZpeCk7XG4gICAgICAgIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2socHJvdmlkZXJJZCk7XG4gICAgICAgIGlmIChvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIG9uU3VjY2VzcygpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmICh0aW1lRGlmZi5taW51dGVzKCkgPiAxICYmIG9uU3VjY2VzcyAmJiAhbG9naW5PYmouYWNjZXNzdG9rZW5fcmV0cmlldmVkKSB7XG4gICAgICAgIG9uU3VjY2VzcygnZXJyb3InKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNoZWNrQWNjZXNzVG9rZW5JbldpbmRvdyhwcm92aWRlcklkLCBvblN1Y2Nlc3MsIG9uRXJyb3IsIHN0YXJ0VGltZSwgbG9naW5PYmosIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2spO1xuICAgICAgICB9LCAzMDAwKTtcbiAgICB9XG59XG5cbi8qKlxuICogY2hlY2tzIGZvciB0aGUgd2luZG93IGV4aXN0ZW5jZSBpLmUgaWYgdGhlIHdpbmRvdyBpcyBtYW51YWxseSBjbG9zZWQgYnkgdGhlIHVzZXIgb3IgYW55IHN1Y2hcbiAqIEBwYXJhbSBvQXV0aFdpbmRvd1xuICogQHBhcmFtIHByb3ZpZGVyXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqL1xuZnVuY3Rpb24gY2hlY2tGb3JXaW5kb3dFeGlzdGVuY2Uob0F1dGhXaW5kb3csIHByb3ZpZGVyLCBjYWxsYmFjaywgcHJvdmlkZXJJbmZvPykge1xuICAgIGlmIChvQXV0aFdpbmRvdyAmJiBsaXN0ZW5lcnNbcHJvdmlkZXJdKSB7XG4gICAgICAgIGlmICghb0F1dGhXaW5kb3cuY2xvc2VkKSB7IC8vIC5jbG9zZWQgaXMgc3VwcG9ydGVkIGFjcm9zcyBtYWpvciBicm93c2VyIHZlbmRvcnMgaG93ZXZlciBmb3IgSUUgdGhlIHVzZXIgaGFzIHRvIGVuYWJsZSBwcm90ZWN0ZWQgbW9kZSBmcm9tIHNlY3VyaXR5IG9wdGlvbnNcbiAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2tGb3JXaW5kb3dFeGlzdGVuY2UuYmluZCh1bmRlZmluZWQsIG9BdXRoV2luZG93LCBwcm92aWRlciwgY2FsbGJhY2ssIHByb3ZpZGVySW5mbyksIDMwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFpc1Bhc3NlZEZsb3cocHJvdmlkZXJJbmZvLCBwa2NlSWRlbnRpZmllcikpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyc1twcm92aWRlcl0pO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBsaXN0ZW5lcnNbcHJvdmlkZXJdO1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaygnZXJyb3InKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIHRoaXMgZnVuY3Rpb25zIGhhbmRsZXMgdGhlIGxvZ2ljIHJlbGF0ZWQgdG8gdGhlIHdpbmRvdyBvcGVyYXRpb25zIGluIElFXG4gKiBAcGFyYW0gdXJsXG4gKiBAcGFyYW0gcHJvdmlkZXJJZFxuICogQHBhcmFtIG9uU3VjY2Vzc1xuICogQHBhcmFtIG9uRXJyb3JcbiAqL1xuZnVuY3Rpb24gaGFuZGxlTG9naW5Gb3JJRSh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmo/LCByZXF1ZXN0U291cmNlVHlwZT8sIGN1c3RvbVVyaVNjaGVtZT8sIGRlcGxveWVkVVJMPykge1xuICAgIGNvbnN0IGxvZ2luT2JqID0ge1xuICAgICAgICAnYWNjZXNzdG9rZW5fcmV0cmlldmVkJzogZmFsc2VcbiAgICB9O1xuICAgIGlmIChpc1Bhc3NlZEZsb3coc2VjdXJpdHlPYmosIGltcGxpY2l0SWRlbnRpZmllcikpIHtcbiAgICAgICAgdXJsID0gY29uc3RydWN0VVJMRm9ySW1wbGljaXRPclBLQ0UocHJvdmlkZXJJZCwgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBudWxsLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMKTtcbiAgICB9XG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJywgbmV3V2luZG93UHJvcHMpO1xuICAgIGNoZWNrQWNjZXNzVG9rZW5JbldpbmRvdyhwcm92aWRlcklkLCBvblN1Y2Nlc3MsIG9uRXJyb3IsIG1vbWVudC5kdXJhdGlvbihtb21lbnQoKS5mb3JtYXQoJ0hIOm1tJyksICdISDptbScpLCBsb2dpbk9iaiwgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjayk7XG59XG5cbi8qKlxuICogdGhpcyBmdW5jdGlvbnMgcmV0dXJucyBpZiB0aGUgY3VycmVudCBvQXV0aCBGbG93IG1hdGNoZXMgdGhlIHBhc3NlZCBmbG93IG9yIG5vdFxuICogQHBhcmFtIHByb3ZpZGVySW5mb1xuICovXG5mdW5jdGlvbiBpc1Bhc3NlZEZsb3cocHJvdmlkZXJJbmZvLCBmbG93KSB7XG4gICAgbGV0IG9BdXRoRmxvdyA9IGdldChwcm92aWRlckluZm8sICdvYXV0aDJGbG93Jyk7XG4gICAgb0F1dGhGbG93ID0gb0F1dGhGbG93ID8gb0F1dGhGbG93LnRvTG93ZXJDYXNlKCkgOiBvQXV0aEZsb3c7XG4gICAgaWYgKGZsb3cgPT09IHBrY2VJZGVudGlmaWVyKSB7XG4gICAgICAgIGlmIChnZXQocHJvdmlkZXJJbmZvLCAnb0F1dGgyUGtjZS5lbmFibGVkJykgPT09IHRydWUpIHtcbiAgICAgICAgICAgIG9BdXRoRmxvdyA9IHBrY2VJZGVudGlmaWVyO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvQXV0aEZsb3cgPT09IGZsb3c7XG59XG5cbi8qKlxuICogdGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBsaXN0ZW5lciBvbiB0aGUgd2luZG93IGFuZCBhc3NpZ25zIHRoZSBsaXN0ZW5lclxuICogQHBhcmFtIHByb3ZpZGVyXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqL1xuZnVuY3Rpb24gb25BdXRoV2luZG93T3Blbihwcm92aWRlciwgY2FsbGJhY2ssIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIGh0dHA/LCBzZWN1cml0eU9iaj8pIHtcbiAgICBsaXN0ZW5lcnNbcHJvdmlkZXJdID0gY2hlY2tBdXRoZW50aWNhdGlvblN0YXR1cy5iaW5kKHVuZGVmaW5lZCwgcHJvdmlkZXIsIGNhbGxiYWNrLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBudWxsLCBodHRwLCBzZWN1cml0eU9iaik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lcnNbcHJvdmlkZXJdLCBmYWxzZSk7XG59XG5cbi8vIEdlbmVyYXRlIGEgc2VjdXJlIHJhbmRvbSBzdHJpbmcgdXNpbmcgdGhlIGJyb3dzZXIgY3J5cHRvIGZ1bmN0aW9uc1xuZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21TdHJpbmcoKSB7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgVWludDMyQXJyYXkoMjgpO1xuICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShhcnJheSwgZGVjID0+ICgnMCcgKyBkZWMudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTIpKS5qb2luKCcnKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBBcnJheUJ1ZmZlclxuZnVuY3Rpb24gZ2V0RW5jcnlwdGVkQ29kZShwbGFpbikge1xuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUocGxhaW4pO1xuICAgIGNvbnN0IHNoYU9iaiA9IG5ldyBqc1NIQShcIlNIQS0yNTZcIiwgXCJVSU5UOEFSUkFZXCIsIHsgZW5jb2Rpbmc6IFwiVVRGOFwiIH0pO1xuICAgIHNoYU9iai51cGRhdGUoZGF0YSk7XG4gICAgcmV0dXJuIHNoYU9iai5nZXRIYXNoKFwiQVJSQVlCVUZGRVJcIik7XG59XG5cbi8vIEJhc2U2NC11cmxlbmNvZGVzIHRoZSBpbnB1dCBzdHJpbmdcbmZ1bmN0aW9uIGJhc2U2NHVybGVuY29kZShzdHIpIHtcbiAgICAvLyBDb252ZXJ0IHRoZSBBcnJheUJ1ZmZlciB0byBzdHJpbmcgdXNpbmcgVWludDggYXJyYXkgdG8gY29udmVydCB0byB3aGF0IGJ0b2EgYWNjZXB0cy5cbiAgICAvLyBidG9hIGFjY2VwdHMgY2hhcnMgb25seSB3aXRoaW4gYXNjaWkgMC0yNTUgYW5kIGJhc2U2NCBlbmNvZGVzIHRoZW0uXG4gICAgLy8gVGhlbiBjb252ZXJ0IHRoZSBiYXNlNjQgZW5jb2RlZCB0byBiYXNlNjR1cmwgZW5jb2RlZFxuICAgIC8vICAgKHJlcGxhY2UgKyB3aXRoIC0sIHJlcGxhY2UgLyB3aXRoIF8sIHRyaW0gdHJhaWxpbmcgPSlcbiAgICByZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIG5ldyBVaW50OEFycmF5KHN0cikpKVxuICAgICAgICAucmVwbGFjZSgvXFwrL2csICctJykucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvPSskLywgJycpO1xufVxuXG4vKipcbiAqIHRoaXMgZnVuY3Rpb24gaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCBlbmFibGVzIHRoZSBsaXN0ZW5lciBhbmQgY2hlY2tzIGZvciB0aGUgd2luZG93IGV4aXN0ZW5jZVxuICogQHBhcmFtIHByb3ZpZGVySWRcbiAqIEBwYXJhbSBvblN1Y2Nlc3NcbiAqIEBwYXJhbSB1cmxcbiAqL1xuZnVuY3Rpb24gcG9zdEdldEF1dGhvcml6YXRpb25VUkwodXJsLCBwcm92aWRlcklkLCBvblN1Y2Nlc3MsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIHNlY3VyaXR5T2JqPywgcmVxdWVzdFNvdXJjZVR5cGU/LCBjdXN0b21VcmlTY2hlbWU/LCBkZXBsb3llZFVSTD8sIGh0dHA/KSB7XG4gICAgaWYgKGlzUGFzc2VkRmxvdyhzZWN1cml0eU9iaiwgaW1wbGljaXRJZGVudGlmaWVyKSkge1xuICAgICAgICB1cmwgPSBjb25zdHJ1Y3RVUkxGb3JJbXBsaWNpdE9yUEtDRShwcm92aWRlcklkLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIG51bGwsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwpO1xuICAgICAgICBzdGFydG9BdXRoRmxvdyh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2VzcywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMLCBodHRwKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFzc2VkRmxvdyhzZWN1cml0eU9iaiwgcGtjZUlkZW50aWZpZXIpKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhbmQgc3RvcmUgYSBuZXcgUEtDRSBjb2RlX3ZlcmlmaWVyICh0aGUgcGxhaW50ZXh0IHJhbmRvbSBzZWNyZXQpXG4gICAgICAgIGNvZGVfdmVyaWZpZXIgPSBnZW5lcmF0ZVJhbmRvbVN0cmluZygpO1xuICAgICAgICBsZXQgY29kZV9jaGFsbGVuZ2U7XG4gICAgICAgIGlmIChnZXQoc2VjdXJpdHlPYmosICdvQXV0aDJQa2NlLmNoYWxsZW5nZU1ldGhvZCcpID09PSAncGxhaW4nKSB7XG4gICAgICAgICAgICBjb2RlX2NoYWxsZW5nZSA9IGNvZGVfdmVyaWZpZXI7XG4gICAgICAgICAgICB1cmwgPSBjb25zdHJ1Y3RVUkxGb3JJbXBsaWNpdE9yUEtDRShwcm92aWRlcklkLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGNvZGVfY2hhbGxlbmdlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMKTtcbiAgICAgICAgICAgIHN0YXJ0b0F1dGhGbG93KHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwsIGh0dHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkQ29kZSA9IGdldEVuY3J5cHRlZENvZGUoY29kZV92ZXJpZmllcik7XG4gICAgICAgICAgICBjb2RlX2NoYWxsZW5nZSA9IGJhc2U2NHVybGVuY29kZShlbmNyeXB0ZWRDb2RlKTtcbiAgICAgICAgICAgIC8vY29kZV9jaGFsbGVuZ2UgPSBlbmNyeXB0ZWRDb2RlO1xuICAgICAgICAgICAgdXJsID0gY29uc3RydWN0VVJMRm9ySW1wbGljaXRPclBLQ0UocHJvdmlkZXJJZCwgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjb2RlX2NoYWxsZW5nZSwgY3VzdG9tVXJpU2NoZW1lLCBkZXBsb3llZFVSTCk7XG4gICAgICAgICAgICBzdGFydG9BdXRoRmxvdyh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2VzcywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMLCBodHRwKTtcblxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRvQXV0aEZsb3codXJsLCBwcm92aWRlcklkLCBvblN1Y2Nlc3MsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIHNlY3VyaXR5T2JqLCByZXF1ZXN0U291cmNlVHlwZSwgY3VzdG9tVXJpU2NoZW1lLCBkZXBsb3llZFVSTCwgaHR0cCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBzdGFydG9BdXRoRmxvdyh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2VzcywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmo/LCByZXF1ZXN0U291cmNlVHlwZT8sIGN1c3RvbVVyaVNjaGVtZT8sIGRlcGxveWVkVVJMPywgaHR0cD8pIHtcbiAgICBsZXQgb0F1dGhXaW5kb3c7XG4gICAgaWYgKGhhc0NvcmRvdmEoKSkge1xuICAgICAgICB3aW5kb3cub3Blbih1cmwsICdfc3lzdGVtJyk7XG4gICAgICAgIHdpbmRvd1snT0F1dGhJbk1vYmlsZSddKHByb3ZpZGVySWQpLnRoZW4oYWNjZXNzVG9rZW4gPT4ge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJvdmlkZXJJZCArIGFjY2Vzc1Rva2VuU3VmZml4O1xuICAgICAgICAgICAgaWYgKGFjY2Vzc1Rva2VuKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBhY2Nlc3NUb2tlbik7XG4gICAgICAgICAgICAgICAgY2hlY2tBdXRoZW50aWNhdGlvblN0YXR1cyhwcm92aWRlcklkLCBvblN1Y2Nlc3MsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIG51bGwsIGh0dHAsIHNlY3VyaXR5T2JqKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb25TdWNjZXNzKCdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvQXV0aFdpbmRvdyA9IHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycsIG5ld1dpbmRvd1Byb3BzKTtcbiAgICAgICAgb25BdXRoV2luZG93T3Blbihwcm92aWRlcklkLCBvblN1Y2Nlc3MsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIGh0dHAsIHNlY3VyaXR5T2JqKTtcbiAgICAgICAgY2hlY2tGb3JXaW5kb3dFeGlzdGVuY2Uob0F1dGhXaW5kb3csIHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgc2VjdXJpdHlPYmopO1xuICAgIH1cbn1cblxuLyoqXG4gKiBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgdGhlIHVybCBmb3IgaW1wbGljaXQgZmxvdy5cbiAqIEBwYXJhbSBwcm92aWRlcklkIHByb3ZpZGVyIGlkIGZvciB3aGljaCB0aGUgdXJsIGhhcyB0byBiZSBzZXRcbiAqIEBwYXJhbSBwcm92aWRlckluZm8gcHJvdmlkZXIgb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGRldGFpbHMgc3VjaCBhcyBzY29wZSwgY2xpZW50IGlkIGV0Y1xuICogQHBhcmFtIHJlcXVlc3RTb3VyY2VUeXBlIHJlcXVlc3Rpbmcgc291cmNlIGlzIHdlYiBvciBtb2JpbGVcbiAqIEByZXR1cm5zIHVybCBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gY29uc3RydWN0VVJMRm9ySW1wbGljaXRPclBLQ0UocHJvdmlkZXJJZCwgcHJvdmlkZXJJbmZvLCByZXF1ZXN0U291cmNlVHlwZSwgY29kZV9jaGFsbGVuZ2UsIGN1c3RvbVVyaVNjaGVtZT8sIGRlcGxveWVkVVJMPykge1xuICAgIHJlZGlyZWN0VXJpID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJy8jLycpWzBdICsgJy9vQXV0aENhbGxiYWNrLmh0bWwnO1xuICAgIGNvbnN0IGNsaWVudElkID0gcHJvdmlkZXJJbmZvLmNsaWVudElkO1xuICAgIGNvbnN0IHNjb3BlcyA9IHByb3ZpZGVySW5mby5zY29wZXMubWFwKGZ1bmN0aW9uKHNjb3BlKSB7IHJldHVybiBzY29wZS5uYW1lIH0pLmpvaW4oJyAnKTtcbiAgICBsZXQgc3RhdGU7XG4gICAgaWYgKGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS5pc1Rlc3RSdW50aW1lID09PSB0cnVlKSB7XG4gICAgICAgIHJlZGlyZWN0VXJpID0gbG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL3N0dWRpby9vQXV0aENhbGxiYWNrLmh0bWwnO1xuICAgIH1cbiAgICBpZiAocmVxdWVzdFNvdXJjZVR5cGUgPT09ICdNT0JJTEUnKSB7XG4gICAgICAgIHJlZGlyZWN0VXJpID0gZGVwbG95ZWRVUkwgKyAnb0F1dGhDYWxsYmFjay5odG1sJztcbiAgICB9XG4gICAgY29uc3QgZmxvdyA9IGlzUGFzc2VkRmxvdyhwcm92aWRlckluZm8sIGltcGxpY2l0SWRlbnRpZmllcikgPyBpbXBsaWNpdElkZW50aWZpZXIgOiBwa2NlSWRlbnRpZmllcjtcbiAgICBzdGF0ZSA9IHtwcm92aWRlcklkOiBwcm92aWRlcklkLCBzdWZmaXg6IGFjY2Vzc1Rva2VuU3VmZml4LCByZXF1ZXN0U291cmNlVHlwZTogcmVxdWVzdFNvdXJjZVR5cGUsIGZsb3c6IGZsb3csIHNjaGVtZTogY3VzdG9tVXJpU2NoZW1lfTtcbiAgICBjb25zdCBhdXRoVXJsQXJyID0gcHJvdmlkZXJJbmZvLmF1dGhvcml6YXRpb25Vcmwuc3BsaXQoJz8nKTtcbiAgICBsZXQgY29ubmVjdG9yO1xuICAgIGlmIChhdXRoVXJsQXJyLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAvL3F1ZXJ5IHBhcmFtcyBkb24ndCBleGlzdFxuICAgICAgICBjb25uZWN0b3IgPSAnPyc7XG4gICAgfSBlbHNlIGlmIChhdXRoVXJsQXJyLmxlbmd0aCA+IDEgJiYgYXV0aFVybEFyclsxXSAhPT0gJycpIHtcbiAgICAgICAgLy9xdWVyeSBwYXJhbXMgZXhpc3QuIEFwcGVuZCAmIGluc3RlYWQgb2YgPy5cbiAgICAgICAgY29ubmVjdG9yID0gJyYnO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vbm90aGluZyBleGlzdHMgYWZ0ZXIgJz8nLiBjbGllbnRfaWQgY2FuIGJlIGRpcmVjdGx5IGFwcGVuZGVkO1xuICAgICAgICBjb25uZWN0b3IgPSAnJztcbiAgICB9XG4gICAgY29uc3QgY29tbW9uVXJsID0gcHJvdmlkZXJJbmZvLmF1dGhvcml6YXRpb25VcmwgKyBjb25uZWN0b3IgKyAnY2xpZW50X2lkPScgKyBjbGllbnRJZCArICcmcmVkaXJlY3RfdXJpPScgKyByZWRpcmVjdFVyaSArICcmc3RhdGU9JyArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzdGF0ZSkpICsgJyZzY29wZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHNjb3Blcyk7XG4gICAgbGV0IHVybDtcbiAgICBpZiAoZmxvdyA9PT0gaW1wbGljaXRJZGVudGlmaWVyKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlVHlwZSA9IHByb3ZpZGVySW5mby5yZXNwb25zZVR5cGUgPyBwcm92aWRlckluZm8ucmVzcG9uc2VUeXBlIDogJ3Rva2VuJztcbiAgICAgICAgdXJsID0gY29tbW9uVXJsICsgJyZyZXNwb25zZV90eXBlPScgKyByZXNwb25zZVR5cGU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gY29tbW9uVXJsICsgJyZyZXNwb25zZV90eXBlPWNvZGUmY29kZV9jaGFsbGVuZ2U9JyArIGNvZGVfY2hhbGxlbmdlICsgJyZjb2RlX2NoYWxsZW5nZV9tZXRob2Q9JyArIGdldChwcm92aWRlckluZm8sICdvQXV0aDJQa2NlLmNoYWxsZW5nZU1ldGhvZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdXJsO1xufVxuXG4vKipcbiAqIGZ1bmN0aW9uIHRvIGdldCB0aGUgYXV0aG9yaXphdGlvbiB1cmxcbiAqIEBwYXJhbSBwYXJhbXMgcHJvdmlkZXIgaWQgZm9yIHdoaWNoIHRoZSBhdXRoIHVybCBoYXMgdG8gYmUgZmV0Y2hlZFxuICogQHBhcmFtIHN1Y2Nlc3NDYWxsYmFjayBjYWxsYmFjayB0byBiZSBpbnZva2VkIHVwb24gc3VjY2Vzc2Z1bCBmZXRjaCBvZiB0aGUgcHJvdmlkZXJzXG4gKiBAcGFyYW0gZmFpbHVyZUNhbGxiYWNrIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgdXBvbiBlcnJvclxuICogQHJldHVybnMgeyp9XG4gKi9cbmZ1bmN0aW9uIGdldEF1dGhvcml6YXRpb25VcmwocGFyYW1zLCBodHRwKSB7XG4gICAgY29uc3QgYWN0aW9uID0gJ2dldEF1dGhvcml6YXRpb25VcmwnLFxuICAgICAgICBzZXJ2aWNlU2V0dGluZ3MgPSBwYXJzZUNvbmZpZyh7XG4gICAgICAgICAgICB0YXJnZXQ6ICdvYXV0aENvbmZpZ3VyYXRpb24nLFxuICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgICAgICB1cmxQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBwcm9qZWN0SWQ6IF9XTV9BUFBfUFJPSkVDVC5pZCxcbiAgICAgICAgICAgICAgICBwcm92aWRlcklkOiBwYXJhbXMucHJvdmlkZXJJZFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICdyZXF1ZXN0U291cmNlVHlwZSc6IHBhcmFtcy5yZXF1ZXN0U291cmNlVHlwZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICByZXR1cm4gaHR0cC5zZW5kKHNlcnZpY2VTZXR0aW5ncyk7XG59XG5cbi8qKlxuICogZnVuY3Rpb24gdHJpZ2dlciB0aGUgYWRkUHJvdmlkZXJDb25maWdDYWxsQmFjayBhZnRlciBnZXR0aW5nIHRoZSBhdXRob3JpemF0aW9uIHVybFxuICovXG5mdW5jdGlvbiB0cmlnZ2VyUHJvdmlkZXJDb25maWdDYWxsQmFjayh1cmwsIHByb3ZpZGVySWQsIG9uU3VjY2Vzcywgb25FcnJvciwgaHR0cCwgYWRkUHJvdmlkZXJDb25maWdDYWxsQmFjaywgcmVtb3ZlUHJvdmlkZXJDb25maWdDYWxsQmFjaywgc2VjdXJpdHlPYmosIHJlcXVlc3RTb3VyY2VUeXBlLCBjdXN0b21VcmlTY2hlbWUsIGRlcGxveWVkVVJMKSB7XG4gICAgY29uc3QgdXJsQm9keSA9IGlzUGFzc2VkRmxvdyhzZWN1cml0eU9iaiwgaW1wbGljaXRJZGVudGlmaWVyKSB8fCBpc1Bhc3NlZEZsb3coc2VjdXJpdHlPYmosIHBrY2VJZGVudGlmaWVyKSA/IHVybCA6IHVybC5ib2R5O1xuICAgIGFkZFByb3ZpZGVyQ29uZmlnQ2FsbEJhY2soe1xuICAgICAgICBuYW1lOiBwcm92aWRlcklkLFxuICAgICAgICB1cmw6IHVybEJvZHksXG4gICAgICAgIGludm9rZTogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzSUUoKSkgeyAvLyBoYW5kbGluZyBmb3IgSUVcbiAgICAgICAgICAgICAgICBoYW5kbGVMb2dpbkZvcklFKHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCBvbkVycm9yLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwb3N0R2V0QXV0aG9yaXphdGlvblVSTCh1cmxCb2R5LCBwcm92aWRlcklkLCBvblN1Y2Nlc3MsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIHNlY3VyaXR5T2JqLCByZXF1ZXN0U291cmNlVHlwZSwgY3VzdG9tVXJpU2NoZW1lLCBkZXBsb3llZFVSTCwgaHR0cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiB0aGlzIGZ1bmN0aW9uIHJldHJpZXZlcyB0aGUgYWNjZXNzVG9rZW4gYmFzZWQgb24gdGhlIHJ1bi9zdHVkaW9tb2RlXG4gKiBAcGFyYW0gcHJvdmlkZXJcbiAqIEByZXR1cm5zIHsqfVxuICovXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW4gPSAocHJvdmlkZXIsIGNoZWNrTG9jYWxTdG9yYWdlKSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW5LZXkgPSBnZXRBY2Nlc3NUb2tlblBsYWNlaG9sZGVyKHByb3ZpZGVyKTtcbiAgICBpZiAoY2hlY2tMb2NhbFN0b3JhZ2UpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHByb3ZpZGVyICsgYWNjZXNzVG9rZW5TdWZmaXgpO1xuICAgIH1cbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYWNjZXNzVG9rZW5LZXkpO1xufTtcblxuXG4vKipcbiAqIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwZXJmb3JtIHRoZSBhdXRob3JpemF0aW9uIGJ5IG9wZW5pbmcgdGhlIHdpbmRvdyBhbmQgaGF2aW5nIGFjdGl2ZSBsaXN0ZW5lcnNcbiAqIEBwYXJhbSB1cmxcbiAqIEBwYXJhbSBwcm92aWRlcklkXG4gKiBAcGFyYW0gb25TdWNjZXNzXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGNvbnN0IHBlcmZvcm1BdXRob3JpemF0aW9uID0gKHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCBvbkVycm9yLCBodHRwLCBhZGRQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaj8sIGN1c3RvbVVyaVNjaGVtZT8sIGRlcGxveWVkVVJMPykgPT4ge1xuICAgIGxldCByZXF1ZXN0U291cmNlVHlwZSA9ICdXRUInO1xuICAgIGlmICh1cmwpIHtcbiAgICAgICAgaWYgKGlzSUUoKSkgeyAvLyBoYW5kbGluZyBmb3IgSUVcbiAgICAgICAgICAgIGhhbmRsZUxvZ2luRm9ySUUodXJsLCBwcm92aWRlcklkLCBvblN1Y2Nlc3MsIG9uRXJyb3IsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zdEdldEF1dGhvcml6YXRpb25VUkwodXJsLCBwcm92aWRlcklkLCBvblN1Y2Nlc3MsIHJlbW92ZVByb3ZpZGVyQ29uZmlnQ2FsbEJhY2ssIHNlY3VyaXR5T2JqLCByZXF1ZXN0U291cmNlVHlwZSwgaHR0cCk7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaGFzQ29yZG92YSgpKSB7XG4gICAgICAgICAgICByZXF1ZXN0U291cmNlVHlwZSA9ICdNT0JJTEUnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Bhc3NlZEZsb3coc2VjdXJpdHlPYmosIGltcGxpY2l0SWRlbnRpZmllcikgfHwgaXNQYXNzZWRGbG93KHNlY3VyaXR5T2JqLCBwa2NlSWRlbnRpZmllcikpIHtcbiAgICAgICAgICAgIHRyaWdnZXJQcm92aWRlckNvbmZpZ0NhbGxCYWNrKHVybCwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCBvbkVycm9yLCBodHRwLCBhZGRQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldEF1dGhvcml6YXRpb25Vcmwoe1xuICAgICAgICAgICAgICAgICdwcm92aWRlcklkJzogcHJvdmlkZXJJZCxcbiAgICAgICAgICAgICAgICAncmVxdWVzdFNvdXJjZVR5cGUnOiByZXF1ZXN0U291cmNlVHlwZVxuICAgICAgICAgICAgfSwgaHR0cCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyUHJvdmlkZXJDb25maWdDYWxsQmFjayhyZXNwb25zZSwgcHJvdmlkZXJJZCwgb25TdWNjZXNzLCBvbkVycm9yLCBodHRwLCBhZGRQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCByZW1vdmVQcm92aWRlckNvbmZpZ0NhbGxCYWNrLCBzZWN1cml0eU9iaiwgcmVxdWVzdFNvdXJjZVR5cGUsIGN1c3RvbVVyaVNjaGVtZSwgZGVwbG95ZWRVUkwpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
|
|
@@ -3,6 +3,7 @@ import { Injectable, NgModule } from '@angular/core';
|
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import * as i1 from '@wm/core';
|
|
5
5
|
import { _WM_APP_PROJECT, hasCordova, getWmProjectProperties, isIE } from '@wm/core';
|
|
6
|
+
import { isUndefined, get, find, remove } from 'lodash-es';
|
|
6
7
|
|
|
7
8
|
const accessTokenSuffix = '.access_token', pkceIdentifier = 'pkce', implicitIdentifier = 'implicit';
|
|
8
9
|
let code_verifier, redirectUri;
|
|
@@ -29,7 +30,7 @@ const parseConfig = (serviceParams) => {
|
|
|
29
30
|
for (param in urlParams) {
|
|
30
31
|
if (urlParams.hasOwnProperty(param)) {
|
|
31
32
|
val = urlParams[param];
|
|
32
|
-
if (!
|
|
33
|
+
if (!isUndefined(val) && val !== null) {
|
|
33
34
|
config.url = config.url.replace(new RegExp(':' + param, 'g'), val);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
@@ -40,7 +41,7 @@ const parseConfig = (serviceParams) => {
|
|
|
40
41
|
config.params = serviceParams.params;
|
|
41
42
|
}
|
|
42
43
|
/* check for data */
|
|
43
|
-
if (!
|
|
44
|
+
if (!isUndefined(serviceParams.data)) {
|
|
44
45
|
config.data = serviceParams.data;
|
|
45
46
|
}
|
|
46
47
|
/* check for data parameters, written to support old service calls (.json calls) */
|
|
@@ -216,10 +217,10 @@ function handleLoginForIE(url, providerId, onSuccess, onError, removeProviderCon
|
|
|
216
217
|
* @param providerInfo
|
|
217
218
|
*/
|
|
218
219
|
function isPassedFlow(providerInfo, flow) {
|
|
219
|
-
let oAuthFlow =
|
|
220
|
+
let oAuthFlow = get(providerInfo, 'oauth2Flow');
|
|
220
221
|
oAuthFlow = oAuthFlow ? oAuthFlow.toLowerCase() : oAuthFlow;
|
|
221
222
|
if (flow === pkceIdentifier) {
|
|
222
|
-
if (
|
|
223
|
+
if (get(providerInfo, 'oAuth2Pkce.enabled') === true) {
|
|
223
224
|
oAuthFlow = pkceIdentifier;
|
|
224
225
|
}
|
|
225
226
|
}
|
|
@@ -272,7 +273,7 @@ function postGetAuthorizationURL(url, providerId, onSuccess, removeProviderConfi
|
|
|
272
273
|
// Create and store a new PKCE code_verifier (the plaintext random secret)
|
|
273
274
|
code_verifier = generateRandomString();
|
|
274
275
|
let code_challenge;
|
|
275
|
-
if (
|
|
276
|
+
if (get(securityObj, 'oAuth2Pkce.challengeMethod') === 'plain') {
|
|
276
277
|
code_challenge = code_verifier;
|
|
277
278
|
url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, code_challenge, customUriScheme, deployedURL);
|
|
278
279
|
startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);
|
|
@@ -351,7 +352,7 @@ function constructURLForImplicitOrPKCE(providerId, providerInfo, requestSourceTy
|
|
|
351
352
|
url = commonUrl + '&response_type=' + responseType;
|
|
352
353
|
}
|
|
353
354
|
else {
|
|
354
|
-
url = commonUrl + '&response_type=code&code_challenge=' + code_challenge + '&code_challenge_method=' +
|
|
355
|
+
url = commonUrl + '&response_type=code&code_challenge=' + code_challenge + '&code_challenge_method=' + get(providerInfo, 'oAuth2Pkce.challengeMethod');
|
|
355
356
|
}
|
|
356
357
|
return url;
|
|
357
358
|
}
|
|
@@ -451,13 +452,13 @@ class OAuthService {
|
|
|
451
452
|
return this.providers.asObservable();
|
|
452
453
|
}
|
|
453
454
|
addProviderConfig(provider) {
|
|
454
|
-
if (!(
|
|
455
|
+
if (!(find(this.providersConfig, { 'name': provider.name }))) {
|
|
455
456
|
this.providersConfig.push(provider);
|
|
456
457
|
}
|
|
457
458
|
this.providers.next(this.providersConfig);
|
|
458
459
|
}
|
|
459
460
|
removeProviderConfig(providerId) {
|
|
460
|
-
|
|
461
|
+
remove(this.providersConfig, provider => provider.name === providerId);
|
|
461
462
|
this.providers.next(this.providersConfig);
|
|
462
463
|
}
|
|
463
464
|
perfromOAuthorization(url, providerId, onSuccess, onError, securityObj, customUriScheme, deployedURL) {
|
|
@@ -472,9 +473,9 @@ class OAuthService {
|
|
|
472
473
|
static { this.ɵfac = function OAuthService_Factory(t) { return new (t || OAuthService)(i0.ɵɵinject(i1.AbstractHttpService)); }; }
|
|
473
474
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: OAuthService, factory: OAuthService.ɵfac }); }
|
|
474
475
|
}
|
|
475
|
-
(
|
|
476
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OAuthService, [{
|
|
476
477
|
type: Injectable
|
|
477
|
-
}],
|
|
478
|
+
}], () => [{ type: i1.AbstractHttpService }], null); })();
|
|
478
479
|
|
|
479
480
|
class OAuthModule {
|
|
480
481
|
static forRoot() {
|
|
@@ -487,7 +488,7 @@ class OAuthModule {
|
|
|
487
488
|
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: OAuthModule }); }
|
|
488
489
|
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({}); }
|
|
489
490
|
}
|
|
490
|
-
(
|
|
491
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OAuthModule, [{
|
|
491
492
|
type: NgModule,
|
|
492
493
|
args: [{}]
|
|
493
494
|
}], null, null); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../projects/oAuth/src/oAuth.utils.ts","../../../projects/oAuth/src/oAuth.service.ts","../../../projects/oAuth/src/oAuth.module.ts","../../../projects/oAuth/src/index.ts"],"sourcesContent":["import { _WM_APP_PROJECT, hasCordova, isIE, getWmProjectProperties } from '@wm/core';\nimport {trigger} from \"@angular/animations\";\n\ndeclare const moment, _, jsSHA;\n\nconst accessTokenSuffix = '.access_token', pkceIdentifier = 'pkce', implicitIdentifier = 'implicit';\n\nlet code_verifier, redirectUri;\n\nexport const parseConfig = (serviceParams: any): any => {\n\n let val, param, config;\n const urlParams = serviceParams.urlParams;\n\n config = {\n url: 'services/oauth2/:providerId/authorizationUrl',\n method: 'GET'\n };\n\n /*To handle dynamic urls, append the serviceParams.config.url with the static url(i.e., config.url)*/\n if (serviceParams.config) {\n config.url = (serviceParams.config.url || '') + config.url;\n config.method = serviceParams.config.method || config.method;\n config.headers = config.headers || {};\n\n // TODO[Shubham] - change to for - of\n for (const key in serviceParams.config.headers) {\n val = serviceParams.config.headers[key];\n config.headers[key] = val;\n }\n }\n /* check for url parameters to replace the url */\n if (urlParams) {\n for (param in urlParams) {\n if (urlParams.hasOwnProperty(param)) {\n val = urlParams[param];\n if (!_.isUndefined(val) && val !== null) {\n config.url = config.url.replace(new RegExp(':' + param, 'g'), val);\n }\n }\n }\n }\n\n /* check for data */\n if (serviceParams.params) {\n config.params = serviceParams.params;\n }\n /* check for data */\n if (!_.isUndefined(serviceParams.data)) {\n config.data = serviceParams.data;\n }\n /* check for data parameters, written to support old service calls (.json calls) */\n if (serviceParams.dataParams) {\n config.data.params = serviceParams.dataParams;\n }\n /* check for headers */\n if (serviceParams.headers) {\n config.headers = serviceParams.headers;\n }\n\n /* set extra config flags */\n config.byPassResult = serviceParams.byPassResult;\n config.isDirectCall = serviceParams.isDirectCall;\n config.isExtURL = serviceParams.isExtURL;\n config.preventMultiple = serviceParams.preventMultiple;\n config.responseType = serviceParams.responseType;\n\n return config;\n};\n\nconst listeners = {},\n ACCESSTOKEN_PLACEHOLDERS = {\n 'STUDIO': 'WM_STUDIO_',\n 'RUN': 'WM_RUN_'\n },\n newWindowProps = 'width=400,height=600';\n\n/**\n * This function remove the accessToken for a provider\n * @param provider\n */\nexport const removeAccessToken = (provider) => {\n const accessTokenKey = getAccessTokenPlaceholder(provider);\n localStorage.removeItem(accessTokenKey);\n};\n\n/**\n * This function returns the accesstoken placeholder based on the studio or run mode for the project\n * @param provider\n * @returns {*}\n */\nfunction getAccessTokenPlaceholder(provider) {\n let accessTokenKey;\n accessTokenKey = ACCESSTOKEN_PLACEHOLDERS.RUN + _WM_APP_PROJECT.id + '_' + provider + accessTokenSuffix;\n return accessTokenKey;\n}\n\n/**\n * This function performs the fake local storage update, so the IE gets the latest token instead of returning the cached localStorageValue\n */\nfunction performFakeLocalStorageUpdate() {\n const dummy_key = 'dummy_key';\n localStorage.setItem(dummy_key, dummy_key);\n localStorage.removeItem(dummy_key);\n}\n\n/**\n * This function sets the accessToken\n * @param provider\n * @param accesstoken\n */\nfunction setAccessToken(provider, accesstoken) {\n const accessTokenKey = getAccessTokenPlaceholder(provider);\n localStorage.setItem(accessTokenKey, accesstoken);\n}\n\n/**\n * this is a callback function to check if the authentication is done and invokes the successCallback\n * @param providerId\n * @param successCallback\n * @param evt\n */\nfunction checkAuthenticationStatus(providerId, successCallback, removeProviderConfigCallBack, evt, http?, securityObj?) {\n const accessTokenKey = providerId + accessTokenSuffix,\n accessTokenOrCode = localStorage.getItem(accessTokenKey);\n if (evt && evt.origin !== window.location.origin) {\n return;\n }\n if (accessTokenOrCode) {\n if (isPassedFlow(securityObj, pkceIdentifier)) {\n const req = 'client_id=' + securityObj.clientId + '&code=' + accessTokenOrCode + '&grant_type=authorization_code&code_verifier=' + code_verifier + '&redirect_uri=' + redirectUri;\n http.send({\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n url: securityObj.accessTokenUrl,\n data: req\n }).then(function(response) {\n triggerAccessTokenSuccessCallback(providerId, successCallback, removeProviderConfigCallBack, accessTokenKey, response.body.access_token);\n });\n } else {\n triggerAccessTokenSuccessCallback(providerId, successCallback, removeProviderConfigCallBack, accessTokenKey, accessTokenOrCode);\n }\n }\n}\n\n/**\n * function trigger the successCallback after getting the access token\n */\nfunction triggerAccessTokenSuccessCallback(providerId, successCallback, removeProviderConfigCallBack, accessTokenKey, token) {\n removeProviderConfigCallBack(providerId);\n localStorage.removeItem(accessTokenKey);\n setAccessToken(providerId, token);\n window.removeEventListener('message', listeners[providerId]);\n setTimeout(() => {\n delete listeners[providerId];\n if (successCallback) {\n successCallback(token);\n }\n });\n}\n\n/**\n * this function keeps on checking the accesstoken in the LocalStorage and updates it accordingly\n * @param providerId\n * @param onSuccess\n * @param onError\n * @param startTime\n * @param loginObj\n */\nfunction checkAccessTokenInWindow(providerId, onSuccess, onError, startTime, loginObj, removeProviderConfigCallBack) {\n performFakeLocalStorageUpdate();\n const currentTime = moment.duration(moment().format('HH:mm'), 'HH:mm'),\n timeDiff = currentTime.subtract(startTime),\n accessToken = getAccessToken(providerId, true);\n if (accessToken) {\n loginObj.accesstoken_retrieved = true;\n setAccessToken(providerId, accessToken);\n localStorage.removeItem(providerId + accessTokenSuffix);\n removeProviderConfigCallBack(providerId);\n if (onSuccess) {\n onSuccess();\n }\n } else if (timeDiff.minutes() > 1 && onSuccess && !loginObj.accesstoken_retrieved) {\n onSuccess('error');\n } else {\n setTimeout(() => {\n checkAccessTokenInWindow(providerId, onSuccess, onError, startTime, loginObj, removeProviderConfigCallBack);\n }, 3000);\n }\n}\n\n/**\n * checks for the window existence i.e if the window is manually closed by the user or any such\n * @param oAuthWindow\n * @param provider\n * @param callback\n */\nfunction checkForWindowExistence(oAuthWindow, provider, callback, providerInfo?) {\n if (oAuthWindow && listeners[provider]) {\n if (!oAuthWindow.closed) { // .closed is supported across major browser vendors however for IE the user has to enable protected mode from security options\n setTimeout(checkForWindowExistence.bind(undefined, oAuthWindow, provider, callback, providerInfo), 3000);\n } else {\n if (!isPassedFlow(providerInfo, pkceIdentifier)) {\n window.removeEventListener('message', listeners[provider]);\n delete listeners[provider];\n if (callback) {\n callback('error');\n }\n }\n }\n }\n}\n/**\n * this functions handles the logic related to the window operations in IE\n * @param url\n * @param providerId\n * @param onSuccess\n * @param onError\n */\nfunction handleLoginForIE(url, providerId, onSuccess, onError, removeProviderConfigCallBack, securityObj?, requestSourceType?, customUriScheme?, deployedURL?) {\n const loginObj = {\n 'accesstoken_retrieved': false\n };\n if (isPassedFlow(securityObj, implicitIdentifier)) {\n url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, null, customUriScheme, deployedURL);\n }\n window.open(url, '_blank', newWindowProps);\n checkAccessTokenInWindow(providerId, onSuccess, onError, moment.duration(moment().format('HH:mm'), 'HH:mm'), loginObj, removeProviderConfigCallBack);\n}\n\n/**\n * this functions returns if the current oAuth Flow matches the passed flow or not\n * @param providerInfo\n */\nfunction isPassedFlow(providerInfo, flow) {\n let oAuthFlow = _.get(providerInfo, 'oauth2Flow');\n oAuthFlow = oAuthFlow ? oAuthFlow.toLowerCase() : oAuthFlow;\n if (flow === pkceIdentifier) {\n if (_.get(providerInfo, 'oAuth2Pkce.enabled') === true) {\n oAuthFlow = pkceIdentifier;\n }\n }\n return oAuthFlow === flow;\n}\n\n/**\n * this function adds the listener on the window and assigns the listener\n * @param provider\n * @param callback\n */\nfunction onAuthWindowOpen(provider, callback, removeProviderConfigCallBack, http?, securityObj?) {\n listeners[provider] = checkAuthenticationStatus.bind(undefined, provider, callback, removeProviderConfigCallBack, null, http, securityObj);\n window.addEventListener('message', listeners[provider], false);\n}\n\n// Generate a secure random string using the browser crypto functions\nfunction generateRandomString() {\n const array = new Uint32Array(28);\n window.crypto.getRandomValues(array);\n return Array.from(array, dec => ('0' + dec.toString(16)).substr(-2)).join('');\n}\n\n// Returns a promise that resolves to an ArrayBuffer\nfunction getEncryptedCode(plain) {\n const encoder = new TextEncoder();\n const data = encoder.encode(plain);\n const shaObj = new jsSHA(\"SHA-256\", \"UINT8ARRAY\", { encoding: \"UTF8\" });\n shaObj.update(data);\n return shaObj.getHash(\"ARRAYBUFFER\");\n}\n\n// Base64-urlencodes the input string\nfunction base64urlencode(str) {\n // Convert the ArrayBuffer to string using Uint8 array to convert to what btoa accepts.\n // btoa accepts chars only within ascii 0-255 and base64 encodes them.\n // Then convert the base64 encoded to base64url encoded\n // (replace + with -, replace / with _, trim trailing =)\n return btoa(String.fromCharCode.apply(null, new Uint8Array(str)))\n .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n/**\n * this function is a callback function which enables the listener and checks for the window existence\n * @param providerId\n * @param onSuccess\n * @param url\n */\nfunction postGetAuthorizationURL(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj?, requestSourceType?, customUriScheme?, deployedURL?, http?) {\n if (isPassedFlow(securityObj, implicitIdentifier)) {\n url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, null, customUriScheme, deployedURL);\n startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n } else if (isPassedFlow(securityObj, pkceIdentifier)) {\n // Create and store a new PKCE code_verifier (the plaintext random secret)\n code_verifier = generateRandomString();\n let code_challenge;\n if (_.get(securityObj, 'oAuth2Pkce.challengeMethod') === 'plain') {\n code_challenge = code_verifier;\n url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, code_challenge, customUriScheme, deployedURL);\n startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n } else {\n const encryptedCode = getEncryptedCode(code_verifier);\n code_challenge = base64urlencode(encryptedCode);\n //code_challenge = encryptedCode;\n url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, code_challenge, customUriScheme, deployedURL);\n startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n\n }\n } else {\n startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n }\n}\n\nfunction startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj?, requestSourceType?, customUriScheme?, deployedURL?, http?) {\n let oAuthWindow;\n if (hasCordova()) {\n window.open(url, '_system');\n window['OAuthInMobile'](providerId).then(accessToken => {\n const key = providerId + accessTokenSuffix;\n if (accessToken) {\n localStorage.setItem(key, accessToken);\n checkAuthenticationStatus(providerId, onSuccess, removeProviderConfigCallBack, null, http, securityObj);\n } else {\n onSuccess('error');\n }\n });\n } else {\n oAuthWindow = window.open(url, '_blank', newWindowProps);\n onAuthWindowOpen(providerId, onSuccess, removeProviderConfigCallBack, http, securityObj);\n checkForWindowExistence(oAuthWindow, providerId, onSuccess, securityObj);\n }\n}\n\n/**\n * function to construct the url for implicit flow.\n * @param providerId provider id for which the url has to be set\n * @param providerInfo provider object which contains details such as scope, client id etc\n * @param requestSourceType requesting source is web or mobile\n * @returns url string\n */\nfunction constructURLForImplicitOrPKCE(providerId, providerInfo, requestSourceType, code_challenge, customUriScheme?, deployedURL?) {\n redirectUri = window.location.href.split('/#/')[0] + '/oAuthCallback.html';\n const clientId = providerInfo.clientId;\n const scopes = providerInfo.scopes.map(function(scope) { return scope.name }).join(' ');\n let state;\n if (getWmProjectProperties().isTestRuntime === true) {\n redirectUri = location.protocol + '//' + window.location.host + '/studio/oAuthCallback.html';\n }\n if (requestSourceType === 'MOBILE') {\n redirectUri = deployedURL + 'oAuthCallback.html';\n }\n const flow = isPassedFlow(providerInfo, implicitIdentifier) ? implicitIdentifier : pkceIdentifier;\n state = {providerId: providerId, suffix: accessTokenSuffix, requestSourceType: requestSourceType, flow: flow, scheme: customUriScheme};\n const authUrlArr = providerInfo.authorizationUrl.split('?');\n let connector;\n if (authUrlArr.length === 1) {\n //query params don't exist\n connector = '?';\n } else if (authUrlArr.length > 1 && authUrlArr[1] !== '') {\n //query params exist. Append & instead of ?.\n connector = '&';\n } else {\n //nothing exists after '?'. client_id can be directly appended;\n connector = '';\n }\n const commonUrl = providerInfo.authorizationUrl + connector + 'client_id=' + clientId + '&redirect_uri=' + redirectUri + '&state=' + encodeURIComponent(JSON.stringify(state)) + '&scope=' + encodeURIComponent(scopes);\n let url;\n if (flow === implicitIdentifier) {\n const responseType = providerInfo.responseType ? providerInfo.responseType : 'token';\n url = commonUrl + '&response_type=' + responseType;\n } else {\n url = commonUrl + '&response_type=code&code_challenge=' + code_challenge + '&code_challenge_method=' + _.get(providerInfo, 'oAuth2Pkce.challengeMethod');\n }\n return url;\n}\n\n/**\n * function to get the authorization url\n * @param params provider id for which the auth url has to be fetched\n * @param successCallback callback to be invoked upon successful fetch of the providers\n * @param failureCallback callback to be invoked upon error\n * @returns {*}\n */\nfunction getAuthorizationUrl(params, http) {\n const action = 'getAuthorizationUrl',\n serviceSettings = parseConfig({\n target: 'oauthConfiguration',\n action: action,\n urlParams: {\n projectId: _WM_APP_PROJECT.id,\n providerId: params.providerId\n },\n params: {\n 'requestSourceType': params.requestSourceType\n }\n });\n return http.send(serviceSettings);\n}\n\n/**\n * function trigger the addProviderConfigCallBack after getting the authorization url\n */\nfunction triggerProviderConfigCallBack(url, providerId, onSuccess, onError, http, addProviderConfigCallBack, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL) {\n const urlBody = isPassedFlow(securityObj, implicitIdentifier) || isPassedFlow(securityObj, pkceIdentifier) ? url : url.body;\n addProviderConfigCallBack({\n name: providerId,\n url: urlBody,\n invoke: () => {\n if (isIE()) { // handling for IE\n handleLoginForIE(url, providerId, onSuccess, onError, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL);\n } else {\n postGetAuthorizationURL(urlBody, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n }\n }\n });\n}\n\n/**\n * this function retrieves the accessToken based on the run/studiomode\n * @param provider\n * @returns {*}\n */\nexport const getAccessToken = (provider, checkLocalStorage) => {\n const accessTokenKey = getAccessTokenPlaceholder(provider);\n if (checkLocalStorage) {\n return localStorage.getItem(provider + accessTokenSuffix);\n }\n return localStorage.getItem(accessTokenKey);\n};\n\n\n/**\n * this function is used to perform the authorization by opening the window and having active listeners\n * @param url\n * @param providerId\n * @param onSuccess\n * @returns {*}\n */\nexport const performAuthorization = (url, providerId, onSuccess, onError, http, addProviderConfigCallBack, removeProviderConfigCallBack, securityObj?, customUriScheme?, deployedURL?) => {\n let requestSourceType = 'WEB';\n if (url) {\n if (isIE()) { // handling for IE\n handleLoginForIE(url, providerId, onSuccess, onError, removeProviderConfigCallBack);\n } else {\n postGetAuthorizationURL(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, http);\n }\n } else {\n if (hasCordova()) {\n requestSourceType = 'MOBILE';\n }\n if (isPassedFlow(securityObj, implicitIdentifier) || isPassedFlow(securityObj, pkceIdentifier)) {\n triggerProviderConfigCallBack(url, providerId, onSuccess, onError, http, addProviderConfigCallBack, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL);\n } else {\n return getAuthorizationUrl({\n 'providerId': providerId,\n 'requestSourceType': requestSourceType\n }, http).then((response) => {\n triggerProviderConfigCallBack(response, providerId, onSuccess, onError, http, addProviderConfigCallBack, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL);\n });\n }\n }\n};\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { AbstractHttpService } from '@wm/core';\n\nimport { getAccessToken, performAuthorization, removeAccessToken } from './oAuth.utils';\n\ndeclare const _;\n\n@Injectable()\nexport class OAuthService {\n constructor(private httpService: AbstractHttpService) {}\n\n providers = new Subject();\n\n providersConfig = [];\n\n getOAuthProvidersAsObservable(): Observable<any> {\n return this.providers.asObservable();\n }\n\n addProviderConfig(provider) {\n if (!(_.find(this.providersConfig, {'name' : provider.name}))) {\n this.providersConfig.push(provider);\n }\n this.providers.next(this.providersConfig);\n }\n\n removeProviderConfig(providerId) {\n _.remove(this.providersConfig, provider => provider.name === providerId);\n this.providers.next(this.providersConfig);\n }\n\n perfromOAuthorization(url, providerId, onSuccess, onError, securityObj?, customUriScheme?, deployedURL?) {\n performAuthorization(url, providerId, onSuccess, onError, this.httpService, this.addProviderConfig.bind(this), this.removeProviderConfig.bind(this), securityObj, customUriScheme, deployedURL);\n }\n\n getAccessToken(provider, checkLocalStorage) {\n return getAccessToken(provider, checkLocalStorage);\n }\n\n removeAccessToken(provider) {\n removeAccessToken(provider);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { OAuthService } from './oAuth.service';\n\n@NgModule({})\nexport class OAuthModule {\n\n static forRoot(): ModuleWithProviders<OAuthModule> {\n return {\n ngModule: OAuthModule,\n providers: [OAuthService]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../projects/oAuth/src/oAuth.utils.ts","../../../projects/oAuth/src/oAuth.service.ts","../../../projects/oAuth/src/oAuth.module.ts","../../../projects/oAuth/src/index.ts"],"sourcesContent":["import { _WM_APP_PROJECT, hasCordova, isIE, getWmProjectProperties } from '@wm/core';\nimport {get, isUndefined} from \"lodash-es\";\n\ndeclare const moment;\ndeclare const jsSHA;\n\nconst accessTokenSuffix = '.access_token', pkceIdentifier = 'pkce', implicitIdentifier = 'implicit';\n\nlet code_verifier, redirectUri;\n\nexport const parseConfig = (serviceParams: any): any => {\n\n let val, param, config;\n const urlParams = serviceParams.urlParams;\n\n config = {\n url: 'services/oauth2/:providerId/authorizationUrl',\n method: 'GET'\n };\n\n /*To handle dynamic urls, append the serviceParams.config.url with the static url(i.e., config.url)*/\n if (serviceParams.config) {\n config.url = (serviceParams.config.url || '') + config.url;\n config.method = serviceParams.config.method || config.method;\n config.headers = config.headers || {};\n\n // TODO[Shubham] - change to for - of\n for (const key in serviceParams.config.headers) {\n val = serviceParams.config.headers[key];\n config.headers[key] = val;\n }\n }\n /* check for url parameters to replace the url */\n if (urlParams) {\n for (param in urlParams) {\n if (urlParams.hasOwnProperty(param)) {\n val = urlParams[param];\n if (!isUndefined(val) && val !== null) {\n config.url = config.url.replace(new RegExp(':' + param, 'g'), val);\n }\n }\n }\n }\n\n /* check for data */\n if (serviceParams.params) {\n config.params = serviceParams.params;\n }\n /* check for data */\n if (!isUndefined(serviceParams.data)) {\n config.data = serviceParams.data;\n }\n /* check for data parameters, written to support old service calls (.json calls) */\n if (serviceParams.dataParams) {\n config.data.params = serviceParams.dataParams;\n }\n /* check for headers */\n if (serviceParams.headers) {\n config.headers = serviceParams.headers;\n }\n\n /* set extra config flags */\n config.byPassResult = serviceParams.byPassResult;\n config.isDirectCall = serviceParams.isDirectCall;\n config.isExtURL = serviceParams.isExtURL;\n config.preventMultiple = serviceParams.preventMultiple;\n config.responseType = serviceParams.responseType;\n\n return config;\n};\n\nconst listeners = {},\n ACCESSTOKEN_PLACEHOLDERS = {\n 'STUDIO': 'WM_STUDIO_',\n 'RUN': 'WM_RUN_'\n },\n newWindowProps = 'width=400,height=600';\n\n/**\n * This function remove the accessToken for a provider\n * @param provider\n */\nexport const removeAccessToken = (provider) => {\n const accessTokenKey = getAccessTokenPlaceholder(provider);\n localStorage.removeItem(accessTokenKey);\n};\n\n/**\n * This function returns the accesstoken placeholder based on the studio or run mode for the project\n * @param provider\n * @returns {*}\n */\nfunction getAccessTokenPlaceholder(provider) {\n let accessTokenKey;\n accessTokenKey = ACCESSTOKEN_PLACEHOLDERS.RUN + _WM_APP_PROJECT.id + '_' + provider + accessTokenSuffix;\n return accessTokenKey;\n}\n\n/**\n * This function performs the fake local storage update, so the IE gets the latest token instead of returning the cached localStorageValue\n */\nfunction performFakeLocalStorageUpdate() {\n const dummy_key = 'dummy_key';\n localStorage.setItem(dummy_key, dummy_key);\n localStorage.removeItem(dummy_key);\n}\n\n/**\n * This function sets the accessToken\n * @param provider\n * @param accesstoken\n */\nfunction setAccessToken(provider, accesstoken) {\n const accessTokenKey = getAccessTokenPlaceholder(provider);\n localStorage.setItem(accessTokenKey, accesstoken);\n}\n\n/**\n * this is a callback function to check if the authentication is done and invokes the successCallback\n * @param providerId\n * @param successCallback\n * @param evt\n */\nfunction checkAuthenticationStatus(providerId, successCallback, removeProviderConfigCallBack, evt, http?, securityObj?) {\n const accessTokenKey = providerId + accessTokenSuffix,\n accessTokenOrCode = localStorage.getItem(accessTokenKey);\n if (evt && evt.origin !== window.location.origin) {\n return;\n }\n if (accessTokenOrCode) {\n if (isPassedFlow(securityObj, pkceIdentifier)) {\n const req = 'client_id=' + securityObj.clientId + '&code=' + accessTokenOrCode + '&grant_type=authorization_code&code_verifier=' + code_verifier + '&redirect_uri=' + redirectUri;\n http.send({\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n url: securityObj.accessTokenUrl,\n data: req\n }).then(function(response) {\n triggerAccessTokenSuccessCallback(providerId, successCallback, removeProviderConfigCallBack, accessTokenKey, response.body.access_token);\n });\n } else {\n triggerAccessTokenSuccessCallback(providerId, successCallback, removeProviderConfigCallBack, accessTokenKey, accessTokenOrCode);\n }\n }\n}\n\n/**\n * function trigger the successCallback after getting the access token\n */\nfunction triggerAccessTokenSuccessCallback(providerId, successCallback, removeProviderConfigCallBack, accessTokenKey, token) {\n removeProviderConfigCallBack(providerId);\n localStorage.removeItem(accessTokenKey);\n setAccessToken(providerId, token);\n window.removeEventListener('message', listeners[providerId]);\n setTimeout(() => {\n delete listeners[providerId];\n if (successCallback) {\n successCallback(token);\n }\n });\n}\n\n/**\n * this function keeps on checking the accesstoken in the LocalStorage and updates it accordingly\n * @param providerId\n * @param onSuccess\n * @param onError\n * @param startTime\n * @param loginObj\n */\nfunction checkAccessTokenInWindow(providerId, onSuccess, onError, startTime, loginObj, removeProviderConfigCallBack) {\n performFakeLocalStorageUpdate();\n const currentTime = moment.duration(moment().format('HH:mm'), 'HH:mm'),\n timeDiff = currentTime.subtract(startTime),\n accessToken = getAccessToken(providerId, true);\n if (accessToken) {\n loginObj.accesstoken_retrieved = true;\n setAccessToken(providerId, accessToken);\n localStorage.removeItem(providerId + accessTokenSuffix);\n removeProviderConfigCallBack(providerId);\n if (onSuccess) {\n onSuccess();\n }\n } else if (timeDiff.minutes() > 1 && onSuccess && !loginObj.accesstoken_retrieved) {\n onSuccess('error');\n } else {\n setTimeout(() => {\n checkAccessTokenInWindow(providerId, onSuccess, onError, startTime, loginObj, removeProviderConfigCallBack);\n }, 3000);\n }\n}\n\n/**\n * checks for the window existence i.e if the window is manually closed by the user or any such\n * @param oAuthWindow\n * @param provider\n * @param callback\n */\nfunction checkForWindowExistence(oAuthWindow, provider, callback, providerInfo?) {\n if (oAuthWindow && listeners[provider]) {\n if (!oAuthWindow.closed) { // .closed is supported across major browser vendors however for IE the user has to enable protected mode from security options\n setTimeout(checkForWindowExistence.bind(undefined, oAuthWindow, provider, callback, providerInfo), 3000);\n } else {\n if (!isPassedFlow(providerInfo, pkceIdentifier)) {\n window.removeEventListener('message', listeners[provider]);\n delete listeners[provider];\n if (callback) {\n callback('error');\n }\n }\n }\n }\n}\n/**\n * this functions handles the logic related to the window operations in IE\n * @param url\n * @param providerId\n * @param onSuccess\n * @param onError\n */\nfunction handleLoginForIE(url, providerId, onSuccess, onError, removeProviderConfigCallBack, securityObj?, requestSourceType?, customUriScheme?, deployedURL?) {\n const loginObj = {\n 'accesstoken_retrieved': false\n };\n if (isPassedFlow(securityObj, implicitIdentifier)) {\n url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, null, customUriScheme, deployedURL);\n }\n window.open(url, '_blank', newWindowProps);\n checkAccessTokenInWindow(providerId, onSuccess, onError, moment.duration(moment().format('HH:mm'), 'HH:mm'), loginObj, removeProviderConfigCallBack);\n}\n\n/**\n * this functions returns if the current oAuth Flow matches the passed flow or not\n * @param providerInfo\n */\nfunction isPassedFlow(providerInfo, flow) {\n let oAuthFlow = get(providerInfo, 'oauth2Flow');\n oAuthFlow = oAuthFlow ? oAuthFlow.toLowerCase() : oAuthFlow;\n if (flow === pkceIdentifier) {\n if (get(providerInfo, 'oAuth2Pkce.enabled') === true) {\n oAuthFlow = pkceIdentifier;\n }\n }\n return oAuthFlow === flow;\n}\n\n/**\n * this function adds the listener on the window and assigns the listener\n * @param provider\n * @param callback\n */\nfunction onAuthWindowOpen(provider, callback, removeProviderConfigCallBack, http?, securityObj?) {\n listeners[provider] = checkAuthenticationStatus.bind(undefined, provider, callback, removeProviderConfigCallBack, null, http, securityObj);\n window.addEventListener('message', listeners[provider], false);\n}\n\n// Generate a secure random string using the browser crypto functions\nfunction generateRandomString() {\n const array = new Uint32Array(28);\n window.crypto.getRandomValues(array);\n return Array.from(array, dec => ('0' + dec.toString(16)).substr(-2)).join('');\n}\n\n// Returns a promise that resolves to an ArrayBuffer\nfunction getEncryptedCode(plain) {\n const encoder = new TextEncoder();\n const data = encoder.encode(plain);\n const shaObj = new jsSHA(\"SHA-256\", \"UINT8ARRAY\", { encoding: \"UTF8\" });\n shaObj.update(data);\n return shaObj.getHash(\"ARRAYBUFFER\");\n}\n\n// Base64-urlencodes the input string\nfunction base64urlencode(str) {\n // Convert the ArrayBuffer to string using Uint8 array to convert to what btoa accepts.\n // btoa accepts chars only within ascii 0-255 and base64 encodes them.\n // Then convert the base64 encoded to base64url encoded\n // (replace + with -, replace / with _, trim trailing =)\n return btoa(String.fromCharCode.apply(null, new Uint8Array(str)))\n .replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n}\n\n/**\n * this function is a callback function which enables the listener and checks for the window existence\n * @param providerId\n * @param onSuccess\n * @param url\n */\nfunction postGetAuthorizationURL(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj?, requestSourceType?, customUriScheme?, deployedURL?, http?) {\n if (isPassedFlow(securityObj, implicitIdentifier)) {\n url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, null, customUriScheme, deployedURL);\n startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n } else if (isPassedFlow(securityObj, pkceIdentifier)) {\n // Create and store a new PKCE code_verifier (the plaintext random secret)\n code_verifier = generateRandomString();\n let code_challenge;\n if (get(securityObj, 'oAuth2Pkce.challengeMethod') === 'plain') {\n code_challenge = code_verifier;\n url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, code_challenge, customUriScheme, deployedURL);\n startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n } else {\n const encryptedCode = getEncryptedCode(code_verifier);\n code_challenge = base64urlencode(encryptedCode);\n //code_challenge = encryptedCode;\n url = constructURLForImplicitOrPKCE(providerId, securityObj, requestSourceType, code_challenge, customUriScheme, deployedURL);\n startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n\n }\n } else {\n startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n }\n}\n\nfunction startoAuthFlow(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj?, requestSourceType?, customUriScheme?, deployedURL?, http?) {\n let oAuthWindow;\n if (hasCordova()) {\n window.open(url, '_system');\n window['OAuthInMobile'](providerId).then(accessToken => {\n const key = providerId + accessTokenSuffix;\n if (accessToken) {\n localStorage.setItem(key, accessToken);\n checkAuthenticationStatus(providerId, onSuccess, removeProviderConfigCallBack, null, http, securityObj);\n } else {\n onSuccess('error');\n }\n });\n } else {\n oAuthWindow = window.open(url, '_blank', newWindowProps);\n onAuthWindowOpen(providerId, onSuccess, removeProviderConfigCallBack, http, securityObj);\n checkForWindowExistence(oAuthWindow, providerId, onSuccess, securityObj);\n }\n}\n\n/**\n * function to construct the url for implicit flow.\n * @param providerId provider id for which the url has to be set\n * @param providerInfo provider object which contains details such as scope, client id etc\n * @param requestSourceType requesting source is web or mobile\n * @returns url string\n */\nfunction constructURLForImplicitOrPKCE(providerId, providerInfo, requestSourceType, code_challenge, customUriScheme?, deployedURL?) {\n redirectUri = window.location.href.split('/#/')[0] + '/oAuthCallback.html';\n const clientId = providerInfo.clientId;\n const scopes = providerInfo.scopes.map(function(scope) { return scope.name }).join(' ');\n let state;\n if (getWmProjectProperties().isTestRuntime === true) {\n redirectUri = location.protocol + '//' + window.location.host + '/studio/oAuthCallback.html';\n }\n if (requestSourceType === 'MOBILE') {\n redirectUri = deployedURL + 'oAuthCallback.html';\n }\n const flow = isPassedFlow(providerInfo, implicitIdentifier) ? implicitIdentifier : pkceIdentifier;\n state = {providerId: providerId, suffix: accessTokenSuffix, requestSourceType: requestSourceType, flow: flow, scheme: customUriScheme};\n const authUrlArr = providerInfo.authorizationUrl.split('?');\n let connector;\n if (authUrlArr.length === 1) {\n //query params don't exist\n connector = '?';\n } else if (authUrlArr.length > 1 && authUrlArr[1] !== '') {\n //query params exist. Append & instead of ?.\n connector = '&';\n } else {\n //nothing exists after '?'. client_id can be directly appended;\n connector = '';\n }\n const commonUrl = providerInfo.authorizationUrl + connector + 'client_id=' + clientId + '&redirect_uri=' + redirectUri + '&state=' + encodeURIComponent(JSON.stringify(state)) + '&scope=' + encodeURIComponent(scopes);\n let url;\n if (flow === implicitIdentifier) {\n const responseType = providerInfo.responseType ? providerInfo.responseType : 'token';\n url = commonUrl + '&response_type=' + responseType;\n } else {\n url = commonUrl + '&response_type=code&code_challenge=' + code_challenge + '&code_challenge_method=' + get(providerInfo, 'oAuth2Pkce.challengeMethod');\n }\n return url;\n}\n\n/**\n * function to get the authorization url\n * @param params provider id for which the auth url has to be fetched\n * @param successCallback callback to be invoked upon successful fetch of the providers\n * @param failureCallback callback to be invoked upon error\n * @returns {*}\n */\nfunction getAuthorizationUrl(params, http) {\n const action = 'getAuthorizationUrl',\n serviceSettings = parseConfig({\n target: 'oauthConfiguration',\n action: action,\n urlParams: {\n projectId: _WM_APP_PROJECT.id,\n providerId: params.providerId\n },\n params: {\n 'requestSourceType': params.requestSourceType\n }\n });\n return http.send(serviceSettings);\n}\n\n/**\n * function trigger the addProviderConfigCallBack after getting the authorization url\n */\nfunction triggerProviderConfigCallBack(url, providerId, onSuccess, onError, http, addProviderConfigCallBack, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL) {\n const urlBody = isPassedFlow(securityObj, implicitIdentifier) || isPassedFlow(securityObj, pkceIdentifier) ? url : url.body;\n addProviderConfigCallBack({\n name: providerId,\n url: urlBody,\n invoke: () => {\n if (isIE()) { // handling for IE\n handleLoginForIE(url, providerId, onSuccess, onError, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL);\n } else {\n postGetAuthorizationURL(urlBody, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL, http);\n }\n }\n });\n}\n\n/**\n * this function retrieves the accessToken based on the run/studiomode\n * @param provider\n * @returns {*}\n */\nexport const getAccessToken = (provider, checkLocalStorage) => {\n const accessTokenKey = getAccessTokenPlaceholder(provider);\n if (checkLocalStorage) {\n return localStorage.getItem(provider + accessTokenSuffix);\n }\n return localStorage.getItem(accessTokenKey);\n};\n\n\n/**\n * this function is used to perform the authorization by opening the window and having active listeners\n * @param url\n * @param providerId\n * @param onSuccess\n * @returns {*}\n */\nexport const performAuthorization = (url, providerId, onSuccess, onError, http, addProviderConfigCallBack, removeProviderConfigCallBack, securityObj?, customUriScheme?, deployedURL?) => {\n let requestSourceType = 'WEB';\n if (url) {\n if (isIE()) { // handling for IE\n handleLoginForIE(url, providerId, onSuccess, onError, removeProviderConfigCallBack);\n } else {\n postGetAuthorizationURL(url, providerId, onSuccess, removeProviderConfigCallBack, securityObj, requestSourceType, http);\n }\n } else {\n if (hasCordova()) {\n requestSourceType = 'MOBILE';\n }\n if (isPassedFlow(securityObj, implicitIdentifier) || isPassedFlow(securityObj, pkceIdentifier)) {\n triggerProviderConfigCallBack(url, providerId, onSuccess, onError, http, addProviderConfigCallBack, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL);\n } else {\n return getAuthorizationUrl({\n 'providerId': providerId,\n 'requestSourceType': requestSourceType\n }, http).then((response) => {\n triggerProviderConfigCallBack(response, providerId, onSuccess, onError, http, addProviderConfigCallBack, removeProviderConfigCallBack, securityObj, requestSourceType, customUriScheme, deployedURL);\n });\n }\n }\n};\n","import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { AbstractHttpService } from '@wm/core';\n\nimport { getAccessToken, performAuthorization, removeAccessToken } from './oAuth.utils';\nimport {find, remove} from \"lodash-es\";\n\n@Injectable()\nexport class OAuthService {\n constructor(private httpService: AbstractHttpService) {}\n\n providers = new Subject();\n\n providersConfig = [];\n\n getOAuthProvidersAsObservable(): Observable<any> {\n return this.providers.asObservable();\n }\n\n addProviderConfig(provider) {\n if (!(find(this.providersConfig, {'name': provider.name}))) {\n this.providersConfig.push(provider);\n }\n this.providers.next(this.providersConfig);\n }\n\n removeProviderConfig(providerId) {\n remove(this.providersConfig, provider => provider.name === providerId);\n this.providers.next(this.providersConfig);\n }\n\n perfromOAuthorization(url, providerId, onSuccess, onError, securityObj?, customUriScheme?, deployedURL?) {\n performAuthorization(url, providerId, onSuccess, onError, this.httpService, this.addProviderConfig.bind(this), this.removeProviderConfig.bind(this), securityObj, customUriScheme, deployedURL);\n }\n\n getAccessToken(provider, checkLocalStorage) {\n return getAccessToken(provider, checkLocalStorage);\n }\n\n removeAccessToken(provider) {\n removeAccessToken(provider);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { OAuthService } from './oAuth.service';\n\n@NgModule({})\nexport class OAuthModule {\n\n static forRoot(): ModuleWithProviders<OAuthModule> {\n return {\n ngModule: OAuthModule,\n providers: [OAuthService]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|