@wavemaker/app-ng-runtime 12.0.0-next.45503 → 12.0.0-rc.5849
Sign up to get free protection for your applications and to get access to all the features.
- app-ng-runtime/build-task/bundles/index.umd.js +46 -38
- app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
- app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +5 -1
- app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +46 -38
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +8 -2
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
- app-ng-runtime/components/base/fesm2022/index.mjs +8 -2
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +27 -18
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
- app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
- app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
- app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +27 -18
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
- app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +12 -8
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +4 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +12 -8
- 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 +1 -0
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +11 -9
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +14 -13
- app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +11 -9
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +1 -0
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +4 -4
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -1
- app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -0
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +44 -10
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
- app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
- app-ng-runtime/components/data/table/fesm2022/index.mjs +45 -11
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +8 -1
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
- app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +3 -2
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
- app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
- app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
- app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
- app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +166 -103
- app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
- app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +20 -18
- app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
- app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +50 -13
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +166 -103
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +12 -9
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +6 -6
- app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +12 -9
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +187 -100
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +184 -102
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +187 -100
- 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 +12 -10
- app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
- app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
- app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
- app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
- app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
- app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +15 -13
- app-ng-runtime/core/esm2022/public_api.mjs +2 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
- app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
- app-ng-runtime/core/fesm2022/index.mjs +11 -11
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +1 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
- app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
- app-ng-runtime/scripts/datatable/datatable.js +24 -27
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/page/top-nav/src/top-nav.props.ts","../../../../../projects/components/widgets/page/top-nav/src/top-nav.directive.ts","../../../../../projects/components/widgets/page/top-nav/src/top-nav.module.ts","../../../../../projects/components/widgets/page/top-nav/src/index.ts"],"sourcesContent":["import {
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/page/top-nav/src/top-nav.props.ts","../../../../../projects/components/widgets/page/top-nav/src/top-nav.directive.ts","../../../../../projects/components/widgets/page/top-nav/src/top-nav.module.ts","../../../../../projects/components/widgets/page/top-nav/src/index.ts"],"sourcesContent":["import {PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-top-nav',\n new Map(\n [\n ['name', PROP_STRING],\n ['content', PROP_STRING],\n ['hint', PROP_STRING],\n ['arialabel', PROP_STRING]\n ]\n )\n );\n};\n","import {Directive, Inject, Injector, Optional} from '@angular/core';\n\nimport { provideAsWidgetRef, StylableComponent, styler } from '@wm/components/base';\nimport { registerProps } from './top-nav.props';\n\nconst DEFAULT_CLS = 'app-top-nav';\nconst WIDGET_CONFIG = {widgetType: 'wm-top-nav', hostClass: DEFAULT_CLS};\n\n@Directive({\n selector: '[wmTopNav]',\n providers: [\n provideAsWidgetRef(TopNavDirective)\n ],\n exportAs: 'wmTopNav'\n})\nexport class TopNavDirective extends StylableComponent {\n static initializeProps = registerProps();\n\n constructor(inj: Injector, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n styler(this.nativeElement, this);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { TopNavDirective } from './top-nav.directive';\n\nconst components = [\n TopNavDirective\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class TopNavModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;AAEO,MAAM,aAAa,GAAG,MAAK;AAC9B,IAAA,QAAQ,CACJ,YAAY,EACZ,IAAI,GAAG,CACH;QACI,CAAC,MAAM,EAAE,WAAW,CAAC;QACrB,CAAC,SAAS,EAAE,WAAW,CAAC;QACxB,CAAC,MAAM,EAAE,WAAW,CAAC;QACrB,CAAC,WAAW,EAAE,WAAW,CAAC;AAC7B,KAAA,CACJ,CACJ,CAAC;AACN,CAAC;;ACTD,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,aAAa,GAAG,EAAC,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAC,CAAC;AASnE,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAC3C,IAAA,SAAA,IAAA,CAAA,eAAe,GAAG,aAAa,EAAhB,CAAmB,EAAA;IAEzC,WAAY,CAAA,GAAa,EAA0C,eAAoB,EAAA;AACnF,QAAA,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAE3C,QAAA,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KACpC;AAPQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,SAAA,uBAAA,CAAA,CAAA,EAAA,EAAA,OAAA,KAAA,CAAA,IAAA,eAAe,0DAGW,kBAAkB,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA;AAH5C,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,IAAA,EAAA,eAAe,EALb,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,UAAA,EAAA,EAAA,CAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA;gBACP,kBAAkB,CAAC,eAAe,CAAC;AACtC,aAAA,CAAA,EAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAGQ,eAAe,EAAA,CAAA;cAP3B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACP,gBAAA,QAAQ,EAAE,YAAY;AACtB,gBAAA,SAAS,EAAE;AACP,oBAAA,kBAAkB,CAAiB,eAAA,CAAA;AACtC,iBAAA;AACD,gBAAA,QAAQ,EAAE,UAAU;AACvB,aAAA,CAAA;;sBAI+B,MAAM;uBAAC,kBAAkB,CAAA;;sBAAG,QAAQ;;;ACXpE,MAAM,UAAU,GAAG;IACf,eAAe;CAClB,CAAC;MAUW,YAAY,CAAA;6EAAZ,YAAY,GAAA,CAAA,EAAA,CAAA,EAAA;mEAAZ,YAAY,EAAA,CAAA,CAAA,EAAA;uEANjB,YAAY;YACZ,kBAAkB,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAKb,YAAY,EAAA,CAAA;cARxB,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACN,gBAAA,OAAO,EAAE;oBACL,YAAY;oBACZ,kBAAkB;AACrB,iBAAA;AACD,gBAAA,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC;AAC7B,gBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AAC3B,aAAA,CAAA;;wFACY,YAAY,EAAA,EAAA,YAAA,EAAA,CAXrB,eAAe,CAAA,EAAA,OAAA,EAAA,CAKX,YAAY;AACZ,QAAA,kBAAkB,aANtB,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACRnB;;AAEG;;;;"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
(function (global, factory) {
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/compiler'), require('lodash-es'), require('rxjs'), require('
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@angular/compiler', 'lodash-es', 'rxjs', '
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.core = {}), global.ng.compiler, global._, global.rxjs,
|
5
|
-
})(this, (function (exports, compiler, lodashEs, rxjs,
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/compiler'), require('lodash-es'), require('rxjs'), require('@angular/core'), require('@angular/common/http')) :
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', '@angular/compiler', 'lodash-es', 'rxjs', '@angular/core', '@angular/common/http'], factory) :
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.core = {}), global.ng.compiler, global._, global.rxjs, global.ng.core, global.ng.common.http));
|
5
|
+
})(this, (function (exports, compiler, lodashEs, rxjs, i0, i1) { 'use strict';
|
6
6
|
|
7
7
|
function _interopNamespaceDefault(e) {
|
8
8
|
var n = Object.create(null);
|
@@ -125,7 +125,7 @@
|
|
125
125
|
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${showTmpl}></ul>`;
|
126
126
|
break;
|
127
127
|
case exports.FormWidgetType.CHIPS:
|
128
|
-
tmpl = `<ul wmChips
|
128
|
+
tmpl = `<ul wmChips debouncetime="${attrs.get('debouncetime')}" ${innerTmpl} ${showTmpl}></ul>`;
|
129
129
|
break;
|
130
130
|
case exports.FormWidgetType.COLORPICKER:
|
131
131
|
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></div>`;
|
@@ -140,10 +140,10 @@
|
|
140
140
|
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
141
141
|
break;
|
142
142
|
case exports.FormWidgetType.NUMBER:
|
143
|
-
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number"
|
143
|
+
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" ${updateOnTmpl} ${showTmpl}></div>`;
|
144
144
|
break;
|
145
145
|
case exports.FormWidgetType.PASSWORD:
|
146
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password"
|
146
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" ${updateOnTmpl} ${showTmpl}></wm-input>`;
|
147
147
|
break;
|
148
148
|
case exports.FormWidgetType.RADIOSET:
|
149
149
|
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl} ${showTmpl}></ul>`;
|
@@ -158,7 +158,7 @@
|
|
158
158
|
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></wm-select>`;
|
159
159
|
break;
|
160
160
|
case exports.FormWidgetType.TOGGLE:
|
161
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle"
|
161
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" ${showTmpl}></div>`;
|
162
162
|
break;
|
163
163
|
case exports.FormWidgetType.SLIDER:
|
164
164
|
tmpl = `<div wmSlider ${innerTmpl} ${showTmpl}></div>`;
|
@@ -171,13 +171,13 @@
|
|
171
171
|
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl} ${showTmpl}></wm-input>`;
|
172
172
|
break;
|
173
173
|
case exports.FormWidgetType.TEXTAREA:
|
174
|
-
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
174
|
+
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${showTmpl}></wm-textarea>`;
|
175
175
|
break;
|
176
176
|
case exports.FormWidgetType.TIME:
|
177
177
|
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
178
178
|
break;
|
179
179
|
case exports.FormWidgetType.TIMESTAMP:
|
180
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
180
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
181
181
|
break;
|
182
182
|
case exports.FormWidgetType.UPLOAD:
|
183
183
|
const counter = options.counter;
|
@@ -2394,7 +2394,6 @@
|
|
2394
2394
|
IPOD: /iPod/i,
|
2395
2395
|
IPAD: /iPad/i,
|
2396
2396
|
MAC: /Mac/i,
|
2397
|
-
MACINTEL: /MacIntel/i,
|
2398
2397
|
ANDROID_TABLET: /android|android 3.0|xoom|sch-i800|playbook|tablet|kindle/i,
|
2399
2398
|
MOBILE: /Mobile/i,
|
2400
2399
|
WINDOWS: /Windows Phone/i,
|
@@ -2438,9 +2437,10 @@
|
|
2438
2437
|
const isIphone = () => REGEX.IPHONE.test(userAgent);
|
2439
2438
|
const isIpod = () => REGEX.IPOD.test(userAgent);
|
2440
2439
|
const isIpad = () => {
|
2441
|
-
return REGEX.IPAD.test(userAgent) || (window.navigator.maxTouchPoints && window.navigator.maxTouchPoints > 2 &&
|
2440
|
+
return REGEX.IPAD.test(userAgent) || (window.navigator.maxTouchPoints && window.navigator.maxTouchPoints > 2 && REGEX.MAC.test(window.navigator.platform));
|
2442
2441
|
};
|
2443
2442
|
const isIos = () => isIphone() || isIpod() || isIpad();
|
2443
|
+
const isSafari = () => navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1;
|
2444
2444
|
const isLargeTabletLandscape = (landScapeWidth, landScapeHeight) => {
|
2445
2445
|
const width = landScapeWidth || '1366px';
|
2446
2446
|
const height = landScapeHeight || '1024px';
|
@@ -2797,7 +2797,7 @@
|
|
2797
2797
|
}
|
2798
2798
|
};
|
2799
2799
|
const xmlToJson = (xmlString) => {
|
2800
|
-
const x2jsObj = new X2JS({ 'emptyNodeForm': '
|
2800
|
+
const x2jsObj = new X2JS({ 'emptyNodeForm': 'content', 'attributePrefix': '', 'enableToStringFunc': false });
|
2801
2801
|
let json = x2jsObj.xml2js(xmlString);
|
2802
2802
|
if (json) {
|
2803
2803
|
json = lodashEs.get(json, Object.keys(json)[0]);
|
@@ -3906,6 +3906,7 @@
|
|
3906
3906
|
isNumberType: isNumberType,
|
3907
3907
|
isObject: isObject,
|
3908
3908
|
isPageable: isPageable,
|
3909
|
+
isSafari: isSafari,
|
3909
3910
|
isTablet: isTablet,
|
3910
3911
|
isValidWebURL: isValidWebURL,
|
3911
3912
|
isVideoFile: isVideoFile,
|
@@ -5298,6 +5299,7 @@
|
|
5298
5299
|
exports.isNumberType = isNumberType;
|
5299
5300
|
exports.isObject = isObject;
|
5300
5301
|
exports.isPageable = isPageable;
|
5302
|
+
exports.isSafari = isSafari;
|
5301
5303
|
exports.isValidWebURL = isValidWebURL;
|
5302
5304
|
exports.isVideoFile = isVideoFile;
|
5303
5305
|
exports.loadScript = loadScript;
|
@@ -7,7 +7,7 @@ export { appendNode, insertBefore, insertAfter, removeNode, removeClass, addClas
|
|
7
7
|
export * from './enums/enums';
|
8
8
|
export * from './utils/event-notifier';
|
9
9
|
export { $parseExpr, $parseEvent, registerFnByExpr, setPipeProvider, getFnByExpr, getFnForBindExpr, getFnForEventExpr } from './utils/expression-parser';
|
10
|
-
export { isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, isMobileApp, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, convertToBlob, hasCordova, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent } from './utils/utils';
|
10
|
+
export { isDefined, isObject, toBoolean, isIE, isAndroid, isAndroidTablet, isIphone, isIpod, isIpad, isIos, isSafari, isLargeTabletLandscape, isLargeTabletPortrait, isMobile, isMobileApp, getAndroidVersion, isKitkatDevice, encodeUrl, encodeUrlParams, initCaps, spaceSeparate, replaceAt, periodSeparate, prettifyLabel, deHyphenate, prettifyLabels, isInsecureContentRequest, stringStartsWith, getEvaluatedExprValue, isImageFile, isAudioFile, isVideoFile, isValidWebURL, getResourceURL, triggerFn, hasOffsetStr, getFormattedDate, getDateObj, addEventListenerOnElement, getClonedObject, getFiles, generateGUId, validateAccessRoles, getValidJSON, xmlToJson, findValueOf, extractType, isNumberType, isEmptyObject, scrollToElement, isElementInViewport, isPageable, replace, isDateTimeType, getValidDateObject, getNativeDateObject, getBlob, isEqualWithFields, loadStyleSheet, loadStyleSheets, loadScript, loadScripts, _WM_APP_PROJECT, setSessionStorageItem, getSessionStorageItem, noop, convertToBlob, hasCordova, AppConstants, openLink, fetchContent, toPromise, retryIfFails, getAbortableDefer, createCSSRule, getUrlParams, getMomentLocaleObject, getRouteNameFromLink, isAppleProduct, defer, executePromiseChain, isDataSourceEqual, validateDataSourceCtx, processFilterExpBindNode, extendProto, removeExtraSlashes, getDisplayDateTimeFormat, addForIdAttributes, adjustContainerPosition, adjustContainerRightEdges, setTranslation3dPosition, getWebkitTraslationMatrix, closePopover, detectChanges, triggerItemAction, getDatasourceFromExpr, extractCurrentItemExpr, findRootContainer, VALIDATOR, transformFileURI, appendScriptToHead, getAppSetting, setListClass, findParent } from './utils/utils';
|
11
11
|
export { FIRST_TIME_WATCH, isFirstTimeChange, debounce, muteWatchers, unMuteWatchers, $watch, $unwatch, setNgZone, setAppRef, isChangeFromWatch, resetChangeFromWatch, $invokeWatchers, $appDigest } from './utils/watcher';
|
12
12
|
export * from './utils/id-generator';
|
13
13
|
export * from './types/types';
|
@@ -24,4 +24,4 @@ export { PaginationService } from './services/pagination.service';
|
|
24
24
|
export * from './core.module';
|
25
25
|
export * from './utils/wm-project-properties';
|
26
26
|
export * from './utils/lru-cache';
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFVBQVUsRUFDVixXQUFXLEVBQ1gsUUFBUSxFQUNSLFdBQVcsRUFDWCxXQUFXLEVBQ1gsTUFBTSxFQUNOLGFBQWEsRUFDYixXQUFXLEVBQ1gsT0FBTyxFQUNQLE9BQU8sRUFDUCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFdBQVcsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLE9BQU8sRUFFSCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBRUgsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVCxlQUFlLEVBQ2YsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLFFBQVEsRUFDUixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxTQUFTLEVBQ1QsZUFBZSxFQUNmLFFBQVEsRUFDUixhQUFhLEVBQ2IsU0FBUyxFQUNULGNBQWMsRUFDZCxhQUFhLEVBQ2IsV0FBVyxFQUNYLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsV0FBVyxFQUNYLFdBQVcsRUFDWCxhQUFhLEVBQ2IsY0FBYyxFQUNkLFNBQVMsRUFDVCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsZUFBZSxFQUNmLFFBQVEsRUFDUixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLFlBQVksRUFDWixTQUFTLEVBQ1QsV0FBVyxFQUNYLFdBQVcsRUFDWCxZQUFZLEVBQ1osYUFBYSxFQUNiLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLE9BQU8sRUFDUCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixJQUFJLEVBQ0osYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixhQUFhLEVBQ2IsWUFBWSxFQUNaLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLEtBQUssRUFDTCxtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsV0FBVyxFQUNYLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLHVCQUF1QixFQUN2Qix5QkFBeUIsRUFDekIsd0JBQXdCLEVBQ3hCLHlCQUF5QixFQUN6QixZQUFZLEVBQ1osYUFBYSxFQUNiLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFVBQVUsRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDZCxNQUFNLEVBQ04sUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixlQUFlLEVBQ2YsVUFBVSxFQUNiLE1BQU0saUJBQWlCLENBQUM7QUFDekIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsUUFBUSxFQUFpQixNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjb3JlXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi91dGlscy9idWlsZC11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9jdXJyZW5jeS1jb25zdGFudHMnO1xuZXhwb3J0IHtcbiAgICBhcHBlbmROb2RlLFxuICAgIGluc2VydEJlZm9yZSxcbiAgICBpbnNlcnRBZnRlcixcbiAgICByZW1vdmVOb2RlLFxuICAgIHJlbW92ZUNsYXNzLFxuICAgIGFkZENsYXNzLFxuICAgIHN3aXRjaENsYXNzLFxuICAgIHRvZ2dsZUNsYXNzLFxuICAgIHNldENTUyxcbiAgICBzZXRDU1NGcm9tT2JqLFxuICAgIHNldFByb3BlcnR5LFxuICAgIHNldEF0dHIsXG4gICAgc2V0SHRtbCxcbiAgICByZW1vdmVBdHRyLFxuICAgIGNyZWF0ZUVsZW1lbnQsXG4gICAgdG9EaW1lbnNpb25cbn0gZnJvbSAnLi91dGlscy9kb20nO1xuZXhwb3J0ICogZnJvbSAnLi9lbnVtcy9lbnVtcyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2V2ZW50LW5vdGlmaWVyJztcbmV4cG9ydCB7XG4gICAgUGFyc2VFeHByUmVzdWx0LFxuICAgICRwYXJzZUV4cHIsXG4gICAgJHBhcnNlRXZlbnQsXG4gICAgcmVnaXN0ZXJGbkJ5RXhwcixcbiAgICBzZXRQaXBlUHJvdmlkZXIsXG4gICAgZ2V0Rm5CeUV4cHIsXG4gICAgZ2V0Rm5Gb3JCaW5kRXhwcixcbiAgICBnZXRGbkZvckV2ZW50RXhwclxufSBmcm9tICcuL3V0aWxzL2V4cHJlc3Npb24tcGFyc2VyJztcbmV4cG9ydCB7XG4gICAgRVZFTlRfTElGRSxcbiAgICBpc0RlZmluZWQsXG4gICAgaXNPYmplY3QsXG4gICAgdG9Cb29sZWFuLFxuICAgIGlzSUUsXG4gICAgaXNBbmRyb2lkLFxuICAgIGlzQW5kcm9pZFRhYmxldCxcbiAgICBpc0lwaG9uZSxcbiAgICBpc0lwb2QsXG4gICAgaXNJcGFkLFxuICAgIGlzSW9zLFxuICAgIGlzU2FmYXJpLFxuICAgIGlzTGFyZ2VUYWJsZXRMYW5kc2NhcGUsXG4gICAgaXNMYXJnZVRhYmxldFBvcnRyYWl0LFxuICAgIGlzTW9iaWxlLFxuICAgIGlzTW9iaWxlQXBwLFxuICAgIGdldEFuZHJvaWRWZXJzaW9uLFxuICAgIGlzS2l0a2F0RGV2aWNlLFxuICAgIGVuY29kZVVybCxcbiAgICBlbmNvZGVVcmxQYXJhbXMsXG4gICAgaW5pdENhcHMsXG4gICAgc3BhY2VTZXBhcmF0ZSxcbiAgICByZXBsYWNlQXQsXG4gICAgcGVyaW9kU2VwYXJhdGUsXG4gICAgcHJldHRpZnlMYWJlbCxcbiAgICBkZUh5cGhlbmF0ZSxcbiAgICBwcmV0dGlmeUxhYmVscyxcbiAgICBpc0luc2VjdXJlQ29udGVudFJlcXVlc3QsXG4gICAgc3RyaW5nU3RhcnRzV2l0aCxcbiAgICBnZXRFdmFsdWF0ZWRFeHByVmFsdWUsXG4gICAgaXNJbWFnZUZpbGUsXG4gICAgaXNBdWRpb0ZpbGUsXG4gICAgaXNWaWRlb0ZpbGUsXG4gICAgaXNWYWxpZFdlYlVSTCxcbiAgICBnZXRSZXNvdXJjZVVSTCxcbiAgICB0cmlnZ2VyRm4sXG4gICAgaGFzT2Zmc2V0U3RyLFxuICAgIGdldEZvcm1hdHRlZERhdGUsXG4gICAgZ2V0RGF0ZU9iaixcbiAgICBhZGRFdmVudExpc3RlbmVyT25FbGVtZW50LFxuICAgIGdldENsb25lZE9iamVjdCxcbiAgICBnZXRGaWxlcyxcbiAgICBnZW5lcmF0ZUdVSWQsXG4gICAgdmFsaWRhdGVBY2Nlc3NSb2xlcyxcbiAgICBnZXRWYWxpZEpTT04sXG4gICAgeG1sVG9Kc29uLFxuICAgIGZpbmRWYWx1ZU9mLFxuICAgIGV4dHJhY3RUeXBlLFxuICAgIGlzTnVtYmVyVHlwZSxcbiAgICBpc0VtcHR5T2JqZWN0LFxuICAgIHNjcm9sbFRvRWxlbWVudCxcbiAgICBpc0VsZW1lbnRJblZpZXdwb3J0LFxuICAgIGlzUGFnZWFibGUsXG4gICAgcmVwbGFjZSxcbiAgICBpc0RhdGVUaW1lVHlwZSxcbiAgICBnZXRWYWxpZERhdGVPYmplY3QsXG4gICAgZ2V0TmF0aXZlRGF0ZU9iamVjdCxcbiAgICBnZXRCbG9iLFxuICAgIGlzRXF1YWxXaXRoRmllbGRzLFxuICAgIGxvYWRTdHlsZVNoZWV0LFxuICAgIGxvYWRTdHlsZVNoZWV0cyxcbiAgICBsb2FkU2NyaXB0LFxuICAgIGxvYWRTY3JpcHRzLFxuICAgIF9XTV9BUFBfUFJPSkVDVCxcbiAgICBzZXRTZXNzaW9uU3RvcmFnZUl0ZW0sXG4gICAgZ2V0U2Vzc2lvblN0b3JhZ2VJdGVtLFxuICAgIG5vb3AsXG4gICAgY29udmVydFRvQmxvYixcbiAgICBoYXNDb3Jkb3ZhLFxuICAgIEFwcENvbnN0YW50cyxcbiAgICBvcGVuTGluayxcbiAgICBmZXRjaENvbnRlbnQsXG4gICAgdG9Qcm9taXNlLFxuICAgIHJldHJ5SWZGYWlscyxcbiAgICBnZXRBYm9ydGFibGVEZWZlcixcbiAgICBjcmVhdGVDU1NSdWxlLFxuICAgIGdldFVybFBhcmFtcyxcbiAgICBnZXRNb21lbnRMb2NhbGVPYmplY3QsXG4gICAgZ2V0Um91dGVOYW1lRnJvbUxpbmssXG4gICAgaXNBcHBsZVByb2R1Y3QsXG4gICAgZGVmZXIsXG4gICAgZXhlY3V0ZVByb21pc2VDaGFpbixcbiAgICBpc0RhdGFTb3VyY2VFcXVhbCxcbiAgICB2YWxpZGF0ZURhdGFTb3VyY2VDdHgsXG4gICAgcHJvY2Vzc0ZpbHRlckV4cEJpbmROb2RlLFxuICAgIGV4dGVuZFByb3RvLFxuICAgIHJlbW92ZUV4dHJhU2xhc2hlcyxcbiAgICBnZXREaXNwbGF5RGF0ZVRpbWVGb3JtYXQsXG4gICAgYWRkRm9ySWRBdHRyaWJ1dGVzLFxuICAgIGFkanVzdENvbnRhaW5lclBvc2l0aW9uLFxuICAgIGFkanVzdENvbnRhaW5lclJpZ2h0RWRnZXMsXG4gICAgc2V0VHJhbnNsYXRpb24zZFBvc2l0aW9uLFxuICAgIGdldFdlYmtpdFRyYXNsYXRpb25NYXRyaXgsXG4gICAgY2xvc2VQb3BvdmVyLFxuICAgIGRldGVjdENoYW5nZXMsXG4gICAgdHJpZ2dlckl0ZW1BY3Rpb24sXG4gICAgZ2V0RGF0YXNvdXJjZUZyb21FeHByLFxuICAgIGV4dHJhY3RDdXJyZW50SXRlbUV4cHIsXG4gICAgZmluZFJvb3RDb250YWluZXIsXG4gICAgVkFMSURBVE9SLFxuICAgIHRyYW5zZm9ybUZpbGVVUkksXG4gICAgYXBwZW5kU2NyaXB0VG9IZWFkLFxuICAgIGdldEFwcFNldHRpbmcsXG4gICAgc2V0TGlzdENsYXNzLFxuICAgIGZpbmRQYXJlbnRcbn0gZnJvbSAnLi91dGlscy91dGlscyc7XG5leHBvcnQge1xuICAgIEZJUlNUX1RJTUVfV0FUQ0gsXG4gICAgaXNGaXJzdFRpbWVDaGFuZ2UsXG4gICAgZGVib3VuY2UsXG4gICAgbXV0ZVdhdGNoZXJzLFxuICAgIHVuTXV0ZVdhdGNoZXJzLFxuICAgICR3YXRjaCxcbiAgICAkdW53YXRjaCxcbiAgICBzZXROZ1pvbmUsXG4gICAgc2V0QXBwUmVmLFxuICAgIGlzQ2hhbmdlRnJvbVdhdGNoLFxuICAgIHJlc2V0Q2hhbmdlRnJvbVdhdGNoLFxuICAgICRpbnZva2VXYXRjaGVycyxcbiAgICAkYXBwRGlnZXN0XG59IGZyb20gJy4vdXRpbHMvd2F0Y2hlcic7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzL2lkLWdlbmVyYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL3R5cGVzJztcbmV4cG9ydCB7IFZpZXdwb3J0LCBWaWV3cG9ydEV2ZW50IH0gZnJvbSAnLi9zZXJ2aWNlcy92aWV3cG9ydC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29uc3RhbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC10eXBlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9maWVsZC13aWRnZXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3NjcmlwdC1sb2FkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3VzZXItY3VzdG9tLXBpcGUtbWFuYWdlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY3VzdG9tLWljb25zLWxvYWRlci5zZXJ2aWNlJztcbmV4cG9ydCB7IFN0YXRlUGVyc2lzdGVuY2UgfSBmcm9tICcuL3NlcnZpY2VzL3N0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UnO1xuZXhwb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvd20tcHJvamVjdC1wcm9wZXJ0aWVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvbHJ1LWNhY2hlJztcbiJdfQ==
|
@@ -32,7 +32,7 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
32
32
|
tmpl = `<ul role="group" wmCheckboxset ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${showTmpl}></ul>`;
|
33
33
|
break;
|
34
34
|
case FormWidgetType.CHIPS:
|
35
|
-
tmpl = `<ul wmChips
|
35
|
+
tmpl = `<ul wmChips debouncetime="${attrs.get('debouncetime')}" ${innerTmpl} ${showTmpl}></ul>`;
|
36
36
|
break;
|
37
37
|
case FormWidgetType.COLORPICKER:
|
38
38
|
tmpl = `<div wmColorPicker ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></div>`;
|
@@ -47,10 +47,10 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
47
47
|
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
48
48
|
break;
|
49
49
|
case FormWidgetType.NUMBER:
|
50
|
-
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number"
|
50
|
+
tmpl = `<div wmNumber ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="number" ${updateOnTmpl} ${showTmpl}></div>`;
|
51
51
|
break;
|
52
52
|
case FormWidgetType.PASSWORD:
|
53
|
-
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password"
|
53
|
+
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="password" ${updateOnTmpl} ${showTmpl}></wm-input>`;
|
54
54
|
break;
|
55
55
|
case FormWidgetType.RADIOSET:
|
56
56
|
tmpl = `<ul role="radiogroup" wmRadioset ${innerTmpl} ${showTmpl}></ul>`;
|
@@ -65,7 +65,7 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
65
65
|
tmpl = `<wm-select ${attrs.get('required') === 'true' ? 'required=true' : ''} ${innerTmpl} ${showTmpl}></wm-select>`;
|
66
66
|
break;
|
67
67
|
case FormWidgetType.TOGGLE:
|
68
|
-
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle"
|
68
|
+
tmpl = `<div wmCheckbox ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="toggle" ${showTmpl}></div>`;
|
69
69
|
break;
|
70
70
|
case FormWidgetType.SLIDER:
|
71
71
|
tmpl = `<div wmSlider ${innerTmpl} ${showTmpl}></div>`;
|
@@ -78,13 +78,13 @@ export const getFormWidgetTemplate = (widgetType, innerTmpl, attrs, options = {}
|
|
78
78
|
tmpl = `<wm-input ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} type="${attrs.get(inputType) || 'text'}" ${updateOnTmpl} ${showTmpl}></wm-input>`;
|
79
79
|
break;
|
80
80
|
case FormWidgetType.TEXTAREA:
|
81
|
-
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''}
|
81
|
+
tmpl = `<wm-textarea ${innerTmpl} ${attrs.get('required') === 'true' ? 'required=true' : ''} ${updateOnTmpl} ${showTmpl}></wm-textarea>`;
|
82
82
|
break;
|
83
83
|
case FormWidgetType.TIME:
|
84
84
|
tmpl = `<div wmTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
85
85
|
break;
|
86
86
|
case FormWidgetType.TIMESTAMP:
|
87
|
-
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl}
|
87
|
+
tmpl = `<div wmDateTime ${attrs.get('required') === 'true' ? 'required=true' : ''} dataentrymode="${attrs.get('dataentrymode')}" ${innerTmpl} ${showTmpl}></div>`;
|
88
88
|
break;
|
89
89
|
case FormWidgetType.UPLOAD:
|
90
90
|
const counter = options.counter;
|
@@ -259,4 +259,4 @@ export const getRowActionAttrs = attrs => {
|
|
259
259
|
});
|
260
260
|
return tmpl;
|
261
261
|
};
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9idWlsZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV4RCxrREFBa0Q7QUFDbEQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFRLEVBQUUsU0FBVSxFQUFFLEVBQUU7SUFDdkQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDeEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTSxTQUFTLCtCQUErQixTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7UUFDOUgsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFFLEtBQTJCLEVBQUUsVUFBZSxFQUFF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QGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHsgRm9ybVdpZGdldFR5cGUgfSBmcm9tICcuLi9lbnVtcy9lbnVtcyc7XG5pbXBvcnQge2luY2x1ZGVzLCBpc0FycmF5LCBzdGFydHNXaXRofSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbi8vIEZvciBodG1sIHVwbG9hZCB3aWRnZXQsIGFkZCBldmVudHMgb24gaW5wdXQgdGFnXG5jb25zdCBnZXRVcGxvYWRFdmVudFRtcGwgPSAoYXR0cnMsIGNvdW50ZXI/LCBmaWVsZE5hbWU/KSA9PiB7XG4gICAgbGV0IGV2ZW50VG1wbCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgaWYgKGtleSAmJiBrZXkuZW5kc1dpdGgoJy5ldmVudCcpKSB7XG4gICAgICAgICAgIGNvbnN0IGV2ZW50TmFtZSA9IGtleS5zcGxpdCgnLicpWzBdO1xuICAgICAgICAgICBjb25zdCBjb3VudGVyVGwgPSBjb3VudGVyID8gYCR7Y291bnRlcn0uYCA6ICcnO1xuICAgICAgICAgICBldmVudFRtcGwgPSBgICR7ZXZlbnRUbXBsfSAoJHtldmVudE5hbWV9KT1cIiR7Y291bnRlclRsfXRyaWdnZXJVcGxvYWRFdmVudCgkZXZlbnQsICcke2V2ZW50TmFtZX0nLCAnJHtmaWVsZE5hbWV9Jywgcm93KVwiIGA7XG4gICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBldmVudFRtcGw7XG59O1xuXG4vLyBNZXRob2QgdG8gZ2V0IHRoZSBmb3JtIHdpZGdldCB0ZW1wbGF0ZVxuZXhwb3J0IGNvbnN0IGdldEZvcm1XaWRnZXRUZW1wbGF0ZSA9ICh3aWRnZXRUeXBlOiBzdHJpbmcsIGlubmVyVG1wbDogc3RyaW5nLCBhdHRycz86IE1hcDxzdHJpbmcsIHN0cmluZz4sIG9wdGlvbnM6IGFueSA9IHt9KSA9PiB7XG4gICAgbGV0IHRtcGw7XG4gICAgY29uc3QgdXBkYXRlT24gPSBhdHRycy5nZXQoJ3VwZGF0ZW9uJyk7XG4gICAgY29uc3QgdXBkYXRlT25UbXBsID0gdXBkYXRlT24gPyBgdXBkYXRlb249XCIke3VwZGF0ZU9ufVwiYCA6ICcnO1xuICAgIGNvbnN0IHNob3dpbmVkaXRtb2RlID0gYXR0cnMuZ2V0KCdzaG93aW5lZGl0bW9kZScpIHx8IGF0dHJzLmdldCgnc2hvd2luZWRpdG1vZGUuYmluZCcpIHx8IHRydWU7XG4gICAgY29uc3Qgc2hvd1RtcGw6IHN0cmluZyAgPSBzaG93aW5lZGl0bW9kZSA9PSAnZmFsc2UnPyBgc2hvdz1cIiR7c2hvd2luZWRpdG1vZGV9XCJgOiBgc2hvdy5iaW5kPVwiJHtzaG93aW5lZGl0bW9kZX1cImA7XG4gICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRZUEVBSEVBRDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVNlYXJjaCB0eXBlPVwiYXV0b2NvbXBsZXRlXCIgZGVib3VuY2V0aW1lPVwiJHthdHRycy5nZXQoJ2RlYm91bmNldGltZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hFQ0tCT1g6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21DaGVja2JveCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNIRUNLQk9YU0VUOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgcm9sZT1cImdyb3VwXCIgd21DaGVja2JveHNldCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtzaG93VG1wbH0+PC91bD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hJUFM6XG4gICAgICAgICAgICB0bXBsID0gYDx1bCB3bUNoaXBzIHJvbGU9XCJpbnB1dFwiIGRlYm91bmNldGltZT1cIiR7YXR0cnMuZ2V0KCdkZWJvdW5jZXRpbWUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC91bD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ09MT1JQSUNLRVI6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21Db2xvclBpY2tlciAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNVUlJFTkNZOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ3VycmVuY3kgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHt1cGRhdGVPblRtcGx9ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5EQVRFVElNRTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGVUaW1lICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtTnVtYmVyICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwibnVtYmVyXCIgYXJpYS1sYWJlbD1cIk9ubHkgbnVtYmVyc1wiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUEFTU1dPUkQ6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1pbnB1dCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInBhc3N3b3JkXCIgYXJpYS1sYWJlbD1cIkVudGVyIHBhc3N3b3JkXCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9Pjwvd20taW5wdXQ+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJBRElPU0VUOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgcm9sZT1cInJhZGlvZ3JvdXBcIiB3bVJhZGlvc2V0ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L3VsPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQVRJTkc6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21SYXRpbmcgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SSUNIVEVYVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVJpY2hUZXh0RWRpdG9yIHJvbGU9XCJ0ZXh0Ym94XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1zZWxlY3QgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9Pjwvd20tc2VsZWN0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UT0dHTEU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21DaGVja2JveCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInRvZ2dsZVwiIHJvbGU9XCJjaGVja2JveFwiIGFyaWEtbGFiZWw9XCJUb2dnbGUgYnV0dG9uXCIgJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNMSURFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVNsaWRlciAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNXSVRDSDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVN3aXRjaCAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRFWFQ6XG4gICAgICAgICAgICBjb25zdCBpbnB1dFR5cGUgPSBvcHRpb25zLmlucHV0VHlwZSB8fCAnaW5wdXR0eXBlJztcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cIiR7YXR0cnMuZ2V0KGlucHV0VHlwZSkgfHwgJ3RleHQnfVwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5URVhUQVJFQTpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLXRleHRhcmVhICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSByb2xlPVwidGV4dGJveFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLXRleHRhcmVhPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUVTVEFNUDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGVUaW1lICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSByb2xlPVwiaW5wdXRcIiAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVVBMT0FEOlxuICAgICAgICAgICAgY29uc3QgY291bnRlciA9IG9wdGlvbnMuY291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHBDb3VudGVyID0gb3B0aW9ucy5wQ291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFByb3BzID0gb3B0aW9ucy51cGxvYWRQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VG1wbCA9IGdldFVwbG9hZEV2ZW50VG1wbChhdHRycywgY291bnRlciwgdXBsb2FkUHJvcHMgJiYgdXBsb2FkUHJvcHMubmFtZSk7XG4gICAgICAgICAgICBpZiAodXBsb2FkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxmb3JtIG5hbWU9XCIke3VwbG9hZFByb3BzLmZvcm1OYW1lfVwiICR7aW5uZXJUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9jdXMtdGFyZ2V0IGNsYXNzPVwiZmlsZS11cGxvYWRcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCIke3VwbG9hZFByb3BzLm5hbWV9XCIgJHtldmVudFRtcGx9ICR7c2hvd1RtcGx9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxhIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiIGhyZWY9XCJ7eyR7Y291bnRlcn0uaHJlZn19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCIke2NvdW50ZXJ9LmZpbGV0eXBlID09PSAnaW1hZ2UnICYmICR7Y291bnRlcn0uaHJlZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT1cImhlaWdodDoyZW1cIiBjbGFzcz1cIndpIHdpLWZpbGVcIiBbc3JjXT1cIiR7Y291bnRlcn0uaHJlZlwiLz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3ske2NvdW50ZXJ9LmhyZWZ9fVwiICpuZ0lmPVwiJHtjb3VudGVyfS5maWxldHlwZSAhPT0gJ2ltYWdlJyAmJiAke2NvdW50ZXJ9LmhyZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwid2kgd2ktZmlsZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgJHtpbm5lclRtcGx9IGNsYXNzPVwiYXBwLWJsb2ItdXBsb2FkXCIgW25nQ2xhc3NdPVwieydmaWxlLXJlYWRvbmx5JzogJHtjb3VudGVyfS5yZWFkb25seX1cIiAke2V2ZW50VG1wbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIke2NvdW50ZXJ9LnJlcXVpcmVkXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiJHthdHRycy5nZXQoJ2tleScpIHx8IGF0dHJzLmdldCgnbmFtZScpfV9mb3JtV2lkZ2V0XCIgW3JlYWRvbmx5XT1cIiR7Y291bnRlcn0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCIhJHtwQ291bnRlcn0uaXNVcGRhdGVNb2RlXCIgW2FjY2VwdF09XCIke2NvdW50ZXJ9LnBlcm1pdHRlZFwiICR7c2hvd1RtcGx9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwidGV4dFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVxdWlyZWRGb3JtV2lkZ2V0ID0gKHdpZGdldFR5cGUpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXNlYXJjaCc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hJUFM6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWNoaXBzJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DT0xPUlBJQ0tFUjpcbiAgICAgICAgICAgIHJldHVybiAnd20tY29sb3JwaWNrZXInO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNVUlJFTkNZOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jdXJyZW5jeSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURTpcbiAgICAgICAgICAgIHJldHVybiAnd20tZGF0ZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURVRJTUU6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWRhdGV0aW1lJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FOlxuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUVTVEFNUDpcbiAgICAgICAgICAgIHJldHVybiAnd20tdGltZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFUSU5HOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1yYXRpbmcnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJJQ0hURVhUOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1yaWNodGV4dGVkaXRvcic7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0xJREVSOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1zbGlkZXInO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICd3bS10ZXh0JztcbiAgICB9XG59O1xuXG4vLyBUaGlzIG1laHRvZCBpcyB1c2VkIHRvIGFkZCBkYXRhc2V0Ym91bmRleHByIGF0dHJpYnV0ZSBmb3Igbm9kZVxuY29uc3QgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZSA9IChjaGlsZE5vZGU6IEVsZW1lbnQsIGF0dHI6IEF0dHJpYnV0ZSwgYXR0clZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBhdHRyVmFsdWUgPSBhdHRyVmFsdWUucmVwbGFjZSgnYmluZDonLCAnJyk7XG4gICAgY29uc3QgZGF0YXNldEJvdW5kQXR0cmlidXRlID0gY2hpbGROb2RlLmF0dHJzLmZpbmQoIGEgPT4gYS5uYW1lID09PSAnZGF0YXNldGJvdW5kZXhwcicpO1xuICAgIGlmIChhdHRyLm5hbWUgPT09ICdkYXRhc2V0JyAmJiAhZGF0YXNldEJvdW5kQXR0cmlidXRlKSB7XG4gICAgICAgIGNoaWxkTm9kZS5hdHRycy5wdXNoKG5ldyBBdHRyaWJ1dGUoJ2RhdGFzZXRib3VuZGV4cHInLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgYXR0ci5rZXlTcGFuLCBhdHRyLnZhbHVlU3BhbiwgdW5kZWZpbmVkLCB1bmRlZmluZWQpKTtcbiAgICB9XG59O1xuXG5cbi8qKlxuICogZXhwOiBVc2VyIGJ1aWx0IGJpbmQgZXhwcmVzc2lvblxuICogIFRvIGNoZWNrIHRoZSBjdXN0b20gcGlwZSBleHByZXNzaW9ucy5cbiAqICBJZiB1c2VyIHVzZSB0aGUgY3VzdG9tIHBpcGUgZXhwcmVzc2lvbiBpdCB3aWxsIGNoZWNrIGluIHRoZSBleHAuIHRoYXQgXCJjdXN0b21cIiBzdHJpbmcgZXhpc3Qgb3Igbm90IHdpdGggKDopIHN5bnRheC5cbiAqICBFZzogY3VzdG9tOlxuICogICAgICBjdXN0b20gICAgOlxuICovXG5leHBvcnQgY29uc3QgY2hlY2tJc0N1c3RvbVBpcGVFeHByZXNzaW9uID0gZnVuY3Rpb24oZXhwKXtcbiAgICBsZXQgY3VzdG9tUmVnRXggPSAvKGN1c3RvbShcXHMqOikpL2c7XG4gICAgbGV0IG1hdGNoZXMgPSBleHAubWF0Y2goY3VzdG9tUmVnRXgpO1xuICAgIHJldHVybiBtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoO1xufVxuXG5cbi8vIFRoZSBib3VuZCB2YWx1ZSBpcyByZXBsYWNlZCB3aXRoIHt7aXRlbS5maWVsZG5hbWV9fSBoZXJlLiBUaGlzIGlzIG5lZWRlZCBieSB0aGUgbGl2ZUxpc3Qgd2hlbiBjb21waWxpbmcgaW5uZXIgZWxlbWVudHNcbmV4cG9ydCBjb25zdCB1cGRhdGVUZW1wbGF0ZUF0dHJzID0gKHJvb3ROb2RlOiBFbGVtZW50IHwgQXJyYXk8RWxlbWVudD4sIHBhcmVudERhdGFTZXQ6IHN0cmluZywgd2lkZ2V0TmFtZTogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nID0gJycsIHJlZmVyZW5jZU5hbWU6IHN0cmluZyA9ICdpdGVtJykgPT4ge1xuXG4gICAgY29uc3Qgc2FuaXRpemVkUGFyZW50RGF0YXNldCA9IHBhcmVudERhdGFTZXQucmVwbGFjZSgvKFteYS16QS1aMC05Ll0pL2csICdcXFxcJDEnKTtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJygnICsgc2FuaXRpemVkUGFyZW50RGF0YXNldCArICcpKFxcXFxbMFxcXFxdKT8oLmRhdGFcXFxcW1xcXFwkaVxcXFxdKT8oLmNvbnRlbnRcXFxcW1xcXFwkaVxcXFxdKT8oXFxcXFtcXFxcJGlcXFxcXSk/JywgJ2cnKTtcbiAgICBsZXQgY3VycmVudEl0ZW1SZWdFeDtcbiAgICBsZXQgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXg7XG4gICAgbGV0IGZvcm1XaWRnZXRzUmVnZXg7XG4gICAgbGV0IG5vZGVzOiBBcnJheTxFbGVtZW50PjtcbiAgICBjb25zdCB3aWRnZXRMaXN0ID0ge1xuICAgICAgICAnd20tbGlzdCc6IFsnaXRlbWNsYXNzJywgJ2Rpc2FibGVpdGVtJywgJ2RhdGFzZXQnXVxuICAgIH07XG5cbiAgICBpZiAod2lkZ2V0TmFtZSkge1xuICAgICAgICBjdXJyZW50SXRlbVJlZ0V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuJHt3aWRnZXROYW1lfS5jdXJyZW50SXRlbSlcXFxcYmAsICdnJyk7XG4gICAgICAgIGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuJHt3aWRnZXROYW1lfS5jdXJyZW50SXRlbVdpZGdldHMpXFxcXGJgLCAnZycpO1xuICAgICAgICBmb3JtV2lkZ2V0c1JlZ2V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuKC4qKS4oZm9ybVdpZGdldHN8ZmlsdGVyV2lkZ2V0cykpXFxcXGJgLCAnZycpO1xuICAgIH1cblxuICAgIGlmICghaXNBcnJheShyb290Tm9kZSkpIHtcbiAgICAgICAgLy8gW1dNUy0xNjcxMl0sW1dNUy0xNjc2OV0sW1dNUy0xNjgwNV0gVGhlIG1hcmt1cCBvZiByb290IG5vZGUodGFibGUsIGxpc3QsIGNhcm91c2VsKSBuZWVkIHRvIGJlIHVwZGF0ZWQgb25seSBmb3IgdGhlIHdpZGdldHMgbWVudGlvbmVkIGluIHdpZGdldExpc3QgbWFwLlxuICAgICAgICBub2RlcyA9IHdpZGdldExpc3RbKHJvb3ROb2RlIGFzIGFueSkubmFtZV0gPyBbcm9vdE5vZGUgYXMgRWxlbWVudF0gOiAoKHJvb3ROb2RlIGFzIGFueSkuY2hpbGRyZW4gfHwgW10pIGFzIEFycmF5PEVsZW1lbnQ+O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzID0gcm9vdE5vZGUgYXMgQXJyYXk8RWxlbWVudD47XG4gICAgfVxuXG4gICAgbm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChjaGlsZE5vZGUubmFtZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBjaGlsZE5vZGUubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudERhdGFTZXRMZW5ndGhSZWdleCA9ICBuZXcgUmVnRXhwKCdiaW5kOlxcXFxzKlxcXFwoKicgKyBwYXJlbnREYXRhU2V0ICsgJ1xcXFwpKlxcXFwubGVuZ3RoXFxcXCkqJyk7XG4gICAgICAgICAgICBjaGlsZE5vZGUuYXR0cnMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRyaW0gdGhlIGV4dHJhIHNwYWNlcyBpbiBiaW5kaW5nc1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGF0dHIudmFsdWUgJiYgYXR0ci52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodmFsdWUsICdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBtYXJrdXAgb2Ygcm9vdCBub2RlKHRhYmxlLCBsaXN0LCBjYXJvdXNlbCkgYXR0cmlidXRlcyBjb25hdGFpbnMgc2FtZSBkYXRhc2V0IHZhcmlhYmxlIGJpbmRpbmcgdGhlbiB0aG9zZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgdXBkYXRlZCBvbmx5IGZvciBzcGVjaWZpYyBwcm9wZXJ0aWVzIG1lbnRpb25lZCBpbiB3aWRnZXRMaXN0IG1hcC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aWRnZXRMaXN0W25vZGVOYW1lXSB8fCAod2lkZ2V0TGlzdFtub2RlTmFtZV0gJiYgd2lkZ2V0TGlzdFtub2RlTmFtZV0uaW5kZXhPZihhdHRyLm5hbWUpID4gLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgYXR0cmlidXRlIHZhbHVlIGlzIFwiYmluZDp4eHh4eC54eHh4XCIsIGVpdGhlciB0aGUgZGF0YVNldC9zY29wZURhdGFTZXQgaGFzIHRvIGNvbnRhaW4gXCJ4eHh4Lnh4eHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gW1dNUy0xNzkwOF06IGlmIGNoaWxkIHdpZGdldCBjb250YWlucyBiaW5kIGV4cHJlc3Npb24gYXMgcGFyZW5kYXRhc2V0Lmxlbmd0aCA+IDAgdGhlbiBkb250IHJlcGxhY2UgaXQgd2l0aCBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZXModmFsdWUsIHBhcmVudERhdGFTZXQpICYmIHZhbHVlICE9PSAnYmluZDonICsgcGFyZW50RGF0YVNldCAmJiAhcGFyZW50RGF0YVNldExlbmd0aFJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGREYXRhc2V0Qm91bmRFeHByQXR0cmlidXRlKGNoaWxkTm9kZSwgYXR0ciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZWdleCwgcmVmZXJlbmNlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnYmluZDonICsgdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaXMgdGhpcyBjdXN0b20gYmluZCBleHByZXNzaW9uIGFuZCBjdXJyZW50V2lkZ2V0SXRlbSByZWdleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbih2YWx1ZSkgJiYgY3VycmVudEl0ZW1SZWdFeCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgY3VycmVudEl0ZW0gYXMgbGFzdCBhcmd1bWVudCBmb3IgdGhlIGV4cHJlc3Npb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgY3VzdG9tIHBpcGVzKGV4cHJlc2lvbiksIGl0IHdpbGwgc2VuZCB0aGUgY3VycmVudEl0ZW0gYXMgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gICc6JysgY3VycmVudEl0ZW1SZWdFeC5leGVjKGN1cnJlbnRJdGVtUmVnRXguc291cmNlKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBpdGVtIGlmIHdpZGdldCBwcm9wZXJ0eSBpcyBib3VuZCB0byBsaXZlbGlzdCBjdXJyZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1SZWdFeCAmJiBjdXJyZW50SXRlbVJlZ0V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2UgdmFsdWUgZnJvbSAnYmluZDpXaWRnZXRzLmZvcm1OYW1lLmZvcm1XaWRnZXRzLmxpc3ROYW1lLmN1cnJlbnRJdGVtJyB0byAnYmluZDpXaWRnZXRzLmxpc3ROYW1lLmN1cnJlbnRJdGVtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcuZm9ybVdpZGdldHMnKSB8fCB2YWx1ZS5pbmNsdWRlcygnLmZpbHRlcldpZGdldHMnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShmb3JtV2lkZ2V0c1JlZ2V4LCAnV2lkZ2V0cycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZShjaGlsZE5vZGUsIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShjdXJyZW50SXRlbVJlZ0V4LCByZWZlcmVuY2VOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1XaWRnZXRzUmVnRXggJiYgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShjdXJyZW50SXRlbVdpZGdldHNSZWdFeCwgYCR7aW5zdGFuY2V9Y3VycmVudEl0ZW1XaWRnZXRzYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGVUZW1wbGF0ZUF0dHJzKGNoaWxkTm9kZS5jaGlsZHJlbiBhcyBBcnJheTxFbGVtZW50PiwgcGFyZW50RGF0YVNldCwgd2lkZ2V0TmFtZSwgaW5zdGFuY2UsIHJlZmVyZW5jZU5hbWUpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vLyBJZiBmb3JtQ29udHJvbE5hbWUgYXR0cmlidXRlIGlzIHByZXNlbnQsIGRvbnQgYWRkIHRoZSBuZ01vZGVsXG5leHBvcnQgY29uc3QgZ2V0TmdNb2RlbEF0dHIgPSBhdHRycyA9PiB7XG4gICAgaWYgKGF0dHJzLmhhcygnZm9ybUNvbnRyb2xOYW1lJykgfHwgYXR0cnMuaGFzKCdmb3JtQ29udHJvbE5hbWUuYmluZCcpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuICduZ01vZGVsJztcbn07XG5cbmNvbnN0IHJvd0FjdGlvbkF0dHJzID0gbmV3IE1hcChcbiAgICBbXG4gICAgICAgIFsnZGlzcGxheS1uYW1lJywgJ2NhcHRpb24nXSxcbiAgICAgICAgWydkaXNwbGF5LW5hbWUuYmluZCcsICdjYXB0aW9uLmJpbmQnXSxcbiAgICAgICAgWyd0aXRsZScsICdoaW50J10sXG4gICAgICAgIFsndGl0bGUuYmluZCcsICdoaW50LmJpbmQnXSxcbiAgICAgICAgWydzaG93JywgJ3Nob3cnXSxcbiAgICAgICAgWydzaG93LmJpbmQnLCAnc2hvdy5iaW5kJ10sXG4gICAgICAgIFsnZGlzYWJsZWQnLCAnZGlzYWJsZWQnXSxcbiAgICAgICAgWydkaXNhYmxlZC5iaW5kJywgJ2Rpc2FibGVkLmJpbmQnXSxcbiAgICAgICAgWydoeXBlcmxpbmsnLCAnaHlwZXJsaW5rJ10sXG4gICAgICAgIFsnaHlwZXJsaW5rLmJpbmQnLCAnaHlwZXJsaW5rLmJpbmQnXSxcbiAgICAgICAgWyd0YXJnZXQnLCAndGFyZ2V0J10sXG4gICAgICAgIFsnY29uZGl0aW9uYWxjbGFzcy5iaW5kJywgJ2NvbmRpdGlvbmFsY2xhc3MuYmluZCddLFxuICAgICAgICBbJ2NvbmRpdGlvbmFsc3R5bGUuYmluZCcsICdjb25kaXRpb25hbHN0eWxlLmJpbmQnXVxuICAgIF1cbik7XG5cbmV4cG9ydCBjb25zdCBnZXRSb3dBY3Rpb25BdHRycyA9IGF0dHJzID0+IHtcbiAgICBsZXQgdG1wbCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0F0dHIgPSByb3dBY3Rpb25BdHRycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKG5ld0F0dHIpIHtcbiAgICAgICAgICAgIHRtcGwgKz0gYCR7bmV3QXR0cn09XCIke3ZhbH1cIiBgO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuIl19
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9idWlsZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV4RCxrREFBa0Q7QUFDbEQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFRLEVBQUUsU0FBVSxFQUFFLEVBQUU7SUFDdkQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDeEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTSxTQUFTLCtCQUErQixTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7UUFDOUgsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFFLEtBQTJCLEVBQUUsVUFBZSxFQUFF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YXIvY29tcGlsZXInO1xuaW1wb3J0IHtGb3JtV2lkZ2V0VHlwZX0gZnJvbSAnLi4vZW51bXMvZW51bXMnO1xuaW1wb3J0IHtpbmNsdWRlcywgaXNBcnJheSwgc3RhcnRzV2l0aH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG4vLyBGb3IgaHRtbCB1cGxvYWQgd2lkZ2V0LCBhZGQgZXZlbnRzIG9uIGlucHV0IHRhZ1xuY29uc3QgZ2V0VXBsb2FkRXZlbnRUbXBsID0gKGF0dHJzLCBjb3VudGVyPywgZmllbGROYW1lPykgPT4ge1xuICAgIGxldCBldmVudFRtcGwgPSAnJztcbiAgICBhdHRycy5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgIGlmIChrZXkgJiYga2V5LmVuZHNXaXRoKCcuZXZlbnQnKSkge1xuICAgICAgICAgICBjb25zdCBldmVudE5hbWUgPSBrZXkuc3BsaXQoJy4nKVswXTtcbiAgICAgICAgICAgY29uc3QgY291bnRlclRsID0gY291bnRlciA/IGAke2NvdW50ZXJ9LmAgOiAnJztcbiAgICAgICAgICAgZXZlbnRUbXBsID0gYCAke2V2ZW50VG1wbH0gKCR7ZXZlbnROYW1lfSk9XCIke2NvdW50ZXJUbH10cmlnZ2VyVXBsb2FkRXZlbnQoJGV2ZW50LCAnJHtldmVudE5hbWV9JywgJyR7ZmllbGROYW1lfScsIHJvdylcIiBgO1xuICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZXZlbnRUbXBsO1xufTtcblxuLy8gTWV0aG9kIHRvIGdldCB0aGUgZm9ybSB3aWRnZXQgdGVtcGxhdGVcbmV4cG9ydCBjb25zdCBnZXRGb3JtV2lkZ2V0VGVtcGxhdGUgPSAod2lkZ2V0VHlwZTogc3RyaW5nLCBpbm5lclRtcGw6IHN0cmluZywgYXR0cnM/OiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBvcHRpb25zOiBhbnkgPSB7fSkgPT4ge1xuICAgIGxldCB0bXBsO1xuICAgIGNvbnN0IHVwZGF0ZU9uID0gYXR0cnMuZ2V0KCd1cGRhdGVvbicpO1xuICAgIGNvbnN0IHVwZGF0ZU9uVG1wbCA9IHVwZGF0ZU9uID8gYHVwZGF0ZW9uPVwiJHt1cGRhdGVPbn1cImAgOiAnJztcbiAgICBjb25zdCBzaG93aW5lZGl0bW9kZSA9IGF0dHJzLmdldCgnc2hvd2luZWRpdG1vZGUnKSB8fCBhdHRycy5nZXQoJ3Nob3dpbmVkaXRtb2RlLmJpbmQnKSB8fCB0cnVlO1xuICAgIGNvbnN0IHNob3dUbXBsOiBzdHJpbmcgID0gc2hvd2luZWRpdG1vZGUgPT0gJ2ZhbHNlJz8gYHNob3c9XCIke3Nob3dpbmVkaXRtb2RlfVwiYDogYHNob3cuYmluZD1cIiR7c2hvd2luZWRpdG1vZGV9XCJgO1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21TZWFyY2ggdHlwZT1cImF1dG9jb21wbGV0ZVwiIGRlYm91bmNldGltZT1cIiR7YXR0cnMuZ2V0KCdkZWJvdW5jZXRpbWUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNIRUNLQk9YOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ2hlY2tib3ggJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWFNFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHJvbGU9XCJncm91cFwiIHdtQ2hlY2tib3hzZXQgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7c2hvd1RtcGx9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNISVBTOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgd21DaGlwcyBkZWJvdW5jZXRpbWU9XCIke2F0dHJzLmdldCgnZGVib3VuY2V0aW1lJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNPTE9SUElDS0VSOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ29sb3JQaWNrZXIgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DVVJSRU5DWTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUN1cnJlbmN5ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7dXBkYXRlT25UbXBsfSAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURVRJTUU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bU51bWJlciAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJykgPT09ICd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwibnVtYmVyXCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5QQVNTV09SRDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKSA9PT0gJ3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJwYXNzd29yZFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQURJT1NFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHJvbGU9XCJyYWRpb2dyb3VwXCIgd21SYWRpb3NldCAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC91bD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFUSU5HOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtUmF0aW5nICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUklDSFRFWFQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21SaWNoVGV4dEVkaXRvciByb2xlPVwidGV4dGJveFwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0VMRUNUOlxuICAgICAgICAgICAgdG1wbCA9IGA8d20tc2VsZWN0ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L3dtLXNlbGVjdD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVE9HR0xFOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ2hlY2tib3ggJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpID09PSAndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInRvZ2dsZVwiICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TTElERVI6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21TbGlkZXIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TV0lUQ0g6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21Td2l0Y2ggJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5URVhUOlxuICAgICAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gb3B0aW9ucy5pbnB1dFR5cGUgfHwgJ2lucHV0dHlwZSc7XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1pbnB1dCAke2lubmVyVG1wbH0gICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCIke2F0dHJzLmdldChpbnB1dFR5cGUpIHx8ICd0ZXh0J31cIiAke3VwZGF0ZU9uVG1wbH0gJHtzaG93VG1wbH0+PC93bS1pbnB1dD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVEVYVEFSRUE6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS10ZXh0YXJlYSAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJykgPT09ICd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3VwZGF0ZU9uVG1wbH0gJHtzaG93VG1wbH0+PC93bS10ZXh0YXJlYT5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVRpbWUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FU1RBTVA6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKSA9PT0gJ3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVVBMT0FEOlxuICAgICAgICAgICAgY29uc3QgY291bnRlciA9IG9wdGlvbnMuY291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHBDb3VudGVyID0gb3B0aW9ucy5wQ291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFByb3BzID0gb3B0aW9ucy51cGxvYWRQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VG1wbCA9IGdldFVwbG9hZEV2ZW50VG1wbChhdHRycywgY291bnRlciwgdXBsb2FkUHJvcHMgJiYgdXBsb2FkUHJvcHMubmFtZSk7XG4gICAgICAgICAgICBpZiAodXBsb2FkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxmb3JtIG5hbWU9XCIke3VwbG9hZFByb3BzLmZvcm1OYW1lfVwiICR7aW5uZXJUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9jdXMtdGFyZ2V0IGNsYXNzPVwiZmlsZS11cGxvYWRcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCIke3VwbG9hZFByb3BzLm5hbWV9XCIgJHtldmVudFRtcGx9ICR7c2hvd1RtcGx9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxhIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiIGhyZWY9XCJ7eyR7Y291bnRlcn0uaHJlZn19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCIke2NvdW50ZXJ9LmZpbGV0eXBlID09PSAnaW1hZ2UnICYmICR7Y291bnRlcn0uaHJlZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT1cImhlaWdodDoyZW1cIiBjbGFzcz1cIndpIHdpLWZpbGVcIiBbc3JjXT1cIiR7Y291bnRlcn0uaHJlZlwiLz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3ske2NvdW50ZXJ9LmhyZWZ9fVwiICpuZ0lmPVwiJHtjb3VudGVyfS5maWxldHlwZSAhPT0gJ2ltYWdlJyAmJiAke2NvdW50ZXJ9LmhyZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwid2kgd2ktZmlsZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgJHtpbm5lclRtcGx9IGNsYXNzPVwiYXBwLWJsb2ItdXBsb2FkXCIgW25nQ2xhc3NdPVwieydmaWxlLXJlYWRvbmx5JzogJHtjb3VudGVyfS5yZWFkb25seX1cIiAke2V2ZW50VG1wbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIke2NvdW50ZXJ9LnJlcXVpcmVkXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiJHthdHRycy5nZXQoJ2tleScpIHx8IGF0dHJzLmdldCgnbmFtZScpfV9mb3JtV2lkZ2V0XCIgW3JlYWRvbmx5XT1cIiR7Y291bnRlcn0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCIhJHtwQ291bnRlcn0uaXNVcGRhdGVNb2RlXCIgW2FjY2VwdF09XCIke2NvdW50ZXJ9LnBlcm1pdHRlZFwiICR7c2hvd1RtcGx9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwidGV4dFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVxdWlyZWRGb3JtV2lkZ2V0ID0gKHdpZGdldFR5cGUpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXNlYXJjaCc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hJUFM6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWNoaXBzJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DT0xPUlBJQ0tFUjpcbiAgICAgICAgICAgIHJldHVybiAnd20tY29sb3JwaWNrZXInO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNVUlJFTkNZOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jdXJyZW5jeSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURTpcbiAgICAgICAgICAgIHJldHVybiAnd20tZGF0ZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURVRJTUU6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWRhdGV0aW1lJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FOlxuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUVTVEFNUDpcbiAgICAgICAgICAgIHJldHVybiAnd20tdGltZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFUSU5HOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1yYXRpbmcnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJJQ0hURVhUOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1yaWNodGV4dGVkaXRvcic7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0xJREVSOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1zbGlkZXInO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICd3bS10ZXh0JztcbiAgICB9XG59O1xuXG4vLyBUaGlzIG1laHRvZCBpcyB1c2VkIHRvIGFkZCBkYXRhc2V0Ym91bmRleHByIGF0dHJpYnV0ZSBmb3Igbm9kZVxuY29uc3QgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZSA9IChjaGlsZE5vZGU6IEVsZW1lbnQsIGF0dHI6IEF0dHJpYnV0ZSwgYXR0clZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBhdHRyVmFsdWUgPSBhdHRyVmFsdWUucmVwbGFjZSgnYmluZDonLCAnJyk7XG4gICAgY29uc3QgZGF0YXNldEJvdW5kQXR0cmlidXRlID0gY2hpbGROb2RlLmF0dHJzLmZpbmQoIGEgPT4gYS5uYW1lID09PSAnZGF0YXNldGJvdW5kZXhwcicpO1xuICAgIGlmIChhdHRyLm5hbWUgPT09ICdkYXRhc2V0JyAmJiAhZGF0YXNldEJvdW5kQXR0cmlidXRlKSB7XG4gICAgICAgIGNoaWxkTm9kZS5hdHRycy5wdXNoKG5ldyBBdHRyaWJ1dGUoJ2RhdGFzZXRib3VuZGV4cHInLCBhdHRyVmFsdWUsIGF0dHIuc291cmNlU3BhbiwgYXR0ci5rZXlTcGFuLCBhdHRyLnZhbHVlU3BhbiwgdW5kZWZpbmVkLCB1bmRlZmluZWQpKTtcbiAgICB9XG59O1xuXG5cbi8qKlxuICogZXhwOiBVc2VyIGJ1aWx0IGJpbmQgZXhwcmVzc2lvblxuICogIFRvIGNoZWNrIHRoZSBjdXN0b20gcGlwZSBleHByZXNzaW9ucy5cbiAqICBJZiB1c2VyIHVzZSB0aGUgY3VzdG9tIHBpcGUgZXhwcmVzc2lvbiBpdCB3aWxsIGNoZWNrIGluIHRoZSBleHAuIHRoYXQgXCJjdXN0b21cIiBzdHJpbmcgZXhpc3Qgb3Igbm90IHdpdGggKDopIHN5bnRheC5cbiAqICBFZzogY3VzdG9tOlxuICogICAgICBjdXN0b20gICAgOlxuICovXG5leHBvcnQgY29uc3QgY2hlY2tJc0N1c3RvbVBpcGVFeHByZXNzaW9uID0gZnVuY3Rpb24oZXhwKXtcbiAgICBsZXQgY3VzdG9tUmVnRXggPSAvKGN1c3RvbShcXHMqOikpL2c7XG4gICAgbGV0IG1hdGNoZXMgPSBleHAubWF0Y2goY3VzdG9tUmVnRXgpO1xuICAgIHJldHVybiBtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoO1xufVxuXG5cbi8vIFRoZSBib3VuZCB2YWx1ZSBpcyByZXBsYWNlZCB3aXRoIHt7aXRlbS5maWVsZG5hbWV9fSBoZXJlLiBUaGlzIGlzIG5lZWRlZCBieSB0aGUgbGl2ZUxpc3Qgd2hlbiBjb21waWxpbmcgaW5uZXIgZWxlbWVudHNcbmV4cG9ydCBjb25zdCB1cGRhdGVUZW1wbGF0ZUF0dHJzID0gKHJvb3ROb2RlOiBFbGVtZW50IHwgQXJyYXk8RWxlbWVudD4sIHBhcmVudERhdGFTZXQ6IHN0cmluZywgd2lkZ2V0TmFtZTogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nID0gJycsIHJlZmVyZW5jZU5hbWU6IHN0cmluZyA9ICdpdGVtJykgPT4ge1xuXG4gICAgY29uc3Qgc2FuaXRpemVkUGFyZW50RGF0YXNldCA9IHBhcmVudERhdGFTZXQucmVwbGFjZSgvKFteYS16QS1aMC05Ll0pL2csICdcXFxcJDEnKTtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJygnICsgc2FuaXRpemVkUGFyZW50RGF0YXNldCArICcpKFxcXFxbMFxcXFxdKT8oLmRhdGFcXFxcW1xcXFwkaVxcXFxdKT8oLmNvbnRlbnRcXFxcW1xcXFwkaVxcXFxdKT8oXFxcXFtcXFxcJGlcXFxcXSk/JywgJ2cnKTtcbiAgICBsZXQgY3VycmVudEl0ZW1SZWdFeDtcbiAgICBsZXQgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXg7XG4gICAgbGV0IGZvcm1XaWRnZXRzUmVnZXg7XG4gICAgbGV0IG5vZGVzOiBBcnJheTxFbGVtZW50PjtcbiAgICBjb25zdCB3aWRnZXRMaXN0ID0ge1xuICAgICAgICAnd20tbGlzdCc6IFsnaXRlbWNsYXNzJywgJ2Rpc2FibGVpdGVtJywgJ2RhdGFzZXQnXVxuICAgIH07XG5cbiAgICBpZiAod2lkZ2V0TmFtZSkge1xuICAgICAgICBjdXJyZW50SXRlbVJlZ0V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuJHt3aWRnZXROYW1lfS5jdXJyZW50SXRlbSlcXFxcYmAsICdnJyk7XG4gICAgICAgIGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuJHt3aWRnZXROYW1lfS5jdXJyZW50SXRlbVdpZGdldHMpXFxcXGJgLCAnZycpO1xuICAgICAgICBmb3JtV2lkZ2V0c1JlZ2V4ID0gbmV3IFJlZ0V4cChgKFdpZGdldHMuKC4qKS4oZm9ybVdpZGdldHN8ZmlsdGVyV2lkZ2V0cykpXFxcXGJgLCAnZycpO1xuICAgIH1cblxuICAgIGlmICghaXNBcnJheShyb290Tm9kZSkpIHtcbiAgICAgICAgLy8gW1dNUy0xNjcxMl0sW1dNUy0xNjc2OV0sW1dNUy0xNjgwNV0gVGhlIG1hcmt1cCBvZiByb290IG5vZGUodGFibGUsIGxpc3QsIGNhcm91c2VsKSBuZWVkIHRvIGJlIHVwZGF0ZWQgb25seSBmb3IgdGhlIHdpZGdldHMgbWVudGlvbmVkIGluIHdpZGdldExpc3QgbWFwLlxuICAgICAgICBub2RlcyA9IHdpZGdldExpc3RbKHJvb3ROb2RlIGFzIGFueSkubmFtZV0gPyBbcm9vdE5vZGUgYXMgRWxlbWVudF0gOiAoKHJvb3ROb2RlIGFzIGFueSkuY2hpbGRyZW4gfHwgW10pIGFzIEFycmF5PEVsZW1lbnQ+O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGVzID0gcm9vdE5vZGUgYXMgQXJyYXk8RWxlbWVudD47XG4gICAgfVxuXG4gICAgbm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChjaGlsZE5vZGUubmFtZSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU5hbWUgPSBjaGlsZE5vZGUubmFtZTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudERhdGFTZXRMZW5ndGhSZWdleCA9ICBuZXcgUmVnRXhwKCdiaW5kOlxcXFxzKlxcXFwoKicgKyBwYXJlbnREYXRhU2V0ICsgJ1xcXFwpKlxcXFwubGVuZ3RoXFxcXCkqJyk7XG4gICAgICAgICAgICBjaGlsZE5vZGUuYXR0cnMuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHRyaW0gdGhlIGV4dHJhIHNwYWNlcyBpbiBiaW5kaW5nc1xuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGF0dHIudmFsdWUgJiYgYXR0ci52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodmFsdWUsICdiaW5kOicpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBtYXJrdXAgb2Ygcm9vdCBub2RlKHRhYmxlLCBsaXN0LCBjYXJvdXNlbCkgYXR0cmlidXRlcyBjb25hdGFpbnMgc2FtZSBkYXRhc2V0IHZhcmlhYmxlIGJpbmRpbmcgdGhlbiB0aG9zZSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgdXBkYXRlZCBvbmx5IGZvciBzcGVjaWZpYyBwcm9wZXJ0aWVzIG1lbnRpb25lZCBpbiB3aWRnZXRMaXN0IG1hcC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aWRnZXRMaXN0W25vZGVOYW1lXSB8fCAod2lkZ2V0TGlzdFtub2RlTmFtZV0gJiYgd2lkZ2V0TGlzdFtub2RlTmFtZV0uaW5kZXhPZihhdHRyLm5hbWUpID4gLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgYXR0cmlidXRlIHZhbHVlIGlzIFwiYmluZDp4eHh4eC54eHh4XCIsIGVpdGhlciB0aGUgZGF0YVNldC9zY29wZURhdGFTZXQgaGFzIHRvIGNvbnRhaW4gXCJ4eHh4Lnh4eHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gW1dNUy0xNzkwOF06IGlmIGNoaWxkIHdpZGdldCBjb250YWlucyBiaW5kIGV4cHJlc3Npb24gYXMgcGFyZW5kYXRhc2V0Lmxlbmd0aCA+IDAgdGhlbiBkb250IHJlcGxhY2UgaXQgd2l0aCBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5jbHVkZXModmFsdWUsIHBhcmVudERhdGFTZXQpICYmIHZhbHVlICE9PSAnYmluZDonICsgcGFyZW50RGF0YVNldCAmJiAhcGFyZW50RGF0YVNldExlbmd0aFJlZ2V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGREYXRhc2V0Qm91bmRFeHByQXR0cmlidXRlKGNoaWxkTm9kZSwgYXR0ciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZWdleCwgcmVmZXJlbmNlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAnYmluZDonICsgdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaXMgdGhpcyBjdXN0b20gYmluZCBleHByZXNzaW9uIGFuZCBjdXJyZW50V2lkZ2V0SXRlbSByZWdleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbih2YWx1ZSkgJiYgY3VycmVudEl0ZW1SZWdFeCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZGluZyB0aGUgY3VycmVudEl0ZW0gYXMgbGFzdCBhcmd1bWVudCBmb3IgdGhlIGV4cHJlc3Npb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgY3VzdG9tIHBpcGVzKGV4cHJlc2lvbiksIGl0IHdpbGwgc2VuZCB0aGUgY3VycmVudEl0ZW0gYXMgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gICc6JysgY3VycmVudEl0ZW1SZWdFeC5leGVjKGN1cnJlbnRJdGVtUmVnRXguc291cmNlKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBpdGVtIGlmIHdpZGdldCBwcm9wZXJ0eSBpcyBib3VuZCB0byBsaXZlbGlzdCBjdXJyZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1SZWdFeCAmJiBjdXJyZW50SXRlbVJlZ0V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2UgdmFsdWUgZnJvbSAnYmluZDpXaWRnZXRzLmZvcm1OYW1lLmZvcm1XaWRnZXRzLmxpc3ROYW1lLmN1cnJlbnRJdGVtJyB0byAnYmluZDpXaWRnZXRzLmxpc3ROYW1lLmN1cnJlbnRJdGVtJ1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcuZm9ybVdpZGdldHMnKSB8fCB2YWx1ZS5pbmNsdWRlcygnLmZpbHRlcldpZGdldHMnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShmb3JtV2lkZ2V0c1JlZ2V4LCAnV2lkZ2V0cycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZShjaGlsZE5vZGUsIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShjdXJyZW50SXRlbVJlZ0V4LCByZWZlcmVuY2VOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEl0ZW1XaWRnZXRzUmVnRXggJiYgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShjdXJyZW50SXRlbVdpZGdldHNSZWdFeCwgYCR7aW5zdGFuY2V9Y3VycmVudEl0ZW1XaWRnZXRzYCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGVUZW1wbGF0ZUF0dHJzKGNoaWxkTm9kZS5jaGlsZHJlbiBhcyBBcnJheTxFbGVtZW50PiwgcGFyZW50RGF0YVNldCwgd2lkZ2V0TmFtZSwgaW5zdGFuY2UsIHJlZmVyZW5jZU5hbWUpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vLyBJZiBmb3JtQ29udHJvbE5hbWUgYXR0cmlidXRlIGlzIHByZXNlbnQsIGRvbnQgYWRkIHRoZSBuZ01vZGVsXG5leHBvcnQgY29uc3QgZ2V0TmdNb2RlbEF0dHIgPSBhdHRycyA9PiB7XG4gICAgaWYgKGF0dHJzLmhhcygnZm9ybUNvbnRyb2xOYW1lJykgfHwgYXR0cnMuaGFzKCdmb3JtQ29udHJvbE5hbWUuYmluZCcpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuICduZ01vZGVsJztcbn07XG5cbmNvbnN0IHJvd0FjdGlvbkF0dHJzID0gbmV3IE1hcChcbiAgICBbXG4gICAgICAgIFsnZGlzcGxheS1uYW1lJywgJ2NhcHRpb24nXSxcbiAgICAgICAgWydkaXNwbGF5LW5hbWUuYmluZCcsICdjYXB0aW9uLmJpbmQnXSxcbiAgICAgICAgWyd0aXRsZScsICdoaW50J10sXG4gICAgICAgIFsndGl0bGUuYmluZCcsICdoaW50LmJpbmQnXSxcbiAgICAgICAgWydzaG93JywgJ3Nob3cnXSxcbiAgICAgICAgWydzaG93LmJpbmQnLCAnc2hvdy5iaW5kJ10sXG4gICAgICAgIFsnZGlzYWJsZWQnLCAnZGlzYWJsZWQnXSxcbiAgICAgICAgWydkaXNhYmxlZC5iaW5kJywgJ2Rpc2FibGVkLmJpbmQnXSxcbiAgICAgICAgWydoeXBlcmxpbmsnLCAnaHlwZXJsaW5rJ10sXG4gICAgICAgIFsnaHlwZXJsaW5rLmJpbmQnLCAnaHlwZXJsaW5rLmJpbmQnXSxcbiAgICAgICAgWyd0YXJnZXQnLCAndGFyZ2V0J10sXG4gICAgICAgIFsnY29uZGl0aW9uYWxjbGFzcy5iaW5kJywgJ2NvbmRpdGlvbmFsY2xhc3MuYmluZCddLFxuICAgICAgICBbJ2NvbmRpdGlvbmFsc3R5bGUuYmluZCcsICdjb25kaXRpb25hbHN0eWxlLmJpbmQnXVxuICAgIF1cbik7XG5cbmV4cG9ydCBjb25zdCBnZXRSb3dBY3Rpb25BdHRycyA9IGF0dHJzID0+IHtcbiAgICBsZXQgdG1wbCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0F0dHIgPSByb3dBY3Rpb25BdHRycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKG5ld0F0dHIpIHtcbiAgICAgICAgICAgIHRtcGwgKz0gYCR7bmV3QXR0cn09XCIke3ZhbH1cIiBgO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuIl19
|