@fundamental-ngx/core 0.44.1-rc.3 → 0.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/action-sheet/action-sheet.module.d.ts +5 -6
- package/action-sheet/index.d.ts +0 -1
- package/avatar/avatar.component.d.ts +1 -6
- package/bar/bar.module.d.ts +4 -6
- package/bar/directives/bar-element.directive.d.ts +1 -6
- package/bar/index.d.ts +0 -2
- package/breadcrumb/breadcrumb.component.d.ts +1 -9
- package/breadcrumb/breadcrumb.module.d.ts +12 -13
- package/breadcrumb/index.d.ts +0 -1
- package/button/button.module.d.ts +4 -5
- package/button/index.d.ts +0 -1
- package/calendar/calendar.module.d.ts +5 -6
- package/calendar/index.d.ts +0 -1
- package/card/card.module.d.ts +6 -7
- package/card/index.d.ts +0 -1
- package/carousel/carousel.component.d.ts +1 -13
- package/checkbox/checkbox.module.d.ts +4 -5
- package/checkbox/index.d.ts +0 -1
- package/combobox/combobox.module.d.ts +12 -13
- package/combobox/index.d.ts +0 -1
- package/content-density/index.d.ts +0 -4
- package/date-picker/date-picker.component.d.ts +1 -62
- package/date-picker/date-picker.module.d.ts +12 -13
- package/date-picker/index.d.ts +0 -1
- package/datetime-picker/datetime-picker.component.d.ts +1 -49
- package/datetime-picker/datetime-picker.module.d.ts +14 -15
- package/datetime-picker/index.d.ts +0 -1
- package/dialog/dialog.module.d.ts +14 -16
- package/dialog/index.d.ts +0 -2
- package/dialog/utils/dialog-config.class.d.ts +0 -2
- package/dynamic-page/dynamic-page.module.d.ts +10 -11
- package/dynamic-page/index.d.ts +0 -1
- package/esm2022/action-sheet/action-sheet.module.mjs +3 -8
- package/esm2022/action-sheet/index.mjs +1 -2
- package/esm2022/avatar/avatar.component.mjs +3 -13
- package/esm2022/bar/bar.module.mjs +3 -13
- package/esm2022/bar/directives/bar-element.directive.mjs +3 -16
- package/esm2022/bar/index.mjs +1 -3
- package/esm2022/breadcrumb/breadcrumb.component.mjs +5 -19
- package/esm2022/breadcrumb/breadcrumb.module.mjs +6 -18
- package/esm2022/breadcrumb/index.mjs +1 -2
- package/esm2022/button/button.module.mjs +4 -5
- package/esm2022/button/index.mjs +1 -2
- package/esm2022/calendar/calendar.module.mjs +3 -8
- package/esm2022/calendar/index.mjs +1 -2
- package/esm2022/card/card.module.mjs +4 -8
- package/esm2022/card/index.mjs +1 -2
- package/esm2022/carousel/carousel.component.mjs +4 -30
- package/esm2022/checkbox/checkbox.module.mjs +4 -5
- package/esm2022/checkbox/index.mjs +1 -2
- package/esm2022/combobox/combobox-mobile/combobox-mobile.component.mjs +1 -1
- package/esm2022/combobox/combobox.component.mjs +1 -1
- package/esm2022/combobox/combobox.module.mjs +6 -8
- package/esm2022/combobox/index.mjs +1 -2
- package/esm2022/content-density/index.mjs +1 -5
- package/esm2022/date-picker/date-picker.component.mjs +4 -104
- package/esm2022/date-picker/date-picker.module.mjs +5 -6
- package/esm2022/date-picker/index.mjs +1 -2
- package/esm2022/datetime-picker/datetime-picker.component.mjs +4 -83
- package/esm2022/datetime-picker/datetime-picker.module.mjs +5 -6
- package/esm2022/datetime-picker/index.mjs +1 -2
- package/esm2022/dialog/dialog-default/dialog-default.component.mjs +1 -1
- package/esm2022/dialog/dialog-header/dialog-header.component.mjs +1 -1
- package/esm2022/dialog/dialog.component.mjs +3 -3
- package/esm2022/dialog/dialog.module.mjs +1 -9
- package/esm2022/dialog/index.mjs +1 -3
- package/esm2022/dialog/utils/dialog-config.class.mjs +1 -1
- package/esm2022/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.mjs +1 -1
- package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +1 -1
- package/esm2022/dynamic-page/dynamic-page.module.mjs +3 -8
- package/esm2022/dynamic-page/index.mjs +1 -2
- package/esm2022/facets/facet/facet.component.mjs +1 -1
- package/esm2022/feed-list-item/components/item/feed-list-item.component.mjs +14 -40
- package/esm2022/file-uploader/file-uploader.module.mjs +4 -23
- package/esm2022/file-uploader/index.mjs +1 -2
- package/esm2022/form/form-control/form-control.module.mjs +4 -23
- package/esm2022/form/form-label/form-label.component.mjs +3 -40
- package/esm2022/form/form-message/form-message.component.mjs +1 -1
- package/esm2022/form/form-message/popover-form-message.service.mjs +1 -1
- package/esm2022/form/index.mjs +1 -2
- package/esm2022/fundamental-ngx.module.mjs +1 -5
- package/esm2022/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.mjs +1 -1
- package/esm2022/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.mjs +1 -1
- package/esm2022/index.mjs +1 -2
- package/esm2022/inline-help/inline-help.directive.mjs +3 -18
- package/esm2022/input-group/index.mjs +1 -2
- package/esm2022/input-group/input-group.component.mjs +6 -28
- package/esm2022/input-group/input-group.module.mjs +1 -6
- package/esm2022/link/link.component.mjs +5 -8
- package/esm2022/list/index.mjs +1 -2
- package/esm2022/list/list-item/list-item.component.mjs +3 -46
- package/esm2022/list/list-message.directive.mjs +1 -1
- package/esm2022/list/list.module.mjs +3 -8
- package/esm2022/menu/index.mjs +1 -2
- package/esm2022/menu/menu-mobile/menu-mobile.component.mjs +1 -1
- package/esm2022/menu/menu.module.mjs +3 -8
- package/esm2022/message-box/index.mjs +1 -3
- package/esm2022/message-box/message-box-default/message-box-default.component.mjs +1 -1
- package/esm2022/message-box/message-box-header/message-box-header.component.mjs +1 -1
- package/esm2022/message-box/message-box.module.mjs +3 -11
- package/esm2022/message-strip/alert/message-strip-alert/message-strip-alert.component.mjs +3 -3
- package/esm2022/message-strip/alert/message-strip-alert.service.mjs +8 -2
- package/esm2022/message-strip/message-strip.component.mjs +3 -16
- package/esm2022/micro-process-flow/index.mjs +1 -2
- package/esm2022/micro-process-flow/micro-process-flow.module.mjs +5 -10
- package/esm2022/multi-combobox/mobile/mobile-multi-combobox.component.mjs +1 -1
- package/esm2022/multi-combobox/multi-combobox.component.mjs +1 -1
- package/esm2022/multi-combobox/select-all-toggler/select-all-toggler.component.mjs +1 -1
- package/esm2022/multi-input/index.mjs +1 -2
- package/esm2022/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +1 -1
- package/esm2022/multi-input/multi-input.component.mjs +1 -1
- package/esm2022/multi-input/multi-input.module.mjs +6 -8
- package/esm2022/nested-list/index.mjs +1 -2
- package/esm2022/nested-list/nested-list.module.mjs +3 -8
- package/esm2022/object-number/object-number.component.mjs +3 -3
- package/esm2022/overflow-layout/overflow-layout.component.mjs +3 -3
- package/esm2022/pagination/index.mjs +1 -2
- package/esm2022/pagination/pagination.component.mjs +8 -186
- package/esm2022/pagination/pagination.module.mjs +6 -7
- package/esm2022/panel/index.mjs +1 -2
- package/esm2022/panel/panel.module.mjs +4 -15
- package/esm2022/popover/base/base-popover.class.mjs +2 -33
- package/esm2022/popover/popover.component.mjs +1 -19
- package/esm2022/product-switch/product-switch/product-switch.component.mjs +4 -17
- package/esm2022/product-switch/product-switch-body/product-switch-body.component.mjs +1 -1
- package/esm2022/product-switch/product-switch-body/product-switch.item.mjs +1 -1
- package/esm2022/quick-view/quick-view-group-item-label/quick-view-group-item-label.component.mjs +1 -1
- package/esm2022/quick-view/quick-view-title/quick-view-title.component.mjs +1 -1
- package/esm2022/radio/index.mjs +1 -2
- package/esm2022/radio/radio.module.mjs +4 -5
- package/esm2022/rating-indicator/components/rating-indicator.component.mjs +3 -3
- package/esm2022/select/index.mjs +1 -2
- package/esm2022/select/select.component.mjs +1 -1
- package/esm2022/select/select.module.mjs +5 -6
- package/esm2022/shellbar/index.mjs +1 -2
- package/esm2022/shellbar/shellbar-actions/shellbar-actions.component.mjs +3 -17
- package/esm2022/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +3 -5
- package/esm2022/shellbar/shellbar.module.mjs +3 -8
- package/esm2022/shellbar/user-menu/shellbar-user-menu.component.mjs +1 -1
- package/esm2022/slider/index.mjs +1 -2
- package/esm2022/slider/slider.component.mjs +3 -49
- package/esm2022/slider/slider.module.mjs +4 -5
- package/esm2022/split-button/index.mjs +1 -2
- package/esm2022/split-button/split-button.component.mjs +3 -27
- package/esm2022/split-button/split-button.module.mjs +4 -5
- package/esm2022/splitter/splitter-pagination/splitter-pagination.component.mjs +3 -10
- package/esm2022/splitter/splitter.component.mjs +2 -16
- package/esm2022/step-input/index.mjs +1 -2
- package/esm2022/step-input/step-input.component.mjs +5 -31
- package/esm2022/step-input/step-input.module.mjs +5 -6
- package/esm2022/switch/index.mjs +1 -2
- package/esm2022/switch/switch.component.mjs +5 -43
- package/esm2022/switch/switch.module.mjs +4 -5
- package/esm2022/table/index.mjs +1 -3
- package/esm2022/table/table.module.mjs +3 -13
- package/esm2022/tabs/index.mjs +1 -2
- package/esm2022/tabs/tab-item-expand/tab-item-expand.component.mjs +8 -22
- package/esm2022/tabs/tab-list.component.mjs +5 -18
- package/esm2022/tabs/tabs.module.mjs +3 -8
- package/esm2022/text/text.component.mjs +3 -29
- package/esm2022/time/index.mjs +1 -3
- package/esm2022/time/time.component.mjs +8 -65
- package/esm2022/time/time.module.mjs +5 -6
- package/esm2022/time-picker/index.mjs +1 -2
- package/esm2022/time-picker/time-picker.component.mjs +1 -1
- package/esm2022/time-picker/time-picker.module.mjs +6 -22
- package/esm2022/timeline/components/timeline-node-body/timeline-node-body.component.mjs +1 -1
- package/esm2022/timeline/timeline.component.mjs +1 -1
- package/esm2022/token/index.mjs +1 -2
- package/esm2022/token/token.component.mjs +4 -30
- package/esm2022/token/token.module.mjs +5 -24
- package/esm2022/token/tokenizer.component.mjs +3 -3
- package/esm2022/toolbar/toolbar.component.mjs +8 -24
- package/esm2022/tree/tree.component.mjs +1 -1
- package/esm2022/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +9 -87
- package/esm2022/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +9 -21
- package/esm2022/upload-collection/upload-collection-item.directive.mjs +4 -3
- package/esm2022/upload-collection/upload-collection-simple.directives.mjs +22 -15
- package/esm2022/upload-collection/upload-collection.component.mjs +5 -4
- package/esm2022/upload-collection/upload-collection.module.mjs +7 -13
- package/esm2022/wizard/index.mjs +1 -2
- package/esm2022/wizard/wizard.module.mjs +3 -8
- package/feed-list-item/components/item/feed-list-item.component.d.ts +9 -25
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +5 -36
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -12
- package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-bar.mjs +7 -81
- package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +11 -63
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-button.mjs +6 -33
- package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +4 -35
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-card.mjs +6 -36
- package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +3 -29
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-checkbox.mjs +6 -33
- package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +9 -37
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-content-density.mjs +1 -148
- package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +10 -137
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +10 -116
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +6 -57
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +7 -38
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-facets.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +13 -39
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs +5 -50
- package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +7 -88
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +2 -17
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-input-group.mjs +8 -60
- package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +4 -7
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-list.mjs +6 -80
- package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +7 -38
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +7 -59
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +11 -19
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +7 -38
- package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +3 -3
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +9 -36
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +4 -34
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -219
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-panel.mjs +6 -43
- package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +2 -50
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +6 -18
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-radio.mjs +6 -33
- package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +7 -34
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +11 -57
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +8 -70
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +8 -59
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-splitter.mjs +4 -24
- package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +11 -64
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +9 -74
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-table.mjs +5 -65
- package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +14 -69
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -28
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs +9 -51
- package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +12 -143
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-timeline.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-timeline.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +11 -82
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +6 -22
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +46 -131
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +5 -36
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core.mjs +0 -5
- package/fesm2022/fundamental-ngx-core.mjs.map +1 -1
- package/file-uploader/file-uploader.module.d.ts +6 -7
- package/file-uploader/index.d.ts +0 -1
- package/form/form-control/form-control.module.d.ts +3 -4
- package/form/form-label/form-label.component.d.ts +1 -16
- package/form/form-message/form-message.component.d.ts +0 -2
- package/form/form-message/popover-form-message.service.d.ts +2 -2
- package/form/index.d.ts +0 -1
- package/fundamental-ngx-core-v0.45.0.tgz +0 -0
- package/fundamental-ngx.module.d.ts +89 -90
- package/index.d.ts +0 -1
- package/inline-help/inline-help.directive.d.ts +1 -7
- package/input-group/index.d.ts +0 -1
- package/input-group/input-group.component.d.ts +6 -13
- package/input-group/input-group.module.d.ts +6 -7
- package/link/link.component.d.ts +1 -1
- package/list/index.d.ts +0 -1
- package/list/list-item/list-item.component.d.ts +1 -25
- package/list/list-message.directive.d.ts +2 -2
- package/list/list.module.d.ts +5 -6
- package/menu/index.d.ts +0 -1
- package/menu/menu.module.d.ts +6 -7
- package/message-box/index.d.ts +0 -2
- package/message-box/message-box.module.d.ts +15 -17
- package/message-strip/message-strip.component.d.ts +1 -9
- package/micro-process-flow/index.d.ts +0 -1
- package/micro-process-flow/micro-process-flow.module.d.ts +4 -5
- package/multi-input/index.d.ts +0 -1
- package/multi-input/multi-input.module.d.ts +12 -13
- package/nested-list/index.d.ts +0 -1
- package/nested-list/nested-list.module.d.ts +6 -7
- package/package.json +3 -9
- package/pagination/index.d.ts +0 -1
- package/pagination/pagination.component.d.ts +2 -111
- package/pagination/pagination.module.d.ts +10 -11
- package/panel/index.d.ts +0 -1
- package/panel/panel.module.d.ts +4 -5
- package/popover/base/base-popover.class.d.ts +1 -16
- package/popover/popover.component.d.ts +0 -11
- package/product-switch/product-switch/product-switch.component.d.ts +1 -8
- package/product-switch/product-switch-body/product-switch.item.d.ts +0 -4
- package/radio/index.d.ts +0 -1
- package/radio/radio.module.d.ts +4 -5
- package/schematics/add-dependencies/index.js +4 -4
- package/select/index.d.ts +0 -1
- package/select/select.component.d.ts +0 -2
- package/select/select.module.d.ts +9 -10
- package/shellbar/index.d.ts +0 -1
- package/shellbar/shellbar-actions/shellbar-actions.component.d.ts +1 -9
- package/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.d.ts +3 -5
- package/shellbar/shellbar.module.d.ts +14 -15
- package/slider/index.d.ts +0 -1
- package/slider/slider.component.d.ts +1 -31
- package/slider/slider.module.d.ts +7 -8
- package/split-button/index.d.ts +0 -1
- package/split-button/split-button.component.d.ts +3 -12
- package/split-button/split-button.module.d.ts +6 -7
- package/splitter/splitter-pagination/splitter-pagination.component.d.ts +0 -5
- package/splitter/splitter.component.d.ts +1 -9
- package/step-input/index.d.ts +0 -1
- package/step-input/step-input.component.d.ts +1 -17
- package/step-input/step-input.module.d.ts +7 -8
- package/switch/index.d.ts +0 -1
- package/switch/switch.component.d.ts +1 -19
- package/switch/switch.module.d.ts +5 -6
- package/table/index.d.ts +0 -2
- package/table/table.module.d.ts +4 -6
- package/tabs/index.d.ts +0 -1
- package/tabs/tab-item-expand/tab-item-expand.component.d.ts +1 -8
- package/tabs/tab-list.component.d.ts +1 -9
- package/tabs/tabs.module.d.ts +12 -13
- package/text/text.component.d.ts +1 -17
- package/time/index.d.ts +0 -2
- package/time/time.component.d.ts +2 -15
- package/time/time.module.d.ts +9 -10
- package/time-picker/index.d.ts +0 -1
- package/time-picker/time-picker.module.d.ts +9 -10
- package/token/index.d.ts +0 -1
- package/token/token.component.d.ts +1 -17
- package/token/token.module.d.ts +8 -9
- package/toolbar/toolbar.component.d.ts +4 -12
- package/upload-collection/upload-collection-button-group/upload-collection-button-group.component.d.ts +2 -50
- package/upload-collection/upload-collection-form-item/upload-collection-form-item.component.d.ts +1 -9
- package/upload-collection/upload-collection-item.directive.d.ts +1 -1
- package/upload-collection/upload-collection-simple.directives.d.ts +7 -7
- package/upload-collection/upload-collection.component.d.ts +1 -1
- package/upload-collection/upload-collection.module.d.ts +1 -8
- package/wizard/index.d.ts +0 -1
- package/wizard/wizard.module.d.ts +8 -9
- package/action-sheet/deprecated-action-sheet-compact.directive.d.ts +0 -8
- package/alert/README.md +0 -25
- package/alert/alert-service/alert.service.d.ts +0 -41
- package/alert/alert-utils/alert-animations.d.ts +0 -8
- package/alert/alert-utils/alert-config.d.ts +0 -34
- package/alert/alert-utils/alert-container.component.d.ts +0 -14
- package/alert/alert-utils/alert-ref.d.ts +0 -26
- package/alert/alert.component.d.ts +0 -87
- package/alert/alert.module.d.ts +0 -18
- package/alert/index.d.ts +0 -7
- package/bar/deprecated-bar-button-content-density.directive.d.ts +0 -8
- package/bar/deprecated-bar-content-density.directive.d.ts +0 -8
- package/breadcrumb/deprecated-breadcrumbs-compact.directive.d.ts +0 -8
- package/button/deprecated-button-content-density.directive.d.ts +0 -8
- package/calendar/deprecated-calendar-content-density.directive.d.ts +0 -8
- package/card/deprecated-card-content-density.directive.d.ts +0 -8
- package/checkbox/deprecated-checkbox-content-density.directive.d.ts +0 -8
- package/combobox/deprecated-combobox-content-density.directive.d.ts +0 -10
- package/content-density/classes/deprecated-compact.directive.d.ts +0 -26
- package/content-density/classes/deprecated-condensed.directive.d.ts +0 -26
- package/content-density/classes/deprecated-content-density.directive.d.ts +0 -26
- package/content-density/classes/deprecated-cozy.directive.d.ts +0 -26
- package/date-picker/deprecated-date-picker-compact.directive.d.ts +0 -8
- package/datetime-picker/deprecated-date-time-picker-content-density.directive.d.ts +0 -8
- package/dialog/dialog-footer-button/dialog-footer-button.component.d.ts +0 -12
- package/dialog/directives/dialog-decisive-button.directive.d.ts +0 -11
- package/dynamic-page/deprecated-dynamic-page-compact.directive.d.ts +0 -8
- package/esm2022/action-sheet/deprecated-action-sheet-compact.directive.mjs +0 -30
- package/esm2022/alert/alert-service/alert.service.mjs +0 -85
- package/esm2022/alert/alert-utils/alert-animations.mjs +0 -38
- package/esm2022/alert/alert-utils/alert-config.mjs +0 -27
- package/esm2022/alert/alert-utils/alert-container.component.mjs +0 -29
- package/esm2022/alert/alert-utils/alert-ref.mjs +0 -29
- package/esm2022/alert/alert.component.mjs +0 -212
- package/esm2022/alert/alert.module.mjs +0 -33
- package/esm2022/alert/fundamental-ngx-core-alert.mjs +0 -5
- package/esm2022/alert/index.mjs +0 -8
- package/esm2022/bar/deprecated-bar-button-content-density.directive.mjs +0 -30
- package/esm2022/bar/deprecated-bar-content-density.directive.mjs +0 -29
- package/esm2022/breadcrumb/deprecated-breadcrumbs-compact.directive.mjs +0 -30
- package/esm2022/button/deprecated-button-content-density.directive.mjs +0 -30
- package/esm2022/calendar/deprecated-calendar-content-density.directive.mjs +0 -30
- package/esm2022/card/deprecated-card-content-density.directive.mjs +0 -30
- package/esm2022/checkbox/deprecated-checkbox-content-density.directive.mjs +0 -30
- package/esm2022/combobox/deprecated-combobox-content-density.directive.mjs +0 -31
- package/esm2022/content-density/classes/deprecated-compact.directive.mjs +0 -39
- package/esm2022/content-density/classes/deprecated-condensed.directive.mjs +0 -39
- package/esm2022/content-density/classes/deprecated-content-density.directive.mjs +0 -49
- package/esm2022/content-density/classes/deprecated-cozy.directive.mjs +0 -39
- package/esm2022/date-picker/deprecated-date-picker-compact.directive.mjs +0 -30
- package/esm2022/datetime-picker/deprecated-date-time-picker-content-density.directive.mjs +0 -30
- package/esm2022/dialog/dialog-footer-button/dialog-footer-button.component.mjs +0 -25
- package/esm2022/dialog/directives/dialog-decisive-button.directive.mjs +0 -26
- package/esm2022/dynamic-page/deprecated-dynamic-page-compact.directive.mjs +0 -30
- package/esm2022/file-uploader/deprecated-file-uploader-content-density.directive.mjs +0 -30
- package/esm2022/form/form-control/deprecated-form-control-content-density.directive.mjs +0 -29
- package/esm2022/input-group/deprecated-input-group-compact.directive.mjs +0 -30
- package/esm2022/list/deprecated-list-content-density,directive.mjs +0 -30
- package/esm2022/menu/directives/deprecated-menu-compact.directive.mjs +0 -30
- package/esm2022/message-box/directives/message-box-decisive-button.directive.mjs +0 -27
- package/esm2022/message-box/message-box-footer-button/message-box-footer-button.component.mjs +0 -25
- package/esm2022/micro-process-flow/components/micro-process-flow/deprecated-micro-process-flow-content-density.directive.mjs +0 -30
- package/esm2022/multi-input/deprecated-multi-input-compact.directive.mjs +0 -30
- package/esm2022/nested-list/deprecated-nested-list-compact.directive.mjs +0 -29
- package/esm2022/pagination/deprecated-pagination-compact.directive.mjs +0 -30
- package/esm2022/panel/deprecated-panel-compact.directive.mjs +0 -30
- package/esm2022/radio/deprecated-radio-button-compact.directive.mjs +0 -30
- package/esm2022/select/deprecated-select-compact.directive.mjs +0 -30
- package/esm2022/shellbar/deprecated-shellbar-compact.directive.mjs +0 -30
- package/esm2022/slider/deprecated-slider-cozy.directive.mjs +0 -20
- package/esm2022/split-button/deprecated-split-button-compact.directive.mjs +0 -30
- package/esm2022/step-input/deprecated-step-input-compact.directive.mjs +0 -30
- package/esm2022/switch/deprecated-switch-compact.directive.mjs +0 -30
- package/esm2022/table/deprecated-table-compact.directive.mjs +0 -29
- package/esm2022/table/deprecated-table-condensed.directive.mjs +0 -29
- package/esm2022/tabs/deprecated-tabs-compact.directive.mjs +0 -29
- package/esm2022/time/deprecated-time-content-density.directive.mjs +0 -30
- package/esm2022/time/i18n/time-i18n.mjs +0 -52
- package/esm2022/time-picker/deprecated-timepicker-compact.directive.mjs +0 -30
- package/esm2022/token/deprecated-tokenizer-content-density.directive.mjs +0 -30
- package/esm2022/wizard/deprecated-wizard-compact.directive.mjs +0 -30
- package/fesm2022/fundamental-ngx-core-alert.mjs +0 -437
- package/fesm2022/fundamental-ngx-core-alert.mjs.map +0 -1
- package/file-uploader/deprecated-file-uploader-content-density.directive.d.ts +0 -8
- package/form/form-control/deprecated-form-control-content-density.directive.d.ts +0 -8
- package/fundamental-ngx-core-v0.44.1-rc.3.tgz +0 -0
- package/input-group/deprecated-input-group-compact.directive.d.ts +0 -8
- package/list/deprecated-list-content-density,directive.d.ts +0 -8
- package/menu/directives/deprecated-menu-compact.directive.d.ts +0 -8
- package/message-box/directives/message-box-decisive-button.directive.d.ts +0 -11
- package/message-box/message-box-footer-button/message-box-footer-button.component.d.ts +0 -12
- package/micro-process-flow/components/micro-process-flow/deprecated-micro-process-flow-content-density.directive.d.ts +0 -8
- package/multi-input/deprecated-multi-input-compact.directive.d.ts +0 -8
- package/nested-list/deprecated-nested-list-compact.directive.d.ts +0 -8
- package/pagination/deprecated-pagination-compact.directive.d.ts +0 -8
- package/panel/deprecated-panel-compact.directive.d.ts +0 -8
- package/radio/deprecated-radio-button-compact.directive.d.ts +0 -8
- package/select/deprecated-select-compact.directive.d.ts +0 -8
- package/shellbar/deprecated-shellbar-compact.directive.d.ts +0 -8
- package/slider/deprecated-slider-cozy.directive.d.ts +0 -8
- package/split-button/deprecated-split-button-compact.directive.d.ts +0 -8
- package/step-input/deprecated-step-input-compact.directive.d.ts +0 -8
- package/switch/deprecated-switch-compact.directive.d.ts +0 -8
- package/table/deprecated-table-compact.directive.d.ts +0 -8
- package/table/deprecated-table-condensed.directive.d.ts +0 -8
- package/tabs/deprecated-tabs-compact.directive.d.ts +0 -8
- package/time/deprecated-time-content-density.directive.d.ts +0 -8
- package/time/i18n/time-i18n.d.ts +0 -42
- package/time-picker/deprecated-timepicker-compact.directive.d.ts +0 -8
- package/token/deprecated-tokenizer-content-density.directive.d.ts +0 -8
- package/wizard/deprecated-wizard-compact.directive.d.ts +0 -8
|
@@ -2,7 +2,7 @@ import { LiveAnnouncer } from '@angular/cdk/a11y';
|
|
|
2
2
|
import { coerceArray, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
3
3
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ViewEncapsulation } from '@angular/core';
|
|
4
4
|
import { firstValueFrom, Observable, Subscription } from 'rxjs';
|
|
5
|
-
import { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService
|
|
5
|
+
import { FocusKeyManagerItemDirective, FocusKeyManagerListDirective, RtlService } from '@fundamental-ngx/cdk/utils';
|
|
6
6
|
import { PaginationService } from './pagination.service';
|
|
7
7
|
import { FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
|
|
8
8
|
import { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';
|
|
@@ -55,18 +55,6 @@ export class PaginationComponent {
|
|
|
55
55
|
get itemsPerPage() {
|
|
56
56
|
return this._itemsPerPage;
|
|
57
57
|
}
|
|
58
|
-
/**
|
|
59
|
-
* @deprecated use i18n capabilities instead
|
|
60
|
-
* Label for options for items per page.
|
|
61
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
62
|
-
*/
|
|
63
|
-
set itemsPerPageLabel(value) {
|
|
64
|
-
warnOnce("Property itemsPerPageLabel is deprecated. Use i18n capabilities 'corePagination.itemsPerPageLabel' key instead.");
|
|
65
|
-
this._itemsPerPageLabel = value;
|
|
66
|
-
}
|
|
67
|
-
get itemsPerPageLabel() {
|
|
68
|
-
return this._itemsPerPageLabel;
|
|
69
|
-
}
|
|
70
58
|
/** Represents the options for items per page. */
|
|
71
59
|
set itemsPerPageOptions(value) {
|
|
72
60
|
this._itemsPerPageOptions = coerceArray(value)
|
|
@@ -79,131 +67,6 @@ export class PaginationComponent {
|
|
|
79
67
|
get itemsPerPageOptions() {
|
|
80
68
|
return this._itemsPerPageOptions;
|
|
81
69
|
}
|
|
82
|
-
/**
|
|
83
|
-
* @deprecated use i18n capabilities instead
|
|
84
|
-
* Label for the 'first' page button.
|
|
85
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
86
|
-
*/
|
|
87
|
-
set firstLabel(value) {
|
|
88
|
-
warnOnce("Property firstLabel is deprecated. Use i18n capabilities 'corePagination.firstLabel' key instead.");
|
|
89
|
-
this._firstLabel = value;
|
|
90
|
-
}
|
|
91
|
-
get firstLabel() {
|
|
92
|
-
return this._firstLabel;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* @deprecated use i18n capabilities instead
|
|
96
|
-
* Label for the 'previous' page button.
|
|
97
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
98
|
-
*/
|
|
99
|
-
set previousLabel(value) {
|
|
100
|
-
warnOnce("Property previousLabel is deprecated. Use i18n capabilities 'corePagination.previousLabel' key instead.");
|
|
101
|
-
this._previousLabel = value;
|
|
102
|
-
}
|
|
103
|
-
get previousLabel() {
|
|
104
|
-
return this._previousLabel;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* @deprecated use i18n capabilities instead
|
|
108
|
-
* Label for the 'next' page button.
|
|
109
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
110
|
-
*/
|
|
111
|
-
set nextLabel(value) {
|
|
112
|
-
console.warn("Property nextLabel is deprecated. Use i18n capabilities 'corePagination.nextLabel' key instead.");
|
|
113
|
-
this._nextLabel = value;
|
|
114
|
-
}
|
|
115
|
-
get nextLabel() {
|
|
116
|
-
return this._nextLabel;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* @deprecated use i18n capabilities instead
|
|
120
|
-
* Label for the 'last' page button.
|
|
121
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
122
|
-
*/
|
|
123
|
-
set lastLabel(value) {
|
|
124
|
-
console.warn("Property lastLabel is deprecated. Use i18n capabilities 'corePagination.lastLabel' key instead.");
|
|
125
|
-
this._lastLabel = value;
|
|
126
|
-
}
|
|
127
|
-
get lastLabel() {
|
|
128
|
-
return this._lastLabel;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* @deprecated use i18n capabilities instead
|
|
132
|
-
* Aria label for the navigation element
|
|
133
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
134
|
-
*/
|
|
135
|
-
set ariaLabel(value) {
|
|
136
|
-
console.warn("Property ariaLabel is deprecated. Use i18n capabilities 'corePagination.ariaLabel' key instead.");
|
|
137
|
-
this._ariaLabel = value;
|
|
138
|
-
}
|
|
139
|
-
get ariaLabel() {
|
|
140
|
-
return this._ariaLabel;
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* @deprecated use i18n capabilities instead
|
|
144
|
-
* Label for the 'Page ' page button. Page number passed as function parameter.
|
|
145
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
146
|
-
*/
|
|
147
|
-
set pageLabel(value) {
|
|
148
|
-
console.warn("Property pageLabel is deprecated. Use i18n capabilities 'corePagination.pageLabel' key instead.");
|
|
149
|
-
this._pageLabel = value;
|
|
150
|
-
}
|
|
151
|
-
get pageLabel() {
|
|
152
|
-
return this._pageLabel;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* @deprecated use i18n capabilities instead
|
|
156
|
-
* Function to create current page aria label, current page passed as a parameter of the function
|
|
157
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
158
|
-
*/
|
|
159
|
-
set currentPageAriaLabel(value) {
|
|
160
|
-
warnOnce("Property currentPageAriaLabel is deprecated. Use i18n capabilities 'corePagination.currentPageAriaLabel' key instead.");
|
|
161
|
-
this._currentPageAriaLabel = value;
|
|
162
|
-
}
|
|
163
|
-
get currentPageAriaLabel() {
|
|
164
|
-
return this._currentPageAriaLabel;
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* @deprecated use i18n capabilities instead
|
|
168
|
-
* Page label to be shown before current page input in mobile mode.
|
|
169
|
-
* In conjuction with @pageLabelAfterInputMobile generates the label for the input.
|
|
170
|
-
* Example: 'Page' + input + pageLabelAfterInputMobile
|
|
171
|
-
* This property is mainly provided to support i18n.
|
|
172
|
-
*/
|
|
173
|
-
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
174
|
-
set labelBeforeInputMobile(value) {
|
|
175
|
-
warnOnce("Property labelBeforeInputMobile is deprecated. Use i18n capabilities 'corePagination.labelBeforeInputMobile' key instead.");
|
|
176
|
-
this._labelBeforeInputMobile = value;
|
|
177
|
-
}
|
|
178
|
-
get labelBeforeInputMobile() {
|
|
179
|
-
return this._labelBeforeInputMobile;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* @deprecated use i18n capabilities instead
|
|
183
|
-
* Page label to be shown after current page input in mobile mode. Pages count passed as the function parameter.
|
|
184
|
-
* In conjuction with @pageLabelBeforeInputMobile generates the label for the input.
|
|
185
|
-
* Example: pageLabelBeforeInputMobile + input + 'of 500'.
|
|
186
|
-
* This property is mainly provided to support i18n.
|
|
187
|
-
*/
|
|
188
|
-
set labelAfterInputMobile(value) {
|
|
189
|
-
warnOnce("Property labelAfterInputMobile is deprecated. Use i18n capabilities 'corePagination.labelAfterInputMobile' key instead.");
|
|
190
|
-
this._labelAfterInputMobile = value;
|
|
191
|
-
}
|
|
192
|
-
get labelAfterInputMobile() {
|
|
193
|
-
return this._labelAfterInputMobile;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* @deprecated use i18n capabilities instead
|
|
197
|
-
* Current page input aria label, parameters passed to the function (currentPage: number, pagesCount: number).
|
|
198
|
-
* This property is mainly provided to support reading in the right language for screen reader.
|
|
199
|
-
*/
|
|
200
|
-
set inputAriaLabel(value) {
|
|
201
|
-
warnOnce("Property inputAriaLabel is deprecated. Use i18n capabilities 'corePagination.inputAriaLabel' key instead.");
|
|
202
|
-
this._inputAriaLabel = value;
|
|
203
|
-
}
|
|
204
|
-
get inputAriaLabel() {
|
|
205
|
-
return this._inputAriaLabel;
|
|
206
|
-
}
|
|
207
70
|
/**
|
|
208
71
|
* Retrieves an object that represents
|
|
209
72
|
* the total number of items, the current page, and the number of items per page.
|
|
@@ -240,10 +103,6 @@ export class PaginationComponent {
|
|
|
240
103
|
return this.paginationService.moreElementValue;
|
|
241
104
|
}
|
|
242
105
|
/** @hidden */
|
|
243
|
-
get _isRtl() {
|
|
244
|
-
return this._rtlService?.rtl.value;
|
|
245
|
-
}
|
|
246
|
-
/** @hidden */
|
|
247
106
|
constructor(paginationService, _cdr, _liveAnnouncer, _language, _rtlService, _contentDensityObserver) {
|
|
248
107
|
this.paginationService = paginationService;
|
|
249
108
|
this._cdr = _cdr;
|
|
@@ -265,7 +124,6 @@ export class PaginationComponent {
|
|
|
265
124
|
this._currentShowing = {
|
|
266
125
|
from: 0,
|
|
267
126
|
to: 0,
|
|
268
|
-
of: 0,
|
|
269
127
|
totalCount: 0
|
|
270
128
|
};
|
|
271
129
|
/** @hidden */
|
|
@@ -356,11 +214,6 @@ export class PaginationComponent {
|
|
|
356
214
|
goToLastPage() {
|
|
357
215
|
this.goToPage(this._lastPage);
|
|
358
216
|
}
|
|
359
|
-
/** @deprecated, use {@link paginationObject} getter instead */
|
|
360
|
-
getPaginationObject() {
|
|
361
|
-
warnOnce('PaginationComponent: getPaginationObject() is deprecated, use paginationObject getter instead');
|
|
362
|
-
return this.paginationObject;
|
|
363
|
-
}
|
|
364
217
|
/** @hidden */
|
|
365
218
|
_restoreInputValue(model) {
|
|
366
219
|
model.reset(this.currentPage);
|
|
@@ -377,7 +230,6 @@ export class PaginationComponent {
|
|
|
377
230
|
this._currentShowing = {
|
|
378
231
|
from: this.currentPage - 1 === 0 ? 1 : (this.currentPage - 1) * itemsPerPage + 1,
|
|
379
232
|
to: Math.min((this.currentPage - 1) * itemsPerPage + itemsPerPage, this.totalItems),
|
|
380
|
-
of: this.totalItems,
|
|
381
233
|
totalCount: this.totalItems
|
|
382
234
|
};
|
|
383
235
|
this._cdr.markForCheck();
|
|
@@ -412,21 +264,13 @@ export class PaginationComponent {
|
|
|
412
264
|
}
|
|
413
265
|
/** @hidden */
|
|
414
266
|
async _announcePage(page) {
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
}
|
|
419
|
-
else {
|
|
420
|
-
const lang = await firstValueFrom(this._language);
|
|
421
|
-
label = this._translationResolver.resolve(lang, 'corePagination.currentPageAriaLabel', {
|
|
422
|
-
pageNumber: page,
|
|
423
|
-
totalCount: this.totalItems
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
|
-
this._liveAnnouncer.announce(label);
|
|
267
|
+
await this._liveAnnouncer.announce(this._translationResolver.resolve(await firstValueFrom(this._language), 'corePagination.currentPageAriaLabel', {
|
|
268
|
+
pageNumber: page,
|
|
269
|
+
totalCount: this.totalItems
|
|
270
|
+
}));
|
|
427
271
|
}
|
|
428
272
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: PaginationComponent, deps: [{ token: i1.PaginationService }, { token: i0.ChangeDetectorRef }, { token: i2.LiveAnnouncer }, { token: FD_LANGUAGE }, { token: i3.RtlService, optional: true }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
429
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: PaginationComponent, selector: "fd-pagination", inputs: { id: "id", mobile: "mobile", totalItems: "totalItems", currentPage: "currentPage", itemsPerPage: "itemsPerPage", itemsPerPageTemplate: "itemsPerPageTemplate", itemsPerPageLabel: "itemsPerPageLabel", itemsPerPageOptions: "itemsPerPageOptions", displayTotalItems: "displayTotalItems", displayTextTemplate: "displayTextTemplate", firstLabel: "firstLabel", previousLabel: "previousLabel", nextLabel: "nextLabel", lastLabel: "lastLabel", ariaLabel: "ariaLabel", pageLabel: "pageLabel", currentPageAriaLabel: "currentPageAriaLabel", labelBeforeInputMobile: "labelBeforeInputMobile", labelAfterInputMobile: "labelAfterInputMobile", inputAriaLabel: "inputAriaLabel" }, outputs: { pageChangeStart: "pageChangeStart", itemsPerPageChange: "itemsPerPageChange" }, host: { properties: { "class.fd-pagination--mobile": "mobile", "class.fd-pagination--short": "_lastPage <= 9" }, classAttribute: "fd-pagination" }, providers: [PaginationService, contentDensityObserverProviders()], viewQueries: [{ propertyName: "_focusKeyManagerList", first: true, predicate: FocusKeyManagerListDirective, descendants: true }, { propertyName: "_pageInputElement", first: true, predicate: ["pageInputElement"], descendants: true, read: ElementRef }, { propertyName: "_currentPageElement", first: true, predicate: ["currentPageElement"], descendants: true, read: ElementRef }, { propertyName: "_focusKeyManagerItems", predicate: FocusKeyManagerItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"ariaLabel || ('corePagination.ariaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n [title]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n [title]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel\n ? pageLabel(currentPage)\n : ('corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage })\n \"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelBeforeInputMobile\n ? labelBeforeInputMobile + ':'\n : ('corePagination.labelBeforeInputMobile' | fdTranslate)\n }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n inputAriaLabel\n ? inputAriaLabel(currentPage, _totalPages)\n : ('corePagination.inputAriaLabel'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelAfterInputMobile\n ? labelAfterInputMobile(_lastPage)\n : ('corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n [title]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n [title]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ itemsPerPageLabel ? itemsPerPageLabel + ':' : ('corePagination.itemsPerPageLabel' | fdTranslate) }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-pagination\n*/.fd-pagination{--fdPaginationMoreWidth:2.25rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.75rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0 1rem;width:100%}.fd-pagination:after,.fd-pagination:before{box-sizing:inherit;font-size:inherit}.fd-pagination__per-page{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__per-page:after,.fd-pagination__per-page:before{box-sizing:inherit;font-size:inherit}.fd-pagination__nav{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 auto;padding:0}.fd-pagination__nav:after,.fd-pagination__nav:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__more:after,.fd-pagination__more:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more:before{content:\"...\";display:block;text-align:center;width:var(--fdPaginationMoreWidth)}.fd-pagination__more[class*=-compact],.fd-pagination__more[class*=-condensed],[class*=-compact] .fd-pagination__more:not([class*=-cozy]),[class*=-condensed] .fd-pagination__more:not([class*=-cozy]){--fdPaginationMoreWidth:2rem}.fd-pagination .fd-pagination__button,.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__link,.fd-pagination__more{margin-left:.125rem;margin-right:.125rem}.fd-pagination .fd-pagination__input{--fdInput_Field_Margin:.125rem;--fdInput_Field_Compact_Margin:.125rem;-moz-appearance:textfield;min-width:2.5rem;text-align:center;width:auto}.fd-pagination .fd-pagination__input::-webkit-inner-spin-button,.fd-pagination .fd-pagination__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__per-page-label{-ms-flex-negative:0;align-self:center;flex-shrink:0}.fd-pagination .fd-pagination__label{display:none}.fd-pagination .fd-pagination__total-label{margin:0}.fd-pagination .fd-pagination__link.is-focus,.fd-pagination .fd-pagination__link:focus{outline:none;z-index:5}.fd-pagination .fd-pagination__link.is-focus:after,.fd-pagination .fd-pagination__link:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-pagination .fd-pagination__link.is-focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link.is-focus.is-selected:after,.fd-pagination .fd-pagination__link:focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-pagination .fd-pagination__link.is-active{display:none}.fd-pagination .fd-pagination__button [class*=sap-icon][dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__button [class*=sap-icon]{transform:rotate(180deg)}.fd-pagination .fd-pagination__button--mobile{display:none}.fd-pagination--short .fd-pagination__link.is-active,.fd-pagination--short .fd-pagination__link:active{display:flex}.fd-pagination--short .fd-pagination__input{display:none}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination--mobile .fd-pagination__link,.fd-pagination--mobile .fd-pagination__more,.fd-pagination--mobile .fd-pagination__per-page-label,.fd-pagination--mobile .fd-pagination__total{display:none}.fd-pagination--mobile .fd-pagination__button--mobile,.fd-pagination--mobile .fd-pagination__input,.fd-pagination--mobile .fd-pagination__label{display:flex}.fd-pagination--mobile .fd-pagination__link.is-active,.fd-pagination--mobile .fd-pagination__link:active{display:none}@media (max-width: 599px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}@media (min-width: 600px) and (max-width: 1023px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-pagination__label .fd-form-label,.fd-pagination__total-label .fd-form-label{margin:0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i7.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i8.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i9.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "checkbox", "radio", "alignLabelEnd", "inlineHelpTitle", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "directive", type: i3.OnlyDigitsDirective, selector: "[fdkOnlyDigits], [fdOnlyDigits], [fd-only-digits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "directive", type: i3.FocusKeyManagerItemDirective, selector: "[fdkFocusKeyManagerItem], [fd-focus-key-manager-item], [fdFocusKeyManagerItem]", inputs: ["initialFocus", "_tabindex"] }, { kind: "directive", type: i3.FocusKeyManagerListDirective, selector: "[fdkFocusKeyManagerList], [fd-focus-key-manager-list], [fdFocusKeyManagerList]", inputs: ["orientation", "skipPredicate"] }, { kind: "pipe", type: i10.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true }); }
|
|
273
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: PaginationComponent, selector: "fd-pagination", inputs: { id: "id", mobile: "mobile", totalItems: "totalItems", currentPage: "currentPage", itemsPerPage: "itemsPerPage", itemsPerPageTemplate: "itemsPerPageTemplate", itemsPerPageOptions: "itemsPerPageOptions", displayTotalItems: "displayTotalItems", displayTextTemplate: "displayTextTemplate" }, outputs: { pageChangeStart: "pageChangeStart", itemsPerPageChange: "itemsPerPageChange" }, host: { properties: { "class.fd-pagination--mobile": "mobile", "class.fd-pagination--short": "_lastPage <= 9" }, classAttribute: "fd-pagination" }, providers: [PaginationService, contentDensityObserverProviders()], viewQueries: [{ propertyName: "_focusKeyManagerList", first: true, predicate: FocusKeyManagerListDirective, descendants: true }, { propertyName: "_pageInputElement", first: true, predicate: ["pageInputElement"], descendants: true, read: ElementRef }, { propertyName: "_currentPageElement", first: true, predicate: ["currentPageElement"], descendants: true, read: ElementRef }, { propertyName: "_focusKeyManagerItems", predicate: FocusKeyManagerItemDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"'corePagination.ariaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"'corePagination.firstLabel' | fdTranslate\"\n [title]=\"'corePagination.firstLabel' | fdTranslate\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"'corePagination.previousLabel' | fdTranslate\"\n [title]=\"'corePagination.previousLabel' | fdTranslate\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n [title]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage }\"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{ 'corePagination.labelBeforeInputMobile' | fdTranslate }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n 'corePagination.inputAriaLabel' | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages }\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n 'corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages }\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n [title]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"'corePagination.nextLabel' | fdTranslate\"\n [title]=\"'corePagination.nextLabel' | fdTranslate\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"'corePagination.lastLabel' | fdTranslate\"\n [title]=\"'corePagination.lastLabel' | fdTranslate\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ 'corePagination.itemsPerPageLabel' | fdTranslate }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-pagination\n*/.fd-pagination{--fdPaginationMoreWidth:2.25rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.75rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0 1rem;width:100%}.fd-pagination:after,.fd-pagination:before{box-sizing:inherit;font-size:inherit}.fd-pagination__per-page{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__per-page:after,.fd-pagination__per-page:before{box-sizing:inherit;font-size:inherit}.fd-pagination__nav{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 auto;padding:0}.fd-pagination__nav:after,.fd-pagination__nav:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__more:after,.fd-pagination__more:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more:before{content:\"...\";display:block;text-align:center;width:var(--fdPaginationMoreWidth)}.fd-pagination__more[class*=-compact],.fd-pagination__more[class*=-condensed],[class*=-compact] .fd-pagination__more:not([class*=-cozy]),[class*=-condensed] .fd-pagination__more:not([class*=-cozy]){--fdPaginationMoreWidth:2rem}.fd-pagination .fd-pagination__button,.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__link,.fd-pagination__more{margin-left:.125rem;margin-right:.125rem}.fd-pagination .fd-pagination__input{--fdInput_Field_Margin:.125rem;--fdInput_Field_Compact_Margin:.125rem;-moz-appearance:textfield;min-width:2.5rem;text-align:center;width:auto}.fd-pagination .fd-pagination__input::-webkit-inner-spin-button,.fd-pagination .fd-pagination__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__per-page-label{-ms-flex-negative:0;align-self:center;flex-shrink:0}.fd-pagination .fd-pagination__label{display:none}.fd-pagination .fd-pagination__total-label{margin:0}.fd-pagination .fd-pagination__link.is-focus,.fd-pagination .fd-pagination__link:focus{outline:none;z-index:5}.fd-pagination .fd-pagination__link.is-focus:after,.fd-pagination .fd-pagination__link:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-pagination .fd-pagination__link.is-focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link.is-focus.is-selected:after,.fd-pagination .fd-pagination__link:focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-pagination .fd-pagination__link.is-active{display:none}.fd-pagination .fd-pagination__button [class*=sap-icon][dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__button [class*=sap-icon]{transform:rotate(180deg)}.fd-pagination .fd-pagination__button--mobile{display:none}.fd-pagination--short .fd-pagination__link.is-active,.fd-pagination--short .fd-pagination__link:active{display:flex}.fd-pagination--short .fd-pagination__input{display:none}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination--mobile .fd-pagination__link,.fd-pagination--mobile .fd-pagination__more,.fd-pagination--mobile .fd-pagination__per-page-label,.fd-pagination--mobile .fd-pagination__total{display:none}.fd-pagination--mobile .fd-pagination__button--mobile,.fd-pagination--mobile .fd-pagination__input,.fd-pagination--mobile .fd-pagination__label{display:flex}.fd-pagination--mobile .fd-pagination__link.is-active,.fd-pagination--mobile .fd-pagination__link:active{display:none}@media (max-width: 599px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}@media (min-width: 600px) and (max-width: 1023px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-pagination__label .fd-form-label,.fd-pagination__total-label .fd-form-label{margin:0}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i7.SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: i7.OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i8.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i8.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.FormControlComponent, selector: "[fd-form-control]", inputs: ["state", "type", "class", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i9.InputFormControlDirective, selector: "input[fd-form-control]" }, { kind: "component", type: i9.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "directive", type: i3.OnlyDigitsDirective, selector: "[fdkOnlyDigits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "directive", type: i3.FocusKeyManagerItemDirective, selector: "[fdkFocusKeyManagerItem]", inputs: ["initialFocus", "_tabindex"] }, { kind: "directive", type: i3.FocusKeyManagerListDirective, selector: "[fdkFocusKeyManagerList]", inputs: ["orientation", "skipPredicate"] }, { kind: "pipe", type: i10.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None, preserveWhitespaces: true }); }
|
|
430
274
|
}
|
|
431
275
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
432
276
|
type: Component,
|
|
@@ -434,7 +278,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
434
278
|
class: 'fd-pagination',
|
|
435
279
|
'[class.fd-pagination--mobile]': 'mobile',
|
|
436
280
|
'[class.fd-pagination--short]': '_lastPage <= 9'
|
|
437
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"ariaLabel || ('corePagination.ariaLabel' | fdTranslate)\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n [title]=\"firstLabel || ('corePagination.firstLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n [title]=\"previousLabel || ('corePagination.previousLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel\n ? pageLabel(currentPage)\n : ('corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage })\n \"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelBeforeInputMobile\n ? labelBeforeInputMobile + ':'\n : ('corePagination.labelBeforeInputMobile' | fdTranslate)\n }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n inputAriaLabel\n ? inputAriaLabel(currentPage, _totalPages)\n : ('corePagination.inputAriaLabel'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n labelAfterInputMobile\n ? labelAfterInputMobile(_lastPage)\n : ('corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages })\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n [title]=\"\n pageLabel ? pageLabel(page) : ('corePagination.pageLabel' | fdTranslate : { pageNumber: page })\n \"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n [title]=\"nextLabel || ('corePagination.nextLabel' | fdTranslate)\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n [title]=\"lastLabel || ('corePagination.lastLabel' | fdTranslate)\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ itemsPerPageLabel ? itemsPerPageLabel + ':' : ('corePagination.itemsPerPageLabel' | fdTranslate) }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-pagination\n*/.fd-pagination{--fdPaginationMoreWidth:2.25rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.75rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0 1rem;width:100%}.fd-pagination:after,.fd-pagination:before{box-sizing:inherit;font-size:inherit}.fd-pagination__per-page{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__per-page:after,.fd-pagination__per-page:before{box-sizing:inherit;font-size:inherit}.fd-pagination__nav{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 auto;padding:0}.fd-pagination__nav:after,.fd-pagination__nav:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__more:after,.fd-pagination__more:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more:before{content:\"...\";display:block;text-align:center;width:var(--fdPaginationMoreWidth)}.fd-pagination__more[class*=-compact],.fd-pagination__more[class*=-condensed],[class*=-compact] .fd-pagination__more:not([class*=-cozy]),[class*=-condensed] .fd-pagination__more:not([class*=-cozy]){--fdPaginationMoreWidth:2rem}.fd-pagination .fd-pagination__button,.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__link,.fd-pagination__more{margin-left:.125rem;margin-right:.125rem}.fd-pagination .fd-pagination__input{--fdInput_Field_Margin:.125rem;--fdInput_Field_Compact_Margin:.125rem;-moz-appearance:textfield;min-width:2.5rem;text-align:center;width:auto}.fd-pagination .fd-pagination__input::-webkit-inner-spin-button,.fd-pagination .fd-pagination__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__per-page-label{-ms-flex-negative:0;align-self:center;flex-shrink:0}.fd-pagination .fd-pagination__label{display:none}.fd-pagination .fd-pagination__total-label{margin:0}.fd-pagination .fd-pagination__link.is-focus,.fd-pagination .fd-pagination__link:focus{outline:none;z-index:5}.fd-pagination .fd-pagination__link.is-focus:after,.fd-pagination .fd-pagination__link:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-pagination .fd-pagination__link.is-focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link.is-focus.is-selected:after,.fd-pagination .fd-pagination__link:focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-pagination .fd-pagination__link.is-active{display:none}.fd-pagination .fd-pagination__button [class*=sap-icon][dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__button [class*=sap-icon]{transform:rotate(180deg)}.fd-pagination .fd-pagination__button--mobile{display:none}.fd-pagination--short .fd-pagination__link.is-active,.fd-pagination--short .fd-pagination__link:active{display:flex}.fd-pagination--short .fd-pagination__input{display:none}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination--mobile .fd-pagination__link,.fd-pagination--mobile .fd-pagination__more,.fd-pagination--mobile .fd-pagination__per-page-label,.fd-pagination--mobile .fd-pagination__total{display:none}.fd-pagination--mobile .fd-pagination__button--mobile,.fd-pagination--mobile .fd-pagination__input,.fd-pagination--mobile .fd-pagination__label{display:flex}.fd-pagination--mobile .fd-pagination__link.is-active,.fd-pagination--mobile .fd-pagination__link:active{display:none}@media (max-width: 599px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}@media (min-width: 600px) and (max-width: 1023px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-pagination__label .fd-form-label,.fd-pagination__total-label .fd-form-label{margin:0}\n"] }]
|
|
281
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: true, template: "<ng-container *ngIf=\"totalItems\">\n <div class=\"fd-pagination__per-page\" *ngIf=\"itemsPerPageTemplate || itemsPerPageOptions?.length\">\n <!-- note, that we're checking for the length of \"itemsPerPageOptions\", but using \"_displayedPageSizeOptions\" as \"pageOptions\" -->\n <!-- these 2 can be different, as \"_displayedPageSizeOptions\" may also include \"itemsPerPage\" if it's not included in options -->\n <ng-container\n [ngTemplateOutlet]=\"itemsPerPageTemplate || perPage\"\n [ngTemplateOutletContext]=\"{ onSelect: _onChangePerPage, pageOptions: _displayedPageSizeOptions }\"\n ></ng-container>\n </div>\n\n <nav\n fdkFocusKeyManagerList\n orientation=\"horizontal\"\n [skipPredicate]=\"skipItemPredicate\"\n class=\"fd-pagination__nav\"\n [attr.aria-label]=\"'corePagination.ariaLabel' | fdTranslate\"\n [attr.aria-labelledby]=\"displayTotalItems ? _totalPagesElementId : null\"\n *ngIf=\"totalItems >= itemsPerPage\"\n >\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-rewind\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"'corePagination.firstLabel' | fdTranslate\"\n [title]=\"'corePagination.firstLabel' | fdTranslate\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"goToFirstPage()\"\n (keyup.enter)=\"goToFirstPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToFirstPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-left-arrow\"\n [disabled]=\"isFirstPage\"\n [ariaLabel]=\"'corePagination.previousLabel' | fdTranslate\"\n [title]=\"'corePagination.previousLabel' | fdTranslate\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isFirstPage\"\n (click)=\"previousPage()\"\n (keyup.enter)=\"previousPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"previousPage()\"\n ></button>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesBeforeCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n [title]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n #currentPageElement\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: currentPage }\"\n class=\"fd-pagination__link is-active\"\n [attr.aria-current]=\"true\"\n >\n {{ currentPage }}\n </button>\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{ 'corePagination.labelBeforeInputMobile' | fdTranslate }}\n </label>\n\n <input\n #pageInputElement\n fdkFocusKeyManagerItem\n fd-form-control\n fdkOnlyDigits\n required\n size=\"1\"\n min=\"1\"\n type=\"number\"\n [max]=\"_lastPage\"\n [state]=\"currentPageModel.invalid ? 'error' : null\"\n class=\"fd-pagination__input\"\n #currentPageModel=\"ngModel\"\n [ngModel]=\"currentPage\"\n [attr.aria-label]=\"\n 'corePagination.inputAriaLabel' | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages }\n \"\n (keydown.enter)=\"goToPage(currentPageModel.value)\"\n (keydown.space)=\"goToPage(currentPageModel.value)\"\n (blur)=\"_restoreInputValue(currentPageModel)\"\n />\n\n <label fd-form-label class=\"fd-pagination__label\">\n {{\n 'corePagination.labelAfterInputMobile'\n | fdTranslate : { pageNumber: currentPage, totalCount: _totalPages }\n }}\n </label>\n\n <!-- Duplicated to preserve the items order for keyboard navigation -->\n <ng-container *ngFor=\"let page of _pagesAfterCurrent\">\n <button\n *ngIf=\"page !== _moreElementValue; else more\"\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n [ariaLabel]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n [title]=\"'corePagination.pageLabel' | fdTranslate : { pageNumber: page }\"\n class=\"fd-pagination__link\"\n (click)=\"goToPage(page)\"\n (keyup.enter)=\"goToPage(page, $event)\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToPage(page, $event)\"\n >\n {{ page }}\n </button>\n </ng-container>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"navigation-right-arrow\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"'corePagination.nextLabel' | fdTranslate\"\n [title]=\"'corePagination.nextLabel' | fdTranslate\"\n class=\"fd-pagination__button\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n (keyup.enter)=\"nextPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"nextPage()\"\n ></button>\n\n <button\n fdkFocusKeyManagerItem\n fd-button\n fdType=\"transparent\"\n glyph=\"media-forward\"\n [disabled]=\"isLastPage\"\n [ariaLabel]=\"'corePagination.lastLabel' | fdTranslate\"\n [title]=\"'corePagination.lastLabel' | fdTranslate\"\n class=\"fd-pagination__button fd-pagination__button--mobile\"\n [attr.aria-disabled]=\"isLastPage\"\n (click)=\"goToLastPage()\"\n (keyup.enter)=\"goToLastPage()\"\n (keydown.space)=\"$event.preventDefault()\"\n (keyup.space)=\"goToLastPage()\"\n ></button>\n </nav>\n\n <span *ngIf=\"displayTotalItems\" class=\"fd-pagination__total\" [attr.id]=\"_totalPagesElementId\">\n <ng-container\n [ngTemplateOutlet]=\"displayTextTemplate || total\"\n [ngTemplateOutletContext]=\"{ showing: _currentShowing }\"\n ></ng-container>\n </span>\n</ng-container>\n\n<ng-template #more>\n <span class=\"fd-pagination__more\" aria-hidden=\"true\" aria-label=\"...\" role=\"presentation\"></span>\n</ng-template>\n\n<ng-template #total let-showing=\"showing\">\n <span fd-form-label class=\"fd-pagination__total-label\">\n {{ 'corePagination.totalResultsLabel' | fdTranslate : _currentShowing }}\n </span>\n</ng-template>\n\n<ng-template #perPage let-pageOptions=\"pageOptions\">\n <label fd-form-label class=\"fd-pagination__per-page-label\">\n {{ 'corePagination.itemsPerPageLabel' | fdTranslate }}\n </label>\n\n <fd-select class=\"fd-pagination__per-page-select\" [value]=\"itemsPerPage\" (valueChange)=\"_onChangePerPage($event)\">\n <li fd-option *ngFor=\"let option of pageOptions\" [value]=\"option\">{{ option }}</li>\n </fd-select>\n</ng-template>\n", styles: ["/*!\n * Fundamental Library Styles v0.28.3\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-pagination\n*/.fd-pagination{--fdPaginationMoreWidth:2.25rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:2.75rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0 1rem;width:100%}.fd-pagination:after,.fd-pagination:before{box-sizing:inherit;font-size:inherit}.fd-pagination__per-page{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__per-page:after,.fd-pagination__per-page:before{box-sizing:inherit;font-size:inherit}.fd-pagination__nav{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;justify-content:center;line-height:var(--sapContent_LineHeight);margin:0 auto;padding:0}.fd-pagination__nav:after,.fd-pagination__nav:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-pagination__more:after,.fd-pagination__more:before{box-sizing:inherit;font-size:inherit}.fd-pagination__more:before{content:\"...\";display:block;text-align:center;width:var(--fdPaginationMoreWidth)}.fd-pagination__more[class*=-compact],.fd-pagination__more[class*=-condensed],[class*=-compact] .fd-pagination__more:not([class*=-cozy]),[class*=-condensed] .fd-pagination__more:not([class*=-cozy]){--fdPaginationMoreWidth:2rem}.fd-pagination .fd-pagination__button,.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__link,.fd-pagination__more{margin-left:.125rem;margin-right:.125rem}.fd-pagination .fd-pagination__input{--fdInput_Field_Margin:.125rem;--fdInput_Field_Compact_Margin:.125rem;-moz-appearance:textfield;min-width:2.5rem;text-align:center;width:auto}.fd-pagination .fd-pagination__input::-webkit-inner-spin-button,.fd-pagination .fd-pagination__input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-pagination .fd-pagination__label,.fd-pagination .fd-pagination__per-page-label{-ms-flex-negative:0;align-self:center;flex-shrink:0}.fd-pagination .fd-pagination__label{display:none}.fd-pagination .fd-pagination__total-label{margin:0}.fd-pagination .fd-pagination__link.is-focus,.fd-pagination .fd-pagination__link:focus{outline:none;z-index:5}.fd-pagination .fd-pagination__link.is-focus:after,.fd-pagination .fd-pagination__link:focus:after{border:var(--sapContent_FocusWidth) var(--sapContent_FocusStyle) var(--sapContent_FocusColor);border-radius:calc(var(--sapButton_BorderCornerRadius) - var(--sapContent_FocusWidth));bottom:var(--fdButton_Outline_Offset);content:\"\";display:block;left:var(--fdButton_Outline_Offset);position:absolute;right:var(--fdButton_Outline_Offset);top:var(--fdButton_Outline_Offset)}.fd-pagination .fd-pagination__link.is-focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link.is-focus.is-selected:after,.fd-pagination .fd-pagination__link:focus.fd-button--toggled:after,.fd-pagination .fd-pagination__link:focus.is-selected:after{border-color:var(--fdButton_Outline_Contrast)}.fd-pagination .fd-pagination__link.is-active{display:none}.fd-pagination .fd-pagination__button [class*=sap-icon][dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__button [class*=sap-icon]{transform:rotate(180deg)}.fd-pagination .fd-pagination__button--mobile{display:none}.fd-pagination--short .fd-pagination__link.is-active,.fd-pagination--short .fd-pagination__link:active{display:flex}.fd-pagination--short .fd-pagination__input{display:none}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination--mobile .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination--mobile .fd-pagination__link,.fd-pagination--mobile .fd-pagination__more,.fd-pagination--mobile .fd-pagination__per-page-label,.fd-pagination--mobile .fd-pagination__total{display:none}.fd-pagination--mobile .fd-pagination__button--mobile,.fd-pagination--mobile .fd-pagination__input,.fd-pagination--mobile .fd-pagination__label{display:flex}.fd-pagination--mobile .fd-pagination__link.is-active,.fd-pagination--mobile .fd-pagination__link:active{display:none}@media (max-width: 599px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}@media (min-width: 600px) and (max-width: 1023px){.fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:auto;margin-right:0}.fd-pagination .fd-pagination__per-page+.fd-pagination__nav[dir=rtl],[dir=rtl] .fd-pagination .fd-pagination__per-page+.fd-pagination__nav{margin-left:0;margin-right:auto}.fd-pagination .fd-pagination__link,.fd-pagination .fd-pagination__more,.fd-pagination .fd-pagination__per-page-label,.fd-pagination .fd-pagination__total{display:none}.fd-pagination .fd-pagination__button--mobile,.fd-pagination .fd-pagination__input,.fd-pagination .fd-pagination__label{display:flex}.fd-pagination .fd-pagination__link.is-active,.fd-pagination .fd-pagination__link:active{display:none}}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-pagination__label .fd-form-label,.fd-pagination__total-label .fd-form-label{margin:0}\n"] }]
|
|
438
282
|
}], ctorParameters: function () { return [{ type: i1.PaginationService }, { type: i0.ChangeDetectorRef }, { type: i2.LiveAnnouncer }, { type: i11.Observable, decorators: [{
|
|
439
283
|
type: Inject,
|
|
440
284
|
args: [FD_LANGUAGE]
|
|
@@ -464,37 +308,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
464
308
|
type: Input
|
|
465
309
|
}], itemsPerPageTemplate: [{
|
|
466
310
|
type: Input
|
|
467
|
-
}], itemsPerPageLabel: [{
|
|
468
|
-
type: Input
|
|
469
311
|
}], itemsPerPageOptions: [{
|
|
470
312
|
type: Input
|
|
471
313
|
}], displayTotalItems: [{
|
|
472
314
|
type: Input
|
|
473
315
|
}], displayTextTemplate: [{
|
|
474
316
|
type: Input
|
|
475
|
-
}], firstLabel: [{
|
|
476
|
-
type: Input
|
|
477
|
-
}], previousLabel: [{
|
|
478
|
-
type: Input
|
|
479
|
-
}], nextLabel: [{
|
|
480
|
-
type: Input
|
|
481
|
-
}], lastLabel: [{
|
|
482
|
-
type: Input
|
|
483
|
-
}], ariaLabel: [{
|
|
484
|
-
type: Input
|
|
485
|
-
}], pageLabel: [{
|
|
486
|
-
type: Input
|
|
487
|
-
}], currentPageAriaLabel: [{
|
|
488
|
-
type: Input
|
|
489
|
-
}], labelBeforeInputMobile: [{
|
|
490
|
-
type: Input
|
|
491
|
-
}], labelAfterInputMobile: [{
|
|
492
|
-
type: Input
|
|
493
|
-
}], inputAriaLabel: [{
|
|
494
|
-
type: Input
|
|
495
317
|
}], pageChangeStart: [{
|
|
496
318
|
type: Output
|
|
497
319
|
}], itemsPerPageChange: [{
|
|
498
320
|
type: Output
|
|
499
321
|
}] } });
|
|
500
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoRSxPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLDRCQUE0QixFQUU1QixVQUFVLEVBQ1YsUUFBUSxFQUNYLE1BQU0sNEJBQTRCLENBQUM7QUFHcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBYyxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBRWhILGtFQUFrRTtBQUNsRSxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQVVsQyxJQUFJLGtCQUFr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QUtyRCxFQUFFO3NCQURELEtBQUs7Z0JBS0YsTUFBTTtzQkFEVCxLQUFLO2dCQVVOLFVBQVU7c0JBRFQsS0FBSztnQkFLRixXQUFXO3NCQURkLEtBQUs7Z0JBVUYsWUFBWTtzQkFEZixLQUFLO2dCQWlCTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBU0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQWlCRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBZ0JOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFRTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBU0YsVUFBVTtzQkFEYixLQUFLO2dCQW1CRixhQUFhO3NCQURoQixLQUFLO2dCQXFCRixTQUFTO3NCQURaLEtBQUs7Z0JBbUJGLFNBQVM7c0JBRFosS0FBSztnQkFtQkYsU0FBUztzQkFEWixLQUFLO2dCQW1CRixTQUFTO3NCQURaLEtBQUs7Z0JBbUJGLG9CQUFvQjtzQkFEdkIsS0FBSztnQkF3QkYsc0JBQXNCO3NCQUR6QixLQUFLO2dCQXVCRixxQkFBcUI7c0JBRHhCLEtBQUs7Z0JBcUJGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBaUJOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VBcnJheSwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQge1xuICAgIEZvY3VzS2V5TWFuYWdlckl0ZW1EaXJlY3RpdmUsXG4gICAgRm9jdXNLZXlNYW5hZ2VyTGlzdERpcmVjdGl2ZSxcbiAgICBOdWxsYWJsZSxcbiAgICBSdGxTZXJ2aWNlLFxuICAgIHdhcm5PbmNlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuaW1wb3J0IHsgUGFnaW5hdGlvbiB9IGZyb20gJy4vcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vcGFnaW5hdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZEX0xBTkdVQUdFLCBGZExhbmd1YWdlLCBUcmFuc2xhdGlvblJlc29sdmVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcblxuLyoqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgZGVmYXVsdCBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuICovXG5jb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gMTA7XG5cbmludGVyZmFjZSBDdXJyZW50U2hvd2luZyB7XG4gICAgZnJvbTogbnVtYmVyO1xuICAgIHRvOiBudW1iZXI7XG4gICAgdG90YWxDb3VudDogbnVtYmVyO1xuICAgIC8qKiBAZGVwcmVjYXRlZCBoYXMgYmVlbiByZW5hbWVkIHRvIFwidG90YWxDb3VudFwiICovXG4gICAgb2Y6IG51bWJlcjtcbn1cblxubGV0IHBhZ2luYXRpb25VbmlxdWVJZCA9IDA7XG5cbi8qKlxuICogVGhlIGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gcHJvdmlkZSBuYXZpZ2F0aW9uIGJldHdlZW4gcGFnZWQgaW5mb3JtYXRpb24uXG4gKiBgYGBodG1sXG4gKiA8ZmQtcGFnaW5hdGlvblxuICogICAgICAgICAgW3RvdGFsSXRlbXNdPVwiNTBcIlxuICogICAgICAgICAgW2l0ZW1zUGVyUGFnZV09XCIxMFwiXG4gKiAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiM1wiPlxuICogPC9mZC1wYWdpbmF0aW9uPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtcGFnaW5hdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1BhZ2luYXRpb25TZXJ2aWNlLCBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1wYWdpbmF0aW9uJyxcbiAgICAgICAgJ1tjbGFzcy5mZC1wYWdpbmF0aW9uLS1tb2JpbGVdJzogJ21vYmlsZScsXG4gICAgICAgICdbY2xhc3MuZmQtcGFnaW5hdGlvbi0tc2hvcnRdJzogJ19sYXN0UGFnZSA8PSA5J1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQYWdpbmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmUpXG4gICAgcmVhZG9ubHkgX2ZvY3VzS2V5TWFuYWdlckxpc3Q6IEZvY3VzS2V5TWFuYWdlckxpc3REaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oRm9jdXNLZXlNYW5hZ2VySXRlbURpcmVjdGl2ZSlcbiAgICByZWFkb25seSBfZm9jdXNLZXlNYW5hZ2VySXRlbXM6IFF1ZXJ5TGlzdDxGb2N1c0tleU1hbmFnZXJJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgncGFnZUlucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHJlYWRvbmx5IF9wYWdlSW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdjdXJyZW50UGFnZUVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICByZWFkb25seSBfY3VycmVudFBhZ2VFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIElkIGZvciB0aGUgcGFnaW5hdGlvbiBjb21wb25lbnQuIElmIG9taXR0ZWQsIGEgdW5pcXVlIG9uZSBpcyBnZW5lcmF0ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nID0gJ2ZkLXBhZ2luYXRpb24tJyArIHBhZ2luYXRpb25VbmlxdWVJZCsrO1xuXG4gICAgLyoqIFdoZXRoZXIgY29tcG9uZW50IHNob3VsZCBiZSBzaG93biBpbiB0aGUgbW9iaWxlIG1vZGUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbW9iaWxlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fbW9iaWxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IG1vYmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vYmlsZTtcbiAgICB9XG5cbiAgICAvKiogUmVwcmVzZW50cyB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdG90YWxJdGVtczogbnVtYmVyO1xuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY3VycmVudFBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IE1hdGguZmxvb3IoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIDEpKTtcbiAgICB9XG4gICAgZ2V0IGN1cnJlbnRQYWdlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZTtcbiAgICB9XG5cbiAgICAvKiogUmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zUGVyUGFnZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHZhbHVlID0gTWF0aC5mbG9vcihjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgREVGQVVMVF9JVEVNU19QRVJfUEFHRSkpO1xuXG4gICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IE1hdGgubWF4KHZhbHVlLCAxKTtcblxuICAgICAgICB0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKTtcbiAgICB9XG4gICAgZ2V0IGl0ZW1zUGVyUGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNQZXJQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXN0b20gdGVtcGxhdGUgc2hvdyByYW5nZSBvZiBpdGVtIGJ5IGN1cnJlbnQgcGFnZSBvZiBpdGVtcy5cbiAgICAgKiBJdCBoYXMgaGlnaGVyIHByaW9yaXR5IHRoYW4gYGl0ZW1zUGVyUGFnZU9wdGlvbnNgIHByb3BlcnR5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXRlbXNQZXJQYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIExhYmVsIGZvciBvcHRpb25zIGZvciBpdGVtcyBwZXIgcGFnZS5cbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zUGVyUGFnZUxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGl0ZW1zUGVyUGFnZUxhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24uaXRlbXNQZXJQYWdlTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGl0ZW1zUGVyUGFnZUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2VMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2l0ZW1zUGVyUGFnZUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogUmVwcmVzZW50cyB0aGUgb3B0aW9ucyBmb3IgaXRlbXMgcGVyIHBhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaXRlbXNQZXJQYWdlT3B0aW9ucyh2YWx1ZTogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlT3B0aW9ucyA9IGNvZXJjZUFycmF5PG51bWJlcj4odmFsdWUpXG4gICAgICAgICAgICAubWFwKCh2KSA9PiBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2LCAwKSlcbiAgICAgICAgICAgIC5tYXAoKHYpID0+IE1hdGguZmxvb3IodikpXG4gICAgICAgICAgICAuZmlsdGVyKCh2KSA9PiB2ID4gMClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCk7XG4gICAgfVxuICAgIGdldCBpdGVtc1BlclBhZ2VPcHRpb25zKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZU9wdGlvbnM7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVRvdGFsSXRlbXMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRlbXBsYXRlIHNob3cgcmFuZ2Ugb2YgaXRlbSBieSBjdXJyZW50IHBhZ2Ugb2YgaXRlbXMuXG4gICAgICogRGVmYXVsdCB2aWV3OiBTaG93aW5nIHt7IGZyb20gfX0te3sgdG8gfX0gb2Yge3sgb2YgfX1cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlUZXh0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIExhYmVsIGZvciB0aGUgJ2ZpcnN0JyBwYWdlIGJ1dHRvbi5cbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZpcnN0TGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB3YXJuT25jZShcIlByb3BlcnR5IGZpcnN0TGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5maXJzdExhYmVsJyBrZXkgaW5zdGVhZC5cIik7XG4gICAgICAgIHRoaXMuX2ZpcnN0TGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgZmlyc3RMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZpcnN0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAncHJldmlvdXMnIHBhZ2UgYnV0dG9uLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcHJldmlvdXNMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgXCJQcm9wZXJ0eSBwcmV2aW91c0xhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24ucHJldmlvdXNMYWJlbCcga2V5IGluc3RlYWQuXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNMYWJlbCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldCBwcmV2aW91c0xhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmV2aW91c0xhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldmlvdXNMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBMYWJlbCBmb3IgdGhlICduZXh0JyBwYWdlIGJ1dHRvbi5cbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG5leHRMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlByb3BlcnR5IG5leHRMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLm5leHRMYWJlbCcga2V5IGluc3RlYWQuXCIpO1xuICAgICAgICB0aGlzLl9uZXh0TGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbmV4dExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uZXh0TGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9uZXh0TGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAnbGFzdCcgcGFnZSBidXR0b24uXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCByZWFkaW5nIGluIHRoZSByaWdodCBsYW5ndWFnZSBmb3Igc2NyZWVuIHJlYWRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBsYXN0TGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJQcm9wZXJ0eSBsYXN0TGFiZWwgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5sYXN0TGFiZWwnIGtleSBpbnN0ZWFkLlwiKTtcbiAgICAgICAgdGhpcy5fbGFzdExhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGxhc3RMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdExhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFzdExhYmVsOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIEFyaWEgbGFiZWwgZm9yIHRoZSBuYXZpZ2F0aW9uIGVsZW1lbnRcbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IHJlYWRpbmcgaW4gdGhlIHJpZ2h0IGxhbmd1YWdlIGZvciBzY3JlZW4gcmVhZGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFyaWFMYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlByb3BlcnR5IGFyaWFMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLmFyaWFMYWJlbCcga2V5IGluc3RlYWQuXCIpO1xuICAgICAgICB0aGlzLl9hcmlhTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgYXJpYUxhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcmlhTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICogTGFiZWwgZm9yIHRoZSAnUGFnZSAnIHBhZ2UgYnV0dG9uLiBQYWdlIG51bWJlciBwYXNzZWQgYXMgZnVuY3Rpb24gcGFyYW1ldGVyLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgcGFnZUxhYmVsKHZhbHVlOiBOdWxsYWJsZTwocGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+KSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcIlByb3BlcnR5IHBhZ2VMYWJlbCBpcyBkZXByZWNhdGVkLiBVc2UgaTE4biBjYXBhYmlsaXRpZXMgJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcga2V5IGluc3RlYWQuXCIpO1xuICAgICAgICB0aGlzLl9wYWdlTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgcGFnZUxhYmVsKCk6IE51bGxhYmxlPChwYWdlOiBudW1iZXIpID0+IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZUxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcGFnZUxhYmVsOiBOdWxsYWJsZTwocGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBGdW5jdGlvbiB0byBjcmVhdGUgY3VycmVudCBwYWdlIGFyaWEgbGFiZWwsIGN1cnJlbnQgcGFnZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIgb2YgdGhlIGZ1bmN0aW9uXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCByZWFkaW5nIGluIHRoZSByaWdodCBsYW5ndWFnZSBmb3Igc2NyZWVuIHJlYWRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBjdXJyZW50UGFnZUFyaWFMYWJlbCh2YWx1ZTogTnVsbGFibGU8KGN1cnJlbnRQYWdlOiBudW1iZXIpID0+IHN0cmluZz4pIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGN1cnJlbnRQYWdlQXJpYUxhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24uY3VycmVudFBhZ2VBcmlhTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlQXJpYUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRQYWdlQXJpYUxhYmVsKCk6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRQYWdlQXJpYUxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFBhZ2VBcmlhTGFiZWw6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyKSA9PiBzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBQYWdlIGxhYmVsIHRvIGJlIHNob3duIGJlZm9yZSBjdXJyZW50IHBhZ2UgaW5wdXQgaW4gbW9iaWxlIG1vZGUuXG4gICAgICogSW4gY29uanVjdGlvbiB3aXRoIEBwYWdlTGFiZWxBZnRlcklucHV0TW9iaWxlIGdlbmVyYXRlcyB0aGUgbGFiZWwgZm9yIHRoZSBpbnB1dC5cbiAgICAgKiBFeGFtcGxlOiAnUGFnZScgKyBpbnB1dCArIHBhZ2VMYWJlbEFmdGVySW5wdXRNb2JpbGVcbiAgICAgKiBUaGlzIHByb3BlcnR5IGlzIG1haW5seSBwcm92aWRlZCB0byBzdXBwb3J0IGkxOG4uXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBASW5wdXQoKVxuICAgIHNldCBsYWJlbEJlZm9yZUlucHV0TW9iaWxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGxhYmVsQmVmb3JlSW5wdXRNb2JpbGUgaXMgZGVwcmVjYXRlZC4gVXNlIGkxOG4gY2FwYWJpbGl0aWVzICdjb3JlUGFnaW5hdGlvbi5sYWJlbEJlZm9yZUlucHV0TW9iaWxlJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9sYWJlbEJlZm9yZUlucHV0TW9iaWxlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGxhYmVsQmVmb3JlSW5wdXRNb2JpbGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsQmVmb3JlSW5wdXRNb2JpbGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sYWJlbEJlZm9yZUlucHV0TW9iaWxlOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqIFBhZ2UgbGFiZWwgdG8gYmUgc2hvd24gYWZ0ZXIgY3VycmVudCBwYWdlIGlucHV0IGluIG1vYmlsZSBtb2RlLiBQYWdlcyBjb3VudCBwYXNzZWQgYXMgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlci5cbiAgICAgKiBJbiBjb25qdWN0aW9uIHdpdGggQHBhZ2VMYWJlbEJlZm9yZUlucHV0TW9iaWxlIGdlbmVyYXRlcyB0aGUgbGFiZWwgZm9yIHRoZSBpbnB1dC5cbiAgICAgKiBFeGFtcGxlOiBwYWdlTGFiZWxCZWZvcmVJbnB1dE1vYmlsZSArIGlucHV0ICsgJ29mIDUwMCcuXG4gICAgICogVGhpcyBwcm9wZXJ0eSBpcyBtYWlubHkgcHJvdmlkZWQgdG8gc3VwcG9ydCBpMThuLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZSh2YWx1ZTogTnVsbGFibGU8KHBhZ2VzQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nPikge1xuICAgICAgICB3YXJuT25jZShcbiAgICAgICAgICAgIFwiUHJvcGVydHkgbGFiZWxBZnRlcklucHV0TW9iaWxlIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24ubGFiZWxBZnRlcklucHV0TW9iaWxlJyBrZXkgaW5zdGVhZC5cIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9sYWJlbEFmdGVySW5wdXRNb2JpbGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBnZXQgbGFiZWxBZnRlcklucHV0TW9iaWxlKCk6IE51bGxhYmxlPChwYWdlc0NvdW50OiBudW1iZXIpID0+IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxBZnRlcklucHV0TW9iaWxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGFiZWxBZnRlcklucHV0TW9iaWxlOiBOdWxsYWJsZTwocGFnZXNDb3VudDogbnVtYmVyKSA9PiBzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKiBDdXJyZW50IHBhZ2UgaW5wdXQgYXJpYSBsYWJlbCwgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIChjdXJyZW50UGFnZTogbnVtYmVyLCBwYWdlc0NvdW50OiBudW1iZXIpLlxuICAgICAqIFRoaXMgcHJvcGVydHkgaXMgbWFpbmx5IHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVhZGluZyBpbiB0aGUgcmlnaHQgbGFuZ3VhZ2UgZm9yIHNjcmVlbiByZWFkZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaW5wdXRBcmlhTGFiZWwodmFsdWU6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyLCBwYWdlc0NvdW50OiBudW1iZXIpID0+IHN0cmluZz4pIHtcbiAgICAgICAgd2Fybk9uY2UoXG4gICAgICAgICAgICBcIlByb3BlcnR5IGlucHV0QXJpYUxhYmVsIGlzIGRlcHJlY2F0ZWQuIFVzZSBpMThuIGNhcGFiaWxpdGllcyAnY29yZVBhZ2luYXRpb24uaW5wdXRBcmlhTGFiZWwnIGtleSBpbnN0ZWFkLlwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2lucHV0QXJpYUxhYmVsID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0IGlucHV0QXJpYUxhYmVsKCk6IE51bGxhYmxlPChjdXJyZW50UGFnZTogbnVtYmVyLCBwYWdlc0NvdW50OiBudW1iZXIpID0+IHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRBcmlhTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbnB1dEFyaWFMYWJlbDogTnVsbGFibGU8KGN1cnJlbnRQYWdlOiBudW1iZXIsIHBhZ2VzQ291bnQ6IG51bWJlcikgPT4gc3RyaW5nPjtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHBhZ2UgaXMgY2hhbmdlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBwYWdlQ2hhbmdlU3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gaXRlbXMgcGVyIHBhZ2Ugb3B0aW9uIGlzIGNoYW5nZWQuKi9cbiAgICBAT3V0cHV0KClcbiAgICBpdGVtc1BlclBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BhZ2VzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGFnZXNCZWZvcmVDdXJyZW50OiBudW1iZXJbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BhZ2VzQWZ0ZXJDdXJyZW50OiBudW1iZXJbXTtcblxuICAgIC8qKlxuICAgICAqIFJldHJpZXZlcyBhbiBvYmplY3QgdGhhdCByZXByZXNlbnRzXG4gICAgICogdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcywgdGhlIGN1cnJlbnQgcGFnZSwgYW5kIHRoZSBudW1iZXIgb2YgaXRlbXMgcGVyIHBhZ2UuXG4gICAgICovXG4gICAgZ2V0IHBhZ2luYXRpb25PYmplY3QoKTogUGFnaW5hdGlvbiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0b3RhbEl0ZW1zOiB0aGlzLnRvdGFsSXRlbXMsXG4gICAgICAgICAgICBjdXJyZW50UGFnZTogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogdGhpcy5pdGVtc1BlclBhZ2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfbGFzdFBhZ2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0VG90YWxQYWdlcyh0aGlzLnBhZ2luYXRpb25PYmplY3QpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzRmlyc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA9PT0gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0xhc3RQYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA9PT0gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5nZXRUb3RhbFBhZ2VzKHRoaXMucGFnaW5hdGlvbk9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3RvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0VG90YWxQYWdlcyh0aGlzLnBhZ2luYXRpb25PYmplY3QpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF90b3RhbFBhZ2VzRWxlbWVudElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJ19fdG90YWwnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9tb3JlRWxlbWVudFZhbHVlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLm1vcmVFbGVtZW50VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY3VycmVudFNob3dpbmc6IEN1cnJlbnRTaG93aW5nID0ge1xuICAgICAgICBmcm9tOiAwLFxuICAgICAgICB0bzogMCxcbiAgICAgICAgb2Y6IDAsXG4gICAgICAgIHRvdGFsQ291bnQ6IDBcbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pdGVtc1BlclBhZ2U6IG51bWJlciA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pdGVtc1BlclBhZ2VPcHRpb25zOiBudW1iZXJbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3VycmVudFBhZ2UgPSAxO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90cmFuc2xhdGlvblJlc29sdmVyID0gbmV3IFRyYW5zbGF0aW9uUmVzb2x2ZXIoKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX2lzUnRsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnRsU2VydmljZT8ucnRsLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9saXZlQW5ub3VuY2VyOiBMaXZlQW5ub3VuY2VyLFxuICAgICAgICBASW5qZWN0KEZEX0xBTkdVQUdFKSBwcml2YXRlIHJlYWRvbmx5IF9sYW5ndWFnZTogT2JzZXJ2YWJsZTxGZExhbmd1YWdlPixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXM/LmN1cnJlbnRQYWdlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gY2hhbmdlcy5jdXJyZW50UGFnZS5jdXJyZW50VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRQYWdlIHx8IHRoaXMuY3VycmVudFBhZ2UgPCAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmdldFRvdGFsUGFnZXModGhpcy5wYWdpbmF0aW9uT2JqZWN0KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRQYWdlID4gdG90YWxQYWdlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0b3RhbFBhZ2VzO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3JlZnJlc2hQYWdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKHRoaXMuX3J0bFNlcnZpY2U/LnJ0bC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcmVmcmVzaFBhZ2VzKCkpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBza2lwSXRlbVByZWRpY2F0ZShpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGdldENvbXB1dGVkU3R5bGUoaXRlbS5uYXRpdmVFbGVtZW50KS5kaXNwbGF5ID09PSAnbm9uZScgfHxcbiAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgPT09ICd0cnVlJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBhIHNwZWNpZmljIHBhZ2UuXG4gICAgICogQHBhcmFtIHBhZ2UgVGhlIHBhZ2UgdG8gbmF2aWdhdGUgdG8uXG4gICAgICogQHBhcmFtIGV2ZW50IFRoZSBtb3VzZSBldmVudCAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIGdvVG9QYWdlKHBhZ2U6IG51bWJlciwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAocGFnZSA+IHRoaXMuX2xhc3RQYWdlIHx8IHBhZ2UgPCAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZWZyZXNoUGFnZXMoKTtcblxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzQ3VycmVudFBhZ2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGFnZUNoYW5nZVN0YXJ0LmVtaXQocGFnZSk7XG5cbiAgICAgICAgdGhpcy5fYW5ub3VuY2VQYWdlKHBhZ2UpO1xuICAgIH1cblxuICAgIC8qKiBOYXZpZ2F0ZXMgdG8gdGhlIGZpcnN0IHBhZ2UgKi9cbiAgICBnb1RvRmlyc3RQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlcyB0byBhIHByZXZpb3VzIHBhZ2UuXG4gICAgICovXG4gICAgcHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMuY3VycmVudFBhZ2UgLSAxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgcGFnZS5cbiAgICAgKi9cbiAgICBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSh0aGlzLmN1cnJlbnRQYWdlICsgMSk7XG4gICAgfVxuXG4gICAgLyoqIE5hdmlnYXRlcyB0byB0aGUgbGFzdCBwYWdlICovXG4gICAgZ29Ub0xhc3RQYWdlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdvVG9QYWdlKHRoaXMuX2xhc3RQYWdlKTtcbiAgICB9XG5cbiAgICAvKiogQGRlcHJlY2F0ZWQsIHVzZSB7QGxpbmsgcGFnaW5hdGlvbk9iamVjdH0gZ2V0dGVyIGluc3RlYWQgKi9cbiAgICBnZXRQYWdpbmF0aW9uT2JqZWN0KCk6IFBhZ2luYXRpb24ge1xuICAgICAgICB3YXJuT25jZSgnUGFnaW5hdGlvbkNvbXBvbmVudDogZ2V0UGFnaW5hdGlvbk9iamVjdCgpIGlzIGRlcHJlY2F0ZWQsIHVzZSBwYWdpbmF0aW9uT2JqZWN0IGdldHRlciBpbnN0ZWFkJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRpb25PYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25DaGFuZ2VQZXJQYWdlID0gKGV2ZW50OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBldmVudDtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2VDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zUGVyUGFnZSk7XG5cbiAgICAgICAgdGhpcy5fcmVmcmVzaFBhZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgbWF4UGFnZSA9IHRoaXMuX3BhZ2VzW3RoaXMuX3BhZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IG1heFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUNoYW5nZVN0YXJ0LmVtaXQobWF4UGFnZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVzdG9yZUlucHV0VmFsdWUobW9kZWw6IE5nTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW9kZWwucmVzZXQodGhpcy5jdXJyZW50UGFnZSk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hQYWdlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbiA9IHRoaXMucGFnaW5hdGlvbk9iamVjdDtcblxuICAgICAgICB0aGlzLl9wYWdlcyA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0UGFnZXMocGFnaW5hdGlvbik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VJbmRleCA9IHRoaXMuX3BhZ2VzLmZpbmRJbmRleCgocGFnZSkgPT4gcGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZSk7XG5cbiAgICAgICAgdGhpcy5fcGFnZXNCZWZvcmVDdXJyZW50ID0gdGhpcy5fcGFnZXMuc2xpY2UoMCwgY3VycmVudFBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMuX3BhZ2VzQWZ0ZXJDdXJyZW50ID0gdGhpcy5fcGFnZXMuc2xpY2UoY3VycmVudFBhZ2VJbmRleCArIDEpO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zUGVyUGFnZSA9IHBhZ2luYXRpb24uaXRlbXNQZXJQYWdlID8/IERFRkFVTFRfSVRFTVNfUEVSX1BBR0U7XG5cbiAgICAgICAgdGhpcy5fY3VycmVudFNob3dpbmcgPSB7XG4gICAgICAgICAgICBmcm9tOiB0aGlzLmN1cnJlbnRQYWdlIC0gMSA9PT0gMCA/IDEgOiAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgMSxcbiAgICAgICAgICAgIHRvOiBNYXRoLm1pbigodGhpcy5jdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgaXRlbXNQZXJQYWdlLCB0aGlzLnRvdGFsSXRlbXMpLFxuICAgICAgICAgICAgb2Y6IHRoaXMudG90YWxJdGVtcyxcbiAgICAgICAgICAgIHRvdGFsQ291bnQ6IHRoaXMudG90YWxJdGVtc1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogRm9jdXMgY3VycmVudCBwYWdlIGxpbmsvaW5wdXQgdXNpbmcgRm9jdXNLZXlNYW5hZ2VyXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2ZvY3VzQ3VycmVudFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlTmF0aXZlRWxlbWVudCA9XG4gICAgICAgICAgICBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX2N1cnJlbnRQYWdlRWxlbWVudC5uYXRpdmVFbGVtZW50KS5kaXNwbGF5ID09PSAnbm9uZSdcbiAgICAgICAgICAgICAgICA/IHRoaXMuX3BhZ2VJbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgICAgIDogdGhpcy5fY3VycmVudFBhZ2VFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9mb2N1c0tleU1hbmFnZXJJdGVtc1xuICAgICAgICAgICAgLnRvQXJyYXkoKVxuICAgICAgICAgICAgLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbS5uYXRpdmVFbGVtZW50ID09PSBjdXJyZW50UGFnZU5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIHRoaXMuX2ZvY3VzS2V5TWFuYWdlckxpc3QuZm9jdXNJdGVtKGluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBsaXN0IG9mIHBhZ2Ugc2l6ZSBvcHRpb25zIHRvIGRpc3BsYXkgdG8gdGhlIHVzZXIuIEluY2x1ZGVzIG1ha2luZyBzdXJlIHRoYXRcbiAgICAgKiB0aGUgcGFnZSBzaXplIGlzIGFuIG9wdGlvbiBhbmQgdGhhdCB0aGUgbGlzdCBpcyBzb3J0ZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICAvLyBJZiBubyBwYWdlIHNpemUgaXMgcHJvdmlkZWQsIHVzZSB0aGUgZmlyc3QgcGFnZSBzaXplIG9wdGlvbiBvciB0aGUgZGVmYXVsdCBwYWdlIHNpemUuXG4gICAgICAgIGlmICghdGhpcy5pdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZSA9IHRoaXMuaXRlbXNQZXJQYWdlT3B0aW9ucy5sZW5ndGggPyB0aGlzLml0ZW1zUGVyUGFnZU9wdGlvbnNbMF0gOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zID0gdGhpcy5pdGVtc1BlclBhZ2VPcHRpb25zPy5zbGljZSgpID8/IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLmluY2x1ZGVzKHRoaXMuaXRlbXNQZXJQYWdlKSkge1xuICAgICAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnB1c2godGhpcy5pdGVtc1BlclBhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGlzcGxheWVkUGFnZVNpemVPcHRpb25zLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfYW5ub3VuY2VQYWdlKHBhZ2U6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBsZXQgbGFiZWw6IHN0cmluZztcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhZ2VBcmlhTGFiZWwpIHtcbiAgICAgICAgICAgIGxhYmVsID0gdGhpcy5jdXJyZW50UGFnZUFyaWFMYWJlbChwYWdlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmcgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9sYW5ndWFnZSk7XG4gICAgICAgICAgICBsYWJlbCA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShsYW5nLCAnY29yZVBhZ2luYXRpb24uY3VycmVudFBhZ2VBcmlhTGFiZWwnLCB7XG4gICAgICAgICAgICAgICAgcGFnZU51bWJlcjogcGFnZSxcbiAgICAgICAgICAgICAgICB0b3RhbENvdW50OiB0aGlzLnRvdGFsSXRlbXNcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UobGFiZWwpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ0b3RhbEl0ZW1zXCI+XG4gICAgPGRpdiBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3Blci1wYWdlXCIgKm5nSWY9XCJpdGVtc1BlclBhZ2VUZW1wbGF0ZSB8fCBpdGVtc1BlclBhZ2VPcHRpb25zPy5sZW5ndGhcIj5cbiAgICAgICAgPCEtLSBub3RlLCB0aGF0IHdlJ3JlIGNoZWNraW5nIGZvciB0aGUgbGVuZ3RoIG9mIFwiaXRlbXNQZXJQYWdlT3B0aW9uc1wiLCBidXQgdXNpbmcgXCJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zXCIgYXMgXCJwYWdlT3B0aW9uc1wiIC0tPlxuICAgICAgICA8IS0tIHRoZXNlIDIgY2FuIGJlIGRpZmZlcmVudCwgYXMgXCJfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zXCIgbWF5IGFsc28gaW5jbHVkZSBcIml0ZW1zUGVyUGFnZVwiIGlmIGl0J3Mgbm90IGluY2x1ZGVkIGluIG9wdGlvbnMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1zUGVyUGFnZVRlbXBsYXRlIHx8IHBlclBhZ2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb25TZWxlY3Q6IF9vbkNoYW5nZVBlclBhZ2UsIHBhZ2VPcHRpb25zOiBfZGlzcGxheWVkUGFnZVNpemVPcHRpb25zIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8bmF2XG4gICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckxpc3RcbiAgICAgICAgb3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcbiAgICAgICAgW3NraXBQcmVkaWNhdGVdPVwic2tpcEl0ZW1QcmVkaWNhdGVcIlxuICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX25hdlwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24uYXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJkaXNwbGF5VG90YWxJdGVtcyA/IF90b3RhbFBhZ2VzRWxlbWVudElkIDogbnVsbFwiXG4gICAgICAgICpuZ0lmPVwidG90YWxJdGVtcyA+PSBpdGVtc1BlclBhZ2VcIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cIm1lZGlhLXJld2luZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNGaXJzdFBhZ2VcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJmaXJzdExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24uZmlyc3RMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW3RpdGxlXT1cImZpcnN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5maXJzdExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2J1dHRvbiBmZC1wYWdpbmF0aW9uX19idXR0b24tLW1vYmlsZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvRmlyc3RQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9GaXJzdFBhZ2UoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub0ZpcnN0UGFnZSgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLWxlZnQtYXJyb3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwicHJldmlvdXNMYWJlbCB8fCAoJ2NvcmVQYWdpbmF0aW9uLnByZXZpb3VzTGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJwcmV2aW91c0xhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ucHJldmlvdXNMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19idXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJpc0ZpcnN0UGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICA8IS0tIER1cGxpY2F0ZWQgdG8gcHJlc2VydmUgdGhlIGl0ZW1zIG9yZGVyIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYWdlIG9mIF9wYWdlc0JlZm9yZUN1cnJlbnRcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cInBhZ2UgIT09IF9tb3JlRWxlbWVudFZhbHVlOyBlbHNlIG1vcmVcIlxuICAgICAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJcbiAgICAgICAgICAgICAgICAgICAgcGFnZUxhYmVsID8gcGFnZUxhYmVsKHBhZ2UpIDogKCdjb3JlUGFnaW5hdGlvbi5wYWdlTGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IHBhZ2VOdW1iZXI6IHBhZ2UgfSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJcbiAgICAgICAgICAgICAgICAgICAgcGFnZUxhYmVsID8gcGFnZUxhYmVsKHBhZ2UpIDogKCdjb3JlUGFnaW5hdGlvbi5wYWdlTGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IHBhZ2VOdW1iZXI6IHBhZ2UgfSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbGlua1wiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9QYWdlKHBhZ2UpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZ29Ub1BhZ2UocGFnZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJnb1RvUGFnZShwYWdlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBwYWdlIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgI2N1cnJlbnRQYWdlRWxlbWVudFxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIHBhZ2VMYWJlbFxuICAgICAgICAgICAgICAgICAgICA/IHBhZ2VMYWJlbChjdXJyZW50UGFnZSlcbiAgICAgICAgICAgICAgICAgICAgOiAoJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UgfSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xpbmsgaXMtYWN0aXZlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtY3VycmVudF09XCJ0cnVlXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgY3VycmVudFBhZ2UgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19sYWJlbFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBsYWJlbEJlZm9yZUlucHV0TW9iaWxlXG4gICAgICAgICAgICAgICAgICAgID8gbGFiZWxCZWZvcmVJbnB1dE1vYmlsZSArICc6J1xuICAgICAgICAgICAgICAgICAgICA6ICgnY29yZVBhZ2luYXRpb24ubGFiZWxCZWZvcmVJbnB1dE1vYmlsZScgfCBmZFRyYW5zbGF0ZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjcGFnZUlucHV0RWxlbWVudFxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtZm9ybS1jb250cm9sXG4gICAgICAgICAgICBmZGtPbmx5RGlnaXRzXG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgc2l6ZT1cIjFcIlxuICAgICAgICAgICAgbWluPVwiMVwiXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFttYXhdPVwiX2xhc3RQYWdlXCJcbiAgICAgICAgICAgIFtzdGF0ZV09XCJjdXJyZW50UGFnZU1vZGVsLmludmFsaWQgPyAnZXJyb3InIDogbnVsbFwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2lucHV0XCJcbiAgICAgICAgICAgICNjdXJyZW50UGFnZU1vZGVsPVwibmdNb2RlbFwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJjdXJyZW50UGFnZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0QXJpYUxhYmVsXG4gICAgICAgICAgICAgICAgICAgID8gaW5wdXRBcmlhTGFiZWwoY3VycmVudFBhZ2UsIF90b3RhbFBhZ2VzKVxuICAgICAgICAgICAgICAgICAgICA6ICgnY29yZVBhZ2luYXRpb24uaW5wdXRBcmlhTGFiZWwnXG4gICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UsIHRvdGFsQ291bnQ6IF90b3RhbFBhZ2VzIH0pXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2VNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2VNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3Jlc3RvcmVJbnB1dFZhbHVlKGN1cnJlbnRQYWdlTW9kZWwpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xhYmVsXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZVxuICAgICAgICAgICAgICAgICAgICA/IGxhYmVsQWZ0ZXJJbnB1dE1vYmlsZShfbGFzdFBhZ2UpXG4gICAgICAgICAgICAgICAgICAgIDogKCdjb3JlUGFnaW5hdGlvbi5sYWJlbEFmdGVySW5wdXRNb2JpbGUnXG4gICAgICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogY3VycmVudFBhZ2UsIHRvdGFsQ291bnQ6IF90b3RhbFBhZ2VzIH0pXG4gICAgICAgICAgICB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDwhLS0gRHVwbGljYXRlZCB0byBwcmVzZXJ2ZSB0aGUgaXRlbXMgb3JkZXIgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgX3BhZ2VzQWZ0ZXJDdXJyZW50XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlICE9PSBfbW9yZUVsZW1lbnRWYWx1ZTsgZWxzZSBtb3JlXCJcbiAgICAgICAgICAgICAgICBmZGtGb2N1c0tleU1hbmFnZXJJdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VMYWJlbCA/IHBhZ2VMYWJlbChwYWdlKSA6ICgnY29yZVBhZ2luYXRpb24ucGFnZUxhYmVsJyB8IGZkVHJhbnNsYXRlIDogeyBwYWdlTnVtYmVyOiBwYWdlIH0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VMYWJlbCA/IHBhZ2VMYWJlbChwYWdlKSA6ICgnY29yZVBhZ2luYXRpb24ucGFnZUxhYmVsJyB8IGZkVHJhbnNsYXRlIDogeyBwYWdlTnVtYmVyOiBwYWdlIH0pXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xpbmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdlKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9QYWdlKHBhZ2UsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub1BhZ2UocGFnZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwibmV4dExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ubmV4dExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwibmV4dExhYmVsIHx8ICgnY29yZVBhZ2luYXRpb24ubmV4dExhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2J1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzTGFzdFBhZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm5leHRQYWdlKClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm5leHRQYWdlKClcIlxuICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cIm1lZGlhLWZvcndhcmRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTGFzdFBhZ2VcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCJsYXN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5sYXN0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJsYXN0TGFiZWwgfHwgKCdjb3JlUGFnaW5hdGlvbi5sYXN0TGFiZWwnIHwgZmRUcmFuc2xhdGUpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fYnV0dG9uIGZkLXBhZ2luYXRpb25fX2J1dHRvbi0tbW9iaWxlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNMYXN0UGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0xhc3RQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9MYXN0UGFnZSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJnb1RvTGFzdFBhZ2UoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L25hdj5cblxuICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheVRvdGFsSXRlbXNcIiBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3RvdGFsXCIgW2F0dHIuaWRdPVwiX3RvdGFsUGFnZXNFbGVtZW50SWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGlzcGxheVRleHRUZW1wbGF0ZSB8fCB0b3RhbFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzaG93aW5nOiBfY3VycmVudFNob3dpbmcgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNtb3JlPlxuICAgIDxzcGFuIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbW9yZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGFyaWEtbGFiZWw9XCIuLi5cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0b3RhbCBsZXQtc2hvd2luZz1cInNob3dpbmdcIj5cbiAgICA8c3BhbiBmZC1mb3JtLWxhYmVsIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fdG90YWwtbGFiZWxcIj5cbiAgICAgICAge3sgJ2NvcmVQYWdpbmF0aW9uLnRvdGFsUmVzdWx0c0xhYmVsJyB8IGZkVHJhbnNsYXRlIDogX2N1cnJlbnRTaG93aW5nIH19XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwZXJQYWdlIGxldC1wYWdlT3B0aW9ucz1cInBhZ2VPcHRpb25zXCI+XG4gICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19wZXItcGFnZS1sYWJlbFwiPlxuICAgICAgICB7eyBpdGVtc1BlclBhZ2VMYWJlbCA/IGl0ZW1zUGVyUGFnZUxhYmVsICsgJzonIDogKCdjb3JlUGFnaW5hdGlvbi5pdGVtc1BlclBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSkgfX1cbiAgICA8L2xhYmVsPlxuXG4gICAgPGZkLXNlbGVjdCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3Blci1wYWdlLXNlbGVjdFwiIFt2YWx1ZV09XCJpdGVtc1BlclBhZ2VcIiAodmFsdWVDaGFuZ2UpPVwiX29uQ2hhbmdlUGVyUGFnZSgkZXZlbnQpXCI+XG4gICAgICAgIDxsaSBmZC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwYWdlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L2xpPlxuICAgIDwvZmQtc2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVQsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdoRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsNEJBQTRCLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHcEgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBYyxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBRWhILGtFQUFrRTtBQUNsRSxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQVFsQyxJQUFJLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUUzQjs7Ozs7Ozs7O0dBU0c7QUFlSCxNQUFNLE9BQU8sbUJBQW1CO0lBcUI1Qiw0REFBNEQ7SUFDNUQsSUFDSSxNQUFNLENBQUMsS0FBbUI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFNRCwwQ0FBMEM7SUFDMUMsSUFDSSxXQUFXLENBQUMsS0FBYTtRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsK0NBQStDO0lBQy9DLElBQ0ksWUFBWSxDQUFDLEtBQWE7UUFDMUIsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQztRQUV4RSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQVNELGlEQUFpRDtJQUNqRCxJQUNJLG1CQUFtQixDQUFDLEtBQWU7UUFDbkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFdBQVcsQ0FBUyxLQUFLLENBQUM7YUFDakQsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwQixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUE4QkQ7OztPQUdHO0lBQ0gsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTztZQUNILFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2xDLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsY0FBYztJQUNkLElBQUksb0JBQW9CO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNuRCxDQUFDO0lBOEJELGNBQWM7SUFDZCxZQUNxQixpQkFBb0MsRUFDcEMsSUFBdUIsRUFDdkIsY0FBNkIsRUFDUixTQUFpQyxFQUMxQyxXQUF1QixFQUMzQyx1QkFBK0M7UUFMdkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQUN2QixtQkFBYyxHQUFkLGNBQWMsQ0FBZTtRQUNSLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBQzFDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQzNDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBd0I7UUF0SzVELDhFQUE4RTtRQUU5RSxPQUFFLEdBQVcsZ0JBQWdCLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQztRQTJEckQsb0RBQW9EO1FBRXBELHNCQUFpQixHQUFHLElBQUksQ0FBQztRQVN6Qiw4Q0FBOEM7UUFFOUMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTdDLDBEQUEwRDtRQUUxRCx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWhELGNBQWM7UUFDZCxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBa0R0QixjQUFjO1FBQ2Qsb0JBQWUsR0FBbUI7WUFDOUIsSUFBSSxFQUFFLENBQUM7WUFDUCxFQUFFLEVBQUUsQ0FBQztZQUNMLFVBQVUsRUFBRSxDQUFDO1NBQ2hCLENBQUM7UUFFRixjQUFjO1FBQ2QsOEJBQXlCLEdBQWEsRUFBRSxDQUFDO1FBRXpDLGNBQWM7UUFDTixrQkFBYSxHQUFXLHNCQUFzQixDQUFDO1FBRXZELGNBQWM7UUFDTixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBS3hCLGNBQWM7UUFDTixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUV6QixjQUFjO1FBQ04sbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTVDLGNBQWM7UUFDTix5QkFBb0IsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUEyRnpELGNBQWM7UUFDZCxxQkFBZ0IsR0FBRyxDQUFDLEtBQWEsRUFBUSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRWhELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3BELElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3RDO1FBQ0wsQ0FBQyxDQUFDO0lBNUZDLENBQUM7SUFFSixjQUFjO0lBQ2QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksT0FBTyxFQUFFLFdBQVcsRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7U0FDeEI7YUFBTTtZQUNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDL0UsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7YUFDakM7U0FDSjtRQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsY0FBYztJQUNkLFFBQVE7UUFDSixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRUQsY0FBYztJQUNkLFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLENBQUMsSUFBUztRQUN2QixPQUFPLENBQ0gsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sS0FBSyxNQUFNO1lBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLE1BQU0sQ0FDekQsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLElBQVksRUFBRSxLQUFhO1FBQ2hDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRTtZQUNuQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFckIsSUFBSSxLQUFLLEVBQUU7WUFDUCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUM1QjtRQUVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxhQUFhO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxZQUFZO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQWVELGNBQWM7SUFDZCxrQkFBa0IsQ0FBQyxLQUFjO1FBQzdCLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7SUFDTixhQUFhO1FBQ2pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUV6QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVwRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxZQUFZLElBQUksc0JBQXNCLENBQUM7UUFFdkUsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsR0FBRyxZQUFZLEdBQUcsQ0FBQztZQUNoRixFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsWUFBWSxHQUFHLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ25GLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxpQkFBaUI7UUFDckIsTUFBTSx3QkFBd0IsR0FDMUIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sS0FBSyxNQUFNO1lBQ3ZFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYTtZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQztRQUVqRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMscUJBQXFCO2FBQ25DLE9BQU8sRUFBRTthQUNULFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyx3QkFBd0IsQ0FBQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNLLCtCQUErQjtRQUNuQyx3RkFBd0Y7UUFDeEYsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDO1NBQy9HO1FBRUQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFFekUsSUFBSSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQzdELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzFEO1FBRUQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxjQUFjO0lBQ04sS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFZO1FBQ3BDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQzlCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQzdCLE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFDcEMscUNBQXFDLEVBQ3JDO1lBQ0ksVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzlCLENBQ0osQ0FDSixDQUFDO0lBQ04sQ0FBQzs4R0FsV1EsbUJBQW1CLGlIQXFMaEIsV0FBVztrR0FyTGQsbUJBQW1CLGlrQkFYakIsQ0FBQyxpQkFBaUIsRUFBRSwrQkFBK0IsRUFBRSxDQUFDLGdGQWF0RCw0QkFBNEIsbUlBUUEsVUFBVSxvSEFJUixVQUFVLHdEQVJyQyw0QkFBNEIscUVDekU5Qyxna1FBa01BOzsyRkQvSGEsbUJBQW1CO2tCQWQvQixTQUFTOytCQUNJLGVBQWUsYUFFZCxDQUFDLGlCQUFpQixFQUFFLCtCQUErQixFQUFFLENBQUMsUUFDM0Q7d0JBQ0YsS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLCtCQUErQixFQUFFLFFBQVE7d0JBQ3pDLDhCQUE4QixFQUFFLGdCQUFnQjtxQkFDbkQsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxtQkFFcEIsdUJBQXVCLENBQUMsTUFBTSx1QkFDMUIsSUFBSTs7MEJBdUxwQixNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFRO2lGQW5MSixvQkFBb0I7c0JBRDVCLFNBQVM7dUJBQUMsNEJBQTRCO2dCQUs5QixxQkFBcUI7c0JBRDdCLFlBQVk7dUJBQUMsNEJBQTRCO2dCQUtqQyxpQkFBaUI7c0JBRHpCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUsxQyxtQkFBbUI7c0JBRDNCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUtyRCxFQUFFO3NCQURELEtBQUs7Z0JBS0YsTUFBTTtzQkFEVCxLQUFLO2dCQVVOLFVBQVU7c0JBRFQsS0FBSztnQkFLRixXQUFXO3NCQURkLEtBQUs7Z0JBVUYsWUFBWTtzQkFEZixLQUFLO2dCQWlCTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBS0YsbUJBQW1CO3NCQUR0QixLQUFLO2dCQWdCTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBUU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VBcnJheSwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBGb2N1c0tleU1hbmFnZXJJdGVtRGlyZWN0aXZlLCBGb2N1c0tleU1hbmFnZXJMaXN0RGlyZWN0aXZlLCBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5pbXBvcnQgeyBQYWdpbmF0aW9uIH0gZnJvbSAnLi9wYWdpbmF0aW9uLm1vZGVsJztcbmltcG9ydCB7IFBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wYWdpbmF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRkRfTEFOR1VBR0UsIEZkTGFuZ3VhZ2UsIFRyYW5zbGF0aW9uUmVzb2x2ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlPYnNlcnZlciwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuXG4vKiogQ29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSBkZWZhdWx0IG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS4gKi9cbmNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSAxMDtcblxuaW50ZXJmYWNlIEN1cnJlbnRTaG93aW5nIHtcbiAgICBmcm9tOiBudW1iZXI7XG4gICAgdG86IG51bWJlcjtcbiAgICB0b3RhbENvdW50OiBudW1iZXI7XG59XG5cbmxldCBwYWdpbmF0aW9uVW5pcXVlSWQgPSAwO1xuXG4vKipcbiAqIFRoZSBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHByb3ZpZGUgbmF2aWdhdGlvbiBiZXR3ZWVuIHBhZ2VkIGluZm9ybWF0aW9uLlxuICogYGBgaHRtbFxuICogPGZkLXBhZ2luYXRpb25cbiAqICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cIjUwXCJcbiAqICAgICAgICAgIFtpdGVtc1BlclBhZ2VdPVwiMTBcIlxuICogICAgICAgICAgW2N1cnJlbnRQYWdlXT1cIjNcIj5cbiAqIDwvZmQtcGFnaW5hdGlvbj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLXBhZ2luYXRpb24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtQYWdpbmF0aW9uU2VydmljZSwgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycygpXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnZmQtcGFnaW5hdGlvbicsXG4gICAgICAgICdbY2xhc3MuZmQtcGFnaW5hdGlvbi0tbW9iaWxlXSc6ICdtb2JpbGUnLFxuICAgICAgICAnW2NsYXNzLmZkLXBhZ2luYXRpb24tLXNob3J0XSc6ICdfbGFzdFBhZ2UgPD0gOSdcbiAgICB9LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChGb2N1c0tleU1hbmFnZXJMaXN0RGlyZWN0aXZlKVxuICAgIHJlYWRvbmx5IF9mb2N1c0tleU1hbmFnZXJMaXN0OiBGb2N1c0tleU1hbmFnZXJMaXN0RGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKEZvY3VzS2V5TWFuYWdlckl0ZW1EaXJlY3RpdmUpXG4gICAgcmVhZG9ubHkgX2ZvY3VzS2V5TWFuYWdlckl0ZW1zOiBRdWVyeUxpc3Q8Rm9jdXNLZXlNYW5hZ2VySXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BhZ2VJbnB1dEVsZW1lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICByZWFkb25seSBfcGFnZUlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnY3VycmVudFBhZ2VFbGVtZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcmVhZG9ubHkgX2N1cnJlbnRQYWdlRWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBJZCBmb3IgdGhlIHBhZ2luYXRpb24gY29tcG9uZW50LiBJZiBvbWl0dGVkLCBhIHVuaXF1ZSBvbmUgaXMgZ2VuZXJhdGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaWQ6IHN0cmluZyA9ICdmZC1wYWdpbmF0aW9uLScgKyBwYWdpbmF0aW9uVW5pcXVlSWQrKztcblxuICAgIC8qKiBXaGV0aGVyIGNvbXBvbmVudCBzaG91bGQgYmUgc2hvd24gaW4gdGhlIG1vYmlsZSBtb2RlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1vYmlsZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX21vYmlsZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBtb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2JpbGU7XG4gICAgfVxuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRvdGFsSXRlbXM6IG51bWJlcjtcblxuICAgIC8qKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGN1cnJlbnRQYWdlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fY3VycmVudFBhZ2UgPSBNYXRoLmZsb29yKGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCAxKSk7XG4gICAgfVxuICAgIGdldCBjdXJyZW50UGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U7XG4gICAgfVxuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtc1BlclBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgICAgICB2YWx1ZSA9IE1hdGguZmxvb3IoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UpKTtcblxuICAgICAgICB0aGlzLl9pdGVtc1BlclBhZ2UgPSBNYXRoLm1heCh2YWx1ZSwgMSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCk7XG4gICAgfVxuICAgIGdldCBpdGVtc1BlclBhZ2UoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zUGVyUGFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VzdG9tIHRlbXBsYXRlIHNob3cgcmFuZ2Ugb2YgaXRlbSBieSBjdXJyZW50IHBhZ2Ugb2YgaXRlbXMuXG4gICAgICogSXQgaGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuIGBpdGVtc1BlclBhZ2VPcHRpb25zYCBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1zUGVyUGFnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIFJlcHJlc2VudHMgdGhlIG9wdGlvbnMgZm9yIGl0ZW1zIHBlciBwYWdlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zUGVyUGFnZU9wdGlvbnModmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIHRoaXMuX2l0ZW1zUGVyUGFnZU9wdGlvbnMgPSBjb2VyY2VBcnJheTxudW1iZXI+KHZhbHVlKVxuICAgICAgICAgICAgLm1hcCgodikgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkodiwgMCkpXG4gICAgICAgICAgICAubWFwKCh2KSA9PiBNYXRoLmZsb29yKHYpKVxuICAgICAgICAgICAgLmZpbHRlcigodikgPT4gdiA+IDApXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpO1xuICAgIH1cbiAgICBnZXQgaXRlbXNQZXJQYWdlT3B0aW9ucygpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1BlclBhZ2VPcHRpb25zO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRvIGRpc3BsYXkgdGhlIHRvdGFsIG51bWJlciBvZiBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlUb3RhbEl0ZW1zID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZW1wbGF0ZSBzaG93IHJhbmdlIG9mIGl0ZW0gYnkgY3VycmVudCBwYWdlIG9mIGl0ZW1zLlxuICAgICAqIERlZmF1bHQgdmlldzogU2hvd2luZyB7eyBmcm9tIH19LXt7IHRvIH19IG9mIHt7IG9mIH19XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5VGV4dFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcGFnZSBpcyBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHBhZ2VDaGFuZ2VTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBpdGVtcyBwZXIgcGFnZSBvcHRpb24gaXMgY2hhbmdlZC4qL1xuICAgIEBPdXRwdXQoKVxuICAgIGl0ZW1zUGVyUGFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGFnZXM6IG51bWJlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wYWdlc0JlZm9yZUN1cnJlbnQ6IG51bWJlcltdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcGFnZXNBZnRlckN1cnJlbnQ6IG51bWJlcltdO1xuXG4gICAgLyoqXG4gICAgICogUmV0cmlldmVzIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHNcbiAgICAgKiB0aGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zLCB0aGUgY3VycmVudCBwYWdlLCBhbmQgdGhlIG51bWJlciBvZiBpdGVtcyBwZXIgcGFnZS5cbiAgICAgKi9cbiAgICBnZXQgcGFnaW5hdGlvbk9iamVjdCgpOiBQYWdpbmF0aW9uIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvdGFsSXRlbXM6IHRoaXMudG90YWxJdGVtcyxcbiAgICAgICAgICAgIGN1cnJlbnRQYWdlOiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiB0aGlzLml0ZW1zUGVyUGFnZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9sYXN0UGFnZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5nZXRUb3RhbFBhZ2VzKHRoaXMucGFnaW5hdGlvbk9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgaXNGaXJzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlID09PSAxO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRQYWdlID09PSB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLmdldFRvdGFsUGFnZXModGhpcy5wYWdpbmF0aW9uT2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfdG90YWxQYWdlcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5nZXRUb3RhbFBhZ2VzKHRoaXMucGFnaW5hdGlvbk9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3RvdGFsUGFnZXNFbGVtZW50SWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWQgKyAnX190b3RhbCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX21vcmVFbGVtZW50VmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGlvblNlcnZpY2UubW9yZUVsZW1lbnRWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jdXJyZW50U2hvd2luZzogQ3VycmVudFNob3dpbmcgPSB7XG4gICAgICAgIGZyb206IDAsXG4gICAgICAgIHRvOiAwLFxuICAgICAgICB0b3RhbENvdW50OiAwXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXllZFBhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXRlbXNQZXJQYWdlOiBudW1iZXIgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9tb2JpbGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaXRlbXNQZXJQYWdlT3B0aW9uczogbnVtYmVyW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2N1cnJlbnRQYWdlID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRpb25SZXNvbHZlciA9IG5ldyBUcmFuc2xhdGlvblJlc29sdmVyKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2luYXRpb25TZXJ2aWNlOiBQYWdpbmF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlcjogTGl2ZUFubm91bmNlcixcbiAgICAgICAgQEluamVjdChGRF9MQU5HVUFHRSkgcHJpdmF0ZSByZWFkb25seSBfbGFuZ3VhZ2U6IE9ic2VydmFibGU8RmRMYW5ndWFnZT4sXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgX3J0bFNlcnZpY2U6IFJ0bFNlcnZpY2UsXG4gICAgICAgIHJlYWRvbmx5IF9jb250ZW50RGVuc2l0eU9ic2VydmVyOiBDb250ZW50RGVuc2l0eU9ic2VydmVyXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzPy5jdXJyZW50UGFnZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IGNoYW5nZXMuY3VycmVudFBhZ2UuY3VycmVudFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50UGFnZSB8fCB0aGlzLmN1cnJlbnRQYWdlIDwgMSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID0gdGhpcy5wYWdpbmF0aW9uU2VydmljZS5nZXRUb3RhbFBhZ2VzKHRoaXMucGFnaW5hdGlvbk9iamVjdCk7XG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IHRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdG90YWxQYWdlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZWZyZXNoUGFnZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZCh0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3JlZnJlc2hQYWdlcygpKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2tpcEl0ZW1QcmVkaWNhdGUoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBnZXRDb21wdXRlZFN0eWxlKGl0ZW0ubmF0aXZlRWxlbWVudCkuZGlzcGxheSA9PT0gJ25vbmUnIHx8XG4gICAgICAgICAgICBpdGVtLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpID09PSAndHJ1ZSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gYSBzcGVjaWZpYyBwYWdlLlxuICAgICAqIEBwYXJhbSBwYWdlIFRoZSBwYWdlIHRvIG5hdmlnYXRlIHRvLlxuICAgICAqIEBwYXJhbSBldmVudCBUaGUgbW91c2UgZXZlbnQgKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICBnb1RvUGFnZShwYWdlOiBudW1iZXIsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhZ2UgPiB0aGlzLl9sYXN0UGFnZSB8fCBwYWdlIDwgMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcmVmcmVzaFBhZ2VzKCk7XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0N1cnJlbnRQYWdlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2VTdGFydC5lbWl0KHBhZ2UpO1xuXG4gICAgICAgIHRoaXMuX2Fubm91bmNlUGFnZShwYWdlKTtcbiAgICB9XG5cbiAgICAvKiogTmF2aWdhdGVzIHRvIHRoZSBmaXJzdCBwYWdlICovXG4gICAgZ29Ub0ZpcnN0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSgxKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBOYXZpZ2F0ZXMgdG8gYSBwcmV2aW91cyBwYWdlLlxuICAgICAqL1xuICAgIHByZXZpb3VzUGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSh0aGlzLmN1cnJlbnRQYWdlIC0gMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGVzIHRvIHRoZSBuZXh0IHBhZ2UuXG4gICAgICovXG4gICAgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ29Ub1BhZ2UodGhpcy5jdXJyZW50UGFnZSArIDEpO1xuICAgIH1cblxuICAgIC8qKiBOYXZpZ2F0ZXMgdG8gdGhlIGxhc3QgcGFnZSAqL1xuICAgIGdvVG9MYXN0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nb1RvUGFnZSh0aGlzLl9sYXN0UGFnZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25DaGFuZ2VQZXJQYWdlID0gKGV2ZW50OiBudW1iZXIpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBldmVudDtcbiAgICAgICAgdGhpcy5pdGVtc1BlclBhZ2VDaGFuZ2UuZW1pdCh0aGlzLml0ZW1zUGVyUGFnZSk7XG5cbiAgICAgICAgdGhpcy5fcmVmcmVzaFBhZ2VzKCk7XG5cbiAgICAgICAgY29uc3QgbWF4UGFnZSA9IHRoaXMuX3BhZ2VzW3RoaXMuX3BhZ2VzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA+IG1heFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZUNoYW5nZVN0YXJ0LmVtaXQobWF4UGFnZSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcmVzdG9yZUlucHV0VmFsdWUobW9kZWw6IE5nTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgbW9kZWwucmVzZXQodGhpcy5jdXJyZW50UGFnZSk7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hQYWdlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbiA9IHRoaXMucGFnaW5hdGlvbk9iamVjdDtcblxuICAgICAgICB0aGlzLl9wYWdlcyA9IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuZ2V0UGFnZXMocGFnaW5hdGlvbik7XG5cbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VJbmRleCA9IHRoaXMuX3BhZ2VzLmZpbmRJbmRleCgocGFnZSkgPT4gcGFnZSA9PT0gdGhpcy5jdXJyZW50UGFnZSk7XG5cbiAgICAgICAgdGhpcy5fcGFnZXNCZWZvcmVDdXJyZW50ID0gdGhpcy5fcGFnZXMuc2xpY2UoMCwgY3VycmVudFBhZ2VJbmRleCk7XG4gICAgICAgIHRoaXMuX3BhZ2VzQWZ0ZXJDdXJyZW50ID0gdGhpcy5fcGFnZXMuc2xpY2UoY3VycmVudFBhZ2VJbmRleCArIDEpO1xuXG4gICAgICAgIGNvbnN0IGl0ZW1zUGVyUGFnZSA9IHBhZ2luYXRpb24uaXRlbXNQZXJQYWdlID8/IERFRkFVTFRfSVRFTVNfUEVSX1BBR0U7XG5cbiAgICAgICAgdGhpcy5fY3VycmVudFNob3dpbmcgPSB7XG4gICAgICAgICAgICBmcm9tOiB0aGlzLmN1cnJlbnRQYWdlIC0gMSA9PT0gMCA/IDEgOiAodGhpcy5jdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgMSxcbiAgICAgICAgICAgIHRvOiBNYXRoLm1pbigodGhpcy5jdXJyZW50UGFnZSAtIDEpICogaXRlbXNQZXJQYWdlICsgaXRlbXNQZXJQYWdlLCB0aGlzLnRvdGFsSXRlbXMpLFxuICAgICAgICAgICAgdG90YWxDb3VudDogdGhpcy50b3RhbEl0ZW1zXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBGb2N1cyBjdXJyZW50IHBhZ2UgbGluay9pbnB1dCB1c2luZyBGb2N1c0tleU1hbmFnZXJcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZm9jdXNDdXJyZW50UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VOYXRpdmVFbGVtZW50ID1cbiAgICAgICAgICAgIGdldENvbXB1dGVkU3R5bGUodGhpcy5fY3VycmVudFBhZ2VFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpLmRpc3BsYXkgPT09ICdub25lJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5fcGFnZUlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgOiB0aGlzLl9jdXJyZW50UGFnZUVsZW1lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2ZvY3VzS2V5TWFuYWdlckl0ZW1zXG4gICAgICAgICAgICAudG9BcnJheSgpXG4gICAgICAgICAgICAuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtLm5hdGl2ZUVsZW1lbnQgPT09IGN1cnJlbnRQYWdlTmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgdGhpcy5fZm9jdXNLZXlNYW5hZ2VyTGlzdC5mb2N1c0l0ZW0oaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIGxpc3Qgb2YgcGFnZSBzaXplIG9wdGlvbnMgdG8gZGlzcGxheSB0byB0aGUgdXNlci4gSW5jbHVkZXMgbWFraW5nIHN1cmUgdGhhdFxuICAgICAqIHRoZSBwYWdlIHNpemUgaXMgYW4gb3B0aW9uIGFuZCB0aGF0IHRoZSBsaXN0IGlzIHNvcnRlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIC8vIElmIG5vIHBhZ2Ugc2l6ZSBpcyBwcm92aWRlZCwgdXNlIHRoZSBmaXJzdCBwYWdlIHNpemUgb3B0aW9uIG9yIHRoZSBkZWZhdWx0IHBhZ2Ugc2l6ZS5cbiAgICAgICAgaWYgKCF0aGlzLml0ZW1zUGVyUGFnZSkge1xuICAgICAgICAgICAgdGhpcy5faXRlbXNQZXJQYWdlID0gdGhpcy5pdGVtc1BlclBhZ2VPcHRpb25zLmxlbmd0aCA/IHRoaXMuaXRlbXNQZXJQYWdlT3B0aW9uc1swXSA6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMgPSB0aGlzLml0ZW1zUGVyUGFnZU9wdGlvbnM/LnNsaWNlKCkgPz8gW107XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMuaW5jbHVkZXModGhpcy5pdGVtc1BlclBhZ2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMucHVzaCh0aGlzLml0ZW1zUGVyUGFnZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGFzeW5jIF9hbm5vdW5jZVBhZ2UocGFnZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UoXG4gICAgICAgICAgICB0aGlzLl90cmFuc2xhdGlvblJlc29sdmVyLnJlc29sdmUoXG4gICAgICAgICAgICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fbGFuZ3VhZ2UpLFxuICAgICAgICAgICAgICAgICdjb3JlUGFnaW5hdGlvbi5jdXJyZW50UGFnZUFyaWFMYWJlbCcsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYWdlTnVtYmVyOiBwYWdlLFxuICAgICAgICAgICAgICAgICAgICB0b3RhbENvdW50OiB0aGlzLnRvdGFsSXRlbXNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvdGFsSXRlbXNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fcGVyLXBhZ2VcIiAqbmdJZj1cIml0ZW1zUGVyUGFnZVRlbXBsYXRlIHx8IGl0ZW1zUGVyUGFnZU9wdGlvbnM/Lmxlbmd0aFwiPlxuICAgICAgICA8IS0tIG5vdGUsIHRoYXQgd2UncmUgY2hlY2tpbmcgZm9yIHRoZSBsZW5ndGggb2YgXCJpdGVtc1BlclBhZ2VPcHRpb25zXCIsIGJ1dCB1c2luZyBcIl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnNcIiBhcyBcInBhZ2VPcHRpb25zXCIgLS0+XG4gICAgICAgIDwhLS0gdGhlc2UgMiBjYW4gYmUgZGlmZmVyZW50LCBhcyBcIl9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnNcIiBtYXkgYWxzbyBpbmNsdWRlIFwiaXRlbXNQZXJQYWdlXCIgaWYgaXQncyBub3QgaW5jbHVkZWQgaW4gb3B0aW9ucyAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbXNQZXJQYWdlVGVtcGxhdGUgfHwgcGVyUGFnZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvblNlbGVjdDogX29uQ2hhbmdlUGVyUGFnZSwgcGFnZU9wdGlvbnM6IF9kaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxuYXZcbiAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VyTGlzdFxuICAgICAgICBvcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxuICAgICAgICBbc2tpcFByZWRpY2F0ZV09XCJza2lwSXRlbVByZWRpY2F0ZVwiXG4gICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbmF2XCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInY29yZVBhZ2luYXRpb24uYXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImRpc3BsYXlUb3RhbEl0ZW1zID8gX3RvdGFsUGFnZXNFbGVtZW50SWQgOiBudWxsXCJcbiAgICAgICAgKm5nSWY9XCJ0b3RhbEl0ZW1zID49IGl0ZW1zUGVyUGFnZVwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZGtGb2N1c0tleU1hbmFnZXJJdGVtXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGdseXBoPVwibWVkaWEtcmV3aW5kXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0ZpcnN0UGFnZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIidjb3JlUGFnaW5hdGlvbi5maXJzdExhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInY29yZVBhZ2luYXRpb24uZmlyc3RMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2J1dHRvbiBmZC1wYWdpbmF0aW9uX19idXR0b24tLW1vYmlsZVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvRmlyc3RQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9GaXJzdFBhZ2UoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub0ZpcnN0UGFnZSgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLWxlZnQtYXJyb3dcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVQYWdpbmF0aW9uLnByZXZpb3VzTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidjb3JlUGFnaW5hdGlvbi5wcmV2aW91c0xhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNGaXJzdFBhZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByZXZpb3VzUGFnZSgpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwicHJldmlvdXNQYWdlKClcIlxuICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgPCEtLSBEdXBsaWNhdGVkIHRvIHByZXNlcnZlIHRoZSBpdGVtcyBvcmRlciBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbiAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiBfcGFnZXNCZWZvcmVDdXJyZW50XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlICE9PSBfbW9yZUVsZW1lbnRWYWx1ZTsgZWxzZSBtb3JlXCJcbiAgICAgICAgICAgICAgICBmZGtGb2N1c0tleU1hbmFnZXJJdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogcGFnZSB9XCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogcGFnZSB9XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xpbmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdlKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9QYWdlKHBhZ2UsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub1BhZ2UocGFnZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICNjdXJyZW50UGFnZUVsZW1lbnRcbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInY29yZVBhZ2luYXRpb24ucGFnZUxhYmVsJyB8IGZkVHJhbnNsYXRlIDogeyBwYWdlTnVtYmVyOiBjdXJyZW50UGFnZSB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbGluayBpcy1hY3RpdmVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1jdXJyZW50XT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBjdXJyZW50UGFnZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xhYmVsXCI+XG4gICAgICAgICAgICB7eyAnY29yZVBhZ2luYXRpb24ubGFiZWxCZWZvcmVJbnB1dE1vYmlsZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3BhZ2VJbnB1dEVsZW1lbnRcbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgZmRrT25seURpZ2l0c1xuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIHNpemU9XCIxXCJcbiAgICAgICAgICAgIG1pbj1cIjFcIlxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbbWF4XT1cIl9sYXN0UGFnZVwiXG4gICAgICAgICAgICBbc3RhdGVdPVwiY3VycmVudFBhZ2VNb2RlbC5pbnZhbGlkID8gJ2Vycm9yJyA6IG51bGxcIlxuICAgICAgICAgICAgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19pbnB1dFwiXG4gICAgICAgICAgICAjY3VycmVudFBhZ2VNb2RlbD1cIm5nTW9kZWxcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICAgICAnY29yZVBhZ2luYXRpb24uaW5wdXRBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGUgOiB7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlLCB0b3RhbENvdW50OiBfdG90YWxQYWdlcyB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2VNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiZ29Ub1BhZ2UoY3VycmVudFBhZ2VNb2RlbC52YWx1ZSlcIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3Jlc3RvcmVJbnB1dFZhbHVlKGN1cnJlbnRQYWdlTW9kZWwpXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xhYmVsXCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdjb3JlUGFnaW5hdGlvbi5sYWJlbEFmdGVySW5wdXRNb2JpbGUnXG4gICAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGUgOiB7IHBhZ2VOdW1iZXI6IGN1cnJlbnRQYWdlLCB0b3RhbENvdW50OiBfdG90YWxQYWdlcyB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDwhLS0gRHVwbGljYXRlZCB0byBwcmVzZXJ2ZSB0aGUgaXRlbXMgb3JkZXIgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24gLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgX3BhZ2VzQWZ0ZXJDdXJyZW50XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwYWdlICE9PSBfbW9yZUVsZW1lbnRWYWx1ZTsgZWxzZSBtb3JlXCJcbiAgICAgICAgICAgICAgICBmZGtGb2N1c0tleU1hbmFnZXJJdGVtXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogcGFnZSB9XCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ2NvcmVQYWdpbmF0aW9uLnBhZ2VMYWJlbCcgfCBmZFRyYW5zbGF0ZSA6IHsgcGFnZU51bWJlcjogcGFnZSB9XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2xpbmtcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdlKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9QYWdlKHBhZ2UsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAoa2V5dXAuc3BhY2UpPVwiZ29Ub1BhZ2UocGFnZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgcGFnZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZka0ZvY3VzS2V5TWFuYWdlckl0ZW1cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgZ2x5cGg9XCJuYXZpZ2F0aW9uLXJpZ2h0LWFycm93XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xhc3RQYWdlXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVQYWdpbmF0aW9uLm5leHRMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ2NvcmVQYWdpbmF0aW9uLm5leHRMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZkLXBhZ2luYXRpb25fX2J1dHRvblwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImlzTGFzdFBhZ2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm5leHRQYWdlKClcIlxuICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgICAgKGtleXVwLnNwYWNlKT1cIm5leHRQYWdlKClcIlxuICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgZmRrRm9jdXNLZXlNYW5hZ2VySXRlbVxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cIm1lZGlhLWZvcndhcmRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTGFzdFBhZ2VcIlxuICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInY29yZVBhZ2luYXRpb24ubGFzdExhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCInY29yZVBhZ2luYXRpb24ubGFzdExhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fYnV0dG9uIGZkLXBhZ2luYXRpb25fX2J1dHRvbi0tbW9iaWxlXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiaXNMYXN0UGFnZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub0xhc3RQYWdlKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImdvVG9MYXN0UGFnZSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgIChrZXl1cC5zcGFjZSk9XCJnb1RvTGFzdFBhZ2UoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L25hdj5cblxuICAgIDxzcGFuICpuZ0lmPVwiZGlzcGxheVRvdGFsSXRlbXNcIiBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3RvdGFsXCIgW2F0dHIuaWRdPVwiX3RvdGFsUGFnZXNFbGVtZW50SWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGlzcGxheVRleHRUZW1wbGF0ZSB8fCB0b3RhbFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzaG93aW5nOiBfY3VycmVudFNob3dpbmcgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L3NwYW4+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNtb3JlPlxuICAgIDxzcGFuIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fbW9yZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGFyaWEtbGFiZWw9XCIuLi5cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0b3RhbCBsZXQtc2hvd2luZz1cInNob3dpbmdcIj5cbiAgICA8c3BhbiBmZC1mb3JtLWxhYmVsIGNsYXNzPVwiZmQtcGFnaW5hdGlvbl9fdG90YWwtbGFiZWxcIj5cbiAgICAgICAge3sgJ2NvcmVQYWdpbmF0aW9uLnRvdGFsUmVzdWx0c0xhYmVsJyB8IGZkVHJhbnNsYXRlIDogX2N1cnJlbnRTaG93aW5nIH19XG4gICAgPC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwZXJQYWdlIGxldC1wYWdlT3B0aW9ucz1cInBhZ2VPcHRpb25zXCI+XG4gICAgPGxhYmVsIGZkLWZvcm0tbGFiZWwgY2xhc3M9XCJmZC1wYWdpbmF0aW9uX19wZXItcGFnZS1sYWJlbFwiPlxuICAgICAgICB7eyAnY29yZVBhZ2luYXRpb24uaXRlbXNQZXJQYWdlTGFiZWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICA8L2xhYmVsPlxuXG4gICAgPGZkLXNlbGVjdCBjbGFzcz1cImZkLXBhZ2luYXRpb25fX3Blci1wYWdlLXNlbGVjdFwiIFt2YWx1ZV09XCJpdGVtc1BlclBhZ2VcIiAodmFsdWVDaGFuZ2UpPVwiX29uQ2hhbmdlUGVyUGFnZSgkZXZlbnQpXCI+XG4gICAgICAgIDxsaSBmZC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBwYWdlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb25cIj57eyBvcHRpb24gfX08L2xpPlxuICAgIDwvZmQtc2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|