@wavemaker/app-ng-runtime 11.8.0-next.139432 → 11.8.0-next.141156
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/bundles/index.umd.js +10 -12
- app-ng-runtime/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +2 -4
- 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 +2 -4
- 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 +2 -5
- 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 +1 -1
- app-ng-runtime/build-task/esm2022/utils/utils.mjs +1 -1
- app-ng-runtime/build-task/fesm2022/index.mjs +11 -13
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +11 -21
- app-ng-runtime/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +2 -2
- 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 +7 -12
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +7 -12
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.module.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +13 -23
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/login/bundles/index.umd.js +8 -14
- app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +9 -15
- app-ng-runtime/components/advanced/login/esm2022/login.module.mjs +2 -2
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs +10 -16
- 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/bundles/index.umd.js +6 -11
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.directive.mjs +7 -12
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.module.mjs +2 -2
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs +8 -13
- 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/bundles/index.umd.js +104 -159
- app-ng-runtime/components/base/esm2022/components.module.mjs +2 -2
- app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +4 -4
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +24 -24
- 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 +1 -1
- app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +2 -2
- app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +2 -2
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +1 -1
- app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +5 -5
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +7 -32
- app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +5 -13
- app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +4 -4
- 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 +7 -12
- app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -3
- app-ng-runtime/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +7 -12
- app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -3
- app-ng-runtime/components/base/esm2022/widgets/common/message/message.component.mjs +10 -16
- app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +7 -12
- app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +7 -7
- 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 +7 -12
- app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +6 -6
- app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +1 -1
- 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 +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-registry.mjs +1 -1
- app-ng-runtime/components/base/fesm2022/index.mjs +100 -157
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/utils/data-utils.d.ts +1 -0
- app-ng-runtime/components/base/widgets/common/base/base-container.component.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +2 -4
- app-ng-runtime/components/base/widgets/common/base/dataset-aware-nav.component.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/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 +2 -2
- 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 +106 -149
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +27 -31
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +7 -13
- app-ng-runtime/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/html/html.directive.mjs +8 -13
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +14 -19
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +9 -15
- app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +7 -12
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +7 -12
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +27 -30
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +17 -21
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +108 -151
- 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/bundles/index.umd.js +17 -29
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +13 -19
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +7 -13
- app-ng-runtime/components/basic/progress/esm2022/progress.module.mjs +2 -2
- app-ng-runtime/components/basic/progress/esm2022/utils.mjs +1 -1
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +19 -31
- 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/bundles/index.umd.js +5 -6
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +5 -6
- 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 +6 -7
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +111 -120
- 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 +1 -1
- app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +1 -1
- app-ng-runtime/components/basic/search/esm2022/scrollable.directive.mjs +3 -3
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +110 -119
- app-ng-runtime/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +112 -121
- 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/bundles/index.umd.js +9 -15
- app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +10 -16
- app-ng-runtime/components/basic/tree/esm2022/tree.module.mjs +2 -2
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs +11 -17
- 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/bundles/index.umd.js +22 -26
- app-ng-runtime/components/chart/chart.component.d.ts +2 -2
- app-ng-runtime/components/chart/esm2022/chart.component.mjs +22 -26
- app-ng-runtime/components/chart/esm2022/chart.module.mjs +2 -2
- app-ng-runtime/components/chart/esm2022/chart.utils.mjs +1 -1
- app-ng-runtime/components/chart/fesm2022/index.mjs +23 -27
- app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
- 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 +24 -35
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +17 -23
- 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 +7 -12
- app-ng-runtime/components/containers/accordion/esm2022/accordion.module.mjs +2 -2
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +26 -37
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/layout-grid/bundles/index.umd.js +17 -32
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +8 -13
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +7 -12
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +7 -12
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.module.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs +19 -34
- 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/bundles/index.umd.js +11 -21
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +7 -12
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +7 -12
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.module.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs +13 -23
- 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/bundles/index.umd.js +80 -80
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +81 -81
- app-ng-runtime/components/containers/panel/esm2022/panel.module.mjs +2 -2
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +82 -82
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/panel.component.d.ts +2 -2
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +47 -58
- app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +8 -14
- 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 +39 -44
- 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 +49 -60
- 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/bundles/index.umd.js +6 -11
- app-ng-runtime/components/containers/tile/esm2022/tile.directive.mjs +7 -12
- app-ng-runtime/components/containers/tile/esm2022/tile.module.mjs +2 -2
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs +8 -13
- 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/bundles/index.umd.js +98 -102
- app-ng-runtime/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +8 -13
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +93 -92
- app-ng-runtime/components/containers/wizard/esm2022/wizard.module.mjs +2 -2
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +100 -104
- 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/bundles/index.umd.js +50 -70
- 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 +7 -12
- app-ng-runtime/components/data/card/esm2022/card-content/card-content.component.mjs +9 -15
- app-ng-runtime/components/data/card/esm2022/card-footer/card-footer.directive.mjs +7 -12
- app-ng-runtime/components/data/card/esm2022/card.component.mjs +34 -38
- app-ng-runtime/components/data/card/esm2022/card.module.mjs +2 -2
- app-ng-runtime/components/data/card/fesm2022/index.mjs +52 -72
- app-ng-runtime/components/data/card/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +115 -127
- app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +8 -13
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +7 -13
- 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 +84 -87
- 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 +5 -5
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +8 -6
- app-ng-runtime/components/data/form/fesm2022/index.mjs +117 -129
- 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 +2 -2
- app-ng-runtime/components/data/list/bundles/index.umd.js +142 -142
- app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +4 -4
- app-ng-runtime/components/data/list/esm2022/list.animator.mjs +1 -1
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +140 -140
- app-ng-runtime/components/data/list/esm2022/list.module.mjs +2 -2
- app-ng-runtime/components/data/list/fesm2022/index.mjs +144 -144
- app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/list/list.component.d.ts +2 -2
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +7 -13
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +8 -14
- app-ng-runtime/components/data/live-table/esm2022/live-table.module.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +9 -15
- 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/bundles/index.umd.js +96 -98
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +97 -99
- app-ng-runtime/components/data/pagination/esm2022/pagination.module.mjs +2 -2
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +98 -100
- 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/bundles/index.umd.js +106 -128
- app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +8 -13
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +17 -13
- 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 +8 -13
- app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +4 -4
- app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +4 -4
- app-ng-runtime/components/data/table/esm2022/table-row/table-row.directive.mjs +8 -13
- app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +7 -12
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +60 -66
- 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 +108 -130
- 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 +2 -2
- 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 +2 -2
- 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 +9 -15
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +10 -16
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +11 -17
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +11 -17
- 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 +12 -18
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +13 -19
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/base-dialog.d.ts +2 -2
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +69 -73
- 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 +8 -13
- 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 +7 -12
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +55 -49
- app-ng-runtime/components/dialogs/default/esm2022/dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +71 -75
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +14 -20
- 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 +15 -21
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +16 -22
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +14 -20
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +15 -21
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +16 -22
- 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/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/bundles/index.umd.js +10 -16
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +11 -17
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +12 -18
- 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/bundles/index.umd.js +8 -14
- app-ng-runtime/components/input/calendar/calendar.component.d.ts +2 -2
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +9 -15
- app-ng-runtime/components/input/calendar/esm2022/calendar.module.mjs +2 -2
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +10 -16
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +34 -41
- app-ng-runtime/components/input/chips/chips.component.d.ts +2 -2
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +35 -42
- app-ng-runtime/components/input/chips/esm2022/chips.module.mjs +2 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +35 -42
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +11 -24
- 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 +12 -25
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.module.mjs +2 -2
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +12 -25
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +11 -18
- app-ng-runtime/components/input/currency/currency.component.d.ts +2 -2
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +12 -19
- app-ng-runtime/components/input/currency/esm2022/currency.module.mjs +2 -2
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +12 -19
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +416 -540
- 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 +2 -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/esm2022/base-form-custom.component.mjs +3 -3
- app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +4 -4
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +28 -32
- app-ng-runtime/components/input/default/esm2022/button-group/button-group.directive.mjs +7 -12
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +4 -5
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +14 -23
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +101 -103
- app-ng-runtime/components/input/default/esm2022/composite/composite.directive.mjs +7 -12
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +4 -4
- app-ng-runtime/components/input/default/esm2022/input.module.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +10 -17
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +101 -103
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +55 -72
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +28 -34
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +8 -13
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +11 -21
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +11 -21
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +11 -20
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +7 -16
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +12 -21
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +11 -20
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +12 -21
- app-ng-runtime/components/input/default/fesm2022/index.mjs +414 -540
- 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 +3 -4
- 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 +2 -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/base-date-time.component.d.ts +1 -1
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +112 -145
- 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 +6 -11
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +19 -26
- 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 +40 -40
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +31 -41
- app-ng-runtime/components/input/epoch/esm2022/epoch.module.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +5 -7
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +19 -28
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +114 -147
- 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/bundles/index.umd.js +121 -119
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +122 -120
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +123 -121
- 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/bundles/index.umd.js +39 -46
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +40 -47
- app-ng-runtime/components/input/rating/esm2022/rating.module.mjs +2 -2
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +40 -47
- 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/bundles/index.umd.js +12 -21
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +13 -22
- app-ng-runtime/components/input/slider/esm2022/slider.module.mjs +2 -2
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +13 -22
- 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/breadcrumb.component.d.ts +2 -2
- app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +28 -33
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +29 -34
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +30 -35
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +117 -133
- app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +6 -11
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +4 -5
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +23 -23
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +34 -37
- app-ng-runtime/components/navigation/menu/esm2022/menu.module.mjs +2 -2
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +7 -12
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +50 -52
- app-ng-runtime/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +3 -3
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +119 -135
- 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.component.d.ts +2 -2
- app-ng-runtime/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +2 -2
- app-ng-runtime/components/navigation/menu/nav/nav.component.d.ts +2 -2
- app-ng-runtime/components/navigation/navbar/bundles/index.umd.js +22 -29
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.component.mjs +23 -30
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.module.mjs +2 -2
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs +24 -31
- 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/bundles/index.umd.js +11 -18
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +12 -19
- app-ng-runtime/components/navigation/popover/esm2022/popover.module.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +13 -20
- 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/bundles/index.umd.js +31 -63
- app-ng-runtime/components/page/default/content/content.component.d.ts +2 -2
- app-ng-runtime/components/page/default/esm2022/content/content.component.mjs +7 -13
- app-ng-runtime/components/page/default/esm2022/layout.directive.mjs +7 -12
- app-ng-runtime/components/page/default/esm2022/page-content/page-content.component.mjs +7 -13
- app-ng-runtime/components/page/default/esm2022/page.directive.mjs +7 -12
- app-ng-runtime/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/router-outlet.directive.mjs +7 -12
- app-ng-runtime/components/page/default/esm2022/spa-page.directive.mjs +7 -12
- app-ng-runtime/components/page/default/fesm2022/index.mjs +33 -65
- 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/bundles/index.umd.js +6 -11
- app-ng-runtime/components/page/footer/esm2022/footer.directive.mjs +7 -12
- app-ng-runtime/components/page/footer/esm2022/footer.module.mjs +2 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +8 -13
- 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/bundles/index.umd.js +6 -12
- app-ng-runtime/components/page/header/esm2022/header.component.mjs +7 -13
- app-ng-runtime/components/page/header/esm2022/header.module.mjs +2 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +8 -14
- 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/bundles/index.umd.js +7 -12
- 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 +8 -13
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +9 -14
- 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/bundles/index.umd.js +6 -11
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +7 -12
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.module.mjs +2 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +8 -13
- 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/bundles/index.umd.js +6 -11
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.directive.mjs +7 -12
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.module.mjs +2 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +8 -13
- 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/bundles/index.umd.js +12 -22
- app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +7 -12
- app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +8 -13
- app-ng-runtime/components/prefab/esm2022/prefab.module.mjs +2 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs +13 -23
- 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/bundles/index.umd.js +16 -16
- app-ng-runtime/core/esm2022/core.module.mjs +2 -2
- app-ng-runtime/core/esm2022/services/constant.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/field-type.service.mjs +3 -3
- app-ng-runtime/core/esm2022/services/field-widget.service.mjs +3 -3
- app-ng-runtime/core/esm2022/services/pagination.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/script-loader.service.mjs +3 -3
- app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/user-custom-pipe-manager.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/utils.service.mjs +3 -3
- app-ng-runtime/core/esm2022/services/viewport.service.mjs +3 -3
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +1 -1
- 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 +2 -2
- app-ng-runtime/core/esm2022/utils/id-generator.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/lru-cache.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/utils.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/watcher.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/wm-project-properties.mjs +1 -1
- app-ng-runtime/core/fesm2022/index.mjs +17 -17
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/http/bundles/index.umd.js +3 -3
- app-ng-runtime/http/esm2022/http-service.module.mjs +2 -2
- app-ng-runtime/http/esm2022/http.service.mjs +3 -3
- app-ng-runtime/http/fesm2022/index.mjs +3 -3
- 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 +44 -58
- app-ng-runtime/locales/angular/global/ff-gn.js +44 -58
- 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 +44 -58
- 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/bundles/index.umd.js +124 -125
- app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +4 -4
- app-ng-runtime/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +6 -7
- 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 +36 -36
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +3 -3
- app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +4 -4
- app-ng-runtime/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +47 -49
- 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 +30 -28
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +125 -126
- 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/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/bundles/index.umd.js +25 -37
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +8 -14
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +20 -26
- 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 +27 -39
- 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/bundles/index.umd.js +41 -46
- 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 +41 -46
- 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 +43 -48
- 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/barcode-scanner.component.d.ts +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +8 -14
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +9 -15
- 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 +10 -16
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +9 -15
- app-ng-runtime/mobile/components/device/camera/camera.component.d.ts +2 -2
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.component.mjs +10 -16
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +11 -17
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/input/file-upload/bundles/index.umd.js +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/bundles/index.umd.js +5 -6
- app-ng-runtime/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +3 -4
- app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +3 -3
- app-ng-runtime/mobile/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +5 -6
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/left-panel/bundles/index.umd.js +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/bundles/index.umd.js +35 -40
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +36 -41
- 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 +36 -41
- 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/bundles/index.umd.js +37 -43
- 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 +38 -44
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +39 -45
- 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/bundles/index.umd.js +18 -18
- 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 +3 -3
- app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +3 -3
- app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -18
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/offline/bundles/index.umd.js +15 -15
- app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +1 -1
- app-ng-runtime/mobile/offline/esm2022/offline.module.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +3 -3
- 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 +1 -1
- app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +1 -1
- 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 +1 -1
- app-ng-runtime/mobile/offline/esm2022/utils/file-upload.utils.mjs +1 -1
- app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +1 -1
- app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +1 -1
- app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +1 -1
- app-ng-runtime/mobile/offline/esm2022/utils/utils.mjs +1 -1
- app-ng-runtime/mobile/offline/fesm2022/index.mjs +16 -16
- app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime/bundles/index.umd.js +2 -3
- app-ng-runtime/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +2 -3
- app-ng-runtime/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs +2 -3
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/bundles/index.umd.js +9 -10
- app-ng-runtime/mobile/runtime/esm2022/components/app-ext.component.mjs +3 -4
- app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +3 -3
- app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +2 -2
- app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +3 -3
- app-ng-runtime/mobile/runtime/esm2022/services/webprocess.service.mjs +3 -3
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs +9 -10
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +3 -3
- 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 +3 -3
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/variables/bundles/index.umd.js +5 -5
- app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +4 -4
- app-ng-runtime/mobile/variables/esm2022/services/contacts-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +1 -1
- 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 +1 -1
- 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 +5 -5
- app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/oAuth/bundles/index.umd.js +3 -3
- app-ng-runtime/oAuth/esm2022/oAuth.module.mjs +2 -2
- app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +3 -3
- app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +1 -1
- app-ng-runtime/oAuth/fesm2022/index.mjs +3 -3
- app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +118 -122
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +27 -27
- app-ng-runtime/runtime/base/esm2022/components/app-spinner.component.mjs +8 -9
- app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +2 -2
- app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +12 -13
- app-ng-runtime/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +3 -4
- app-ng-runtime/runtime/base/esm2022/components/prefab-preview.component.mjs +3 -4
- app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +3 -3
- 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 +3 -3
- 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 +3 -3
- app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +3 -3
- 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 +3 -3
- app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/util/fragment-monitor.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +2 -2
- app-ng-runtime/runtime/base/fesm2022/index.mjs +130 -134
- 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/dynamic/bundles/index.umd.js +14 -15
- app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +1 -1
- app-ng-runtime/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +3 -4
- 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 +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/main.mjs +1 -1
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +16 -17
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +2 -1
- app-ng-runtime/security/bundles/index.umd.js +3 -3
- app-ng-runtime/security/esm2022/security.module.mjs +2 -2
- app-ng-runtime/security/esm2022/security.service.mjs +3 -3
- app-ng-runtime/security/fesm2022/index.mjs +3 -3
- app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
- app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/transpiler/esm2022/build.mjs +1 -1
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/bundles/index.umd.js +5 -5
- app-ng-runtime/variables/esm2022/factory/variable.factory.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/action/logout-action.manager.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +1 -1
- 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 +1 -1
- 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 +3 -3
- app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +1 -1
- app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +1 -1
- app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +1 -1
- app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +1 -1
- app-ng-runtime/variables/esm2022/variables.module.mjs +2 -2
- app-ng-runtime/variables/fesm2022/index.mjs +5 -5
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/build-task/.npmignore +0 -2
- app-ng-runtime/components/advanced/carousel/.npmignore +0 -2
- app-ng-runtime/components/advanced/login/.npmignore +0 -2
- app-ng-runtime/components/advanced/marquee/.npmignore +0 -2
- app-ng-runtime/components/base/.npmignore +0 -2
- app-ng-runtime/components/basic/default/.npmignore +0 -2
- app-ng-runtime/components/basic/progress/.npmignore +0 -2
- app-ng-runtime/components/basic/rich-text-editor/.npmignore +0 -2
- app-ng-runtime/components/basic/search/.npmignore +0 -2
- app-ng-runtime/components/basic/tree/.npmignore +0 -2
- app-ng-runtime/components/chart/.npmignore +0 -2
- app-ng-runtime/components/containers/accordion/.npmignore +0 -2
- app-ng-runtime/components/containers/layout-grid/.npmignore +0 -2
- app-ng-runtime/components/containers/linear-layout/.npmignore +0 -2
- app-ng-runtime/components/containers/panel/.npmignore +0 -2
- app-ng-runtime/components/containers/tabs/.npmignore +0 -2
- app-ng-runtime/components/containers/tile/.npmignore +0 -2
- app-ng-runtime/components/containers/wizard/.npmignore +0 -2
- app-ng-runtime/components/data/card/.npmignore +0 -2
- app-ng-runtime/components/data/form/.npmignore +0 -2
- app-ng-runtime/components/data/list/.npmignore +0 -2
- app-ng-runtime/components/data/live-table/.npmignore +0 -2
- app-ng-runtime/components/data/pagination/.npmignore +0 -2
- app-ng-runtime/components/data/table/.npmignore +0 -2
- app-ng-runtime/components/dialogs/alert-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/confirm-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/default/.npmignore +0 -2
- app-ng-runtime/components/dialogs/design-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/iframe-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/login-dialog/.npmignore +0 -2
- app-ng-runtime/components/dialogs/partial-dialog/.npmignore +0 -2
- app-ng-runtime/components/input/calendar/.npmignore +0 -2
- app-ng-runtime/components/input/chips/.npmignore +0 -2
- app-ng-runtime/components/input/color-picker/.npmignore +0 -2
- app-ng-runtime/components/input/currency/.npmignore +0 -2
- app-ng-runtime/components/input/default/.npmignore +0 -2
- app-ng-runtime/components/input/epoch/.npmignore +0 -2
- app-ng-runtime/components/input/file-upload/.npmignore +0 -2
- app-ng-runtime/components/input/rating/.npmignore +0 -2
- app-ng-runtime/components/input/slider/.npmignore +0 -2
- app-ng-runtime/components/navigation/breadcrumb/.npmignore +0 -2
- app-ng-runtime/components/navigation/menu/.npmignore +0 -2
- app-ng-runtime/components/navigation/navbar/.npmignore +0 -2
- app-ng-runtime/components/navigation/popover/.npmignore +0 -2
- app-ng-runtime/components/page/default/.npmignore +0 -2
- app-ng-runtime/components/page/footer/.npmignore +0 -2
- app-ng-runtime/components/page/header/.npmignore +0 -2
- app-ng-runtime/components/page/left-panel/.npmignore +0 -2
- app-ng-runtime/components/page/right-panel/.npmignore +0 -2
- app-ng-runtime/components/page/top-nav/.npmignore +0 -2
- app-ng-runtime/components/prefab/.npmignore +0 -2
- app-ng-runtime/core/.npmignore +0 -2
- app-ng-runtime/http/.npmignore +0 -2
- app-ng-runtime/mobile/components/basic/default/.npmignore +0 -2
- app-ng-runtime/mobile/components/basic/search/.npmignore +0 -2
- app-ng-runtime/mobile/components/containers/segmented-control/.npmignore +0 -2
- app-ng-runtime/mobile/components/data/media-list/.npmignore +0 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/.npmignore +0 -2
- app-ng-runtime/mobile/components/device/camera/.npmignore +0 -2
- app-ng-runtime/mobile/components/input/file-upload/.npmignore +0 -2
- app-ng-runtime/mobile/components/page/default/.npmignore +0 -2
- app-ng-runtime/mobile/components/page/left-panel/.npmignore +0 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/.npmignore +0 -2
- app-ng-runtime/mobile/components/page/tab-bar/.npmignore +0 -2
- app-ng-runtime/mobile/core/.npmignore +0 -2
- app-ng-runtime/mobile/offline/.npmignore +0 -2
- app-ng-runtime/mobile/placeholder/runtime/.npmignore +0 -2
- app-ng-runtime/mobile/placeholder/runtime-dynamic/.npmignore +0 -2
- app-ng-runtime/mobile/runtime/.npmignore +0 -2
- app-ng-runtime/mobile/runtime-dynamic/.npmignore +0 -2
- app-ng-runtime/mobile/variables/.npmignore +0 -2
- app-ng-runtime/oAuth/.npmignore +0 -2
- app-ng-runtime/runtime/base/.npmignore +0 -2
- app-ng-runtime/runtime/dynamic/.npmignore +0 -2
- app-ng-runtime/security/.npmignore +0 -2
- app-ng-runtime/swipey/.npmignore +0 -2
- app-ng-runtime/transpiler/.npmignore +0 -2
- app-ng-runtime/variables/.npmignore +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Attribute, ChangeDetectorRef, Component, ContentChild, ContentChildren,
|
|
1
|
+
import { Attribute, ChangeDetectorRef, Component, ContentChild, ContentChildren, Injector, NgZone, QueryList, TemplateRef, ViewChild, ViewChildren } from '@angular/core';
|
|
2
2
|
import { $appDigest, $invokeWatchers, App, AppDefaults, DataSource, getClonedObject, isDataSourceEqual, isDefined, isMobile, isMobileApp, isNumber, isObject, noop, switchClass, StatePersistence, PaginationService, setListClass, generateGUId } from '@wm/core';
|
|
3
3
|
import { APPLY_STYLES_TYPE, configureDnD, DEBOUNCE_TIMES, getOrderedDataset, groupData, handleHeaderClick, NAVIGATION_TYPE, unsupportedStatePersistenceTypes, provideAsWidgetRef, StylableComponent, styler, ToDatePipe, toggleAllHeaders, extractDataSourceName } from '@wm/components/base';
|
|
4
4
|
import { PaginationComponent } from '@wm/components/data/pagination';
|
|
@@ -13,32 +13,30 @@ const _c0 = ["listTemplate"];
|
|
|
13
13
|
const _c1 = ["listLeftActionTemplate"];
|
|
14
14
|
const _c2 = ["listRightActionTemplate"];
|
|
15
15
|
const _c3 = ["wmList", ""];
|
|
16
|
-
const _c4 = a0 => ({ "disabled": a0 });
|
|
17
|
-
const _c5 = (a0, a1, a2, a3, a4, a5) => ({ item: a0, $index: a1, itemRef: a2, $first: a3, $last: a4, currentItemWidgets: a5 });
|
|
18
|
-
const _c6 = a0 => ({ "collapsible-content": a0 });
|
|
19
16
|
function ListComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
-
i0.ɵɵelementStart(0, "div",
|
|
21
|
-
i0.ɵɵelement(3, "i",
|
|
17
|
+
i0.ɵɵelementStart(0, "div", 13)(1, "h3", 14)(2, "div", 15);
|
|
18
|
+
i0.ɵɵelement(3, "i", 16);
|
|
22
19
|
i0.ɵɵelementEnd();
|
|
23
|
-
i0.ɵɵelementStart(4, "div",
|
|
24
|
-
i0.ɵɵelement(5, "div",
|
|
20
|
+
i0.ɵɵelementStart(4, "div", 15);
|
|
21
|
+
i0.ɵɵelement(5, "div", 17)(6, "div", 18);
|
|
25
22
|
i0.ɵɵelementEnd()()();
|
|
26
23
|
} if (rf & 2) {
|
|
27
|
-
const
|
|
24
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
28
25
|
i0.ɵɵadvance(3);
|
|
29
|
-
i0.ɵɵclassMapInterpolate1("app-icon panel-icon ",
|
|
30
|
-
i0.ɵɵproperty("hidden", !
|
|
26
|
+
i0.ɵɵclassMapInterpolate1("app-icon panel-icon ", ctx_r0.iconclass, "");
|
|
27
|
+
i0.ɵɵproperty("hidden", !ctx_r0.iconclass);
|
|
31
28
|
i0.ɵɵadvance(2);
|
|
32
|
-
i0.ɵɵproperty("innerHTML",
|
|
33
|
-
i0.ɵɵadvance();
|
|
34
|
-
i0.ɵɵproperty("innerHTML",
|
|
29
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.title, i0.ɵɵsanitizeHtml);
|
|
30
|
+
i0.ɵɵadvance(1);
|
|
31
|
+
i0.ɵɵproperty("innerHTML", ctx_r0.subheading, i0.ɵɵsanitizeHtml);
|
|
35
32
|
} }
|
|
33
|
+
const _c4 = function (a0) { return { "disabled": a0 }; };
|
|
36
34
|
function ListComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
37
|
-
const
|
|
38
|
-
i0.ɵɵelementStart(0, "div",
|
|
39
|
-
i0.ɵɵlistener("click", function ListComponent_div_1_Template_a_click_3_listener($event) { i0.ɵɵrestoreView(
|
|
40
|
-
i0.ɵɵelement(4, "i",
|
|
41
|
-
i0.ɵɵelementStart(5, "span",
|
|
35
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
36
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "ul", 20)(2, "li", 21)(3, "a", 22);
|
|
37
|
+
i0.ɵɵlistener("click", function ListComponent_div_1_Template_a_click_3_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.dataNavigator.navigatePage("prev", $event)); });
|
|
38
|
+
i0.ɵɵelement(4, "i", 23);
|
|
39
|
+
i0.ɵɵelementStart(5, "span", 24);
|
|
42
40
|
i0.ɵɵtext(6);
|
|
43
41
|
i0.ɵɵelementEnd()()()()();
|
|
44
42
|
} if (rf & 2) {
|
|
@@ -46,107 +44,108 @@ function ListComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
46
44
|
i0.ɵɵattribute("aria-disabled", ctx_r1.dataNavigator.isDisablePrevious);
|
|
47
45
|
i0.ɵɵadvance(2);
|
|
48
46
|
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c4, ctx_r1.dataNavigator ? ctx_r1.dataNavigator.isDisablePrevious : true));
|
|
49
|
-
i0.ɵɵadvance();
|
|
47
|
+
i0.ɵɵadvance(1);
|
|
50
48
|
i0.ɵɵattribute("aria-disabled", ctx_r1.dataNavigator.isDisablePrevious);
|
|
51
49
|
i0.ɵɵadvance(3);
|
|
52
50
|
i0.ɵɵtextInterpolate1("Go to Previous page ", ctx_r1.dataNavigator.isDisablePrevious ? ", Disabled" : "", "");
|
|
53
51
|
} }
|
|
54
52
|
function ListComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
55
|
-
i0.ɵɵelementStart(0, "div",
|
|
53
|
+
i0.ɵɵelementStart(0, "div", 25);
|
|
56
54
|
i0.ɵɵtext(1);
|
|
57
55
|
i0.ɵɵelementEnd();
|
|
58
56
|
} if (rf & 2) {
|
|
59
|
-
const
|
|
60
|
-
i0.ɵɵadvance();
|
|
61
|
-
i0.ɵɵtextInterpolate1(" ", "Page " +
|
|
57
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
58
|
+
i0.ɵɵadvance(1);
|
|
59
|
+
i0.ɵɵtextInterpolate1(" ", "Page " + ctx_r2.dataNavigator.dn.currentPage + " of " + ctx_r2.dataNavigator.pageCount, "");
|
|
62
60
|
} }
|
|
63
61
|
function ListComponent_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
64
|
-
i0.ɵɵelementStart(0, "div",
|
|
62
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
65
63
|
i0.ɵɵtext(1, " Press space bar to toggle drag drop mode, use arrow keys to move selected elements. ");
|
|
66
64
|
i0.ɵɵelementEnd();
|
|
67
65
|
} if (rf & 2) {
|
|
68
|
-
const
|
|
69
|
-
i0.ɵɵpropertyInterpolate("id",
|
|
66
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
67
|
+
i0.ɵɵpropertyInterpolate("id", ctx_r3.titleId);
|
|
70
68
|
} }
|
|
71
69
|
function ListComponent_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
72
|
-
i0.ɵɵelementStart(0, "div",
|
|
70
|
+
i0.ɵɵelementStart(0, "div", 27);
|
|
73
71
|
i0.ɵɵtext(1);
|
|
74
72
|
i0.ɵɵelementEnd();
|
|
75
73
|
} if (rf & 2) {
|
|
76
|
-
const
|
|
77
|
-
i0.ɵɵadvance();
|
|
78
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
74
|
+
const ctx_r4 = i0.ɵɵnextContext();
|
|
75
|
+
i0.ɵɵadvance(1);
|
|
76
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r4.ariaText + ctx_r4.currentIndex + " of " + ctx_r4.listItems.length, " ");
|
|
79
77
|
} }
|
|
78
|
+
const _c5 = function (a0, a1, a2, a3, a4, a5) { return { item: a0, $index: a1, itemRef: a2, $first: a3, $last: a4, currentItemWidgets: a5 }; };
|
|
80
79
|
function ListComponent_ng_template_7_li_0_Template(rf, ctx) { if (rf & 1) {
|
|
81
|
-
i0.ɵɵelementStart(0, "li",
|
|
80
|
+
i0.ɵɵelementStart(0, "li", 29, 30);
|
|
82
81
|
i0.ɵɵelementContainer(2, 31);
|
|
83
82
|
i0.ɵɵelementEnd();
|
|
84
83
|
} if (rf & 2) {
|
|
85
|
-
const
|
|
86
|
-
const $
|
|
87
|
-
const $
|
|
88
|
-
const $
|
|
89
|
-
const
|
|
90
|
-
const
|
|
91
|
-
i0.ɵɵclassMapInterpolate1("app-list-item ",
|
|
92
|
-
i0.ɵɵproperty("ngClass",
|
|
93
|
-
i0.ɵɵattribute("tabindex",
|
|
84
|
+
const item_r15 = ctx.$implicit;
|
|
85
|
+
const $index_r16 = ctx.index;
|
|
86
|
+
const $first_r17 = ctx.first;
|
|
87
|
+
const $last_r18 = ctx.last;
|
|
88
|
+
const _r19 = i0.ɵɵreference(1);
|
|
89
|
+
const ctx_r14 = i0.ɵɵnextContext(2);
|
|
90
|
+
i0.ɵɵclassMapInterpolate1("app-list-item ", ctx_r14.direction === "horizontal" ? "" : ctx_r14.itemsPerRowClass, "");
|
|
91
|
+
i0.ɵɵproperty("ngClass", _r19.itemClass)("wmListItem", item_r15);
|
|
92
|
+
i0.ɵɵattribute("tabindex", ctx_r14.tabindex);
|
|
94
93
|
i0.ɵɵadvance(2);
|
|
95
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
94
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r14.listTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction6(8, _c5, item_r15, $index_r16, _r19, $first_r17, $last_r18, _r19.currentItemWidgets));
|
|
96
95
|
} }
|
|
97
96
|
function ListComponent_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
98
|
-
i0.ɵɵtemplate(0, ListComponent_ng_template_7_li_0_Template, 3,
|
|
97
|
+
i0.ɵɵtemplate(0, ListComponent_ng_template_7_li_0_Template, 3, 15, "li", 28);
|
|
99
98
|
} if (rf & 2) {
|
|
100
|
-
const
|
|
101
|
-
i0.ɵɵproperty("ngForOf",
|
|
99
|
+
const ctx_r5 = i0.ɵɵnextContext();
|
|
100
|
+
i0.ɵɵproperty("ngForOf", ctx_r5.fieldDefs);
|
|
102
101
|
} }
|
|
103
102
|
function ListComponent_div_10_Template(rf, ctx) { if (rf & 1) {
|
|
104
103
|
i0.ɵɵelement(0, "div", 32);
|
|
105
104
|
} if (rf & 2) {
|
|
106
|
-
const
|
|
107
|
-
i0.ɵɵproperty("textContent",
|
|
105
|
+
const ctx_r6 = i0.ɵɵnextContext();
|
|
106
|
+
i0.ɵɵproperty("textContent", ctx_r6.nodatamessage);
|
|
108
107
|
} }
|
|
109
108
|
function ListComponent_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
110
109
|
i0.ɵɵelementStart(0, "div", 33)(1, "span");
|
|
111
110
|
i0.ɵɵelement(2, "i", 34);
|
|
112
|
-
i0.ɵɵelementStart(3, "span",
|
|
111
|
+
i0.ɵɵelementStart(3, "span", 24);
|
|
113
112
|
i0.ɵɵtext(4, "Loading");
|
|
114
113
|
i0.ɵɵelementEnd();
|
|
115
114
|
i0.ɵɵelement(5, "span", 35);
|
|
116
115
|
i0.ɵɵelementEnd()();
|
|
117
116
|
} if (rf & 2) {
|
|
118
|
-
const
|
|
117
|
+
const ctx_r7 = i0.ɵɵnextContext();
|
|
119
118
|
i0.ɵɵadvance(2);
|
|
120
|
-
i0.ɵɵproperty("ngClass",
|
|
119
|
+
i0.ɵɵproperty("ngClass", ctx_r7.loadingicon);
|
|
121
120
|
i0.ɵɵadvance(3);
|
|
122
|
-
i0.ɵɵproperty("textContent",
|
|
121
|
+
i0.ɵɵproperty("textContent", ctx_r7.loadingdatamsg);
|
|
123
122
|
} }
|
|
124
123
|
function ListComponent_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
-
const
|
|
126
|
-
i0.ɵɵelementStart(0, "div", 36)(1, "ul",
|
|
127
|
-
i0.ɵɵlistener("click", function ListComponent_div_12_Template_a_click_3_listener($event) { i0.ɵɵrestoreView(
|
|
124
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
125
|
+
i0.ɵɵelementStart(0, "div", 36)(1, "ul", 20)(2, "li", 37)(3, "a", 22);
|
|
126
|
+
i0.ɵɵlistener("click", function ListComponent_div_12_Template_a_click_3_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.dataNavigator.navigatePage("next", $event)); });
|
|
128
127
|
i0.ɵɵelement(4, "i", 38);
|
|
129
|
-
i0.ɵɵelementStart(5, "span",
|
|
128
|
+
i0.ɵɵelementStart(5, "span", 24);
|
|
130
129
|
i0.ɵɵtext(6);
|
|
131
130
|
i0.ɵɵelementEnd()()()()();
|
|
132
131
|
} if (rf & 2) {
|
|
133
|
-
const
|
|
134
|
-
i0.ɵɵattribute("aria-disabled",
|
|
132
|
+
const ctx_r8 = i0.ɵɵnextContext();
|
|
133
|
+
i0.ɵɵattribute("aria-disabled", ctx_r8.dataNavigator.isDisableNext);
|
|
135
134
|
i0.ɵɵadvance(2);
|
|
136
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c4,
|
|
137
|
-
i0.ɵɵadvance();
|
|
138
|
-
i0.ɵɵattribute("aria-disabled",
|
|
135
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c4, ctx_r8.dataNavigator ? ctx_r8.dataNavigator.isDisableNext : true));
|
|
136
|
+
i0.ɵɵadvance(1);
|
|
137
|
+
i0.ɵɵattribute("aria-disabled", ctx_r8.dataNavigator.isDisableNext);
|
|
139
138
|
i0.ɵɵadvance(3);
|
|
140
|
-
i0.ɵɵtextInterpolate1("Go to Next page ",
|
|
139
|
+
i0.ɵɵtextInterpolate1("Go to Next page ", ctx_r8.dataNavigator.isDisableNext ? ", Disabled" : "", "");
|
|
141
140
|
} }
|
|
142
141
|
function ListComponent_div_13_a_2_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
const
|
|
142
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
144
143
|
i0.ɵɵelementStart(0, "a", 42);
|
|
145
|
-
i0.ɵɵlistener("click", function ListComponent_div_13_a_2_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(
|
|
144
|
+
i0.ɵɵlistener("click", function ListComponent_div_13_a_2_Template_a_click_0_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.dataNavigator.navigatePage("next", $event)); });
|
|
146
145
|
i0.ɵɵelementEnd();
|
|
147
146
|
} if (rf & 2) {
|
|
148
|
-
const
|
|
149
|
-
i0.ɵɵproperty("ngClass",
|
|
147
|
+
const ctx_r22 = i0.ɵɵnextContext(2);
|
|
148
|
+
i0.ɵɵproperty("ngClass", ctx_r22.paginationclass)("textContent", ctx_r22.ondemandmessage);
|
|
150
149
|
} }
|
|
151
150
|
function ListComponent_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
152
151
|
i0.ɵɵelementStart(0, "div", 39);
|
|
@@ -154,10 +153,10 @@ function ListComponent_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
|
154
153
|
i0.ɵɵtemplate(2, ListComponent_div_13_a_2_Template, 1, 2, "a", 41);
|
|
155
154
|
i0.ɵɵelementEnd();
|
|
156
155
|
} if (rf & 2) {
|
|
157
|
-
const
|
|
158
|
-
i0.ɵɵproperty("hidden", !
|
|
156
|
+
const ctx_r9 = i0.ɵɵnextContext();
|
|
157
|
+
i0.ɵɵproperty("hidden", !ctx_r9.showNavigation || ctx_r9.onDemandLoad && ctx_r9.dataNavigator.isDisableNext || ctx_r9.dataNavigator.dataSize <= ctx_r9.pagesize || !ctx_r9.dataNavigator.dataSize && !(ctx_r9.dataNavigator.datasource == null ? null : ctx_r9.dataNavigator.datasource.pagination == null ? null : ctx_r9.dataNavigator.datasource.pagination.next));
|
|
159
158
|
i0.ɵɵadvance(2);
|
|
160
|
-
i0.ɵɵproperty("ngIf",
|
|
159
|
+
i0.ɵɵproperty("ngIf", ctx_r9.onDemandLoad);
|
|
161
160
|
} }
|
|
162
161
|
function ListComponent_ng_template_14_li_0_i_6_Template(rf, ctx) { if (rf & 1) {
|
|
163
162
|
i0.ɵɵelement(0, "i", 51);
|
|
@@ -167,64 +166,65 @@ function ListComponent_ng_template_14_li_0_span_7_Template(rf, ctx) { if (rf & 1
|
|
|
167
166
|
i0.ɵɵtext(1);
|
|
168
167
|
i0.ɵɵelementEnd();
|
|
169
168
|
} if (rf & 2) {
|
|
170
|
-
const
|
|
171
|
-
i0.ɵɵadvance();
|
|
172
|
-
i0.ɵɵtextInterpolate(
|
|
169
|
+
const groupObj_r26 = i0.ɵɵnextContext().$implicit;
|
|
170
|
+
i0.ɵɵadvance(1);
|
|
171
|
+
i0.ɵɵtextInterpolate(groupObj_r26.data.length);
|
|
173
172
|
} }
|
|
174
173
|
function ListComponent_ng_template_14_li_0_li_9_Template(rf, ctx) { if (rf & 1) {
|
|
175
|
-
i0.ɵɵelementStart(0, "li", 53,
|
|
174
|
+
i0.ɵɵelementStart(0, "li", 53, 30);
|
|
176
175
|
i0.ɵɵelementContainer(2, 31);
|
|
177
176
|
i0.ɵɵelementEnd();
|
|
178
177
|
} if (rf & 2) {
|
|
179
|
-
const
|
|
180
|
-
const $
|
|
181
|
-
const $
|
|
182
|
-
const $
|
|
183
|
-
const
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
i0.ɵɵ
|
|
187
|
-
i0.ɵɵ
|
|
188
|
-
i0.ɵɵattribute("tabindex", ctx_r1.tabindex);
|
|
178
|
+
const item_r31 = ctx.$implicit;
|
|
179
|
+
const $index_r32 = ctx.index;
|
|
180
|
+
const $first_r33 = ctx.first;
|
|
181
|
+
const $last_r34 = ctx.last;
|
|
182
|
+
const _r35 = i0.ɵɵreference(1);
|
|
183
|
+
const ctx_r29 = i0.ɵɵnextContext(3);
|
|
184
|
+
i0.ɵɵclassMapInterpolate1("app-list-item group-list-item ", ctx_r29.itemsPerRowClass, "");
|
|
185
|
+
i0.ɵɵproperty("ngClass", _r35.itemClass)("wmListItem", item_r31);
|
|
186
|
+
i0.ɵɵattribute("tabindex", ctx_r29.tabindex);
|
|
189
187
|
i0.ɵɵadvance(2);
|
|
190
|
-
i0.ɵɵproperty("ngTemplateOutlet",
|
|
188
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r29.listTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction6(8, _c5, item_r31, $index_r32, _r35, $first_r33, $last_r34, _r35.currentItemWidgets));
|
|
191
189
|
} }
|
|
190
|
+
const _c6 = function (a0) { return { "collapsible-content": a0 }; };
|
|
192
191
|
function ListComponent_ng_template_14_li_0_Template(rf, ctx) { if (rf & 1) {
|
|
193
|
-
const
|
|
192
|
+
const _r37 = i0.ɵɵgetCurrentView();
|
|
194
193
|
i0.ɵɵelementStart(0, "li", 44)(1, "ul", 45)(2, "li", 46);
|
|
195
|
-
i0.ɵɵlistener("click", function ListComponent_ng_template_14_li_0_Template_li_click_2_listener($event) { i0.ɵɵrestoreView(
|
|
194
|
+
i0.ɵɵlistener("click", function ListComponent_ng_template_14_li_0_Template_li_click_2_listener($event) { i0.ɵɵrestoreView(_r37); const ctx_r36 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r36.handleHeaderClick($event)); });
|
|
196
195
|
i0.ɵɵelementStart(3, "h4");
|
|
197
196
|
i0.ɵɵtext(4);
|
|
198
197
|
i0.ɵɵelementStart(5, "div", 47);
|
|
199
|
-
i0.ɵɵtemplate(6, ListComponent_ng_template_14_li_0_i_6_Template, 1, 0, "i", 48)
|
|
198
|
+
i0.ɵɵtemplate(6, ListComponent_ng_template_14_li_0_i_6_Template, 1, 0, "i", 48);
|
|
199
|
+
i0.ɵɵtemplate(7, ListComponent_ng_template_14_li_0_span_7_Template, 2, 1, "span", 49);
|
|
200
200
|
i0.ɵɵelementEnd()()();
|
|
201
201
|
i0.ɵɵelementStart(8, "ul");
|
|
202
|
-
i0.ɵɵtemplate(9, ListComponent_ng_template_14_li_0_li_9_Template, 3,
|
|
202
|
+
i0.ɵɵtemplate(9, ListComponent_ng_template_14_li_0_li_9_Template, 3, 15, "li", 50);
|
|
203
203
|
i0.ɵɵelementEnd()()();
|
|
204
204
|
} if (rf & 2) {
|
|
205
|
-
const
|
|
206
|
-
const
|
|
207
|
-
i0.ɵɵadvance();
|
|
208
|
-
i0.ɵɵproperty("ngClass",
|
|
209
|
-
i0.ɵɵattribute("tabindex",
|
|
210
|
-
i0.ɵɵadvance();
|
|
211
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c6,
|
|
205
|
+
const groupObj_r26 = ctx.$implicit;
|
|
206
|
+
const ctx_r25 = i0.ɵɵnextContext(2);
|
|
207
|
+
i0.ɵɵadvance(1);
|
|
208
|
+
i0.ɵɵproperty("ngClass", ctx_r25.listclass);
|
|
209
|
+
i0.ɵɵattribute("tabindex", ctx_r25.tabindex);
|
|
210
|
+
i0.ɵɵadvance(1);
|
|
211
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c6, ctx_r25.collapsible));
|
|
212
212
|
i0.ɵɵadvance(2);
|
|
213
|
-
i0.ɵɵtextInterpolate1("",
|
|
213
|
+
i0.ɵɵtextInterpolate1("", groupObj_r26.key, " ");
|
|
214
214
|
i0.ɵɵadvance(2);
|
|
215
|
-
i0.ɵɵproperty("ngIf",
|
|
216
|
-
i0.ɵɵadvance();
|
|
217
|
-
i0.ɵɵproperty("ngIf",
|
|
218
|
-
i0.ɵɵadvance();
|
|
219
|
-
i0.ɵɵclassMapInterpolate1("list-group clearfix ",
|
|
220
|
-
i0.ɵɵadvance();
|
|
221
|
-
i0.ɵɵproperty("ngForOf",
|
|
215
|
+
i0.ɵɵproperty("ngIf", ctx_r25.collapsible);
|
|
216
|
+
i0.ɵɵadvance(1);
|
|
217
|
+
i0.ɵɵproperty("ngIf", ctx_r25.showcount);
|
|
218
|
+
i0.ɵɵadvance(1);
|
|
219
|
+
i0.ɵɵclassMapInterpolate1("list-group clearfix ", ctx_r25.direction === "horizontal" ? "app-horizontal-list" : "", "");
|
|
220
|
+
i0.ɵɵadvance(1);
|
|
221
|
+
i0.ɵɵproperty("ngForOf", groupObj_r26.data);
|
|
222
222
|
} }
|
|
223
223
|
function ListComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
|
|
224
224
|
i0.ɵɵtemplate(0, ListComponent_ng_template_14_li_0_Template, 10, 12, "li", 43);
|
|
225
225
|
} if (rf & 2) {
|
|
226
|
-
const
|
|
227
|
-
i0.ɵɵproperty("ngForOf",
|
|
226
|
+
const ctx_r11 = i0.ɵɵnextContext();
|
|
227
|
+
i0.ɵɵproperty("ngForOf", ctx_r11.groupedData);
|
|
228
228
|
} }
|
|
229
229
|
const DEFAULT_CLS = 'app-livelist app-panel';
|
|
230
230
|
const WIDGET_CONFIG = { widgetType: 'wm-list', hostClass: DEFAULT_CLS };
|
|
@@ -294,10 +294,10 @@ export class ListComponent extends StylableComponent {
|
|
|
294
294
|
}
|
|
295
295
|
$appDigest();
|
|
296
296
|
}
|
|
297
|
-
constructor(inj, cdRef, datePipe, app, appDefaults, ngZone, binditemclass, binddisableitem, binddataset, binddatasource, mouseEnterCB, mouseLeaveCB, statePersistence, paginationService
|
|
297
|
+
constructor(inj, cdRef, datePipe, app, appDefaults, ngZone, binditemclass, binddisableitem, binddataset, binddatasource, mouseEnterCB, mouseLeaveCB, statePersistence, paginationService) {
|
|
298
298
|
let resolveFn = noop;
|
|
299
299
|
const propsInitPromise = new Promise(res => resolveFn = res);
|
|
300
|
-
super(inj, WIDGET_CONFIG,
|
|
300
|
+
super(inj, WIDGET_CONFIG, propsInitPromise);
|
|
301
301
|
this.propsInitPromise = propsInitPromise;
|
|
302
302
|
this.promiseResolverFn = resolveFn;
|
|
303
303
|
styler(this.nativeElement, this, APPLY_STYLES_TYPE.SHELL);
|
|
@@ -1300,7 +1300,7 @@ export class ListComponent extends StylableComponent {
|
|
|
1300
1300
|
super.ngOnDetach();
|
|
1301
1301
|
this._pageLoad = true;
|
|
1302
1302
|
}
|
|
1303
|
-
static { this.ɵfac = function ListComponent_Factory(t) { return new (t || ListComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ToDatePipe), i0.ɵɵdirectiveInject(i2.App), i0.ɵɵdirectiveInject(i2.AppDefaults), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵinjectAttribute('itemclass.bind'), i0.ɵɵinjectAttribute('disableitem.bind'), i0.ɵɵinjectAttribute('dataset.bind'), i0.ɵɵinjectAttribute('datasource.bind'), i0.ɵɵinjectAttribute('mouseenter.event'), i0.ɵɵinjectAttribute('mouseleave.event'), i0.ɵɵdirectiveInject(i2.StatePersistence), i0.ɵɵdirectiveInject(i2.PaginationService)
|
|
1303
|
+
static { this.ɵfac = function ListComponent_Factory(t) { return new (t || ListComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.ToDatePipe), i0.ɵɵdirectiveInject(i2.App), i0.ɵɵdirectiveInject(i2.AppDefaults), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵinjectAttribute('itemclass.bind'), i0.ɵɵinjectAttribute('disableitem.bind'), i0.ɵɵinjectAttribute('dataset.bind'), i0.ɵɵinjectAttribute('datasource.bind'), i0.ɵɵinjectAttribute('mouseenter.event'), i0.ɵɵinjectAttribute('mouseleave.event'), i0.ɵɵdirectiveInject(i2.StatePersistence), i0.ɵɵdirectiveInject(i2.PaginationService)); }; }
|
|
1304
1304
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListComponent, selectors: [["div", "wmList", ""]], contentQueries: function ListComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
1305
1305
|
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
|
1306
1306
|
i0.ɵɵcontentQuery(dirIndex, _c1, 5);
|
|
@@ -1321,55 +1321,61 @@ export class ListComponent extends StylableComponent {
|
|
|
1321
1321
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listItems = _t);
|
|
1322
1322
|
} }, features: [i0.ɵɵProvidersFeature([
|
|
1323
1323
|
provideAsWidgetRef(ListComponent)
|
|
1324
|
-
]), i0.ɵɵInheritDefinitionFeature], attrs: _c3, decls: 16, vars: 19, consts: [["
|
|
1325
|
-
|
|
1326
|
-
i0.ɵɵtemplate(
|
|
1324
|
+
]), i0.ɵɵInheritDefinitionFeature], attrs: _c3, decls: 16, vars: 19, consts: [["class", "panel-heading", 4, "ngIf"], ["class", "app-datanavigator", "aria-label", "Page navigation", 4, "ngIf"], ["aria-live", "polite", "aria-atomic", "true", "class", "sr-only", 4, "ngIf"], ["class", "sr-only", 3, "id", 4, "ngIf"], ["aria-live", "assertive", "class", "sr-only", 4, "ngIf"], ["role", "list", 3, "hidden", "keydown.enter", "keydown.space", "keydown.arrowup", "keydown.arrowdown", "keydown.arrowleft", "keydown.arrowright", "keydown.shift.arrowup", "keydown.shift.arrowdown", "keydown.shift.arrowleft", "keydown.shift.arrowright"], [3, "ngIf", "ngIfElse"], [3, "ngTemplateOutlet"], ["class", "no-data-msg", 3, "textContent", 4, "ngIf"], ["class", "loading-data-msg", 4, "ngIf"], ["class", "app-datanavigator", 4, "ngIf"], ["class", "panel-footer", 3, "hidden", 4, "ngIf"], ["groupedListTemplate", ""], [1, "panel-heading"], [1, "panel-title"], [1, "pull-left"], ["aria-hidden", "true", 3, "hidden"], [1, "heading", 3, "innerHTML"], [1, "description", 3, "innerHTML"], ["aria-label", "Page navigation", 1, "app-datanavigator"], [1, "pager"], [1, "previous", 3, "ngClass"], ["href", "javascript:void(0);", 3, "click"], ["aria-hidden", "true", 1, "wi", "wi-chevron-left"], [1, "sr-only"], ["aria-live", "polite", "aria-atomic", "true", 1, "sr-only"], [1, "sr-only", 3, "id"], ["aria-live", "assertive", 1, "sr-only"], ["role", "listitem", 3, "class", "ngClass", "wmListItem", 4, "ngFor", "ngForOf"], ["role", "listitem", 3, "ngClass", "wmListItem"], ["listItemRef", "listItemRef"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "no-data-msg", 3, "textContent"], [1, "loading-data-msg"], ["aria-hidden", "true", 1, "app-icon", "panel-icon", "fa-spin", 3, "ngClass"], [1, "loading-text", 3, "textContent"], [1, "app-datanavigator"], [1, "next", 3, "ngClass"], ["aria-hidden", "true", 1, "wi", "wi-chevron-right"], [1, "panel-footer", 3, "hidden"], ["wmPagination", "", "navigationalign.bind", "navigationalign", "navigation.bind", "navControls", "showrecordcount.bind", "showrecordcount", "maxsize.bind", "maxsize", "boundarylinks.bind", "boundarylinks", "forceellipses.bind", "forceellipses", "directionlinks.bind", "directionlinks", "show.bind", "!onDemandLoad", "paginationchange.event", "beforePaginationChange($event, $index)"], ["href", "javascript:void(0);", "class", "app-button btn btn-block", 3, "ngClass", "textContent", "click", 4, "ngIf"], ["href", "javascript:void(0);", 1, "app-button", "btn", "btn-block", 3, "ngClass", "textContent", "click"], ["class", "app-list-item-group clearfix", 4, "ngFor", "ngForOf"], [1, "app-list-item-group", "clearfix"], [1, "list-group", "item-group", 3, "ngClass"], [1, "app-list-item-header", "list-item", "list-group-header", 3, "ngClass", "click"], [1, "header-action"], ["class", "app-icon wi action wi-chevron-up", 4, "ngIf"], ["class", "label label-default", 4, "ngIf"], [3, "class", "ngClass", "wmListItem", 4, "ngFor", "ngForOf"], [1, "app-icon", "wi", "action", "wi-chevron-up"], [1, "label", "label-default"], [3, "ngClass", "wmListItem"]], template: function ListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1325
|
+
i0.ɵɵtemplate(0, ListComponent_div_0_Template, 7, 6, "div", 0);
|
|
1326
|
+
i0.ɵɵtemplate(1, ListComponent_div_1_Template, 7, 6, "div", 1);
|
|
1327
|
+
i0.ɵɵtemplate(2, ListComponent_div_2_Template, 2, 1, "div", 2);
|
|
1327
1328
|
i0.ɵɵelementStart(3, "div");
|
|
1328
|
-
i0.ɵɵtemplate(4, ListComponent_div_4_Template, 2, 1, "div",
|
|
1329
|
+
i0.ɵɵtemplate(4, ListComponent_div_4_Template, 2, 1, "div", 3);
|
|
1330
|
+
i0.ɵɵtemplate(5, ListComponent_div_5_Template, 2, 1, "div", 4);
|
|
1329
1331
|
i0.ɵɵelementEnd();
|
|
1330
|
-
i0.ɵɵelementStart(6, "ul",
|
|
1331
|
-
i0.ɵɵlistener("keydown.enter", function ListComponent_Template_ul_keydown_enter_6_listener($event) {
|
|
1332
|
-
i0.ɵɵtemplate(7, ListComponent_ng_template_7_Template, 1, 1, "ng-template",
|
|
1333
|
-
i0.ɵɵelementContainer(8,
|
|
1332
|
+
i0.ɵɵelementStart(6, "ul", 5);
|
|
1333
|
+
i0.ɵɵlistener("keydown.enter", function ListComponent_Template_ul_keydown_enter_6_listener($event) { return ctx.handleKeyDown($event, "select"); })("keydown.space", function ListComponent_Template_ul_keydown_space_6_listener($event) { return ctx.handleKeyDown($event, "space"); })("keydown.arrowup", function ListComponent_Template_ul_keydown_arrowup_6_listener($event) { return ctx.handleKeyDown($event, "focusPrev"); })("keydown.arrowdown", function ListComponent_Template_ul_keydown_arrowdown_6_listener($event) { return ctx.handleKeyDown($event, "focusNext"); })("keydown.arrowleft", function ListComponent_Template_ul_keydown_arrowleft_6_listener($event) { return ctx.handleKeyDown($event, "focusPrev"); })("keydown.arrowright", function ListComponent_Template_ul_keydown_arrowright_6_listener($event) { return ctx.handleKeyDown($event, "focusNext"); })("keydown.shift.arrowup", function ListComponent_Template_ul_keydown_shift_arrowup_6_listener($event) { return ctx.handleKeyDown($event, "selectPrev"); })("keydown.shift.arrowdown", function ListComponent_Template_ul_keydown_shift_arrowdown_6_listener($event) { return ctx.handleKeyDown($event, "selectNext"); })("keydown.shift.arrowleft", function ListComponent_Template_ul_keydown_shift_arrowleft_6_listener($event) { return ctx.handleKeyDown($event, "selectPrev"); })("keydown.shift.arrowright", function ListComponent_Template_ul_keydown_shift_arrowright_6_listener($event) { return ctx.handleKeyDown($event, "selectNext"); });
|
|
1334
|
+
i0.ɵɵtemplate(7, ListComponent_ng_template_7_Template, 1, 1, "ng-template", 6);
|
|
1335
|
+
i0.ɵɵelementContainer(8, 7)(9, 7);
|
|
1334
1336
|
i0.ɵɵelementEnd();
|
|
1335
|
-
i0.ɵɵtemplate(10, ListComponent_div_10_Template, 1, 1, "div",
|
|
1337
|
+
i0.ɵɵtemplate(10, ListComponent_div_10_Template, 1, 1, "div", 8);
|
|
1338
|
+
i0.ɵɵtemplate(11, ListComponent_div_11_Template, 6, 2, "div", 9);
|
|
1339
|
+
i0.ɵɵtemplate(12, ListComponent_div_12_Template, 7, 6, "div", 10);
|
|
1340
|
+
i0.ɵɵtemplate(13, ListComponent_div_13_Template, 3, 2, "div", 11);
|
|
1341
|
+
i0.ɵɵtemplate(14, ListComponent_ng_template_14_Template, 1, 1, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
|
|
1336
1342
|
} if (rf & 2) {
|
|
1337
|
-
const
|
|
1343
|
+
const _r10 = i0.ɵɵreference(15);
|
|
1338
1344
|
i0.ɵɵproperty("ngIf", ctx.title || ctx.subheading || ctx.iconclass);
|
|
1339
|
-
i0.ɵɵadvance();
|
|
1345
|
+
i0.ɵɵadvance(1);
|
|
1340
1346
|
i0.ɵɵproperty("ngIf", ctx.navigation === "Inline" && !ctx.noDataFound);
|
|
1341
|
-
i0.ɵɵadvance();
|
|
1347
|
+
i0.ɵɵadvance(1);
|
|
1342
1348
|
i0.ɵɵproperty("ngIf", ctx.navigation === "Inline" && !ctx.noDataFound);
|
|
1343
1349
|
i0.ɵɵadvance(2);
|
|
1344
1350
|
i0.ɵɵproperty("ngIf", ctx.enablereorder);
|
|
1345
|
-
i0.ɵɵadvance();
|
|
1351
|
+
i0.ɵɵadvance(1);
|
|
1346
1352
|
i0.ɵɵproperty("ngIf", ctx.listItems && ctx.enablereorder && ctx.currentIndex);
|
|
1347
|
-
i0.ɵɵadvance();
|
|
1353
|
+
i0.ɵɵadvance(1);
|
|
1348
1354
|
i0.ɵɵclassMapInterpolate2("app-livelist-container clearfix ", ctx.direction === "horizontal" ? "app-horizontal-list" : "", " ", ctx.listclass, "");
|
|
1349
1355
|
i0.ɵɵproperty("hidden", ctx.noDataFound && !ctx.variableInflight);
|
|
1350
1356
|
i0.ɵɵattribute("tabindex", ctx.tabindex);
|
|
1351
|
-
i0.ɵɵadvance();
|
|
1352
|
-
i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse",
|
|
1353
|
-
i0.ɵɵadvance();
|
|
1357
|
+
i0.ɵɵadvance(1);
|
|
1358
|
+
i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", _r10);
|
|
1359
|
+
i0.ɵɵadvance(1);
|
|
1354
1360
|
i0.ɵɵproperty("ngTemplateOutlet", ctx.listLeftActionTemplate);
|
|
1355
|
-
i0.ɵɵadvance();
|
|
1361
|
+
i0.ɵɵadvance(1);
|
|
1356
1362
|
i0.ɵɵproperty("ngTemplateOutlet", ctx.listRightActionTemplate);
|
|
1357
|
-
i0.ɵɵadvance();
|
|
1363
|
+
i0.ɵɵadvance(1);
|
|
1358
1364
|
i0.ɵɵproperty("ngIf", ctx.noDataFound && !ctx.variableInflight);
|
|
1359
|
-
i0.ɵɵadvance();
|
|
1365
|
+
i0.ɵɵadvance(1);
|
|
1360
1366
|
i0.ɵɵproperty("ngIf", ctx.variableInflight && !ctx.pulltorefresh);
|
|
1361
|
-
i0.ɵɵadvance();
|
|
1367
|
+
i0.ɵɵadvance(1);
|
|
1362
1368
|
i0.ɵɵproperty("ngIf", ctx.navigation === "Inline" && !ctx.noDataFound);
|
|
1363
|
-
i0.ɵɵadvance();
|
|
1369
|
+
i0.ɵɵadvance(1);
|
|
1364
1370
|
i0.ɵɵproperty("ngIf", ctx.navigation !== "None");
|
|
1365
1371
|
} }, encapsulation: 2 }); }
|
|
1366
1372
|
}
|
|
1367
|
-
(()
|
|
1373
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListComponent, [{
|
|
1368
1374
|
type: Component,
|
|
1369
1375
|
args: [{ selector: 'div[wmList]', providers: [
|
|
1370
1376
|
provideAsWidgetRef(ListComponent)
|
|
1371
|
-
], template: "<div class=\"panel-heading\" *ngIf=\"title || subheading || iconclass\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\">\n <i class=\"app-icon panel-icon {{iconclass}}\" aria-hidden=\"true\" [hidden]=\"!iconclass\"></i>\n </div>\n <div class=\"pull-left\">\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n </div>\n </h3>\n</div>\n\n<div class=\"app-datanavigator\" [attr.aria-disabled]=\"dataNavigator.isDisablePrevious\" aria-label=\"Page navigation\" *ngIf=\"navigation === 'Inline' && !noDataFound\">\n <ul class=\"pager\">\n <li class=\"previous\" [ngClass]=\"{'disabled': (dataNavigator ? dataNavigator.isDisablePrevious : true)}\">\n <a href=\"javascript:void(0);\" (click)=\"dataNavigator.navigatePage('prev', $event)\"\n [attr.aria-disabled]=\"dataNavigator.isDisablePrevious\">\n <i class=\"wi wi-chevron-left\" aria-hidden=\"true\"></i>\n <span class=\"sr-only\">Go to Previous page {{dataNavigator.isDisablePrevious ? ', Disabled' : ''}}</span>\n </a>\n </li>\n </ul>\n</div>\n<div *ngIf=\"navigation === 'Inline' && !noDataFound\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\"> {{'Page ' + dataNavigator.dn.currentPage + ' of ' + dataNavigator.pageCount }}</div>\n\n<div>\n <div id={{titleId}} class=\"sr-only\" *ngIf=\"enablereorder\">\n Press space bar to toggle drag drop mode, use arrow keys to move selected elements.\n </div>\n\n <div aria-live=\"assertive\" *ngIf=\"listItems && enablereorder && currentIndex\" class=\"sr-only\" >\n {{ariaText + currentIndex + ' of ' + listItems.length}}\n </div>\n</div>\n\n<ul [attr.tabindex]=\"tabindex\" class=\"app-livelist-container clearfix {{direction === 'horizontal' ? 'app-horizontal-list': ''}} {{listclass}}\" role=\"list\"\n (keydown.enter)=\"handleKeyDown($event, 'select')\"\n\n (keydown.space)=\"handleKeyDown($event, 'space')\"\n\n (keydown.arrowup)=\"handleKeyDown($event, 'focusPrev')\"\n (keydown.arrowdown)=\"handleKeyDown($event, 'focusNext')\"\n (keydown.arrowleft)=\"handleKeyDown($event, 'focusPrev')\"\n (keydown.arrowright)=\"handleKeyDown($event, 'focusNext')\"\n\n (keydown.shift.arrowup)=\"handleKeyDown($event, 'selectPrev')\"\n (keydown.shift.arrowdown)=\"handleKeyDown($event, 'selectNext')\"\n (keydown.shift.arrowleft)=\"handleKeyDown($event, 'selectPrev')\"\n (keydown.shift.arrowright)=\"handleKeyDown($event, 'selectNext')\"\n [hidden]=\"noDataFound && !variableInflight\"\n>\n <ng-template [ngIf]=\"!groupby\" [ngIfElse]=\"groupedListTemplate\">\n <li *ngFor=\"let item of fieldDefs; index as $index; first as $first; last as $last;\" class=\"app-list-item {{direction === 'horizontal' ? '' : itemsPerRowClass}}\" [ngClass]=\"listItemRef.itemClass\"\n [wmListItem]=\"item\"\n #listItemRef=\"listItemRef\"\n [attr.tabindex]=\"tabindex\"\n role=\"listitem\">\n <ng-container [ngTemplateOutlet]=\"listTemplate\"
|
|
1372
|
-
}], ()
|
|
1377
|
+
], template: "<div class=\"panel-heading\" *ngIf=\"title || subheading || iconclass\">\n <h3 class=\"panel-title\">\n <div class=\"pull-left\">\n <i class=\"app-icon panel-icon {{iconclass}}\" aria-hidden=\"true\" [hidden]=\"!iconclass\"></i>\n </div>\n <div class=\"pull-left\">\n <div class=\"heading\" [innerHTML]=\"title\"></div>\n <div class=\"description\" [innerHTML]=\"subheading\"></div>\n </div>\n </h3>\n</div>\n\n<div class=\"app-datanavigator\" [attr.aria-disabled]=\"dataNavigator.isDisablePrevious\" aria-label=\"Page navigation\" *ngIf=\"navigation === 'Inline' && !noDataFound\">\n <ul class=\"pager\">\n <li class=\"previous\" [ngClass]=\"{'disabled': (dataNavigator ? dataNavigator.isDisablePrevious : true)}\">\n <a href=\"javascript:void(0);\" (click)=\"dataNavigator.navigatePage('prev', $event)\"\n [attr.aria-disabled]=\"dataNavigator.isDisablePrevious\">\n <i class=\"wi wi-chevron-left\" aria-hidden=\"true\"></i>\n <span class=\"sr-only\">Go to Previous page {{dataNavigator.isDisablePrevious ? ', Disabled' : ''}}</span>\n </a>\n </li>\n </ul>\n</div>\n<div *ngIf=\"navigation === 'Inline' && !noDataFound\" aria-live=\"polite\" aria-atomic=\"true\" class=\"sr-only\"> {{'Page ' + dataNavigator.dn.currentPage + ' of ' + dataNavigator.pageCount }}</div>\n\n<div>\n <div id={{titleId}} class=\"sr-only\" *ngIf=\"enablereorder\">\n Press space bar to toggle drag drop mode, use arrow keys to move selected elements.\n </div>\n\n <div aria-live=\"assertive\" *ngIf=\"listItems && enablereorder && currentIndex\" class=\"sr-only\" >\n {{ariaText + currentIndex + ' of ' + listItems.length}}\n </div>\n</div>\n\n<ul [attr.tabindex]=\"tabindex\" class=\"app-livelist-container clearfix {{direction === 'horizontal' ? 'app-horizontal-list': ''}} {{listclass}}\" role=\"list\"\n (keydown.enter)=\"handleKeyDown($event, 'select')\"\n\n (keydown.space)=\"handleKeyDown($event, 'space')\"\n\n (keydown.arrowup)=\"handleKeyDown($event, 'focusPrev')\"\n (keydown.arrowdown)=\"handleKeyDown($event, 'focusNext')\"\n (keydown.arrowleft)=\"handleKeyDown($event, 'focusPrev')\"\n (keydown.arrowright)=\"handleKeyDown($event, 'focusNext')\"\n\n (keydown.shift.arrowup)=\"handleKeyDown($event, 'selectPrev')\"\n (keydown.shift.arrowdown)=\"handleKeyDown($event, 'selectNext')\"\n (keydown.shift.arrowleft)=\"handleKeyDown($event, 'selectPrev')\"\n (keydown.shift.arrowright)=\"handleKeyDown($event, 'selectNext')\"\n [hidden]=\"noDataFound && !variableInflight\"\n>\n <ng-template [ngIf]=\"!groupby\" [ngIfElse]=\"groupedListTemplate\">\n <li *ngFor=\"let item of fieldDefs; index as $index; first as $first; last as $last;\" class=\"app-list-item {{direction === 'horizontal' ? '' : itemsPerRowClass}}\" [ngClass]=\"listItemRef.itemClass\"\n [wmListItem]=\"item\"\n #listItemRef=\"listItemRef\"\n [attr.tabindex]=\"tabindex\"\n role=\"listitem\">\n <ng-container [ngTemplateOutlet]=\"listTemplate\" [ngTemplateOutletContext]=\"{item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets}\"></ng-container>\n </li>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"listLeftActionTemplate\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"listRightActionTemplate\"></ng-container>\n</ul>\n\n<div class=\"no-data-msg\" *ngIf=\"noDataFound && !variableInflight\" [textContent]=\"nodatamessage\"></div>\n\n<div class=\"loading-data-msg\" *ngIf=\"variableInflight && !pulltorefresh\">\n <span>\n <i class=\"app-icon panel-icon fa-spin\" aria-hidden=\"true\" [ngClass]=\"loadingicon\"></i>\n <span class=\"sr-only\">Loading</span>\n <span class=\"loading-text\" [textContent]=\"loadingdatamsg\"></span>\n </span>\n</div>\n\n<div class=\"app-datanavigator\" [attr.aria-disabled]=\"dataNavigator.isDisableNext\" *ngIf=\"navigation === 'Inline' && !noDataFound\">\n <ul class=\"pager\">\n <li class=\"next\" [ngClass]=\"{'disabled': (dataNavigator ? dataNavigator.isDisableNext : true)}\">\n <a href=\"javascript:void(0);\" (click)=\"dataNavigator.navigatePage('next', $event)\"\n [attr.aria-disabled]=\"dataNavigator.isDisableNext\">\n <i class=\"wi wi-chevron-right\" aria-hidden=\"true\"></i>\n <span class=\"sr-only\">Go to Next page {{dataNavigator.isDisableNext ? ', Disabled' : ''}}</span>\n </a>\n </li>\n </ul>\n</div>\n\n<div class=\"panel-footer\" *ngIf=\"navigation !== 'None'\" [hidden]=\"!showNavigation || (onDemandLoad && dataNavigator.isDisableNext) || (dataNavigator.dataSize <= pagesize) || (!dataNavigator.dataSize && !dataNavigator.datasource?.pagination?.next)\">\n <nav wmPagination\n navigationalign.bind=\"navigationalign\"\n navigation.bind=\"navControls\"\n showrecordcount.bind=\"showrecordcount\"\n maxsize.bind=\"maxsize\"\n boundarylinks.bind=\"boundarylinks\"\n forceellipses.bind=\"forceellipses\"\n directionlinks.bind=\"directionlinks\"\n show.bind=\"!onDemandLoad\"\n paginationchange.event=\"beforePaginationChange($event, $index)\"\n ></nav>\n <a *ngIf=\"onDemandLoad\" href=\"javascript:void(0);\"\n (click)=\"dataNavigator.navigatePage('next', $event)\"\n class=\"app-button btn btn-block\"\n [ngClass]=\"paginationclass\"\n [textContent]=\"ondemandmessage\"\n ></a>\n</div>\n\n<!--This template will be displayed when groupby is specified-->\n<ng-template #groupedListTemplate>\n <li *ngFor=\"let groupObj of groupedData\" class=\"app-list-item-group clearfix\">\n <ul [attr.tabindex]=\"tabindex\" class=\"list-group item-group\" [ngClass]=\"listclass\">\n <li class=\"app-list-item-header list-item list-group-header\" (click)=\"handleHeaderClick($event)\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4>{{groupObj.key}}\n <div class=\"header-action\">\n <i class=\"app-icon wi action wi-chevron-up\" *ngIf=\"collapsible\"></i>\n <span *ngIf=\"showcount\" class=\"label label-default\">{{groupObj.data.length}}</span>\n </div>\n </h4>\n </li>\n <ul class=\"list-group clearfix {{direction === 'horizontal' ? 'app-horizontal-list': ''}}\">\n <li *ngFor=\"let item of groupObj.data; index as $index; first as $first; last as $last;\" [attr.tabindex]=\"tabindex\"\n class=\"app-list-item group-list-item {{itemsPerRowClass}}\"\n [ngClass]=\"listItemRef.itemClass\"\n [wmListItem]=\"item\" #listItemRef=\"listItemRef\">\n <ng-container [ngTemplateOutlet]=\"listTemplate\" [ngTemplateOutletContext]=\"{item: item, $index: $index, itemRef: listItemRef, $first: $first, $last: $last, currentItemWidgets: listItemRef.currentItemWidgets}\"></ng-container>\n </li>\n </ul>\n </ul>\n </li>\n</ng-template>\n" }]
|
|
1378
|
+
}], function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.ToDatePipe }, { type: i2.App }, { type: i2.AppDefaults }, { type: i0.NgZone }, { type: undefined, decorators: [{
|
|
1373
1379
|
type: Attribute,
|
|
1374
1380
|
args: ['itemclass.bind']
|
|
1375
1381
|
}] }, { type: undefined, decorators: [{
|
|
@@ -1387,12 +1393,7 @@ export class ListComponent extends StylableComponent {
|
|
|
1387
1393
|
}] }, { type: undefined, decorators: [{
|
|
1388
1394
|
type: Attribute,
|
|
1389
1395
|
args: ['mouseleave.event']
|
|
1390
|
-
}] }, { type: i2.StatePersistence }, { type: i2.PaginationService }, {
|
|
1391
|
-
type: Inject,
|
|
1392
|
-
args: ['EXPLICIT_CONTEXT']
|
|
1393
|
-
}, {
|
|
1394
|
-
type: Optional
|
|
1395
|
-
}] }], { listTemplate: [{
|
|
1396
|
+
}] }, { type: i2.StatePersistence }, { type: i2.PaginationService }]; }, { listTemplate: [{
|
|
1396
1397
|
type: ContentChild,
|
|
1397
1398
|
args: ['listTemplate']
|
|
1398
1399
|
}], listLeftActionTemplate: [{
|
|
@@ -1411,5 +1412,4 @@ export class ListComponent extends StylableComponent {
|
|
|
1411
1412
|
type: ViewChildren,
|
|
1412
1413
|
args: [ListItemDirective]
|
|
1413
1414
|
}] }); })();
|
|
1414
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListComponent, { className: "ListComponent", filePath: "list.component.ts", lineNumber: 63 }); })();
|
|
1415
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9saXN0L3NyYy9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL2xpc3Qvc3JjL2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ0gsTUFBTSxFQUNsQixRQUFRLEVBQ1IsTUFBTSxFQUdOLFFBQVEsRUFDUixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUNILFVBQVUsRUFDVixlQUFlLEVBQ2YsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLFdBQVcsRUFDWCxRQUFRLEVBQ1IsUUFBUSxFQUNSLElBQUksRUFDSixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osWUFBWSxFQUNmLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZ0NBQWdDLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBYSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pTLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFB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QkFBd0I7WUFDRyx1QkFBdUI7a0JBQS9ELFlBQVk7bUJBQUMseUJBQXlCO1lBQ0wsYUFBYTtrQkFBOUMsZUFBZTttQkFBQyxlQUFlO1lBRUEsYUFBYTtrQkFBNUMsU0FBUzttQkFBQyxtQkFBbUI7WUFDRyxTQUFTO2tCQUF6QyxZQUFZO21CQUFDLGlCQUFpQjs7a0ZBVnRCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gICAgJGFwcERpZ2VzdCxcbiAgICAkaW52b2tlV2F0Y2hlcnMsXG4gICAgQXBwLFxuICAgIEFwcERlZmF1bHRzLFxuICAgIERhdGFTb3VyY2UsXG4gICAgZ2V0Q2xvbmVkT2JqZWN0LFxuICAgIGlzRGF0YVNvdXJjZUVxdWFsLFxuICAgIGlzRGVmaW5lZCxcbiAgICBpc01vYmlsZSxcbiAgICBpc01vYmlsZUFwcCxcbiAgICBpc051bWJlcixcbiAgICBpc09iamVjdCxcbiAgICBub29wLFxuICAgIHN3aXRjaENsYXNzLFxuICAgIFN0YXRlUGVyc2lzdGVuY2UsXG4gICAgUGFnaW5hdGlvblNlcnZpY2UsXG4gICAgc2V0TGlzdENsYXNzLFxuICAgIGdlbmVyYXRlR1VJZFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBBUFBMWV9TVFlMRVNfVFlQRSwgY29uZmlndXJlRG5ELCBERUJPVU5DRV9USU1FUywgZ2V0T3JkZXJlZERhdGFzZXQsIGdyb3VwRGF0YSwgaGFuZGxlSGVhZGVyQ2xpY2ssIE5BVklHQVRJT05fVFlQRSwgdW5zdXBwb3J0ZWRTdGF0ZVBlcnNpc3RlbmNlVHlwZXMsIHByb3ZpZGVBc1dpZGdldFJlZiwgU3R5bGFibGVDb21wb25lbnQsIHN0eWxlciwgVG9EYXRlUGlwZSwgdG9nZ2xlQWxsSGVhZGVycywgV2lkZ2V0UmVmLCBleHRyYWN0RGF0YVNvdXJjZU5hbWUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcbmltcG9ydCB7IFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9kYXRhL3BhZ2luYXRpb24nO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvaW5wdXQnO1xuXG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi9saXN0LnByb3BzJztcbmltcG9ydCB7IExpc3RJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9saXN0LWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IExpc3RBbmltYXRvciB9IGZyb20gJy4vbGlzdC5hbmltYXRvcic7XG5cbmRlY2xhcmUgY29uc3QgXztcbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLWxpdmVsaXN0IGFwcC1wYW5lbCc7XG5jb25zdCBXSURHRVRfQ09ORklHID0ge3dpZGdldFR5cGU6ICd3bS1saXN0JywgaG9zdENsYXNzOiBERUZBVUxUX0NMU307XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZGl2W3dtTGlzdF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKExpc3RDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgc3RhdGljIGluaXRpYWxpemVQcm9wcyA9IHJlZ2lzdGVyUHJvcHMoKTtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2xpc3RUZW1wbGF0ZScpIGxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudFJlZj47XG5cbiAgICBAQ29udGVudENoaWxkKCdsaXN0TGVmdEFjdGlvblRlbXBsYXRlJykgbGlzdExlZnRBY3Rpb25UZW1wbGF0ZTogIFRlbXBsYXRlUmVmPEVsZW1lbnRSZWY+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2xpc3RSaWdodEFjdGlvblRlbXBsYXRlJykgbGlzdFJpZ2h0QWN0aW9uVGVtcGxhdGU6ICBUZW1wbGF0ZVJlZjxFbGVtZW50UmVmPjtcbiAgICBAQ29udGVudENoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCkgYnRuQ29tcG9uZW50cztcblxuICAgIEBWaWV3Q2hpbGQoUGFnaW5hdGlvbkNvbXBvbmVudCkgZGF0YU5hdmlnYXRvcjtcbiAgICBAVmlld0NoaWxkcmVuKExpc3RJdGVtRGlyZWN0aXZlKSBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxMaXN0SXRlbURpcmVjdGl2ZT47XG5cbiAgICBwcml2YXRlIGl0ZW1zUGVyUm93Q2xhc3M6IHN0cmluZztcbiAgICBwcml2YXRlIGZpcnN0U2VsZWN0ZWRJdGVtOiBMaXN0SXRlbURpcmVjdGl2ZTtcbiAgICBwcml2YXRlIG5hdmlnYXRvck1heFJlc3VsdFdhdGNoOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBuYXZpZ2F0b3JSZXN1bHRXYXRjaDogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgbmF2Q29udHJvbHM6IHN0cmluZztcbiAgICBwcml2YXRlIG9uRGVtYW5kTG9hZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9pdGVtczogQXJyYXk8YW55PjtcbiAgICBwcml2YXRlIGRhdGFOYXZpZ2F0b3JXYXRjaGVkOiBib29sZWFuO1xuICAgIHByaXZhdGUgZGF0YXNvdXJjZTogYW55O1xuICAgIHByaXZhdGUgc2hvd05hdmlnYXRpb246IGJvb2xlYW47XG4gICAgcHVibGljIG5vRGF0YUZvdW5kOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVvcmRlclByb3BzOiBhbnk7XG4gICAgcHJpdmF0ZSBhcHA6IGFueTtcbiAgICBwcml2YXRlIGFwcERlZmF1bHRzOiBhbnk7XG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZTtcbiAgICBwcml2YXRlIHN0YXRlUGVyc2lzdGVuY2U6IFN0YXRlUGVyc2lzdGVuY2U7XG4gICAgcHJpdmF0ZSBwYWdpbmF0aW9uU2VydmljZTogUGFnaW5hdGlvblNlcnZpY2U7XG5cbiAgICBwdWJsaWMgbGFzdFNlbGVjdGVkSXRlbTogTGlzdEl0ZW1EaXJlY3RpdmU7XG4gICAgcHVibGljIGZpZWxkRGVmczogQXJyYXk8YW55PjtcbiAgICBwdWJsaWMgZGlzYWJsZWl0ZW07XG4gICAgcHVibGljIG5hdmlnYXRpb246IHN0cmluZztcbiAgICBwdWJsaWMgbmF2aWdhdGlvbmFsaWduOiBzdHJpbmc7XG4gICAgcHVibGljIHBhZ2VzaXplOiBudW1iZXI7XG4gICAgcHVibGljIGRhdGFzZXQ6IGFueTtcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3Q6IGJvb2xlYW47XG4gICAgcHVibGljIHNlbGVjdGZpcnN0aXRlbTogYm9vbGVhbjtcbiAgICBwdWJsaWMgb3JkZXJieTogc3RyaW5nO1xuICAgIHB1YmxpYyBsb2FkaW5naWNvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBwYWdpbmF0aW9uY2xhc3M6IHN0cmluZztcbiAgICBwdWJsaWMgb25kZW1hbmRtZXNzYWdlOiBzdHJpbmc7XG4gICAgcHVibGljIGxvYWRpbmdkYXRhbXNnOiBzdHJpbmc7XG4gICAgcHVibGljIHNlbGVjdGlvbmxpbWl0OiBudW1iZXI7XG4gICAgcHVibGljIGluZlNjcm9sbDogYm9vbGVhbjtcbiAgICBwdWJsaWMgZW5hYmxlcmVvcmRlcjogYm9vbGVhbjtcbiAgICBwdWJsaWMgaXRlbXNwZXJyb3c6IHN0cmluZztcbiAgICBwdWJsaWMgaXRlbWNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIHNlbGVjdGVkSXRlbVdpZGdldHM6IEFycmF5PFdpZGdldFJlZj4gfCBXaWRnZXRSZWY7XG4gICAgcHVibGljIHZhcmlhYmxlSW5mbGlnaHQ7XG4gICAgcHVibGljIG5hbWU7XG4gICAgcHVibGljIGN1cnJlbnRQYWdlO1xuICAgIHB1YmxpYyBkaXJlY3Rpb247XG4gICAgcHVibGljIHRhYmluZGV4O1xuXG4gICAgcHVibGljIGhhbmRsZUhlYWRlckNsaWNrOiBGdW5jdGlvbjtcbiAgICBwdWJsaWMgdG9nZ2xlQWxsSGVhZGVyczogdm9pZDtcbiAgICBwdWJsaWMgZ3JvdXBieTogc3RyaW5nO1xuICAgIHB1YmxpYyBjb2xsYXBzaWJsZTogc3RyaW5nO1xuICAgIHB1YmxpYyBkYXRlUGlwZTogVG9EYXRlUGlwZTtcbiAgICBwdWJsaWMgYmluZGl0ZW1jbGFzczogc3RyaW5nO1xuICAgIHB1YmxpYyBiaW5kZGlzYWJsZWl0ZW06IHN0cmluZztcbiAgICBwdWJsaWMgYmluZGRhdGFzZXQ6IHN0cmluZztcbiAgICBwcml2YXRlIGJpbmRkYXRhc291cmNlOiBzdHJpbmc7XG4gICAgcHVibGljIG1vdXNlRW50ZXJDQjogc3RyaW5nO1xuICAgIHB1YmxpYyBtb3VzZUxlYXZlQ0I6IHN0cmluZztcblxuICAgIHByaXZhdGUgbWF0Y2g6IHN0cmluZztcbiAgICBwcml2YXRlIGRhdGVmb3JtYXQ6IHN0cmluZztcbiAgICBwcml2YXRlIGdyb3VwZWREYXRhOiBhbnk7XG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gICAgcHJpdmF0ZSBwcm9taXNlUmVzb2x2ZXJGbjogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBwcm9wc0luaXRQcm9taXNlOiBQcm9taXNlPGFueT47XG4gICAgcHJpdmF0ZSAkdWxFbGU6IGFueTtcbiAgICBwcml2YXRlIF9saXN0QW5pbWF0b3I6IExpc3RBbmltYXRvcjtcbiAgICBwdWJsaWMgcHVsbHRvcmVmcmVzaDogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9saXN0ZW5lckRlc3Ryb3llcnM6IEFycmF5PGFueT47XG4gICAgcHJpdmF0ZSBkZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGw6IEZ1bmN0aW9uO1xuXG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gICAgcHVibGljIHN1YmhlYWRpbmc6IHN0cmluZztcbiAgICBwdWJsaWMgaWNvbmNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGxpc3RjbGFzczogYW55O1xuICAgIHByaXZhdGUgaXNEYXRhQ2hhbmdlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgc3RhdGVoYW5kbGVyOiBhbnk7XG4gICAgcHJpdmF0ZSBpc0xpc3RFbGVtZW50TW92YWJsZSA6IGJvb2xlYW47XG4gICAgcHVibGljIGN1cnJlbnRJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgYXJpYVRleHQ6IFN0cmluZztcbiAgICBwdWJsaWMgdGl0bGVJZDogc3RyaW5nIDtcblxuICAgIF9pc0RlcGVuZGVudDtcbiAgICBwcml2YXRlIF9wYWdlTG9hZDtcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1zRXhpc3Q7XG5cbiAgICBwcml2YXRlIHRvdWNoaW5nO1xuICAgIHByaXZhdGUgdG91Y2hlZDtcblxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRpdGVtKCkge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldENsb25lZE9iamVjdCh0aGlzLl9pdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF8uaXNFbXB0eSh0aGlzLl9pdGVtcykpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuX2l0ZW1zWzBdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGxpc3Qgb2Ygd2lkZ2V0cyBwcmVzZW50IG9uIGxpc3QgaXRlbSBieSBjb25zaWRlcmluZyBuYW1lIGFuZCBpbmRleCBvZiB0aGUgd2lkZ2V0LlxuICAgICAqIElmIHdlIGRpZCdudCBwYXNzIGluZGV4LCBpdCByZXR1cm5zIGFycmF5IG9mIGFsbCB0aGUgd2lkZ2V0cyB3aGljaCBhcmUgbWF0Y2hpbmcgdG8gd2lkZ2V0IG5hbWVcbiAgICAgKiBAcGFyYW0gd2lkZ3RlTmFtZTogTmFtZSBvZiB0aGUgd2lkZ2V0XG4gICAgICogQHBhcmFtIGluZGV4OiBJbmRleCBvZiB0aGUgd2lkZ2V0XG4gICAgICovXG4gICAgcHVibGljIGdldFdpZGdldHMod2lkZ3RlTmFtZTogc3RyaW5nLCBpbmRleD86IG51bWJlcikge1xuICAgICAgICBsZXQgJHRhcmdldDtcbiAgICAgICAgY29uc3QgcmV0VmFsID0gW107XG5cbiAgICAgICAgaWYgKCF3aWRndGVOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzRGVmaW5lZChpbmRleCkpIHtcbiAgICAgICAgICAgIF8uZm9yRWFjaCh0aGlzLmxpc3RJdGVtcy50b0FycmF5KCksIChlbCkgPT4ge1xuICAgICAgICAgICAgICAgICR0YXJnZXQgPSBfLmdldChlbC5jdXJyZW50SXRlbVdpZGdldHMsIHdpZGd0ZU5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICgkdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbC5wdXNoKCR0YXJnZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4ID0gK2luZGV4IHx8IDA7XG5cbiAgICAgICAgJHRhcmdldCA9IF8uZ2V0KHRoaXMubGlzdEl0ZW1zLnRvQXJyYXkoKSwgaW5kZXgpO1xuXG4gICAgICAgIGlmICgkdGFyZ2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gW18uZ2V0KCR0YXJnZXQuY3VycmVudEl0ZW1XaWRnZXRzLCB3aWRndGVOYW1lKV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZXR1cm5zIGxpc3RpdGVtIHJlZmVyZW5jZSBieSBpbmRleCB2YWx1ZS4gVGhpcyByZWZlcnMgdG8gdGhlIHNhbWUgbWV0aG9kIGdldExpc3RJdGVtQnlJbmRleC5cbiAgICBwdWJsaWMgZ2V0SXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExpc3RJdGVtQnlJbmRleChpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpbmRleCBvZiBsaXN0SXRlbShsaXN0SXRlbURpcmVjdGl2ZSAvIGxpc3RJdGVtT2JqZWN0KVxuICAgICAqIElmIGl0ZW0gaXMgYSBkaXJlY3RpdmUsIGluZGV4IGlzIGZldGNoZWQgZnJvbSBsaXN0SXRlbXNcbiAgICAgKiBJZiBpdGVtIGlzIGFuIG9iamVjdCwgaW5kZXggaXMgZmV0Y2hlZCBmcm9tIGZpZWxkRGVmc1xuICAgICovXG4gICAgcHVibGljIGdldEluZGV4KGl0ZW06IGFueSkge1xuICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIExpc3RJdGVtRGlyZWN0aXZlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbUluZGV4KGl0ZW0pO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpZWxkRGVmcy5maW5kSW5kZXgoKG9iaikgPT4gXy5pc0VxdWFsKG9iaiwgaXRlbSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBzZWxlY3RlZGl0ZW0oaXRlbXMpIHtcbiAgICAgICAgdGhpcy5faXRlbXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5kZXNlbGVjdExpc3RJdGVtcygpO1xuXG4gICAgICAgIGlmIChfLmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICAgICAgICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4gdGhpcy5zZWxlY3RJdGVtKGl0ZW0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShpdGVtcyk7XG4gICAgICAgIH1cbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIGRhdGVQaXBlOiBUb0RhdGVQaXBlLFxuICAgICAgICBhcHA6IEFwcCxcbiAgICAgICAgYXBwRGVmYXVsdHM6IEFwcERlZmF1bHRzLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgQEF0dHJpYnV0ZSgnaXRlbWNsYXNzLmJpbmQnKSBiaW5kaXRlbWNsYXNzOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ2Rpc2FibGVpdGVtLmJpbmQnKSBiaW5kZGlzYWJsZWl0ZW06IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGF0YXNldC5iaW5kJykgYmluZGRhdGFzZXQ6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGF0YXNvdXJjZS5iaW5kJykgYmluZGRhdGFzb3VyY2U6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnbW91c2VlbnRlci5ldmVudCcpIG1vdXNlRW50ZXJDQjogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdtb3VzZWxlYXZlLmV2ZW50JykgbW91c2VMZWF2ZUNCOiBzdHJpbmcsXG4gICAgICAgIHN0YXRlUGVyc2lzdGVuY2U6IFN0YXRlUGVyc2lzdGVuY2UsXG4gICAgICAgIHBhZ2luYXRpb25TZXJ2aWNlOiBQYWdpbmF0aW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdCgnRVhQTElDSVRfQ09OVEVYVCcpIEBPcHRpb25hbCgpIGV4cGxpY2l0Q29udGV4dDogYW55XG4gICAgKSB7XG4gICAgICAgIGxldCByZXNvbHZlRm46IEZ1bmN0aW9uID0gbm9vcDtcbiAgICAgICAgY29uc3QgcHJvcHNJbml0UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlcyA9PiByZXNvbHZlRm4gPSByZXMpO1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCwgcHJvcHNJbml0UHJvbWlzZSk7XG4gICAgICAgIHRoaXMucHJvcHNJbml0UHJvbWlzZSA9IHByb3BzSW5pdFByb21pc2U7XG4gICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmVyRm4gPSByZXNvbHZlRm47XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLlNIRUxMKTtcbiAgICAgICAgdGhpcy5jZFJlZiA9IGNkUmVmO1xuICAgICAgICB0aGlzLm5nWm9uZSA9IG5nWm9uZTtcbiAgICAgICAgdGhpcy5kYXRlUGlwZSA9IGRhdGVQaXBlO1xuICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UgPSBzdGF0ZVBlcnNpc3RlbmNlO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlID0gcGFnaW5hdGlvblNlcnZpY2U7XG4gICAgICAgIHRoaXMuX3BhZ2VMb2FkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmJpbmRpdGVtY2xhc3MgPSBiaW5kaXRlbWNsYXNzO1xuICAgICAgICB0aGlzLmJpbmRkaXNhYmxlaXRlbSA9IGJpbmRkaXNhYmxlaXRlbTtcbiAgICAgICAgdGhpcy5iaW5kZGF0YXNldCA9IGJpbmRkYXRhc2V0O1xuICAgICAgICB0aGlzLm1vdXNlRW50ZXJDQiA9IG1vdXNlRW50ZXJDQjtcbiAgICAgICAgdGhpcy5tb3VzZUxlYXZlQ0IgPSBtb3VzZUxlYXZlQ0I7XG4gICAgICAgIHRoaXMuYmluZGRhdGFzb3VyY2UgPSBiaW5kZGF0YXNvdXJjZTtcblxuICAgICAgICB0aGlzLmFwcCA9IGFwcDtcbiAgICAgICAgdGhpcy5hcHBEZWZhdWx0cyA9IGFwcERlZmF1bHRzO1xuICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLm5vRGF0YUZvdW5kID0gIWJpbmRkYXRhc2V0O1xuICAgICAgICB0aGlzLnRpdGxlSWQgPSAnd21saXN0LScgKyBnZW5lcmF0ZUdVSWQoKTtcblxuICAgICAgICAvLyBVcGRhdGVzIHBhZ2luYXRpb24sIGZpbHRlciwgc29ydCBldGMgb3B0aW9ucyBmb3Igc2VydmljZSBhbmQgY3J1ZCB2YXJpYWJsZXNcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJEZXN0cm95ZXJzID0gW1xuICAgICAgICAgICAgdGhpcy5hcHAuc3Vic2NyaWJlKCdjaGVjay1zdGF0ZS1wZXJzaXN0ZW5jZS1vcHRpb25zJywgb3B0aW9ucyA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFTb3VyY2VOYW1lID0gXy5nZXQodGhpcy5kYXRhc291cmNlLCAnbmFtZScpO1xuICAgICAgICAgICAgICAgIC8vIGluIFByZWZhYnMsIHRoaXMuZGF0YXNvdXJjZSBpcyBub3QgcmVzb2x2ZWQgYXQgdGhlIHRpbWUgb2YgdmFyaWFibGUgaW52b2NhdGlvbiwgc28gYWRkaXRpb25hbCBjaGVjayBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICBpZiAoIWRhdGFTb3VyY2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2VOYW1lID0gZXh0cmFjdERhdGFTb3VyY2VOYW1lKHRoaXMuYmluZGRhdGFzb3VyY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoXy5nZXQob3B0aW9ucywgJ3ZhcmlhYmxlLm5hbWUnKSAhPT0gZGF0YVNvdXJjZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN0YXRlUGFyYW1zKG9wdGlvbnMpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAvLyBTaG93IGxvYWRpbmcgc3RhdHVzIGJhc2VkIG9uIHRoZSB2YXJpYWJsZSBsaWZlIGN5Y2xlXG4gICAgICAgICAgICB0aGlzLmFwcC5zdWJzY3JpYmUoJ3RvZ2dsZS12YXJpYWJsZS1zdGF0ZScsIHRoaXMuaGFuZGxlTG9hZGluZy5iaW5kKHRoaXMpKSxcbiAgICAgICAgICAgIHRoaXMuYXBwLnN1YnNjcmliZSgnc2V0dXAtY3VkLWxpc3RlbmVyJywgcGFyYW0gPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCduYW1lJykgIT09IHBhcmFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5faXNEZXBlbmRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbmZpZ3VyZWRTdGF0ZSgpIHtcbiAgICAgICAgY29uc3QgbW9kZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5jb21wdXRlTW9kZSh0aGlzLnN0YXRlaGFuZGxlcik7XG4gICAgICAgIHJldHVybiBtb2RlICYmIG1vZGUudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVN0YXRlUGFyYW1zKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhZ2VMb2FkICYmIHRoaXMuZ2V0Q29uZmlndXJlZFN0YXRlKCkgIT09ICdub25lJykge1xuICAgICAgICAgICAgdGhpcy5fcGFnZUxvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IHdpZGdldFN0YXRlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmdldFdpZGdldFN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgaWYgKF8uZ2V0KHdpZGdldFN0YXRlLCAncGFnaW5hdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgICAgIG9wdGlvbnMub3B0aW9ucy5wYWdlID0gd2lkZ2V0U3RhdGUucGFnaW5hdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfLmdldCh3aWRnZXRTdGF0ZSwgJ3NlbGVjdGVkSXRlbScpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtc0V4aXN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdHJpZ2dlcldNRXZlbnQoZXZlbnROYW1lLCBpdGVtPykge1xuICAgICAgICAkaW52b2tlV2F0Y2hlcnModHJ1ZSk7XG4gICAgICAgIC8vIElmIHdlIGhhdmUgbXVsdGlzZWxlY3QgZm9yIHRoZSBsaXZlbGlzdChMaXN0IHdpdGggZm9ybSB0ZW1wbGF0ZSksIGluIHJ1biBtb2RlIGRlbGV0aW5nIGEgcmVjb3JkIGlzIGdldHRpbmcgZmFpbGVkLiBCZWN1YXNlIHRoZSBzZWxlY3RlZGl0ZW0gd2lsbCBiZSBhcnJheSBvZiBvYmplY3RzLiBTbyBjb25zaWRlciB0aGUgbGFzdCBvYmplY3QuXG4gICAgICAgIGxldCByb3cgPSB0aGlzLm11bHRpc2VsZWN0ID8gXy5sYXN0KHRoaXMuc2VsZWN0ZWRpdGVtKSA6IHRoaXMuc2VsZWN0ZWRpdGVtO1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcm93ID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFwcC5ub3RpZnkoJ3dtLWV2ZW50Jywge2V2ZW50TmFtZSwgd2lkZ2V0TmFtZTogdGhpcy5uYW1lLCByb3c6IHJvd30pO1xuICAgIH1cblxuICAgIGNyZWF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzRGVwZW5kZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJXTUV2ZW50KCdpbnNlcnQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVkaXRSb3coaXRlbT8pIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzRGVwZW5kZW50KSB7XG4gICAgICAgICAgICBsZXQgbGlzdEl0ZW07XG4gICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGxpc3RJdGVtID0gdGhpcy5nZXRJdGVtUmVmQnlJbmRleE9yTW9kZWwoaXRlbSkuaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMudHJpZ2dlcldNRXZlbnQoJ3VwZGF0ZScsIGxpc3RJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZShpdGVtPykge1xuICAgICAgICB0aGlzLmVkaXRSb3coaXRlbSk7XG4gICAgfVxuXG4gICAgZGVsZXRlUm93KGl0ZW0/KSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0RlcGVuZGVudCkge1xuICAgICAgICAgICAgbGV0IGxpc3RJdGVtO1xuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBsaXN0SXRlbSA9IHRoaXMuZ2V0SXRlbVJlZkJ5SW5kZXhPck1vZGVsKGl0ZW0pLml0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJXTUV2ZW50KCdkZWxldGUnLCBsaXN0SXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWxldGUoaXRlbT8pIHtcbiAgICAgICAgdGhpcy5kZWxldGVSb3coaXRlbSk7XG4gICAgfVxuICAgIGhhbmRsZUxvYWRpbmcoZGF0YSkge1xuICAgICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhc291cmNlO1xuICAgICAgICBpZiAoZGF0YVNvdXJjZSAmJiBkYXRhU291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQVBJX0FXQVJFKSAmJiBpc0RhdGFTb3VyY2VFcXVhbChkYXRhLnZhcmlhYmxlLCBkYXRhU291cmNlKSkge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN0YXRlUGFyYW1zKGRhdGEpO1xuICAgICAgICAgICAgICAgIHRoaXMudmFyaWFibGVJbmZsaWdodCA9IGRhdGEuYWN0aXZlO1xuICAgICAgICAgICAgICAgIC8vIEZpeCBmb3IgW1dNUy0yMzc3Ml0gVXBkYXRlIG5vZGF0YWZvdW5kIGZsYWcgb25jZSB0aGUgcmVzcG9uc2UgaXMgcmVjaWV2ZWQgZnJvbSB0aGUgc2VydmVyXG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWxFbGUgPSBkYXRhLmRhdGE/LnBhZ2luYXRpb24/LnRvdGFsRWxlbWVudHM7XG4gICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRvdGFsRWxlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vRGF0YUZvdW5kID0gdG90YWxFbGUgPT09IDAgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gdG90YWxlbGVtZW50cyBpcyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub0RhdGFGb3VuZCA9IF8uaXNFbXB0eShkYXRhLmRhdGE/LmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldE5hdmlnYXRpb24oKSB7XG4gICAgICAgIHRoaXMuc2hvd05hdmlnYXRpb24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5uYXZDb250cm9scyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pbmZTY3JvbGwgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vbkRlbWFuZExvYWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZUJhc2ljTmF2aWdhdGlvbigpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9scyA9IE5BVklHQVRJT05fVFlQRS5CQVNJQztcbiAgICAgICAgdGhpcy5zaG93TmF2aWdhdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVJbmxpbmVOYXZpZ2F0aW9uKCkge1xuICAgICAgICB0aGlzLm5hdkNvbnRyb2xzID0gTkFWSUdBVElPTl9UWVBFLklOTElORTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZUNsYXNzaWNOYXZpZ2F0aW9uKCkge1xuICAgICAgICB0aGlzLm5hdkNvbnRyb2xzID0gTkFWSUdBVElPTl9UWVBFLkNMQVNTSUM7XG4gICAgICAgIHRoaXMuc2hvd05hdmlnYXRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlUGFnZXJOYXZpZ2F0aW9uKCkge1xuICAgICAgICB0aGlzLm5hdkNvbnRyb2xzID0gTkFWSUdBVElPTl9UWVBFLlBBR0VSO1xuICAgICAgICB0aGlzLnNob3dOYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE5hdmlnYXRpb25UeXBlTm9uZSgpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9scyA9IE5BVklHQVRJT05fVFlQRS5OT05FO1xuICAgICAgICB0aGlzLnNob3dOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVJbmZpbml0ZVNjcm9sbCgpIHtcbiAgICAgICAgdGhpcy5pbmZTY3JvbGwgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlT25EZW1hbmRMb2FkKCkge1xuICAgICAgICB0aGlzLm9uRGVtYW5kTG9hZCA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd05hdmlnYXRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgTmF2aWdhdGlvbiB0eXBlIGZvciB0aGUgbGlzdC5cbiAgICAgKiBAcGFyYW0gdHlwZVxuICAgICAqL1xuICAgIHByaXZhdGUgb25OYXZpZ2F0aW9uVHlwZUNoYW5nZSh0eXBlKSB7XG4gICAgICAgIHRoaXMucmVzZXROYXZpZ2F0aW9uKCk7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBOQVZJR0FUSU9OX1RZUEUuQkFTSUM6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVCYXNpY05hdmlnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTkFWSUdBVElPTl9UWVBFLklOTElORTpcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZUlubGluZU5hdmlnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTkFWSUdBVElPTl9UWVBFLkFEVkFOQ0VEOlxuICAgICAgICAgICAgY2FzZSBOQVZJR0FUSU9OX1RZUEUuQ0xBU1NJQzpcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZUNsYXNzaWNOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5BVklHQVRJT05fVFlQRS5QQUdFUjpcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZVBhZ2VyTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQVZJR0FUSU9OX1RZUEUuTk9ORSA6XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROYXZpZ2F0aW9uVHlwZU5vbmUoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTkFWSUdBVElPTl9UWVBFLlNDUk9MTDpcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZUluZmluaXRlU2Nyb2xsKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5BVklHQVRJT05fVFlQRS5PTkRFTUFORDpcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU9uRGVtYW5kTG9hZCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlIGZpZWxkRGVmcyBwcm9wZXJ0eSwgZmllbGREZWZzIGlzIHRoZSBtb2RlbCBvZiB0aGUgTGlzdCBDb21wb25lbnQuXG4gICAgICogZmllbGREZWZzIGlzIGFuIEFycmF5IHR5cGUuXG4gICAgICogQHBhcmFtIG5ld1ZhbFxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlRmllbGREZWZzKG5ld1ZhbDogQXJyYXk8YW55Pikge1xuICAgICAgICBpZiAodGhpcy5pbmZTY3JvbGwgfHwgdGhpcy5vbkRlbWFuZExvYWQpIHtcbiAgICAgICAgICAgIFt0aGlzLmZpZWxkRGVmcywgdGhpcy5jdXJyZW50UGFnZV0gPSB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZUZpZWxkc09uUGFnaW5hdGlvbih0aGlzLCBuZXdWYWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZnMgPSBuZXdWYWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5vcmRlcmJ5KSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkRGVmcyA9IGdldE9yZGVyZWREYXRhc2V0KHRoaXMuZmllbGREZWZzLCB0aGlzLm9yZGVyYnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmdyb3VwYnkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBlZERhdGEgPSBncm91cERhdGEodGhpcywgdGhpcy5maWVsZERlZnMsIHRoaXMuZ3JvdXBieSwgdGhpcy5tYXRjaCwgdGhpcy5vcmRlcmJ5LCB0aGlzLmRhdGVmb3JtYXQsIHRoaXMuZGF0ZVBpcGUsIHVuZGVmaW5lZCwgdGhpcy5hcHBEZWZhdWx0cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZmllbGREZWZzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5ub0RhdGFGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkaXRlbSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgIHRoaXMubGlzdEl0ZW1zLnNldERpcnR5KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkRhdGFDaGFuZ2UobmV3VmFsKSB7XG4gICAgICAgIC8vIENoZWNrIGZvciBuZXdWYWwgaXMgbm90IGVtcHR5XG4gICAgICAgIGlmICghXy5pc0VtcHR5KG5ld1ZhbCkpIHtcblxuICAgICAgICAgICAgdGhpcy5ub0RhdGFGb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5pc0RhdGFDaGFuZ2VkID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YXNvdXJjZSAmJiB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5JU19BUElfQVdBUkUpKSB7XG4gICAgICAgICAgICAgICAgLy8gY2xvbmUgdGhlIHRoZSBkYXRhIGluIGNhc2Ugb2YgbGl2ZSBhbmQgc2VydmljZSB2YXJpYWJsZXMgdG8gcHJldmVudCB0aGUgdHdvLXdheSBiaW5kaW5nIGZvciB0aGVzZSB2YXJpYWJsZXMuXG4gICAgICAgICAgICAgICAgbmV3VmFsID0gXy5jbG9uZURlZXAobmV3VmFsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KG5ld1ZhbCkgJiYgIV8uaXNBcnJheShuZXdWYWwpKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsID0gXy5pc0VtcHR5KG5ld1ZhbCkgPyBbXSA6IFtuZXdWYWxdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5pc1N0cmluZyhuZXdWYWwpKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsID0gbmV3VmFsLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZSBwYWdlIG51bWJlciBpcyBncmVhdGVyIHRoYW4gMSBvbiBpbml0aWFsIGxvYWQgdGhlbiB3ZSByZW5kZXIgdGhlIGZpcnN0IHBhZ2UuXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhc291cmNlICYmIHRoaXMuZGF0YXNvdXJjZS5vd25lciA9PT0gJ0FwcCcgJiYgKHRoaXMuaW5mU2Nyb2xsIHx8IHRoaXMub25EZW1hbmRMb2FkKSAmJiAhdGhpcy5jdXJyZW50UGFnZSAmJiB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5HRVRfUEFHSU5HX09QVElPTlMpLm51bWJlciA+IDApIHtcbiAgICAgICAgICAgICAgICBuZXdWYWwgPSB0aGlzLmRhdGFzb3VyY2UuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5MSVNUX1JFQ09SRFMsIHtcbiAgICAgICAgICAgICAgICAgJ3BhZ2UnOiAxXG4gICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5pc0FycmF5KG5ld1ZhbCkpIHtcbiAgICAgICAgICAgICAgICBpZiAobmV3VmFsLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2JlZm9yZWRhdGFyZW5kZXInLCB7JGRhdGE6IG5ld1ZhbH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpZWxkRGVmcyhuZXdWYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZERlZnMoW10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlcyB0aGUgZGF0YVNvdXJjZSB3aGVuIHBhZ2luYXRpb24gaXMgZW5hYmxlZCBmb3IgdGhlIENvbXBvbmVudC5cbiAgICBwcml2YXRlIHNldHVwRGF0YVNvdXJjZSgpIHtcbiAgICAgICAgY29uc3QgZGF0YU5hdmlnYXRvciA9IHRoaXMuZGF0YU5hdmlnYXRvcjtcblxuICAgICAgICBkYXRhTmF2aWdhdG9yLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICBtYXhSZXN1bHRzOiB0aGlzLnBhZ2VzaXplIHx8IDIwXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yV2F0Y2hlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yUmVzdWx0V2F0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yUmVzdWx0V2F0Y2gudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICAvKlJlZ2lzdGVyIGEgd2F0Y2ggb24gdGhlIFwicmVzdWx0XCIgcHJvcGVydHkgb2YgdGhlIFwiZGF0YU5hdmlnYXRvclwiIHNvIHRoYXQgdGhlIHBhZ2luYXRlZCBkYXRhIGlzIGRpc3BsYXllZCBpbiB0aGUgbGl2ZS1saXN0LiovXG4gICAgICAgIHRoaXMubmF2aWdhdG9yUmVzdWx0V2F0Y2ggPSBkYXRhTmF2aWdhdG9yLnJlc3VsdEVtaXR0ZXIuc3Vic2NyaWJlKChuZXdWYWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFDaGFuZ2UobmV3VmFsKTtcbiAgICAgICAgfSwgdHJ1ZSk7XG4gICAgICAgIC8qRGUtcmVnaXN0ZXIgdGhlIHdhdGNoIGlmIGl0IGlzIGV4aXN0cyAqL1xuICAgICAgICBpZiAodGhpcy5uYXZpZ2F0b3JNYXhSZXN1bHRXYXRjaCkge1xuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0b3JNYXhSZXN1bHRXYXRjaC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIC8qUmVnaXN0ZXIgYSB3YXRjaCBvbiB0aGUgXCJtYXhSZXN1bHRzXCIgcHJvcGVydHkgb2YgdGhlIFwiZGF0YU5hdmlnYXRvclwiIHNvIHRoYXQgdGhlIFwicGFnZVNpemVcIiBpcyBkaXNwbGF5ZWQgaW4gdGhlIGxpdmUtbGlzdC4qL1xuICAgICAgICB0aGlzLm5hdmlnYXRvck1heFJlc3VsdFdhdGNoID0gZGF0YU5hdmlnYXRvci5tYXhSZXN1bHRzRW1pdHRlci5zdWJzY3JpYmUoKHZhbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYWdlc2l6ZSA9IHZhbDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGF0YU5hdmlnYXRvci5tYXhSZXN1bHRzID0gdGhpcy5wYWdlc2l6ZSB8fCAyMDtcbiAgICAgICAgdGhpcy5yZW1vdmVQcm9wZXJ0eUJpbmRpbmcoJ2RhdGFzZXQnKTtcbiAgICAgICAgLy8gd2hlbiBsaXN0IGhhdmluZyBcImRhdGFzZXRib3VuZGV4cHJcIiBhdHRyIGluZGljYXRlcyB0aGF0IGxpc3QgaXMgYm91bmQgdG8gaXRlbSBjb250ZXh0XG4gICAgICAgIC8vIHdoZW4gZGF0YXNldCBpcyBib3VuZCB0byBcIml0ZW0uRklFTERcIiB0aGVuIGl0ZW0gY29udGV4dCBpcyBwYXNzZWQgYXMgdGhlIGRhdGFzb3VyY2UuXG4gICAgICAgIGNvbnN0IGRhdGFzZXRCb3VuZEV4cHIgPSB0aGlzLmdldEF0dHIoJ2RhdGFzZXRib3VuZGV4cHInKTtcbiAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLnNldEJpbmREYXRhU2V0KFxuICAgICAgICAgICAgdGhpcy5iaW5kZGF0YXNldCxcbiAgICAgICAgICAgIHRoaXMudmlld1BhcmVudCxcbiAgICAgICAgICAgIGRhdGFzZXRCb3VuZEV4cHIgPyB0aGlzLmNvbnRleHQgOiB0aGlzLmRhdGFzb3VyY2UsXG4gICAgICAgICAgICB0aGlzLmRhdGFzZXQsXG4gICAgICAgICAgICB0aGlzLmJpbmRkYXRhc291cmNlLFxuICAgICAgICAgICAgZGF0YXNldEJvdW5kRXhwcixcbiAgICAgICAgICAgIHRoaXMuc3RhdGVoYW5kbGVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkRhdGFTZXRDaGFuZ2UobmV3VmFsKSB7XG4gICAgICAgIGlmIChfLmdldCh0aGlzLmRhdGFzb3VyY2UsICdjYXRlZ29yeScpID09PSAnd20uVmFyaWFibGUnICYmIHRoaXMuZ2V0Q29uZmlndXJlZFN0YXRlKCkgIT09ICdub25lJyAmJiB0aGlzLl9wYWdlTG9hZCkge1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICB0aGlzLl9wYWdlTG9hZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKF8uZ2V0KHdpZGdldFN0YXRlLCAncGFnaW5hdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLnBhZ2VDaGFuZ2VkKHtwYWdlOiB3aWRnZXRTdGF0ZS5wYWdpbmF0aW9ufSwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXy5nZXQod2lkZ2V0U3RhdGUsICdzZWxlY3RlZEl0ZW0nKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmRhdGFOYXZpZ2F0b3JXYXRjaGVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5uYXZpZ2F0aW9uICYmIHRoaXMubmF2aWdhdGlvbiAhPT0gTkFWSUdBVElPTl9UWVBFLk5PTkUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldHVwRGF0YVNvdXJjZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRGF0YUNoYW5nZShuZXdWYWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubmF2aWdhdGlvbiAmJiB0aGlzLm5hdmlnYXRpb24gIT09IE5BVklHQVRJT05fVFlQRS5OT05FKSB7XG4gICAgICAgICAgICAvLyBJZiBuYXZpZ2F0aW9uIGlzIGFscmVhZHkgc2V0dXAgYW5kIGRhdGFzb3VyY2UgaXMgY2hhbmdlZCwgdXBkYXRlIHRoZSBkYXRhc291cmNlIG9uIG5hdmlnYXRpb25cbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5zZXREYXRhU291cmNlKHRoaXMuZGF0YXNvdXJjZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGwgdGhlIExpc3RJdGVtJ3MgQWN0aXZlIHN0YXRlIGlzIHNldCB0byBmYWxzZS5cbiAgICBwcml2YXRlIGRlc2VsZWN0TGlzdEl0ZW1zKCkge1xuICAgICAgICB0aGlzLmxpc3RJdGVtcy5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5pc0FjdGl2ZSA9IGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBEZXNlbGVjdCBhbGwgdGhlIExpc3RJdGVtcyBhbmQgY2xlYXIgdGhlIHNlbGVjdGVkaXRlbShJbk91dEJvdW5kIFByb3BlcnR5IG1vZGVsKVxuICAgIHByaXZhdGUgY2xlYXJTZWxlY3RlZEl0ZW1zKCkge1xuICAgICAgICB0aGlzLmRlc2VsZWN0TGlzdEl0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2l0ZW1zLmxlbmd0aCA9IDA7XG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm4gdGhlIExpc3RJdGVtRGlyZWN0aXZlIGluc3RhbmNlIGJ5IGNoZWNraW5nIHRoZSBlcXVhbGl0eSBvZiB0aGUgbW9kZWwuXG4gICAgICogQHBhcmFtIGxpc3RNb2RlbDogbW9kZWwgdG8gYmUgc2VhcmNoZWQgZm9yXG4gICAgICogQHJldHVybnMgTGlzdEl0ZW0gaWYgdGhlIG1vZGVsIGlzIG1hdGNoZWQgZWxzZSByZXR1cm4gbnVsbC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldExpc3RJdGVtQnlNb2RlbChsaXN0TW9kZWwpOiBMaXN0SXRlbURpcmVjdGl2ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RJdGVtcy5maW5kKChsaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgbGV0IGl0ZW1PYmogPSBsaXN0SXRlbS5pdGVtO1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBieSAmJiAhXy5oYXMobGlzdE1vZGVsLCAnX2dyb3VwSW5kZXgnKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIGdyb3VwYnkgaXMgZW5hYmxlZCwgaXRlbSBjb250YWlucyBfZ3JvdXBJbmRleCBwcm9wZXJ0eSB3aGljaCBzaG91bGQgYmUgZXhjbHVkZWQgd2hpbGUgY29tcGFyaW5nIG1vZGVsLlxuICAgICAgICAgICAgICAgIGl0ZW1PYmogPSBfLmNsb25lKGl0ZW1PYmopO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtT2JqLl9ncm91cEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uaXNFcXVhbChpdGVtT2JqLCBsaXN0TW9kZWwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZEl0ZW1zV2lkZ2V0cyhzdGF0ZVBlcnNpc3RlbmNlVHJpZ2dlcmVkPykge1xuICAgICAgICBsZXQgb2JqID0ge30sIHdpZGdldFN0YXRlO1xuICAgICAgICBjb25zdCBwYWdlTnVtID0gXy5nZXQodGhpcy5kYXRhTmF2aWdhdG9yLCAnZG4uY3VycmVudFBhZ2UnKSB8fCAxO1xuICAgICAgICBpZiAodGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAvLyByZW1vdmUgcHJldmlvdXNseSBjb25maWd1cmVkIHNlbGVjdGVkIGl0ZW1zIGZvciBjdXJyZW50IHBhZ2UgYW5kIGNvbnN0cnVjdCBuZXcgb25lcyBsYXRlciBiZWxvdy5cbiAgICAgICAgICAgIHdpZGdldFN0YXRlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmdldFdpZGdldFN0YXRlKHRoaXMpIHx8IHt9O1xuICAgICAgICAgICAgaWYgKF8uZ2V0KHdpZGdldFN0YXRlLCAnc2VsZWN0ZWRJdGVtJykpIHtcbiAgICAgICAgICAgICAgICAvLyB3aGVuIG11bHRpc2VsZWN0IGlzIG9uIGFuZCBhbiBpdGVtIGlzIHNlbGVjdGVkIHdpdGhvdXQgcHJlc3NpbmcgQ1RSTCwgcHJldmlvdXNseSBzZWxlY3RlZCBpdGVtcyBpbiBzdGF0ZSBzaG91bGQgYmUgZW1wdHkuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QgJiYgdGhpcy5zZWxlY3RlZGl0ZW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpZGdldFN0YXRlLnNlbGVjdGVkSXRlbSA9IFtdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucmVtb3ZlKHdpZGdldFN0YXRlLnNlbGVjdGVkSXRlbSwgZnVuY3Rpb24oc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtLnBhZ2UgPT09IHBhZ2VOdW07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRJdGVtV2lkZ2V0cyBhcyBBcnJheTxXaWRnZXRSZWY+KS5sZW5ndGggPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdEl0ZW1zLmZvckVhY2goKGl0ZW06IExpc3RJdGVtRGlyZWN0aXZlLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5zZWxlY3RlZEl0ZW1XaWRnZXRzIGFzIEFycmF5PFdpZGdldFJlZj4pLnB1c2goaXRlbS5jdXJyZW50SXRlbVdpZGdldHMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtV2lkZ2V0cyA9IGl0ZW0uY3VycmVudEl0ZW1XaWRnZXRzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvYmogPSB7cGFnZTogcGFnZU51bSwgaW5kZXg6IGluZGV4fTtcbiAgICAgICAgICAgICAgICBpZiAoXy5nZXQod2lkZ2V0U3RhdGUsICdzZWxlY3RlZEl0ZW0nKSAgJiYgdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIV8uc29tZSh3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0sIG9iaikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldFN0YXRlLnNlbGVjdGVkSXRlbS5wdXNoKG9iaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0gPSBbb2JqXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnICYmICFzdGF0ZVBlcnNpc3RlbmNlVHJpZ2dlcmVkKSB7XG4gICAgICAgICAgICBpZiAodW5zdXBwb3J0ZWRTdGF0ZVBlcnNpc3RlbmNlVHlwZXMuaW5kZXhPZih0aGlzLm5hdmlnYXRpb24pIDwgMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5yZW1vdmVXaWRnZXRTdGF0ZSh0aGlzLCAnc2VsZWN0ZWRJdGVtJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLnNldFdpZGdldFN0YXRlKHRoaXMsIHsnc2VsZWN0ZWRJdGVtJzogd2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignUmV0YWluIFN0YXRlIGhhbmRsaW5nIG9uIFdpZGdldCAnICsgdGhpcy5uYW1lICsgJyBpcyBub3Qgc3VwcG9ydGVkIGZvciBjdXJyZW50IHBhZ2luYXRpb24gdHlwZS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIGxpc3RJdGVtIGFuZCB1cGRhdGVzIHNlbGVjdGVkaXRlbSBwcm9wZXJ0eS5cbiAgICAgKiBJZiB0aGUgbGlzdEl0ZW0gaXMgYWxyZWFkeSBhIHNlbGVjdGVkIGl0ZW0gdGhlbiBkZXNlbGVjdHMgdGhlIGl0ZW0uXG4gICAgICogQHBhcmFtIHtMaXN0SXRlbURpcmVjdGl2ZX0gJGxpc3RJdGVtOiBJdGVtIHRvIGJlIHNlbGVjdGVkIG9mIGRlc2VsZWN0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSB0b2dnbGVMaXN0SXRlbVNlbGVjdGlvbigkbGlzdEl0ZW06IExpc3RJdGVtRGlyZWN0aXZlLCBzdGF0ZVBlcnNpc3RlbmNlVHJpZ2dlcmVkPykge1xuICAgICAgICAvLyBpdGVtIGlzIG5vdCBhbGxvd2VkIHRvIGdldCBzZWxlY3RlZCBpZiBpdCBpcyBkaXNhYmxlZC5cbiAgICAgICAgaWYgKCRsaXN0SXRlbSAmJiAhJGxpc3RJdGVtLmRpc2FibGVJdGVtKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9ICRsaXN0SXRlbS5pdGVtO1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBieSAmJiBfLmhhcyhpdGVtLCAnX2dyb3VwSW5kZXgnKSkge1xuICAgICAgICAgICAgICAgIC8vIElmIGdyb3VwYnkgaXMgZW5hYmxlZCwgaXRlbSBjb250YWlucyBfZ3JvdXBJbmRleCBwcm9wZXJ0eSB3aGljaCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSBzZWxlY3RlZGl0ZW0uXG4gICAgICAgICAgICAgICAgaXRlbSA9IF8uY2xvbmUoaXRlbSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGl0ZW0uX2dyb3VwSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJGxpc3RJdGVtLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXRlbXMgPSBfLnB1bGxBbGxXaXRoKHRoaXMuX2l0ZW1zLCBbaXRlbV0sIF8uaXNFcXVhbCk7XG4gICAgICAgICAgICAgICAgJGxpc3RJdGVtLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIGlmIG11bHRpc2VsZWN0IGlzIGZhbHNlLCBjbGVhciB0aGUgc2VsZWN0SXRlbSBsaXN0IGJlZm9yZSBhZGRpbmcgYW4gaXRlbSB0byB0aGUgc2VsZWN0SXRlbSBsaXN0LlxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0Jywge3dpZGdldDogJGxpc3RJdGVtLCAkZGF0YTogaXRlbX0pO1xuICAgICAgICAgICAgICAgICRsaXN0SXRlbS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkSXRlbXNXaWRnZXRzKHN0YXRlUGVyc2lzdGVuY2VUcmlnZ2VyZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGlzIEludm9rZWQgd2hlbiB0aGUgbW9kZWwgZm9yIHRoZSBMaXN0IFdpZGdldCBpcyBjaGFuZ2VkLlxuICAgICAqIEBwYXJhbSB7UXVlcnlMaXN0PExpc3RJdGVtRGlyZWN0aXZlPn0gbGlzdEl0ZW1zXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbkxpc3RSZW5kZXIobGlzdEl0ZW1zOiBRdWVyeUxpc3Q8TGlzdEl0ZW1EaXJlY3RpdmU+KSB7XG4gICAgICAgIC8vIEFkZGVkIHJlbmRlciBjYWxsYmFjayBldmVudC4gVGhpcyBtZXRob2Qob25MaXN0UmVuZGVyKSBpcyBjYWxsaW5nIG11bHRpcGxlIHRpbWVzIHNvIGNoZWNraW5nIGlzRGF0YWNoYW5nZWQgZmxhZyBiZWNhdXNlIHRoaXMgZmFsZyBpcyBjaGFuZ2VkIHdoZW5ldmVyIG5ldyBkYXRhIGlzIHJlbmRlcmVkLlxuICAgICAgICBpZiAodGhpcy5pc0RhdGFDaGFuZ2VkKSB7XG4gICAgICAgICAgICAvLyBXaGVuZXZlciBkYXRhc2V0IGlzIGNoYW5nZWQsIHRyaWdnZXIgd2F0Y2hlcnMgdG8gZXZhbHVhdGUgbGlzdGl0ZW0gYmluZCBleHByZXNzaW9ucy5cbiAgICAgICAgICAgICRpbnZva2VXYXRjaGVycyh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygncmVuZGVyJywgeyRkYXRhOiB0aGlzLmZpZWxkRGVmc30pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzRGF0YUNoYW5nZWQgJiYgdGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnICYmIGxpc3RJdGVtcy5sZW5ndGggJiYgdGhpcy5fc2VsZWN0ZWRJdGVtc0V4aXN0KSB7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXRTdGF0ZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgIGlmIChfLmdldCh3aWRnZXRTdGF0ZSwgJ3NlbGVjdGVkSXRlbScpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtc0V4aXN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtc0xlbmd0aCA9IF8uaXNBcnJheSh0aGlzLnNlbGVjdGVkaXRlbSkgPyB0aGlzLnNlbGVjdGVkaXRlbS5sZW5ndGggOiBfLnRvTnVtYmVyKCFfLmlzRW1wdHkodGhpcy5zZWxlY3RlZGl0ZW0pKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50UGFnZSA9IF8uZ2V0KHRoaXMuZGF0YU5hdmlnYXRvciwgJ2RuLmN1cnJlbnRQYWdlJykgfHwgMTtcbiAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZS5wYWdpbmF0aW9uID0gd2lkZ2V0U3RhdGUucGFnaW5hdGlvbiB8fCAxO1xuICAgICAgICAgICAgICAgIC8vIHRvIHByZXZlbnQgaXRlbSBzZWxlY3Rpb24gZnJvbSBiZWluZyB0cmlnZ2VyZWQgbW9yZSB0aGFuIG9uY2VcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtc0xlbmd0aCAhPT0gd2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtLmxlbmd0aCAmJiB3aWRnZXRTdGF0ZS5wYWdpbmF0aW9uID09PSBjdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucGFnZSA9PT0gY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oaXRlbS5pbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1zID0gXy5pc0FycmF5KHRoaXMuc2VsZWN0ZWRpdGVtKSA/IHRoaXMuc2VsZWN0ZWRpdGVtIDogW3RoaXMuc2VsZWN0ZWRpdGVtXTtcblxuICAgICAgICB0aGlzLmZpcnN0U2VsZWN0ZWRJdGVtID0gdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gbnVsbDtcblxuICAgICAgICAvLyBkb24ndCBzZWxlY3QgZmlyc3QgaXRlbSBpZiBtdWx0aS1zZWxlY3QgaXMgZW5hYmxlZCBhbmQgYXQgbGVhc3QgaXRlbSBpcyBhbHJlYWR5IHNlbGVjdGVkIGluIHRoZSBsaXN0LlxuICAgICAgICAvLyBkb24ndCBzZWxlY3QgZmlyc3QgaXRlbSBpZiBzdGF0ZSBpbmZvcm1hdGlvbiBoYXMgc2VsZWN0ZWQgaXRlbXNcbiAgICAgICAgaWYgKGxpc3RJdGVtcy5sZW5ndGggJiYgdGhpcy5zZWxlY3RmaXJzdGl0ZW0gJiYgISggdGhpcy5faXRlbXMubGVuZ3RoICYmIHRoaXMubXVsdGlzZWxlY3QpICYmIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnN0ICRmaXJzdEl0ZW06IExpc3RJdGVtRGlyZWN0aXZlID0gbGlzdEl0ZW1zLmZpcnN0O1xuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgISRmaXJzdEl0ZW0uZGlzYWJsZUl0ZW0gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGF0YUNoYW5nZWQgJiZcbiAgICAgICAgICAgICAgICAvLyBcImluZmluaXRlIHNjcm9sbFwiIG9yIFwibG9hZCBvbiBkZW1hbmRcIiBpcyBlbmFibGVkIGFuZCBhdCBsZWFzdCBvbmUgaXRlbSBpcyBzZWxlY3RlZCB0aGVuIGRvbnQgYWx0ZXIgdGhlIHNlbGVjdGVkIGxpc3QgaXRlbXMuXG4gICAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuaW5mU2Nyb2xsIHx8IHRoaXMub25EZW1hbmRMb2FkKSAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pdGVtcy5sZW5ndGhcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSAkZmlyc3RJdGVtO1xuICAgICAgICAgICAgICAgIC8vIHNlbGVjdGluZyB0aGUgZmlyc3QgcmVjb3JkXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kZXNlbGVjdExpc3RJdGVtcygpO1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKHNlbGVjdGVkaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGlzdEl0ZW06IExpc3RJdGVtRGlyZWN0aXZlID0gdGhpcy5nZXRMaXN0SXRlbUJ5TW9kZWwoc2VsZWN0ZWRpdGVtKTtcbiAgICAgICAgICAgICAgICBpZiAobGlzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgbGlzdEl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSBsaXN0SXRlbTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9jdXMgdGhlIGFjdGl2ZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpZWxkRGVmcy5sZW5ndGggJiYgdGhpcy5pbmZTY3JvbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNtb290aFNjcm9sbEVsID0gdGhpcy4kZWxlbWVudC5jbG9zZXN0KCdbd21zbW9vdGhzY3JvbGxdJyk7XG4gICAgICAgICAgICAvLyBpZiBzbW9vdGhzY3JvbGwgaXMgc2V0IHRvIGZhbHNlLCB0aGVuIG5hdGl2ZSBzY3JvbGwgaGFzIHRvIGJlIGFwcGxpZWRcbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBzbW9vdGhzY3JvbGwgZXZlbnRzIHdpbGwgYmUgYmluZGVkLlxuICAgICAgICAgICAgaWYgKGlzTW9iaWxlQXBwKCkgJiYgc21vb3RoU2Nyb2xsRWwubGVuZ3RoICYmIHNtb290aFNjcm9sbEVsLmF0dHIoJ3dtc21vb3Roc2Nyb2xsJykgPT09ICd0cnVlJykge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuYmluZElTY3JvbGxFdnQodGhpcywgREVCT1VOQ0VfVElNRVMuUEFHSU5BVElPTl9ERUJPVU5DRV9USU1FKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBtb2JpbGUgYXBwIHdoZW4gbW9kYWwgZXhpc3RzLCBhbmQgbGlzdCBpdGVtcyBoZWlnaHQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtb2RhbCBjb250ZW50IHByb3ZpZGUgY2NvbnRhaW5lciBhIHNjcm9sbGFibGUgaGVpZ2h0XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kYWxCb2R5ID0gdGhpcy4kZWxlbWVudC5jbG9zZXN0KCcubW9kYWwtYm9keScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RIdCA9IHRoaXMuJGVsZW1lbnQuZmluZCgndWwnKS5oZWlnaHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtb2RhbEh0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gMTQwO1xuICAgICAgICAgICAgICAgIGlmIChpc01vYmlsZSgpICYmIG1vZGFsQm9keS5sZW5ndGggJiYgbGlzdEh0ID4gbW9kYWxIdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbGVtZW50LmNzcygnaGVpZ2h0JywgbW9kYWxIdCArICdweCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmJpbmRTY3JvbGxFdnQodGhpcywgJz4gdWwnLCBERUJPVU5DRV9USU1FUy5QQUdJTkFUSU9OX0RFQk9VTkNFX1RJTUUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0RhdGFDaGFuZ2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHRyaWdnZXJMaXN0SXRlbVNlbGVjdGlvbigkZWw6IEpRdWVyeTxIVE1MRWxlbWVudD4sICRldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKCRlbCAmJiAkZWxbMF0pIHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RJdGVtQ29udGV4dCA9ICRlbC5kYXRhKCdsaXN0SXRlbUNvbnRleHQnKTtcbiAgICAgICAgICAgIC8vIFRyaWdnZXIgY2xpY2sgZXZlbnQgb25seSBpZiB0aGUgbGlzdCBpdGVtIGlzIGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgbGlzdC5cbiAgICAgICAgICAgIGlmIChsaXN0SXRlbUNvbnRleHQubGlzdENvbXBvbmVudCA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgIHRoaXMub25JdGVtQ2xpY2soJGV2ZW50LCBsaXN0SXRlbUNvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXR1cEhhbmRsZXJzKCkge1xuICAgICAgICB0aGlzLmxpc3RJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSggbGlzdEl0ZW1zID0+IHtcbiAgICAgICAgICAgIHRoaXMub25MaXN0UmVuZGVyKGxpc3RJdGVtcyk7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIGhhbmRsZSBjbGljayBldmVudCBpbiBjYXB0dXJpbmcgcGhhc2UuXG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCd1bC5hcHAtbGl2ZWxpc3QtY29udGFpbmVyJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gJCgkZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCcuYXBwLWxpc3QtaXRlbScpO1xuICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmluZCB0aGUgY3VycmVudCBsaXN0IGl0ZW1cbiAgICAgICAgICAgIHdoaWxlICh0YXJnZXQuZ2V0KDApICYmICh0YXJnZXQuY2xvc2VzdCgndWwuYXBwLWxpdmVsaXN0LWNvbnRhaW5lcicpLmdldCgwKSAhPT0gJGV2ZW50LmN1cnJlbnRUYXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnBhcmVudCgpLmNsb3Nlc3QoJy5hcHAtbGlzdC1pdGVtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJMaXN0SXRlbVNlbGVjdGlvbih0YXJnZXQsICRldmVudCk7XG4gICAgICAgIH0sIHRydWUpO1xuICAgIH1cblxuICAgIC8vIFRyaWdnZXJzIG9uIGRyYWcgc3RhcnQgd2hpbGUgcmVvcmRlcmluZy5cbiAgICBwcml2YXRlIG9uUmVvcmRlclN0YXJ0KGV2dCwgdWkpIHtcbiAgICAgICAgdWkucGxhY2Vob2xkZXIuaGVpZ2h0KHVpLml0ZW0uaGVpZ2h0KCkpO1xuICAgICAgICB0aGlzLiR1bEVsZS5kYXRhKCdvbGRJbmRleCcsIHVpLml0ZW0uaW5kZXgoKSk7XG4gICAgfVxuXG4gICAgLy8gVHJpZ2dlcnMgZHVyaW5nIHNvcnRpbmdcbiAgICBwcml2YXRlIG9uU29ydChldnQsIHVpKSB7XG4gICAgICAgIC8vIEluIGNhc2Ugb2YgaW5maW5pdGUgc2Nyb2xsLCB3aGVuIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBzY3JvbGwgZW5hYmxlZFxuICAgICAgICAvLyBvbiBkcmFnZ2luZyB0aGUgZWxlbWVudCB0byBsYXN0IGl0ZW0ncyBwb3NpdGlvbiBtYW51YWxseSB0cmlnZ2VyIGxvYWRpbmcgb2YgbmV4dCBpdGVtc1xuICAgICAgICBpZiAodGhpcy5pbmZTY3JvbGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RJdGVtT2Zmc2V0ID0gdGhpcy4kdWxFbGUuZmluZChgW2xpc3RpdGVtaW5kZXg9JHt0aGlzLmZpZWxkRGVmcy5sZW5ndGggLSAxfV1gKS5vZmZzZXQoKTtcbiAgICAgICAgICAgIGlmIChsYXN0SXRlbU9mZnNldCAmJiBsYXN0SXRlbU9mZnNldC50b3AgPCB1aS5vZmZzZXQudG9wKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5iaW5kU2Nyb2xsRXZ0KHRoaXMsICc+IHVsJywgREVCT1VOQ0VfVElNRVMuUEFHSU5BVElPTl9ERUJPVU5DRV9USU1FKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRlYm91bmNlZEZldGNoTmV4dERhdGFzZXRPblNjcm9sbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBUcmlnZ2VycyBhZnRlciB0aGUgc29ydGluZy5cbiAgICBwcml2YXRlIG9uVXBkYXRlKGV2dCwgdWksIHByZXNlbnRJbmRleD8pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZmllbGREZWZzO1xuICAgICAgICAvLyBJZiB1aSBpcyBub3QgcHJlc2VudCB0aGVuIGl0IGlzIGNhbGxlZCBmcm9tIGRyYWcgYW5kIGRyb3AgdXNpbmcga2V5Ym9hcmRcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSB1aSA9PT0gdW5kZWZpbmVkID8gcHJlc2VudEluZGV4IDogdWkuaXRlbS5pbmRleCgpO1xuICAgICAgICBjb25zdCBvbGRJbmRleCA9IHRoaXMuJHVsRWxlLmRhdGEoJ29sZEluZGV4Jyk7XG5cbiAgICAgICAgY29uc3QgbWluSW5kZXggPSBfLm1pbihbbmV3SW5kZXgsIG9sZEluZGV4XSk7XG4gICAgICAgIGNvbnN0IG1heEluZGV4ID0gXy5tYXgoW25ld0luZGV4LCBvbGRJbmRleF0pO1xuXG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtID0gXy5wdWxsQXQoZGF0YSwgb2xkSW5kZXgpWzBdO1xuICAgICAgICAvLyBNb2RpZnkgdGhlIGRhdGEgbGlzdCBvbmx5IGlmIHdlIGZpbmQgYSBkcmFnZ2VkSXRlbVxuICAgICAgICBpZiAoZHJhZ2dlZEl0ZW0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UucmVtb3ZlV2lkZ2V0U3RhdGUodGhpcywgJ3NlbGVjdGVkSXRlbScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlb3JkZXJQcm9wcy5taW5JbmRleCA9IF8ubWluKFttaW5JbmRleCwgdGhpcy5yZW9yZGVyUHJvcHMubWluSW5kZXhdKTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlclByb3BzLm1heEluZGV4ID0gXy5tYXgoW21heEluZGV4LCB0aGlzLnJlb3JkZXJQcm9wcy5tYXhJbmRleF0pO1xuXG4gICAgICAgICAgICBkYXRhLnNwbGljZShuZXdJbmRleCwgMCwgZHJhZ2dlZEl0ZW0pO1xuXG4gICAgICAgICAgICB0aGlzLmNkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBjb25zdCAkY2hhbmdlZEl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgb2xkSW5kZXg6IG9sZEluZGV4LFxuICAgICAgICAgICAgICAgIG5ld0luZGV4OiBuZXdJbmRleCxcbiAgICAgICAgICAgICAgICBpdGVtOiBkYXRhW25ld0luZGV4XVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygncmVvcmRlcicsIHskZXZlbnQ6IGV2dCwgJGRhdGE6IGRhdGEsICRjaGFuZ2VkSXRlbX0pO1xuICAgICAgICAgICAgdGhpcy4kdWxFbGUucmVtb3ZlRGF0YSgnb2xkSW5kZXgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGNvbmZpZ3VyZXMgcmVvcmRlcmluZyB0aGUgbGlzdCBpdGVtcy5cbiAgICBwcml2YXRlIGNvbmZpZ3VyZURuRCgpIHtcbiAgICAgICAgbGV0IGFwcGVuZFRvO1xuICAgICAgICBjb25zdCBtb2RhbEVsID0gJChkb2N1bWVudCkuZmluZCgnLm1vZGFsJyk7XG4gICAgICAgIGlmICh0aGlzLmdldEF0dHIoJ2hlaWdodCcpKSB7IC8vIHdoZW4gaGVpZ2h0IGlzIGFwcGxpZWQgdG8gdGhlIGxpc3QsIGFwcGVuZCBzaG91bGQgYmUgdGhlIHVsJ3MgcGFyZW50IGFzIHNjcm9sbCBpcyBhcHBsaWVkIHRvIHRoZSBwYXJlbnRcbiAgICAgICAgICBhcHBlbmRUbyA9ICdwYXJlbnQnO1xuICAgICAgICB9IGVsc2UgaWYgKG1vZGFsRWwubGVuZ3RoKSB7IC8vIEluIGNhc2Ugb2YgZGlhbG9nLCBhcHBlbmRUbyBzaG91bGQgYmUgdGhlIG1vZGFsIGVsZVxuICAgICAgICAgICAgYXBwZW5kVG8gPSBtb2RhbEVsW21vZGFsRWwubGVuZ3RoIC0gMV07XG4gICAgICAgIH0gZWxzZSB7IC8vIEFzIGRlZmF1bHQgYXBwZW5kIHRvIHNob3VsZCBiZSBib2R5XG4gICAgICAgICAgICBhcHBlbmRUbyA9ICdib2R5JztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBpc01vYmlsZUFwcCgpID8ge30gOiB7XG4gICAgICAgICAgICBhcHBlbmRUbzogYXBwZW5kVG8sXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgJGVsID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLiR1bEVsZSA9ICRlbC5maW5kKCcuYXBwLWxpdmVsaXN0LWNvbnRhaW5lcicpO1xuXG4gICAgICAgIGNvbmZpZ3VyZURuRCh0aGlzLiR1bEVsZSwgb3B0aW9ucywgdGhpcy5vblJlb3JkZXJTdGFydC5iaW5kKHRoaXMpLCB0aGlzLm9uVXBkYXRlLmJpbmQodGhpcyksIHRoaXMub25Tb3J0LmJpbmQodGhpcykpO1xuXG4gICAgICAgIHRoaXMuJHVsRWxlLmRyb3BwYWJsZSh7J2FjY2VwdCc6ICcuYXBwLWxpc3QtaXRlbSd9KTtcblxuICAgICAgICBpZiAoaXNNb2JpbGVBcHAoKSkge1xuICAgICAgICAgICAgdGhpcy4kdWxFbGUuc29ydGFibGUoJ2Rpc2FibGUnKTtcbiAgICAgICAgICAgIHRoaXMuJHVsRWxlLm9uKCd0b3VjaHN0YXJ0JywgZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCFzZWxmLnRvdWNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLnRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChzZWxmLnRvdWNoZWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9QcmV2ZW50IGNvbnRleHQgbWVudSBvbiBtb2JpbGUgKElPUy9BTkRST0lEKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYudG91Y2hlZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0KS5hZGRDbGFzcygnbm8tc2VsZWN0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL0VuYWJsZSBkcmFnZ2FibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldCkuc29ydGFibGUoJ2VuYWJsZScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL1NldCBpbnRlcm5hbCBmbGFnXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRvdWNoaW5nID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy90cmlnZ2VyIHRvdWNoc3RhcnQgYWdhaW4gdG8gZW5hYmxlIGRyYWdnYWJsZSB0aHJvdWdoIHRvdWNoIHB1bmNoXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHNlbGYpLnRyaWdnZXIoZXZlbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0Nob29zZSBwcmVmZXJyZWQgZHVyYXRpb24gZm9yIHRhcGhvbGRcbiAgICAgICAgICAgICAgICAgICAgfSwgMzUwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KS5vbigndG91Y2hlbmQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgJChldmVudC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygnbm8tc2VsZWN0aW9uJyk7XG5cbiAgICAgICAgICAgICAgICAvL0Rpc2FibGUgZHJhZ2dhYmxlIHRvIGVuYWJsZSBkZWZhdWx0IGJlaGF2aW91clxuICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldCkuc29ydGFibGUoJ2Rpc2FibGUnKTtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRvdWNoZWQpO1xuICAgICAgICAgICAgfSkub24oJ3RvdWNobW92ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b3VjaGVkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAvLyByZXR1cm5zIHRydWUgaWYgdGhlIHNlbGVjdGlvbiBsaW1pdCBpcyByZWFjaGVkLlxuICAgIHByaXZhdGUgY2hlY2tTZWxlY3Rpb25MaW1pdChjb3VudDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiAoIXRoaXMuc2VsZWN0aW9ubGltaXQgfHwgY291bnQgPCB0aGlzLnNlbGVjdGlvbmxpbWl0KTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm5zIGxpc3RpdGVtIHJlZmVyZW5jZSBieSBpbmRleCB2YWx1ZS5cbiAgICBwcml2YXRlIGdldExpc3RJdGVtQnlJbmRleChpbmRleDogbnVtYmVyKTogTGlzdEl0ZW1EaXJlY3RpdmUge1xuICAgICAgICByZXR1cm4gdGhpcy5saXN0SXRlbXMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm4gaW5kZXggb2YgYW4gKGxpc3RJdGVtRGlyZWN0aXZlKSBpbiB0aGUgbGlzdEl0ZW1cbiAgICAgKiBAcGFyYW0ge0xpc3RJdGVtRGlyZWN0aXZlfSBpdGVtXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldExpc3RJdGVtSW5kZXgoaXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1zLnRvQXJyYXkoKS5pbmRleE9mKGl0ZW0pO1xuICAgIH1cblxuICAgIC8vIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmb3JtIG90aGVyIGRhdGEgd2lkZ2V0cyBsaWtlIHRhYmxlLlxuICAgIHB1YmxpYyBleGVjdXRlKG9wZXJhdGlvbiwgb3B0aW9ucykge1xuICAgICAgICBpZiAoW0RhdGFTb3VyY2UuT3BlcmF0aW9uLklTX0FQSV9BV0FSRSwgRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfUEFHRUFCTEUsIERhdGFTb3VyY2UuT3BlcmF0aW9uLlNVUFBPUlRTX1NFUlZFUl9GSUxURVJdLmluY2x1ZGVzKG9wZXJhdGlvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUob3BlcmF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlS2V5RG93bigkZXZlbnQsIGFjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYoJGV2ZW50LmtleUNvZGUgIT09IDEzICYmICRldmVudC5rZXlDb2RlICE9PSA5ICYmICEoKCRldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdmb3JtLWNvbnRyb2wnKSB8fCAkZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnbm90ZS1lZGl0YWJsZScpKSAmJiAkZXZlbnQua2V5Q29kZSA9PT0gMzIpICkge1xuICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxMaXN0SXRlbURpcmVjdGl2ZT4gPSB0aGlzLmxpc3RJdGVtcztcblxuICAgICAgICBsZXQgcHJlc2VudEluZGV4OiBudW1iZXIgPSB0aGlzLmdldExpc3RJdGVtSW5kZXgodGhpcy5sYXN0U2VsZWN0ZWRJdGVtKTtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RJbmRleDogbnVtYmVyID0gdGhpcy5nZXRMaXN0SXRlbUluZGV4KHRoaXMuZmlyc3RTZWxlY3RlZEl0ZW0pO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0Q291bnQ6IG51bWJlciA9IF8uaXNBcnJheSh0aGlzLnNlbGVjdGVkaXRlbSkgPyB0aGlzLnNlbGVjdGVkaXRlbS5sZW5ndGggOiAoXy5pc09iamVjdCh0aGlzLnNlbGVjdGVkaXRlbSkgPyAxIDogMCk7XG4gICAgICAgICAgICBpZiAoYWN0aW9uID09PSAnc2VsZWN0UHJldicpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJlc2VudEluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKHByZXNlbnRJbmRleCA8PSBmaXJzdEluZGV4KSAmJiB0aGlzLmNoZWNrU2VsZWN0aW9uTGltaXQoc2VsZWN0Q291bnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLmdldExpc3RJdGVtQnlJbmRleCggcHJlc2VudEluZGV4IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUxpc3RJdGVtU2VsZWN0aW9uKHRoaXMubGFzdFNlbGVjdGVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlc2VudEluZGV4ID4gZmlyc3RJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVMaXN0SXRlbVNlbGVjdGlvbih0aGlzLmdldExpc3RJdGVtQnlJbmRleChwcmVzZW50SW5kZXgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdzZWxlY3Rpb25saW1pdGV4Y2VlZCcsIHskZXZlbnR9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAnc2VsZWN0TmV4dCcpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJlc2VudEluZGV4IDwgbGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcmVzZW50SW5kZXggPj0gZmlyc3RJbmRleCkgJiYgdGhpcy5jaGVja1NlbGVjdGlvbkxpbWl0KHNlbGVjdENvdW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUxpc3RJdGVtU2VsZWN0aW9uKHRoaXMubGFzdFNlbGVjdGVkSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlc2VudEluZGV4IDwgZmlyc3RJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVMaXN0SXRlbVNlbGVjdGlvbih0aGlzLmdldExpc3RJdGVtQnlJbmRleChwcmVzZW50SW5kZXgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdzZWxlY3Rpb25saW1pdGV4Y2VlZCcsIHskZXZlbnR9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uID09PSAnZm9jdXNQcmV2Jykge1xuICAgICAgICAgICAgaWYodGhpcy5pc0xpc3RFbGVtZW50TW92YWJsZSkge1xuICAgICAgICAgICAgICAgIHByZXNlbnRJbmRleCA9IHByZXNlbnRJbmRleCA8PSAwID8gMCA6IChwcmVzZW50SW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmKHByZXNlbnRJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2RWx0ID0gdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4IC0gMSk7XG4gICAgICAgICAgICAgICAgcHJldkVsdC5uYXRpdmVFbGVtZW50LmJlZm9yZSh0aGlzLmxhc3RTZWxlY3RlZEl0ZW0ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UucmVtb3ZlV2lkZ2V0U3RhdGUodGhpcywgJ3NlbGVjdGVkSXRlbScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IHRoaXMubGlzdEl0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgICAgICAgICBbYXJyW3ByZXNlbnRJbmRleCAtIDFdLCBhcnJbcHJlc2VudEluZGV4XV0gPSBbYXJyW3ByZXNlbnRJbmRleF0sIGFycltwcmVzZW50SW5kZXggLSAxXV07XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0SXRlbXMucmVzZXQoYXJyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHByZXNlbnRJbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLmFyaWFUZXh0ID0gXCJzZWxlY3RlZCBcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJlc2VudEluZGV4ID0gcHJlc2VudEluZGV4IDw9IDAgPyAwIDogKHByZXNlbnRJbmRleCAtIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHByZXNlbnRJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5hcmlhVGV4dCA9IFwic2VsZWN0ZWQgXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAnZm9jdXNOZXh0Jykge1xuICAgICAgICAgICAgaWYodGhpcy5pc0xpc3RFbGVtZW50TW92YWJsZSkge1xuICAgICAgICAgICAgICAgIHByZXNlbnRJbmRleCA9IHByZXNlbnRJbmRleCA8IChsaXN0SXRlbXMubGVuZ3RoIC0gMSkgPyAocHJlc2VudEluZGV4KSA6IChsaXN0SXRlbXMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgaWYocHJlc2VudEluZGV4ID09PSB0aGlzLmxpc3RJdGVtcy5sZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0RWx0ID0gdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgbmV4dEVsdC5uYXRpdmVFbGVtZW50LmFmdGVyKHRoaXMubGFzdFNlbGVjdGVkSXRlbS5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5yZW1vdmVXaWRnZXRTdGF0ZSh0aGlzLCAnc2VsZWN0ZWRJdGVtJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJyID0gdGhpcy5saXN0SXRlbXMudG9BcnJheSgpO1xuICAgICAgICAgICAgICAgIFthcnJbcHJlc2VudEluZGV4XSwgYXJyW3ByZXNlbnRJbmRleCArIDFdXSA9IFthcnJbcHJlc2VudEluZGV4ICsgMV0sIGFycltwcmVzZW50SW5kZXhdXTtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RJdGVtcy5yZXNldChhcnIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gcHJlc2VudEluZGV4ICsgMjtcbiAgICAgICAgICAgICAgICB0aGlzLmFyaWFUZXh0ID0gXCJzZWxlY3RlZCBcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJlc2VudEluZGV4ID0gcHJlc2VudEluZGV4IDwgKGxpc3RJdGVtcy5sZW5ndGggLSAxKSA/IChwcmVzZW50SW5kZXggKyAxKSA6IChsaXN0SXRlbXMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gcHJlc2VudEluZGV4ICsgMTtcbiAgICAgICAgICAgICAgICB0aGlzLmFyaWFUZXh0ID0gXCJzZWxlY3RlZCBcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdzZWxlY3QnKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgZW50ZXIgY2xpY2sgaXMgcHJlc3NlZCBvbiB0aGUgaXRlbSB3aGljaCBpcyBub3QgdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbSwgdGhlIGZpbmQgdGhlIGl0ZW0gZnJvbSB3aGljaCB0aGUgZXZlbnQgaXMgb3JpZ2luYXRlZC5cbiAgICAgICAgICAgIGlmIChwcmVzZW50SW5kZXggPT09IC0xIHx8ICEkKCRldmVudC50YXJnZXQpLmNsb3Nlc3QodGhpcy5sYXN0U2VsZWN0ZWRJdGVtLm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgJGxpID0gJCgkZXZlbnQudGFyZ2V0KS5jbG9zZXN0KCdsaS5hcHAtbGlzdC1pdGVtJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgJHVsID0gJGxpLmNsb3Nlc3QoJ3VsLmFwcC1saXZlbGlzdC1jb250YWluZXInKTtcbiAgICAgICAgICAgICAgICBwcmVzZW50SW5kZXggPSAkdWwuZmluZCgnbGkuYXBwLWxpc3QtaXRlbScpLmluZGV4KCRsaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKCRldmVudCwgdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAnc3BhY2UnKSB7XG4gICAgICAgICAgICBpZighdGhpcy5lbmFibGVyZW9yZGVyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc0xpc3RFbGVtZW50TW92YWJsZSA9ICF0aGlzLmlzTGlzdEVsZW1lbnRNb3ZhYmxlO1xuICAgICAgICAgICAgdGhpcy5vbkl0ZW1DbGljaygkZXZlbnQsIHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCkpO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBwcmVzZW50SW5kZXggKyAxO1xuICAgICAgICAgICAgaWYodGhpcy5pc0xpc3RFbGVtZW50TW92YWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJpYVRleHQgPSBgSXRlbSAke3RoaXMuY3VycmVudEluZGV4fSBncmFiYmVkLCBjdXJyZW50IHBvc2l0aW9uIGA7XG4gICAgICAgICAgICAgICAgdGhpcy4kdWxFbGUuZGF0YSgnb2xkSW5kZXgnLCBwcmVzZW50SW5kZXgpO1xuICAgICAgICAgICAgfSAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYXJpYVRleHQgPSBgSXRlbSAke3RoaXMuY3VycmVudEluZGV4fSBkcm9wcGVkLCBmaW5hbCBwb3NpdGlvbiBgO1xuICAgICAgICAgICAgICAgIHRoaXMub25VcGRhdGUoJGV2ZW50LCB1bmRlZmluZWQsIHByZXNlbnRJbmRleCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICBpZiAoa2V5ID09PSAnZGF0YXNldCcpIHtcbiAgICAgICAgICAgIGlmICghbnYgJiYgdGhpcy5iaW5kZGF0YXNvdXJjZSAmJiAhdGhpcy5kYXRhc291cmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbkRhdGFTZXRDaGFuZ2UobnYpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2RhdGFzb3VyY2UnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhc2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFTZXRDaGFuZ2UodGhpcy5kYXRhc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICduYXZpZ2F0aW9uJykge1xuICAgICAgICAgICAgLy8gU3VwcG9ydCBmb3Igb2xkZXIgcHJvamVjdHMgd2hlcmUgbmF2aWdhdGlvbiB0eXBlIHdhcyBhZHZhbmNlZCBpbnN0ZWFkIG9mIGNsYXNzaWNcbiAgICAgICAgICAgIGlmIChudiA9PT0gJ0FkdmFuY2VkJykge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA9ICdDbGFzc2ljJztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2hDbGFzcyh0aGlzLm5hdGl2ZUVsZW1lbnQsIG52LCBvdik7XG4gICAgICAgICAgICB0aGlzLm9uTmF2aWdhdGlvblR5cGVDaGFuZ2UobnYpO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YU5hdmlnYXRvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5uYXZpZ2F0aW9uQ2xhc3MgPSB0aGlzLnBhZ2luYXRpb25jbGFzcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdpdGVtc3BlcnJvdycpIHtcbiAgICAgICAgICAgIHNldExpc3RDbGFzcyh0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICd0YWJpbmRleCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdwdWxsdG9yZWZyZXNoJyAmJiBudikge1xuICAgICAgICAgICAgdGhpcy5hcHAubm90aWZ5KCdwdWxsVG9SZWZyZXNoOmVuYWJsZScpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpYmVUb1B1bGxUb1JlZnJlc2goKTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdwYWdpbmF0aW9uY2xhc3MnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhTmF2aWdhdG9yKSB7XG4gICAgICAgICAgICAgICAgLy8gQWRkaW5nIHNldFRpbWVvdXQgYmVjYXVzZSBpbiBwYWdpbmF0aW9uIGNvbXBvbmVudCB1cGRhdGVOYXZTaXplIG1ldGhvZCBpcyBvdmVycmlkaW5nIG5hdmlnYXRpb25jbGFzc1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHRoaXMuZGF0YU5hdmlnYXRvci5uYXZpZ2F0aW9uQ2xhc3MgPSBudik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncGFnZXNpemUnKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3Iub3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBtYXhSZXN1bHRzOiBudlxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci53aWRnZXQubWF4UmVzdWx0cyA9IG52O1xuICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLm1heFJlc3VsdHMgPSBudjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdlbmFibGVyZW9yZGVyJykge1xuICAgICAgICAgICAgaWYgKG52ICYmIHRoaXMuJHVsRWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kdWxFbGUuYXR0cignYXJpYS1kZXNjcmliZWRieScsIHRoaXMudGl0bGVJZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmVEbkQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLiR1bEVsZS5zb3J0YWJsZSgnZW5hYmxlJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuJHVsRWxlICYmICFudikge1xuICAgICAgICAgICAgICAgIHRoaXMuJHVsRWxlLnJlbW92ZUF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgICAgICAgICAgICB0aGlzLiR1bEVsZS5zb3J0YWJsZSgnZGlzYWJsZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25JdGVtQ2xpY2soZXZ0OiBhbnksICRsaXN0SXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpIHtcbiAgICAgICAgbGV0IHNlbGVjdENvdW50OiBudW1iZXI7XG5cbiAgICAgICAgaWYgKCEkbGlzdEl0ZW0uZGlzYWJsZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZmlyc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLmZpcnN0U2VsZWN0ZWRJdGVtIHx8ICRsaXN0SXRlbTtcbiAgICAgICAgICAgIC8vIFNldHRpbmcgc2VsZWN0Q291bnQgdmFsdWUgYmFzZWQgbnVtYmVyIG9mIGl0ZW1zIHNlbGVjdGVkLlxuICAgICAgICAgICAgc2VsZWN0Q291bnQgPSBfLmlzQXJyYXkodGhpcy5zZWxlY3RlZGl0ZW0pID8gdGhpcy5zZWxlY3RlZGl0ZW0ubGVuZ3RoIDogKF8uaXNPYmplY3QodGhpcy5zZWxlY3RlZGl0ZW0pID8gMSA6IDApO1xuXG4gICAgICAgICAgICAvLyBIYW5kbGluZyBtdWx0aXNlbGVjdCBmb3IgbW9iaWxlIGRldmljZVxuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QgJiYgaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrU2VsZWN0aW9uTGltaXQoc2VsZWN0Q291bnQpIHx8ICRsaXN0SXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUxpc3RJdGVtU2VsZWN0aW9uKCRsaXN0SXRlbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdzZWxlY3Rpb25saW1pdGV4Y2VlZCcsIHskZXZlbnQ6IGV2dH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKGV2dC5jdHJsS2V5IHx8IGV2dC5tZXRhS2V5KSAmJiB0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2hlY2tTZWxlY3Rpb25MaW1pdChzZWxlY3RDb3VudCkgfHwgJGxpc3RJdGVtLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSAkbGlzdEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTGlzdEl0ZW1TZWxlY3Rpb24oJGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdGlvbmxpbWl0ZXhjZWVkJywgeyRldmVudDogZXZ0fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChldnQuc2hpZnRLZXkgJiYgdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9ICRsaXN0SXRlbS5jb250ZXh0LmluZGV4O1xuICAgICAgICAgICAgICAgIGxldCBsYXN0ID0gdGhpcy5maXJzdFNlbGVjdGVkSXRlbS5jb250ZXh0LmluZGV4O1xuXG4gICAgICAgICAgICAgICAgLy8gaWYgZmlyc3QgaXMgZ3JlYXRlciB0aGFuIGxhc3QsIHRoZW4gc3dhcCB2YWx1ZXNcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3QgPiBsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3QgPSBbZmlyc3QsIGZpcnN0ID0gbGFzdF1bMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrU2VsZWN0aW9uTGltaXQobGFzdCAtIGZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJdGVtcy5mb3JFYWNoKCgkbGlJdGVtOiBMaXN0SXRlbURpcmVjdGl2ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSAkbGlJdGVtLmNvbnRleHQuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gZmlyc3QgJiYgaW5kZXggPD0gbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTGlzdEl0ZW1TZWxlY3Rpb24oJGxpSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSAkbGlzdEl0ZW07XG4gICAgICAgICAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0aW9ubGltaXRleGNlZWQnLCB7JGV2ZW50OiBldnR9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCEkbGlzdEl0ZW0uaXNBY3RpdmUgfHwgc2VsZWN0Q291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3RlZEl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTGlzdEl0ZW1TZWxlY3Rpb24oJGxpc3RJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdFNlbGVjdGVkSXRlbSA9IHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9ICRsaXN0SXRlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbXB0eSB0aGUgbGlzdCBjb250ZW50IG9uIGNsZWFyXG4gICAgcHVibGljIGNsZWFyICgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVGaWVsZERlZnMoW10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIExpc3RJdGVtIFJlZmVyZW5jZSBiYXNlZCBvbiB0aGUgaW5wdXQgcHJvdmlkZWQuXG4gICAgICogQHBhcmFtIHZhbDogaW5kZXggfCBtb2RlbCBvZiB0aGUgbGlzdCBpdGVtLlxuICAgICAqIEByZXR1cm5zIHtMaXN0SXRlbURpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldEl0ZW1SZWZCeUluZGV4T3JNb2RlbCh2YWw6IGFueSk6IExpc3RJdGVtRGlyZWN0aXZlIHtcbiAgICAgICAgbGV0IGxpc3RJdGVtOiBMaXN0SXRlbURpcmVjdGl2ZTtcbiAgICAgICAgaWYgKGlzTnVtYmVyKHZhbCkpIHtcbiAgICAgICAgICAgIGxpc3RJdGVtID0gdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgodmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxpc3RJdGVtID0gdGhpcy5nZXRMaXN0SXRlbUJ5TW9kZWwodmFsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGlzdEl0ZW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVzZWxlY3RzIGl0ZW0gaW4gdGhlIGxpc3QuXG4gICAgICogQHBhcmFtIHZhbDogaW5kZXggfCBtb2RlbCBvZiB0aGUgbGlzdCBpdGVtLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdEl0ZW0gKHZhbDogYW55KSB7XG4gICAgICAgIGNvbnN0IGxpc3RJdGVtID0gdGhpcy5nZXRJdGVtUmVmQnlJbmRleE9yTW9kZWwodmFsKTtcbiAgICAgICAgaWYgKGxpc3RJdGVtICYmIGxpc3RJdGVtLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUxpc3RJdGVtU2VsZWN0aW9uKGxpc3RJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNlbGVjdHMgaXRlbSBpbiB0aGUgbGlzdC5cbiAgICAgKiBAcGFyYW0gdmFsOiBpbmRleCB8IG1vZGVsIG9mIHRoZSBsaXN0IGl0ZW0uXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdEl0ZW0odmFsLCBzdGF0ZVBlcnNpc3RlbmNlVHJpZ2dlcmVkPykge1xuICAgICAgICBjb25zdCBsaXN0SXRlbSA9IHRoaXMuZ2V0SXRlbVJlZkJ5SW5kZXhPck1vZGVsKHZhbCk7XG4gICAgICAgIGlmICghbGlzdEl0ZW0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWxpc3RJdGVtLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZUxpc3RJdGVtU2VsZWN0aW9uKGxpc3RJdGVtLCBzdGF0ZVBlcnNpc3RlbmNlVHJpZ2dlcmVkKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBmb2N1cyB0aGUgZWxlbWVudC5cbiAgICAgICAgbGlzdEl0ZW0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYmVmb3JlUGFnaW5hdGlvbkNoYW5nZSgkZXZlbnQsICRpbmRleCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3BhZ2luYXRpb25jaGFuZ2UnLCB7JGV2ZW50LCAkaW5kZXh9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudENhbGxiYWNrOiBGdW5jdGlvbiwgbG9jYWxzOiBhbnkpIHtcbiAgICAgICAgLy8gdGFwIGFuZCBkb3VibGVUYXAgZXZlbnRzIGFyZSBub3QgZ2V0dGluZyBwcm9wYWdhdGVkLlNvLCB1c2luZyBtb3VzZSBldmVudHMgaW5zdGVhZC5cbiAgICAgICAgY29uc3QgdG91Y2hUb01vdXNlID0ge1xuICAgICAgICAgICAgdGFwOiAnY2xpY2snLFxuICAgICAgICAgICAgZG91YmxldGFwOiAnZGJsY2xpY2snXG4gICAgICAgIH07XG4gICAgICAgIGlmIChfLmluY2x1ZGVzKFsnY2xpY2snLCAndGFwJywgJ2RibGNsaWNrJywgJ2RvdWJsZXRhcCddLCBldmVudE5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLmV2ZW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0b3VjaFRvTW91c2VbZXZlbnROYW1lXSB8fCBldmVudE5hbWUsXG4gICAgICAgICAgICAgICAgKGV2dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSAkKGV2dC50YXJnZXQpLmNsb3Nlc3QoJy5hcHAtbGlzdC1pdGVtJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0SXRlbUNvbnRleHQ6IExpc3RJdGVtRGlyZWN0aXZlID0gdGFyZ2V0LmRhdGEoJ2xpc3RJdGVtQ29udGV4dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsaXN0SXRlbUNvbnRleHQuZGlzYWJsZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soZXZlbnROYW1lLCB7d2lkZ2V0OiBsaXN0SXRlbUNvbnRleHQsICRldmVudDogZXZ0LCBpdGVtOiBsaXN0SXRlbUNvbnRleHQuaXRlbX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEludm9rZSB0aGUgZGF0YXNvdXJjZSB2YXJpYWJsZSBieSBkZWZhdWx0IHdoZW4gcHVsbHRvcmVmcmVzaCBldmVudCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9QdWxsVG9SZWZyZXNoKCkge1xuICAgICAgICB0aGlzLl9saXN0ZW5lckRlc3Ryb3llcnMucHVzaCh0aGlzLmFwcC5zdWJzY3JpYmUoJ3B1bGx0b3JlZnJlc2gnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhc291cmNlICYmIHRoaXMuZGF0YXNvdXJjZS5saXN0UmVjb3Jkcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5saXN0UmVjb3JkcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMuaGFuZGxlSGVhZGVyQ2xpY2sgPSBub29wO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVib3VuY2VkRmV0Y2hOZXh0RGF0YXNldE9uU2Nyb2xsID0gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5kZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwodGhpcy5kYXRhTmF2aWdhdG9yLCBERUJPVU5DRV9USU1FUy5QQUdJTkFUSU9OX0RFQk9VTkNFX1RJTUUsIHRoaXMpO1xuICAgICAgICB9LCAwKTtcbiAgICAgICAgdGhpcy5faXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBbXTtcbiAgICAgICAgdGhpcy5yZW9yZGVyUHJvcHMgPSB7XG4gICAgICAgICAgICBtaW5JbmRleDogbnVsbCxcbiAgICAgICAgICAgIG1heEluZGV4OiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRVcENVREhhbmRsZXJzKCkge1xuICAgICAgICBjb25zdCAkYWRkSXRlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhZGQtbGlzdC1pdGVtXCIpWzBdO1xuICAgICAgICBpZiAoJGFkZEl0ZW0pIHtcbiAgICAgICAgICAgIC8vIFRyaWdnZXJlZCBvbiBjbGljayBvZiBhZGQgYWN0aW9uXG4gICAgICAgICAgICAkYWRkSXRlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2dCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jcmVhdGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuKCk7XG4gICAgICAgIHRoaXMucHJvcHNJbml0UHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRVcENVREhhbmRsZXJzKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVdpZGdldHMgPSB0aGlzLm11bHRpc2VsZWN0ID8gW10gOiB7fTtcbiAgICAgICAgICAgIHZhciBlbGUgPSAkKHRoaXMubmF0aXZlRWxlbWVudCkuZmluZCgnLmFwcC1saXZlbGlzdC1jb250YWluZXInKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZW5hYmxlcmVvcmRlciAmJiAhdGhpcy5ncm91cGJ5KSB7XG4gICAgICAgICAgICAgICAgaWYoZWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZS5hdHRyKCdhcmlhLWRlc2NyaWJlZGJ5JywgdGhpcy50aXRsZUlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmVEbkQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5lbmFibGVyZW9yZGVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZSkge1xuICAgICAgICAgICAgICAgICAgICBlbGUucmVtb3ZlQXR0cignYXJpYS1kZXNjcmliZWRieScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgdGhpcy5jb2xsYXBzaWJsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlSGVhZGVyQ2xpY2sgPSBoYW5kbGVIZWFkZXJDbGljaztcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUFsbEhlYWRlcnMgPSB0b2dnbGVBbGxIZWFkZXJzLmJpbmQodW5kZWZpbmVkLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldExpc3RDbGFzcyh0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0dXBIYW5kbGVycygpO1xuICAgICAgICBjb25zdCAkdWwgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigndWwuYXBwLWxpdmVsaXN0LWNvbnRhaW5lcicpO1xuICAgICAgICBzdHlsZXIoJHVsIGFzIEhUTUxFbGVtZW50LCB0aGlzLCBBUFBMWV9TVFlMRVNfVFlQRS5TQ1JPTExBQkxFX0NPTlRBSU5FUik7XG4gICAgICAgIGlmICh0aGlzLmVuYWJsZXJlb3JkZXIpIHtcbiAgICAgICAgICAgIGlmICgkdWwpe1xuICAgICAgICAgICAgICAgICR1bC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLnRpdGxlSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5lbmFibGVyZW9yZGVyKSAge1xuICAgICAgICAgICAgaWYoJHVsKSB7XG4gICAgICAgICAgICAgICAgJHVsLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc01vYmlsZUFwcCgpICYmICR1bC5xdWVyeVNlbGVjdG9yKCcuYXBwLWxpc3QtaXRlbS1hY3Rpb24tcGFuZWwnKSkge1xuICAgICAgICAgICAgdGhpcy5fbGlzdEFuaW1hdG9yID0gbmV3IExpc3RBbmltYXRvcih0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5fbGlzdEFuaW1hdG9yICYmIHRoaXMuX2xpc3RBbmltYXRvci4kYnRuU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9saXN0QW5pbWF0b3IuJGJ0blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xpc3RlbmVyRGVzdHJveWVycy5mb3JFYWNoKGQgPT4gZCAmJiBkKCkpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIG5nT25EZXRhY2goKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXRhY2goKTtcbiAgICAgICAgdGhpcy5fcGFnZUxvYWQgPSB0cnVlO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCIgKm5nSWY9XCJ0aXRsZSB8fCBzdWJoZWFkaW5nIHx8IGljb25jbGFzc1wiPlxuICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24gcGFuZWwtaWNvbiB7e2ljb25jbGFzc319XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgW2hpZGRlbl09XCIhaWNvbmNsYXNzXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInB1bGwtbGVmdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIiBbaW5uZXJIVE1MXT1cInRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIiBbaW5uZXJIVE1MXT1cInN1YmhlYWRpbmdcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9oMz5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiYXBwLWRhdGFuYXZpZ2F0b3JcIiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlUHJldmlvdXNcIiBhcmlhLWxhYmVsPVwiUGFnZSBuYXZpZ2F0aW9uXCIgKm5nSWY9XCJuYXZpZ2F0aW9uID09PSAnSW5saW5lJyAmJiAhbm9EYXRhRm91bmRcIj5cbiAgICA8dWwgY2xhc3M9XCJwYWdlclwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJwcmV2aW91c1wiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiAoZGF0YU5hdmlnYXRvciA/IGRhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlUHJldmlvdXMgOiB0cnVlKX1cIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cImRhdGFOYXZpZ2F0b3IubmF2aWdhdGVQYWdlKCdwcmV2JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlUHJldmlvdXNcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIndpIHdpLWNoZXZyb24tbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5HbyB0byBQcmV2aW91cyBwYWdlIHt7ZGF0YU5hdmlnYXRvci5pc0Rpc2FibGVQcmV2aW91cyA/ICcsIERpc2FibGVkJyA6ICcnfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgPC91bD5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIm5hdmlnYXRpb24gPT09ICdJbmxpbmUnICYmICFub0RhdGFGb3VuZFwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIGNsYXNzPVwic3Itb25seVwiPiB7eydQYWdlICcgKyBkYXRhTmF2aWdhdG9yLmRuLmN1cnJlbnRQYWdlICsgJyBvZiAnICsgZGF0YU5hdmlnYXRvci5wYWdlQ291bnQgfX08L2Rpdj5cblxuPGRpdj5cbiAgICA8ZGl2IGlkPXt7dGl0bGVJZH19IGNsYXNzPVwic3Itb25seVwiICpuZ0lmPVwiZW5hYmxlcmVvcmRlclwiPlxuICAgICAgICBQcmVzcyBzcGFjZSBiYXIgdG8gdG9nZ2xlIGRyYWcgZHJvcCBtb2RlLCB1c2UgYXJyb3cga2V5cyB0byBtb3ZlIHNlbGVjdGVkIGVsZW1lbnRzLlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiAqbmdJZj1cImxpc3RJdGVtcyAmJiBlbmFibGVyZW9yZGVyICYmIGN1cnJlbnRJbmRleFwiIGNsYXNzPVwic3Itb25seVwiID5cbiAgICAgICAge3thcmlhVGV4dCArIGN1cnJlbnRJbmRleCArICcgb2YgJyArICBsaXN0SXRlbXMubGVuZ3RofX1cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48dWwgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIiAgY2xhc3M9XCJhcHAtbGl2ZWxpc3QtY29udGFpbmVyIGNsZWFyZml4IHt7ZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnYXBwLWhvcml6b250YWwtbGlzdCc6ICcnfX0ge3tsaXN0Y2xhc3N9fVwiIHJvbGU9XCJsaXN0XCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJoYW5kbGVLZXlEb3duKCRldmVudCwgJ3NlbGVjdCcpXCJcblxuICAgIChrZXlkb3duLnNwYWNlKT1cImhhbmRsZUtleURvd24oJGV2ZW50LCAnc3BhY2UnKVwiXG5cbiAgICAoa2V5ZG93bi5hcnJvd3VwKT1cImhhbmRsZUtleURvd24oJGV2ZW50LCAnZm9jdXNQcmV2JylcIlxuICAgIChrZXlkb3duLmFycm93ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudCwgJ2ZvY3VzTmV4dCcpXCJcbiAgICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwiaGFuZGxlS2V5RG93bigkZXZlbnQsICdmb2N1c1ByZXYnKVwiXG4gICAgKGtleWRvd24uYXJyb3dyaWdodCk9XCJoYW5kbGVLZXlEb3duKCRldmVudCwgJ2ZvY3VzTmV4dCcpXCJcblxuICAgIChrZXlkb3duLnNoaWZ0LmFycm93dXApPVwiaGFuZGxlS2V5RG93bigkZXZlbnQsICdzZWxlY3RQcmV2JylcIlxuICAgIChrZXlkb3duLnNoaWZ0LmFycm93ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudCwgJ3NlbGVjdE5leHQnKVwiXG4gICAgKGtleWRvd24uc2hpZnQuYXJyb3dsZWZ0KT1cImhhbmRsZUtleURvd24oJGV2ZW50LCAnc2VsZWN0UHJldicpXCJcbiAgICAoa2V5ZG93bi5zaGlmdC5hcnJvd3JpZ2h0KT1cImhhbmRsZUtleURvd24oJGV2ZW50LCAnc2VsZWN0TmV4dCcpXCJcbiAgICBbaGlkZGVuXT1cIm5vRGF0YUZvdW5kICYmICF2YXJpYWJsZUluZmxpZ2h0XCJcbj5cbiAgICA8bmctdGVtcGxhdGUgW25nSWZdPVwiIWdyb3VwYnlcIiBbbmdJZkVsc2VdPVwiZ3JvdXBlZExpc3RUZW1wbGF0ZVwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGREZWZzOyBpbmRleCBhcyAkaW5kZXg7IGZpcnN0IGFzICRmaXJzdDsgbGFzdCBhcyAkbGFzdDtcIiBjbGFzcz1cImFwcC1saXN0LWl0ZW0ge3tkaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyA/ICcnIDogaXRlbXNQZXJSb3dDbGFzc319XCIgW25nQ2xhc3NdPVwibGlzdEl0ZW1SZWYuaXRlbUNsYXNzXCJcbiAgICAgICAgICAgIFt3bUxpc3RJdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgI2xpc3RJdGVtUmVmPVwibGlzdEl0ZW1SZWZcIlxuICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgcm9sZT1cImxpc3RpdGVtXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0SW5qZWN0b3JdPVwiY3JlYXRlQ3VzdG9tSW5qZWN0b3IoJ2ZsYXRfJyArICRpbmRleCwge2l0ZW06IGl0ZW0sICRpbmRleDogJGluZGV4LCBpdGVtUmVmOiBsaXN0SXRlbVJlZiwgJGZpcnN0OiAkZmlyc3QsICRsYXN0OiAkbGFzdCwgY3VycmVudEl0ZW1XaWRnZXRzOiBsaXN0SXRlbVJlZi5jdXJyZW50SXRlbVdpZGdldHN9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbSwgJGluZGV4OiAkaW5kZXgsIGl0ZW1SZWY6IGxpc3RJdGVtUmVmLCAkZmlyc3Q6ICRmaXJzdCwgJGxhc3Q6ICRsYXN0LCBjdXJyZW50SXRlbVdpZGdldHM6IGxpc3RJdGVtUmVmLmN1cnJlbnRJdGVtV2lkZ2V0c31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9saT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdExlZnRBY3Rpb25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdFJpZ2h0QWN0aW9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvdWw+XG5cbjxkaXYgY2xhc3M9XCJuby1kYXRhLW1zZ1wiICpuZ0lmPVwibm9EYXRhRm91bmQgJiYgIXZhcmlhYmxlSW5mbGlnaHRcIiBbdGV4dENvbnRlbnRdPVwibm9kYXRhbWVzc2FnZVwiPjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibG9hZGluZy1kYXRhLW1zZ1wiICpuZ0lmPVwidmFyaWFibGVJbmZsaWdodCAmJiAhcHVsbHRvcmVmcmVzaFwiPlxuICAgIDxzcGFuPlxuICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHBhbmVsLWljb24gZmEtc3BpblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtuZ0NsYXNzXT1cImxvYWRpbmdpY29uXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5Mb2FkaW5nPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImxvYWRpbmctdGV4dFwiIFt0ZXh0Q29udGVudF09XCJsb2FkaW5nZGF0YW1zZ1wiPjwvc3Bhbj5cbiAgICA8L3NwYW4+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImFwcC1kYXRhbmF2aWdhdG9yXCIgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHRcIiAqbmdJZj1cIm5hdmlnYXRpb24gPT09ICdJbmxpbmUnICYmICFub0RhdGFGb3VuZFwiPlxuICAgIDx1bCBjbGFzcz1cInBhZ2VyXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cIm5leHRcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogKGRhdGFOYXZpZ2F0b3IgPyBkYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHQgIDogdHJ1ZSl9XCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJkYXRhTmF2aWdhdG9yLm5hdmlnYXRlUGFnZSgnbmV4dCcsICRldmVudClcIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkYXRhTmF2aWdhdG9yLmlzRGlzYWJsZU5leHRcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIndpIHdpLWNoZXZyb24tcmlnaHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+R28gdG8gTmV4dCBwYWdlIHt7ZGF0YU5hdmlnYXRvci5pc0Rpc2FibGVOZXh0ID8gJywgRGlzYWJsZWQnIDogJyd9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwYW5lbC1mb290ZXJcIiAqbmdJZj1cIm5hdmlnYXRpb24gIT09ICdOb25lJ1wiIFtoaWRkZW5dPVwiIXNob3dOYXZpZ2F0aW9uIHx8IChvbkRlbWFuZExvYWQgJiYgZGF0YU5hdmlnYXRvci5pc0Rpc2FibGVOZXh0KSB8fCAoZGF0YU5hdmlnYXRvci5kYXRhU2l6ZSA8PSBwYWdlc2l6ZSkgfHwgKCFkYXRhTmF2aWdhdG9yLmRhdGFTaXplICYmICFkYXRhTmF2aWdhdG9yLmRhdGFzb3VyY2U/LnBhZ2luYXRpb24/Lm5leHQpXCI+XG4gICAgPG5hdiB3bVBhZ2luYXRpb25cbiAgICAgICAgIG5hdmlnYXRpb25hbGlnbi5iaW5kPVwibmF2aWdhdGlvbmFsaWduXCJcbiAgICAgICAgIG5hdmlnYXRpb24uYmluZD1cIm5hdkNvbnRyb2xzXCJcbiAgICAgICAgIHNob3dyZWNvcmRjb3VudC5iaW5kPVwic2hvd3JlY29yZGNvdW50XCJcbiAgICAgICAgIG1heHNpemUuYmluZD1cIm1heHNpemVcIlxuICAgICAgICAgYm91bmRhcnlsaW5rcy5iaW5kPVwiYm91bmRhcnlsaW5rc1wiXG4gICAgICAgICBmb3JjZWVsbGlwc2VzLmJpbmQ9XCJmb3JjZWVsbGlwc2VzXCJcbiAgICAgICAgIGRpcmVjdGlvbmxpbmtzLmJpbmQ9XCJkaXJlY3Rpb25saW5rc1wiXG4gICAgICAgICBzaG93LmJpbmQ9XCIhb25EZW1hbmRMb2FkXCJcbiAgICAgICAgIHBhZ2luYXRpb25jaGFuZ2UuZXZlbnQ9XCJiZWZvcmVQYWdpbmF0aW9uQ2hhbmdlKCRldmVudCwgJGluZGV4KVwiXG4gICAgPjwvbmF2PlxuICAgIDxhICpuZ0lmPVwib25EZW1hbmRMb2FkXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIlxuICAgICAgIChjbGljayk9XCJkYXRhTmF2aWdhdG9yLm5hdmlnYXRlUGFnZSgnbmV4dCcsICRldmVudClcIlxuICAgICAgIGNsYXNzPVwiYXBwLWJ1dHRvbiBidG4gYnRuLWJsb2NrXCJcbiAgICAgICBbbmdDbGFzc109XCJwYWdpbmF0aW9uY2xhc3NcIlxuICAgICAgIFt0ZXh0Q29udGVudF09XCJvbmRlbWFuZG1lc3NhZ2VcIlxuICAgID48L2E+XG48L2Rpdj5cblxuPCEtLVRoaXMgdGVtcGxhdGUgd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBncm91cGJ5IGlzIHNwZWNpZmllZC0tPlxuPG5nLXRlbXBsYXRlICNncm91cGVkTGlzdFRlbXBsYXRlPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZ3JvdXBPYmogb2YgZ3JvdXBlZERhdGE7IGxldCBncm91cEluZGV4ID0gaW5kZXg7XCIgY2xhc3M9XCJhcHAtbGlzdC1pdGVtLWdyb3VwIGNsZWFyZml4XCI+XG4gICAgICAgIDx1bCBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiIGNsYXNzPVwibGlzdC1ncm91cCBpdGVtLWdyb3VwXCIgW25nQ2xhc3NdPVwibGlzdGNsYXNzXCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJhcHAtbGlzdC1pdGVtLWhlYWRlciBsaXN0LWl0ZW0gbGlzdC1ncm91cC1oZWFkZXJcIiAoY2xpY2spPVwiaGFuZGxlSGVhZGVyQ2xpY2soJGV2ZW50KVwiIFtuZ0NsYXNzXT1cInsnY29sbGFwc2libGUtY29udGVudCc6IGNvbGxhcHNpYmxlfVwiPlxuICAgICAgICAgICAgPGg0Pnt7Z3JvdXBPYmoua2V5fX1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdpIGFjdGlvbiB3aS1jaGV2cm9uLXVwXCIgKm5nSWY9XCJjb2xsYXBzaWJsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93Y291bnRcIiBjbGFzcz1cImxhYmVsIGxhYmVsLWRlZmF1bHRcIj57e2dyb3VwT2JqLmRhdGEubGVuZ3RofX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBjbGVhcmZpeCB7e2RpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2FwcC1ob3Jpem9udGFsLWxpc3QnOiAnJ319XCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwT2JqLmRhdGE7IGluZGV4IGFzICRpbmRleDsgZmlyc3QgYXMgJGZpcnN0OyBsYXN0IGFzICRsYXN0O1wiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcHAtbGlzdC1pdGVtIGdyb3VwLWxpc3QtaXRlbSB7e2l0ZW1zUGVyUm93Q2xhc3N9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImxpc3RJdGVtUmVmLml0ZW1DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFt3bUxpc3RJdGVtXT1cIml0ZW1cIiAjbGlzdEl0ZW1SZWY9XCJsaXN0SXRlbVJlZlwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRJbmplY3Rvcl09XCJjcmVhdGVDdXN0b21JbmplY3RvcignZ3JvdXBfJyArIGdyb3VwSW5kZXggKyAnX2l0ZW1fJyArICRpbmRleCwge2l0ZW06IGl0ZW0sICRpbmRleDogJGluZGV4LCBpdGVtUmVmOiBsaXN0SXRlbVJlZiwgJGZpcnN0OiAkZmlyc3QsICRsYXN0OiAkbGFzdCwgY3VycmVudEl0ZW1XaWRnZXRzOiBsaXN0SXRlbVJlZi5jdXJyZW50SXRlbVdpZGdldHN9KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntpdGVtOiBpdGVtLCAkaW5kZXg6ICRpbmRleCwgaXRlbVJlZjogbGlzdEl0ZW1SZWYsICRmaXJzdDogJGZpcnN0LCAkbGFzdDogJGxhc3QsIGN1cnJlbnRJdGVtV2lkZ2V0czogbGlzdEl0ZW1SZWYuY3VycmVudEl0ZW1XaWRnZXRzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3VsPlxuICAgIDwvbGk+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
1415
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvZGF0YS9saXN0L3NyYy9saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9kYXRhL2xpc3Qvc3JjL2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsUUFBUSxFQUNSLE1BQU0sRUFJTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUNILFVBQVUsRUFDVixlQUFlLEVBQ2YsR0FBRyxFQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLFdBQVcsRUFDWCxRQUFRLEVBQ1IsUUFBUSxFQUNSLElBQUksRUFDSixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixZQUFZLEVBQ1osWUFBWSxFQUNmLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZ0NBQWdDLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBYSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pTLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVB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ICAgIEF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEluamVjdG9yLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICAkYXBwRGlnZXN0LFxuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICBBcHAsXG4gICAgQXBwRGVmYXVsdHMsXG4gICAgRGF0YVNvdXJjZSxcbiAgICBnZXRDbG9uZWRPYmplY3QsXG4gICAgaXNEYXRhU291cmNlRXF1YWwsXG4gICAgaXNEZWZpbmVkLFxuICAgIGlzTW9iaWxlLFxuICAgIGlzTW9iaWxlQXBwLFxuICAgIGlzTnVtYmVyLFxuICAgIGlzT2JqZWN0LFxuICAgIG5vb3AsXG4gICAgc3dpdGNoQ2xhc3MsXG4gICAgU3RhdGVQZXJzaXN0ZW5jZSxcbiAgICBQYWdpbmF0aW9uU2VydmljZSxcbiAgICBzZXRMaXN0Q2xhc3MsXG4gICAgZ2VuZXJhdGVHVUlkXG59IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IEFQUExZX1NUWUxFU19UWVBFLCBjb25maWd1cmVEbkQsIERFQk9VTkNFX1RJTUVTLCBnZXRPcmRlcmVkRGF0YXNldCwgZ3JvdXBEYXRhLCBoYW5kbGVIZWFkZXJDbGljaywgTkFWSUdBVElPTl9UWVBFLCB1bnN1cHBvcnRlZFN0YXRlUGVyc2lzdGVuY2VUeXBlcywgcHJvdmlkZUFzV2lkZ2V0UmVmLCBTdHlsYWJsZUNvbXBvbmVudCwgc3R5bGVyLCBUb0RhdGVQaXBlLCB0b2dnbGVBbGxIZWFkZXJzLCBXaWRnZXRSZWYsIGV4dHJhY3REYXRhU291cmNlTmFtZSB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJ0B3bS9jb21wb25lbnRzL2RhdGEvcGFnaW5hdGlvbic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAd20vY29tcG9uZW50cy9pbnB1dCc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL2xpc3QucHJvcHMnO1xuaW1wb3J0IHsgTGlzdEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2xpc3QtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTGlzdEFuaW1hdG9yIH0gZnJvbSAnLi9saXN0LmFuaW1hdG9yJztcblxuZGVjbGFyZSBjb25zdCBfO1xuZGVjbGFyZSBjb25zdCAkO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtbGl2ZWxpc3QgYXBwLXBhbmVsJztcbmNvbnN0IFdJREdFVF9DT05GSUcgPSB7d2lkZ2V0VHlwZTogJ3dtLWxpc3QnLCBob3N0Q2xhc3M6IERFRkFVTFRfQ0xTfTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbd21MaXN0XScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBwcm92aWRlQXNXaWRnZXRSZWYoTGlzdENvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQgZXh0ZW5kcyBTdHlsYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgQENvbnRlbnRDaGlsZCgnbGlzdFRlbXBsYXRlJykgbGlzdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxFbGVtZW50UmVmPjtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2xpc3RMZWZ0QWN0aW9uVGVtcGxhdGUnKSBsaXN0TGVmdEFjdGlvblRlbXBsYXRlOiAgVGVtcGxhdGVSZWY8RWxlbWVudFJlZj47XG4gICAgQENvbnRlbnRDaGlsZCgnbGlzdFJpZ2h0QWN0aW9uVGVtcGxhdGUnKSBsaXN0UmlnaHRBY3Rpb25UZW1wbGF0ZTogIFRlbXBsYXRlUmVmPEVsZW1lbnRSZWY+O1xuICAgIEBDb250ZW50Q2hpbGRyZW4oQnV0dG9uQ29tcG9uZW50KSBidG5Db21wb25lbnRzO1xuXG4gICAgQFZpZXdDaGlsZChQYWdpbmF0aW9uQ29tcG9uZW50KSBkYXRhTmF2aWdhdG9yO1xuICAgIEBWaWV3Q2hpbGRyZW4oTGlzdEl0ZW1EaXJlY3RpdmUpIGxpc3RJdGVtczogUXVlcnlMaXN0PExpc3RJdGVtRGlyZWN0aXZlPjtcblxuICAgIHByaXZhdGUgaXRlbXNQZXJSb3dDbGFzczogc3RyaW5nO1xuICAgIHByaXZhdGUgZmlyc3RTZWxlY3RlZEl0ZW06IExpc3RJdGVtRGlyZWN0aXZlO1xuICAgIHByaXZhdGUgbmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2g6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIG5hdmlnYXRvclJlc3VsdFdhdGNoOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBuYXZDb250cm9sczogc3RyaW5nO1xuICAgIHByaXZhdGUgb25EZW1hbmRMb2FkOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2l0ZW1zOiBBcnJheTxhbnk+O1xuICAgIHByaXZhdGUgZGF0YU5hdmlnYXRvcldhdGNoZWQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBkYXRhc291cmNlOiBhbnk7XG4gICAgcHJpdmF0ZSBzaG93TmF2aWdhdGlvbjogYm9vbGVhbjtcbiAgICBwdWJsaWMgbm9EYXRhRm91bmQ6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZW9yZGVyUHJvcHM6IGFueTtcbiAgICBwcml2YXRlIGFwcDogYW55O1xuICAgIHByaXZhdGUgYXBwRGVmYXVsdHM6IGFueTtcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lO1xuICAgIHByaXZhdGUgc3RhdGVQZXJzaXN0ZW5jZTogU3RhdGVQZXJzaXN0ZW5jZTtcbiAgICBwcml2YXRlIHBhZ2luYXRpb25TZXJ2aWNlOiBQYWdpbmF0aW9uU2VydmljZTtcblxuICAgIHB1YmxpYyBsYXN0U2VsZWN0ZWRJdGVtOiBMaXN0SXRlbURpcmVjdGl2ZTtcbiAgICBwdWJsaWMgZmllbGREZWZzOiBBcnJheTxhbnk+O1xuICAgIHB1YmxpYyBkaXNhYmxlaXRlbTtcbiAgICBwdWJsaWMgbmF2aWdhdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBuYXZpZ2F0aW9uYWxpZ246IHN0cmluZztcbiAgICBwdWJsaWMgcGFnZXNpemU6IG51bWJlcjtcbiAgICBwdWJsaWMgZGF0YXNldDogYW55O1xuICAgIHB1YmxpYyBtdWx0aXNlbGVjdDogYm9vbGVhbjtcbiAgICBwdWJsaWMgc2VsZWN0Zmlyc3RpdGVtOiBib29sZWFuO1xuICAgIHB1YmxpYyBvcmRlcmJ5OiBzdHJpbmc7XG4gICAgcHVibGljIGxvYWRpbmdpY29uOiBzdHJpbmc7XG4gICAgcHVibGljIHBhZ2luYXRpb25jbGFzczogc3RyaW5nO1xuICAgIHB1YmxpYyBvbmRlbWFuZG1lc3NhZ2U6IHN0cmluZztcbiAgICBwdWJsaWMgbG9hZGluZ2RhdGFtc2c6IHN0cmluZztcbiAgICBwdWJsaWMgc2VsZWN0aW9ubGltaXQ6IG51bWJlcjtcbiAgICBwdWJsaWMgaW5mU2Nyb2xsOiBib29sZWFuO1xuICAgIHB1YmxpYyBlbmFibGVyZW9yZGVyOiBib29sZWFuO1xuICAgIHB1YmxpYyBpdGVtc3BlcnJvdzogc3RyaW5nO1xuICAgIHB1YmxpYyBpdGVtY2xhc3M6IHN0cmluZztcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtV2lkZ2V0czogQXJyYXk8V2lkZ2V0UmVmPiB8IFdpZGdldFJlZjtcbiAgICBwdWJsaWMgdmFyaWFibGVJbmZsaWdodDtcbiAgICBwdWJsaWMgbmFtZTtcbiAgICBwdWJsaWMgY3VycmVudFBhZ2U7XG4gICAgcHVibGljIGRpcmVjdGlvbjtcbiAgICBwdWJsaWMgdGFiaW5kZXg7XG5cbiAgICBwdWJsaWMgaGFuZGxlSGVhZGVyQ2xpY2s6IEZ1bmN0aW9uO1xuICAgIHB1YmxpYyB0b2dnbGVBbGxIZWFkZXJzOiB2b2lkO1xuICAgIHB1YmxpYyBncm91cGJ5OiBzdHJpbmc7XG4gICAgcHVibGljIGNvbGxhcHNpYmxlOiBzdHJpbmc7XG4gICAgcHVibGljIGRhdGVQaXBlOiBUb0RhdGVQaXBlO1xuICAgIHB1YmxpYyBiaW5kaXRlbWNsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGJpbmRkaXNhYmxlaXRlbTogc3RyaW5nO1xuICAgIHB1YmxpYyBiaW5kZGF0YXNldDogc3RyaW5nO1xuICAgIHByaXZhdGUgYmluZGRhdGFzb3VyY2U6IHN0cmluZztcbiAgICBwdWJsaWMgbW91c2VFbnRlckNCOiBzdHJpbmc7XG4gICAgcHVibGljIG1vdXNlTGVhdmVDQjogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBtYXRjaDogc3RyaW5nO1xuICAgIHByaXZhdGUgZGF0ZWZvcm1hdDogc3RyaW5nO1xuICAgIHByaXZhdGUgZ3JvdXBlZERhdGE6IGFueTtcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZjtcbiAgICBwcml2YXRlIHByb21pc2VSZXNvbHZlckZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIHByb3BzSW5pdFByb21pc2U6IFByb21pc2U8YW55PjtcbiAgICBwcml2YXRlICR1bEVsZTogYW55O1xuICAgIHByaXZhdGUgX2xpc3RBbmltYXRvcjogTGlzdEFuaW1hdG9yO1xuICAgIHB1YmxpYyBwdWxsdG9yZWZyZXNoOiBib29sZWFuO1xuICAgIHByaXZhdGUgX2xpc3RlbmVyRGVzdHJveWVyczogQXJyYXk8YW55PjtcbiAgICBwcml2YXRlIGRlYm91bmNlZEZldGNoTmV4dERhdGFzZXRPblNjcm9sbDogRnVuY3Rpb247XG5cbiAgICBwdWJsaWMgdGl0bGU6IHN0cmluZztcbiAgICBwdWJsaWMgc3ViaGVhZGluZzogc3RyaW5nO1xuICAgIHB1YmxpYyBpY29uY2xhc3M6IHN0cmluZztcbiAgICBwdWJsaWMgbGlzdGNsYXNzOiBhbnk7XG4gICAgcHJpdmF0ZSBpc0RhdGFDaGFuZ2VkOiBib29sZWFuO1xuICAgIHB1YmxpYyBzdGF0ZWhhbmRsZXI6IGFueTtcbiAgICBwcml2YXRlIGlzTGlzdEVsZW1lbnRNb3ZhYmxlIDogYm9vbGVhbjtcbiAgICBwdWJsaWMgY3VycmVudEluZGV4OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBhcmlhVGV4dDogU3RyaW5nO1xuICAgIHB1YmxpYyB0aXRsZUlkOiBzdHJpbmcgO1xuXG4gICAgX2lzRGVwZW5kZW50O1xuICAgIHByaXZhdGUgX3BhZ2VMb2FkO1xuICAgIHByaXZhdGUgX3NlbGVjdGVkSXRlbXNFeGlzdDtcblxuICAgIHByaXZhdGUgdG91Y2hpbmc7XG4gICAgcHJpdmF0ZSB0b3VjaGVkO1xuXG4gICAgcHVibGljIGdldCBzZWxlY3RlZGl0ZW0oKSB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0Q2xvbmVkT2JqZWN0KHRoaXMuX2l0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoXy5pc0VtcHR5KHRoaXMuX2l0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBnZXRDbG9uZWRPYmplY3QodGhpcy5faXRlbXNbMF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbGlzdCBvZiB3aWRnZXRzIHByZXNlbnQgb24gbGlzdCBpdGVtIGJ5IGNvbnNpZGVyaW5nIG5hbWUgYW5kIGluZGV4IG9mIHRoZSB3aWRnZXQuXG4gICAgICogSWYgd2UgZGlkJ250IHBhc3MgaW5kZXgsIGl0IHJldHVybnMgYXJyYXkgb2YgYWxsIHRoZSB3aWRnZXRzIHdoaWNoIGFyZSBtYXRjaGluZyB0byB3aWRnZXQgbmFtZVxuICAgICAqIEBwYXJhbSB3aWRndGVOYW1lOiBOYW1lIG9mIHRoZSB3aWRnZXRcbiAgICAgKiBAcGFyYW0gaW5kZXg6IEluZGV4IG9mIHRoZSB3aWRnZXRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V2lkZ2V0cyh3aWRndGVOYW1lOiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKSB7XG4gICAgICAgIGxldCAkdGFyZ2V0O1xuICAgICAgICBjb25zdCByZXRWYWwgPSBbXTtcblxuICAgICAgICBpZiAoIXdpZGd0ZU5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNEZWZpbmVkKGluZGV4KSkge1xuICAgICAgICAgICAgXy5mb3JFYWNoKHRoaXMubGlzdEl0ZW1zLnRvQXJyYXkoKSwgKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgJHRhcmdldCA9IF8uZ2V0KGVsLmN1cnJlbnRJdGVtV2lkZ2V0cywgd2lkZ3RlTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKCR0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0VmFsLnB1c2goJHRhcmdldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSAraW5kZXggfHwgMDtcblxuICAgICAgICAkdGFyZ2V0ID0gXy5nZXQodGhpcy5saXN0SXRlbXMudG9BcnJheSgpLCBpbmRleCk7XG5cbiAgICAgICAgaWYgKCR0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBbXy5nZXQoJHRhcmdldC5jdXJyZW50SXRlbVdpZGdldHMsIHdpZGd0ZU5hbWUpXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJldHVybnMgbGlzdGl0ZW0gcmVmZXJlbmNlIGJ5IGluZGV4IHZhbHVlLiBUaGlzIHJlZmVycyB0byB0aGUgc2FtZSBtZXRob2QgZ2V0TGlzdEl0ZW1CeUluZGV4LlxuICAgIHB1YmxpYyBnZXRJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGluZGV4IG9mIGxpc3RJdGVtKGxpc3RJdGVtRGlyZWN0aXZlIC8gbGlzdEl0ZW1PYmplY3QpXG4gICAgICogSWYgaXRlbSBpcyBhIGRpcmVjdGl2ZSwgaW5kZXggaXMgZmV0Y2hlZCBmcm9tIGxpc3RJdGVtc1xuICAgICAqIElmIGl0ZW0gaXMgYW4gb2JqZWN0LCBpbmRleCBpcyBmZXRjaGVkIGZyb20gZmllbGREZWZzXG4gICAgKi9cbiAgICBwdWJsaWMgZ2V0SW5kZXgoaXRlbTogYW55KSB7XG4gICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgTGlzdEl0ZW1EaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldExpc3RJdGVtSW5kZXgoaXRlbSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmllbGREZWZzLmZpbmRJbmRleCgob2JqKSA9PiBfLmlzRXF1YWwob2JqLCBpdGVtKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkaXRlbShpdGVtcykge1xuICAgICAgICB0aGlzLl9pdGVtcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmRlc2VsZWN0TGlzdEl0ZW1zKCk7XG5cbiAgICAgICAgaWYgKF8uaXNBcnJheShpdGVtcykpIHtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB0aGlzLnNlbGVjdEl0ZW0oaXRlbSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgZGF0ZVBpcGU6IFRvRGF0ZVBpcGUsXG4gICAgICAgIGFwcDogQXBwLFxuICAgICAgICBhcHBEZWZhdWx0czogQXBwRGVmYXVsdHMsXG4gICAgICAgIG5nWm9uZTogTmdab25lLFxuICAgICAgICBAQXR0cmlidXRlKCdpdGVtY2xhc3MuYmluZCcpIGJpbmRpdGVtY2xhc3M6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgnZGlzYWJsZWl0ZW0uYmluZCcpIGJpbmRkaXNhYmxlaXRlbTogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhc2V0LmJpbmQnKSBiaW5kZGF0YXNldDogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdkYXRhc291cmNlLmJpbmQnKSBiaW5kZGF0YXNvdXJjZTogc3RyaW5nLFxuICAgICAgICBAQXR0cmlidXRlKCdtb3VzZWVudGVyLmV2ZW50JykgbW91c2VFbnRlckNCOiBzdHJpbmcsXG4gICAgICAgIEBBdHRyaWJ1dGUoJ21vdXNlbGVhdmUuZXZlbnQnKSBtb3VzZUxlYXZlQ0I6IHN0cmluZyxcbiAgICAgICAgc3RhdGVQZXJzaXN0ZW5jZTogU3RhdGVQZXJzaXN0ZW5jZSxcbiAgICAgICAgcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGxldCByZXNvbHZlRm46IEZ1bmN0aW9uID0gbm9vcDtcbiAgICAgICAgY29uc3QgcHJvcHNJbml0UHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlcyA9PiByZXNvbHZlRm4gPSByZXMpO1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIHByb3BzSW5pdFByb21pc2UpO1xuICAgICAgICB0aGlzLnByb3BzSW5pdFByb21pc2UgPSBwcm9wc0luaXRQcm9taXNlO1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuID0gcmVzb2x2ZUZuO1xuICAgICAgICBzdHlsZXIodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLCBBUFBMWV9TVFlMRVNfVFlQRS5TSEVMTCk7XG4gICAgICAgIHRoaXMuY2RSZWYgPSBjZFJlZjtcbiAgICAgICAgdGhpcy5uZ1pvbmUgPSBuZ1pvbmU7XG4gICAgICAgIHRoaXMuZGF0ZVBpcGUgPSBkYXRlUGlwZTtcbiAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlID0gc3RhdGVQZXJzaXN0ZW5jZTtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZSA9IHBhZ2luYXRpb25TZXJ2aWNlO1xuICAgICAgICB0aGlzLl9wYWdlTG9hZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5iaW5kaXRlbWNsYXNzID0gYmluZGl0ZW1jbGFzcztcbiAgICAgICAgdGhpcy5iaW5kZGlzYWJsZWl0ZW0gPSBiaW5kZGlzYWJsZWl0ZW07XG4gICAgICAgIHRoaXMuYmluZGRhdGFzZXQgPSBiaW5kZGF0YXNldDtcbiAgICAgICAgdGhpcy5tb3VzZUVudGVyQ0IgPSBtb3VzZUVudGVyQ0I7XG4gICAgICAgIHRoaXMubW91c2VMZWF2ZUNCID0gbW91c2VMZWF2ZUNCO1xuICAgICAgICB0aGlzLmJpbmRkYXRhc291cmNlID0gYmluZGRhdGFzb3VyY2U7XG5cbiAgICAgICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgICAgIHRoaXMuYXBwRGVmYXVsdHMgPSBhcHBEZWZhdWx0cztcbiAgICAgICAgdGhpcy52YXJpYWJsZUluZmxpZ2h0ID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5ub0RhdGFGb3VuZCA9ICFiaW5kZGF0YXNldDtcbiAgICAgICAgdGhpcy50aXRsZUlkID0gJ3dtbGlzdC0nICsgZ2VuZXJhdGVHVUlkKCk7XG5cbiAgICAgICAgLy8gVXBkYXRlcyBwYWdpbmF0aW9uLCBmaWx0ZXIsIHNvcnQgZXRjIG9wdGlvbnMgZm9yIHNlcnZpY2UgYW5kIGNydWQgdmFyaWFibGVzXG4gICAgICAgIHRoaXMuX2xpc3RlbmVyRGVzdHJveWVycyA9IFtcbiAgICAgICAgICAgIHRoaXMuYXBwLnN1YnNjcmliZSgnY2hlY2stc3RhdGUtcGVyc2lzdGVuY2Utb3B0aW9ucycsIG9wdGlvbnMgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBkYXRhU291cmNlTmFtZSA9IF8uZ2V0KHRoaXMuZGF0YXNvdXJjZSwgJ25hbWUnKTtcbiAgICAgICAgICAgICAgICAvLyBpbiBQcmVmYWJzLCB0aGlzLmRhdGFzb3VyY2UgaXMgbm90IHJlc29sdmVkIGF0IHRoZSB0aW1lIG9mIHZhcmlhYmxlIGludm9jYXRpb24sIHNvIGFkZGl0aW9uYWwgY2hlY2sgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhU291cmNlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlTmFtZSA9IGV4dHJhY3REYXRhU291cmNlTmFtZSh0aGlzLmJpbmRkYXRhc291cmNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKF8uZ2V0KG9wdGlvbnMsICd2YXJpYWJsZS5uYW1lJykgIT09IGRhdGFTb3VyY2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdGF0ZVBhcmFtcyhvcHRpb25zKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgLy8gU2hvdyBsb2FkaW5nIHN0YXR1cyBiYXNlZCBvbiB0aGUgdmFyaWFibGUgbGlmZSBjeWNsZVxuICAgICAgICAgICAgdGhpcy5hcHAuc3Vic2NyaWJlKCd0b2dnbGUtdmFyaWFibGUtc3RhdGUnLCB0aGlzLmhhbmRsZUxvYWRpbmcuYmluZCh0aGlzKSksXG4gICAgICAgICAgICB0aGlzLmFwcC5zdWJzY3JpYmUoJ3NldHVwLWN1ZC1saXN0ZW5lcicsIHBhcmFtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpICE9PSBwYXJhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuX2lzRGVwZW5kZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb25maWd1cmVkU3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuY29tcHV0ZU1vZGUodGhpcy5zdGF0ZWhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gbW9kZSAmJiBtb2RlLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVTdGF0ZVBhcmFtcyhvcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLl9wYWdlTG9hZCAmJiB0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhZ2VMb2FkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCB3aWRnZXRTdGF0ZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzKTtcbiAgICAgICAgICAgIGlmIChfLmdldCh3aWRnZXRTdGF0ZSwgJ3BhZ2luYXRpb24nKSkge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCB7fTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9wdGlvbnMucGFnZSA9IHdpZGdldFN0YXRlLnBhZ2luYXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXy5nZXQod2lkZ2V0U3RhdGUsICdzZWxlY3RlZEl0ZW0nKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJXTUV2ZW50KGV2ZW50TmFtZSwgaXRlbT8pIHtcbiAgICAgICAgJGludm9rZVdhdGNoZXJzKHRydWUpO1xuICAgICAgICAvLyBJZiB3ZSBoYXZlIG11bHRpc2VsZWN0IGZvciB0aGUgbGl2ZWxpc3QoTGlzdCB3aXRoIGZvcm0gdGVtcGxhdGUpLCBpbiBydW4gbW9kZSBkZWxldGluZyBhIHJlY29yZCBpcyBnZXR0aW5nIGZhaWxlZC4gQmVjdWFzZSB0aGUgc2VsZWN0ZWRpdGVtIHdpbGwgYmUgYXJyYXkgb2Ygb2JqZWN0cy4gU28gY29uc2lkZXIgdGhlIGxhc3Qgb2JqZWN0LlxuICAgICAgICBsZXQgcm93ID0gdGhpcy5tdWx0aXNlbGVjdCA/IF8ubGFzdCh0aGlzLnNlbGVjdGVkaXRlbSkgOiB0aGlzLnNlbGVjdGVkaXRlbTtcbiAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgIHJvdyA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hcHAubm90aWZ5KCd3bS1ldmVudCcsIHtldmVudE5hbWUsIHdpZGdldE5hbWU6IHRoaXMubmFtZSwgcm93OiByb3d9KTtcbiAgICB9XG5cbiAgICBjcmVhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0RlcGVuZGVudCkge1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyV01FdmVudCgnaW5zZXJ0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlZGl0Um93KGl0ZW0/KSB7XG4gICAgICAgIGlmICh0aGlzLl9pc0RlcGVuZGVudCkge1xuICAgICAgICAgICAgbGV0IGxpc3RJdGVtO1xuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBsaXN0SXRlbSA9IHRoaXMuZ2V0SXRlbVJlZkJ5SW5kZXhPck1vZGVsKGl0ZW0pLml0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJXTUV2ZW50KCd1cGRhdGUnLCBsaXN0SXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGUoaXRlbT8pIHtcbiAgICAgICAgdGhpcy5lZGl0Um93KGl0ZW0pO1xuICAgIH1cblxuICAgIGRlbGV0ZVJvdyhpdGVtPykge1xuICAgICAgICBpZiAodGhpcy5faXNEZXBlbmRlbnQpIHtcbiAgICAgICAgICAgIGxldCBsaXN0SXRlbTtcbiAgICAgICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgbGlzdEl0ZW0gPSB0aGlzLmdldEl0ZW1SZWZCeUluZGV4T3JNb2RlbChpdGVtKS5pdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyV01FdmVudCgnZGVsZXRlJywgbGlzdEl0ZW0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVsZXRlKGl0ZW0/KSB7XG4gICAgICAgIHRoaXMuZGVsZXRlUm93KGl0ZW0pO1xuICAgIH1cbiAgICBoYW5kbGVMb2FkaW5nKGRhdGEpIHtcbiAgICAgICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMuZGF0YXNvdXJjZTtcbiAgICAgICAgaWYgKGRhdGFTb3VyY2UgJiYgZGF0YVNvdXJjZS5leGVjdXRlKERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX0FQSV9BV0FSRSkgJiYgaXNEYXRhU291cmNlRXF1YWwoZGF0YS52YXJpYWJsZSwgZGF0YVNvdXJjZSkpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdGF0ZVBhcmFtcyhkYXRhKTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhcmlhYmxlSW5mbGlnaHQgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjM3NzJdIFVwZGF0ZSBub2RhdGFmb3VuZCBmbGFnIG9uY2UgdGhlIHJlc3BvbnNlIGlzIHJlY2lldmVkIGZyb20gdGhlIHNlcnZlclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsRWxlID0gZGF0YS5kYXRhPy5wYWdpbmF0aW9uPy50b3RhbEVsZW1lbnRzO1xuICAgICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0b3RhbEVsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub0RhdGFGb3VuZCA9IHRvdGFsRWxlID09PSAwID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIHRvdGFsZWxlbWVudHMgaXMgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9EYXRhRm91bmQgPSBfLmlzRW1wdHkoZGF0YS5kYXRhPy5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXROYXZpZ2F0aW9uKCkge1xuICAgICAgICB0aGlzLnNob3dOYXZpZ2F0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMubmF2Q29udHJvbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaW5mU2Nyb2xsID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25EZW1hbmRMb2FkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVCYXNpY05hdmlnYXRpb24oKSB7XG4gICAgICAgIHRoaXMubmF2Q29udHJvbHMgPSBOQVZJR0FUSU9OX1RZUEUuQkFTSUM7XG4gICAgICAgIHRoaXMuc2hvd05hdmlnYXRpb24gPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlSW5saW5lTmF2aWdhdGlvbigpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9scyA9IE5BVklHQVRJT05fVFlQRS5JTkxJTkU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmFibGVDbGFzc2ljTmF2aWdhdGlvbigpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9scyA9IE5BVklHQVRJT05fVFlQRS5DTEFTU0lDO1xuICAgICAgICB0aGlzLnNob3dOYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZVBhZ2VyTmF2aWdhdGlvbigpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9scyA9IE5BVklHQVRJT05fVFlQRS5QQUdFUjtcbiAgICAgICAgdGhpcy5zaG93TmF2aWdhdGlvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROYXZpZ2F0aW9uVHlwZU5vbmUoKSB7XG4gICAgICAgIHRoaXMubmF2Q29udHJvbHMgPSBOQVZJR0FUSU9OX1RZUEUuTk9ORTtcbiAgICAgICAgdGhpcy5zaG93TmF2aWdhdGlvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZW5hYmxlSW5maW5pdGVTY3JvbGwoKSB7XG4gICAgICAgIHRoaXMuaW5mU2Nyb2xsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZU9uRGVtYW5kTG9hZCgpIHtcbiAgICAgICAgdGhpcy5vbkRlbWFuZExvYWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dOYXZpZ2F0aW9uID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIE5hdmlnYXRpb24gdHlwZSBmb3IgdGhlIGxpc3QuXG4gICAgICogQHBhcmFtIHR5cGVcbiAgICAgKi9cbiAgICBwcml2YXRlIG9uTmF2aWdhdGlvblR5cGVDaGFuZ2UodHlwZSkge1xuICAgICAgICB0aGlzLnJlc2V0TmF2aWdhdGlvbigpO1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgTkFWSUdBVElPTl9UWVBFLkJBU0lDOlxuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlQmFzaWNOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5BVklHQVRJT05fVFlQRS5JTkxJTkU6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVJbmxpbmVOYXZpZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5BVklHQVRJT05fVFlQRS5BRFZBTkNFRDpcbiAgICAgICAgICAgIGNhc2UgTkFWSUdBVElPTl9UWVBFLkNMQVNTSUM6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVDbGFzc2ljTmF2aWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQVZJR0FUSU9OX1RZUEUuUEFHRVI6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVQYWdlck5hdmlnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTkFWSUdBVElPTl9UWVBFLk5PTkUgOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmF2aWdhdGlvblR5cGVOb25lKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5BVklHQVRJT05fVFlQRS5TQ1JPTEw6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVJbmZpbml0ZVNjcm9sbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQVZJR0FUSU9OX1RZUEUuT05ERU1BTkQ6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVPbkRlbWFuZExvYWQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSBmaWVsZERlZnMgcHJvcGVydHksIGZpZWxkRGVmcyBpcyB0aGUgbW9kZWwgb2YgdGhlIExpc3QgQ29tcG9uZW50LlxuICAgICAqIGZpZWxkRGVmcyBpcyBhbiBBcnJheSB0eXBlLlxuICAgICAqIEBwYXJhbSBuZXdWYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUZpZWxkRGVmcyhuZXdWYWw6IEFycmF5PGFueT4pIHtcbiAgICAgICAgaWYgKHRoaXMuaW5mU2Nyb2xsIHx8IHRoaXMub25EZW1hbmRMb2FkKSB7XG4gICAgICAgICAgICBbdGhpcy5maWVsZERlZnMsIHRoaXMuY3VycmVudFBhZ2VdID0gdGhpcy5wYWdpbmF0aW9uU2VydmljZS51cGRhdGVGaWVsZHNPblBhZ2luYXRpb24odGhpcywgbmV3VmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGREZWZzID0gbmV3VmFsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMub3JkZXJieSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZERlZnMgPSBnZXRPcmRlcmVkRGF0YXNldCh0aGlzLmZpZWxkRGVmcywgdGhpcy5vcmRlcmJ5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5ncm91cGJ5KSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwZWREYXRhID0gZ3JvdXBEYXRhKHRoaXMsIHRoaXMuZmllbGREZWZzLCB0aGlzLmdyb3VwYnksIHRoaXMubWF0Y2gsIHRoaXMub3JkZXJieSwgdGhpcy5kYXRlZm9ybWF0LCB0aGlzLmRhdGVQaXBlLCB1bmRlZmluZWQsIHRoaXMuYXBwRGVmYXVsdHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkRGVmcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubm9EYXRhRm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZGl0ZW0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICB0aGlzLmxpc3RJdGVtcy5zZXREaXJ0eSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25EYXRhQ2hhbmdlKG5ld1ZhbCkge1xuICAgICAgICAvLyBDaGVjayBmb3IgbmV3VmFsIGlzIG5vdCBlbXB0eVxuICAgICAgICBpZiAoIV8uaXNFbXB0eShuZXdWYWwpKSB7XG5cbiAgICAgICAgICAgIHRoaXMubm9EYXRhRm91bmQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNEYXRhQ2hhbmdlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFzb3VyY2UgJiYgdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uSVNfQVBJX0FXQVJFKSkge1xuICAgICAgICAgICAgICAgIC8vIGNsb25lIHRoZSB0aGUgZGF0YSBpbiBjYXNlIG9mIGxpdmUgYW5kIHNlcnZpY2UgdmFyaWFibGVzIHRvIHByZXZlbnQgdGhlIHR3by13YXkgYmluZGluZyBmb3IgdGhlc2UgdmFyaWFibGVzLlxuICAgICAgICAgICAgICAgIG5ld1ZhbCA9IF8uY2xvbmVEZWVwKG5ld1ZhbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc09iamVjdChuZXdWYWwpICYmICFfLmlzQXJyYXkobmV3VmFsKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbCA9IF8uaXNFbXB0eShuZXdWYWwpID8gW10gOiBbbmV3VmFsXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8uaXNTdHJpbmcobmV3VmFsKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbCA9IG5ld1ZhbC5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiB0aGUgcGFnZSBudW1iZXIgaXMgZ3JlYXRlciB0aGFuIDEgb24gaW5pdGlhbCBsb2FkIHRoZW4gd2UgcmVuZGVyIHRoZSBmaXJzdCBwYWdlLlxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YXNvdXJjZSAmJiB0aGlzLmRhdGFzb3VyY2Uub3duZXIgPT09ICdBcHAnICYmICh0aGlzLmluZlNjcm9sbCB8fCB0aGlzLm9uRGVtYW5kTG9hZCkgJiYgIXRoaXMuY3VycmVudFBhZ2UgJiYgdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX1BBR0lOR19PUFRJT05TKS5udW1iZXIgPiAwKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsID0gdGhpcy5kYXRhc291cmNlLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uTElTVF9SRUNPUkRTLCB7XG4gICAgICAgICAgICAgICAgICdwYWdlJzogMVxuICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8uaXNBcnJheShuZXdWYWwpKSB7XG4gICAgICAgICAgICAgICAgaWYgKG5ld1ZhbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdiZWZvcmVkYXRhcmVuZGVyJywgeyRkYXRhOiBuZXdWYWx9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWVsZERlZnMobmV3VmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmllbGREZWZzKFtdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZXMgdGhlIGRhdGFTb3VyY2Ugd2hlbiBwYWdpbmF0aW9uIGlzIGVuYWJsZWQgZm9yIHRoZSBDb21wb25lbnQuXG4gICAgcHJpdmF0ZSBzZXR1cERhdGFTb3VyY2UoKSB7XG4gICAgICAgIGNvbnN0IGRhdGFOYXZpZ2F0b3IgPSB0aGlzLmRhdGFOYXZpZ2F0b3I7XG5cbiAgICAgICAgZGF0YU5hdmlnYXRvci5vcHRpb25zID0ge1xuICAgICAgICAgICAgbWF4UmVzdWx0czogdGhpcy5wYWdlc2l6ZSB8fCAyMFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvcldhdGNoZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLm5hdmlnYXRvclJlc3VsdFdhdGNoKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRvclJlc3VsdFdhdGNoLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgLypSZWdpc3RlciBhIHdhdGNoIG9uIHRoZSBcInJlc3VsdFwiIHByb3BlcnR5IG9mIHRoZSBcImRhdGFOYXZpZ2F0b3JcIiBzbyB0aGF0IHRoZSBwYWdpbmF0ZWQgZGF0YSBpcyBkaXNwbGF5ZWQgaW4gdGhlIGxpdmUtbGlzdC4qL1xuICAgICAgICB0aGlzLm5hdmlnYXRvclJlc3VsdFdhdGNoID0gZGF0YU5hdmlnYXRvci5yZXN1bHRFbWl0dGVyLnN1YnNjcmliZSgobmV3VmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25EYXRhQ2hhbmdlKG5ld1ZhbCk7XG4gICAgICAgIH0sIHRydWUpO1xuICAgICAgICAvKkRlLXJlZ2lzdGVyIHRoZSB3YXRjaCBpZiBpdCBpcyBleGlzdHMgKi9cbiAgICAgICAgaWYgKHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2gpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdG9yTWF4UmVzdWx0V2F0Y2gudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICAvKlJlZ2lzdGVyIGEgd2F0Y2ggb24gdGhlIFwibWF4UmVzdWx0c1wiIHByb3BlcnR5IG9mIHRoZSBcImRhdGFOYXZpZ2F0b3JcIiBzbyB0aGF0IHRoZSBcInBhZ2VTaXplXCIgaXMgZGlzcGxheWVkIGluIHRoZSBsaXZlLWxpc3QuKi9cbiAgICAgICAgdGhpcy5uYXZpZ2F0b3JNYXhSZXN1bHRXYXRjaCA9IGRhdGFOYXZpZ2F0b3IubWF4UmVzdWx0c0VtaXR0ZXIuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGFnZXNpemUgPSB2YWw7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRhdGFOYXZpZ2F0b3IubWF4UmVzdWx0cyA9IHRoaXMucGFnZXNpemUgfHwgMjA7XG4gICAgICAgIHRoaXMucmVtb3ZlUHJvcGVydHlCaW5kaW5nKCdkYXRhc2V0Jyk7XG4gICAgICAgIC8vIHdoZW4gbGlzdCBoYXZpbmcgXCJkYXRhc2V0Ym91bmRleHByXCIgYXR0ciBpbmRpY2F0ZXMgdGhhdCBsaXN0IGlzIGJvdW5kIHRvIGl0ZW0gY29udGV4dFxuICAgICAgICAvLyB3aGVuIGRhdGFzZXQgaXMgYm91bmQgdG8gXCJpdGVtLkZJRUxEXCIgdGhlbiBpdGVtIGNvbnRleHQgaXMgcGFzc2VkIGFzIHRoZSBkYXRhc291cmNlLlxuICAgICAgICBjb25zdCBkYXRhc2V0Qm91bmRFeHByID0gdGhpcy5nZXRBdHRyKCdkYXRhc2V0Ym91bmRleHByJyk7XG4gICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5zZXRCaW5kRGF0YVNldChcbiAgICAgICAgICAgIHRoaXMuYmluZGRhdGFzZXQsXG4gICAgICAgICAgICB0aGlzLnZpZXdQYXJlbnQsXG4gICAgICAgICAgICBkYXRhc2V0Qm91bmRFeHByID8gdGhpcy5jb250ZXh0IDogdGhpcy5kYXRhc291cmNlLFxuICAgICAgICAgICAgdGhpcy5kYXRhc2V0LFxuICAgICAgICAgICAgdGhpcy5iaW5kZGF0YXNvdXJjZSxcbiAgICAgICAgICAgIGRhdGFzZXRCb3VuZEV4cHIsXG4gICAgICAgICAgICB0aGlzLnN0YXRlaGFuZGxlclxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25EYXRhU2V0Q2hhbmdlKG5ld1ZhbCkge1xuICAgICAgICBpZiAoXy5nZXQodGhpcy5kYXRhc291cmNlLCAnY2F0ZWdvcnknKSA9PT0gJ3dtLlZhcmlhYmxlJyAmJiB0aGlzLmdldENvbmZpZ3VyZWRTdGF0ZSgpICE9PSAnbm9uZScgJiYgdGhpcy5fcGFnZUxvYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHdpZGdldFN0YXRlID0gdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLmdldFdpZGdldFN0YXRlKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fcGFnZUxvYWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChfLmdldCh3aWRnZXRTdGF0ZSwgJ3BhZ2luYXRpb24nKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5wYWdlQ2hhbmdlZCh7cGFnZTogd2lkZ2V0U3RhdGUucGFnaW5hdGlvbn0sIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uZ2V0KHdpZGdldFN0YXRlLCAnc2VsZWN0ZWRJdGVtJykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zRXhpc3QgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kYXRhTmF2aWdhdG9yV2F0Y2hlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubmF2aWdhdGlvbiAmJiB0aGlzLm5hdmlnYXRpb24gIT09IE5BVklHQVRJT05fVFlQRS5OT05FKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXR1cERhdGFTb3VyY2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFDaGFuZ2UobmV3VmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5hdmlnYXRpb24gJiYgdGhpcy5uYXZpZ2F0aW9uICE9PSBOQVZJR0FUSU9OX1RZUEUuTk9ORSkge1xuICAgICAgICAgICAgLy8gSWYgbmF2aWdhdGlvbiBpcyBhbHJlYWR5IHNldHVwIGFuZCBkYXRhc291cmNlIGlzIGNoYW5nZWQsIHVwZGF0ZSB0aGUgZGF0YXNvdXJjZSBvbiBuYXZpZ2F0aW9uXG4gICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3Iuc2V0RGF0YVNvdXJjZSh0aGlzLmRhdGFzb3VyY2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWxsIHRoZSBMaXN0SXRlbSdzIEFjdGl2ZSBzdGF0ZSBpcyBzZXQgdG8gZmFsc2UuXG4gICAgcHJpdmF0ZSBkZXNlbGVjdExpc3RJdGVtcygpIHtcbiAgICAgICAgdGhpcy5saXN0SXRlbXMuZm9yRWFjaChpdGVtID0+IGl0ZW0uaXNBY3RpdmUgPSBmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gRGVzZWxlY3QgYWxsIHRoZSBMaXN0SXRlbXMgYW5kIGNsZWFyIHRoZSBzZWxlY3RlZGl0ZW0oSW5PdXRCb3VuZCBQcm9wZXJ0eSBtb2RlbClcbiAgICBwcml2YXRlIGNsZWFyU2VsZWN0ZWRJdGVtcygpIHtcbiAgICAgICAgdGhpcy5kZXNlbGVjdExpc3RJdGVtcygpO1xuICAgICAgICB0aGlzLl9pdGVtcy5sZW5ndGggPSAwO1xuICAgICAgICAkYXBwRGlnZXN0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRoZSBMaXN0SXRlbURpcmVjdGl2ZSBpbnN0YW5jZSBieSBjaGVja2luZyB0aGUgZXF1YWxpdHkgb2YgdGhlIG1vZGVsLlxuICAgICAqIEBwYXJhbSBsaXN0TW9kZWw6IG1vZGVsIHRvIGJlIHNlYXJjaGVkIGZvclxuICAgICAqIEByZXR1cm5zIExpc3RJdGVtIGlmIHRoZSBtb2RlbCBpcyBtYXRjaGVkIGVsc2UgcmV0dXJuIG51bGwuXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRMaXN0SXRlbUJ5TW9kZWwobGlzdE1vZGVsKTogTGlzdEl0ZW1EaXJlY3RpdmUge1xuICAgICAgICByZXR1cm4gdGhpcy5saXN0SXRlbXMuZmluZCgobGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgIGxldCBpdGVtT2JqID0gbGlzdEl0ZW0uaXRlbTtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgIV8uaGFzKGxpc3RNb2RlbCwgJ19ncm91cEluZGV4JykpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBncm91cGJ5IGlzIGVuYWJsZWQsIGl0ZW0gY29udGFpbnMgX2dyb3VwSW5kZXggcHJvcGVydHkgd2hpY2ggc2hvdWxkIGJlIGV4Y2x1ZGVkIHdoaWxlIGNvbXBhcmluZyBtb2RlbC5cbiAgICAgICAgICAgICAgICBpdGVtT2JqID0gXy5jbG9uZShpdGVtT2JqKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgaXRlbU9iai5fZ3JvdXBJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChfLmlzRXF1YWwoaXRlbU9iaiwgbGlzdE1vZGVsKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VsZWN0ZWRJdGVtc1dpZGdldHMoc3RhdGVQZXJzaXN0ZW5jZVRyaWdnZXJlZD8pIHtcbiAgICAgICAgbGV0IG9iaiA9IHt9LCB3aWRnZXRTdGF0ZTtcbiAgICAgICAgY29uc3QgcGFnZU51bSA9IF8uZ2V0KHRoaXMuZGF0YU5hdmlnYXRvciwgJ2RuLmN1cnJlbnRQYWdlJykgfHwgMTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0Q29uZmlndXJlZFN0YXRlKCkgIT09ICdub25lJykge1xuICAgICAgICAgICAgLy8gcmVtb3ZlIHByZXZpb3VzbHkgY29uZmlndXJlZCBzZWxlY3RlZCBpdGVtcyBmb3IgY3VycmVudCBwYWdlIGFuZCBjb25zdHJ1Y3QgbmV3IG9uZXMgbGF0ZXIgYmVsb3cuXG4gICAgICAgICAgICB3aWRnZXRTdGF0ZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5nZXRXaWRnZXRTdGF0ZSh0aGlzKSB8fCB7fTtcbiAgICAgICAgICAgIGlmIChfLmdldCh3aWRnZXRTdGF0ZSwgJ3NlbGVjdGVkSXRlbScpKSB7XG4gICAgICAgICAgICAgICAgLy8gd2hlbiBtdWx0aXNlbGVjdCBpcyBvbiBhbmQgYW4gaXRlbSBpcyBzZWxlY3RlZCB3aXRob3V0IHByZXNzaW5nIENUUkwsIHByZXZpb3VzbHkgc2VsZWN0ZWQgaXRlbXMgaW4gc3RhdGUgc2hvdWxkIGJlIGVtcHR5LlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0ICYmIHRoaXMuc2VsZWN0ZWRpdGVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0gPSBbXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBfLnJlbW92ZSh3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0sIGZ1bmN0aW9uKHNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkSXRlbS5wYWdlID09PSBwYWdlTnVtO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICh0aGlzLnNlbGVjdGVkSXRlbVdpZGdldHMgYXMgQXJyYXk8V2lkZ2V0UmVmPikubGVuZ3RoID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxpc3RJdGVtcy5mb3JFYWNoKChpdGVtOiBMaXN0SXRlbURpcmVjdGl2ZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuc2VsZWN0ZWRJdGVtV2lkZ2V0cyBhcyBBcnJheTxXaWRnZXRSZWY+KS5wdXNoKGl0ZW0uY3VycmVudEl0ZW1XaWRnZXRzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVdpZGdldHMgPSBpdGVtLmN1cnJlbnRJdGVtV2lkZ2V0cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2JqID0ge3BhZ2U6IHBhZ2VOdW0sIGluZGV4OiBpbmRleH07XG4gICAgICAgICAgICAgICAgaWYgKF8uZ2V0KHdpZGdldFN0YXRlLCAnc2VsZWN0ZWRJdGVtJykgICYmIHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFfLnNvbWUod2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtLCBvYmopKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXRTdGF0ZS5zZWxlY3RlZEl0ZW0ucHVzaChvYmopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtID0gW29ial07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuZ2V0Q29uZmlndXJlZFN0YXRlKCkgIT09ICdub25lJyAmJiAhc3RhdGVQZXJzaXN0ZW5jZVRyaWdnZXJlZCkge1xuICAgICAgICAgICAgaWYgKHVuc3VwcG9ydGVkU3RhdGVQZXJzaXN0ZW5jZVR5cGVzLmluZGV4T2YodGhpcy5uYXZpZ2F0aW9uKSA8IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UucmVtb3ZlV2lkZ2V0U3RhdGUodGhpcywgJ3NlbGVjdGVkSXRlbScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5zZXRXaWRnZXRTdGF0ZSh0aGlzLCB7J3NlbGVjdGVkSXRlbSc6IHdpZGdldFN0YXRlLnNlbGVjdGVkSXRlbX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1JldGFpbiBTdGF0ZSBoYW5kbGluZyBvbiBXaWRnZXQgJyArIHRoaXMubmFtZSArICcgaXMgbm90IHN1cHBvcnRlZCBmb3IgY3VycmVudCBwYWdpbmF0aW9uIHR5cGUuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBsaXN0SXRlbSBhbmQgdXBkYXRlcyBzZWxlY3RlZGl0ZW0gcHJvcGVydHkuXG4gICAgICogSWYgdGhlIGxpc3RJdGVtIGlzIGFscmVhZHkgYSBzZWxlY3RlZCBpdGVtIHRoZW4gZGVzZWxlY3RzIHRoZSBpdGVtLlxuICAgICAqIEBwYXJhbSB7TGlzdEl0ZW1EaXJlY3RpdmV9ICRsaXN0SXRlbTogSXRlbSB0byBiZSBzZWxlY3RlZCBvZiBkZXNlbGVjdGVkLlxuICAgICAqL1xuICAgIHByaXZhdGUgdG9nZ2xlTGlzdEl0ZW1TZWxlY3Rpb24oJGxpc3RJdGVtOiBMaXN0SXRlbURpcmVjdGl2ZSwgc3RhdGVQZXJzaXN0ZW5jZVRyaWdnZXJlZD8pIHtcbiAgICAgICAgLy8gaXRlbSBpcyBub3QgYWxsb3dlZCB0byBnZXQgc2VsZWN0ZWQgaWYgaXQgaXMgZGlzYWJsZWQuXG4gICAgICAgIGlmICgkbGlzdEl0ZW0gJiYgISRsaXN0SXRlbS5kaXNhYmxlSXRlbSkge1xuICAgICAgICAgICAgbGV0IGl0ZW0gPSAkbGlzdEl0ZW0uaXRlbTtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwYnkgJiYgXy5oYXMoaXRlbSwgJ19ncm91cEluZGV4JykpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBncm91cGJ5IGlzIGVuYWJsZWQsIGl0ZW0gY29udGFpbnMgX2dyb3VwSW5kZXggcHJvcGVydHkgd2hpY2ggc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gc2VsZWN0ZWRpdGVtLlxuICAgICAgICAgICAgICAgIGl0ZW0gPSBfLmNsb25lKGl0ZW0pO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBpdGVtLl9ncm91cEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCRsaXN0SXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gXy5wdWxsQWxsV2l0aCh0aGlzLl9pdGVtcywgW2l0ZW1dLCBfLmlzRXF1YWwpO1xuICAgICAgICAgICAgICAgICRsaXN0SXRlbS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBtdWx0aXNlbGVjdCBpcyBmYWxzZSwgY2xlYXIgdGhlIHNlbGVjdEl0ZW0gbGlzdCBiZWZvcmUgYWRkaW5nIGFuIGl0ZW0gdG8gdGhlIHNlbGVjdEl0ZW0gbGlzdC5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5faXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdCcsIHt3aWRnZXQ6ICRsaXN0SXRlbSwgJGRhdGE6IGl0ZW19KTtcbiAgICAgICAgICAgICAgICAkbGlzdEl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZEl0ZW1zV2lkZ2V0cyhzdGF0ZVBlcnNpc3RlbmNlVHJpZ2dlcmVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBpcyBJbnZva2VkIHdoZW4gdGhlIG1vZGVsIGZvciB0aGUgTGlzdCBXaWRnZXQgaXMgY2hhbmdlZC5cbiAgICAgKiBAcGFyYW0ge1F1ZXJ5TGlzdDxMaXN0SXRlbURpcmVjdGl2ZT59IGxpc3RJdGVtc1xuICAgICAqL1xuICAgIHByaXZhdGUgb25MaXN0UmVuZGVyKGxpc3RJdGVtczogUXVlcnlMaXN0PExpc3RJdGVtRGlyZWN0aXZlPikge1xuICAgICAgICAvLyBBZGRlZCByZW5kZXIgY2FsbGJhY2sgZXZlbnQuIFRoaXMgbWV0aG9kKG9uTGlzdFJlbmRlcikgaXMgY2FsbGluZyBtdWx0aXBsZSB0aW1lcyBzbyBjaGVja2luZyBpc0RhdGFjaGFuZ2VkIGZsYWcgYmVjYXVzZSB0aGlzIGZhbGcgaXMgY2hhbmdlZCB3aGVuZXZlciBuZXcgZGF0YSBpcyByZW5kZXJlZC5cbiAgICAgICAgaWYgKHRoaXMuaXNEYXRhQ2hhbmdlZCkge1xuICAgICAgICAgICAgLy8gV2hlbmV2ZXIgZGF0YXNldCBpcyBjaGFuZ2VkLCB0cmlnZ2VyIHdhdGNoZXJzIHRvIGV2YWx1YXRlIGxpc3RpdGVtIGJpbmQgZXhwcmVzc2lvbnMuXG4gICAgICAgICAgICAkaW52b2tlV2F0Y2hlcnModHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3JlbmRlcicsIHskZGF0YTogdGhpcy5maWVsZERlZnN9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc0RhdGFDaGFuZ2VkICYmIHRoaXMuZ2V0Q29uZmlndXJlZFN0YXRlKCkgIT09ICdub25lJyAmJiBsaXN0SXRlbXMubGVuZ3RoICYmIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCkge1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICBpZiAoXy5nZXQod2lkZ2V0U3RhdGUsICdzZWxlY3RlZEl0ZW0nKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXNFeGlzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbXNMZW5ndGggPSBfLmlzQXJyYXkodGhpcy5zZWxlY3RlZGl0ZW0pID8gdGhpcy5zZWxlY3RlZGl0ZW0ubGVuZ3RoIDogXy50b051bWJlcighXy5pc0VtcHR5KHRoaXMuc2VsZWN0ZWRpdGVtKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2UgPSBfLmdldCh0aGlzLmRhdGFOYXZpZ2F0b3IsICdkbi5jdXJyZW50UGFnZScpIHx8IDE7XG4gICAgICAgICAgICAgICAgd2lkZ2V0U3RhdGUucGFnaW5hdGlvbiA9IHdpZGdldFN0YXRlLnBhZ2luYXRpb24gfHwgMTtcbiAgICAgICAgICAgICAgICAvLyB0byBwcmV2ZW50IGl0ZW0gc2VsZWN0aW9uIGZyb20gYmVpbmcgdHJpZ2dlcmVkIG1vcmUgdGhhbiBvbmNlXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXNMZW5ndGggIT09IHdpZGdldFN0YXRlLnNlbGVjdGVkSXRlbS5sZW5ndGggJiYgd2lkZ2V0U3RhdGUucGFnaW5hdGlvbiA9PT0gY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkZ2V0U3RhdGUuc2VsZWN0ZWRJdGVtLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnBhZ2UgPT09IGN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW0uaW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtcyA9IF8uaXNBcnJheSh0aGlzLnNlbGVjdGVkaXRlbSkgPyB0aGlzLnNlbGVjdGVkaXRlbSA6IFt0aGlzLnNlbGVjdGVkaXRlbV07XG5cbiAgICAgICAgdGhpcy5maXJzdFNlbGVjdGVkSXRlbSA9IHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9IG51bGw7XG5cbiAgICAgICAgLy8gZG9uJ3Qgc2VsZWN0IGZpcnN0IGl0ZW0gaWYgbXVsdGktc2VsZWN0IGlzIGVuYWJsZWQgYW5kIGF0IGxlYXN0IGl0ZW0gaXMgYWxyZWFkeSBzZWxlY3RlZCBpbiB0aGUgbGlzdC5cbiAgICAgICAgLy8gZG9uJ3Qgc2VsZWN0IGZpcnN0IGl0ZW0gaWYgc3RhdGUgaW5mb3JtYXRpb24gaGFzIHNlbGVjdGVkIGl0ZW1zXG4gICAgICAgIGlmIChsaXN0SXRlbXMubGVuZ3RoICYmIHRoaXMuc2VsZWN0Zmlyc3RpdGVtICYmICEoIHRoaXMuX2l0ZW1zLmxlbmd0aCAmJiB0aGlzLm11bHRpc2VsZWN0KSAmJiB0aGlzLl9zZWxlY3RlZEl0ZW1zRXhpc3QgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBjb25zdCAkZmlyc3RJdGVtOiBMaXN0SXRlbURpcmVjdGl2ZSA9IGxpc3RJdGVtcy5maXJzdDtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICEkZmlyc3RJdGVtLmRpc2FibGVJdGVtICYmXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RhdGFDaGFuZ2VkICYmXG4gICAgICAgICAgICAgICAgLy8gXCJpbmZpbml0ZSBzY3JvbGxcIiBvciBcImxvYWQgb24gZGVtYW5kXCIgaXMgZW5hYmxlZCBhbmQgYXQgbGVhc3Qgb25lIGl0ZW0gaXMgc2VsZWN0ZWQgdGhlbiBkb250IGFsdGVyIHRoZSBzZWxlY3RlZCBsaXN0IGl0ZW1zLlxuICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmluZlNjcm9sbCB8fCB0aGlzLm9uRGVtYW5kTG9hZCkgJiZcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faXRlbXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpcnN0U2VsZWN0ZWRJdGVtID0gdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gJGZpcnN0SXRlbTtcbiAgICAgICAgICAgICAgICAvLyBzZWxlY3RpbmcgdGhlIGZpcnN0IHJlY29yZFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbSgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RMaXN0SXRlbXMoKTtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMuZm9yRWFjaChzZWxlY3RlZGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3RJdGVtOiBMaXN0SXRlbURpcmVjdGl2ZSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeU1vZGVsKHNlbGVjdGVkaXRlbSk7XG4gICAgICAgICAgICAgICAgaWYgKGxpc3RJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RJdGVtLmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gbGlzdEl0ZW07XG4gICAgICAgICAgICAgICAgICAgIC8vIGZvY3VzIHRoZSBhY3RpdmUgZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICBsaXN0SXRlbS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5maWVsZERlZnMubGVuZ3RoICYmIHRoaXMuaW5mU2Nyb2xsKSB7XG4gICAgICAgICAgICBjb25zdCBzbW9vdGhTY3JvbGxFbCA9IHRoaXMuJGVsZW1lbnQuY2xvc2VzdCgnW3dtc21vb3Roc2Nyb2xsXScpO1xuICAgICAgICAgICAgLy8gaWYgc21vb3Roc2Nyb2xsIGlzIHNldCB0byBmYWxzZSwgdGhlbiBuYXRpdmUgc2Nyb2xsIGhhcyB0byBiZSBhcHBsaWVkXG4gICAgICAgICAgICAvLyBvdGhlcndpc2Ugc21vb3Roc2Nyb2xsIGV2ZW50cyB3aWxsIGJlIGJpbmRlZC5cbiAgICAgICAgICAgIGlmIChpc01vYmlsZUFwcCgpICYmIHNtb290aFNjcm9sbEVsLmxlbmd0aCAmJiBzbW9vdGhTY3JvbGxFbC5hdHRyKCd3bXNtb290aHNjcm9sbCcpID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmJpbmRJU2Nyb2xsRXZ0KHRoaXMsIERFQk9VTkNFX1RJTUVTLlBBR0lOQVRJT05fREVCT1VOQ0VfVElNRSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgbW9iaWxlIGFwcCB3aGVuIG1vZGFsIGV4aXN0cywgYW5kIGxpc3QgaXRlbXMgaGVpZ2h0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbW9kYWwgY29udGVudCBwcm92aWRlIGNjb250YWluZXIgYSBzY3JvbGxhYmxlIGhlaWdodFxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGFsQm9keSA9IHRoaXMuJGVsZW1lbnQuY2xvc2VzdCgnLm1vZGFsLWJvZHknKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0SHQgPSB0aGlzLiRlbGVtZW50LmZpbmQoJ3VsJykuaGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kYWxIdCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIDE0MDtcbiAgICAgICAgICAgICAgICBpZiAoaXNNb2JpbGUoKSAmJiBtb2RhbEJvZHkubGVuZ3RoICYmIGxpc3RIdCA+IG1vZGFsSHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kZWxlbWVudC5jc3MoJ2hlaWdodCcsIG1vZGFsSHQgKyAncHgnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uU2VydmljZS5iaW5kU2Nyb2xsRXZ0KHRoaXMsICc+IHVsJywgREVCT1VOQ0VfVElNRVMuUEFHSU5BVElPTl9ERUJPVU5DRV9USU1FKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaXNEYXRhQ2hhbmdlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmlnZ2VyTGlzdEl0ZW1TZWxlY3Rpb24oJGVsOiBKUXVlcnk8SFRNTEVsZW1lbnQ+LCAkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICgkZWwgJiYgJGVsWzBdKSB7XG4gICAgICAgICAgICBjb25zdCBsaXN0SXRlbUNvbnRleHQgPSAkZWwuZGF0YSgnbGlzdEl0ZW1Db250ZXh0Jyk7XG4gICAgICAgICAgICAvLyBUcmlnZ2VyIGNsaWNrIGV2ZW50IG9ubHkgaWYgdGhlIGxpc3QgaXRlbSBpcyBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGxpc3QuXG4gICAgICAgICAgICBpZiAobGlzdEl0ZW1Db250ZXh0Lmxpc3RDb21wb25lbnQgPT09IHRoaXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKCRldmVudCwgbGlzdEl0ZW1Db250ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0dXBIYW5kbGVycygpIHtcbiAgICAgICAgdGhpcy5saXN0SXRlbXMuY2hhbmdlcy5zdWJzY3JpYmUoIGxpc3RJdGVtcyA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uTGlzdFJlbmRlcihsaXN0SXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBoYW5kbGUgY2xpY2sgZXZlbnQgaW4gY2FwdHVyaW5nIHBoYXNlLlxuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigndWwuYXBwLWxpdmVsaXN0LWNvbnRhaW5lcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgbGV0IHRhcmdldCA9ICQoJGV2ZW50LnRhcmdldCkuY2xvc2VzdCgnLmFwcC1saXN0LWl0ZW0nKTtcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZpbmQgdGhlIGN1cnJlbnQgbGlzdCBpdGVtXG4gICAgICAgICAgICB3aGlsZSAodGFyZ2V0LmdldCgwKSAmJiAodGFyZ2V0LmNsb3Nlc3QoJ3VsLmFwcC1saXZlbGlzdC1jb250YWluZXInKS5nZXQoMCkgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnQoKS5jbG9zZXN0KCcuYXBwLWxpc3QtaXRlbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyTGlzdEl0ZW1TZWxlY3Rpb24odGFyZ2V0LCAkZXZlbnQpO1xuICAgICAgICB9LCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBUcmlnZ2VycyBvbiBkcmFnIHN0YXJ0IHdoaWxlIHJlb3JkZXJpbmcuXG4gICAgcHJpdmF0ZSBvblJlb3JkZXJTdGFydChldnQsIHVpKSB7XG4gICAgICAgIHVpLnBsYWNlaG9sZGVyLmhlaWdodCh1aS5pdGVtLmhlaWdodCgpKTtcbiAgICAgICAgdGhpcy4kdWxFbGUuZGF0YSgnb2xkSW5kZXgnLCB1aS5pdGVtLmluZGV4KCkpO1xuICAgIH1cblxuICAgIC8vIFRyaWdnZXJzIGR1cmluZyBzb3J0aW5nXG4gICAgcHJpdmF0ZSBvblNvcnQoZXZ0LCB1aSkge1xuICAgICAgICAvLyBJbiBjYXNlIG9mIGluZmluaXRlIHNjcm9sbCwgd2hlbiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgc2Nyb2xsIGVuYWJsZWRcbiAgICAgICAgLy8gb24gZHJhZ2dpbmcgdGhlIGVsZW1lbnQgdG8gbGFzdCBpdGVtJ3MgcG9zaXRpb24gbWFudWFsbHkgdHJpZ2dlciBsb2FkaW5nIG9mIG5leHQgaXRlbXNcbiAgICAgICAgaWYgKHRoaXMuaW5mU2Nyb2xsKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0SXRlbU9mZnNldCA9IHRoaXMuJHVsRWxlLmZpbmQoYFtsaXN0aXRlbWluZGV4PSR7dGhpcy5maWVsZERlZnMubGVuZ3RoIC0gMX1dYCkub2Zmc2V0KCk7XG4gICAgICAgICAgICBpZiAobGFzdEl0ZW1PZmZzZXQgJiYgbGFzdEl0ZW1PZmZzZXQudG9wIDwgdWkub2Zmc2V0LnRvcCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuYmluZFNjcm9sbEV2dCh0aGlzLCAnPiB1bCcsIERFQk9VTkNFX1RJTUVTLlBBR0lOQVRJT05fREVCT1VOQ0VfVElNRSk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWJvdW5jZWRGZXRjaE5leHREYXRhc2V0T25TY3JvbGwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gVHJpZ2dlcnMgYWZ0ZXIgdGhlIHNvcnRpbmcuXG4gICAgcHJpdmF0ZSBvblVwZGF0ZShldnQsIHVpLCBwcmVzZW50SW5kZXg/KSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZpZWxkRGVmcztcbiAgICAgICAgLy8gSWYgdWkgaXMgbm90IHByZXNlbnQgdGhlbiBpdCBpcyBjYWxsZWQgZnJvbSBkcmFnIGFuZCBkcm9wIHVzaW5nIGtleWJvYXJkXG4gICAgICAgIGNvbnN0IG5ld0luZGV4ID0gdWkgPT09IHVuZGVmaW5lZCA/IHByZXNlbnRJbmRleCA6IHVpLml0ZW0uaW5kZXgoKTtcbiAgICAgICAgY29uc3Qgb2xkSW5kZXggPSB0aGlzLiR1bEVsZS5kYXRhKCdvbGRJbmRleCcpO1xuXG4gICAgICAgIGNvbnN0IG1pbkluZGV4ID0gXy5taW4oW25ld0luZGV4LCBvbGRJbmRleF0pO1xuICAgICAgICBjb25zdCBtYXhJbmRleCA9IF8ubWF4KFtuZXdJbmRleCwgb2xkSW5kZXhdKTtcblxuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbSA9IF8ucHVsbEF0KGRhdGEsIG9sZEluZGV4KVswXTtcbiAgICAgICAgLy8gTW9kaWZ5IHRoZSBkYXRhIGxpc3Qgb25seSBpZiB3ZSBmaW5kIGEgZHJhZ2dlZEl0ZW1cbiAgICAgICAgaWYgKGRyYWdnZWRJdGVtKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRDb25maWd1cmVkU3RhdGUoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLnJlbW92ZVdpZGdldFN0YXRlKHRoaXMsICdzZWxlY3RlZEl0ZW0nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZW9yZGVyUHJvcHMubWluSW5kZXggPSBfLm1pbihbbWluSW5kZXgsIHRoaXMucmVvcmRlclByb3BzLm1pbkluZGV4XSk7XG4gICAgICAgICAgICB0aGlzLnJlb3JkZXJQcm9wcy5tYXhJbmRleCA9IF8ubWF4KFttYXhJbmRleCwgdGhpcy5yZW9yZGVyUHJvcHMubWF4SW5kZXhdKTtcblxuICAgICAgICAgICAgZGF0YS5zcGxpY2UobmV3SW5kZXgsIDAsIGRyYWdnZWRJdGVtKTtcblxuICAgICAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgY29uc3QgJGNoYW5nZWRJdGVtID0ge1xuICAgICAgICAgICAgICAgIG9sZEluZGV4OiBvbGRJbmRleCxcbiAgICAgICAgICAgICAgICBuZXdJbmRleDogbmV3SW5kZXgsXG4gICAgICAgICAgICAgICAgaXRlbTogZGF0YVtuZXdJbmRleF1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3Jlb3JkZXInLCB7JGV2ZW50OiBldnQsICRkYXRhOiBkYXRhLCAkY2hhbmdlZEl0ZW19KTtcbiAgICAgICAgICAgIHRoaXMuJHVsRWxlLnJlbW92ZURhdGEoJ29sZEluZGV4Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb25maWd1cmVzIHJlb3JkZXJpbmcgdGhlIGxpc3QgaXRlbXMuXG4gICAgcHJpdmF0ZSBjb25maWd1cmVEbkQoKSB7XG4gICAgICAgIGxldCBhcHBlbmRUbztcbiAgICAgICAgY29uc3QgbW9kYWxFbCA9ICQoZG9jdW1lbnQpLmZpbmQoJy5tb2RhbCcpO1xuICAgICAgICBpZiAodGhpcy5nZXRBdHRyKCdoZWlnaHQnKSkgeyAvLyB3aGVuIGhlaWdodCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0LCBhcHBlbmQgc2hvdWxkIGJlIHRoZSB1bCdzIHBhcmVudCBhcyBzY3JvbGwgaXMgYXBwbGllZCB0byB0aGUgcGFyZW50XG4gICAgICAgICAgYXBwZW5kVG8gPSAncGFyZW50JztcbiAgICAgICAgfSBlbHNlIGlmIChtb2RhbEVsLmxlbmd0aCkgeyAvLyBJbiBjYXNlIG9mIGRpYWxvZywgYXBwZW5kVG8gc2hvdWxkIGJlIHRoZSBtb2RhbCBlbGVcbiAgICAgICAgICAgIGFwcGVuZFRvID0gbW9kYWxFbFttb2RhbEVsLmxlbmd0aCAtIDFdO1xuICAgICAgICB9IGVsc2UgeyAvLyBBcyBkZWZhdWx0IGFwcGVuZCB0byBzaG91bGQgYmUgYm9keVxuICAgICAgICAgICAgYXBwZW5kVG8gPSAnYm9keSc7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gaXNNb2JpbGVBcHAoKSA/IHt9IDoge1xuICAgICAgICAgICAgYXBwZW5kVG86IGFwcGVuZFRvLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0ICRlbCA9ICQodGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgdGhpcy4kdWxFbGUgPSAkZWwuZmluZCgnLmFwcC1saXZlbGlzdC1jb250YWluZXInKTtcblxuICAgICAgICBjb25maWd1cmVEbkQodGhpcy4kdWxFbGUsIG9wdGlvbnMsIHRoaXMub25SZW9yZGVyU3RhcnQuYmluZCh0aGlzKSwgdGhpcy5vblVwZGF0ZS5iaW5kKHRoaXMpLCB0aGlzLm9uU29ydC5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLiR1bEVsZS5kcm9wcGFibGUoeydhY2NlcHQnOiAnLmFwcC1saXN0LWl0ZW0nfSk7XG5cbiAgICAgICAgaWYgKGlzTW9iaWxlQXBwKCkpIHtcbiAgICAgICAgICAgIHRoaXMuJHVsRWxlLnNvcnRhYmxlKCdkaXNhYmxlJyk7XG4gICAgICAgICAgICB0aGlzLiR1bEVsZS5vbigndG91Y2hzdGFydCcsIGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICghc2VsZi50b3VjaGluZykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZi50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoc2VsZi50b3VjaGVkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vUHJldmVudCBjb250ZXh0IG1lbnUgb24gbW9iaWxlIChJT1MvQU5EUk9JRClcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnRvdWNoZWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoJ25vLXNlbGVjdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9FbmFibGUgZHJhZ2dhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLnNvcnRhYmxlKCdlbmFibGUnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy9TZXQgaW50ZXJuYWwgZmxhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b3VjaGluZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdHJpZ2dlciB0b3VjaHN0YXJ0IGFnYWluIHRvIGVuYWJsZSBkcmFnZ2FibGUgdGhyb3VnaCB0b3VjaCBwdW5jaFxuICAgICAgICAgICAgICAgICAgICAgICAgJChzZWxmKS50cmlnZ2VyKGV2ZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy9DaG9vc2UgcHJlZmVycmVkIGR1cmF0aW9uIGZvciB0YXBob2xkXG4gICAgICAgICAgICAgICAgICAgIH0sIDM1MCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkub24oJ3RvdWNoZW5kJywgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b3VjaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICQoZXZlbnQuY3VycmVudFRhcmdldCkucmVtb3ZlQ2xhc3MoJ25vLXNlbGVjdGlvbicpO1xuXG4gICAgICAgICAgICAgICAgLy9EaXNhYmxlIGRyYWdnYWJsZSB0byBlbmFibGUgZGVmYXVsdCBiZWhhdmlvdXJcbiAgICAgICAgICAgICAgICAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLnNvcnRhYmxlKCdkaXNhYmxlJyk7XG5cbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b3VjaGVkKTtcbiAgICAgICAgICAgIH0pLm9uKCd0b3VjaG1vdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudG91Y2hlZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyB0cnVlIGlmIHRoZSBzZWxlY3Rpb24gbGltaXQgaXMgcmVhY2hlZC5cbiAgICBwcml2YXRlIGNoZWNrU2VsZWN0aW9uTGltaXQoY291bnQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gKCF0aGlzLnNlbGVjdGlvbmxpbWl0IHx8IGNvdW50IDwgdGhpcy5zZWxlY3Rpb25saW1pdCk7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyBsaXN0aXRlbSByZWZlcmVuY2UgYnkgaW5kZXggdmFsdWUuXG4gICAgcHJpdmF0ZSBnZXRMaXN0SXRlbUJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IExpc3RJdGVtRGlyZWN0aXZlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1zLnRvQXJyYXkoKVtpbmRleF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIGluZGV4IG9mIGFuIChsaXN0SXRlbURpcmVjdGl2ZSkgaW4gdGhlIGxpc3RJdGVtXG4gICAgICogQHBhcmFtIHtMaXN0SXRlbURpcmVjdGl2ZX0gaXRlbVxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRMaXN0SXRlbUluZGV4KGl0ZW06IExpc3RJdGVtRGlyZWN0aXZlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxpc3RJdGVtcy50b0FycmF5KCkuaW5kZXhPZihpdGVtKTtcbiAgICB9XG5cbiAgICAvLyB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZm9ybSBvdGhlciBkYXRhIHdpZGdldHMgbGlrZSB0YWJsZS5cbiAgICBwdWJsaWMgZXhlY3V0ZShvcGVyYXRpb24sIG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKFtEYXRhU291cmNlLk9wZXJhdGlvbi5JU19BUElfQVdBUkUsIERhdGFTb3VyY2UuT3BlcmF0aW9uLklTX1BBR0VBQkxFLCBEYXRhU291cmNlLk9wZXJhdGlvbi5TVVBQT1JUU19TRVJWRVJfRklMVEVSXS5pbmNsdWRlcyhvcGVyYXRpb24pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS5leGVjdXRlKG9wZXJhdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUtleURvd24oJGV2ZW50LCBhY3Rpb246IHN0cmluZykge1xuICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmKCRldmVudC5rZXlDb2RlICE9PSAxMyAmJiAkZXZlbnQua2V5Q29kZSAhPT0gOSAmJiAhKCgkZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygnZm9ybS1jb250cm9sJykgfHwgJGV2ZW50LnRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ25vdGUtZWRpdGFibGUnKSkgJiYgJGV2ZW50LmtleUNvZGUgPT09IDMyKSApIHtcbiAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8TGlzdEl0ZW1EaXJlY3RpdmU+ID0gdGhpcy5saXN0SXRlbXM7XG5cbiAgICAgICAgbGV0IHByZXNlbnRJbmRleDogbnVtYmVyID0gdGhpcy5nZXRMaXN0SXRlbUluZGV4KHRoaXMubGFzdFNlbGVjdGVkSXRlbSk7XG5cbiAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SW5kZXg6IG51bWJlciA9IHRoaXMuZ2V0TGlzdEl0ZW1JbmRleCh0aGlzLmZpcnN0U2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdENvdW50OiBudW1iZXIgPSBfLmlzQXJyYXkodGhpcy5zZWxlY3RlZGl0ZW0pID8gdGhpcy5zZWxlY3RlZGl0ZW0ubGVuZ3RoIDogKF8uaXNPYmplY3QodGhpcy5zZWxlY3RlZGl0ZW0pID8gMSA6IDApO1xuICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ3NlbGVjdFByZXYnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXNlbnRJbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChwcmVzZW50SW5kZXggPD0gZmlyc3RJbmRleCkgJiYgdGhpcy5jaGVja1NlbGVjdGlvbkxpbWl0KHNlbGVjdENvdW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gdGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgoIHByZXNlbnRJbmRleCAtIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVMaXN0SXRlbVNlbGVjdGlvbih0aGlzLmxhc3RTZWxlY3RlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByZXNlbnRJbmRleCA+IGZpcnN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTGlzdEl0ZW1TZWxlY3Rpb24odGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLmdldExpc3RJdGVtQnlJbmRleChwcmVzZW50SW5kZXggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0aW9ubGltaXRleGNlZWQnLCB7JGV2ZW50fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3NlbGVjdE5leHQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXNlbnRJbmRleCA8IGxpc3RJdGVtcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgocHJlc2VudEluZGV4ID49IGZpcnN0SW5kZXgpICYmIHRoaXMuY2hlY2tTZWxlY3Rpb25MaW1pdChzZWxlY3RDb3VudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVMaXN0SXRlbVNlbGVjdGlvbih0aGlzLmxhc3RTZWxlY3RlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByZXNlbnRJbmRleCA8IGZpcnN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlTGlzdEl0ZW1TZWxlY3Rpb24odGhpcy5nZXRMaXN0SXRlbUJ5SW5kZXgocHJlc2VudEluZGV4KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLmdldExpc3RJdGVtQnlJbmRleChwcmVzZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0aW9ubGltaXRleGNlZWQnLCB7JGV2ZW50fSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ2ZvY3VzUHJldicpIHtcbiAgICAgICAgICAgIGlmKHRoaXMuaXNMaXN0RWxlbWVudE1vdmFibGUpIHtcbiAgICAgICAgICAgICAgICBwcmVzZW50SW5kZXggPSBwcmVzZW50SW5kZXggPD0gMCA/IDAgOiAocHJlc2VudEluZGV4KTtcbiAgICAgICAgICAgICAgICBpZihwcmVzZW50SW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldkVsdCA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCAtIDEpO1xuICAgICAgICAgICAgICAgIHByZXZFbHQubmF0aXZlRWxlbWVudC5iZWZvcmUodGhpcy5sYXN0U2VsZWN0ZWRJdGVtLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVBlcnNpc3RlbmNlLnJlbW92ZVdpZGdldFN0YXRlKHRoaXMsICdzZWxlY3RlZEl0ZW0nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSB0aGlzLmxpc3RJdGVtcy50b0FycmF5KCk7XG4gICAgICAgICAgICAgICAgW2FycltwcmVzZW50SW5kZXggLSAxXSwgYXJyW3ByZXNlbnRJbmRleF1dID0gW2FycltwcmVzZW50SW5kZXhdLCBhcnJbcHJlc2VudEluZGV4IC0gMV1dO1xuICAgICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1zLnJlc2V0KGFycik7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBwcmVzZW50SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5hcmlhVGV4dCA9IFwic2VsZWN0ZWQgXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByZXNlbnRJbmRleCA9IHByZXNlbnRJbmRleCA8PSAwID8gMCA6IChwcmVzZW50SW5kZXggLSAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLmdldExpc3RJdGVtQnlJbmRleChwcmVzZW50SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50SW5kZXggPSBwcmVzZW50SW5kZXggKyAxO1xuICAgICAgICAgICAgICAgIHRoaXMuYXJpYVRleHQgPSBcInNlbGVjdGVkIFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ2ZvY3VzTmV4dCcpIHtcbiAgICAgICAgICAgIGlmKHRoaXMuaXNMaXN0RWxlbWVudE1vdmFibGUpIHtcbiAgICAgICAgICAgICAgICBwcmVzZW50SW5kZXggPSBwcmVzZW50SW5kZXggPCAobGlzdEl0ZW1zLmxlbmd0aCAtIDEpID8gKHByZXNlbnRJbmRleCkgOiAobGlzdEl0ZW1zLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIGlmKHByZXNlbnRJbmRleCA9PT0gdGhpcy5saXN0SXRlbXMubGVuZ3RoIC0gMSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dEVsdCA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgIG5leHRFbHQubmF0aXZlRWxlbWVudC5hZnRlcih0aGlzLmxhc3RTZWxlY3RlZEl0ZW0ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UucmVtb3ZlV2lkZ2V0U3RhdGUodGhpcywgJ3NlbGVjdGVkSXRlbScpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyciA9IHRoaXMubGlzdEl0ZW1zLnRvQXJyYXkoKTtcbiAgICAgICAgICAgICAgICBbYXJyW3ByZXNlbnRJbmRleF0sIGFycltwcmVzZW50SW5kZXggKyAxXV0gPSBbYXJyW3ByZXNlbnRJbmRleCArIDFdLCBhcnJbcHJlc2VudEluZGV4XV07XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0SXRlbXMucmVzZXQoYXJyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHByZXNlbnRJbmRleCArIDI7XG4gICAgICAgICAgICAgICAgdGhpcy5hcmlhVGV4dCA9IFwic2VsZWN0ZWQgXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHByZXNlbnRJbmRleCA9IHByZXNlbnRJbmRleCA8IChsaXN0SXRlbXMubGVuZ3RoIC0gMSkgPyAocHJlc2VudEluZGV4ICsgMSkgOiAobGlzdEl0ZW1zLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFNlbGVjdGVkSXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCA9IHByZXNlbnRJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5hcmlhVGV4dCA9IFwic2VsZWN0ZWQgXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAnc2VsZWN0Jykge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGVudGVyIGNsaWNrIGlzIHByZXNzZWQgb24gdGhlIGl0ZW0gd2hpY2ggaXMgbm90IHRoZSBsYXN0IHNlbGVjdGVkIGl0ZW0sIHRoZSBmaW5kIHRoZSBpdGVtIGZyb20gd2hpY2ggdGhlIGV2ZW50IGlzIG9yaWdpbmF0ZWQuXG4gICAgICAgICAgICBpZiAocHJlc2VudEluZGV4ID09PSAtMSB8fCAhJCgkZXZlbnQudGFyZ2V0KS5jbG9zZXN0KHRoaXMubGFzdFNlbGVjdGVkSXRlbS5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0ICRsaSA9ICQoJGV2ZW50LnRhcmdldCkuY2xvc2VzdCgnbGkuYXBwLWxpc3QtaXRlbScpO1xuICAgICAgICAgICAgICAgIGNvbnN0ICR1bCA9ICRsaS5jbG9zZXN0KCd1bC5hcHAtbGl2ZWxpc3QtY29udGFpbmVyJyk7XG4gICAgICAgICAgICAgICAgcHJlc2VudEluZGV4ID0gJHVsLmZpbmQoJ2xpLmFwcC1saXN0LWl0ZW0nKS5pbmRleCgkbGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbkl0ZW1DbGljaygkZXZlbnQsIHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHByZXNlbnRJbmRleCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PT0gJ3NwYWNlJykge1xuICAgICAgICAgICAgaWYoIXRoaXMuZW5hYmxlcmVvcmRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXNMaXN0RWxlbWVudE1vdmFibGUgPSAhdGhpcy5pc0xpc3RFbGVtZW50TW92YWJsZTtcbiAgICAgICAgICAgIHRoaXMub25JdGVtQ2xpY2soJGV2ZW50LCB0aGlzLmdldExpc3RJdGVtQnlJbmRleChwcmVzZW50SW5kZXgpKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gcHJlc2VudEluZGV4ICsgMTtcbiAgICAgICAgICAgIGlmKHRoaXMuaXNMaXN0RWxlbWVudE1vdmFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFyaWFUZXh0ID0gYEl0ZW0gJHt0aGlzLmN1cnJlbnRJbmRleH0gZ3JhYmJlZCwgY3VycmVudCBwb3NpdGlvbiBgO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVsRWxlLmRhdGEoJ29sZEluZGV4JywgcHJlc2VudEluZGV4KTtcbiAgICAgICAgICAgIH0gICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFyaWFUZXh0ID0gYEl0ZW0gJHt0aGlzLmN1cnJlbnRJbmRleH0gZHJvcHBlZCwgZmluYWwgcG9zaXRpb24gYDtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVXBkYXRlKCRldmVudCwgdW5kZWZpbmVkLCBwcmVzZW50SW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ2RhdGFzZXQnKSB7XG4gICAgICAgICAgICBpZiAoIW52ICYmIHRoaXMuYmluZGRhdGFzb3VyY2UgJiYgIXRoaXMuZGF0YXNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25EYXRhU2V0Q2hhbmdlKG52KTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhc291cmNlJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YXNldCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25EYXRhU2V0Q2hhbmdlKHRoaXMuZGF0YXNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnbmF2aWdhdGlvbicpIHtcbiAgICAgICAgICAgIC8vIFN1cHBvcnQgZm9yIG9sZGVyIHByb2plY3RzIHdoZXJlIG5hdmlnYXRpb24gdHlwZSB3YXMgYWR2YW5jZWQgaW5zdGVhZCBvZiBjbGFzc2ljXG4gICAgICAgICAgICBpZiAobnYgPT09ICdBZHZhbmNlZCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gPSAnQ2xhc3NpYyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCBudiwgb3YpO1xuICAgICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25UeXBlQ2hhbmdlKG52KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFOYXZpZ2F0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3IubmF2aWdhdGlvbkNsYXNzID0gdGhpcy5wYWdpbmF0aW9uY2xhc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnaXRlbXNwZXJyb3cnKSB7XG4gICAgICAgICAgICBzZXRMaXN0Q2xhc3ModGhpcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncHVsbHRvcmVmcmVzaCcgJiYgbnYpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLm5vdGlmeSgncHVsbFRvUmVmcmVzaDplbmFibGUnKTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaWJlVG9QdWxsVG9SZWZyZXNoKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncGFnaW5hdGlvbmNsYXNzJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YU5hdmlnYXRvcikge1xuICAgICAgICAgICAgICAgIC8vIEFkZGluZyBzZXRUaW1lb3V0IGJlY2F1c2UgaW4gcGFnaW5hdGlvbiBjb21wb25lbnQgdXBkYXRlTmF2U2l6ZSBtZXRob2QgaXMgb3ZlcnJpZGluZyBuYXZpZ2F0aW9uY2xhc3NcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCAoKSA9PiB0aGlzLmRhdGFOYXZpZ2F0b3IubmF2aWdhdGlvbkNsYXNzID0gbnYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3BhZ2VzaXplJykge1xuICAgICAgICAgICAgdGhpcy5kYXRhTmF2aWdhdG9yLm9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgbWF4UmVzdWx0czogbnZcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmRhdGFOYXZpZ2F0b3Iud2lkZ2V0Lm1heFJlc3VsdHMgPSBudjtcbiAgICAgICAgICAgIHRoaXMuZGF0YU5hdmlnYXRvci5tYXhSZXN1bHRzID0gbnY7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZW5hYmxlcmVvcmRlcicpIHtcbiAgICAgICAgICAgIGlmIChudiAmJiB0aGlzLiR1bEVsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJHVsRWxlLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLnRpdGxlSWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJlRG5EKCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kdWxFbGUuc29ydGFibGUoJ2VuYWJsZScpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLiR1bEVsZSAmJiAhbnYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiR1bEVsZS5yZW1vdmVBdHRyKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7XG4gICAgICAgICAgICAgICAgdGhpcy4kdWxFbGUuc29ydGFibGUoJ2Rpc2FibGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uSXRlbUNsaWNrKGV2dDogYW55LCAkbGlzdEl0ZW06IExpc3RJdGVtRGlyZWN0aXZlKSB7XG4gICAgICAgIGxldCBzZWxlY3RDb3VudDogbnVtYmVyO1xuXG4gICAgICAgIGlmICghJGxpc3RJdGVtLmRpc2FibGVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmZpcnN0U2VsZWN0ZWRJdGVtID0gdGhpcy5maXJzdFNlbGVjdGVkSXRlbSB8fCAkbGlzdEl0ZW07XG4gICAgICAgICAgICAvLyBTZXR0aW5nIHNlbGVjdENvdW50IHZhbHVlIGJhc2VkIG51bWJlciBvZiBpdGVtcyBzZWxlY3RlZC5cbiAgICAgICAgICAgIHNlbGVjdENvdW50ID0gXy5pc0FycmF5KHRoaXMuc2VsZWN0ZWRpdGVtKSA/IHRoaXMuc2VsZWN0ZWRpdGVtLmxlbmd0aCA6IChfLmlzT2JqZWN0KHRoaXMuc2VsZWN0ZWRpdGVtKSA/IDEgOiAwKTtcblxuICAgICAgICAgICAgLy8gSGFuZGxpbmcgbXVsdGlzZWxlY3QgZm9yIG1vYmlsZSBkZXZpY2VcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0ICYmIGlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja1NlbGVjdGlvbkxpbWl0KHNlbGVjdENvdW50KSB8fCAkbGlzdEl0ZW0uaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVMaXN0SXRlbVNlbGVjdGlvbigkbGlzdEl0ZW0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnc2VsZWN0aW9ubGltaXRleGNlZWQnLCB7JGV2ZW50OiBldnR9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChldnQuY3RybEtleSB8fCBldnQubWV0YUtleSkgJiYgdGhpcy5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoZWNrU2VsZWN0aW9uTGltaXQoc2VsZWN0Q291bnQpIHx8ICRsaXN0SXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcnN0U2VsZWN0ZWRJdGVtID0gdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gJGxpc3RJdGVtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUxpc3RJdGVtU2VsZWN0aW9uKCRsaXN0SXRlbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdzZWxlY3Rpb25saW1pdGV4Y2VlZCcsIHskZXZlbnQ6IGV2dH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZ0LnNoaWZ0S2V5ICYmIHRoaXMubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmlyc3QgPSAkbGlzdEl0ZW0uY29udGV4dC5pbmRleDtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdCA9IHRoaXMuZmlyc3RTZWxlY3RlZEl0ZW0uY29udGV4dC5pbmRleDtcblxuICAgICAgICAgICAgICAgIC8vIGlmIGZpcnN0IGlzIGdyZWF0ZXIgdGhhbiBsYXN0LCB0aGVuIHN3YXAgdmFsdWVzXG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0ID4gbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICBsYXN0ID0gW2ZpcnN0LCBmaXJzdCA9IGxhc3RdWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGVja1NlbGVjdGlvbkxpbWl0KGxhc3QgLSBmaXJzdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGVkSXRlbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0SXRlbXMuZm9yRWFjaCgoJGxpSXRlbTogTGlzdEl0ZW1EaXJlY3RpdmUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gJGxpSXRlbS5jb250ZXh0LmluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGZpcnN0ICYmIGluZGV4IDw9IGxhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUxpc3RJdGVtU2VsZWN0aW9uKCRsaUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRJdGVtID0gJGxpc3RJdGVtO1xuICAgICAgICAgICAgICAgIH0gIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ3NlbGVjdGlvbmxpbWl0ZXhjZWVkJywgeyRldmVudDogZXZ0fSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghJGxpc3RJdGVtLmlzQWN0aXZlIHx8IHNlbGVjdENvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0ZWRJdGVtcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUxpc3RJdGVtU2VsZWN0aW9uKCRsaXN0SXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3RTZWxlY3RlZEl0ZW0gPSB0aGlzLmxhc3RTZWxlY3RlZEl0ZW0gPSAkbGlzdEl0ZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJGFwcERpZ2VzdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW1wdHkgdGhlIGxpc3QgY29udGVudCBvbiBjbGVhclxuICAgIHB1YmxpYyBjbGVhciAoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlRmllbGREZWZzKFtdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyBMaXN0SXRlbSBSZWZlcmVuY2UgYmFzZWQgb24gdGhlIGlucHV0IHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB2YWw6IGluZGV4IHwgbW9kZWwgb2YgdGhlIGxpc3QgaXRlbS5cbiAgICAgKiBAcmV0dXJucyB7TGlzdEl0ZW1EaXJlY3RpdmV9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRJdGVtUmVmQnlJbmRleE9yTW9kZWwodmFsOiBhbnkpOiBMaXN0SXRlbURpcmVjdGl2ZSB7XG4gICAgICAgIGxldCBsaXN0SXRlbTogTGlzdEl0ZW1EaXJlY3RpdmU7XG4gICAgICAgIGlmIChpc051bWJlcih2YWwpKSB7XG4gICAgICAgICAgICBsaXN0SXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeUluZGV4KHZhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0SXRlbSA9IHRoaXMuZ2V0TGlzdEl0ZW1CeU1vZGVsKHZhbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3RJdGVtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlc2VsZWN0cyBpdGVtIGluIHRoZSBsaXN0LlxuICAgICAqIEBwYXJhbSB2YWw6IGluZGV4IHwgbW9kZWwgb2YgdGhlIGxpc3QgaXRlbS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3RJdGVtICh2YWw6IGFueSkge1xuICAgICAgICBjb25zdCBsaXN0SXRlbSA9IHRoaXMuZ2V0SXRlbVJlZkJ5SW5kZXhPck1vZGVsKHZhbCk7XG4gICAgICAgIGlmIChsaXN0SXRlbSAmJiBsaXN0SXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVMaXN0SXRlbVNlbGVjdGlvbihsaXN0SXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZWxlY3RzIGl0ZW0gaW4gdGhlIGxpc3QuXG4gICAgICogQHBhcmFtIHZhbDogaW5kZXggfCBtb2RlbCBvZiB0aGUgbGlzdCBpdGVtLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RJdGVtKHZhbCwgc3RhdGVQZXJzaXN0ZW5jZVRyaWdnZXJlZD8pIHtcbiAgICAgICAgY29uc3QgbGlzdEl0ZW0gPSB0aGlzLmdldEl0ZW1SZWZCeUluZGV4T3JNb2RlbCh2YWwpO1xuICAgICAgICBpZiAoIWxpc3RJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFsaXN0SXRlbS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVMaXN0SXRlbVNlbGVjdGlvbihsaXN0SXRlbSwgc3RhdGVQZXJzaXN0ZW5jZVRyaWdnZXJlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9jdXMgdGhlIGVsZW1lbnQuXG4gICAgICAgIGxpc3RJdGVtLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJlZm9yZVBhZ2luYXRpb25DaGFuZ2UoJGV2ZW50LCAkaW5kZXgpIHtcbiAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKCdwYWdpbmF0aW9uY2hhbmdlJywgeyRldmVudCwgJGluZGV4fSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUV2ZW50KG5vZGU6IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRDYWxsYmFjazogRnVuY3Rpb24sIGxvY2FsczogYW55KSB7XG4gICAgICAgIC8vIHRhcCBhbmQgZG91YmxlVGFwIGV2ZW50cyBhcmUgbm90IGdldHRpbmcgcHJvcGFnYXRlZC5TbywgdXNpbmcgbW91c2UgZXZlbnRzIGluc3RlYWQuXG4gICAgICAgIGNvbnN0IHRvdWNoVG9Nb3VzZSA9IHtcbiAgICAgICAgICAgIHRhcDogJ2NsaWNrJyxcbiAgICAgICAgICAgIGRvdWJsZXRhcDogJ2RibGNsaWNrJ1xuICAgICAgICB9O1xuICAgICAgICBpZiAoXy5pbmNsdWRlcyhbJ2NsaWNrJywgJ3RhcCcsICdkYmxjbGljaycsICdkb3VibGV0YXAnXSwgZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgdG91Y2hUb01vdXNlW2V2ZW50TmFtZV0gfHwgZXZlbnROYW1lLFxuICAgICAgICAgICAgICAgIChldnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gJChldnQudGFyZ2V0KS5jbG9zZXN0KCcuYXBwLWxpc3QtaXRlbScpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlzdEl0ZW1Db250ZXh0OiBMaXN0SXRlbURpcmVjdGl2ZSA9IHRhcmdldC5kYXRhKCdsaXN0SXRlbUNvbnRleHQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGlzdEl0ZW1Db250ZXh0LmRpc2FibGVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnZva2VFdmVudENhbGxiYWNrKGV2ZW50TmFtZSwge3dpZGdldDogbGlzdEl0ZW1Db250ZXh0LCAkZXZlbnQ6IGV2dCwgaXRlbTogbGlzdEl0ZW1Db250ZXh0Lml0ZW19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbnZva2UgdGhlIGRhdGFzb3VyY2UgdmFyaWFibGUgYnkgZGVmYXVsdCB3aGVuIHB1bGx0b3JlZnJlc2ggZXZlbnQgaXMgbm90IHNwZWNpZmllZC5cbiAgICBwcml2YXRlIHN1YnNjcmliZVRvUHVsbFRvUmVmcmVzaCgpIHtcbiAgICAgICAgdGhpcy5fbGlzdGVuZXJEZXN0cm95ZXJzLnB1c2godGhpcy5hcHAuc3Vic2NyaWJlKCdwdWxsdG9yZWZyZXNoJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YXNvdXJjZSAmJiB0aGlzLmRhdGFzb3VyY2UubGlzdFJlY29yZHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFzb3VyY2UubGlzdFJlY29yZHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmhhbmRsZUhlYWRlckNsaWNrID0gbm9vcDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlYm91bmNlZEZldGNoTmV4dERhdGFzZXRPblNjcm9sbCA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZGVib3VuY2VkRmV0Y2hOZXh0RGF0YXNldE9uU2Nyb2xsKHRoaXMuZGF0YU5hdmlnYXRvciwgREVCT1VOQ0VfVElNRVMuUEFHSU5BVElPTl9ERUJPVU5DRV9USU1FLCB0aGlzKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gW107XG4gICAgICAgIHRoaXMuZmllbGREZWZzID0gW107XG4gICAgICAgIHRoaXMucmVvcmRlclByb3BzID0ge1xuICAgICAgICAgICAgbWluSW5kZXg6IG51bGwsXG4gICAgICAgICAgICBtYXhJbmRleDogbnVsbFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VXBDVURIYW5kbGVycygpIHtcbiAgICAgICAgY29uc3QgJGFkZEl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYWRkLWxpc3QtaXRlbVwiKVswXTtcbiAgICAgICAgaWYgKCRhZGRJdGVtKSB7XG4gICAgICAgICAgICAvLyBUcmlnZ2VyZWQgb24gY2xpY2sgb2YgYWRkIGFjdGlvblxuICAgICAgICAgICAgJGFkZEl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldnQgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZXJGbigpO1xuICAgICAgICB0aGlzLnByb3BzSW5pdFByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0VXBDVURIYW5kbGVycygpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1XaWRnZXRzID0gdGhpcy5tdWx0aXNlbGVjdCA/IFtdIDoge307XG4gICAgICAgICAgICB2YXIgZWxlID0gJCh0aGlzLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJy5hcHAtbGl2ZWxpc3QtY29udGFpbmVyJyk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmVuYWJsZXJlb3JkZXIgJiYgIXRoaXMuZ3JvdXBieSkge1xuICAgICAgICAgICAgICAgIGlmKGVsZSkge1xuICAgICAgICAgICAgICAgICAgICBlbGUuYXR0cignYXJpYS1kZXNjcmliZWRieScsIHRoaXMudGl0bGVJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJlRG5EKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuZW5hYmxlcmVvcmRlcikge1xuICAgICAgICAgICAgICAgIGlmIChlbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlLnJlbW92ZUF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5ncm91cGJ5ICYmIHRoaXMuY29sbGFwc2libGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUhlYWRlckNsaWNrID0gaGFuZGxlSGVhZGVyQ2xpY2s7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVBbGxIZWFkZXJzID0gdG9nZ2xlQWxsSGVhZGVycy5iaW5kKHVuZGVmaW5lZCwgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRMaXN0Q2xhc3ModGhpcyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldHVwSGFuZGxlcnMoKTtcbiAgICAgICAgY29uc3QgJHVsID0gdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3VsLmFwcC1saXZlbGlzdC1jb250YWluZXInKTtcbiAgICAgICAgc3R5bGVyKCR1bCBhcyBIVE1MRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuU0NST0xMQUJMRV9DT05UQUlORVIpO1xuICAgICAgICBpZiAodGhpcy5lbmFibGVyZW9yZGVyKSB7XG4gICAgICAgICAgICBpZiAoJHVsKXtcbiAgICAgICAgICAgICAgICAkdWwuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgdGhpcy50aXRsZUlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlcmVvcmRlcikgIHtcbiAgICAgICAgICAgIGlmKCR1bCkge1xuICAgICAgICAgICAgICAgICR1bC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNNb2JpbGVBcHAoKSAmJiAkdWwucXVlcnlTZWxlY3RvcignLmFwcC1saXN0LWl0ZW0tYWN0aW9uLXBhbmVsJykpIHtcbiAgICAgICAgICAgIHRoaXMuX2xpc3RBbmltYXRvciA9IG5ldyBMaXN0QW5pbWF0b3IodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xpc3RBbmltYXRvciAmJiB0aGlzLl9saXN0QW5pbWF0b3IuJGJ0blN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fbGlzdEFuaW1hdG9yLiRidG5TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9saXN0ZW5lckRlc3Ryb3llcnMuZm9yRWFjaChkID0+IGQgJiYgZCgpKTtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG5cbiAgICBuZ09uRGV0YWNoKCkge1xuICAgICAgICBzdXBlci5uZ09uRGV0YWNoKCk7XG4gICAgICAgIHRoaXMuX3BhZ2VMb2FkID0gdHJ1ZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiICpuZ0lmPVwidGl0bGUgfHwgc3ViaGVhZGluZyB8fCBpY29uY2xhc3NcIj5cbiAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1sZWZ0XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHBhbmVsLWljb24ge3tpY29uY2xhc3N9fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIFtoaWRkZW5dPVwiIWljb25jbGFzc1wiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCIgW2lubmVySFRNTF09XCJ0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJzdWJoZWFkaW5nXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvaDM+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImFwcC1kYXRhbmF2aWdhdG9yXCIgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkYXRhTmF2aWdhdG9yLmlzRGlzYWJsZVByZXZpb3VzXCIgYXJpYS1sYWJlbD1cIlBhZ2UgbmF2aWdhdGlvblwiICpuZ0lmPVwibmF2aWdhdGlvbiA9PT0gJ0lubGluZScgJiYgIW5vRGF0YUZvdW5kXCI+XG4gICAgPHVsIGNsYXNzPVwicGFnZXJcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwicHJldmlvdXNcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogKGRhdGFOYXZpZ2F0b3IgPyBkYXRhTmF2aWdhdG9yLmlzRGlzYWJsZVByZXZpb3VzIDogdHJ1ZSl9XCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiIChjbGljayk9XCJkYXRhTmF2aWdhdG9yLm5hdmlnYXRlUGFnZSgncHJldicsICRldmVudClcIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkYXRhTmF2aWdhdG9yLmlzRGlzYWJsZVByZXZpb3VzXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ3aSB3aS1jaGV2cm9uLWxlZnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+R28gdG8gUHJldmlvdXMgcGFnZSB7e2RhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlUHJldmlvdXMgPyAnLCBEaXNhYmxlZCcgOiAnJ319PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2xpPlxuICAgIDwvdWw+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJuYXZpZ2F0aW9uID09PSAnSW5saW5lJyAmJiAhbm9EYXRhRm91bmRcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWF0b21pYz1cInRydWVcIiBjbGFzcz1cInNyLW9ubHlcIj4ge3snUGFnZSAnICsgZGF0YU5hdmlnYXRvci5kbi5jdXJyZW50UGFnZSArICcgb2YgJyArIGRhdGFOYXZpZ2F0b3IucGFnZUNvdW50IH19PC9kaXY+XG5cbjxkaXY+XG4gICAgPGRpdiBpZD17e3RpdGxlSWR9fSBjbGFzcz1cInNyLW9ubHlcIiAqbmdJZj1cImVuYWJsZXJlb3JkZXJcIj5cbiAgICAgICAgUHJlc3Mgc3BhY2UgYmFyIHRvIHRvZ2dsZSBkcmFnIGRyb3AgbW9kZSwgdXNlIGFycm93IGtleXMgdG8gbW92ZSBzZWxlY3RlZCBlbGVtZW50cy5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgKm5nSWY9XCJsaXN0SXRlbXMgJiYgZW5hYmxlcmVvcmRlciAmJiBjdXJyZW50SW5kZXhcIiBjbGFzcz1cInNyLW9ubHlcIiA+XG4gICAgICAgIHt7YXJpYVRleHQgKyBjdXJyZW50SW5kZXggKyAnIG9mICcgKyAgbGlzdEl0ZW1zLmxlbmd0aH19XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPHVsIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCIgIGNsYXNzPVwiYXBwLWxpdmVsaXN0LWNvbnRhaW5lciBjbGVhcmZpeCB7e2RpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2FwcC1ob3Jpem9udGFsLWxpc3QnOiAnJ319IHt7bGlzdGNsYXNzfX1cIiByb2xlPVwibGlzdFwiXG4gICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlS2V5RG93bigkZXZlbnQsICdzZWxlY3QnKVwiXG5cbiAgICAoa2V5ZG93bi5zcGFjZSk9XCJoYW5kbGVLZXlEb3duKCRldmVudCwgJ3NwYWNlJylcIlxuXG4gICAgKGtleWRvd24uYXJyb3d1cCk9XCJoYW5kbGVLZXlEb3duKCRldmVudCwgJ2ZvY3VzUHJldicpXCJcbiAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQsICdmb2N1c05leHQnKVwiXG4gICAgKGtleWRvd24uYXJyb3dsZWZ0KT1cImhhbmRsZUtleURvd24oJGV2ZW50LCAnZm9jdXNQcmV2JylcIlxuICAgIChrZXlkb3duLmFycm93cmlnaHQpPVwiaGFuZGxlS2V5RG93bigkZXZlbnQsICdmb2N1c05leHQnKVwiXG5cbiAgICAoa2V5ZG93bi5zaGlmdC5hcnJvd3VwKT1cImhhbmRsZUtleURvd24oJGV2ZW50LCAnc2VsZWN0UHJldicpXCJcbiAgICAoa2V5ZG93bi5zaGlmdC5hcnJvd2Rvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQsICdzZWxlY3ROZXh0JylcIlxuICAgIChrZXlkb3duLnNoaWZ0LmFycm93bGVmdCk9XCJoYW5kbGVLZXlEb3duKCRldmVudCwgJ3NlbGVjdFByZXYnKVwiXG4gICAgKGtleWRvd24uc2hpZnQuYXJyb3dyaWdodCk9XCJoYW5kbGVLZXlEb3duKCRldmVudCwgJ3NlbGVjdE5leHQnKVwiXG4gICAgW2hpZGRlbl09XCJub0RhdGFGb3VuZCAmJiAhdmFyaWFibGVJbmZsaWdodFwiXG4+XG4gICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFncm91cGJ5XCIgW25nSWZFbHNlXT1cImdyb3VwZWRMaXN0VGVtcGxhdGVcIj5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkRGVmczsgaW5kZXggYXMgJGluZGV4OyBmaXJzdCBhcyAkZmlyc3Q7IGxhc3QgYXMgJGxhc3Q7XCIgY2xhc3M9XCJhcHAtbGlzdC1pdGVtIHt7ZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAnJyA6IGl0ZW1zUGVyUm93Q2xhc3N9fVwiIFtuZ0NsYXNzXT1cImxpc3RJdGVtUmVmLml0ZW1DbGFzc1wiXG4gICAgICAgICAgICBbd21MaXN0SXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICNsaXN0SXRlbVJlZj1cImxpc3RJdGVtUmVmXCJcbiAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgIHJvbGU9XCJsaXN0aXRlbVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0VGVtcGxhdGVcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW0sICRpbmRleDogJGluZGV4LCBpdGVtUmVmOiBsaXN0SXRlbVJlZiwgJGZpcnN0OiAkZmlyc3QsICRsYXN0OiAkbGFzdCwgY3VycmVudEl0ZW1XaWRnZXRzOiBsaXN0SXRlbVJlZi5jdXJyZW50SXRlbVdpZGdldHN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbGk+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RMZWZ0QWN0aW9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RSaWdodEFjdGlvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L3VsPlxuXG48ZGl2IGNsYXNzPVwibm8tZGF0YS1tc2dcIiAqbmdJZj1cIm5vRGF0YUZvdW5kICYmICF2YXJpYWJsZUluZmxpZ2h0XCIgW3RleHRDb250ZW50XT1cIm5vZGF0YW1lc3NhZ2VcIj48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImxvYWRpbmctZGF0YS1tc2dcIiAqbmdJZj1cInZhcmlhYmxlSW5mbGlnaHQgJiYgIXB1bGx0b3JlZnJlc2hcIj5cbiAgICA8c3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJhcHAtaWNvbiBwYW5lbC1pY29uIGZhLXNwaW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmdDbGFzc109XCJsb2FkaW5naWNvblwiPjwvaT5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+TG9hZGluZzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsb2FkaW5nLXRleHRcIiBbdGV4dENvbnRlbnRdPVwibG9hZGluZ2RhdGFtc2dcIj48L3NwYW4+XG4gICAgPC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJhcHAtZGF0YW5hdmlnYXRvclwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGF0YU5hdmlnYXRvci5pc0Rpc2FibGVOZXh0XCIgKm5nSWY9XCJuYXZpZ2F0aW9uID09PSAnSW5saW5lJyAmJiAhbm9EYXRhRm91bmRcIj5cbiAgICA8dWwgY2xhc3M9XCJwYWdlclwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJuZXh0XCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IChkYXRhTmF2aWdhdG9yID8gZGF0YU5hdmlnYXRvci5pc0Rpc2FibGVOZXh0ICA6IHRydWUpfVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiAoY2xpY2spPVwiZGF0YU5hdmlnYXRvci5uYXZpZ2F0ZVBhZ2UoJ25leHQnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGF0YU5hdmlnYXRvci5pc0Rpc2FibGVOZXh0XCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ3aSB3aS1jaGV2cm9uLXJpZ2h0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkdvIHRvIE5leHQgcGFnZSB7e2RhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlTmV4dCA/ICcsIERpc2FibGVkJyA6ICcnfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgPC91bD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicGFuZWwtZm9vdGVyXCIgKm5nSWY9XCJuYXZpZ2F0aW9uICE9PSAnTm9uZSdcIiBbaGlkZGVuXT1cIiFzaG93TmF2aWdhdGlvbiB8fCAob25EZW1hbmRMb2FkICYmIGRhdGFOYXZpZ2F0b3IuaXNEaXNhYmxlTmV4dCkgfHwgKGRhdGFOYXZpZ2F0b3IuZGF0YVNpemUgPD0gcGFnZXNpemUpIHx8ICghZGF0YU5hdmlnYXRvci5kYXRhU2l6ZSAmJiAhZGF0YU5hdmlnYXRvci5kYXRhc291cmNlPy5wYWdpbmF0aW9uPy5uZXh0KVwiPlxuICAgIDxuYXYgd21QYWdpbmF0aW9uXG4gICAgICAgICBuYXZpZ2F0aW9uYWxpZ24uYmluZD1cIm5hdmlnYXRpb25hbGlnblwiXG4gICAgICAgICBuYXZpZ2F0aW9uLmJpbmQ9XCJuYXZDb250cm9sc1wiXG4gICAgICAgICBzaG93cmVjb3JkY291bnQuYmluZD1cInNob3dyZWNvcmRjb3VudFwiXG4gICAgICAgICBtYXhzaXplLmJpbmQ9XCJtYXhzaXplXCJcbiAgICAgICAgIGJvdW5kYXJ5bGlua3MuYmluZD1cImJvdW5kYXJ5bGlua3NcIlxuICAgICAgICAgZm9yY2VlbGxpcHNlcy5iaW5kPVwiZm9yY2VlbGxpcHNlc1wiXG4gICAgICAgICBkaXJlY3Rpb25saW5rcy5iaW5kPVwiZGlyZWN0aW9ubGlua3NcIlxuICAgICAgICAgc2hvdy5iaW5kPVwiIW9uRGVtYW5kTG9hZFwiXG4gICAgICAgICBwYWdpbmF0aW9uY2hhbmdlLmV2ZW50PVwiYmVmb3JlUGFnaW5hdGlvbkNoYW5nZSgkZXZlbnQsICRpbmRleClcIlxuICAgID48L25hdj5cbiAgICA8YSAqbmdJZj1cIm9uRGVtYW5kTG9hZFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCJcbiAgICAgICAoY2xpY2spPVwiZGF0YU5hdmlnYXRvci5uYXZpZ2F0ZVBhZ2UoJ25leHQnLCAkZXZlbnQpXCJcbiAgICAgICBjbGFzcz1cImFwcC1idXR0b24gYnRuIGJ0bi1ibG9ja1wiXG4gICAgICAgW25nQ2xhc3NdPVwicGFnaW5hdGlvbmNsYXNzXCJcbiAgICAgICBbdGV4dENvbnRlbnRdPVwib25kZW1hbmRtZXNzYWdlXCJcbiAgICA+PC9hPlxuPC9kaXY+XG5cbjwhLS1UaGlzIHRlbXBsYXRlIHdpbGwgYmUgZGlzcGxheWVkIHdoZW4gZ3JvdXBieSBpcyBzcGVjaWZpZWQtLT5cbjxuZy10ZW1wbGF0ZSAjZ3JvdXBlZExpc3RUZW1wbGF0ZT5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGdyb3VwT2JqIG9mIGdyb3VwZWREYXRhXCIgY2xhc3M9XCJhcHAtbGlzdC1pdGVtLWdyb3VwIGNsZWFyZml4XCI+XG4gICAgICAgIDx1bCBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiIGNsYXNzPVwibGlzdC1ncm91cCBpdGVtLWdyb3VwXCIgW25nQ2xhc3NdPVwibGlzdGNsYXNzXCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJhcHAtbGlzdC1pdGVtLWhlYWRlciBsaXN0LWl0ZW0gbGlzdC1ncm91cC1oZWFkZXJcIiAoY2xpY2spPVwiaGFuZGxlSGVhZGVyQ2xpY2soJGV2ZW50KVwiIFtuZ0NsYXNzXT1cInsnY29sbGFwc2libGUtY29udGVudCc6IGNvbGxhcHNpYmxlfVwiPlxuICAgICAgICAgICAgPGg0Pnt7Z3JvdXBPYmoua2V5fX1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdpIGFjdGlvbiB3aS1jaGV2cm9uLXVwXCIgKm5nSWY9XCJjb2xsYXBzaWJsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93Y291bnRcIiBjbGFzcz1cImxhYmVsIGxhYmVsLWRlZmF1bHRcIj57e2dyb3VwT2JqLmRhdGEubGVuZ3RofX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBjbGVhcmZpeCB7e2RpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ2FwcC1ob3Jpem9udGFsLWxpc3QnOiAnJ319XCI+XG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdyb3VwT2JqLmRhdGE7IGluZGV4IGFzICRpbmRleDsgZmlyc3QgYXMgJGZpcnN0OyBsYXN0IGFzICRsYXN0O1wiIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcHAtbGlzdC1pdGVtIGdyb3VwLWxpc3QtaXRlbSB7e2l0ZW1zUGVyUm93Q2xhc3N9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImxpc3RJdGVtUmVmLml0ZW1DbGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIFt3bUxpc3RJdGVtXT1cIml0ZW1cIiAjbGlzdEl0ZW1SZWY9XCJsaXN0SXRlbVJlZlwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbSwgJGluZGV4OiAkaW5kZXgsIGl0ZW1SZWY6IGxpc3RJdGVtUmVmLCAkZmlyc3Q6ICRmaXJzdCwgJGxhc3Q6ICRsYXN0LCBjdXJyZW50SXRlbVdpZGdldHM6IGxpc3RJdGVtUmVmLmN1cnJlbnRJdGVtV2lkZ2V0c31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC91bD5cbiAgICA8L2xpPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|