primeng 18.0.0-rc.2 → 19.0.0-rc.1
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/LICENSE.md +1 -1
- package/autocomplete/autocomplete.d.ts +11 -11
- package/base/style/basestyle.d.ts +11 -11
- package/config/primeng.d.ts +12 -6
- package/config/provideprimeng.d.ts +1 -12
- package/config/themeprovider.d.ts +10 -4
- package/confirmdialog/confirmdialog.d.ts +1 -0
- package/fesm2022/primeng-accordion.mjs +12 -12
- package/fesm2022/primeng-accordion.mjs.map +1 -1
- package/fesm2022/primeng-animateonscroll.mjs +1 -1
- package/fesm2022/primeng-animateonscroll.mjs.map +1 -1
- package/fesm2022/primeng-api.mjs +5 -5
- package/fesm2022/primeng-api.mjs.map +1 -1
- package/fesm2022/primeng-autocomplete.mjs +135 -136
- package/fesm2022/primeng-autocomplete.mjs.map +1 -1
- package/fesm2022/primeng-autofocus.mjs +1 -1
- package/fesm2022/primeng-autofocus.mjs.map +1 -1
- package/fesm2022/primeng-avatar.mjs +2 -2
- package/fesm2022/primeng-avatar.mjs.map +1 -1
- package/fesm2022/primeng-avatargroup.mjs +2 -2
- package/fesm2022/primeng-avatargroup.mjs.map +1 -1
- package/fesm2022/primeng-badge.mjs +3 -3
- package/fesm2022/primeng-badge.mjs.map +1 -1
- package/fesm2022/primeng-basecomponent.mjs +1 -1
- package/fesm2022/primeng-basecomponent.mjs.map +1 -1
- package/fesm2022/primeng-blockui.mjs +2 -2
- package/fesm2022/primeng-blockui.mjs.map +1 -1
- package/fesm2022/primeng-breadcrumb.mjs +2 -2
- package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
- package/fesm2022/primeng-button.mjs +5 -5
- package/fesm2022/primeng-button.mjs.map +1 -1
- package/fesm2022/primeng-buttongroup.mjs +2 -2
- package/fesm2022/primeng-buttongroup.mjs.map +1 -1
- package/fesm2022/primeng-calendar.mjs +3 -3
- package/fesm2022/primeng-calendar.mjs.map +1 -1
- package/fesm2022/primeng-card.mjs +2 -2
- package/fesm2022/primeng-card.mjs.map +1 -1
- package/fesm2022/primeng-carousel.mjs +2 -2
- package/fesm2022/primeng-carousel.mjs.map +1 -1
- package/fesm2022/primeng-cascadeselect.mjs +6 -6
- package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
- package/fesm2022/primeng-chart.mjs +2 -2
- package/fesm2022/primeng-chart.mjs.map +1 -1
- package/fesm2022/primeng-checkbox.mjs +3 -4
- package/fesm2022/primeng-checkbox.mjs.map +1 -1
- package/fesm2022/primeng-chip.mjs +2 -2
- package/fesm2022/primeng-chip.mjs.map +1 -1
- package/fesm2022/primeng-colorpicker.mjs +3 -3
- package/fesm2022/primeng-colorpicker.mjs.map +1 -1
- package/fesm2022/primeng-config.mjs +39 -40
- package/fesm2022/primeng-config.mjs.map +1 -1
- package/fesm2022/primeng-confirmdialog.mjs +13 -10
- package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
- package/fesm2022/primeng-confirmpopup.mjs +2 -2
- package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
- package/fesm2022/primeng-contextmenu.mjs +6 -6
- package/fesm2022/primeng-contextmenu.mjs.map +1 -1
- package/fesm2022/primeng-dataview.mjs +2 -2
- package/fesm2022/primeng-dataview.mjs.map +1 -1
- package/fesm2022/primeng-datepicker.mjs +5 -5
- package/fesm2022/primeng-datepicker.mjs.map +1 -1
- package/fesm2022/primeng-defer.mjs +1 -1
- package/fesm2022/primeng-dialog.mjs +18 -19
- package/fesm2022/primeng-dialog.mjs.map +1 -1
- package/fesm2022/primeng-divider.mjs +2 -2
- package/fesm2022/primeng-divider.mjs.map +1 -1
- package/fesm2022/primeng-dock.mjs +3 -4
- package/fesm2022/primeng-dock.mjs.map +1 -1
- package/fesm2022/primeng-dragdrop.mjs +2 -2
- package/fesm2022/primeng-dragdrop.mjs.map +1 -1
- package/fesm2022/primeng-drawer.mjs +5 -5
- package/fesm2022/primeng-drawer.mjs.map +1 -1
- package/fesm2022/primeng-dropdown.mjs +4 -4
- package/fesm2022/primeng-dropdown.mjs.map +1 -1
- package/fesm2022/primeng-dynamicdialog.mjs +4 -4
- package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
- package/fesm2022/primeng-editor.mjs +2 -2
- package/fesm2022/primeng-editor.mjs.map +1 -1
- package/fesm2022/primeng-fieldset.mjs +2 -2
- package/fesm2022/primeng-fieldset.mjs.map +1 -1
- package/fesm2022/primeng-fileupload.mjs +3 -4
- package/fesm2022/primeng-fileupload.mjs.map +1 -1
- package/fesm2022/primeng-floatlabel.mjs +2 -2
- package/fesm2022/primeng-floatlabel.mjs.map +1 -1
- package/fesm2022/primeng-fluid.mjs +2 -2
- package/fesm2022/primeng-fluid.mjs.map +1 -1
- package/fesm2022/primeng-focustrap.mjs +1 -1
- package/fesm2022/primeng-focustrap.mjs.map +1 -1
- package/fesm2022/primeng-galleria.mjs +10 -10
- package/fesm2022/primeng-galleria.mjs.map +1 -1
- package/fesm2022/primeng-iconfield.mjs +2 -2
- package/fesm2022/primeng-iconfield.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubledown.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubledown.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleleft.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleright.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleright.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledoubleup.mjs +2 -2
- package/fesm2022/primeng-icons-angledoubleup.mjs.map +1 -1
- package/fesm2022/primeng-icons-angledown.mjs +2 -2
- package/fesm2022/primeng-icons-angledown.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleleft.mjs +2 -2
- package/fesm2022/primeng-icons-angleleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleright.mjs +2 -2
- package/fesm2022/primeng-icons-angleright.mjs.map +1 -1
- package/fesm2022/primeng-icons-angleup.mjs +2 -2
- package/fesm2022/primeng-icons-angleup.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdown.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdown.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdownleft.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdownleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowdownright.mjs +2 -2
- package/fesm2022/primeng-icons-arrowdownright.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowleft.mjs +2 -2
- package/fesm2022/primeng-icons-arrowleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowright.mjs +2 -2
- package/fesm2022/primeng-icons-arrowright.mjs.map +1 -1
- package/fesm2022/primeng-icons-arrowup.mjs +2 -2
- package/fesm2022/primeng-icons-arrowup.mjs.map +1 -1
- package/fesm2022/primeng-icons-ban.mjs +2 -2
- package/fesm2022/primeng-icons-ban.mjs.map +1 -1
- package/fesm2022/primeng-icons-bars.mjs +2 -2
- package/fesm2022/primeng-icons-bars.mjs.map +1 -1
- package/fesm2022/primeng-icons-baseicon.mjs +2 -2
- package/fesm2022/primeng-icons-baseicon.mjs.map +1 -1
- package/fesm2022/primeng-icons-blank.mjs +2 -2
- package/fesm2022/primeng-icons-blank.mjs.map +1 -1
- package/fesm2022/primeng-icons-calendar.mjs +2 -2
- package/fesm2022/primeng-icons-calendar.mjs.map +1 -1
- package/fesm2022/primeng-icons-caretleft.mjs +2 -2
- package/fesm2022/primeng-icons-caretleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-caretright.mjs +2 -2
- package/fesm2022/primeng-icons-caretright.mjs.map +1 -1
- package/fesm2022/primeng-icons-check.mjs +2 -2
- package/fesm2022/primeng-icons-check.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevrondown.mjs +2 -2
- package/fesm2022/primeng-icons-chevrondown.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronleft.mjs +2 -2
- package/fesm2022/primeng-icons-chevronleft.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronright.mjs +2 -2
- package/fesm2022/primeng-icons-chevronright.mjs.map +1 -1
- package/fesm2022/primeng-icons-chevronup.mjs +2 -2
- package/fesm2022/primeng-icons-chevronup.mjs.map +1 -1
- package/fesm2022/primeng-icons-exclamationtriangle.mjs +2 -2
- package/fesm2022/primeng-icons-exclamationtriangle.mjs.map +1 -1
- package/fesm2022/primeng-icons-eye.mjs +2 -2
- package/fesm2022/primeng-icons-eye.mjs.map +1 -1
- package/fesm2022/primeng-icons-eyeslash.mjs +2 -2
- package/fesm2022/primeng-icons-eyeslash.mjs.map +1 -1
- package/fesm2022/primeng-icons-filter.mjs +2 -2
- package/fesm2022/primeng-icons-filter.mjs.map +1 -1
- package/fesm2022/primeng-icons-filterslash.mjs +2 -2
- package/fesm2022/primeng-icons-filterslash.mjs.map +1 -1
- package/fesm2022/primeng-icons-home.mjs +2 -2
- package/fesm2022/primeng-icons-home.mjs.map +1 -1
- package/fesm2022/primeng-icons-infocircle.mjs +2 -2
- package/fesm2022/primeng-icons-infocircle.mjs.map +1 -1
- package/fesm2022/primeng-icons-minus.mjs +2 -2
- package/fesm2022/primeng-icons-minus.mjs.map +1 -1
- package/fesm2022/primeng-icons-pencil.mjs +2 -2
- package/fesm2022/primeng-icons-pencil.mjs.map +1 -1
- package/fesm2022/primeng-icons-plus.mjs +2 -2
- package/fesm2022/primeng-icons-plus.mjs.map +1 -1
- package/fesm2022/primeng-icons-refresh.mjs +2 -2
- package/fesm2022/primeng-icons-refresh.mjs.map +1 -1
- package/fesm2022/primeng-icons-search.mjs +2 -2
- package/fesm2022/primeng-icons-search.mjs.map +1 -1
- package/fesm2022/primeng-icons-searchminus.mjs +2 -2
- package/fesm2022/primeng-icons-searchminus.mjs.map +1 -1
- package/fesm2022/primeng-icons-searchplus.mjs +2 -2
- package/fesm2022/primeng-icons-searchplus.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortalt.mjs +2 -2
- package/fesm2022/primeng-icons-sortalt.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortamountdown.mjs +2 -2
- package/fesm2022/primeng-icons-sortamountdown.mjs.map +1 -1
- package/fesm2022/primeng-icons-sortamountupalt.mjs +2 -2
- package/fesm2022/primeng-icons-sortamountupalt.mjs.map +1 -1
- package/fesm2022/primeng-icons-spinner.mjs +2 -2
- package/fesm2022/primeng-icons-spinner.mjs.map +1 -1
- package/fesm2022/primeng-icons-star.mjs +2 -2
- package/fesm2022/primeng-icons-star.mjs.map +1 -1
- package/fesm2022/primeng-icons-starfill.mjs +2 -2
- package/fesm2022/primeng-icons-starfill.mjs.map +1 -1
- package/fesm2022/primeng-icons-thlarge.mjs +2 -2
- package/fesm2022/primeng-icons-thlarge.mjs.map +1 -1
- package/fesm2022/primeng-icons-times.mjs +2 -2
- package/fesm2022/primeng-icons-times.mjs.map +1 -1
- package/fesm2022/primeng-icons-timescircle.mjs +2 -2
- package/fesm2022/primeng-icons-timescircle.mjs.map +1 -1
- package/fesm2022/primeng-icons-trash.mjs +2 -2
- package/fesm2022/primeng-icons-trash.mjs.map +1 -1
- package/fesm2022/primeng-icons-undo.mjs +2 -2
- package/fesm2022/primeng-icons-undo.mjs.map +1 -1
- package/fesm2022/primeng-icons-upload.mjs +2 -2
- package/fesm2022/primeng-icons-upload.mjs.map +1 -1
- package/fesm2022/primeng-icons-windowmaximize.mjs +2 -2
- package/fesm2022/primeng-icons-windowmaximize.mjs.map +1 -1
- package/fesm2022/primeng-icons-windowminimize.mjs +2 -2
- package/fesm2022/primeng-icons-windowminimize.mjs.map +1 -1
- package/fesm2022/primeng-iftalabel.mjs +2 -2
- package/fesm2022/primeng-iftalabel.mjs.map +1 -1
- package/fesm2022/primeng-image.mjs +3 -3
- package/fesm2022/primeng-image.mjs.map +1 -1
- package/fesm2022/primeng-imagecompare.mjs +2 -2
- package/fesm2022/primeng-imagecompare.mjs.map +1 -1
- package/fesm2022/primeng-inplace.mjs +6 -6
- package/fesm2022/primeng-inplace.mjs.map +1 -1
- package/fesm2022/primeng-inputgroup.mjs +2 -2
- package/fesm2022/primeng-inputgroup.mjs.map +1 -1
- package/fesm2022/primeng-inputgroupaddon.mjs +2 -2
- package/fesm2022/primeng-inputgroupaddon.mjs.map +1 -1
- package/fesm2022/primeng-inputicon.mjs +2 -2
- package/fesm2022/primeng-inputicon.mjs.map +1 -1
- package/fesm2022/primeng-inputmask.mjs +4 -4
- package/fesm2022/primeng-inputmask.mjs.map +1 -1
- package/fesm2022/primeng-inputnumber.mjs +5 -6
- package/fesm2022/primeng-inputnumber.mjs.map +1 -1
- package/fesm2022/primeng-inputotp.mjs +4 -4
- package/fesm2022/primeng-inputotp.mjs.map +1 -1
- package/fesm2022/primeng-inputswitch.mjs +2 -2
- package/fesm2022/primeng-inputswitch.mjs.map +1 -1
- package/fesm2022/primeng-inputtext.mjs +10 -9
- package/fesm2022/primeng-inputtext.mjs.map +1 -1
- package/fesm2022/primeng-inputtextarea.mjs +1 -1
- package/fesm2022/primeng-inputtextarea.mjs.map +1 -1
- package/fesm2022/primeng-keyfilter.mjs +1 -1
- package/fesm2022/primeng-keyfilter.mjs.map +1 -1
- package/fesm2022/primeng-knob.mjs +2 -2
- package/fesm2022/primeng-knob.mjs.map +1 -1
- package/fesm2022/primeng-listbox.mjs +2 -2
- package/fesm2022/primeng-listbox.mjs.map +1 -1
- package/fesm2022/primeng-megamenu.mjs +5 -5
- package/fesm2022/primeng-megamenu.mjs.map +1 -1
- package/fesm2022/primeng-menu.mjs +7 -7
- package/fesm2022/primeng-menu.mjs.map +1 -1
- package/fesm2022/primeng-menubar.mjs +6 -6
- package/fesm2022/primeng-menubar.mjs.map +1 -1
- package/fesm2022/primeng-message.mjs +2 -2
- package/fesm2022/primeng-message.mjs.map +1 -1
- package/fesm2022/primeng-messages.mjs +2 -2
- package/fesm2022/primeng-messages.mjs.map +1 -1
- package/fesm2022/primeng-metergroup.mjs +4 -4
- package/fesm2022/primeng-metergroup.mjs.map +1 -1
- package/fesm2022/primeng-multiselect.mjs +6 -9
- package/fesm2022/primeng-multiselect.mjs.map +1 -1
- package/fesm2022/primeng-orderlist.mjs +4 -4
- package/fesm2022/primeng-orderlist.mjs.map +1 -1
- package/fesm2022/primeng-organizationchart.mjs +5 -5
- package/fesm2022/primeng-organizationchart.mjs.map +1 -1
- package/fesm2022/primeng-overlay.mjs +3 -3
- package/fesm2022/primeng-overlay.mjs.map +1 -1
- package/fesm2022/primeng-overlaybadge.mjs +2 -2
- package/fesm2022/primeng-overlaybadge.mjs.map +1 -1
- package/fesm2022/primeng-overlaypanel.mjs +7 -4
- package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
- package/fesm2022/primeng-paginator.mjs +2 -2
- package/fesm2022/primeng-paginator.mjs.map +1 -1
- package/fesm2022/primeng-panel.mjs +3 -4
- package/fesm2022/primeng-panel.mjs.map +1 -1
- package/fesm2022/primeng-panelmenu.mjs +9 -9
- package/fesm2022/primeng-panelmenu.mjs.map +1 -1
- package/fesm2022/primeng-password.mjs +30 -7
- package/fesm2022/primeng-password.mjs.map +1 -1
- package/fesm2022/primeng-picklist.mjs +135 -139
- package/fesm2022/primeng-picklist.mjs.map +1 -1
- package/fesm2022/primeng-popover.mjs +9 -8
- package/fesm2022/primeng-popover.mjs.map +1 -1
- package/fesm2022/primeng-progressbar.mjs +2 -2
- package/fesm2022/primeng-progressbar.mjs.map +1 -1
- package/fesm2022/primeng-progressspinner.mjs +2 -2
- package/fesm2022/primeng-progressspinner.mjs.map +1 -1
- package/fesm2022/primeng-radiobutton.mjs +2 -2
- package/fesm2022/primeng-radiobutton.mjs.map +1 -1
- package/fesm2022/primeng-rating.mjs +4 -4
- package/fesm2022/primeng-rating.mjs.map +1 -1
- package/fesm2022/primeng-ripple.mjs +5 -2
- package/fesm2022/primeng-ripple.mjs.map +1 -1
- package/fesm2022/primeng-scroller.mjs +2 -2
- package/fesm2022/primeng-scroller.mjs.map +1 -1
- package/fesm2022/primeng-scrollpanel.mjs +2 -2
- package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
- package/fesm2022/primeng-scrolltop.mjs +2 -2
- package/fesm2022/primeng-scrolltop.mjs.map +1 -1
- package/fesm2022/primeng-select.mjs +9 -11
- package/fesm2022/primeng-select.mjs.map +1 -1
- package/fesm2022/primeng-selectbutton.mjs +3 -4
- package/fesm2022/primeng-selectbutton.mjs.map +1 -1
- package/fesm2022/primeng-sidebar.mjs +4 -5
- package/fesm2022/primeng-sidebar.mjs.map +1 -1
- package/fesm2022/primeng-skeleton.mjs +2 -2
- package/fesm2022/primeng-skeleton.mjs.map +1 -1
- package/fesm2022/primeng-slider.mjs +2 -2
- package/fesm2022/primeng-slider.mjs.map +1 -1
- package/fesm2022/primeng-speeddial.mjs +2 -2
- package/fesm2022/primeng-speeddial.mjs.map +1 -1
- package/fesm2022/primeng-splitbutton.mjs +2 -2
- package/fesm2022/primeng-splitbutton.mjs.map +1 -1
- package/fesm2022/primeng-splitter.mjs +30 -19
- package/fesm2022/primeng-splitter.mjs.map +1 -1
- package/fesm2022/primeng-stepper.mjs +16 -16
- package/fesm2022/primeng-stepper.mjs.map +1 -1
- package/fesm2022/primeng-steps.mjs +2 -2
- package/fesm2022/primeng-steps.mjs.map +1 -1
- package/fesm2022/primeng-styleclass.mjs +1 -1
- package/fesm2022/primeng-styleclass.mjs.map +1 -1
- package/fesm2022/primeng-table.mjs +6392 -6520
- package/fesm2022/primeng-table.mjs.map +1 -1
- package/fesm2022/primeng-tabmenu.mjs +2 -2
- package/fesm2022/primeng-tabmenu.mjs.map +1 -1
- package/fesm2022/primeng-tabs.mjs +11 -11
- package/fesm2022/primeng-tabs.mjs.map +1 -1
- package/fesm2022/primeng-tabview.mjs +5 -5
- package/fesm2022/primeng-tabview.mjs.map +1 -1
- package/fesm2022/primeng-tag.mjs +2 -2
- package/fesm2022/primeng-tag.mjs.map +1 -1
- package/fesm2022/primeng-terminal.mjs +2 -2
- package/fesm2022/primeng-terminal.mjs.map +1 -1
- package/fesm2022/primeng-textarea.mjs +8 -8
- package/fesm2022/primeng-textarea.mjs.map +1 -1
- package/fesm2022/primeng-tieredmenu.mjs +6 -6
- package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
- package/fesm2022/primeng-timeline.mjs +2 -2
- package/fesm2022/primeng-timeline.mjs.map +1 -1
- package/fesm2022/primeng-toast.mjs +6 -7
- package/fesm2022/primeng-toast.mjs.map +1 -1
- package/fesm2022/primeng-togglebutton.mjs +3 -4
- package/fesm2022/primeng-togglebutton.mjs.map +1 -1
- package/fesm2022/primeng-toggleswitch.mjs +2 -2
- package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
- package/fesm2022/primeng-toolbar.mjs +2 -2
- package/fesm2022/primeng-toolbar.mjs.map +1 -1
- package/fesm2022/primeng-tooltip.mjs +5 -3
- package/fesm2022/primeng-tooltip.mjs.map +1 -1
- package/fesm2022/primeng-tree.mjs +112 -63
- package/fesm2022/primeng-tree.mjs.map +1 -1
- package/fesm2022/primeng-treeselect.mjs +5 -10
- package/fesm2022/primeng-treeselect.mjs.map +1 -1
- package/fesm2022/primeng-treetable.mjs +31 -29
- package/fesm2022/primeng-treetable.mjs.map +1 -1
- package/inputtext/inputtext.d.ts +2 -2
- package/package.json +176 -524
- package/password/password.d.ts +5 -1
- package/popover/popover.d.ts +1 -1
- package/speeddial/speeddial.d.ts +2 -2
- package/splitter/splitter.d.ts +2 -3
- package/splitter/style/splitterstyle.d.ts +0 -13
- package/table/table.d.ts +928 -1030
- package/textarea/textarea.d.ts +2 -2
- package/tree/style/treestyle.d.ts +1 -1
- package/tree/tree.d.ts +4 -2
- package/treetable/treetable.d.ts +1 -1
- package/esm2022/accordion/accordion.mjs +0 -1266
- package/esm2022/accordion/primeng-accordion.mjs +0 -5
- package/esm2022/accordion/public_api.mjs +0 -3
- package/esm2022/accordion/style/accordionstyle.mjs +0 -163
- package/esm2022/animateonscroll/animateonscroll.mjs +0 -174
- package/esm2022/animateonscroll/primeng-animateonscroll.mjs +0 -5
- package/esm2022/animateonscroll/public_api.mjs +0 -2
- package/esm2022/api/blockableui.mjs +0 -2
- package/esm2022/api/confirmaeventtype.mjs +0 -10
- package/esm2022/api/confirmation.mjs +0 -2
- package/esm2022/api/confirmationservice.mjs +0 -43
- package/esm2022/api/contextmenuservice.mjs +0 -22
- package/esm2022/api/filtermatchmode.mjs +0 -23
- package/esm2022/api/filtermetadata.mjs +0 -2
- package/esm2022/api/filteroperator.mjs +0 -5
- package/esm2022/api/filterservice.mjs +0 -224
- package/esm2022/api/lazyloadevent.mjs +0 -2
- package/esm2022/api/lazyloadmeta.mjs +0 -2
- package/esm2022/api/megamenuitem.mjs +0 -2
- package/esm2022/api/menuitem.mjs +0 -2
- package/esm2022/api/messageservice.mjs +0 -47
- package/esm2022/api/overlayoptions.mjs +0 -2
- package/esm2022/api/overlayservice.mjs +0 -19
- package/esm2022/api/primeicons.mjs +0 -314
- package/esm2022/api/primeng-api.mjs +0 -5
- package/esm2022/api/public_api.mjs +0 -33
- package/esm2022/api/scrolleroptions.mjs +0 -2
- package/esm2022/api/selectitem.mjs +0 -2
- package/esm2022/api/selectitemgroup.mjs +0 -2
- package/esm2022/api/shared.mjs +0 -76
- package/esm2022/api/sortevent.mjs +0 -2
- package/esm2022/api/sortmeta.mjs +0 -2
- package/esm2022/api/tablestate.mjs +0 -2
- package/esm2022/api/toastmessage.mjs +0 -2
- package/esm2022/api/tooltipoptions.mjs +0 -2
- package/esm2022/api/translation.mjs +0 -2
- package/esm2022/api/translationkeys.mjs +0 -51
- package/esm2022/api/treedragdropservice.mjs +0 -21
- package/esm2022/api/treenode.mjs +0 -2
- package/esm2022/api/treenodedragevent.mjs +0 -2
- package/esm2022/api/treetablenode.mjs +0 -2
- package/esm2022/autocomplete/autocomplete.interface.mjs +0 -2
- package/esm2022/autocomplete/autocomplete.mjs +0 -2225
- package/esm2022/autocomplete/primeng-autocomplete.mjs +0 -5
- package/esm2022/autocomplete/public_api.mjs +0 -4
- package/esm2022/autocomplete/style/autocompletestyle.mjs +0 -408
- package/esm2022/autofocus/autofocus.mjs +0 -86
- package/esm2022/autofocus/primeng-autofocus.mjs +0 -5
- package/esm2022/autofocus/public_api.mjs +0 -2
- package/esm2022/avatar/avatar.mjs +0 -193
- package/esm2022/avatar/primeng-avatar.mjs +0 -5
- package/esm2022/avatar/public_api.mjs +0 -3
- package/esm2022/avatar/style/avatarstyle.mjs +0 -130
- package/esm2022/avatargroup/avatargroup.mjs +0 -80
- package/esm2022/avatargroup/primeng-avatargroup.mjs +0 -5
- package/esm2022/avatargroup/public_api.mjs +0 -3
- package/esm2022/avatargroup/style/avatargroupstyle.mjs +0 -29
- package/esm2022/badge/badge.mjs +0 -332
- package/esm2022/badge/primeng-badge.mjs +0 -5
- package/esm2022/badge/public_api.mjs +0 -3
- package/esm2022/badge/style/badgestyle.mjs +0 -143
- package/esm2022/base/base.mjs +0 -19
- package/esm2022/base/primeng-base.mjs +0 -5
- package/esm2022/base/public_api.mjs +0 -3
- package/esm2022/base/style/basestyle.mjs +0 -256
- package/esm2022/basecomponent/basecomponent.mjs +0 -183
- package/esm2022/basecomponent/primeng-basecomponent.mjs +0 -5
- package/esm2022/basecomponent/public_api.mjs +0 -3
- package/esm2022/basecomponent/style/basecomponentstyle.mjs +0 -13
- package/esm2022/blockui/blockui.interface.mjs +0 -2
- package/esm2022/blockui/blockui.mjs +0 -210
- package/esm2022/blockui/primeng-blockui.mjs +0 -5
- package/esm2022/blockui/public_api.mjs +0 -4
- package/esm2022/blockui/style/blockuistyle.mjs +0 -50
- package/esm2022/breadcrumb/breadcrumb.interface.mjs +0 -2
- package/esm2022/breadcrumb/breadcrumb.mjs +0 -583
- package/esm2022/breadcrumb/primeng-breadcrumb.mjs +0 -5
- package/esm2022/breadcrumb/public_api.mjs +0 -4
- package/esm2022/breadcrumb/style/breadcrumbstyle.mjs +0 -133
- package/esm2022/button/button.interface.mjs +0 -2
- package/esm2022/button/button.mjs +0 -896
- package/esm2022/button/primeng-button.mjs +0 -5
- package/esm2022/button/public_api.mjs +0 -4
- package/esm2022/button/style/buttonstyle.mjs +0 -707
- package/esm2022/buttongroup/buttongroup.mjs +0 -47
- package/esm2022/buttongroup/primeng-buttongroup.mjs +0 -5
- package/esm2022/buttongroup/public_api.mjs +0 -3
- package/esm2022/buttongroup/style/buttongroupstyle.mjs +0 -120
- package/esm2022/calendar/calendar.interface.mjs +0 -2
- package/esm2022/calendar/calendar.mjs +0 -4504
- package/esm2022/calendar/primeng-calendar.mjs +0 -5
- package/esm2022/calendar/public_api.mjs +0 -4
- package/esm2022/calendar/style/calendarstyle.mjs +0 -472
- package/esm2022/card/card.interface.mjs +0 -2
- package/esm2022/card/card.mjs +0 -243
- package/esm2022/card/primeng-card.mjs +0 -5
- package/esm2022/card/public_api.mjs +0 -4
- package/esm2022/card/style/cardstyle.mjs +0 -100
- package/esm2022/carousel/carousel.interface.mjs +0 -2
- package/esm2022/carousel/carousel.mjs +0 -1181
- package/esm2022/carousel/primeng-carousel.mjs +0 -5
- package/esm2022/carousel/public_api.mjs +0 -4
- package/esm2022/carousel/style/carouselstyle.mjs +0 -234
- package/esm2022/cascadeselect/cascadeselect.interface.mjs +0 -2
- package/esm2022/cascadeselect/cascadeselect.mjs +0 -1840
- package/esm2022/cascadeselect/primeng-cascadeselect.mjs +0 -5
- package/esm2022/cascadeselect/public_api.mjs +0 -4
- package/esm2022/cascadeselect/style/cascadeselectstyle.mjs +0 -379
- package/esm2022/chart/chart.mjs +0 -210
- package/esm2022/chart/primeng-chart.mjs +0 -5
- package/esm2022/chart/public_api.mjs +0 -3
- package/esm2022/chart/style/chartstyle.mjs +0 -36
- package/esm2022/checkbox/checkbox.interface.mjs +0 -2
- package/esm2022/checkbox/checkbox.mjs +0 -450
- package/esm2022/checkbox/primeng-checkbox.mjs +0 -5
- package/esm2022/checkbox/public_api.mjs +0 -4
- package/esm2022/checkbox/style/checkboxstyle.mjs +0 -191
- package/esm2022/chip/chip.interface.mjs +0 -2
- package/esm2022/chip/chip.mjs +0 -337
- package/esm2022/chip/primeng-chip.mjs +0 -5
- package/esm2022/chip/public_api.mjs +0 -4
- package/esm2022/chip/style/chipstyle.mjs +0 -104
- package/esm2022/colorpicker/colorpicker.interface.mjs +0 -2
- package/esm2022/colorpicker/colorpicker.mjs +0 -856
- package/esm2022/colorpicker/primeng-colorpicker.mjs +0 -5
- package/esm2022/colorpicker/public_api.mjs +0 -4
- package/esm2022/colorpicker/style/colorpickerstyle.mjs +0 -213
- package/esm2022/config/primeng-config.mjs +0 -5
- package/esm2022/config/primeng.mjs +0 -189
- package/esm2022/config/provideprimeng.mjs +0 -11
- package/esm2022/config/public_api.mjs +0 -4
- package/esm2022/config/themeprovider.mjs +0 -74
- package/esm2022/confirmdialog/confirmdialog.interface.mjs +0 -2
- package/esm2022/confirmdialog/confirmdialog.mjs +0 -810
- package/esm2022/confirmdialog/primeng-confirmdialog.mjs +0 -5
- package/esm2022/confirmdialog/public_api.mjs +0 -4
- package/esm2022/confirmdialog/style/confirmdialogstyle.mjs +0 -67
- package/esm2022/confirmpopup/confirmpopup.interface.mjs +0 -2
- package/esm2022/confirmpopup/confirmpopup.mjs +0 -619
- package/esm2022/confirmpopup/primeng-confirmpopup.mjs +0 -5
- package/esm2022/confirmpopup/public_api.mjs +0 -4
- package/esm2022/confirmpopup/style/confirmpopupstyle.mjs +0 -170
- package/esm2022/contextmenu/contextmenu.mjs +0 -1436
- package/esm2022/contextmenu/primeng-contextmenu.mjs +0 -5
- package/esm2022/contextmenu/public_api.mjs +0 -3
- package/esm2022/contextmenu/style/contextmenustyle.mjs +0 -244
- package/esm2022/dataview/dataview.interface.mjs +0 -2
- package/esm2022/dataview/dataview.mjs +0 -819
- package/esm2022/dataview/primeng-dataview.mjs +0 -5
- package/esm2022/dataview/public_api.mjs +0 -4
- package/esm2022/dataview/style/dataviewstyle.mjs +0 -115
- package/esm2022/datepicker/datepicker.interface.mjs +0 -2
- package/esm2022/datepicker/datepicker.mjs +0 -4539
- package/esm2022/datepicker/primeng-datepicker.mjs +0 -5
- package/esm2022/datepicker/public_api.mjs +0 -4
- package/esm2022/datepicker/style/datepickerstyle.mjs +0 -663
- package/esm2022/defer/defer.mjs +0 -100
- package/esm2022/defer/primeng-defer.mjs +0 -5
- package/esm2022/defer/public_api.mjs +0 -2
- package/esm2022/dialog/dialog.interface.mjs +0 -2
- package/esm2022/dialog/dialog.mjs +0 -1384
- package/esm2022/dialog/primeng-dialog.mjs +0 -5
- package/esm2022/dialog/public_api.mjs +0 -4
- package/esm2022/dialog/style/dialogstyle.mjs +0 -283
- package/esm2022/divider/divider.mjs +0 -119
- package/esm2022/divider/primeng-divider.mjs +0 -5
- package/esm2022/divider/public_api.mjs +0 -3
- package/esm2022/divider/style/dividerstyle.mjs +0 -138
- package/esm2022/dock/dock.interface.mjs +0 -2
- package/esm2022/dock/dock.mjs +0 -447
- package/esm2022/dock/primeng-dock.mjs +0 -5
- package/esm2022/dock/public_api.mjs +0 -4
- package/esm2022/dock/style/dockstyle.mjs +0 -210
- package/esm2022/dom/connectedoverlayscrollhandler.mjs +0 -30
- package/esm2022/dom/domhandler.mjs +0 -725
- package/esm2022/dom/primeng-dom.mjs +0 -5
- package/esm2022/dom/public_api.mjs +0 -3
- package/esm2022/dragdrop/dragdrop.mjs +0 -323
- package/esm2022/dragdrop/primeng-dragdrop.mjs +0 -5
- package/esm2022/dragdrop/public_api.mjs +0 -2
- package/esm2022/drawer/drawer.interface.mjs +0 -2
- package/esm2022/drawer/drawer.mjs +0 -663
- package/esm2022/drawer/primeng-drawer.mjs +0 -5
- package/esm2022/drawer/public_api.mjs +0 -4
- package/esm2022/drawer/style/drawerstyle.mjs +0 -283
- package/esm2022/dropdown/dropdown.interface.mjs +0 -2
- package/esm2022/dropdown/dropdown.mjs +0 -2498
- package/esm2022/dropdown/primeng-dropdown.mjs +0 -5
- package/esm2022/dropdown/public_api.mjs +0 -4
- package/esm2022/dropdown/style/dropdownstyle.mjs +0 -264
- package/esm2022/dynamicdialog/dialogservice.mjs +0 -105
- package/esm2022/dynamicdialog/dynamicdialog-config.mjs +0 -182
- package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +0 -15
- package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +0 -119
- package/esm2022/dynamicdialog/dynamicdialog.mjs +0 -875
- package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +0 -18
- package/esm2022/dynamicdialog/primeng-dynamicdialog.mjs +0 -5
- package/esm2022/dynamicdialog/public_api.mjs +0 -8
- package/esm2022/dynamicdialog/style/dynamicdialogstyle.mjs +0 -60
- package/esm2022/editor/editor.interface.mjs +0 -2
- package/esm2022/editor/editor.mjs +0 -427
- package/esm2022/editor/primeng-editor.mjs +0 -5
- package/esm2022/editor/public_api.mjs +0 -4
- package/esm2022/editor/style/editorstyle.mjs +0 -1008
- package/esm2022/fieldset/fieldset.interface.mjs +0 -2
- package/esm2022/fieldset/fieldset.mjs +0 -427
- package/esm2022/fieldset/primeng-fieldset.mjs +0 -5
- package/esm2022/fieldset/public_api.mjs +0 -4
- package/esm2022/fieldset/style/fieldsetstyle.mjs +0 -143
- package/esm2022/fileupload/fileupload.interface.mjs +0 -2
- package/esm2022/fileupload/fileupload.mjs +0 -1597
- package/esm2022/fileupload/primeng-fileupload.mjs +0 -5
- package/esm2022/fileupload/public_api.mjs +0 -4
- package/esm2022/fileupload/style/fileuploadstyle.mjs +0 -194
- package/esm2022/floatlabel/floatlabel.mjs +0 -61
- package/esm2022/floatlabel/primeng-floatlabel.mjs +0 -5
- package/esm2022/floatlabel/public_api.mjs +0 -3
- package/esm2022/floatlabel/style/floatlabelstyle.mjs +0 -133
- package/esm2022/fluid/fluid.mjs +0 -50
- package/esm2022/fluid/primeng-fluid.mjs +0 -5
- package/esm2022/fluid/public_api.mjs +0 -3
- package/esm2022/fluid/style/fluidstyle.mjs +0 -38
- package/esm2022/focustrap/focustrap.mjs +0 -104
- package/esm2022/focustrap/primeng-focustrap.mjs +0 -5
- package/esm2022/focustrap/public_api.mjs +0 -2
- package/esm2022/galleria/galleria.interface.mjs +0 -2
- package/esm2022/galleria/galleria.mjs +0 -1858
- package/esm2022/galleria/primeng-galleria.mjs +0 -5
- package/esm2022/galleria/public_api.mjs +0 -4
- package/esm2022/galleria/style/galleriastyle.mjs +0 -644
- package/esm2022/iconfield/iconfield.mjs +0 -73
- package/esm2022/iconfield/primeng-iconfield.mjs +0 -5
- package/esm2022/iconfield/public_api.mjs +0 -3
- package/esm2022/iconfield/style/iconfieldstyle.mjs +0 -77
- package/esm2022/icons/angledoubledown/angledoubledown.mjs +0 -34
- package/esm2022/icons/angledoubledown/primeng-icons-angledoubledown.mjs +0 -5
- package/esm2022/icons/angledoubledown/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +0 -34
- package/esm2022/icons/angledoubleleft/primeng-icons-angledoubleleft.mjs +0 -5
- package/esm2022/icons/angledoubleleft/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleright/angledoubleright.mjs +0 -34
- package/esm2022/icons/angledoubleright/primeng-icons-angledoubleright.mjs +0 -5
- package/esm2022/icons/angledoubleright/public_api.mjs +0 -2
- package/esm2022/icons/angledoubleup/angledoubleup.mjs +0 -34
- package/esm2022/icons/angledoubleup/primeng-icons-angledoubleup.mjs +0 -5
- package/esm2022/icons/angledoubleup/public_api.mjs +0 -2
- package/esm2022/icons/angledown/angledown.mjs +0 -32
- package/esm2022/icons/angledown/primeng-icons-angledown.mjs +0 -5
- package/esm2022/icons/angledown/public_api.mjs +0 -2
- package/esm2022/icons/angleleft/angleleft.mjs +0 -32
- package/esm2022/icons/angleleft/primeng-icons-angleleft.mjs +0 -5
- package/esm2022/icons/angleleft/public_api.mjs +0 -2
- package/esm2022/icons/angleright/angleright.mjs +0 -32
- package/esm2022/icons/angleright/primeng-icons-angleright.mjs +0 -5
- package/esm2022/icons/angleright/public_api.mjs +0 -2
- package/esm2022/icons/angleup/angleup.mjs +0 -32
- package/esm2022/icons/angleup/primeng-icons-angleup.mjs +0 -5
- package/esm2022/icons/angleup/public_api.mjs +0 -2
- package/esm2022/icons/arrowdown/arrowdown.mjs +0 -53
- package/esm2022/icons/arrowdown/primeng-icons-arrowdown.mjs +0 -5
- package/esm2022/icons/arrowdown/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +0 -32
- package/esm2022/icons/arrowdownleft/primeng-icons-arrowdownleft.mjs +0 -5
- package/esm2022/icons/arrowdownleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowdownright/arrowdownright.mjs +0 -32
- package/esm2022/icons/arrowdownright/primeng-icons-arrowdownright.mjs +0 -5
- package/esm2022/icons/arrowdownright/public_api.mjs +0 -2
- package/esm2022/icons/arrowleft/arrowleft.mjs +0 -53
- package/esm2022/icons/arrowleft/primeng-icons-arrowleft.mjs +0 -5
- package/esm2022/icons/arrowleft/public_api.mjs +0 -2
- package/esm2022/icons/arrowright/arrowright.mjs +0 -34
- package/esm2022/icons/arrowright/primeng-icons-arrowright.mjs +0 -5
- package/esm2022/icons/arrowright/public_api.mjs +0 -2
- package/esm2022/icons/arrowup/arrowup.mjs +0 -53
- package/esm2022/icons/arrowup/primeng-icons-arrowup.mjs +0 -5
- package/esm2022/icons/arrowup/public_api.mjs +0 -2
- package/esm2022/icons/ban/ban.mjs +0 -51
- package/esm2022/icons/ban/primeng-icons-ban.mjs +0 -5
- package/esm2022/icons/ban/public_api.mjs +0 -2
- package/esm2022/icons/bars/bars.mjs +0 -34
- package/esm2022/icons/bars/primeng-icons-bars.mjs +0 -5
- package/esm2022/icons/bars/public_api.mjs +0 -2
- package/esm2022/icons/baseicon/baseicon.mjs +0 -54
- package/esm2022/icons/baseicon/primeng-icons-baseicon.mjs +0 -5
- package/esm2022/icons/baseicon/public_api.mjs +0 -3
- package/esm2022/icons/baseicon/style/baseiconstyle.mjs +0 -57
- package/esm2022/icons/blank/blank.mjs +0 -26
- package/esm2022/icons/blank/primeng-icons-blank.mjs +0 -5
- package/esm2022/icons/blank/public_api.mjs +0 -2
- package/esm2022/icons/calendar/calendar.mjs +0 -32
- package/esm2022/icons/calendar/primeng-icons-calendar.mjs +0 -5
- package/esm2022/icons/calendar/public_api.mjs +0 -2
- package/esm2022/icons/caretleft/caretleft.mjs +0 -32
- package/esm2022/icons/caretleft/primeng-icons-caretleft.mjs +0 -5
- package/esm2022/icons/caretleft/public_api.mjs +0 -2
- package/esm2022/icons/caretright/caretright.mjs +0 -32
- package/esm2022/icons/caretright/primeng-icons-caretright.mjs +0 -5
- package/esm2022/icons/caretright/public_api.mjs +0 -2
- package/esm2022/icons/check/check.mjs +0 -32
- package/esm2022/icons/check/primeng-icons-check.mjs +0 -5
- package/esm2022/icons/check/public_api.mjs +0 -2
- package/esm2022/icons/chevrondown/chevrondown.mjs +0 -32
- package/esm2022/icons/chevrondown/primeng-icons-chevrondown.mjs +0 -5
- package/esm2022/icons/chevrondown/public_api.mjs +0 -2
- package/esm2022/icons/chevronleft/chevronleft.mjs +0 -32
- package/esm2022/icons/chevronleft/primeng-icons-chevronleft.mjs +0 -5
- package/esm2022/icons/chevronleft/public_api.mjs +0 -2
- package/esm2022/icons/chevronright/chevronright.mjs +0 -32
- package/esm2022/icons/chevronright/primeng-icons-chevronright.mjs +0 -5
- package/esm2022/icons/chevronright/public_api.mjs +0 -2
- package/esm2022/icons/chevronup/chevronup.mjs +0 -32
- package/esm2022/icons/chevronup/primeng-icons-chevronup.mjs +0 -5
- package/esm2022/icons/chevronup/public_api.mjs +0 -2
- package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +0 -59
- package/esm2022/icons/exclamationtriangle/primeng-icons-exclamationtriangle.mjs +0 -5
- package/esm2022/icons/exclamationtriangle/public_api.mjs +0 -2
- package/esm2022/icons/eye/eye.mjs +0 -34
- package/esm2022/icons/eye/primeng-icons-eye.mjs +0 -5
- package/esm2022/icons/eye/public_api.mjs +0 -2
- package/esm2022/icons/eyeslash/eyeslash.mjs +0 -53
- package/esm2022/icons/eyeslash/primeng-icons-eyeslash.mjs +0 -5
- package/esm2022/icons/eyeslash/public_api.mjs +0 -2
- package/esm2022/icons/filter/filter.mjs +0 -51
- package/esm2022/icons/filter/primeng-icons-filter.mjs +0 -5
- package/esm2022/icons/filter/public_api.mjs +0 -2
- package/esm2022/icons/filterslash/filterslash.mjs +0 -53
- package/esm2022/icons/filterslash/primeng-icons-filterslash.mjs +0 -5
- package/esm2022/icons/filterslash/public_api.mjs +0 -2
- package/esm2022/icons/home/home.mjs +0 -53
- package/esm2022/icons/home/primeng-icons-home.mjs +0 -5
- package/esm2022/icons/home/public_api.mjs +0 -2
- package/esm2022/icons/infocircle/infocircle.mjs +0 -53
- package/esm2022/icons/infocircle/primeng-icons-infocircle.mjs +0 -5
- package/esm2022/icons/infocircle/public_api.mjs +0 -2
- package/esm2022/icons/minus/minus.mjs +0 -32
- package/esm2022/icons/minus/primeng-icons-minus.mjs +0 -5
- package/esm2022/icons/minus/public_api.mjs +0 -2
- package/esm2022/icons/pencil/pencil.mjs +0 -51
- package/esm2022/icons/pencil/primeng-icons-pencil.mjs +0 -5
- package/esm2022/icons/pencil/public_api.mjs +0 -2
- package/esm2022/icons/plus/plus.mjs +0 -51
- package/esm2022/icons/plus/primeng-icons-plus.mjs +0 -5
- package/esm2022/icons/plus/public_api.mjs +0 -2
- package/esm2022/icons/primeng-icons.mjs +0 -5
- package/esm2022/icons/public_api.mjs +0 -58
- package/esm2022/icons/refresh/primeng-icons-refresh.mjs +0 -5
- package/esm2022/icons/refresh/public_api.mjs +0 -2
- package/esm2022/icons/refresh/refresh.mjs +0 -53
- package/esm2022/icons/search/primeng-icons-search.mjs +0 -5
- package/esm2022/icons/search/public_api.mjs +0 -2
- package/esm2022/icons/search/search.mjs +0 -53
- package/esm2022/icons/searchminus/primeng-icons-searchminus.mjs +0 -5
- package/esm2022/icons/searchminus/public_api.mjs +0 -2
- package/esm2022/icons/searchminus/searchminus.mjs +0 -53
- package/esm2022/icons/searchplus/primeng-icons-searchplus.mjs +0 -5
- package/esm2022/icons/searchplus/public_api.mjs +0 -2
- package/esm2022/icons/searchplus/searchplus.mjs +0 -53
- package/esm2022/icons/sortalt/primeng-icons-sortalt.mjs +0 -5
- package/esm2022/icons/sortalt/public_api.mjs +0 -2
- package/esm2022/icons/sortalt/sortalt.mjs +0 -57
- package/esm2022/icons/sortamountdown/primeng-icons-sortamountdown.mjs +0 -5
- package/esm2022/icons/sortamountdown/public_api.mjs +0 -2
- package/esm2022/icons/sortamountdown/sortamountdown.mjs +0 -51
- package/esm2022/icons/sortamountupalt/primeng-icons-sortamountupalt.mjs +0 -5
- package/esm2022/icons/sortamountupalt/public_api.mjs +0 -2
- package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +0 -51
- package/esm2022/icons/spinner/primeng-icons-spinner.mjs +0 -5
- package/esm2022/icons/spinner/public_api.mjs +0 -2
- package/esm2022/icons/spinner/spinner.mjs +0 -51
- package/esm2022/icons/star/primeng-icons-star.mjs +0 -5
- package/esm2022/icons/star/public_api.mjs +0 -2
- package/esm2022/icons/star/star.mjs +0 -51
- package/esm2022/icons/starfill/primeng-icons-starfill.mjs +0 -5
- package/esm2022/icons/starfill/public_api.mjs +0 -2
- package/esm2022/icons/starfill/starfill.mjs +0 -51
- package/esm2022/icons/thlarge/primeng-icons-thlarge.mjs +0 -5
- package/esm2022/icons/thlarge/public_api.mjs +0 -2
- package/esm2022/icons/thlarge/thlarge.mjs +0 -53
- package/esm2022/icons/times/primeng-icons-times.mjs +0 -5
- package/esm2022/icons/times/public_api.mjs +0 -2
- package/esm2022/icons/times/times.mjs +0 -32
- package/esm2022/icons/timescircle/primeng-icons-timescircle.mjs +0 -5
- package/esm2022/icons/timescircle/public_api.mjs +0 -2
- package/esm2022/icons/timescircle/timescircle.mjs +0 -53
- package/esm2022/icons/trash/primeng-icons-trash.mjs +0 -5
- package/esm2022/icons/trash/public_api.mjs +0 -2
- package/esm2022/icons/trash/trash.mjs +0 -53
- package/esm2022/icons/undo/primeng-icons-undo.mjs +0 -5
- package/esm2022/icons/undo/public_api.mjs +0 -2
- package/esm2022/icons/undo/undo.mjs +0 -53
- package/esm2022/icons/upload/primeng-icons-upload.mjs +0 -5
- package/esm2022/icons/upload/public_api.mjs +0 -2
- package/esm2022/icons/upload/upload.mjs +0 -53
- package/esm2022/icons/windowmaximize/primeng-icons-windowmaximize.mjs +0 -5
- package/esm2022/icons/windowmaximize/public_api.mjs +0 -2
- package/esm2022/icons/windowmaximize/windowmaximize.mjs +0 -53
- package/esm2022/icons/windowminimize/primeng-icons-windowminimize.mjs +0 -5
- package/esm2022/icons/windowminimize/public_api.mjs +0 -2
- package/esm2022/icons/windowminimize/windowminimize.mjs +0 -53
- package/esm2022/iftalabel/iftalabel.mjs +0 -49
- package/esm2022/iftalabel/primeng-iftalabel.mjs +0 -5
- package/esm2022/iftalabel/public_api.mjs +0 -3
- package/esm2022/iftalabel/style/iftalabelstyle.mjs +0 -96
- package/esm2022/image/image.interface.mjs +0 -2
- package/esm2022/image/image.mjs +0 -747
- package/esm2022/image/primeng-image.mjs +0 -5
- package/esm2022/image/public_api.mjs +0 -4
- package/esm2022/image/style/imagestyle.mjs +0 -219
- package/esm2022/imagecompare/imagecompare.mjs +0 -158
- package/esm2022/imagecompare/primeng-imagecompare.mjs +0 -5
- package/esm2022/imagecompare/public_api.mjs +0 -3
- package/esm2022/imagecompare/style/imagecomparestyle.mjs +0 -124
- package/esm2022/inplace/inplace.interface.mjs +0 -2
- package/esm2022/inplace/inplace.mjs +0 -344
- package/esm2022/inplace/primeng-inplace.mjs +0 -5
- package/esm2022/inplace/public_api.mjs +0 -4
- package/esm2022/inplace/style/inplacestyle.mjs +0 -69
- package/esm2022/inputgroup/inputgroup.mjs +0 -68
- package/esm2022/inputgroup/primeng-inputgroup.mjs +0 -5
- package/esm2022/inputgroup/public_api.mjs +0 -3
- package/esm2022/inputgroup/style/inputgroupstyle.mjs +0 -145
- package/esm2022/inputgroupaddon/inputgroupaddon.mjs +0 -74
- package/esm2022/inputgroupaddon/primeng-inputgroupaddon.mjs +0 -5
- package/esm2022/inputgroupaddon/public_api.mjs +0 -3
- package/esm2022/inputgroupaddon/style/inputgroupaddonstyle.mjs +0 -16
- package/esm2022/inputicon/inputicon.mjs +0 -66
- package/esm2022/inputicon/primeng-inputicon.mjs +0 -5
- package/esm2022/inputicon/public_api.mjs +0 -3
- package/esm2022/inputicon/style/inputiconstyle.mjs +0 -16
- package/esm2022/inputmask/inputmask.interface.mjs +0 -2
- package/esm2022/inputmask/inputmask.mjs +0 -911
- package/esm2022/inputmask/primeng-inputmask.mjs +0 -5
- package/esm2022/inputmask/public_api.mjs +0 -4
- package/esm2022/inputmask/style/inputmaskstyle.mjs +0 -62
- package/esm2022/inputnumber/inputnumber.interface.mjs +0 -2
- package/esm2022/inputnumber/inputnumber.mjs +0 -1745
- package/esm2022/inputnumber/primeng-inputnumber.mjs +0 -5
- package/esm2022/inputnumber/public_api.mjs +0 -4
- package/esm2022/inputnumber/style/inputnumberstyle.mjs +0 -240
- package/esm2022/inputotp/inputotp.mjs +0 -406
- package/esm2022/inputotp/primeng-inputotp.mjs +0 -5
- package/esm2022/inputotp/public_api.mjs +0 -3
- package/esm2022/inputotp/style/inputotpstyle.mjs +0 -60
- package/esm2022/inputswitch/inputswitch.interface.mjs +0 -2
- package/esm2022/inputswitch/inputswitch.mjs +0 -241
- package/esm2022/inputswitch/primeng-inputswitch.mjs +0 -5
- package/esm2022/inputswitch/public_api.mjs +0 -4
- package/esm2022/inputswitch/style/inputswitchstyle.mjs +0 -130
- package/esm2022/inputtext/inputtext.mjs +0 -103
- package/esm2022/inputtext/primeng-inputtext.mjs +0 -5
- package/esm2022/inputtext/public_api.mjs +0 -3
- package/esm2022/inputtext/style/inputtextstyle.mjs +0 -117
- package/esm2022/inputtextarea/inputtextarea.mjs +0 -156
- package/esm2022/inputtextarea/primeng-inputtextarea.mjs +0 -5
- package/esm2022/inputtextarea/public_api.mjs +0 -3
- package/esm2022/inputtextarea/style/textareastyle.mjs +0 -107
- package/esm2022/keyfilter/keyfilter.interface.mjs +0 -2
- package/esm2022/keyfilter/keyfilter.mjs +0 -263
- package/esm2022/keyfilter/primeng-keyfilter.mjs +0 -5
- package/esm2022/keyfilter/public_api.mjs +0 -3
- package/esm2022/knob/knob.mjs +0 -471
- package/esm2022/knob/primeng-knob.mjs +0 -5
- package/esm2022/knob/public_api.mjs +0 -3
- package/esm2022/knob/style/knobstyle.mjs +0 -83
- package/esm2022/listbox/listbox.interface.mjs +0 -2
- package/esm2022/listbox/listbox.mjs +0 -2044
- package/esm2022/listbox/primeng-listbox.mjs +0 -5
- package/esm2022/listbox/public_api.mjs +0 -4
- package/esm2022/listbox/style/listboxstyle.mjs +0 -206
- package/esm2022/megamenu/megamenu.interface.mjs +0 -2
- package/esm2022/megamenu/megamenu.mjs +0 -1607
- package/esm2022/megamenu/primeng-megamenu.mjs +0 -5
- package/esm2022/megamenu/public_api.mjs +0 -4
- package/esm2022/megamenu/style/megamenustyle.mjs +0 -487
- package/esm2022/menu/menu.mjs +0 -1193
- package/esm2022/menu/primeng-menu.mjs +0 -5
- package/esm2022/menu/public_api.mjs +0 -3
- package/esm2022/menu/style/menustyle.mjs +0 -179
- package/esm2022/menubar/menubar.interface.mjs +0 -2
- package/esm2022/menubar/menubar.mjs +0 -1484
- package/esm2022/menubar/primeng-menubar.mjs +0 -5
- package/esm2022/menubar/public_api.mjs +0 -4
- package/esm2022/menubar/style/menubarstyle.mjs +0 -375
- package/esm2022/message/message.mjs +0 -421
- package/esm2022/message/primeng-message.mjs +0 -5
- package/esm2022/message/public_api.mjs +0 -3
- package/esm2022/message/style/messagestyle.mjs +0 -357
- package/esm2022/messages/messages.interface.mjs +0 -2
- package/esm2022/messages/messages.mjs +0 -529
- package/esm2022/messages/primeng-messages.mjs +0 -5
- package/esm2022/messages/public_api.mjs +0 -4
- package/esm2022/messages/style/messagesstyle.mjs +0 -229
- package/esm2022/metergroup/metergroup.interface.mjs +0 -2
- package/esm2022/metergroup/metergroup.mjs +0 -423
- package/esm2022/metergroup/primeng-metergroup.mjs +0 -5
- package/esm2022/metergroup/public_api.mjs +0 -4
- package/esm2022/metergroup/style/metergroupstyle.mjs +0 -169
- package/esm2022/multiselect/multiselect.interface.mjs +0 -2
- package/esm2022/multiselect/multiselect.mjs +0 -2924
- package/esm2022/multiselect/primeng-multiselect.mjs +0 -5
- package/esm2022/multiselect/public_api.mjs +0 -4
- package/esm2022/multiselect/style/multiselectstyle.mjs +0 -376
- package/esm2022/orderlist/orderlist.interface.mjs +0 -2
- package/esm2022/orderlist/orderlist.mjs +0 -1121
- package/esm2022/orderlist/primeng-orderlist.mjs +0 -5
- package/esm2022/orderlist/public_api.mjs +0 -4
- package/esm2022/orderlist/style/orderliststyle.mjs +0 -51
- package/esm2022/organizationchart/organizationchart.interface.mjs +0 -2
- package/esm2022/organizationchart/organizationchart.mjs +0 -591
- package/esm2022/organizationchart/primeng-organizationchart.mjs +0 -5
- package/esm2022/organizationchart/public_api.mjs +0 -4
- package/esm2022/organizationchart/style/organizationchartstyle.mjs +0 -191
- package/esm2022/overlay/overlay.mjs +0 -668
- package/esm2022/overlay/primeng-overlay.mjs +0 -5
- package/esm2022/overlay/public_api.mjs +0 -3
- package/esm2022/overlay/style/overlaystyle.mjs +0 -93
- package/esm2022/overlaybadge/overlaybadge.mjs +0 -121
- package/esm2022/overlaybadge/primeng-overlaybadge.mjs +0 -5
- package/esm2022/overlaybadge/public_api.mjs +0 -3
- package/esm2022/overlaybadge/style/overlaybadgestyle.mjs +0 -34
- package/esm2022/overlaypanel/overlaypanel.mjs +0 -529
- package/esm2022/overlaypanel/primeng-overlaypanel.mjs +0 -5
- package/esm2022/overlaypanel/public_api.mjs +0 -3
- package/esm2022/overlaypanel/style/popoverstyle.mjs +0 -119
- package/esm2022/paginator/paginator.interface.mjs +0 -2
- package/esm2022/paginator/paginator.mjs +0 -893
- package/esm2022/paginator/primeng-paginator.mjs +0 -5
- package/esm2022/paginator/public_api.mjs +0 -4
- package/esm2022/paginator/style/paginatorstyle.mjs +0 -243
- package/esm2022/panel/panel.mjs +0 -585
- package/esm2022/panel/primeng-panel.mjs +0 -5
- package/esm2022/panel/public_api.mjs +0 -3
- package/esm2022/panel/style/panelstyle.mjs +0 -120
- package/esm2022/panelmenu/panelmenu.interface.mjs +0 -2
- package/esm2022/panelmenu/panelmenu.mjs +0 -1628
- package/esm2022/panelmenu/primeng-panelmenu.mjs +0 -5
- package/esm2022/panelmenu/public_api.mjs +0 -4
- package/esm2022/panelmenu/style/panelmenustyle.mjs +0 -291
- package/esm2022/password/password.mjs +0 -1178
- package/esm2022/password/primeng-password.mjs +0 -5
- package/esm2022/password/public_api.mjs +0 -3
- package/esm2022/password/style/passwordstyle.mjs +0 -182
- package/esm2022/picklist/picklist.interface.mjs +0 -2
- package/esm2022/picklist/picklist.mjs +0 -2298
- package/esm2022/picklist/primeng-picklist.mjs +0 -5
- package/esm2022/picklist/public_api.mjs +0 -4
- package/esm2022/picklist/style/pickliststyle.mjs +0 -79
- package/esm2022/popover/popover.mjs +0 -518
- package/esm2022/popover/primeng-popover.mjs +0 -5
- package/esm2022/popover/public_api.mjs +0 -3
- package/esm2022/popover/style/popoverstyle.mjs +0 -99
- package/esm2022/primeng.mjs +0 -5
- package/esm2022/progressbar/primeng-progressbar.mjs +0 -5
- package/esm2022/progressbar/progressbar.mjs +0 -197
- package/esm2022/progressbar/public_api.mjs +0 -3
- package/esm2022/progressbar/style/progressbarstyle.mjs +0 -165
- package/esm2022/progressspinner/primeng-progressspinner.mjs +0 -5
- package/esm2022/progressspinner/progressspinner.mjs +0 -105
- package/esm2022/progressspinner/public_api.mjs +0 -3
- package/esm2022/progressspinner/style/progressspinnerstyle.mjs +0 -115
- package/esm2022/public_api.mjs +0 -2
- package/esm2022/radiobutton/primeng-radiobutton.mjs +0 -5
- package/esm2022/radiobutton/public_api.mjs +0 -4
- package/esm2022/radiobutton/radiobutton.interface.mjs +0 -2
- package/esm2022/radiobutton/radiobutton.mjs +0 -356
- package/esm2022/radiobutton/style/radiobuttonstyle.mjs +0 -196
- package/esm2022/rating/primeng-rating.mjs +0 -5
- package/esm2022/rating/public_api.mjs +0 -4
- package/esm2022/rating/rating.interface.mjs +0 -2
- package/esm2022/rating/rating.mjs +0 -425
- package/esm2022/rating/style/ratingstyle.mjs +0 -103
- package/esm2022/ripple/primeng-ripple.mjs +0 -5
- package/esm2022/ripple/public_api.mjs +0 -3
- package/esm2022/ripple/ripple.mjs +0 -131
- package/esm2022/ripple/style/ripplestyle.mjs +0 -63
- package/esm2022/scroller/primeng-scroller.mjs +0 -5
- package/esm2022/scroller/public_api.mjs +0 -4
- package/esm2022/scroller/scroller.interface.mjs +0 -2
- package/esm2022/scroller/scroller.mjs +0 -1290
- package/esm2022/scroller/style/scrollerstyle.mjs +0 -104
- package/esm2022/scrollpanel/primeng-scrollpanel.mjs +0 -5
- package/esm2022/scrollpanel/public_api.mjs +0 -4
- package/esm2022/scrollpanel/scrollpanel.interface.mjs +0 -2
- package/esm2022/scrollpanel/scrollpanel.mjs +0 -506
- package/esm2022/scrollpanel/style/scrollpanelstyle.mjs +0 -120
- package/esm2022/scrolltop/primeng-scrolltop.mjs +0 -5
- package/esm2022/scrolltop/public_api.mjs +0 -4
- package/esm2022/scrolltop/scrolltop.interface.mjs +0 -2
- package/esm2022/scrolltop/scrolltop.mjs +0 -336
- package/esm2022/scrolltop/style/scrolltopstyle.mjs +0 -77
- package/esm2022/select/primeng-select.mjs +0 -5
- package/esm2022/select/public_api.mjs +0 -4
- package/esm2022/select/select.interface.mjs +0 -2
- package/esm2022/select/select.mjs +0 -2617
- package/esm2022/select/style/selectstyle.mjs +0 -368
- package/esm2022/selectbutton/primeng-selectbutton.mjs +0 -5
- package/esm2022/selectbutton/public_api.mjs +0 -4
- package/esm2022/selectbutton/selectbutton.interface.mjs +0 -2
- package/esm2022/selectbutton/selectbutton.mjs +0 -373
- package/esm2022/selectbutton/style/selectbuttonstyle.mjs +0 -73
- package/esm2022/sidebar/primeng-sidebar.mjs +0 -5
- package/esm2022/sidebar/public_api.mjs +0 -4
- package/esm2022/sidebar/sidebar.interface.mjs +0 -2
- package/esm2022/sidebar/sidebar.mjs +0 -578
- package/esm2022/sidebar/style/drawerstyle.mjs +0 -174
- package/esm2022/skeleton/primeng-skeleton.mjs +0 -5
- package/esm2022/skeleton/public_api.mjs +0 -3
- package/esm2022/skeleton/skeleton.mjs +0 -121
- package/esm2022/skeleton/style/skeletonstyle.mjs +0 -93
- package/esm2022/slider/primeng-slider.mjs +0 -5
- package/esm2022/slider/public_api.mjs +0 -4
- package/esm2022/slider/slider.interface.mjs +0 -2
- package/esm2022/slider/slider.mjs +0 -820
- package/esm2022/slider/style/sliderstyle.mjs +0 -141
- package/esm2022/speeddial/primeng-speeddial.mjs +0 -5
- package/esm2022/speeddial/public_api.mjs +0 -4
- package/esm2022/speeddial/speeddial.interface.mjs +0 -2
- package/esm2022/speeddial/speeddial.mjs +0 -866
- package/esm2022/speeddial/style/speeddialstyle.mjs +0 -167
- package/esm2022/splitbutton/primeng-splitbutton.mjs +0 -5
- package/esm2022/splitbutton/public_api.mjs +0 -4
- package/esm2022/splitbutton/splitbutton.interface.mjs +0 -2
- package/esm2022/splitbutton/splitbutton.mjs +0 -579
- package/esm2022/splitbutton/style/splitbuttonstyle.mjs +0 -100
- package/esm2022/splitter/primeng-splitter.mjs +0 -5
- package/esm2022/splitter/public_api.mjs +0 -4
- package/esm2022/splitter/splitter.interface.mjs +0 -2
- package/esm2022/splitter/splitter.mjs +0 -616
- package/esm2022/splitter/style/splitterstyle.mjs +0 -126
- package/esm2022/stepper/primeng-stepper.mjs +0 -5
- package/esm2022/stepper/public_api.mjs +0 -3
- package/esm2022/stepper/stepper.mjs +0 -521
- package/esm2022/stepper/style/stepperstyle.mjs +0 -228
- package/esm2022/steps/primeng-steps.mjs +0 -5
- package/esm2022/steps/public_api.mjs +0 -3
- package/esm2022/steps/steps.mjs +0 -405
- package/esm2022/steps/style/stepsstyle.mjs +0 -180
- package/esm2022/styleclass/primeng-styleclass.mjs +0 -5
- package/esm2022/styleclass/public_api.mjs +0 -2
- package/esm2022/styleclass/styleclass.mjs +0 -315
- package/esm2022/table/columnfilter.interface.mjs +0 -2
- package/esm2022/table/primeng-table.mjs +0 -5
- package/esm2022/table/public_api.mjs +0 -5
- package/esm2022/table/style/tablestyle.mjs +0 -906
- package/esm2022/table/table.interface.mjs +0 -2
- package/esm2022/table/table.mjs +0 -7982
- package/esm2022/tabmenu/primeng-tabmenu.mjs +0 -5
- package/esm2022/tabmenu/public_api.mjs +0 -4
- package/esm2022/tabmenu/style/tabmenustyle.mjs +0 -192
- package/esm2022/tabmenu/tabmenu.interface.mjs +0 -2
- package/esm2022/tabmenu/tabmenu.mjs +0 -730
- package/esm2022/tabs/primeng-tabs.mjs +0 -5
- package/esm2022/tabs/public_api.mjs +0 -7
- package/esm2022/tabs/style/tabsstyle.mjs +0 -211
- package/esm2022/tabs/tab.mjs +0 -175
- package/esm2022/tabs/tablist.mjs +0 -297
- package/esm2022/tabs/tabpanel.mjs +0 -60
- package/esm2022/tabs/tabpanels.mjs +0 -38
- package/esm2022/tabs/tabs.mjs +0 -105
- package/esm2022/tabview/primeng-tabview.mjs +0 -5
- package/esm2022/tabview/public_api.mjs +0 -4
- package/esm2022/tabview/style/tabsstyle.mjs +0 -211
- package/esm2022/tabview/tabview.interface.mjs +0 -2
- package/esm2022/tabview/tabview.mjs +0 -1089
- package/esm2022/tag/primeng-tag.mjs +0 -5
- package/esm2022/tag/public_api.mjs +0 -4
- package/esm2022/tag/style/tagstyle.mjs +0 -108
- package/esm2022/tag/tag.interface.mjs +0 -2
- package/esm2022/tag/tag.mjs +0 -168
- package/esm2022/terminal/primeng-terminal.mjs +0 -5
- package/esm2022/terminal/public_api.mjs +0 -4
- package/esm2022/terminal/style/terminalstyle.mjs +0 -113
- package/esm2022/terminal/terminal.mjs +0 -195
- package/esm2022/terminal/terminalservice.mjs +0 -25
- package/esm2022/textarea/primeng-textarea.mjs +0 -5
- package/esm2022/textarea/public_api.mjs +0 -3
- package/esm2022/textarea/style/textareastyle.mjs +0 -120
- package/esm2022/textarea/textarea.mjs +0 -165
- package/esm2022/tieredmenu/primeng-tieredmenu.mjs +0 -5
- package/esm2022/tieredmenu/public_api.mjs +0 -4
- package/esm2022/tieredmenu/style/tieredmenustyle.mjs +0 -276
- package/esm2022/tieredmenu/tieredmenu.interface.mjs +0 -2
- package/esm2022/tieredmenu/tieredmenu.mjs +0 -1444
- package/esm2022/timeline/primeng-timeline.mjs +0 -5
- package/esm2022/timeline/public_api.mjs +0 -4
- package/esm2022/timeline/style/timelinestyle.mjs +0 -217
- package/esm2022/timeline/timeline.interface.mjs +0 -2
- package/esm2022/timeline/timeline.mjs +0 -223
- package/esm2022/toast/primeng-toast.mjs +0 -5
- package/esm2022/toast/public_api.mjs +0 -4
- package/esm2022/toast/style/toaststyle.mjs +0 -351
- package/esm2022/toast/toast.interface.mjs +0 -2
- package/esm2022/toast/toast.mjs +0 -738
- package/esm2022/togglebutton/primeng-togglebutton.mjs +0 -5
- package/esm2022/togglebutton/public_api.mjs +0 -3
- package/esm2022/togglebutton/style/togglebuttonstyle.mjs +0 -170
- package/esm2022/togglebutton/togglebutton.interface.mjs +0 -2
- package/esm2022/togglebutton/togglebutton.mjs +0 -353
- package/esm2022/toggleswitch/primeng-toggleswitch.mjs +0 -5
- package/esm2022/toggleswitch/public_api.mjs +0 -4
- package/esm2022/toggleswitch/style/toggleswitchstyle.mjs +0 -165
- package/esm2022/toggleswitch/toggleswitch.interface.mjs +0 -2
- package/esm2022/toggleswitch/toggleswitch.mjs +0 -278
- package/esm2022/toolbar/primeng-toolbar.mjs +0 -5
- package/esm2022/toolbar/public_api.mjs +0 -4
- package/esm2022/toolbar/style/toolbarstyle.mjs +0 -69
- package/esm2022/toolbar/toolbar.interface.mjs +0 -2
- package/esm2022/toolbar/toolbar.mjs +0 -172
- package/esm2022/tooltip/primeng-tooltip.mjs +0 -5
- package/esm2022/tooltip/public_api.mjs +0 -3
- package/esm2022/tooltip/style/tooltipstyle.mjs +0 -113
- package/esm2022/tooltip/tooltip.mjs +0 -715
- package/esm2022/tree/primeng-tree.mjs +0 -5
- package/esm2022/tree/public_api.mjs +0 -4
- package/esm2022/tree/style/treestyle.mjs +0 -323
- package/esm2022/tree/tree.interface.mjs +0 -2
- package/esm2022/tree/tree.mjs +0 -2248
- package/esm2022/treeselect/primeng-treeselect.mjs +0 -5
- package/esm2022/treeselect/public_api.mjs +0 -4
- package/esm2022/treeselect/style/treeselectstyle.mjs +0 -274
- package/esm2022/treeselect/treeselect.interface.mjs +0 -2
- package/esm2022/treeselect/treeselect.mjs +0 -1372
- package/esm2022/treetable/primeng-treetable.mjs +0 -5
- package/esm2022/treetable/public_api.mjs +0 -4
- package/esm2022/treetable/style/treetablestyle.mjs +0 -621
- package/esm2022/treetable/treetable.interface.mjs +0 -2
- package/esm2022/treetable/treetable.mjs +0 -4642
- package/esm2022/ts-helpers/primeng-ts-helpers.mjs +0 -5
- package/esm2022/ts-helpers/public_api.mjs +0 -2
- package/esm2022/ts-helpers/ts-helpers.mjs +0 -2
- package/esm2022/usestyle/primeng-usestyle.mjs +0 -5
- package/esm2022/usestyle/public_api.mjs +0 -2
- package/esm2022/usestyle/usestyle.mjs +0 -44
- package/esm2022/utils/inpututils.mjs +0 -7
- package/esm2022/utils/objectutils.mjs +0 -276
- package/esm2022/utils/primeng-utils.mjs +0 -5
- package/esm2022/utils/public_api.mjs +0 -6
- package/esm2022/utils/uniquecomponentid.mjs +0 -6
- package/esm2022/utils/zindexutils.mjs +0 -35
@@ -1,2298 +0,0 @@
|
|
1
|
-
import { DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
|
2
|
-
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
3
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, inject, Input, NgModule, numberAttribute, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
4
|
-
import { FormsModule } from '@angular/forms';
|
5
|
-
import { find, findIndexInList, findSingle, isEmpty, scrollInView, setAttribute, uuid } from '@primeuix/utils';
|
6
|
-
import { FilterService, SharedModule } from 'primeng/api';
|
7
|
-
import { BaseComponent } from 'primeng/basecomponent';
|
8
|
-
import { ButtonDirective } from 'primeng/button';
|
9
|
-
import { AngleDoubleDownIcon, AngleDoubleLeftIcon, AngleDoubleRightIcon, AngleDoubleUpIcon, AngleDownIcon, AngleLeftIcon, AngleRightIcon, AngleUpIcon, SearchIcon } from 'primeng/icons';
|
10
|
-
import { Listbox } from 'primeng/listbox';
|
11
|
-
import { Ripple } from 'primeng/ripple';
|
12
|
-
import { PickListStyle } from './style/pickliststyle';
|
13
|
-
import * as i0 from "@angular/core";
|
14
|
-
import * as i1 from "@angular/common";
|
15
|
-
import * as i2 from "@angular/cdk/drag-drop";
|
16
|
-
import * as i3 from "@angular/forms";
|
17
|
-
const _c0 = ["item"];
|
18
|
-
const _c1 = ["sourceHeader"];
|
19
|
-
const _c2 = ["targetHeader"];
|
20
|
-
const _c3 = ["sourceFilter"];
|
21
|
-
const _c4 = ["targetFilter"];
|
22
|
-
const _c5 = ["emptymessagesource"];
|
23
|
-
const _c6 = ["emptyfiltermessagesource"];
|
24
|
-
const _c7 = ["emptymessagetarget"];
|
25
|
-
const _c8 = ["emptyfiltermessagetarget"];
|
26
|
-
const _c9 = ["moveupicon"];
|
27
|
-
const _c10 = ["movetopicon"];
|
28
|
-
const _c11 = ["movedownicon"];
|
29
|
-
const _c12 = ["movebottomicon"];
|
30
|
-
const _c13 = ["movetotargeticon"];
|
31
|
-
const _c14 = ["movealltotargeticon"];
|
32
|
-
const _c15 = ["movetosourceicon"];
|
33
|
-
const _c16 = ["movealltosourceicon"];
|
34
|
-
const _c17 = ["targetfiltericon"];
|
35
|
-
const _c18 = ["sourcefiltericon"];
|
36
|
-
const _c19 = ["sourcelist"];
|
37
|
-
const _c20 = ["targetlist"];
|
38
|
-
const _c21 = () => ({ "p-picklist p-component": true });
|
39
|
-
const _c22 = a0 => ({ $implicit: a0 });
|
40
|
-
const _c23 = (a0, a1, a2) => ({ $implicit: a0, index: a1, selected: a2 });
|
41
|
-
function PickList_div_1_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
42
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
43
|
-
} if (rf & 2) {
|
44
|
-
i0.ɵɵattribute("data-pc-section", "moveupicon");
|
45
|
-
} }
|
46
|
-
function PickList_div_1_3_ng_template_0_Template(rf, ctx) { }
|
47
|
-
function PickList_div_1_3_Template(rf, ctx) { if (rf & 1) {
|
48
|
-
i0.ɵɵtemplate(0, PickList_div_1_3_ng_template_0_Template, 0, 0, "ng-template");
|
49
|
-
} }
|
50
|
-
function PickList_div_1_AngleDoubleUpIcon_5_Template(rf, ctx) { if (rf & 1) {
|
51
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
52
|
-
} if (rf & 2) {
|
53
|
-
i0.ɵɵattribute("data-pc-section", "movetopicon");
|
54
|
-
} }
|
55
|
-
function PickList_div_1_6_ng_template_0_Template(rf, ctx) { }
|
56
|
-
function PickList_div_1_6_Template(rf, ctx) { if (rf & 1) {
|
57
|
-
i0.ɵɵtemplate(0, PickList_div_1_6_ng_template_0_Template, 0, 0, "ng-template");
|
58
|
-
} }
|
59
|
-
function PickList_div_1_AngleDownIcon_8_Template(rf, ctx) { if (rf & 1) {
|
60
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
61
|
-
} if (rf & 2) {
|
62
|
-
i0.ɵɵattribute("data-pc-section", "movedownicon");
|
63
|
-
} }
|
64
|
-
function PickList_div_1_9_ng_template_0_Template(rf, ctx) { }
|
65
|
-
function PickList_div_1_9_Template(rf, ctx) { if (rf & 1) {
|
66
|
-
i0.ɵɵtemplate(0, PickList_div_1_9_ng_template_0_Template, 0, 0, "ng-template");
|
67
|
-
} }
|
68
|
-
function PickList_div_1_AngleDoubleDownIcon_11_Template(rf, ctx) { if (rf & 1) {
|
69
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
70
|
-
} if (rf & 2) {
|
71
|
-
i0.ɵɵattribute("data-pc-section", "movebottomicon");
|
72
|
-
} }
|
73
|
-
function PickList_div_1_12_ng_template_0_Template(rf, ctx) { }
|
74
|
-
function PickList_div_1_12_Template(rf, ctx) { if (rf & 1) {
|
75
|
-
i0.ɵɵtemplate(0, PickList_div_1_12_ng_template_0_Template, 0, 0, "ng-template");
|
76
|
-
} }
|
77
|
-
function PickList_div_1_Template(rf, ctx) { if (rf & 1) {
|
78
|
-
const _r2 = i0.ɵɵgetCurrentView();
|
79
|
-
i0.ɵɵelementStart(0, "div", 14)(1, "button", 10);
|
80
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveUp(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
81
|
-
i0.ɵɵtemplate(2, PickList_div_1_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8)(3, PickList_div_1_3_Template, 1, 0, null, 15);
|
82
|
-
i0.ɵɵelementEnd();
|
83
|
-
i0.ɵɵelementStart(4, "button", 10);
|
84
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveTop(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
85
|
-
i0.ɵɵtemplate(5, PickList_div_1_AngleDoubleUpIcon_5_Template, 1, 1, "AngleDoubleUpIcon", 8)(6, PickList_div_1_6_Template, 1, 0, null, 15);
|
86
|
-
i0.ɵɵelementEnd();
|
87
|
-
i0.ɵɵelementStart(7, "button", 10);
|
88
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveDown(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
89
|
-
i0.ɵɵtemplate(8, PickList_div_1_AngleDownIcon_8_Template, 1, 1, "AngleDownIcon", 8)(9, PickList_div_1_9_Template, 1, 0, null, 15);
|
90
|
-
i0.ɵɵelementEnd();
|
91
|
-
i0.ɵɵelementStart(10, "button", 10);
|
92
|
-
i0.ɵɵlistener("click", function PickList_div_1_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); const sourcelist_r4 = i0.ɵɵreference(4); return i0.ɵɵresetView(ctx_r2.moveBottom(sourcelist_r4, ctx_r2.source, ctx_r2.selectedItemsSource, ctx_r2.onSourceReorder, ctx_r2.SOURCE_LIST)); });
|
93
|
-
i0.ɵɵtemplate(11, PickList_div_1_AngleDoubleDownIcon_11_Template, 1, 1, "AngleDoubleDownIcon", 8)(12, PickList_div_1_12_Template, 1, 0, null, 15);
|
94
|
-
i0.ɵɵelementEnd()();
|
95
|
-
} if (rf & 2) {
|
96
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
97
|
-
i0.ɵɵattribute("data-pc-section", "sourceControls")("data-pc-group-section", "controls");
|
98
|
-
i0.ɵɵadvance();
|
99
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("moveup"));
|
100
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveUpAriaLabel)("data-pc-section", "sourceMoveUpButton");
|
101
|
-
i0.ɵɵadvance();
|
102
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveUpIconTemplate);
|
103
|
-
i0.ɵɵadvance();
|
104
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveUpIconTemplate);
|
105
|
-
i0.ɵɵadvance();
|
106
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movetop"));
|
107
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveTopAriaLabel)("data-pc-section", "sourceMoveTopButton");
|
108
|
-
i0.ɵɵadvance();
|
109
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveTopIconTemplate);
|
110
|
-
i0.ɵɵadvance();
|
111
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveTopIconTemplate);
|
112
|
-
i0.ɵɵadvance();
|
113
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movedown"));
|
114
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveDownAriaLabel)("data-pc-section", "sourceMoveDownButton");
|
115
|
-
i0.ɵɵadvance();
|
116
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveDownIconTemplate);
|
117
|
-
i0.ɵɵadvance();
|
118
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveDownIconTemplate);
|
119
|
-
i0.ɵɵadvance();
|
120
|
-
i0.ɵɵproperty("disabled", ctx_r2.sourceMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movebottom"));
|
121
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveBottomAriaLabel)("data-pc-section", "sourceMoveBottomButton");
|
122
|
-
i0.ɵɵadvance();
|
123
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveBottomIconTemplate);
|
124
|
-
i0.ɵɵadvance();
|
125
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveBottomIconTemplate);
|
126
|
-
} }
|
127
|
-
function PickList_ng_container_5_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
128
|
-
function PickList_ng_container_5_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
129
|
-
i0.ɵɵtemplate(0, PickList_ng_container_5_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
130
|
-
} }
|
131
|
-
function PickList_ng_container_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
132
|
-
i0.ɵɵtemplate(0, PickList_ng_container_5_ng_template_1_0_Template, 1, 0, null, 15);
|
133
|
-
} if (rf & 2) {
|
134
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
135
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.sourceHeaderTemplate);
|
136
|
-
} }
|
137
|
-
function PickList_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
138
|
-
i0.ɵɵelementContainerStart(0);
|
139
|
-
i0.ɵɵtemplate(1, PickList_ng_container_5_ng_template_1_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
140
|
-
i0.ɵɵelementContainerEnd();
|
141
|
-
} }
|
142
|
-
function PickList_ng_container_6_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
143
|
-
i0.ɵɵelementContainer(0);
|
144
|
-
} }
|
145
|
-
function PickList_ng_container_6_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
146
|
-
i0.ɵɵtemplate(0, PickList_ng_container_6_ng_template_1_ng_container_0_Template, 1, 0, "ng-container", 11);
|
147
|
-
} if (rf & 2) {
|
148
|
-
const item_r5 = ctx.$implicit;
|
149
|
-
const index_r6 = ctx.index;
|
150
|
-
const selected_r7 = ctx.selected;
|
151
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
152
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c23, item_r5, index_r6, selected_r7));
|
153
|
-
} }
|
154
|
-
function PickList_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
155
|
-
i0.ɵɵelementContainerStart(0);
|
156
|
-
i0.ɵɵtemplate(1, PickList_ng_container_6_ng_template_1_Template, 1, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
157
|
-
i0.ɵɵelementContainerEnd();
|
158
|
-
} }
|
159
|
-
function PickList_ng_container_9_AngleRightIcon_1_Template(rf, ctx) { if (rf & 1) {
|
160
|
-
i0.ɵɵelement(0, "AngleRightIcon");
|
161
|
-
} if (rf & 2) {
|
162
|
-
i0.ɵɵattribute("data-pc-section", "movetotargeticon");
|
163
|
-
} }
|
164
|
-
function PickList_ng_container_9_AngleDownIcon_2_Template(rf, ctx) { if (rf & 1) {
|
165
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
166
|
-
} if (rf & 2) {
|
167
|
-
i0.ɵɵattribute("data-pc-section", "movetotargeticon");
|
168
|
-
} }
|
169
|
-
function PickList_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
170
|
-
i0.ɵɵelementContainerStart(0);
|
171
|
-
i0.ɵɵtemplate(1, PickList_ng_container_9_AngleRightIcon_1_Template, 1, 1, "AngleRightIcon", 8)(2, PickList_ng_container_9_AngleDownIcon_2_Template, 1, 1, "AngleDownIcon", 8);
|
172
|
-
i0.ɵɵelementContainerEnd();
|
173
|
-
} if (rf & 2) {
|
174
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
175
|
-
i0.ɵɵadvance();
|
176
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
177
|
-
i0.ɵɵadvance();
|
178
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
179
|
-
} }
|
180
|
-
function PickList_10_ng_template_0_Template(rf, ctx) { }
|
181
|
-
function PickList_10_Template(rf, ctx) { if (rf & 1) {
|
182
|
-
i0.ɵɵtemplate(0, PickList_10_ng_template_0_Template, 0, 0, "ng-template");
|
183
|
-
} }
|
184
|
-
function PickList_ng_container_12_AngleDoubleRightIcon_1_Template(rf, ctx) { if (rf & 1) {
|
185
|
-
i0.ɵɵelement(0, "AngleDoubleRightIcon");
|
186
|
-
} if (rf & 2) {
|
187
|
-
i0.ɵɵattribute("data-pc-section", "movealltotargeticon");
|
188
|
-
} }
|
189
|
-
function PickList_ng_container_12_AngleDoubleDownIcon_2_Template(rf, ctx) { if (rf & 1) {
|
190
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
191
|
-
} if (rf & 2) {
|
192
|
-
i0.ɵɵattribute("data-pc-section", "movealltotargeticon");
|
193
|
-
} }
|
194
|
-
function PickList_ng_container_12_Template(rf, ctx) { if (rf & 1) {
|
195
|
-
i0.ɵɵelementContainerStart(0);
|
196
|
-
i0.ɵɵtemplate(1, PickList_ng_container_12_AngleDoubleRightIcon_1_Template, 1, 1, "AngleDoubleRightIcon", 8)(2, PickList_ng_container_12_AngleDoubleDownIcon_2_Template, 1, 1, "AngleDoubleDownIcon", 8);
|
197
|
-
i0.ɵɵelementContainerEnd();
|
198
|
-
} if (rf & 2) {
|
199
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
200
|
-
i0.ɵɵadvance();
|
201
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
202
|
-
i0.ɵɵadvance();
|
203
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
204
|
-
} }
|
205
|
-
function PickList_13_ng_template_0_Template(rf, ctx) { }
|
206
|
-
function PickList_13_Template(rf, ctx) { if (rf & 1) {
|
207
|
-
i0.ɵɵtemplate(0, PickList_13_ng_template_0_Template, 0, 0, "ng-template");
|
208
|
-
} }
|
209
|
-
function PickList_ng_container_15_AngleLeftIcon_1_Template(rf, ctx) { if (rf & 1) {
|
210
|
-
i0.ɵɵelement(0, "AngleLeftIcon");
|
211
|
-
} if (rf & 2) {
|
212
|
-
i0.ɵɵattribute("data-pc-section", "movedownsourceticon");
|
213
|
-
} }
|
214
|
-
function PickList_ng_container_15_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
215
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
216
|
-
} if (rf & 2) {
|
217
|
-
i0.ɵɵattribute("data-pc-section", "movedownsourceticon");
|
218
|
-
} }
|
219
|
-
function PickList_ng_container_15_Template(rf, ctx) { if (rf & 1) {
|
220
|
-
i0.ɵɵelementContainerStart(0);
|
221
|
-
i0.ɵɵtemplate(1, PickList_ng_container_15_AngleLeftIcon_1_Template, 1, 1, "AngleLeftIcon", 8)(2, PickList_ng_container_15_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8);
|
222
|
-
i0.ɵɵelementContainerEnd();
|
223
|
-
} if (rf & 2) {
|
224
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
225
|
-
i0.ɵɵadvance();
|
226
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
227
|
-
i0.ɵɵadvance();
|
228
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
229
|
-
} }
|
230
|
-
function PickList_16_ng_template_0_Template(rf, ctx) { }
|
231
|
-
function PickList_16_Template(rf, ctx) { if (rf & 1) {
|
232
|
-
i0.ɵɵtemplate(0, PickList_16_ng_template_0_Template, 0, 0, "ng-template");
|
233
|
-
} }
|
234
|
-
function PickList_ng_container_18_AngleDoubleLeftIcon_1_Template(rf, ctx) { if (rf & 1) {
|
235
|
-
i0.ɵɵelement(0, "AngleDoubleLeftIcon");
|
236
|
-
} if (rf & 2) {
|
237
|
-
i0.ɵɵattribute("data-pc-section", "movealltosourceticon");
|
238
|
-
} }
|
239
|
-
function PickList_ng_container_18_AngleDoubleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
240
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
241
|
-
} if (rf & 2) {
|
242
|
-
i0.ɵɵattribute("data-pc-section", "movealltosourceticon");
|
243
|
-
} }
|
244
|
-
function PickList_ng_container_18_Template(rf, ctx) { if (rf & 1) {
|
245
|
-
i0.ɵɵelementContainerStart(0);
|
246
|
-
i0.ɵɵtemplate(1, PickList_ng_container_18_AngleDoubleLeftIcon_1_Template, 1, 1, "AngleDoubleLeftIcon", 8)(2, PickList_ng_container_18_AngleDoubleUpIcon_2_Template, 1, 1, "AngleDoubleUpIcon", 8);
|
247
|
-
i0.ɵɵelementContainerEnd();
|
248
|
-
} if (rf & 2) {
|
249
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
250
|
-
i0.ɵɵadvance();
|
251
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.viewChanged);
|
252
|
-
i0.ɵɵadvance();
|
253
|
-
i0.ɵɵproperty("ngIf", ctx_r2.viewChanged);
|
254
|
-
} }
|
255
|
-
function PickList_19_ng_template_0_Template(rf, ctx) { }
|
256
|
-
function PickList_19_Template(rf, ctx) { if (rf & 1) {
|
257
|
-
i0.ɵɵtemplate(0, PickList_19_ng_template_0_Template, 0, 0, "ng-template");
|
258
|
-
} }
|
259
|
-
function PickList_ng_container_23_ng_template_1_0_ng_template_0_Template(rf, ctx) { }
|
260
|
-
function PickList_ng_container_23_ng_template_1_0_Template(rf, ctx) { if (rf & 1) {
|
261
|
-
i0.ɵɵtemplate(0, PickList_ng_container_23_ng_template_1_0_ng_template_0_Template, 0, 0, "ng-template");
|
262
|
-
} }
|
263
|
-
function PickList_ng_container_23_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
264
|
-
i0.ɵɵtemplate(0, PickList_ng_container_23_ng_template_1_0_Template, 1, 0, null, 15);
|
265
|
-
} if (rf & 2) {
|
266
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
267
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.targetHeaderTemplate);
|
268
|
-
} }
|
269
|
-
function PickList_ng_container_23_Template(rf, ctx) { if (rf & 1) {
|
270
|
-
i0.ɵɵelementContainerStart(0);
|
271
|
-
i0.ɵɵtemplate(1, PickList_ng_container_23_ng_template_1_Template, 1, 1, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
|
272
|
-
i0.ɵɵelementContainerEnd();
|
273
|
-
} }
|
274
|
-
function PickList_ng_container_24_ng_template_1_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
275
|
-
i0.ɵɵelementContainer(0);
|
276
|
-
} }
|
277
|
-
function PickList_ng_container_24_ng_template_1_Template(rf, ctx) { if (rf & 1) {
|
278
|
-
i0.ɵɵtemplate(0, PickList_ng_container_24_ng_template_1_ng_container_0_Template, 1, 0, "ng-container", 11);
|
279
|
-
} if (rf & 2) {
|
280
|
-
const item_r8 = ctx.$implicit;
|
281
|
-
const index_r9 = ctx.index;
|
282
|
-
const selected_r10 = ctx.selected;
|
283
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
284
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.itemTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c23, item_r8, index_r9, selected_r10));
|
285
|
-
} }
|
286
|
-
function PickList_ng_container_24_Template(rf, ctx) { if (rf & 1) {
|
287
|
-
i0.ɵɵelementContainerStart(0);
|
288
|
-
i0.ɵɵtemplate(1, PickList_ng_container_24_ng_template_1_Template, 1, 6, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
289
|
-
i0.ɵɵelementContainerEnd();
|
290
|
-
} }
|
291
|
-
function PickList_div_25_AngleUpIcon_2_Template(rf, ctx) { if (rf & 1) {
|
292
|
-
i0.ɵɵelement(0, "AngleUpIcon");
|
293
|
-
} if (rf & 2) {
|
294
|
-
i0.ɵɵattribute("data-pc-section", "moveupicon");
|
295
|
-
} }
|
296
|
-
function PickList_div_25_3_ng_template_0_Template(rf, ctx) { }
|
297
|
-
function PickList_div_25_3_Template(rf, ctx) { if (rf & 1) {
|
298
|
-
i0.ɵɵtemplate(0, PickList_div_25_3_ng_template_0_Template, 0, 0, "ng-template");
|
299
|
-
} }
|
300
|
-
function PickList_div_25_AngleDoubleUpIcon_5_Template(rf, ctx) { if (rf & 1) {
|
301
|
-
i0.ɵɵelement(0, "AngleDoubleUpIcon");
|
302
|
-
} if (rf & 2) {
|
303
|
-
i0.ɵɵattribute("data-pc-section", "movetopicon");
|
304
|
-
} }
|
305
|
-
function PickList_div_25_6_ng_template_0_Template(rf, ctx) { }
|
306
|
-
function PickList_div_25_6_Template(rf, ctx) { if (rf & 1) {
|
307
|
-
i0.ɵɵtemplate(0, PickList_div_25_6_ng_template_0_Template, 0, 0, "ng-template");
|
308
|
-
} }
|
309
|
-
function PickList_div_25_AngleDownIcon_8_Template(rf, ctx) { if (rf & 1) {
|
310
|
-
i0.ɵɵelement(0, "AngleDownIcon");
|
311
|
-
} if (rf & 2) {
|
312
|
-
i0.ɵɵattribute("data-pc-section", "movedownicon");
|
313
|
-
} }
|
314
|
-
function PickList_div_25_9_ng_template_0_Template(rf, ctx) { }
|
315
|
-
function PickList_div_25_9_Template(rf, ctx) { if (rf & 1) {
|
316
|
-
i0.ɵɵtemplate(0, PickList_div_25_9_ng_template_0_Template, 0, 0, "ng-template");
|
317
|
-
} }
|
318
|
-
function PickList_div_25_AngleDoubleDownIcon_11_Template(rf, ctx) { if (rf & 1) {
|
319
|
-
i0.ɵɵelement(0, "AngleDoubleDownIcon");
|
320
|
-
} if (rf & 2) {
|
321
|
-
i0.ɵɵattribute("data-pc-section", "movebottomicon");
|
322
|
-
} }
|
323
|
-
function PickList_div_25_12_ng_template_0_Template(rf, ctx) { }
|
324
|
-
function PickList_div_25_12_Template(rf, ctx) { if (rf & 1) {
|
325
|
-
i0.ɵɵtemplate(0, PickList_div_25_12_ng_template_0_Template, 0, 0, "ng-template");
|
326
|
-
} }
|
327
|
-
function PickList_div_25_Template(rf, ctx) { if (rf & 1) {
|
328
|
-
const _r11 = i0.ɵɵgetCurrentView();
|
329
|
-
i0.ɵɵelementStart(0, "div", 16)(1, "button", 10);
|
330
|
-
i0.ɵɵlistener("click", function PickList_div_25_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(22); return i0.ɵɵresetView(ctx_r2.moveUp(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
331
|
-
i0.ɵɵtemplate(2, PickList_div_25_AngleUpIcon_2_Template, 1, 1, "AngleUpIcon", 8)(3, PickList_div_25_3_Template, 1, 0, null, 15);
|
332
|
-
i0.ɵɵelementEnd();
|
333
|
-
i0.ɵɵelementStart(4, "button", 10);
|
334
|
-
i0.ɵɵlistener("click", function PickList_div_25_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(22); return i0.ɵɵresetView(ctx_r2.moveTop(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
335
|
-
i0.ɵɵtemplate(5, PickList_div_25_AngleDoubleUpIcon_5_Template, 1, 1, "AngleDoubleUpIcon", 8)(6, PickList_div_25_6_Template, 1, 0, null, 15);
|
336
|
-
i0.ɵɵelementEnd();
|
337
|
-
i0.ɵɵelementStart(7, "button", 10);
|
338
|
-
i0.ɵɵlistener("click", function PickList_div_25_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(22); return i0.ɵɵresetView(ctx_r2.moveDown(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
339
|
-
i0.ɵɵtemplate(8, PickList_div_25_AngleDownIcon_8_Template, 1, 1, "AngleDownIcon", 8)(9, PickList_div_25_9_Template, 1, 0, null, 15);
|
340
|
-
i0.ɵɵelementEnd();
|
341
|
-
i0.ɵɵelementStart(10, "button", 10);
|
342
|
-
i0.ɵɵlistener("click", function PickList_div_25_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(); const targetlist_r12 = i0.ɵɵreference(22); return i0.ɵɵresetView(ctx_r2.moveBottom(targetlist_r12, ctx_r2.target, ctx_r2.selectedItemsTarget, ctx_r2.onTargetReorder, ctx_r2.TARGET_LIST)); });
|
343
|
-
i0.ɵɵtemplate(11, PickList_div_25_AngleDoubleDownIcon_11_Template, 1, 1, "AngleDoubleDownIcon", 8)(12, PickList_div_25_12_Template, 1, 0, null, 15);
|
344
|
-
i0.ɵɵelementEnd()();
|
345
|
-
} if (rf & 2) {
|
346
|
-
const ctx_r2 = i0.ɵɵnextContext();
|
347
|
-
i0.ɵɵattribute("data-pc-section", "targetControls")("data-pc-group-section", "controls");
|
348
|
-
i0.ɵɵadvance();
|
349
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("moveup"));
|
350
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveUpAriaLabel)("data-pc-section", "targetMoveUpButton");
|
351
|
-
i0.ɵɵadvance();
|
352
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveUpIconTemplate);
|
353
|
-
i0.ɵɵadvance();
|
354
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveUpIconTemplate);
|
355
|
-
i0.ɵɵadvance();
|
356
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movetop"));
|
357
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveTopAriaLabel)("data-pc-section", "targetMoveTopButton");
|
358
|
-
i0.ɵɵadvance();
|
359
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveTopIconTemplate);
|
360
|
-
i0.ɵɵadvance();
|
361
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveTopIconTemplate);
|
362
|
-
i0.ɵɵadvance();
|
363
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movedown"));
|
364
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveDownAriaLabel)("data-pc-section", "targetMoveDownButton");
|
365
|
-
i0.ɵɵadvance();
|
366
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveDownIconTemplate);
|
367
|
-
i0.ɵɵadvance();
|
368
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveDownIconTemplate);
|
369
|
-
i0.ɵɵadvance();
|
370
|
-
i0.ɵɵproperty("disabled", ctx_r2.targetMoveDisabled())("buttonProps", ctx_r2.getButtonProps("movebottom"));
|
371
|
-
i0.ɵɵattribute("aria-label", ctx_r2.moveBottomAriaLabel)("data-pc-section", "targetMoveBottomButton");
|
372
|
-
i0.ɵɵadvance();
|
373
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.moveBottomIconTemplate);
|
374
|
-
i0.ɵɵadvance();
|
375
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.moveBottomIconTemplate);
|
376
|
-
} }
|
377
|
-
/**
|
378
|
-
* PickList is used to reorder items between different lists.
|
379
|
-
* @group Components
|
380
|
-
*/
|
381
|
-
export class PickList extends BaseComponent {
|
382
|
-
/**
|
383
|
-
* An array of objects for the source list.
|
384
|
-
* @group Props
|
385
|
-
*/
|
386
|
-
source;
|
387
|
-
/**
|
388
|
-
* An array of objects for the target list.
|
389
|
-
* @group Props
|
390
|
-
*/
|
391
|
-
target;
|
392
|
-
/**
|
393
|
-
* Text for the source list caption
|
394
|
-
* @group Props
|
395
|
-
*/
|
396
|
-
sourceHeader;
|
397
|
-
/**
|
398
|
-
* Index of the element in tabbing order.
|
399
|
-
* @group Props
|
400
|
-
*/
|
401
|
-
tabindex = 0;
|
402
|
-
/**
|
403
|
-
* Defines a string that labels the move to right button for accessibility.
|
404
|
-
* @group Props
|
405
|
-
*/
|
406
|
-
rightButtonAriaLabel;
|
407
|
-
/**
|
408
|
-
* Defines a string that labels the move to left button for accessibility.
|
409
|
-
* @group Props
|
410
|
-
*/
|
411
|
-
leftButtonAriaLabel;
|
412
|
-
/**
|
413
|
-
* Defines a string that labels the move to all right button for accessibility.
|
414
|
-
* @group Props
|
415
|
-
*/
|
416
|
-
allRightButtonAriaLabel;
|
417
|
-
/**
|
418
|
-
* Defines a string that labels the move to all left button for accessibility.
|
419
|
-
* @group Props
|
420
|
-
*/
|
421
|
-
allLeftButtonAriaLabel;
|
422
|
-
/**
|
423
|
-
* Defines a string that labels the move to up button for accessibility.
|
424
|
-
* @group Props
|
425
|
-
*/
|
426
|
-
upButtonAriaLabel;
|
427
|
-
/**
|
428
|
-
* Defines a string that labels the move to down button for accessibility.
|
429
|
-
* @group Props
|
430
|
-
*/
|
431
|
-
downButtonAriaLabel;
|
432
|
-
/**
|
433
|
-
* Defines a string that labels the move to top button for accessibility.
|
434
|
-
* @group Props
|
435
|
-
*/
|
436
|
-
topButtonAriaLabel;
|
437
|
-
/**
|
438
|
-
* Defines a string that labels the move to bottom button for accessibility.
|
439
|
-
* @group Props
|
440
|
-
*/
|
441
|
-
bottomButtonAriaLabel;
|
442
|
-
/**
|
443
|
-
* Text for the target list caption
|
444
|
-
* @group Props
|
445
|
-
*/
|
446
|
-
targetHeader;
|
447
|
-
/**
|
448
|
-
* When enabled orderlist adjusts its controls based on screen size.
|
449
|
-
* @group Props
|
450
|
-
*/
|
451
|
-
responsive;
|
452
|
-
/**
|
453
|
-
* When specified displays an input field to filter the items on keyup and decides which field to search (Accepts multiple fields with a comma).
|
454
|
-
* @group Props
|
455
|
-
*/
|
456
|
-
filterBy;
|
457
|
-
/**
|
458
|
-
* Locale to use in filtering. The default locale is the host environment's current locale.
|
459
|
-
* @group Props
|
460
|
-
*/
|
461
|
-
filterLocale;
|
462
|
-
/**
|
463
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy, default algorithm checks for object identity. Use sourceTrackBy or targetTrackBy in case different algorithms are needed per list.
|
464
|
-
* @group Props
|
465
|
-
*/
|
466
|
-
trackBy = (index, item) => item;
|
467
|
-
/**
|
468
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy in source list, default algorithm checks for object identity.
|
469
|
-
* @group Props
|
470
|
-
*/
|
471
|
-
sourceTrackBy;
|
472
|
-
/**
|
473
|
-
* Function to optimize the dom operations by delegating to ngForTrackBy in target list, default algorithm checks for object identity.
|
474
|
-
* @group Props
|
475
|
-
*/
|
476
|
-
targetTrackBy;
|
477
|
-
/**
|
478
|
-
* Whether to show filter input for source list when filterBy is enabled.
|
479
|
-
* @group Props
|
480
|
-
*/
|
481
|
-
showSourceFilter = true;
|
482
|
-
/**
|
483
|
-
* Whether to show filter input for target list when filterBy is enabled.
|
484
|
-
* @group Props
|
485
|
-
*/
|
486
|
-
showTargetFilter = true;
|
487
|
-
/**
|
488
|
-
* Defines how multiple items can be selected, when true metaKey needs to be pressed to select or unselect an item and when set to false selection of each item can be toggled individually. On touch enabled devices, metaKeySelection is turned off automatically.
|
489
|
-
* @group Props
|
490
|
-
*/
|
491
|
-
metaKeySelection = false;
|
492
|
-
/**
|
493
|
-
* Whether to enable dragdrop based reordering.
|
494
|
-
* @group Props
|
495
|
-
*/
|
496
|
-
dragdrop = false;
|
497
|
-
/**
|
498
|
-
* Inline style of the component.
|
499
|
-
* @group Props
|
500
|
-
*/
|
501
|
-
style;
|
502
|
-
/**
|
503
|
-
* Style class of the component.
|
504
|
-
* @group Props
|
505
|
-
*/
|
506
|
-
styleClass;
|
507
|
-
/**
|
508
|
-
* Inline style of the source list element.
|
509
|
-
* @group Props
|
510
|
-
*/
|
511
|
-
sourceStyle;
|
512
|
-
/**
|
513
|
-
* Inline style of the target list element.
|
514
|
-
* @group Props
|
515
|
-
*/
|
516
|
-
targetStyle;
|
517
|
-
/**
|
518
|
-
* Whether to show buttons of source list.
|
519
|
-
* @group Props
|
520
|
-
*/
|
521
|
-
showSourceControls = true;
|
522
|
-
/**
|
523
|
-
* Whether to show buttons of target list.
|
524
|
-
* @group Props
|
525
|
-
*/
|
526
|
-
showTargetControls = true;
|
527
|
-
/**
|
528
|
-
* Placeholder text on source filter input.
|
529
|
-
* @group Props
|
530
|
-
*/
|
531
|
-
sourceFilterPlaceholder;
|
532
|
-
/**
|
533
|
-
* Placeholder text on target filter input.
|
534
|
-
* @group Props
|
535
|
-
*/
|
536
|
-
targetFilterPlaceholder;
|
537
|
-
/**
|
538
|
-
* When present, it specifies that the component should be disabled.
|
539
|
-
* @group Props
|
540
|
-
*/
|
541
|
-
disabled = false;
|
542
|
-
/**
|
543
|
-
* Defines a string that labels the filter input of source list.
|
544
|
-
* @group Props
|
545
|
-
*/
|
546
|
-
ariaSourceFilterLabel;
|
547
|
-
/**
|
548
|
-
* Defines a string that labels the filter input of target list.
|
549
|
-
* @group Props
|
550
|
-
*/
|
551
|
-
ariaTargetFilterLabel;
|
552
|
-
/**
|
553
|
-
* Defines how the items are filtered.
|
554
|
-
* @group Props
|
555
|
-
*/
|
556
|
-
filterMatchMode = 'contains';
|
557
|
-
/**
|
558
|
-
* Whether to displays rows with alternating colors.
|
559
|
-
* @group Props
|
560
|
-
*/
|
561
|
-
stripedRows;
|
562
|
-
/**
|
563
|
-
* Keeps selection on the transfer list.
|
564
|
-
* @group Props
|
565
|
-
*/
|
566
|
-
keepSelection = false;
|
567
|
-
/**
|
568
|
-
* Height of the viewport, a scrollbar is defined if height of list exceeds this value.
|
569
|
-
* @group Props
|
570
|
-
*/
|
571
|
-
scrollHeight = '14rem';
|
572
|
-
/**
|
573
|
-
* Whether to focus on the first visible or selected element.
|
574
|
-
* @group Props
|
575
|
-
*/
|
576
|
-
autoOptionFocus = true;
|
577
|
-
/**
|
578
|
-
* Used to pass all properties of the ButtonProps to the Button component.
|
579
|
-
* @group Props
|
580
|
-
*/
|
581
|
-
buttonProps = { severity: 'secondary' };
|
582
|
-
/**
|
583
|
-
* Used to pass all properties of the ButtonProps to the move up button inside the component.
|
584
|
-
* @group Props
|
585
|
-
*/
|
586
|
-
moveUpButtonProps;
|
587
|
-
/**
|
588
|
-
* Used to pass all properties of the ButtonProps to the move top button inside the component.
|
589
|
-
* @group Props
|
590
|
-
*/
|
591
|
-
moveTopButtonProps;
|
592
|
-
/**
|
593
|
-
* Used to pass all properties of the ButtonProps to the move down button inside the component.
|
594
|
-
* @group Props
|
595
|
-
*/
|
596
|
-
moveDownButtonProps;
|
597
|
-
/**
|
598
|
-
* Used to pass all properties of the ButtonProps to the move bottom button inside the component.
|
599
|
-
* @group Props
|
600
|
-
*/
|
601
|
-
moveBottomButtonProps;
|
602
|
-
/**
|
603
|
-
* Used to pass all properties of the ButtonProps to the move to target button inside the component.
|
604
|
-
* @group Props
|
605
|
-
*/
|
606
|
-
moveToTargetProps;
|
607
|
-
/**
|
608
|
-
* Used to pass all properties of the ButtonProps to the move all to target button inside the component.
|
609
|
-
* @group Props
|
610
|
-
*/
|
611
|
-
moveAllToTargetProps;
|
612
|
-
/**
|
613
|
-
* Used to pass all properties of the ButtonProps to the move to source button inside the component.
|
614
|
-
* @group Props
|
615
|
-
*/
|
616
|
-
moveToSourceProps;
|
617
|
-
/**
|
618
|
-
* Used to pass all properties of the ButtonProps to the move all to source button inside the component.
|
619
|
-
* @group Props
|
620
|
-
*/
|
621
|
-
moveAllToSourceProps;
|
622
|
-
/**
|
623
|
-
* Indicates the width of the screen at which the component should change its behavior.
|
624
|
-
* @group Props
|
625
|
-
*/
|
626
|
-
get breakpoint() {
|
627
|
-
return this._breakpoint;
|
628
|
-
}
|
629
|
-
set breakpoint(value) {
|
630
|
-
if (value !== this._breakpoint) {
|
631
|
-
this._breakpoint = value;
|
632
|
-
if (isPlatformBrowser(this.platformId)) {
|
633
|
-
this.destroyMedia();
|
634
|
-
this.initMedia();
|
635
|
-
}
|
636
|
-
}
|
637
|
-
}
|
638
|
-
/**
|
639
|
-
* Callback to invoke when items are moved from target to source.
|
640
|
-
* @param {PickListMoveToSourceEvent} event - Custom move to source event.
|
641
|
-
* @group Emits
|
642
|
-
*/
|
643
|
-
onMoveToSource = new EventEmitter();
|
644
|
-
/**
|
645
|
-
* Callback to invoke when all items are moved from target to source.
|
646
|
-
* @param {PickListMoveAllToSourceEvent} event - Custom move all to source event.
|
647
|
-
* @group Emits
|
648
|
-
*/
|
649
|
-
onMoveAllToSource = new EventEmitter();
|
650
|
-
/**
|
651
|
-
* Callback to invoke when all items are moved from source to target.
|
652
|
-
* @param {PickListMoveAllToTargetEvent} event - Custom move all to target event.
|
653
|
-
* @group Emits
|
654
|
-
*/
|
655
|
-
onMoveAllToTarget = new EventEmitter();
|
656
|
-
/**
|
657
|
-
* Callback to invoke when items are moved from source to target.
|
658
|
-
* @param {PickListMoveToTargetEvent} event - Custom move to target event.
|
659
|
-
* @group Emits
|
660
|
-
*/
|
661
|
-
onMoveToTarget = new EventEmitter();
|
662
|
-
/**
|
663
|
-
* Callback to invoke when items are reordered within source list.
|
664
|
-
* @param {PickListSourceReorderEvent} event - Custom source reorder event.
|
665
|
-
* @group Emits
|
666
|
-
*/
|
667
|
-
onSourceReorder = new EventEmitter();
|
668
|
-
/**
|
669
|
-
* Callback to invoke when items are reordered within target list.
|
670
|
-
* @param {PickListTargetReorderEvent} event - Custom target reorder event.
|
671
|
-
* @group Emits
|
672
|
-
*/
|
673
|
-
onTargetReorder = new EventEmitter();
|
674
|
-
/**
|
675
|
-
* Callback to invoke when items are selected within source list.
|
676
|
-
* @param {PickListSourceSelectEvent} event - Custom source select event.
|
677
|
-
* @group Emits
|
678
|
-
*/
|
679
|
-
onSourceSelect = new EventEmitter();
|
680
|
-
/**
|
681
|
-
* Callback to invoke when items are selected within target list.
|
682
|
-
* @param {PickListTargetSelectEvent} event - Custom target select event.
|
683
|
-
* @group Emits
|
684
|
-
*/
|
685
|
-
onTargetSelect = new EventEmitter();
|
686
|
-
/**
|
687
|
-
* Callback to invoke when the source list is filtered
|
688
|
-
* @param {PickListSourceFilterEvent} event - Custom source filter event.
|
689
|
-
* @group Emits
|
690
|
-
*/
|
691
|
-
onSourceFilter = new EventEmitter();
|
692
|
-
/**
|
693
|
-
* Callback to invoke when the target list is filtered
|
694
|
-
* @param {PickListTargetFilterEvent} event - Custom target filter event.
|
695
|
-
* @group Emits
|
696
|
-
*/
|
697
|
-
onTargetFilter = new EventEmitter();
|
698
|
-
/**
|
699
|
-
* Callback to invoke when the list is focused
|
700
|
-
* @param {Event} event - Browser event.
|
701
|
-
* @group Emits
|
702
|
-
*/
|
703
|
-
onFocus = new EventEmitter();
|
704
|
-
/**
|
705
|
-
* Callback to invoke when the list is blurred
|
706
|
-
* @param {Event} event - Browser event.
|
707
|
-
* @group Emits
|
708
|
-
*/
|
709
|
-
onBlur = new EventEmitter();
|
710
|
-
listViewSourceChild;
|
711
|
-
listViewTargetChild;
|
712
|
-
sourceFilterViewChild;
|
713
|
-
targetFilterViewChild;
|
714
|
-
getButtonProps(direction) {
|
715
|
-
switch (direction) {
|
716
|
-
case 'moveup':
|
717
|
-
return { ...this.buttonProps, ...this.moveUpButtonProps };
|
718
|
-
case 'movetop':
|
719
|
-
return { ...this.buttonProps, ...this.moveTopButtonProps };
|
720
|
-
case 'movedown':
|
721
|
-
return { ...this.buttonProps, ...this.moveDownButtonProps };
|
722
|
-
case 'movebottom':
|
723
|
-
return { ...this.buttonProps, ...this.moveBottomButtonProps };
|
724
|
-
case 'movetotarget':
|
725
|
-
return { ...this.buttonProps, ...this.moveToTargetProps };
|
726
|
-
case 'movealltotarget':
|
727
|
-
return { ...this.buttonProps, ...this.moveAllToTargetProps };
|
728
|
-
case 'movetosource':
|
729
|
-
return { ...this.buttonProps, ...this.moveToSourceProps };
|
730
|
-
case 'movealltosource':
|
731
|
-
return { ...this.buttonProps, ...this.moveAllToSourceProps };
|
732
|
-
default:
|
733
|
-
return this.buttonProps;
|
734
|
-
}
|
735
|
-
}
|
736
|
-
get moveUpAriaLabel() {
|
737
|
-
return this.upButtonAriaLabel ? this.upButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveUp : undefined;
|
738
|
-
}
|
739
|
-
get moveTopAriaLabel() {
|
740
|
-
return this.topButtonAriaLabel ? this.topButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveTop : undefined;
|
741
|
-
}
|
742
|
-
get moveDownAriaLabel() {
|
743
|
-
return this.downButtonAriaLabel ? this.downButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;
|
744
|
-
}
|
745
|
-
get moveBottomAriaLabel() {
|
746
|
-
return this.bottomButtonAriaLabel ? this.bottomButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveDown : undefined;
|
747
|
-
}
|
748
|
-
get moveToTargetAriaLabel() {
|
749
|
-
return this.rightButtonAriaLabel ? this.rightButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveToTarget : undefined;
|
750
|
-
}
|
751
|
-
get moveAllToTargetAriaLabel() {
|
752
|
-
return this.allRightButtonAriaLabel ? this.allRightButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveAllToTarget : undefined;
|
753
|
-
}
|
754
|
-
get moveToSourceAriaLabel() {
|
755
|
-
return this.leftButtonAriaLabel ? this.leftButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveToSource : undefined;
|
756
|
-
}
|
757
|
-
get moveAllToSourceAriaLabel() {
|
758
|
-
return this.allLeftButtonAriaLabel ? this.allLeftButtonAriaLabel : this.config.translation.aria ? this.config.translation.aria.moveAllToSource : undefined;
|
759
|
-
}
|
760
|
-
get idSource() {
|
761
|
-
return this.id + '_source';
|
762
|
-
}
|
763
|
-
get idTarget() {
|
764
|
-
return this.id + '_target';
|
765
|
-
}
|
766
|
-
get focusedOptionId() {
|
767
|
-
return this.focusedOptionIndex !== -1 ? this.focusedOptionIndex : null;
|
768
|
-
}
|
769
|
-
_breakpoint = '960px';
|
770
|
-
visibleOptionsSource;
|
771
|
-
visibleOptionsTarget;
|
772
|
-
selectedItemsSource = [];
|
773
|
-
selectedItemsTarget = [];
|
774
|
-
reorderedListElement;
|
775
|
-
movedUp;
|
776
|
-
movedDown;
|
777
|
-
itemTouched;
|
778
|
-
styleElement;
|
779
|
-
id = uuid('pn_id_');
|
780
|
-
filterValueSource;
|
781
|
-
filterValueTarget;
|
782
|
-
fromListType;
|
783
|
-
sourceFilterOptions;
|
784
|
-
targetFilterOptions;
|
785
|
-
SOURCE_LIST = -1;
|
786
|
-
TARGET_LIST = 1;
|
787
|
-
window;
|
788
|
-
media;
|
789
|
-
viewChanged;
|
790
|
-
focusedOptionIndex = -1;
|
791
|
-
focusedOption;
|
792
|
-
focused = {
|
793
|
-
sourceList: false,
|
794
|
-
targetList: false
|
795
|
-
};
|
796
|
-
_componentStyle = inject(PickListStyle);
|
797
|
-
mediaChangeListener;
|
798
|
-
filterService = inject(FilterService);
|
799
|
-
ngOnInit() {
|
800
|
-
super.ngOnInit();
|
801
|
-
if (this.responsive) {
|
802
|
-
this.createStyle();
|
803
|
-
this.initMedia();
|
804
|
-
}
|
805
|
-
if (this.filterBy) {
|
806
|
-
this.sourceFilterOptions = {
|
807
|
-
filter: (value) => this.filterSource(value),
|
808
|
-
reset: () => this.resetSourceFilter()
|
809
|
-
};
|
810
|
-
this.targetFilterOptions = {
|
811
|
-
filter: (value) => this.filterTarget(value),
|
812
|
-
reset: () => this.resetTargetFilter()
|
813
|
-
};
|
814
|
-
}
|
815
|
-
}
|
816
|
-
/**
|
817
|
-
* Custom item template.
|
818
|
-
* @group Templates
|
819
|
-
*/
|
820
|
-
itemTemplate;
|
821
|
-
/**
|
822
|
-
* Custom source header template.
|
823
|
-
* @group Templates
|
824
|
-
*/
|
825
|
-
sourceHeaderTemplate;
|
826
|
-
/**
|
827
|
-
* Custom target header template.
|
828
|
-
* @group Templates
|
829
|
-
*/
|
830
|
-
targetHeaderTemplate;
|
831
|
-
/**
|
832
|
-
* Custom source filter template.
|
833
|
-
* @group Templates
|
834
|
-
*/
|
835
|
-
sourceFilterTemplate;
|
836
|
-
/**
|
837
|
-
* Custom target filter template.
|
838
|
-
* @group Templates
|
839
|
-
*/
|
840
|
-
targetFilterTemplate;
|
841
|
-
/**
|
842
|
-
* Custom empty message when source is empty template.
|
843
|
-
* @group Templates
|
844
|
-
*/
|
845
|
-
emptyMessageSourceTemplate;
|
846
|
-
/**
|
847
|
-
* Custom empty filter message when source is empty template.
|
848
|
-
* @group Templates
|
849
|
-
*/
|
850
|
-
emptyFilterMessageSourceTemplate;
|
851
|
-
/**
|
852
|
-
* Custom empty message when target is empty template.
|
853
|
-
* @group Templates
|
854
|
-
*/
|
855
|
-
emptyMessageTargetTemplate;
|
856
|
-
/**
|
857
|
-
* Custom empty filter message when target is empty template.
|
858
|
-
* @group Templates
|
859
|
-
*/
|
860
|
-
emptyFilterMessageTargetTemplate;
|
861
|
-
/**
|
862
|
-
* Custom move up icon template.
|
863
|
-
* @group Templates
|
864
|
-
*/
|
865
|
-
moveUpIconTemplate;
|
866
|
-
/**
|
867
|
-
* Custom move top icon template.
|
868
|
-
* @group Templates
|
869
|
-
*/
|
870
|
-
moveTopIconTemplate;
|
871
|
-
/**
|
872
|
-
* Custom move down icon template.
|
873
|
-
* @group Templates
|
874
|
-
*/
|
875
|
-
moveDownIconTemplate;
|
876
|
-
/**
|
877
|
-
* Custom move bottom icon template.
|
878
|
-
* @group Templates
|
879
|
-
*/
|
880
|
-
moveBottomIconTemplate;
|
881
|
-
/**
|
882
|
-
* Custom move to target icon template.
|
883
|
-
* @group Templates
|
884
|
-
*/
|
885
|
-
moveToTargetIconTemplate;
|
886
|
-
/**
|
887
|
-
* Custom move all to target icon template.
|
888
|
-
* @group Templates
|
889
|
-
*/
|
890
|
-
moveAllToTargetIconTemplate;
|
891
|
-
/**
|
892
|
-
* Custom move to source icon template.
|
893
|
-
* @group Templates
|
894
|
-
*/
|
895
|
-
moveToSourceIconTemplate;
|
896
|
-
/**
|
897
|
-
* Custom move all to source icon template.
|
898
|
-
* @group Templates
|
899
|
-
*/
|
900
|
-
moveAllToSourceIconTemplate;
|
901
|
-
/**
|
902
|
-
* Custom target filter icon template.
|
903
|
-
* @group Templates
|
904
|
-
*/
|
905
|
-
targetFilterIconTemplate;
|
906
|
-
/**
|
907
|
-
* Custom source filter icon template.
|
908
|
-
* @group Templates
|
909
|
-
*/
|
910
|
-
sourceFilterIconTemplate;
|
911
|
-
ngAfterContentInit() {
|
912
|
-
this.templates.forEach((item) => {
|
913
|
-
switch (item.getType()) {
|
914
|
-
case 'item':
|
915
|
-
this.itemTemplate = item.template;
|
916
|
-
break;
|
917
|
-
case 'option':
|
918
|
-
this.itemTemplate = item.template;
|
919
|
-
break;
|
920
|
-
case 'sourceHeader':
|
921
|
-
this.sourceHeaderTemplate = item.template;
|
922
|
-
break;
|
923
|
-
case 'targetHeader':
|
924
|
-
this.targetHeaderTemplate = item.template;
|
925
|
-
break;
|
926
|
-
case 'sourceFilter':
|
927
|
-
this.sourceFilterTemplate = item.template;
|
928
|
-
break;
|
929
|
-
case 'targetFilter':
|
930
|
-
this.targetFilterTemplate = item.template;
|
931
|
-
break;
|
932
|
-
case 'emptymessagesource':
|
933
|
-
this.emptyMessageSourceTemplate = item.template;
|
934
|
-
break;
|
935
|
-
case 'emptyfiltermessagesource':
|
936
|
-
this.emptyFilterMessageSourceTemplate = item.template;
|
937
|
-
break;
|
938
|
-
case 'emptymessagetarget':
|
939
|
-
this.emptyMessageTargetTemplate = item.template;
|
940
|
-
break;
|
941
|
-
case 'emptyfiltermessagetarget':
|
942
|
-
this.emptyFilterMessageTargetTemplate = item.template;
|
943
|
-
break;
|
944
|
-
case 'moveupicon':
|
945
|
-
this.moveUpIconTemplate = item.template;
|
946
|
-
break;
|
947
|
-
case 'movetopicon':
|
948
|
-
this.moveTopIconTemplate = item.template;
|
949
|
-
break;
|
950
|
-
case 'movedownicon':
|
951
|
-
this.moveDownIconTemplate = item.template;
|
952
|
-
break;
|
953
|
-
case 'movebottomicon':
|
954
|
-
this.moveBottomIconTemplate = item.template;
|
955
|
-
break;
|
956
|
-
case 'movetotargeticon':
|
957
|
-
this.moveToTargetIconTemplate = item.template;
|
958
|
-
break;
|
959
|
-
case 'movealltotargeticon':
|
960
|
-
this.moveAllToTargetIconTemplate = item.template;
|
961
|
-
break;
|
962
|
-
case 'movetosourceicon':
|
963
|
-
this.moveToSourceIconTemplate = item.template;
|
964
|
-
break;
|
965
|
-
case 'movealltosourceicon':
|
966
|
-
this.moveAllToSourceIconTemplate = item.template;
|
967
|
-
break;
|
968
|
-
case 'targetfiltericon':
|
969
|
-
this.targetFilterIconTemplate = item.template;
|
970
|
-
break;
|
971
|
-
case 'sourcefiltericon':
|
972
|
-
this.sourceFilterIconTemplate = item.template;
|
973
|
-
break;
|
974
|
-
default:
|
975
|
-
this.itemTemplate = item.template;
|
976
|
-
break;
|
977
|
-
}
|
978
|
-
});
|
979
|
-
}
|
980
|
-
ngAfterViewChecked() {
|
981
|
-
if (this.movedUp || this.movedDown) {
|
982
|
-
let listItems = find(this.reorderedListElement, 'li.p-highlight');
|
983
|
-
let listItem;
|
984
|
-
if (this.movedUp)
|
985
|
-
listItem = listItems[0];
|
986
|
-
else
|
987
|
-
listItem = listItems[listItems.length - 1];
|
988
|
-
scrollInView(this.reorderedListElement, listItem);
|
989
|
-
this.movedUp = false;
|
990
|
-
this.movedDown = false;
|
991
|
-
this.reorderedListElement = null;
|
992
|
-
}
|
993
|
-
}
|
994
|
-
onItemClick(event, item, selectedItems, listType, callback, itemId) {
|
995
|
-
if (this.disabled) {
|
996
|
-
return;
|
997
|
-
}
|
998
|
-
let index = this.findIndexInList(item, selectedItems);
|
999
|
-
if (itemId)
|
1000
|
-
this.focusedOptionIndex = itemId;
|
1001
|
-
let selected = index != -1;
|
1002
|
-
let metaSelection = this.itemTouched ? false : this.metaKeySelection;
|
1003
|
-
if (metaSelection) {
|
1004
|
-
let metaKey = event.metaKey || event.ctrlKey || event.shiftKey;
|
1005
|
-
if (selected && metaKey) {
|
1006
|
-
selectedItems = selectedItems.filter((_, i) => i !== index);
|
1007
|
-
}
|
1008
|
-
else {
|
1009
|
-
if (!metaKey) {
|
1010
|
-
selectedItems = [];
|
1011
|
-
}
|
1012
|
-
selectedItems.push(item);
|
1013
|
-
}
|
1014
|
-
}
|
1015
|
-
else {
|
1016
|
-
if (selected) {
|
1017
|
-
selectedItems = selectedItems.filter((_, i) => i !== index); // Creating a new array without the selected item
|
1018
|
-
}
|
1019
|
-
else {
|
1020
|
-
selectedItems.push(item);
|
1021
|
-
}
|
1022
|
-
}
|
1023
|
-
this.setSelectionList(listType, selectedItems);
|
1024
|
-
callback.emit({ originalEvent: event, items: selectedItems });
|
1025
|
-
this.itemTouched = false;
|
1026
|
-
}
|
1027
|
-
onOptionMouseDown(index, listType) {
|
1028
|
-
this.focused[listType === this.SOURCE_LIST ? 'sourceList' : 'targetList'] = true;
|
1029
|
-
this.focusedOptionIndex = index;
|
1030
|
-
}
|
1031
|
-
onSourceItemDblClick() {
|
1032
|
-
if (this.disabled) {
|
1033
|
-
return;
|
1034
|
-
}
|
1035
|
-
this.moveRight();
|
1036
|
-
this.viewChildMarkForCheck();
|
1037
|
-
}
|
1038
|
-
onTargetItemDblClick() {
|
1039
|
-
if (this.disabled) {
|
1040
|
-
return;
|
1041
|
-
}
|
1042
|
-
this.moveLeft();
|
1043
|
-
this.viewChildMarkForCheck();
|
1044
|
-
}
|
1045
|
-
onFilter(event, listType) {
|
1046
|
-
let query = event.target.value;
|
1047
|
-
if (listType === this.SOURCE_LIST)
|
1048
|
-
this.filterSource(query);
|
1049
|
-
else if (listType === this.TARGET_LIST)
|
1050
|
-
this.filterTarget(query);
|
1051
|
-
}
|
1052
|
-
filterSource(value = '') {
|
1053
|
-
this.filterValueSource = value.trim().toLocaleLowerCase(this.filterLocale);
|
1054
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1055
|
-
}
|
1056
|
-
filterTarget(value = '') {
|
1057
|
-
this.filterValueTarget = value.trim().toLocaleLowerCase(this.filterLocale);
|
1058
|
-
this.filter(this.target, this.TARGET_LIST);
|
1059
|
-
}
|
1060
|
-
filter(data, listType) {
|
1061
|
-
let searchFields = this.filterBy.split(',');
|
1062
|
-
if (listType === this.SOURCE_LIST) {
|
1063
|
-
this.visibleOptionsSource = this.filterService.filter(data, searchFields, this.filterValueSource, this.filterMatchMode, this.filterLocale);
|
1064
|
-
this.onSourceFilter.emit({ query: this.filterValueSource, value: this.visibleOptionsSource });
|
1065
|
-
}
|
1066
|
-
else if (listType === this.TARGET_LIST) {
|
1067
|
-
this.visibleOptionsTarget = this.filterService.filter(data, searchFields, this.filterValueTarget, this.filterMatchMode, this.filterLocale);
|
1068
|
-
this.onTargetFilter.emit({ query: this.filterValueTarget, value: this.visibleOptionsTarget });
|
1069
|
-
}
|
1070
|
-
}
|
1071
|
-
isItemVisible(item, listType) {
|
1072
|
-
if (listType == this.SOURCE_LIST)
|
1073
|
-
return this.isVisibleInList(this.visibleOptionsSource, item, this.filterValueSource);
|
1074
|
-
else
|
1075
|
-
return this.isVisibleInList(this.visibleOptionsTarget, item, this.filterValueTarget);
|
1076
|
-
}
|
1077
|
-
isEmpty(listType) {
|
1078
|
-
if (listType == this.SOURCE_LIST)
|
1079
|
-
return this.filterValueSource ? !this.visibleOptionsSource || this.visibleOptionsSource.length === 0 : !this.source || this.source.length === 0;
|
1080
|
-
else
|
1081
|
-
return this.filterValueTarget ? !this.visibleOptionsTarget || this.visibleOptionsTarget.length === 0 : !this.target || this.target.length === 0;
|
1082
|
-
}
|
1083
|
-
isVisibleInList(data, item, filterValue) {
|
1084
|
-
if (filterValue && filterValue.trim().length) {
|
1085
|
-
for (let i = 0; i < data.length; i++) {
|
1086
|
-
if (item == data[i]) {
|
1087
|
-
return true;
|
1088
|
-
}
|
1089
|
-
}
|
1090
|
-
}
|
1091
|
-
else {
|
1092
|
-
return true;
|
1093
|
-
}
|
1094
|
-
}
|
1095
|
-
onItemTouchEnd() {
|
1096
|
-
if (this.disabled) {
|
1097
|
-
return;
|
1098
|
-
}
|
1099
|
-
this.itemTouched = true;
|
1100
|
-
}
|
1101
|
-
sortByIndexInList(items, list) {
|
1102
|
-
return items.sort((item1, item2) => findIndexInList(item1, list) - findIndexInList(item2, list));
|
1103
|
-
}
|
1104
|
-
viewChildMarkForCheck() {
|
1105
|
-
this.listViewSourceChild.cd.markForCheck();
|
1106
|
-
this.listViewTargetChild.cd.markForCheck();
|
1107
|
-
}
|
1108
|
-
moveUp(listElement, list, selectedItems, callback, listType) {
|
1109
|
-
if (selectedItems && selectedItems.length) {
|
1110
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1111
|
-
for (let i = 0; i < selectedItems.length; i++) {
|
1112
|
-
let selectedItem = selectedItems[i];
|
1113
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1114
|
-
if (selectedItemIndex != 0) {
|
1115
|
-
let movedItem = list[selectedItemIndex];
|
1116
|
-
let temp = list[selectedItemIndex - 1];
|
1117
|
-
list[selectedItemIndex - 1] = movedItem;
|
1118
|
-
list[selectedItemIndex] = temp;
|
1119
|
-
}
|
1120
|
-
else {
|
1121
|
-
break;
|
1122
|
-
}
|
1123
|
-
}
|
1124
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1125
|
-
this.filter(list, listType);
|
1126
|
-
this.movedUp = true;
|
1127
|
-
this.reorderedListElement = listElement;
|
1128
|
-
callback.emit({ items: selectedItems });
|
1129
|
-
this.viewChildMarkForCheck();
|
1130
|
-
}
|
1131
|
-
}
|
1132
|
-
moveTop(listElement, list, selectedItems, callback, listType) {
|
1133
|
-
if (selectedItems && selectedItems.length) {
|
1134
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1135
|
-
for (let i = 0; i < selectedItems.length; i++) {
|
1136
|
-
let selectedItem = selectedItems[i];
|
1137
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1138
|
-
if (selectedItemIndex != 0) {
|
1139
|
-
let movedItem = list.splice(selectedItemIndex, 1)[0];
|
1140
|
-
list.unshift(movedItem);
|
1141
|
-
}
|
1142
|
-
else {
|
1143
|
-
break;
|
1144
|
-
}
|
1145
|
-
}
|
1146
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1147
|
-
this.filter(list, listType);
|
1148
|
-
listElement.scrollTop = 0;
|
1149
|
-
callback.emit({ items: selectedItems });
|
1150
|
-
this.viewChildMarkForCheck();
|
1151
|
-
}
|
1152
|
-
}
|
1153
|
-
moveDown(listElement, list, selectedItems, callback, listType) {
|
1154
|
-
if (selectedItems && selectedItems.length) {
|
1155
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1156
|
-
for (let i = selectedItems.length - 1; i >= 0; i--) {
|
1157
|
-
let selectedItem = selectedItems[i];
|
1158
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1159
|
-
if (selectedItemIndex != list.length - 1) {
|
1160
|
-
let movedItem = list[selectedItemIndex];
|
1161
|
-
let temp = list[selectedItemIndex + 1];
|
1162
|
-
list[selectedItemIndex + 1] = movedItem;
|
1163
|
-
list[selectedItemIndex] = temp;
|
1164
|
-
}
|
1165
|
-
else {
|
1166
|
-
break;
|
1167
|
-
}
|
1168
|
-
}
|
1169
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1170
|
-
this.filter(list, listType);
|
1171
|
-
this.movedDown = true;
|
1172
|
-
this.reorderedListElement = listElement;
|
1173
|
-
callback.emit({ items: selectedItems });
|
1174
|
-
this.viewChildMarkForCheck();
|
1175
|
-
}
|
1176
|
-
}
|
1177
|
-
moveBottom(listElement, list, selectedItems, callback, listType) {
|
1178
|
-
if (selectedItems && selectedItems.length) {
|
1179
|
-
selectedItems = this.sortByIndexInList(selectedItems, list);
|
1180
|
-
for (let i = selectedItems.length - 1; i >= 0; i--) {
|
1181
|
-
let selectedItem = selectedItems[i];
|
1182
|
-
let selectedItemIndex = findIndexInList(selectedItem, list);
|
1183
|
-
if (selectedItemIndex != list.length - 1) {
|
1184
|
-
let movedItem = list.splice(selectedItemIndex, 1)[0];
|
1185
|
-
list.push(movedItem);
|
1186
|
-
}
|
1187
|
-
else {
|
1188
|
-
break;
|
1189
|
-
}
|
1190
|
-
}
|
1191
|
-
if (this.dragdrop && ((this.filterValueSource && listType === this.SOURCE_LIST) || (this.filterValueTarget && listType === this.TARGET_LIST)))
|
1192
|
-
this.filter(list, listType);
|
1193
|
-
listElement.scrollTop = listElement.scrollHeight;
|
1194
|
-
callback.emit({ items: selectedItems });
|
1195
|
-
this.viewChildMarkForCheck();
|
1196
|
-
}
|
1197
|
-
}
|
1198
|
-
moveRight() {
|
1199
|
-
if (this.selectedItemsSource && this.selectedItemsSource.length) {
|
1200
|
-
for (let i = 0; i < this.selectedItemsSource.length; i++) {
|
1201
|
-
let selectedItem = this.selectedItemsSource[i];
|
1202
|
-
if (findIndexInList(selectedItem, this.target) == -1) {
|
1203
|
-
this.target?.push(this.source?.splice(findIndexInList(selectedItem, this.source), 1)[0]);
|
1204
|
-
if (this.visibleOptionsSource?.includes(selectedItem)) {
|
1205
|
-
this.visibleOptionsSource.splice(findIndexInList(selectedItem, this.visibleOptionsSource), 1);
|
1206
|
-
}
|
1207
|
-
}
|
1208
|
-
}
|
1209
|
-
this.onMoveToTarget.emit({
|
1210
|
-
items: this.selectedItemsSource
|
1211
|
-
});
|
1212
|
-
if (this.keepSelection) {
|
1213
|
-
this.selectedItemsTarget = [...this.selectedItemsTarget, ...this.selectedItemsSource];
|
1214
|
-
}
|
1215
|
-
this.selectedItemsSource = [];
|
1216
|
-
if (this.filterValueTarget) {
|
1217
|
-
this.filter(this.target, this.TARGET_LIST);
|
1218
|
-
}
|
1219
|
-
this.viewChildMarkForCheck();
|
1220
|
-
}
|
1221
|
-
}
|
1222
|
-
moveAllRight() {
|
1223
|
-
if (this.source) {
|
1224
|
-
let movedItems = [];
|
1225
|
-
for (let i = 0; i < this.source.length; i++) {
|
1226
|
-
if (this.isItemVisible(this.source[i], this.SOURCE_LIST)) {
|
1227
|
-
let removedItem = this.source.splice(i, 1)[0];
|
1228
|
-
this.target?.push(removedItem);
|
1229
|
-
movedItems.push(removedItem);
|
1230
|
-
i--;
|
1231
|
-
}
|
1232
|
-
}
|
1233
|
-
this.onMoveAllToTarget.emit({
|
1234
|
-
items: movedItems
|
1235
|
-
});
|
1236
|
-
if (this.keepSelection) {
|
1237
|
-
this.selectedItemsTarget = [...this.selectedItemsTarget, ...this.selectedItemsSource];
|
1238
|
-
}
|
1239
|
-
this.selectedItemsSource = [];
|
1240
|
-
if (this.filterValueTarget) {
|
1241
|
-
this.filter(this.target, this.TARGET_LIST);
|
1242
|
-
}
|
1243
|
-
this.visibleOptionsSource = [];
|
1244
|
-
this.viewChildMarkForCheck();
|
1245
|
-
}
|
1246
|
-
}
|
1247
|
-
moveLeft() {
|
1248
|
-
if (this.selectedItemsTarget && this.selectedItemsTarget.length) {
|
1249
|
-
for (let i = 0; i < this.selectedItemsTarget.length; i++) {
|
1250
|
-
let selectedItem = this.selectedItemsTarget[i];
|
1251
|
-
if (findIndexInList(selectedItem, this.source) == -1) {
|
1252
|
-
this.source?.push(this.target?.splice(findIndexInList(selectedItem, this.target), 1)[0]);
|
1253
|
-
if (this.visibleOptionsTarget?.includes(selectedItem)) {
|
1254
|
-
this.visibleOptionsTarget.splice(findIndexInList(selectedItem, this.visibleOptionsTarget), 1)[0];
|
1255
|
-
}
|
1256
|
-
}
|
1257
|
-
}
|
1258
|
-
this.onMoveToSource.emit({
|
1259
|
-
items: this.selectedItemsTarget
|
1260
|
-
});
|
1261
|
-
if (this.keepSelection) {
|
1262
|
-
this.selectedItemsSource = [...this.selectedItemsSource, ...this.selectedItemsTarget];
|
1263
|
-
}
|
1264
|
-
this.selectedItemsTarget = [];
|
1265
|
-
if (this.filterValueSource) {
|
1266
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1267
|
-
}
|
1268
|
-
this.viewChildMarkForCheck();
|
1269
|
-
}
|
1270
|
-
}
|
1271
|
-
moveAllLeft() {
|
1272
|
-
if (this.target) {
|
1273
|
-
let movedItems = [];
|
1274
|
-
for (let i = 0; i < this.target.length; i++) {
|
1275
|
-
if (this.isItemVisible(this.target[i], this.TARGET_LIST)) {
|
1276
|
-
let removedItem = this.target.splice(i, 1)[0];
|
1277
|
-
this.source?.push(removedItem);
|
1278
|
-
movedItems.push(removedItem);
|
1279
|
-
i--;
|
1280
|
-
}
|
1281
|
-
}
|
1282
|
-
this.onMoveAllToSource.emit({
|
1283
|
-
items: movedItems
|
1284
|
-
});
|
1285
|
-
if (this.keepSelection) {
|
1286
|
-
this.selectedItemsSource = [...this.selectedItemsSource, ...this.selectedItemsTarget];
|
1287
|
-
}
|
1288
|
-
this.selectedItemsTarget = [];
|
1289
|
-
if (this.filterValueSource) {
|
1290
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1291
|
-
}
|
1292
|
-
this.visibleOptionsTarget = [];
|
1293
|
-
this.viewChildMarkForCheck();
|
1294
|
-
}
|
1295
|
-
}
|
1296
|
-
isSelected(item, selectedItems) {
|
1297
|
-
return this.findIndexInList(item, selectedItems) != -1;
|
1298
|
-
}
|
1299
|
-
findIndexInList(item, selectedItems) {
|
1300
|
-
return findIndexInList(item, selectedItems);
|
1301
|
-
}
|
1302
|
-
onDrop(event, listType) {
|
1303
|
-
let isTransfer = event.previousContainer !== event.container;
|
1304
|
-
let dropIndexes = this.getDropIndexes(event.previousIndex, event.currentIndex, listType, isTransfer, event.item.data);
|
1305
|
-
if (listType === this.SOURCE_LIST) {
|
1306
|
-
if (isTransfer) {
|
1307
|
-
transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1308
|
-
let selectedItemIndex = findIndexInList(event.item.data, this.selectedItemsTarget);
|
1309
|
-
if (selectedItemIndex != -1) {
|
1310
|
-
this.selectedItemsTarget.splice(selectedItemIndex, 1);
|
1311
|
-
if (this.keepSelection) {
|
1312
|
-
this.selectedItemsTarget.push(event.item.data);
|
1313
|
-
}
|
1314
|
-
}
|
1315
|
-
if (this.visibleOptionsTarget)
|
1316
|
-
this.visibleOptionsTarget.splice(event.previousIndex, 1);
|
1317
|
-
this.onMoveToSource.emit({ items: [event.item.data] });
|
1318
|
-
}
|
1319
|
-
else {
|
1320
|
-
moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1321
|
-
this.onSourceReorder.emit({ items: [event.item.data] });
|
1322
|
-
}
|
1323
|
-
if (this.filterValueSource) {
|
1324
|
-
this.filter(this.source, this.SOURCE_LIST);
|
1325
|
-
}
|
1326
|
-
}
|
1327
|
-
else {
|
1328
|
-
if (isTransfer) {
|
1329
|
-
transferArrayItem(event.previousContainer.data, event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1330
|
-
let selectedItemIndex = findIndexInList(event.item.data, this.selectedItemsSource);
|
1331
|
-
if (selectedItemIndex != -1) {
|
1332
|
-
this.selectedItemsSource.splice(selectedItemIndex, 1);
|
1333
|
-
if (this.keepSelection) {
|
1334
|
-
this.selectedItemsTarget.push(event.item.data);
|
1335
|
-
}
|
1336
|
-
}
|
1337
|
-
if (this.visibleOptionsSource)
|
1338
|
-
this.visibleOptionsSource.splice(event.previousIndex, 1);
|
1339
|
-
this.onMoveToTarget.emit({ items: [event.item.data] });
|
1340
|
-
}
|
1341
|
-
else {
|
1342
|
-
moveItemInArray(event.container.data, dropIndexes.previousIndex, dropIndexes.currentIndex);
|
1343
|
-
this.onTargetReorder.emit({ items: [event.item.data] });
|
1344
|
-
}
|
1345
|
-
if (this.filterValueTarget) {
|
1346
|
-
this.filter(this.target, this.TARGET_LIST);
|
1347
|
-
}
|
1348
|
-
}
|
1349
|
-
}
|
1350
|
-
onListFocus(event, listType) {
|
1351
|
-
this.onFocus.emit(event);
|
1352
|
-
}
|
1353
|
-
onListBlur(event, listType) {
|
1354
|
-
this.onBlur.emit(event);
|
1355
|
-
}
|
1356
|
-
getListElement(listType) {
|
1357
|
-
return listType === this.SOURCE_LIST ? this.listViewSourceChild?.el.nativeElement : this.listViewTargetChild?.el.nativeElement;
|
1358
|
-
}
|
1359
|
-
getListItems(listType) {
|
1360
|
-
let listElemet = this.getListElement(listType);
|
1361
|
-
return find(listElemet, 'li.p-picklist-item');
|
1362
|
-
}
|
1363
|
-
getLatestSelectedVisibleOptionIndex(visibleList, selectedItems) {
|
1364
|
-
const latestSelectedItem = [...selectedItems].reverse().find((item) => visibleList.includes(item));
|
1365
|
-
return latestSelectedItem !== undefined ? visibleList.indexOf(latestSelectedItem) : -1;
|
1366
|
-
}
|
1367
|
-
getVisibleList(listType) {
|
1368
|
-
if (listType === this.SOURCE_LIST) {
|
1369
|
-
return this.visibleOptionsSource && this.visibleOptionsSource.length > 0 ? this.visibleOptionsSource : this.source && this.source.length > 0 ? this.source : null;
|
1370
|
-
}
|
1371
|
-
return this.visibleOptionsTarget && this.visibleOptionsTarget.length > 0 ? this.visibleOptionsTarget : this.target && this.target.length > 0 ? this.target : null;
|
1372
|
-
}
|
1373
|
-
setSelectionList(listType, selectedItems) {
|
1374
|
-
if (listType === this.SOURCE_LIST) {
|
1375
|
-
this.selectedItemsSource = selectedItems;
|
1376
|
-
}
|
1377
|
-
else {
|
1378
|
-
this.selectedItemsTarget = selectedItems;
|
1379
|
-
}
|
1380
|
-
}
|
1381
|
-
findNextOptionIndex(index, listType) {
|
1382
|
-
const items = this.getListItems(listType);
|
1383
|
-
const matchedOptionIndex = [...items].findIndex((link) => link.id === index);
|
1384
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex + 1 : 0;
|
1385
|
-
}
|
1386
|
-
findPrevOptionIndex(index, listType) {
|
1387
|
-
const items = this.getListItems(listType);
|
1388
|
-
const matchedOptionIndex = [...items].findIndex((link) => link.id === index);
|
1389
|
-
return matchedOptionIndex > -1 ? matchedOptionIndex - 1 : 0;
|
1390
|
-
}
|
1391
|
-
onItemKeyDown(event, selectedItems, callback, listType) {
|
1392
|
-
switch (event.code) {
|
1393
|
-
case 'ArrowDown':
|
1394
|
-
this.onArrowDownKey(event, selectedItems, callback, listType);
|
1395
|
-
break;
|
1396
|
-
case 'ArrowUp':
|
1397
|
-
this.onArrowUpKey(event, selectedItems, callback, listType);
|
1398
|
-
break;
|
1399
|
-
case 'Home':
|
1400
|
-
this.onHomeKey(event, selectedItems, callback, listType);
|
1401
|
-
break;
|
1402
|
-
case 'End':
|
1403
|
-
this.onEndKey(event, selectedItems, callback, listType);
|
1404
|
-
break;
|
1405
|
-
case 'Enter':
|
1406
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1407
|
-
break;
|
1408
|
-
case 'Space':
|
1409
|
-
this.onSpaceKey(event, selectedItems, callback, listType);
|
1410
|
-
break;
|
1411
|
-
case 'KeyA':
|
1412
|
-
if (event.ctrlKey) {
|
1413
|
-
this.setSelectionList(listType, this.getVisibleList(listType));
|
1414
|
-
callback.emit({ items: selectedItems });
|
1415
|
-
event.preventDefault();
|
1416
|
-
}
|
1417
|
-
default:
|
1418
|
-
break;
|
1419
|
-
}
|
1420
|
-
}
|
1421
|
-
getFocusedOption(index, listType) {
|
1422
|
-
if (index === -1)
|
1423
|
-
return null;
|
1424
|
-
if (listType === this.SOURCE_LIST) {
|
1425
|
-
return this.visibleOptionsSource && this.visibleOptionsSource.length ? this.visibleOptionsSource[index] : this.source && this.source.length ? this.source[index] : null;
|
1426
|
-
}
|
1427
|
-
return this.visibleOptionsTarget && this.visibleOptionsTarget.length ? this.visibleOptionsTarget[index] : this.target && this.target.length ? this.target[index] : null;
|
1428
|
-
}
|
1429
|
-
changeFocusedOptionIndex(index, listType) {
|
1430
|
-
const items = this.getListItems(listType);
|
1431
|
-
if (items?.length > 0) {
|
1432
|
-
let order = index >= items.length ? items.length - 1 : index < 0 ? 0 : index;
|
1433
|
-
this.focusedOptionIndex = items[order].getAttribute('id');
|
1434
|
-
this.focusedOption = this.getFocusedOption(order, listType);
|
1435
|
-
this.scrollInView(items[order].getAttribute('id'), listType);
|
1436
|
-
}
|
1437
|
-
}
|
1438
|
-
scrollInView(id, listType) {
|
1439
|
-
const element = findSingle(this.getListElement(listType), `li[id="${id}"]`);
|
1440
|
-
if (element) {
|
1441
|
-
element.scrollIntoView && element.scrollIntoView({ block: 'nearest', inline: 'start' });
|
1442
|
-
}
|
1443
|
-
}
|
1444
|
-
onArrowDownKey(event, selectedItems, callback, listType) {
|
1445
|
-
const optionIndex = this.findNextOptionIndex(this.focusedOptionIndex, listType);
|
1446
|
-
this.changeFocusedOptionIndex(optionIndex, listType);
|
1447
|
-
if (event.shiftKey) {
|
1448
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1449
|
-
}
|
1450
|
-
event.preventDefault();
|
1451
|
-
}
|
1452
|
-
onArrowUpKey(event, selectedItems, callback, listType) {
|
1453
|
-
const optionIndex = this.findPrevOptionIndex(this.focusedOptionIndex, listType);
|
1454
|
-
this.changeFocusedOptionIndex(optionIndex, listType);
|
1455
|
-
if (event.shiftKey) {
|
1456
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1457
|
-
}
|
1458
|
-
event.preventDefault();
|
1459
|
-
}
|
1460
|
-
onEnterKey(event, selectedItems, callback, listType) {
|
1461
|
-
this.onItemClick(event, this.focusedOption, selectedItems, listType, callback);
|
1462
|
-
event.preventDefault();
|
1463
|
-
}
|
1464
|
-
onSpaceKey(event, selectedItems, callback, listType) {
|
1465
|
-
event.preventDefault();
|
1466
|
-
if (event.shiftKey && selectedItems && selectedItems.length > 0) {
|
1467
|
-
let visibleList = this.getVisibleList(listType);
|
1468
|
-
let lastSelectedIndex = this.getLatestSelectedVisibleOptionIndex(visibleList, selectedItems);
|
1469
|
-
if (lastSelectedIndex !== -1) {
|
1470
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1471
|
-
selectedItems = [...visibleList.slice(Math.min(lastSelectedIndex, focusedIndex), Math.max(lastSelectedIndex, focusedIndex) + 1)];
|
1472
|
-
this.setSelectionList(listType, selectedItems);
|
1473
|
-
callback.emit({ items: selectedItems });
|
1474
|
-
return;
|
1475
|
-
}
|
1476
|
-
}
|
1477
|
-
this.onEnterKey(event, selectedItems, callback, listType);
|
1478
|
-
}
|
1479
|
-
onHomeKey(event, selectedItems, callback, listType) {
|
1480
|
-
if (event.ctrlKey && event.shiftKey) {
|
1481
|
-
let visibleList = this.getVisibleList(listType);
|
1482
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1483
|
-
selectedItems = [...visibleList.slice(0, focusedIndex + 1)];
|
1484
|
-
this.setSelectionList(listType, selectedItems);
|
1485
|
-
callback.emit({ items: selectedItems });
|
1486
|
-
}
|
1487
|
-
else {
|
1488
|
-
this.changeFocusedOptionIndex(0, listType);
|
1489
|
-
}
|
1490
|
-
event.preventDefault();
|
1491
|
-
}
|
1492
|
-
onEndKey(event, selectedItems, callback, listType) {
|
1493
|
-
let visibleList = this.getVisibleList(listType);
|
1494
|
-
let lastIndex = visibleList && visibleList.length > 0 ? visibleList.length - 1 : null;
|
1495
|
-
if (lastIndex === null)
|
1496
|
-
return;
|
1497
|
-
if (event.ctrlKey && event.shiftKey) {
|
1498
|
-
let focusedIndex = findIndexInList(this.focusedOption, visibleList);
|
1499
|
-
selectedItems = [...visibleList.slice(focusedIndex, lastIndex)];
|
1500
|
-
this.setSelectionList(listType, selectedItems);
|
1501
|
-
callback.emit({ items: selectedItems });
|
1502
|
-
}
|
1503
|
-
else {
|
1504
|
-
this.changeFocusedOptionIndex(lastIndex, listType);
|
1505
|
-
}
|
1506
|
-
event.preventDefault();
|
1507
|
-
}
|
1508
|
-
getDropIndexes(fromIndex, toIndex, droppedList, isTransfer, data) {
|
1509
|
-
let previousIndex, currentIndex;
|
1510
|
-
if (droppedList === this.SOURCE_LIST) {
|
1511
|
-
previousIndex = isTransfer ? (this.filterValueTarget ? findIndexInList(data, this.target) : fromIndex) : this.filterValueSource ? findIndexInList(data, this.source) : fromIndex;
|
1512
|
-
currentIndex = this.filterValueSource ? this.findFilteredCurrentIndex(this.visibleOptionsSource, toIndex, this.source) : toIndex;
|
1513
|
-
}
|
1514
|
-
else {
|
1515
|
-
previousIndex = isTransfer ? (this.filterValueSource ? findIndexInList(data, this.source) : fromIndex) : this.filterValueTarget ? findIndexInList(data, this.target) : fromIndex;
|
1516
|
-
currentIndex = this.filterValueTarget ? this.findFilteredCurrentIndex(this.visibleOptionsTarget, toIndex, this.target) : toIndex;
|
1517
|
-
}
|
1518
|
-
return { previousIndex, currentIndex };
|
1519
|
-
}
|
1520
|
-
findFilteredCurrentIndex(visibleOptions, index, options) {
|
1521
|
-
if (visibleOptions.length === index) {
|
1522
|
-
let toIndex = findIndexInList(visibleOptions[index - 1], options);
|
1523
|
-
return toIndex + 1;
|
1524
|
-
}
|
1525
|
-
else {
|
1526
|
-
return findIndexInList(visibleOptions[index], options);
|
1527
|
-
}
|
1528
|
-
}
|
1529
|
-
resetSourceFilter() {
|
1530
|
-
this.visibleOptionsSource = null;
|
1531
|
-
this.filterValueSource = null;
|
1532
|
-
this.sourceFilterViewChild && (this.sourceFilterViewChild.nativeElement.value = '');
|
1533
|
-
}
|
1534
|
-
resetTargetFilter() {
|
1535
|
-
this.visibleOptionsTarget = null;
|
1536
|
-
this.filterValueTarget = null;
|
1537
|
-
this.targetFilterViewChild && (this.targetFilterViewChild.nativeElement.value = '');
|
1538
|
-
}
|
1539
|
-
resetFilter() {
|
1540
|
-
this.resetSourceFilter();
|
1541
|
-
this.resetTargetFilter();
|
1542
|
-
}
|
1543
|
-
initMedia() {
|
1544
|
-
if (isPlatformBrowser(this.platformId)) {
|
1545
|
-
this.media = this.document.defaultView.matchMedia(`(max-width: ${this.breakpoint})`);
|
1546
|
-
this.viewChanged = this.media.matches;
|
1547
|
-
this.bindMediaChangeListener();
|
1548
|
-
}
|
1549
|
-
}
|
1550
|
-
destroyMedia() {
|
1551
|
-
this.unbindMediaChangeListener();
|
1552
|
-
}
|
1553
|
-
bindMediaChangeListener() {
|
1554
|
-
if (this.media && !this.mediaChangeListener) {
|
1555
|
-
this.mediaChangeListener = this.renderer.listen(this.media, 'change', (event) => {
|
1556
|
-
this.viewChanged = event.matches;
|
1557
|
-
this.cd.markForCheck();
|
1558
|
-
});
|
1559
|
-
}
|
1560
|
-
}
|
1561
|
-
unbindMediaChangeListener() {
|
1562
|
-
if (this.mediaChangeListener) {
|
1563
|
-
this.mediaChangeListener();
|
1564
|
-
this.mediaChangeListener = null;
|
1565
|
-
}
|
1566
|
-
}
|
1567
|
-
createStyle() {
|
1568
|
-
if (isPlatformBrowser(this.platformId)) {
|
1569
|
-
if (!this.styleElement) {
|
1570
|
-
this.renderer.setAttribute(this.el.nativeElement.children[0], this.id, '');
|
1571
|
-
this.styleElement = this.renderer.createElement('style');
|
1572
|
-
this.renderer.setAttribute(this.styleElement, 'type', 'text/css');
|
1573
|
-
this.renderer.appendChild(this.document.head, this.styleElement);
|
1574
|
-
let innerHTML = `
|
1575
|
-
@media screen and (max-width: ${this.breakpoint}) {
|
1576
|
-
.p-picklist[${this.id}] {
|
1577
|
-
flex-direction: column;
|
1578
|
-
}
|
1579
|
-
|
1580
|
-
.p-picklist[${this.id}] .p-picklist-controls {
|
1581
|
-
flex-direction: row;
|
1582
|
-
}
|
1583
|
-
}`;
|
1584
|
-
this.renderer.setProperty(this.styleElement, 'innerHTML', innerHTML);
|
1585
|
-
setAttribute(this.styleElement, 'nonce', this.config?.csp()?.nonce);
|
1586
|
-
}
|
1587
|
-
}
|
1588
|
-
}
|
1589
|
-
sourceMoveDisabled() {
|
1590
|
-
if (this.disabled || !this.selectedItemsSource.length) {
|
1591
|
-
return true;
|
1592
|
-
}
|
1593
|
-
}
|
1594
|
-
targetMoveDisabled() {
|
1595
|
-
if (this.disabled || !this.selectedItemsTarget.length) {
|
1596
|
-
return true;
|
1597
|
-
}
|
1598
|
-
}
|
1599
|
-
moveRightDisabled() {
|
1600
|
-
return this.disabled || isEmpty(this.selectedItemsSource);
|
1601
|
-
}
|
1602
|
-
moveLeftDisabled() {
|
1603
|
-
return this.disabled || isEmpty(this.selectedItemsTarget);
|
1604
|
-
}
|
1605
|
-
moveAllRightDisabled() {
|
1606
|
-
return this.disabled || isEmpty(this.source);
|
1607
|
-
}
|
1608
|
-
moveAllLeftDisabled() {
|
1609
|
-
return this.disabled || isEmpty(this.target);
|
1610
|
-
}
|
1611
|
-
destroyStyle() {
|
1612
|
-
if (this.styleElement) {
|
1613
|
-
this.renderer.removeChild(this.document.head, this.styleElement);
|
1614
|
-
this.styleElement = null;
|
1615
|
-
``;
|
1616
|
-
}
|
1617
|
-
}
|
1618
|
-
ngOnDestroy() {
|
1619
|
-
this.destroyStyle();
|
1620
|
-
this.destroyMedia();
|
1621
|
-
super.ngOnDestroy();
|
1622
|
-
}
|
1623
|
-
static ɵfac = /*@__PURE__*/ (() => { let ɵPickList_BaseFactory; return function PickList_Factory(__ngFactoryType__) { return (ɵPickList_BaseFactory || (ɵPickList_BaseFactory = i0.ɵɵgetInheritedFactory(PickList)))(__ngFactoryType__ || PickList); }; })();
|
1624
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PickList, selectors: [["p-pickList"], ["p-picklist"], ["p-pick-list"]], contentQueries: function PickList_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
1625
|
-
i0.ɵɵcontentQuery(dirIndex, _c0, 5);
|
1626
|
-
i0.ɵɵcontentQuery(dirIndex, _c1, 5);
|
1627
|
-
i0.ɵɵcontentQuery(dirIndex, _c2, 5);
|
1628
|
-
i0.ɵɵcontentQuery(dirIndex, _c3, 5);
|
1629
|
-
i0.ɵɵcontentQuery(dirIndex, _c4, 5);
|
1630
|
-
i0.ɵɵcontentQuery(dirIndex, _c5, 5);
|
1631
|
-
i0.ɵɵcontentQuery(dirIndex, _c6, 5);
|
1632
|
-
i0.ɵɵcontentQuery(dirIndex, _c7, 5);
|
1633
|
-
i0.ɵɵcontentQuery(dirIndex, _c8, 5);
|
1634
|
-
i0.ɵɵcontentQuery(dirIndex, _c9, 5);
|
1635
|
-
i0.ɵɵcontentQuery(dirIndex, _c10, 5);
|
1636
|
-
i0.ɵɵcontentQuery(dirIndex, _c11, 5);
|
1637
|
-
i0.ɵɵcontentQuery(dirIndex, _c12, 5);
|
1638
|
-
i0.ɵɵcontentQuery(dirIndex, _c13, 5);
|
1639
|
-
i0.ɵɵcontentQuery(dirIndex, _c14, 5);
|
1640
|
-
i0.ɵɵcontentQuery(dirIndex, _c15, 5);
|
1641
|
-
i0.ɵɵcontentQuery(dirIndex, _c16, 5);
|
1642
|
-
i0.ɵɵcontentQuery(dirIndex, _c17, 5);
|
1643
|
-
i0.ɵɵcontentQuery(dirIndex, _c18, 5);
|
1644
|
-
} if (rf & 2) {
|
1645
|
-
let _t;
|
1646
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplate = _t.first);
|
1647
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceHeaderTemplate = _t.first);
|
1648
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetHeaderTemplate = _t.first);
|
1649
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterTemplate = _t.first);
|
1650
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterTemplate = _t.first);
|
1651
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyMessageSourceTemplate = _t.first);
|
1652
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyFilterMessageSourceTemplate = _t.first);
|
1653
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyMessageTargetTemplate = _t.first);
|
1654
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.emptyFilterMessageTargetTemplate = _t.first);
|
1655
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveUpIconTemplate = _t.first);
|
1656
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveTopIconTemplate = _t.first);
|
1657
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveDownIconTemplate = _t.first);
|
1658
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveBottomIconTemplate = _t.first);
|
1659
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveToTargetIconTemplate = _t.first);
|
1660
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveAllToTargetIconTemplate = _t.first);
|
1661
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveToSourceIconTemplate = _t.first);
|
1662
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.moveAllToSourceIconTemplate = _t.first);
|
1663
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterIconTemplate = _t.first);
|
1664
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterIconTemplate = _t.first);
|
1665
|
-
} }, viewQuery: function PickList_Query(rf, ctx) { if (rf & 1) {
|
1666
|
-
i0.ɵɵviewQuery(_c19, 5);
|
1667
|
-
i0.ɵɵviewQuery(_c20, 5);
|
1668
|
-
i0.ɵɵviewQuery(_c3, 5);
|
1669
|
-
i0.ɵɵviewQuery(_c4, 5);
|
1670
|
-
} if (rf & 2) {
|
1671
|
-
let _t;
|
1672
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listViewSourceChild = _t.first);
|
1673
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.listViewTargetChild = _t.first);
|
1674
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sourceFilterViewChild = _t.first);
|
1675
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.targetFilterViewChild = _t.first);
|
1676
|
-
} }, inputs: { source: "source", target: "target", sourceHeader: "sourceHeader", tabindex: [2, "tabindex", "tabindex", numberAttribute], rightButtonAriaLabel: "rightButtonAriaLabel", leftButtonAriaLabel: "leftButtonAriaLabel", allRightButtonAriaLabel: "allRightButtonAriaLabel", allLeftButtonAriaLabel: "allLeftButtonAriaLabel", upButtonAriaLabel: "upButtonAriaLabel", downButtonAriaLabel: "downButtonAriaLabel", topButtonAriaLabel: "topButtonAriaLabel", bottomButtonAriaLabel: "bottomButtonAriaLabel", targetHeader: "targetHeader", responsive: [2, "responsive", "responsive", booleanAttribute], filterBy: "filterBy", filterLocale: "filterLocale", trackBy: "trackBy", sourceTrackBy: "sourceTrackBy", targetTrackBy: "targetTrackBy", showSourceFilter: [2, "showSourceFilter", "showSourceFilter", booleanAttribute], showTargetFilter: [2, "showTargetFilter", "showTargetFilter", booleanAttribute], metaKeySelection: [2, "metaKeySelection", "metaKeySelection", booleanAttribute], dragdrop: [2, "dragdrop", "dragdrop", booleanAttribute], style: "style", styleClass: "styleClass", sourceStyle: "sourceStyle", targetStyle: "targetStyle", showSourceControls: [2, "showSourceControls", "showSourceControls", booleanAttribute], showTargetControls: [2, "showTargetControls", "showTargetControls", booleanAttribute], sourceFilterPlaceholder: "sourceFilterPlaceholder", targetFilterPlaceholder: "targetFilterPlaceholder", disabled: [2, "disabled", "disabled", booleanAttribute], ariaSourceFilterLabel: "ariaSourceFilterLabel", ariaTargetFilterLabel: "ariaTargetFilterLabel", filterMatchMode: "filterMatchMode", stripedRows: [2, "stripedRows", "stripedRows", booleanAttribute], keepSelection: [2, "keepSelection", "keepSelection", booleanAttribute], scrollHeight: "scrollHeight", autoOptionFocus: [2, "autoOptionFocus", "autoOptionFocus", booleanAttribute], buttonProps: "buttonProps", moveUpButtonProps: "moveUpButtonProps", moveTopButtonProps: "moveTopButtonProps", moveDownButtonProps: "moveDownButtonProps", moveBottomButtonProps: "moveBottomButtonProps", moveToTargetProps: "moveToTargetProps", moveAllToTargetProps: "moveAllToTargetProps", moveToSourceProps: "moveToSourceProps", moveAllToSourceProps: "moveAllToSourceProps", breakpoint: "breakpoint" }, outputs: { onMoveToSource: "onMoveToSource", onMoveAllToSource: "onMoveAllToSource", onMoveAllToTarget: "onMoveAllToTarget", onMoveToTarget: "onMoveToTarget", onSourceReorder: "onSourceReorder", onTargetReorder: "onTargetReorder", onSourceSelect: "onSourceSelect", onTargetSelect: "onTargetSelect", onSourceFilter: "onSourceFilter", onTargetFilter: "onTargetFilter", onFocus: "onFocus", onBlur: "onBlur" }, standalone: true, features: [i0.ɵɵProvidersFeature([PickListStyle]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 26, vars: 85, consts: [["sourcelist", ""], ["targetlist", ""], ["header", ""], ["item", ""], ["cdkDropListGroup", "", 3, "ngStyle", "ngClass"], ["class", "p-picklist-controls p-picklist-source-controls", 4, "ngIf"], [1, "p-picklist-list-container", "p-picklist-source-list-container"], ["optionLabel", "name", 3, "ngModelChange", "onFocus", "onBlur", "keydown", "onDblClick", "multiple", "options", "ngModel", "id", "ngStyle", "striped", "tabindex", "disabled", "metaKeySelection", "scrollHeight", "autoOptionFocus", "filter", "filterBy", "filterLocale", "filterPlaceHolder"], [4, "ngIf"], [1, "p-picklist-controls", "p-picklist-transfer-controls"], ["type", "button", "pButton", "", "pRipple", "", "severity", "secondary", 1, "p-button-icon-only", 3, "click", "disabled", "buttonProps"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "p-picklist-list-container", "p-picklist-target-list-container"], ["class", "p-picklist-controls p-picklist-target-controls", 4, "ngIf"], [1, "p-picklist-controls", "p-picklist-source-controls"], [4, "ngTemplateOutlet"], [1, "p-picklist-controls", "p-picklist-target-controls"]], template: function PickList_Template(rf, ctx) { if (rf & 1) {
|
1677
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
1678
|
-
i0.ɵɵelementStart(0, "div", 4);
|
1679
|
-
i0.ɵɵtemplate(1, PickList_div_1_Template, 13, 26, "div", 5);
|
1680
|
-
i0.ɵɵelementStart(2, "div", 6)(3, "p-listbox", 7, 0);
|
1681
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PickList_Template_p_listbox_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.selectedItemsSource, $event) || (ctx.selectedItemsSource = $event); return i0.ɵɵresetView($event); });
|
1682
|
-
i0.ɵɵlistener("onFocus", function PickList_Template_p_listbox_onFocus_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListFocus($event, ctx.SOURCE_LIST)); })("onBlur", function PickList_Template_p_listbox_onBlur_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListBlur($event, ctx.SOURCE_LIST)); })("keydown", function PickList_Template_p_listbox_keydown_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemKeyDown($event, ctx.selectedItemsSource, ctx.onSourceSelect, ctx.SOURCE_LIST)); })("onDblClick", function PickList_Template_p_listbox_onDblClick_3_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSourceItemDblClick()); });
|
1683
|
-
i0.ɵɵtemplate(5, PickList_ng_container_5_Template, 3, 0, "ng-container", 8)(6, PickList_ng_container_6_Template, 3, 0, "ng-container", 8);
|
1684
|
-
i0.ɵɵelementEnd()();
|
1685
|
-
i0.ɵɵelementStart(7, "div", 9)(8, "button", 10);
|
1686
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveRight()); });
|
1687
|
-
i0.ɵɵtemplate(9, PickList_ng_container_9_Template, 3, 2, "ng-container", 8)(10, PickList_10_Template, 1, 0, null, 11);
|
1688
|
-
i0.ɵɵelementEnd();
|
1689
|
-
i0.ɵɵelementStart(11, "button", 10);
|
1690
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveAllRight()); });
|
1691
|
-
i0.ɵɵtemplate(12, PickList_ng_container_12_Template, 3, 2, "ng-container", 8)(13, PickList_13_Template, 1, 0, null, 11);
|
1692
|
-
i0.ɵɵelementEnd();
|
1693
|
-
i0.ɵɵelementStart(14, "button", 10);
|
1694
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveLeft()); });
|
1695
|
-
i0.ɵɵtemplate(15, PickList_ng_container_15_Template, 3, 2, "ng-container", 8)(16, PickList_16_Template, 1, 0, null, 11);
|
1696
|
-
i0.ɵɵelementEnd();
|
1697
|
-
i0.ɵɵelementStart(17, "button", 10);
|
1698
|
-
i0.ɵɵlistener("click", function PickList_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.moveAllLeft()); });
|
1699
|
-
i0.ɵɵtemplate(18, PickList_ng_container_18_Template, 3, 2, "ng-container", 8)(19, PickList_19_Template, 1, 0, null, 11);
|
1700
|
-
i0.ɵɵelementEnd()();
|
1701
|
-
i0.ɵɵelementStart(20, "div", 12)(21, "p-listbox", 7, 1);
|
1702
|
-
i0.ɵɵtwoWayListener("ngModelChange", function PickList_Template_p_listbox_ngModelChange_21_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.selectedItemsTarget, $event) || (ctx.selectedItemsTarget = $event); return i0.ɵɵresetView($event); });
|
1703
|
-
i0.ɵɵlistener("onFocus", function PickList_Template_p_listbox_onFocus_21_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListFocus($event, ctx.TARGET_LIST)); })("onBlur", function PickList_Template_p_listbox_onBlur_21_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onListBlur($event, ctx.TARGET_LIST)); })("keydown", function PickList_Template_p_listbox_keydown_21_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onItemKeyDown($event, ctx.selectedItemsTarget, ctx.onTargetSelect, ctx.TARGET_LIST)); })("onDblClick", function PickList_Template_p_listbox_onDblClick_21_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTargetItemDblClick()); });
|
1704
|
-
i0.ɵɵtemplate(23, PickList_ng_container_23_Template, 3, 0, "ng-container", 8)(24, PickList_ng_container_24_Template, 3, 0, "ng-container", 8);
|
1705
|
-
i0.ɵɵelementEnd()();
|
1706
|
-
i0.ɵɵtemplate(25, PickList_div_25_Template, 13, 26, "div", 13);
|
1707
|
-
i0.ɵɵelementEnd();
|
1708
|
-
} if (rf & 2) {
|
1709
|
-
i0.ɵɵclassMap(ctx.styleClass);
|
1710
|
-
i0.ɵɵproperty("ngStyle", ctx.style)("ngClass", i0.ɵɵpureFunction0(76, _c21));
|
1711
|
-
i0.ɵɵattribute("data-pc-name", "picklist")("data-pc-section", "root");
|
1712
|
-
i0.ɵɵadvance();
|
1713
|
-
i0.ɵɵproperty("ngIf", ctx.showSourceControls);
|
1714
|
-
i0.ɵɵadvance();
|
1715
|
-
i0.ɵɵattribute("data-pc-section", "sourceWrapper")("data-pc-group-section", "listWrapper");
|
1716
|
-
i0.ɵɵadvance();
|
1717
|
-
i0.ɵɵproperty("multiple", true)("options", ctx.source);
|
1718
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.selectedItemsSource);
|
1719
|
-
i0.ɵɵproperty("id", ctx.idSource + "_list")("ngStyle", ctx.sourceStyle)("striped", ctx.stripedRows)("tabindex", ctx.tabindex)("disabled", ctx.disabled)("metaKeySelection", ctx.metaKeySelection)("scrollHeight", ctx.scrollHeight)("autoOptionFocus", ctx.autoOptionFocus)("filter", ctx.filterBy)("filterBy", ctx.filterBy)("filterLocale", ctx.filterLocale)("filterPlaceHolder", ctx.sourceFilterPlaceholder);
|
1720
|
-
i0.ɵɵadvance(2);
|
1721
|
-
i0.ɵɵproperty("ngIf", ctx.sourceHeaderTemplate);
|
1722
|
-
i0.ɵɵadvance();
|
1723
|
-
i0.ɵɵproperty("ngIf", ctx.itemTemplate);
|
1724
|
-
i0.ɵɵadvance();
|
1725
|
-
i0.ɵɵattribute("data-pc-section", "buttons")("data-pc-group-section", "controls");
|
1726
|
-
i0.ɵɵadvance();
|
1727
|
-
i0.ɵɵproperty("disabled", ctx.moveRightDisabled())("buttonProps", ctx.getButtonProps("movetotarget"));
|
1728
|
-
i0.ɵɵattribute("aria-label", ctx.moveToTargetAriaLabel)("data-pc-section", "moveToTargetButton");
|
1729
|
-
i0.ɵɵadvance();
|
1730
|
-
i0.ɵɵproperty("ngIf", !ctx.moveToTargetIconTemplate);
|
1731
|
-
i0.ɵɵadvance();
|
1732
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveToTargetIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(77, _c22, ctx.viewChanged));
|
1733
|
-
i0.ɵɵadvance();
|
1734
|
-
i0.ɵɵproperty("disabled", ctx.moveAllRightDisabled())("buttonProps", ctx.getButtonProps("movealltotarget"));
|
1735
|
-
i0.ɵɵattribute("aria-label", ctx.moveAllToTargetAriaLabel)("data-pc-section", "moveAllToTargetButton");
|
1736
|
-
i0.ɵɵadvance();
|
1737
|
-
i0.ɵɵproperty("ngIf", !ctx.moveAllToTargetIconTemplate);
|
1738
|
-
i0.ɵɵadvance();
|
1739
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveAllToTargetIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(79, _c22, ctx.viewChanged));
|
1740
|
-
i0.ɵɵadvance();
|
1741
|
-
i0.ɵɵproperty("disabled", ctx.moveLeftDisabled())("buttonProps", ctx.getButtonProps("movetosource"));
|
1742
|
-
i0.ɵɵattribute("aria-label", ctx.moveToSourceAriaLabel)("data-pc-section", "moveToSourceButton");
|
1743
|
-
i0.ɵɵadvance();
|
1744
|
-
i0.ɵɵproperty("ngIf", !ctx.moveToSourceIconTemplate);
|
1745
|
-
i0.ɵɵadvance();
|
1746
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveToSourceIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(81, _c22, ctx.viewChanged));
|
1747
|
-
i0.ɵɵadvance();
|
1748
|
-
i0.ɵɵproperty("disabled", ctx.moveAllLeftDisabled())("buttonProps", ctx.getButtonProps("movealltosource"));
|
1749
|
-
i0.ɵɵattribute("aria-label", ctx.moveAllToSourceAriaLabel)("data-pc-section", "moveAllToSourceButton");
|
1750
|
-
i0.ɵɵadvance();
|
1751
|
-
i0.ɵɵproperty("ngIf", !ctx.moveAllToSourceIconTemplate);
|
1752
|
-
i0.ɵɵadvance();
|
1753
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.moveAllToSourceIconTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction1(83, _c22, ctx.viewChanged));
|
1754
|
-
i0.ɵɵadvance();
|
1755
|
-
i0.ɵɵattribute("data-pc-section", "targetWrapper")("data-pc-group-section", "listwrapper");
|
1756
|
-
i0.ɵɵadvance();
|
1757
|
-
i0.ɵɵproperty("multiple", true)("options", ctx.target);
|
1758
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx.selectedItemsTarget);
|
1759
|
-
i0.ɵɵproperty("id", ctx.idTarget + "_list")("ngStyle", ctx.targetStyle)("striped", ctx.stripedRows)("tabindex", ctx.tabindex)("disabled", ctx.disabled)("metaKeySelection", ctx.metaKeySelection)("scrollHeight", ctx.scrollHeight)("autoOptionFocus", ctx.autoOptionFocus)("filter", ctx.filterBy)("filterBy", ctx.filterBy)("filterLocale", ctx.filterLocale)("filterPlaceHolder", ctx.targetFilterPlaceholder);
|
1760
|
-
i0.ɵɵadvance(2);
|
1761
|
-
i0.ɵɵproperty("ngIf", ctx.targetHeaderTemplate);
|
1762
|
-
i0.ɵɵadvance();
|
1763
|
-
i0.ɵɵproperty("ngIf", ctx.itemTemplate);
|
1764
|
-
i0.ɵɵadvance();
|
1765
|
-
i0.ɵɵproperty("ngIf", ctx.showTargetControls);
|
1766
|
-
} }, dependencies: [CommonModule, i1.NgClass, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, ButtonDirective,
|
1767
|
-
Ripple,
|
1768
|
-
DragDropModule, i2.CdkDropListGroup, AngleDoubleDownIcon,
|
1769
|
-
AngleDoubleLeftIcon,
|
1770
|
-
AngleDoubleRightIcon,
|
1771
|
-
AngleDoubleUpIcon,
|
1772
|
-
AngleDownIcon,
|
1773
|
-
AngleLeftIcon,
|
1774
|
-
AngleRightIcon,
|
1775
|
-
AngleUpIcon,
|
1776
|
-
Listbox,
|
1777
|
-
FormsModule, i3.NgControlStatus, i3.NgModel, SharedModule], encapsulation: 2, changeDetection: 0 });
|
1778
|
-
}
|
1779
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PickList, [{
|
1780
|
-
type: Component,
|
1781
|
-
args: [{
|
1782
|
-
selector: 'p-pickList, p-picklist, p-pick-list',
|
1783
|
-
standalone: true,
|
1784
|
-
imports: [
|
1785
|
-
CommonModule,
|
1786
|
-
ButtonDirective,
|
1787
|
-
Ripple,
|
1788
|
-
DragDropModule,
|
1789
|
-
AngleDoubleDownIcon,
|
1790
|
-
AngleDoubleLeftIcon,
|
1791
|
-
AngleDoubleRightIcon,
|
1792
|
-
AngleDoubleUpIcon,
|
1793
|
-
AngleDownIcon,
|
1794
|
-
AngleLeftIcon,
|
1795
|
-
AngleRightIcon,
|
1796
|
-
AngleUpIcon,
|
1797
|
-
SearchIcon,
|
1798
|
-
Listbox,
|
1799
|
-
FormsModule,
|
1800
|
-
SharedModule
|
1801
|
-
],
|
1802
|
-
template: `
|
1803
|
-
<div [class]="styleClass" [ngStyle]="style" [ngClass]="{ 'p-picklist p-component': true }" cdkDropListGroup [attr.data-pc-name]="'picklist'" [attr.data-pc-section]="'root'">
|
1804
|
-
<div class="p-picklist-controls p-picklist-source-controls" *ngIf="showSourceControls" [attr.data-pc-section]="'sourceControls'" [attr.data-pc-group-section]="'controls'">
|
1805
|
-
<button
|
1806
|
-
type="button"
|
1807
|
-
[attr.aria-label]="moveUpAriaLabel"
|
1808
|
-
pButton
|
1809
|
-
pRipple
|
1810
|
-
severity="secondary"
|
1811
|
-
class="p-button-icon-only"
|
1812
|
-
[disabled]="sourceMoveDisabled()"
|
1813
|
-
(click)="moveUp(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1814
|
-
[attr.data-pc-section]="'sourceMoveUpButton'"
|
1815
|
-
[buttonProps]="getButtonProps('moveup')"
|
1816
|
-
>
|
1817
|
-
<AngleUpIcon *ngIf="!moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
|
1818
|
-
<ng-template *ngTemplateOutlet="moveUpIconTemplate"></ng-template>
|
1819
|
-
</button>
|
1820
|
-
<button
|
1821
|
-
type="button"
|
1822
|
-
[attr.aria-label]="moveTopAriaLabel"
|
1823
|
-
pButton
|
1824
|
-
pRipple
|
1825
|
-
severity="secondary"
|
1826
|
-
class="p-button-icon-only"
|
1827
|
-
[disabled]="sourceMoveDisabled()"
|
1828
|
-
(click)="moveTop(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1829
|
-
[attr.data-pc-section]="'sourceMoveTopButton'"
|
1830
|
-
[buttonProps]="getButtonProps('movetop')"
|
1831
|
-
>
|
1832
|
-
<AngleDoubleUpIcon *ngIf="!moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
|
1833
|
-
<ng-template *ngTemplateOutlet="moveTopIconTemplate"></ng-template>
|
1834
|
-
</button>
|
1835
|
-
<button
|
1836
|
-
type="button"
|
1837
|
-
[attr.aria-label]="moveDownAriaLabel"
|
1838
|
-
pButton
|
1839
|
-
pRipple
|
1840
|
-
severity="secondary"
|
1841
|
-
class="p-button-icon-only"
|
1842
|
-
[disabled]="sourceMoveDisabled()"
|
1843
|
-
(click)="moveDown(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1844
|
-
[attr.data-pc-section]="'sourceMoveDownButton'"
|
1845
|
-
[buttonProps]="getButtonProps('movedown')"
|
1846
|
-
>
|
1847
|
-
<AngleDownIcon *ngIf="!moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
|
1848
|
-
<ng-template *ngTemplateOutlet="moveDownIconTemplate"></ng-template>
|
1849
|
-
</button>
|
1850
|
-
<button
|
1851
|
-
type="button"
|
1852
|
-
[attr.aria-label]="moveBottomAriaLabel"
|
1853
|
-
pButton
|
1854
|
-
pRipple
|
1855
|
-
severity="secondary"
|
1856
|
-
class="p-button-icon-only"
|
1857
|
-
[disabled]="sourceMoveDisabled()"
|
1858
|
-
(click)="moveBottom(sourcelist, source, selectedItemsSource, onSourceReorder, SOURCE_LIST)"
|
1859
|
-
[attr.data-pc-section]="'sourceMoveBottomButton'"
|
1860
|
-
[buttonProps]="getButtonProps('movebottom')"
|
1861
|
-
>
|
1862
|
-
<AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
|
1863
|
-
<ng-template *ngTemplateOutlet="moveBottomIconTemplate"></ng-template>
|
1864
|
-
</button>
|
1865
|
-
</div>
|
1866
|
-
<div class="p-picklist-list-container p-picklist-source-list-container" [attr.data-pc-section]="'sourceWrapper'" [attr.data-pc-group-section]="'listWrapper'">
|
1867
|
-
<p-listbox
|
1868
|
-
#sourcelist
|
1869
|
-
[multiple]="true"
|
1870
|
-
[options]="source"
|
1871
|
-
[(ngModel)]="selectedItemsSource"
|
1872
|
-
optionLabel="name"
|
1873
|
-
[id]="idSource + '_list'"
|
1874
|
-
[ngStyle]="sourceStyle"
|
1875
|
-
[striped]="stripedRows"
|
1876
|
-
[tabindex]="tabindex"
|
1877
|
-
(onFocus)="onListFocus($event, SOURCE_LIST)"
|
1878
|
-
(onBlur)="onListBlur($event, SOURCE_LIST)"
|
1879
|
-
(keydown)="onItemKeyDown($event, selectedItemsSource, onSourceSelect, SOURCE_LIST)"
|
1880
|
-
(onDblClick)="onSourceItemDblClick()"
|
1881
|
-
[disabled]="disabled"
|
1882
|
-
[metaKeySelection]="metaKeySelection"
|
1883
|
-
[scrollHeight]="scrollHeight"
|
1884
|
-
[autoOptionFocus]="autoOptionFocus"
|
1885
|
-
[filter]="filterBy"
|
1886
|
-
[filterBy]="filterBy"
|
1887
|
-
[filterLocale]="filterLocale"
|
1888
|
-
[filterPlaceHolder]="sourceFilterPlaceholder"
|
1889
|
-
>
|
1890
|
-
<ng-container *ngIf="sourceHeaderTemplate">
|
1891
|
-
<ng-template #header>
|
1892
|
-
<ng-template *ngTemplateOutlet="sourceHeaderTemplate"></ng-template>
|
1893
|
-
</ng-template>
|
1894
|
-
</ng-container>
|
1895
|
-
<ng-container *ngIf="itemTemplate">
|
1896
|
-
<ng-template #item let-item let-index="index" let-selected="selected">
|
1897
|
-
<ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: index, selected: selected }"></ng-container>
|
1898
|
-
</ng-template>
|
1899
|
-
</ng-container>
|
1900
|
-
</p-listbox>
|
1901
|
-
</div>
|
1902
|
-
<div class="p-picklist-controls p-picklist-transfer-controls" [attr.data-pc-section]="'buttons'" [attr.data-pc-group-section]="'controls'">
|
1903
|
-
<button
|
1904
|
-
type="button"
|
1905
|
-
[attr.aria-label]="moveToTargetAriaLabel"
|
1906
|
-
pButton
|
1907
|
-
pRipple
|
1908
|
-
severity="secondary"
|
1909
|
-
class="p-button-icon-only"
|
1910
|
-
[disabled]="moveRightDisabled()"
|
1911
|
-
(click)="moveRight()"
|
1912
|
-
[attr.data-pc-section]="'moveToTargetButton'"
|
1913
|
-
[buttonProps]="getButtonProps('movetotarget')"
|
1914
|
-
>
|
1915
|
-
<ng-container *ngIf="!moveToTargetIconTemplate">
|
1916
|
-
<AngleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
|
1917
|
-
<AngleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movetotargeticon'" />
|
1918
|
-
</ng-container>
|
1919
|
-
<ng-template *ngTemplateOutlet="moveToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
1920
|
-
</button>
|
1921
|
-
<button
|
1922
|
-
type="button"
|
1923
|
-
[attr.aria-label]="moveAllToTargetAriaLabel"
|
1924
|
-
pButton
|
1925
|
-
pRipple
|
1926
|
-
severity="secondary"
|
1927
|
-
class="p-button-icon-only"
|
1928
|
-
[disabled]="moveAllRightDisabled()"
|
1929
|
-
(click)="moveAllRight()"
|
1930
|
-
[attr.data-pc-section]="'moveAllToTargetButton'"
|
1931
|
-
[buttonProps]="getButtonProps('movealltotarget')"
|
1932
|
-
>
|
1933
|
-
<ng-container *ngIf="!moveAllToTargetIconTemplate">
|
1934
|
-
<AngleDoubleRightIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
|
1935
|
-
<AngleDoubleDownIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltotargeticon'" />
|
1936
|
-
</ng-container>
|
1937
|
-
<ng-template *ngTemplateOutlet="moveAllToTargetIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
1938
|
-
</button>
|
1939
|
-
<button
|
1940
|
-
type="button"
|
1941
|
-
[attr.aria-label]="moveToSourceAriaLabel"
|
1942
|
-
pButton
|
1943
|
-
pRipple
|
1944
|
-
severity="secondary"
|
1945
|
-
class="p-button-icon-only"
|
1946
|
-
[disabled]="moveLeftDisabled()"
|
1947
|
-
(click)="moveLeft()"
|
1948
|
-
[attr.data-pc-section]="'moveToSourceButton'"
|
1949
|
-
[buttonProps]="getButtonProps('movetosource')"
|
1950
|
-
>
|
1951
|
-
<ng-container *ngIf="!moveToSourceIconTemplate">
|
1952
|
-
<AngleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
|
1953
|
-
<AngleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movedownsourceticon'" />
|
1954
|
-
</ng-container>
|
1955
|
-
<ng-template *ngTemplateOutlet="moveToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
1956
|
-
</button>
|
1957
|
-
<button
|
1958
|
-
type="button"
|
1959
|
-
[attr.aria-label]="moveAllToSourceAriaLabel"
|
1960
|
-
pButton
|
1961
|
-
pRipple
|
1962
|
-
severity="secondary"
|
1963
|
-
class="p-button-icon-only"
|
1964
|
-
[disabled]="moveAllLeftDisabled()"
|
1965
|
-
(click)="moveAllLeft()"
|
1966
|
-
[attr.data-pc-section]="'moveAllToSourceButton'"
|
1967
|
-
[buttonProps]="getButtonProps('movealltosource')"
|
1968
|
-
>
|
1969
|
-
<ng-container *ngIf="!moveAllToSourceIconTemplate">
|
1970
|
-
<AngleDoubleLeftIcon *ngIf="!viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
|
1971
|
-
<AngleDoubleUpIcon *ngIf="viewChanged" [attr.data-pc-section]="'movealltosourceticon'" />
|
1972
|
-
</ng-container>
|
1973
|
-
<ng-template *ngTemplateOutlet="moveAllToSourceIconTemplate; context: { $implicit: viewChanged }"></ng-template>
|
1974
|
-
</button>
|
1975
|
-
</div>
|
1976
|
-
<div class="p-picklist-list-container p-picklist-target-list-container" [attr.data-pc-section]="'targetWrapper'" [attr.data-pc-group-section]="'listwrapper'">
|
1977
|
-
<p-listbox
|
1978
|
-
#targetlist
|
1979
|
-
[multiple]="true"
|
1980
|
-
[options]="target"
|
1981
|
-
[(ngModel)]="selectedItemsTarget"
|
1982
|
-
optionLabel="name"
|
1983
|
-
[id]="idTarget + '_list'"
|
1984
|
-
[ngStyle]="targetStyle"
|
1985
|
-
[striped]="stripedRows"
|
1986
|
-
[tabindex]="tabindex"
|
1987
|
-
(onFocus)="onListFocus($event, TARGET_LIST)"
|
1988
|
-
(onBlur)="onListBlur($event, TARGET_LIST)"
|
1989
|
-
(keydown)="onItemKeyDown($event, selectedItemsTarget, onTargetSelect, TARGET_LIST)"
|
1990
|
-
(onDblClick)="onTargetItemDblClick()"
|
1991
|
-
[disabled]="disabled"
|
1992
|
-
[metaKeySelection]="metaKeySelection"
|
1993
|
-
[scrollHeight]="scrollHeight"
|
1994
|
-
[autoOptionFocus]="autoOptionFocus"
|
1995
|
-
[filter]="filterBy"
|
1996
|
-
[filterBy]="filterBy"
|
1997
|
-
[filterLocale]="filterLocale"
|
1998
|
-
[filterPlaceHolder]="targetFilterPlaceholder"
|
1999
|
-
>
|
2000
|
-
<ng-container *ngIf="targetHeaderTemplate">
|
2001
|
-
<ng-template #header>
|
2002
|
-
<ng-template *ngTemplateOutlet="targetHeaderTemplate"></ng-template>
|
2003
|
-
</ng-template>
|
2004
|
-
</ng-container>
|
2005
|
-
<ng-container *ngIf="itemTemplate">
|
2006
|
-
<ng-template #item let-item let-index="index" let-selected="selected">
|
2007
|
-
<ng-container *ngTemplateOutlet="itemTemplate; context: { $implicit: item, index: index, selected: selected }"></ng-container>
|
2008
|
-
</ng-template>
|
2009
|
-
</ng-container>
|
2010
|
-
</p-listbox>
|
2011
|
-
</div>
|
2012
|
-
<div class="p-picklist-controls p-picklist-target-controls" *ngIf="showTargetControls" [attr.data-pc-section]="'targetControls'" [attr.data-pc-group-section]="'controls'">
|
2013
|
-
<button
|
2014
|
-
type="button"
|
2015
|
-
[attr.aria-label]="moveUpAriaLabel"
|
2016
|
-
pButton
|
2017
|
-
pRipple
|
2018
|
-
severity="secondary"
|
2019
|
-
class="p-button-icon-only"
|
2020
|
-
[disabled]="targetMoveDisabled()"
|
2021
|
-
(click)="moveUp(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2022
|
-
[attr.data-pc-section]="'targetMoveUpButton'"
|
2023
|
-
[buttonProps]="getButtonProps('moveup')"
|
2024
|
-
>
|
2025
|
-
<AngleUpIcon *ngIf="!moveUpIconTemplate" [attr.data-pc-section]="'moveupicon'" />
|
2026
|
-
<ng-template *ngTemplateOutlet="moveUpIconTemplate"></ng-template>
|
2027
|
-
</button>
|
2028
|
-
<button
|
2029
|
-
type="button"
|
2030
|
-
[attr.aria-label]="moveTopAriaLabel"
|
2031
|
-
pButton
|
2032
|
-
pRipple
|
2033
|
-
severity="secondary"
|
2034
|
-
class="p-button-icon-only"
|
2035
|
-
[disabled]="targetMoveDisabled()"
|
2036
|
-
(click)="moveTop(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2037
|
-
[attr.data-pc-section]="'targetMoveTopButton'"
|
2038
|
-
[buttonProps]="getButtonProps('movetop')"
|
2039
|
-
>
|
2040
|
-
<AngleDoubleUpIcon *ngIf="!moveTopIconTemplate" [attr.data-pc-section]="'movetopicon'" />
|
2041
|
-
<ng-template *ngTemplateOutlet="moveTopIconTemplate"></ng-template>
|
2042
|
-
</button>
|
2043
|
-
<button
|
2044
|
-
type="button"
|
2045
|
-
[attr.aria-label]="moveDownAriaLabel"
|
2046
|
-
pButton
|
2047
|
-
pRipple
|
2048
|
-
severity="secondary"
|
2049
|
-
class="p-button-icon-only"
|
2050
|
-
[disabled]="targetMoveDisabled()"
|
2051
|
-
(click)="moveDown(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2052
|
-
[attr.data-pc-section]="'targetMoveDownButton'"
|
2053
|
-
[buttonProps]="getButtonProps('movedown')"
|
2054
|
-
>
|
2055
|
-
<AngleDownIcon *ngIf="!moveDownIconTemplate" [attr.data-pc-section]="'movedownicon'" />
|
2056
|
-
<ng-template *ngTemplateOutlet="moveDownIconTemplate"></ng-template>
|
2057
|
-
</button>
|
2058
|
-
<button
|
2059
|
-
type="button"
|
2060
|
-
[attr.aria-label]="moveBottomAriaLabel"
|
2061
|
-
pButton
|
2062
|
-
pRipple
|
2063
|
-
severity="secondary"
|
2064
|
-
class="p-button-icon-only"
|
2065
|
-
[disabled]="targetMoveDisabled()"
|
2066
|
-
(click)="moveBottom(targetlist, target, selectedItemsTarget, onTargetReorder, TARGET_LIST)"
|
2067
|
-
[attr.data-pc-section]="'targetMoveBottomButton'"
|
2068
|
-
[buttonProps]="getButtonProps('movebottom')"
|
2069
|
-
>
|
2070
|
-
<AngleDoubleDownIcon *ngIf="!moveBottomIconTemplate" [attr.data-pc-section]="'movebottomicon'" />
|
2071
|
-
<ng-template *ngTemplateOutlet="moveBottomIconTemplate"></ng-template>
|
2072
|
-
</button>
|
2073
|
-
</div>
|
2074
|
-
</div>
|
2075
|
-
`,
|
2076
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
2077
|
-
encapsulation: ViewEncapsulation.None,
|
2078
|
-
providers: [PickListStyle]
|
2079
|
-
}]
|
2080
|
-
}], null, { source: [{
|
2081
|
-
type: Input
|
2082
|
-
}], target: [{
|
2083
|
-
type: Input
|
2084
|
-
}], sourceHeader: [{
|
2085
|
-
type: Input
|
2086
|
-
}], tabindex: [{
|
2087
|
-
type: Input,
|
2088
|
-
args: [{ transform: numberAttribute }]
|
2089
|
-
}], rightButtonAriaLabel: [{
|
2090
|
-
type: Input
|
2091
|
-
}], leftButtonAriaLabel: [{
|
2092
|
-
type: Input
|
2093
|
-
}], allRightButtonAriaLabel: [{
|
2094
|
-
type: Input
|
2095
|
-
}], allLeftButtonAriaLabel: [{
|
2096
|
-
type: Input
|
2097
|
-
}], upButtonAriaLabel: [{
|
2098
|
-
type: Input
|
2099
|
-
}], downButtonAriaLabel: [{
|
2100
|
-
type: Input
|
2101
|
-
}], topButtonAriaLabel: [{
|
2102
|
-
type: Input
|
2103
|
-
}], bottomButtonAriaLabel: [{
|
2104
|
-
type: Input
|
2105
|
-
}], targetHeader: [{
|
2106
|
-
type: Input
|
2107
|
-
}], responsive: [{
|
2108
|
-
type: Input,
|
2109
|
-
args: [{ transform: booleanAttribute }]
|
2110
|
-
}], filterBy: [{
|
2111
|
-
type: Input
|
2112
|
-
}], filterLocale: [{
|
2113
|
-
type: Input
|
2114
|
-
}], trackBy: [{
|
2115
|
-
type: Input
|
2116
|
-
}], sourceTrackBy: [{
|
2117
|
-
type: Input
|
2118
|
-
}], targetTrackBy: [{
|
2119
|
-
type: Input
|
2120
|
-
}], showSourceFilter: [{
|
2121
|
-
type: Input,
|
2122
|
-
args: [{ transform: booleanAttribute }]
|
2123
|
-
}], showTargetFilter: [{
|
2124
|
-
type: Input,
|
2125
|
-
args: [{ transform: booleanAttribute }]
|
2126
|
-
}], metaKeySelection: [{
|
2127
|
-
type: Input,
|
2128
|
-
args: [{ transform: booleanAttribute }]
|
2129
|
-
}], dragdrop: [{
|
2130
|
-
type: Input,
|
2131
|
-
args: [{ transform: booleanAttribute }]
|
2132
|
-
}], style: [{
|
2133
|
-
type: Input
|
2134
|
-
}], styleClass: [{
|
2135
|
-
type: Input
|
2136
|
-
}], sourceStyle: [{
|
2137
|
-
type: Input
|
2138
|
-
}], targetStyle: [{
|
2139
|
-
type: Input
|
2140
|
-
}], showSourceControls: [{
|
2141
|
-
type: Input,
|
2142
|
-
args: [{ transform: booleanAttribute }]
|
2143
|
-
}], showTargetControls: [{
|
2144
|
-
type: Input,
|
2145
|
-
args: [{ transform: booleanAttribute }]
|
2146
|
-
}], sourceFilterPlaceholder: [{
|
2147
|
-
type: Input
|
2148
|
-
}], targetFilterPlaceholder: [{
|
2149
|
-
type: Input
|
2150
|
-
}], disabled: [{
|
2151
|
-
type: Input,
|
2152
|
-
args: [{ transform: booleanAttribute }]
|
2153
|
-
}], ariaSourceFilterLabel: [{
|
2154
|
-
type: Input
|
2155
|
-
}], ariaTargetFilterLabel: [{
|
2156
|
-
type: Input
|
2157
|
-
}], filterMatchMode: [{
|
2158
|
-
type: Input
|
2159
|
-
}], stripedRows: [{
|
2160
|
-
type: Input,
|
2161
|
-
args: [{ transform: booleanAttribute }]
|
2162
|
-
}], keepSelection: [{
|
2163
|
-
type: Input,
|
2164
|
-
args: [{ transform: booleanAttribute }]
|
2165
|
-
}], scrollHeight: [{
|
2166
|
-
type: Input
|
2167
|
-
}], autoOptionFocus: [{
|
2168
|
-
type: Input,
|
2169
|
-
args: [{ transform: booleanAttribute }]
|
2170
|
-
}], buttonProps: [{
|
2171
|
-
type: Input
|
2172
|
-
}], moveUpButtonProps: [{
|
2173
|
-
type: Input
|
2174
|
-
}], moveTopButtonProps: [{
|
2175
|
-
type: Input
|
2176
|
-
}], moveDownButtonProps: [{
|
2177
|
-
type: Input
|
2178
|
-
}], moveBottomButtonProps: [{
|
2179
|
-
type: Input
|
2180
|
-
}], moveToTargetProps: [{
|
2181
|
-
type: Input
|
2182
|
-
}], moveAllToTargetProps: [{
|
2183
|
-
type: Input
|
2184
|
-
}], moveToSourceProps: [{
|
2185
|
-
type: Input
|
2186
|
-
}], moveAllToSourceProps: [{
|
2187
|
-
type: Input
|
2188
|
-
}], breakpoint: [{
|
2189
|
-
type: Input
|
2190
|
-
}], onMoveToSource: [{
|
2191
|
-
type: Output
|
2192
|
-
}], onMoveAllToSource: [{
|
2193
|
-
type: Output
|
2194
|
-
}], onMoveAllToTarget: [{
|
2195
|
-
type: Output
|
2196
|
-
}], onMoveToTarget: [{
|
2197
|
-
type: Output
|
2198
|
-
}], onSourceReorder: [{
|
2199
|
-
type: Output
|
2200
|
-
}], onTargetReorder: [{
|
2201
|
-
type: Output
|
2202
|
-
}], onSourceSelect: [{
|
2203
|
-
type: Output
|
2204
|
-
}], onTargetSelect: [{
|
2205
|
-
type: Output
|
2206
|
-
}], onSourceFilter: [{
|
2207
|
-
type: Output
|
2208
|
-
}], onTargetFilter: [{
|
2209
|
-
type: Output
|
2210
|
-
}], onFocus: [{
|
2211
|
-
type: Output
|
2212
|
-
}], onBlur: [{
|
2213
|
-
type: Output
|
2214
|
-
}], listViewSourceChild: [{
|
2215
|
-
type: ViewChild,
|
2216
|
-
args: ['sourcelist']
|
2217
|
-
}], listViewTargetChild: [{
|
2218
|
-
type: ViewChild,
|
2219
|
-
args: ['targetlist']
|
2220
|
-
}], sourceFilterViewChild: [{
|
2221
|
-
type: ViewChild,
|
2222
|
-
args: ['sourceFilter']
|
2223
|
-
}], targetFilterViewChild: [{
|
2224
|
-
type: ViewChild,
|
2225
|
-
args: ['targetFilter']
|
2226
|
-
}], itemTemplate: [{
|
2227
|
-
type: ContentChild,
|
2228
|
-
args: ['item']
|
2229
|
-
}], sourceHeaderTemplate: [{
|
2230
|
-
type: ContentChild,
|
2231
|
-
args: ['sourceHeader']
|
2232
|
-
}], targetHeaderTemplate: [{
|
2233
|
-
type: ContentChild,
|
2234
|
-
args: ['targetHeader']
|
2235
|
-
}], sourceFilterTemplate: [{
|
2236
|
-
type: ContentChild,
|
2237
|
-
args: ['sourceFilter']
|
2238
|
-
}], targetFilterTemplate: [{
|
2239
|
-
type: ContentChild,
|
2240
|
-
args: ['targetFilter']
|
2241
|
-
}], emptyMessageSourceTemplate: [{
|
2242
|
-
type: ContentChild,
|
2243
|
-
args: ['emptymessagesource']
|
2244
|
-
}], emptyFilterMessageSourceTemplate: [{
|
2245
|
-
type: ContentChild,
|
2246
|
-
args: ['emptyfiltermessagesource']
|
2247
|
-
}], emptyMessageTargetTemplate: [{
|
2248
|
-
type: ContentChild,
|
2249
|
-
args: ['emptymessagetarget']
|
2250
|
-
}], emptyFilterMessageTargetTemplate: [{
|
2251
|
-
type: ContentChild,
|
2252
|
-
args: ['emptyfiltermessagetarget']
|
2253
|
-
}], moveUpIconTemplate: [{
|
2254
|
-
type: ContentChild,
|
2255
|
-
args: ['moveupicon']
|
2256
|
-
}], moveTopIconTemplate: [{
|
2257
|
-
type: ContentChild,
|
2258
|
-
args: ['movetopicon']
|
2259
|
-
}], moveDownIconTemplate: [{
|
2260
|
-
type: ContentChild,
|
2261
|
-
args: ['movedownicon']
|
2262
|
-
}], moveBottomIconTemplate: [{
|
2263
|
-
type: ContentChild,
|
2264
|
-
args: ['movebottomicon']
|
2265
|
-
}], moveToTargetIconTemplate: [{
|
2266
|
-
type: ContentChild,
|
2267
|
-
args: ['movetotargeticon']
|
2268
|
-
}], moveAllToTargetIconTemplate: [{
|
2269
|
-
type: ContentChild,
|
2270
|
-
args: ['movealltotargeticon']
|
2271
|
-
}], moveToSourceIconTemplate: [{
|
2272
|
-
type: ContentChild,
|
2273
|
-
args: ['movetosourceicon']
|
2274
|
-
}], moveAllToSourceIconTemplate: [{
|
2275
|
-
type: ContentChild,
|
2276
|
-
args: ['movealltosourceicon']
|
2277
|
-
}], targetFilterIconTemplate: [{
|
2278
|
-
type: ContentChild,
|
2279
|
-
args: ['targetfiltericon']
|
2280
|
-
}], sourceFilterIconTemplate: [{
|
2281
|
-
type: ContentChild,
|
2282
|
-
args: ['sourcefiltericon']
|
2283
|
-
}] }); })();
|
2284
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PickList, { className: "PickList" }); })();
|
2285
|
-
export class PickListModule {
|
2286
|
-
static ɵfac = function PickListModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PickListModule)(); };
|
2287
|
-
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: PickListModule });
|
2288
|
-
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [PickList, SharedModule, SharedModule] });
|
2289
|
-
}
|
2290
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PickListModule, [{
|
2291
|
-
type: NgModule,
|
2292
|
-
args: [{
|
2293
|
-
imports: [PickList, SharedModule],
|
2294
|
-
exports: [PickList, SharedModule]
|
2295
|
-
}]
|
2296
|
-
}], null, null); })();
|
2297
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(PickListModule, { imports: [PickList, SharedModule], exports: [PickList, SharedModule] }); })();
|
2298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGlja2xpc3QvcGlja2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLGNBQWMsRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RyxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUdILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsZUFBZSxFQUNmLE1BQU0sRUFHTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0csT0FBTyxFQUFFLGFBQWEsRUFBaUIsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekwsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztB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cm9wLCBEcmFnRHJvcE1vZHVsZSwgbW92ZUl0ZW1JbkFycmF5LCB0cmFuc2ZlckFycmF5SXRlbSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmluZCwgZmluZEluZGV4SW5MaXN0LCBmaW5kU2luZ2xlLCBpc0VtcHR5LCBzY3JvbGxJblZpZXcsIHNldEF0dHJpYnV0ZSwgdXVpZCB9IGZyb20gJ0BwcmltZXVpeC91dGlscyc7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlLCBQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAncHJpbWVuZy9iYXNlY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZSwgQnV0dG9uUHJvcHMgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBBbmdsZURvdWJsZURvd25JY29uLCBBbmdsZURvdWJsZUxlZnRJY29uLCBBbmdsZURvdWJsZVJpZ2h0SWNvbiwgQW5nbGVEb3VibGVVcEljb24sIEFuZ2xlRG93bkljb24sIEFuZ2xlTGVmdEljb24sIEFuZ2xlUmlnaHRJY29uLCBBbmdsZVVwSWNvbiwgU2VhcmNoSWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMnO1xuaW1wb3J0IHsgTGlzdGJveCB9IGZyb20gJ3ByaW1lbmcvbGlzdGJveCc7XG5pbXBvcnQgeyBSaXBwbGUgfSBmcm9tICdwcmltZW5nL3JpcHBsZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgVm9pZExpc3RlbmVyIH0gZnJvbSAncHJpbWVuZy90cy1oZWxwZXJzJztcbmltcG9ydCB7XG4gICAgUGlja0xpc3RGaWx0ZXJPcHRpb25zLFxuICAgIFBpY2tMaXN0TW92ZUFsbFRvU291cmNlRXZlbnQsXG4gICAgUGlja0xpc3RNb3ZlQWxsVG9UYXJnZXRFdmVudCxcbiAgICBQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50LFxuICAgIFBpY2tMaXN0TW92ZVRvVGFyZ2V0RXZlbnQsXG4gICAgUGlja0xpc3RTb3VyY2VGaWx0ZXJFdmVudCxcbiAgICBQaWNrTGlzdFNvdXJjZVJlb3JkZXJFdmVudCxcbiAgICBQaWNrTGlzdFNvdXJjZVNlbGVjdEV2ZW50LFxuICAgIFBpY2tMaXN0VGFyZ2V0RmlsdGVyRXZlbnQsXG4gICAgUGlja0xpc3RUYXJnZXRSZW9yZGVyRXZlbnQsXG4gICAgUGlja0xpc3RUYXJnZXRTZWxlY3RFdmVudFxufSBmcm9tICcuL3BpY2tsaXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQaWNrTGlzdFN0eWxlIH0gZnJvbSAnLi9zdHlsZS9waWNrbGlzdHN0eWxlJztcblxuLyoqXG4gKiBQaWNrTGlzdCBpcyB1c2VkIHRvIHJlb3JkZXIgaXRlbXMgYmV0d2VlbiBkaWZmZXJlbnQgbGlzdHMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtcGlja0xpc3QsIHAtcGlja2xpc3QsIHAtcGljay1saXN0JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBCdXR0b25EaXJlY3RpdmUsXG4gICAgICAgIFJpcHBsZSxcbiAgICAgICAgRHJhZ0Ryb3BNb2R1bGUsXG4gICAgICAgIEFuZ2xlRG91YmxlRG93bkljb24sXG4gICAgICAgIEFuZ2xlRG91YmxlTGVmdEljb24sXG4gICAgICAgIEFuZ2xlRG91YmxlUmlnaHRJY29uLFxuICAgICAgICBBbmdsZURvdWJsZVVwSWNvbixcbiAgICAgICAgQW5nbGVEb3duSWNvbixcbiAgICAgICAgQW5nbGVMZWZ0SWNvbixcbiAgICAgICAgQW5nbGVSaWdodEljb24sXG4gICAgICAgIEFuZ2xlVXBJY29uLFxuICAgICAgICBTZWFyY2hJY29uLFxuICAgICAgICBMaXN0Ym94LFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgU2hhcmVkTW9kdWxlXG4gICAgXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IFtjbGFzc109XCJzdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwic3R5bGVcIiBbbmdDbGFzc109XCJ7ICdwLXBpY2tsaXN0IHAtY29tcG9uZW50JzogdHJ1ZSB9XCIgY2RrRHJvcExpc3RHcm91cCBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ3BpY2tsaXN0J1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncm9vdCdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWNvbnRyb2xzIHAtcGlja2xpc3Qtc291cmNlLWNvbnRyb2xzXCIgKm5nSWY9XCJzaG93U291cmNlQ29udHJvbHNcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZUNvbnRyb2xzJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInY29udHJvbHMnXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVXBBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzb3VyY2VNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVXAoc291cmNlbGlzdCwgc291cmNlLCBzZWxlY3RlZEl0ZW1zU291cmNlLCBvblNvdXJjZVJlb3JkZXIsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlTW92ZVVwQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXVwJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIW1vdmVVcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXVwaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVXBJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZVRvcEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNvdXJjZU1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVUb3Aoc291cmNlbGlzdCwgc291cmNlLCBzZWxlY3RlZEl0ZW1zU291cmNlLCBvblNvdXJjZVJlb3JkZXIsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInc291cmNlTW92ZVRvcEJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYnV0dG9uUHJvcHNdPVwiZ2V0QnV0dG9uUHJvcHMoJ21vdmV0b3AnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVVcEljb24gKm5nSWY9XCIhbW92ZVRvcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXRvcGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZVRvcEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlRG93bkFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNvdXJjZU1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVEb3duKHNvdXJjZWxpc3QsIHNvdXJjZSwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VSZW9yZGVyLCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZU1vdmVEb3duQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZWRvd24nKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiAqbmdJZj1cIiFtb3ZlRG93bkljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWRvd25pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVEb3duSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVCb3R0b21BcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzb3VyY2VNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQm90dG9tKHNvdXJjZWxpc3QsIHNvdXJjZSwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VSZW9yZGVyLCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3NvdXJjZU1vdmVCb3R0b21CdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZlYm90dG9tJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlRG93bkljb24gKm5nSWY9XCIhbW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWJvdHRvbWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWxpc3QtY29udGFpbmVyIHAtcGlja2xpc3Qtc291cmNlLWxpc3QtY29udGFpbmVyXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidzb3VyY2VXcmFwcGVyJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInbGlzdFdyYXBwZXInXCI+XG4gICAgICAgICAgICAgICAgPHAtbGlzdGJveFxuICAgICAgICAgICAgICAgICAgICAjc291cmNlbGlzdFxuICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRJdGVtc1NvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZFNvdXJjZSArICdfbGlzdCdcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJzb3VyY2VTdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHJpcGVkXT1cInN0cmlwZWRSb3dzXCJcbiAgICAgICAgICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgKG9uRm9jdXMpPVwib25MaXN0Rm9jdXMoJGV2ZW50LCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICAob25CbHVyKT1cIm9uTGlzdEJsdXIoJGV2ZW50LCBTT1VSQ0VfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkl0ZW1LZXlEb3duKCRldmVudCwgc2VsZWN0ZWRJdGVtc1NvdXJjZSwgb25Tb3VyY2VTZWxlY3QsIFNPVVJDRV9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIChvbkRibENsaWNrKT1cIm9uU291cmNlSXRlbURibENsaWNrKClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbWV0YUtleVNlbGVjdGlvbl09XCJtZXRhS2V5U2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW3Njcm9sbEhlaWdodF09XCJzY3JvbGxIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b09wdGlvbkZvY3VzXT1cImF1dG9PcHRpb25Gb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwiZmlsdGVyQnlcIlxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyQnldPVwiZmlsdGVyQnlcIlxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyTG9jYWxlXT1cImZpbHRlckxvY2FsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJQbGFjZUhvbGRlcl09XCJzb3VyY2VGaWx0ZXJQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic291cmNlSGVhZGVyVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInNvdXJjZUhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW0gbGV0LWl0ZW0gbGV0LWluZGV4PVwiaW5kZXhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtLCBpbmRleDogaW5kZXgsIHNlbGVjdGVkOiBzZWxlY3RlZCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3AtbGlzdGJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtcGlja2xpc3QtY29udHJvbHMgcC1waWNrbGlzdC10cmFuc2Zlci1jb250cm9sc1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInYnV0dG9ucydcIiBbYXR0ci5kYXRhLXBjLWdyb3VwLXNlY3Rpb25dPVwiJ2NvbnRyb2xzJ1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZVRvVGFyZ2V0QXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIHNldmVyaXR5PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1pY29uLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibW92ZVJpZ2h0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlUmlnaHQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZVRvVGFyZ2V0QnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXRvdGFyZ2V0JylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb3ZlVG9UYXJnZXRJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZVJpZ2h0SWNvbiAqbmdJZj1cIiF2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXRvdGFyZ2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG93bkljb24gKm5nSWY9XCJ2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXRvdGFyZ2V0aWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZVRvVGFyZ2V0SWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdmlld0NoYW5nZWQgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlQWxsVG9UYXJnZXRBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtb3ZlQWxsUmlnaHREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBbGxSaWdodCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlQWxsVG9UYXJnZXRCdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZlYWxsdG90YXJnZXQnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vdmVBbGxUb1RhcmdldEljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlUmlnaHRJY29uICpuZ0lmPVwiIXZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlYWxsdG90YXJnZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVEb3duSWNvbiAqbmdJZj1cInZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlYWxsdG90YXJnZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2aWV3Q2hhbmdlZCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVUb1NvdXJjZUFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1vdmVMZWZ0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlTGVmdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlVG9Tb3VyY2VCdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZldG9zb3VyY2UnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vdmVUb1NvdXJjZUljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlTGVmdEljb24gKm5nSWY9XCIhdmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVkb3duc291cmNldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxBbmdsZVVwSWNvbiAqbmdJZj1cInZpZXdDaGFuZ2VkXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlZG93bnNvdXJjZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVG9Tb3VyY2VJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2aWV3Q2hhbmdlZCB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVBbGxUb1NvdXJjZUFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1vdmVBbGxMZWZ0RGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQWxsTGVmdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidtb3ZlQWxsVG9Tb3VyY2VCdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZlYWxsdG9zb3VyY2UnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1vdmVBbGxUb1NvdXJjZUljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlTGVmdEljb24gKm5nSWY9XCIhdmlld0NoYW5nZWRcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ21vdmVhbGx0b3NvdXJjZXRpY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVVcEljb24gKm5nSWY9XCJ2aWV3Q2hhbmdlZFwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWFsbHRvc291cmNldGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVBbGxUb1NvdXJjZUljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZpZXdDaGFuZ2VkIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1waWNrbGlzdC1saXN0LWNvbnRhaW5lciBwLXBpY2tsaXN0LXRhcmdldC1saXN0LWNvbnRhaW5lclwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0V3JhcHBlcidcIiBbYXR0ci5kYXRhLXBjLWdyb3VwLXNlY3Rpb25dPVwiJ2xpc3R3cmFwcGVyJ1wiPlxuICAgICAgICAgICAgICAgIDxwLWxpc3Rib3hcbiAgICAgICAgICAgICAgICAgICAgI3RhcmdldGxpc3RcbiAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJ0YXJnZXRcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkSXRlbXNUYXJnZXRcIlxuICAgICAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWRUYXJnZXQgKyAnX2xpc3QnXCJcbiAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwidGFyZ2V0U3R5bGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3RyaXBlZF09XCJzdHJpcGVkUm93c1wiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIChvbkZvY3VzKT1cIm9uTGlzdEZvY3VzKCRldmVudCwgVEFSR0VUX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQmx1cik9XCJvbkxpc3RCbHVyKCRldmVudCwgVEFSR0VUX0xJU1QpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25JdGVtS2V5RG93bigkZXZlbnQsIHNlbGVjdGVkSXRlbXNUYXJnZXQsIG9uVGFyZ2V0U2VsZWN0LCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICAob25EYmxDbGljayk9XCJvblRhcmdldEl0ZW1EYmxDbGljaygpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW21ldGFLZXlTZWxlY3Rpb25dPVwibWV0YUtleVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9PcHRpb25Gb2N1c109XCJhdXRvT3B0aW9uRm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cImZpbHRlckJ5XCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlckJ5XT1cImZpbHRlckJ5XCJcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlckxvY2FsZV09XCJmaWx0ZXJMb2NhbGVcIlxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyUGxhY2VIb2xkZXJdPVwidGFyZ2V0RmlsdGVyUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhcmdldEhlYWRlclRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YXJnZXRIZWFkZXJUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpdGVtIGxldC1pdGVtIGxldC1pbmRleD1cImluZGV4XCIgbGV0LXNlbGVjdGVkPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbVRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXg6IGluZGV4LCBzZWxlY3RlZDogc2VsZWN0ZWQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9wLWxpc3Rib3g+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLXBpY2tsaXN0LWNvbnRyb2xzIHAtcGlja2xpc3QtdGFyZ2V0LWNvbnRyb2xzXCIgKm5nSWY9XCJzaG93VGFyZ2V0Q29udHJvbHNcIiBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldENvbnRyb2xzJ1wiIFthdHRyLmRhdGEtcGMtZ3JvdXAtc2VjdGlvbl09XCInY29udHJvbHMnXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlVXBBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YXJnZXRNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlVXAodGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZVVwQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZXVwJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlVXBJY29uICpuZ0lmPVwiIW1vdmVVcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXVwaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb3ZlVXBJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW92ZVRvcEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhcmdldE1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVUb3AodGFyZ2V0bGlzdCwgdGFyZ2V0LCBzZWxlY3RlZEl0ZW1zVGFyZ2V0LCBvblRhcmdldFJlb3JkZXIsIFRBUkdFVF9MSVNUKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGFyZ2V0TW92ZVRvcEJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYnV0dG9uUHJvcHNdPVwiZ2V0QnV0dG9uUHJvcHMoJ21vdmV0b3AnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3VibGVVcEljb24gKm5nSWY9XCIhbW92ZVRvcEljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZXRvcGljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZVRvcEljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb3ZlRG93bkFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRhcmdldE1vdmVEaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVEb3duKHRhcmdldGxpc3QsIHRhcmdldCwgc2VsZWN0ZWRJdGVtc1RhcmdldCwgb25UYXJnZXRSZW9yZGVyLCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldE1vdmVEb3duQnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtidXR0b25Qcm9wc109XCJnZXRCdXR0b25Qcm9wcygnbW92ZWRvd24nKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QW5nbGVEb3duSWNvbiAqbmdJZj1cIiFtb3ZlRG93bkljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWRvd25pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm1vdmVEb3duSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vdmVCb3R0b21BcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHk9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0YXJnZXRNb3ZlRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZlQm90dG9tKHRhcmdldGxpc3QsIHRhcmdldCwgc2VsZWN0ZWRJdGVtc1RhcmdldCwgb25UYXJnZXRSZW9yZGVyLCBUQVJHRVRfTElTVClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3RhcmdldE1vdmVCb3R0b21CdXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2J1dHRvblByb3BzXT1cImdldEJ1dHRvblByb3BzKCdtb3ZlYm90dG9tJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFuZ2xlRG91YmxlRG93bkljb24gKm5nSWY9XCIhbW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInbW92ZWJvdHRvbWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwibW92ZUJvdHRvbUljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1BpY2tMaXN0U3R5bGVdXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tMaXN0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSBzb3VyY2UgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgZm9yIHRoZSB0YXJnZXQgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXQ6IGFueVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRleHQgZm9yIHRoZSBzb3VyY2UgbGlzdCBjYXB0aW9uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc291cmNlSGVhZGVyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gMDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIHJpZ2h0IGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSByaWdodEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gbGVmdCBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGVmdEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gYWxsIHJpZ2h0IGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhbGxSaWdodEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gYWxsIGxlZnQgYnV0dG9uIGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFsbExlZnRCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIHVwIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB1cEJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gZG93biBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZG93bkJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIG1vdmUgdG8gdG9wIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0b3BCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGEgc3RyaW5nIHRoYXQgbGFiZWxzIHRoZSBtb3ZlIHRvIGJvdHRvbSBidXR0b24gZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYm90dG9tQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGV4dCBmb3IgdGhlIHRhcmdldCBsaXN0IGNhcHRpb25cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRIZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQgb3JkZXJsaXN0IGFkanVzdHMgaXRzIGNvbnRyb2xzIGJhc2VkIG9uIHNjcmVlbiBzaXplLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByZXNwb25zaXZlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gc3BlY2lmaWVkIGRpc3BsYXlzIGFuIGlucHV0IGZpZWxkIHRvIGZpbHRlciB0aGUgaXRlbXMgb24ga2V5dXAgYW5kIGRlY2lkZXMgd2hpY2ggZmllbGQgdG8gc2VhcmNoIChBY2NlcHRzIG11bHRpcGxlIGZpZWxkcyB3aXRoIGEgY29tbWEpLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTG9jYWxlIHRvIHVzZSBpbiBmaWx0ZXJpbmcuIFRoZSBkZWZhdWx0IGxvY2FsZSBpcyB0aGUgaG9zdCBlbnZpcm9ubWVudCdzIGN1cnJlbnQgbG9jYWxlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlckxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBkb20gb3BlcmF0aW9ucyBieSBkZWxlZ2F0aW5nIHRvIG5nRm9yVHJhY2tCeSwgZGVmYXVsdCBhbGdvcml0aG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuIFVzZSBzb3VyY2VUcmFja0J5IG9yIHRhcmdldFRyYWNrQnkgaW4gY2FzZSBkaWZmZXJlbnQgYWxnb3JpdGhtcyBhcmUgbmVlZGVkIHBlciBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRyYWNrQnk6IEZ1bmN0aW9uID0gKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSkgPT4gaXRlbTtcbiAgICAvKipcbiAgICAgKiBGdW5jdGlvbiB0byBvcHRpbWl6ZSB0aGUgZG9tIG9wZXJhdGlvbnMgYnkgZGVsZWdhdGluZyB0byBuZ0ZvclRyYWNrQnkgaW4gc291cmNlIGxpc3QsIGRlZmF1bHQgYWxnb3JpdGhtIGNoZWNrcyBmb3Igb2JqZWN0IGlkZW50aXR5LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNvdXJjZVRyYWNrQnk6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBkb20gb3BlcmF0aW9ucyBieSBkZWxlZ2F0aW5nIHRvIG5nRm9yVHJhY2tCeSBpbiB0YXJnZXQgbGlzdCwgZGVmYXVsdCBhbGdvcml0aG0gY2hlY2tzIGZvciBvYmplY3QgaWRlbnRpdHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdGFyZ2V0VHJhY2tCeTogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBzaG93IGZpbHRlciBpbnB1dCBmb3Igc291cmNlIGxpc3Qgd2hlbiBmaWx0ZXJCeSBpcyBlbmFibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U291cmNlRmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgZmlsdGVyIGlucHV0IGZvciB0YXJnZXQgbGlzdCB3aGVuIGZpbHRlckJ5IGlzIGVuYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUYXJnZXRGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaG93IG11bHRpcGxlIGl0ZW1zIGNhbiBiZSBzZWxlY3RlZCwgd2hlbiB0cnVlIG1ldGFLZXkgbmVlZHMgdG8gYmUgcHJlc3NlZCB0byBzZWxlY3Qgb3IgdW5zZWxlY3QgYW4gaXRlbSBhbmQgd2hlbiBzZXQgdG8gZmFsc2Ugc2VsZWN0aW9uIG9mIGVhY2ggaXRlbSBjYW4gYmUgdG9nZ2xlZCBpbmRpdmlkdWFsbHkuIE9uIHRvdWNoIGVuYWJsZWQgZGV2aWNlcywgbWV0YUtleVNlbGVjdGlvbiBpcyB0dXJuZWQgb2ZmIGF1dG9tYXRpY2FsbHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG1ldGFLZXlTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBkcmFnZHJvcCBiYXNlZCByZW9yZGVyaW5nLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBkcmFnZHJvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHN0eWxlOiB7IFtrbGFzczogc3RyaW5nXTogYW55IH0gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgc291cmNlIGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2VTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgdGFyZ2V0IGxpc3QgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRTdHlsZTogYW55O1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zIG9mIHNvdXJjZSBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93U291cmNlQ29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBidXR0b25zIG9mIHRhcmdldCBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93VGFyZ2V0Q29udHJvbHM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgb24gc291cmNlIGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzb3VyY2VGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFBsYWNlaG9sZGVyIHRleHQgb24gdGFyZ2V0IGZpbHRlciBpbnB1dC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0YXJnZXRGaWx0ZXJQbGFjZWhvbGRlcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgZmlsdGVyIGlucHV0IG9mIHNvdXJjZSBsaXN0LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGFyaWFTb3VyY2VGaWx0ZXJMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgYSBzdHJpbmcgdGhhdCBsYWJlbHMgdGhlIGZpbHRlciBpbnB1dCBvZiB0YXJnZXQgbGlzdC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcmlhVGFyZ2V0RmlsdGVyTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgaXRlbXMgYXJlIGZpbHRlcmVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGZpbHRlck1hdGNoTW9kZTogJ2NvbnRhaW5zJyB8ICdzdGFydHNXaXRoJyB8ICdlbmRzV2l0aCcgfCAnZXF1YWxzJyB8ICdub3RFcXVhbHMnIHwgJ2luJyB8ICdsdCcgfCAnbHRlJyB8ICdndCcgfCAnZ3RlJyA9ICdjb250YWlucyc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBkaXNwbGF5cyByb3dzIHdpdGggYWx0ZXJuYXRpbmcgY29sb3JzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzdHJpcGVkUm93czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBLZWVwcyBzZWxlY3Rpb24gb24gdGhlIHRyYW5zZmVyIGxpc3QuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGtlZXBTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBIZWlnaHQgb2YgdGhlIHZpZXdwb3J0LCBhIHNjcm9sbGJhciBpcyBkZWZpbmVkIGlmIGhlaWdodCBvZiBsaXN0IGV4Y2VlZHMgdGhpcyB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzY3JvbGxIZWlnaHQ6IHN0cmluZyA9ICcxNHJlbSc7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBmb2N1cyBvbiB0aGUgZmlyc3QgdmlzaWJsZSBvciBzZWxlY3RlZCBlbGVtZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvT3B0aW9uRm9jdXM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIEJ1dHRvbiBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYnV0dG9uUHJvcHM6IEJ1dHRvblByb3BzID0geyBzZXZlcml0eTogJ3NlY29uZGFyeScgfTtcbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIHVwIGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlVXBCdXR0b25Qcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIHRvcCBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZVRvcEJ1dHRvblByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiBcdFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIG1vdmUgZG93biBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZURvd25CdXR0b25Qcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIGJvdHRvbSBidXR0b24gaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbW92ZUJvdHRvbUJ1dHRvblByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiBcdFVzZWQgdG8gcGFzcyBhbGwgcHJvcGVydGllcyBvZiB0aGUgQnV0dG9uUHJvcHMgdG8gdGhlIG1vdmUgdG8gdGFyZ2V0IGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlVG9UYXJnZXRQcm9wczogQnV0dG9uUHJvcHM7XG4gICAgLyoqXG4gICAgICogXHRVc2VkIHRvIHBhc3MgYWxsIHByb3BlcnRpZXMgb2YgdGhlIEJ1dHRvblByb3BzIHRvIHRoZSBtb3ZlIGFsbCB0byB0YXJnZXQgYnV0dG9uIGluc2lkZSB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vdmVBbGxUb1RhcmdldFByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiAgVXNlZCB0byBwYXNzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBCdXR0b25Qcm9wcyB0byB0aGUgbW92ZSB0byBzb3VyY2UgYnV0dG9uIGluc2lkZSB0aGUgY29tcG9uZW50LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1vdmVUb1NvdXJjZVByb3BzOiBCdXR0b25Qcm9wcztcbiAgICAvKipcbiAgICAgKiAgVXNlZCB0byBwYXNzIGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBCdXR0b25Qcm9wcyB0byB0aGUgbW92ZSBhbGwgdG8gc291cmNlIGJ1dHRvbiBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb3ZlQWxsVG9Tb3VyY2VQcm9wczogQnV0dG9uUHJvcHM7XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgdGhlIHdpZHRoIG9mIHRoZSBzY3JlZW4gYXQgd2hpY2ggdGhlIGNvbXBvbmVudCBzaG91bGQgY2hhbmdlIGl0cyBiZWhhdmlvci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBnZXQgYnJlYWtwb2ludCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDtcbiAgICB9XG4gICAgc2V0IGJyZWFrcG9pbnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodmFsdWUgIT09IHRoaXMuX2JyZWFrcG9pbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TWVkaWEoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRNZWRpYSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGl0ZW1zIGFyZSBtb3ZlZCBmcm9tIHRhcmdldCB0byBzb3VyY2UuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50fSBldmVudCAtIEN1c3RvbSBtb3ZlIHRvIHNvdXJjZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVUb1NvdXJjZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlVG9Tb3VyY2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbGwgaXRlbXMgYXJlIG1vdmVkIGZyb20gdGFyZ2V0IHRvIHNvdXJjZS5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0TW92ZUFsbFRvU291cmNlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIG1vdmUgYWxsIHRvIHNvdXJjZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlQWxsVG9Tb3VyY2U6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVBbGxUb1NvdXJjZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlQWxsVG9Tb3VyY2VFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBhbGwgaXRlbXMgYXJlIG1vdmVkIGZyb20gc291cmNlIHRvIHRhcmdldC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0TW92ZUFsbFRvVGFyZ2V0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIG1vdmUgYWxsIHRvIHRhcmdldCBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Nb3ZlQWxsVG9UYXJnZXQ6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdE1vdmVBbGxUb1RhcmdldEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlQWxsVG9UYXJnZXRFdmVudD4oKTtcbiAgICAvKipcbiAgICAgKiBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiBpdGVtcyBhcmUgbW92ZWQgZnJvbSBzb3VyY2UgdG8gdGFyZ2V0LlxuICAgICAqIEBwYXJhbSB7UGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudH0gZXZlbnQgLSBDdXN0b20gbW92ZSB0byB0YXJnZXQgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTW92ZVRvVGFyZ2V0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RNb3ZlVG9UYXJnZXRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0TW92ZVRvVGFyZ2V0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCB3aXRoaW4gc291cmNlIGxpc3QuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFNvdXJjZVJlb3JkZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gc291cmNlIHJlb3JkZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU291cmNlUmVvcmRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlUmVvcmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RTb3VyY2VSZW9yZGVyRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHJlb3JkZXJlZCB3aXRoaW4gdGFyZ2V0IGxpc3QuXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFRhcmdldFJlb3JkZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFyZ2V0IHJlb3JkZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVGFyZ2V0UmVvcmRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0VGFyZ2V0UmVvcmRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRSZW9yZGVyRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHNlbGVjdGVkIHdpdGhpbiBzb3VyY2UgbGlzdC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0U291cmNlU2VsZWN0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHNvdXJjZSBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uU291cmNlU2VsZWN0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RTb3VyY2VTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlU2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gaXRlbXMgYXJlIHNlbGVjdGVkIHdpdGhpbiB0YXJnZXQgbGlzdC5cbiAgICAgKiBAcGFyYW0ge1BpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHRhcmdldCBzZWxlY3QgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uVGFyZ2V0U2VsZWN0OiBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRTZWxlY3RFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBpY2tMaXN0VGFyZ2V0U2VsZWN0RXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIHNvdXJjZSBsaXN0IGlzIGZpbHRlcmVkXG4gICAgICogQHBhcmFtIHtQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50fSBldmVudCAtIEN1c3RvbSBzb3VyY2UgZmlsdGVyIGV2ZW50LlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvblNvdXJjZUZpbHRlcjogRXZlbnRFbWl0dGVyPFBpY2tMaXN0U291cmNlRmlsdGVyRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxQaWNrTGlzdFNvdXJjZUZpbHRlckV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSB0YXJnZXQgbGlzdCBpcyBmaWx0ZXJlZFxuICAgICAqIEBwYXJhbSB7UGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFyZ2V0IGZpbHRlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25UYXJnZXRGaWx0ZXI6IEV2ZW50RW1pdHRlcjxQaWNrTGlzdFRhcmdldEZpbHRlckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGlja0xpc3RUYXJnZXRGaWx0ZXJFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSBsaXN0IGlzIGZvY3VzZWRcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCAtIEJyb3dzZXIgZXZlbnQuXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIGxpc3QgaXMgYmx1cnJlZFxuICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IC0gQnJvd3NlciBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25CbHVyOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3NvdXJjZWxpc3QnKSBsaXN0Vmlld1NvdXJjZUNoaWxkOiBMaXN0Ym94O1xuXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0bGlzdCcpIGxpc3RWaWV3VGFyZ2V0Q2hpbGQ6IExpc3Rib3g7XG5cbiAgICBAVmlld0NoaWxkKCdzb3VyY2VGaWx0ZXInKSBzb3VyY2VGaWx0ZXJWaWV3Q2hpbGQ6IE51bGxhYmxlPEVsZW1lbnRSZWY+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFyZ2V0RmlsdGVyJykgdGFyZ2V0RmlsdGVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIGdldEJ1dHRvblByb3BzKGRpcmVjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBjYXNlICdtb3ZldXAnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZVVwQnV0dG9uUHJvcHMgfTtcbiAgICAgICAgICAgIGNhc2UgJ21vdmV0b3AnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZVRvcEJ1dHRvblByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlZG93bic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5idXR0b25Qcm9wcywgLi4udGhpcy5tb3ZlRG93bkJ1dHRvblByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlYm90dG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVCb3R0b21CdXR0b25Qcm9wcyB9O1xuICAgICAgICAgICAgY2FzZSAnbW92ZXRvdGFyZ2V0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVUb1RhcmdldFByb3BzIH07XG4gICAgICAgICAgICBjYXNlICdtb3ZlYWxsdG90YXJnZXQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLnRoaXMuYnV0dG9uUHJvcHMsIC4uLnRoaXMubW92ZUFsbFRvVGFyZ2V0UHJvcHMgfTtcbiAgICAgICAgICAgIGNhc2UgJ21vdmV0b3NvdXJjZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5idXR0b25Qcm9wcywgLi4udGhpcy5tb3ZlVG9Tb3VyY2VQcm9wcyB9O1xuICAgICAgICAgICAgY2FzZSAnbW92ZWFsbHRvc291cmNlJzpcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi50aGlzLmJ1dHRvblByb3BzLCAuLi50aGlzLm1vdmVBbGxUb1NvdXJjZVByb3BzIH07XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1dHRvblByb3BzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVVcEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnVwQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVVwIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlVG9wQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b3BCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnRvcEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVUb3AgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVEb3duQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb3duQnV0dG9uQXJpYUxhYmVsID8gdGhpcy5kb3duQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZURvd24gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVCb3R0b21BcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvdHRvbUJ1dHRvbkFyaWFMYWJlbCA/IHRoaXMuYm90dG9tQnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZURvd24gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IG1vdmVUb1RhcmdldEFyaWFMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmlnaHRCdXR0b25BcmlhTGFiZWwgPyB0aGlzLnJpZ2h0QnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVRvVGFyZ2V0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlQWxsVG9UYXJnZXRBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbFJpZ2h0QnV0dG9uQXJpYUxhYmVsID8gdGhpcy5hbGxSaWdodEJ1dHRvbkFyaWFMYWJlbCA6IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEgPyB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhLm1vdmVBbGxUb1RhcmdldCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBnZXQgbW92ZVRvU291cmNlQXJpYUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWZ0QnV0dG9uQXJpYUxhYmVsID8gdGhpcy5sZWZ0QnV0dG9uQXJpYUxhYmVsIDogdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubW92ZVRvU291cmNlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBtb3ZlQWxsVG9Tb3VyY2VBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbExlZnRCdXR0b25BcmlhTGFiZWwgPyB0aGlzLmFsbExlZnRCdXR0b25BcmlhTGFiZWwgOiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5tb3ZlQWxsVG9Tb3VyY2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgZ2V0IGlkU291cmNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pZCArICdfc291cmNlJztcbiAgICB9XG5cbiAgICBnZXQgaWRUYXJnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJ190YXJnZXQnO1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkT3B0aW9uSWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCAhPT0gLTEgPyB0aGlzLmZvY3VzZWRPcHRpb25JbmRleCA6IG51bGw7XG4gICAgfVxuXG4gICAgX2JyZWFrcG9pbnQ6IHN0cmluZyA9ICc5NjBweCc7XG5cbiAgICBwdWJsaWMgdmlzaWJsZU9wdGlvbnNTb3VyY2U6IGFueVtdIHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuICAgIHB1YmxpYyB2aXNpYmxlT3B0aW9uc1RhcmdldDogYW55W10gfCB1bmRlZmluZWQgfCBudWxsO1xuXG4gICAgc2VsZWN0ZWRJdGVtc1NvdXJjZTogYW55W10gPSBbXTtcblxuICAgIHNlbGVjdGVkSXRlbXNUYXJnZXQ6IGFueVtdID0gW107XG5cbiAgICByZW9yZGVyZWRMaXN0RWxlbWVudDogYW55O1xuXG4gICAgbW92ZWRVcDogTnVsbGFibGU8Ym9vbGVhbj47XG5cbiAgICBtb3ZlZERvd246IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgaXRlbVRvdWNoZWQ6IE51bGxhYmxlPGJvb2xlYW4+O1xuXG4gICAgc3R5bGVFbGVtZW50OiBhbnk7XG5cbiAgICBpZDogc3RyaW5nID0gdXVpZCgncG5faWRfJyk7XG5cbiAgICBmaWx0ZXJWYWx1ZVNvdXJjZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIGZpbHRlclZhbHVlVGFyZ2V0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgZnJvbUxpc3RUeXBlOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgc291cmNlRmlsdGVyT3B0aW9uczogTnVsbGFibGU8UGlja0xpc3RGaWx0ZXJPcHRpb25zPjtcblxuICAgIHRhcmdldEZpbHRlck9wdGlvbnM6IE51bGxhYmxlPFBpY2tMaXN0RmlsdGVyT3B0aW9ucz47XG5cbiAgICByZWFkb25seSBTT1VSQ0VfTElTVDogbnVtYmVyID0gLTE7XG5cbiAgICByZWFkb25seSBUQVJHRVRfTElTVDogbnVtYmVyID0gMTtcblxuICAgIHdpbmRvdzogV2luZG93O1xuXG4gICAgbWVkaWE6IE1lZGlhUXVlcnlMaXN0IHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICAgIHZpZXdDaGFuZ2VkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgZm9jdXNlZE9wdGlvbkluZGV4OiBhbnkgPSAtMTtcblxuICAgIGZvY3VzZWRPcHRpb246IGFueSB8IHVuZGVmaW5lZDtcblxuICAgIGZvY3VzZWQ6IGFueSA9IHtcbiAgICAgICAgc291cmNlTGlzdDogZmFsc2UsXG4gICAgICAgIHRhcmdldExpc3Q6IGZhbHNlXG4gICAgfTtcblxuICAgIF9jb21wb25lbnRTdHlsZSA9IGluamVjdChQaWNrTGlzdFN0eWxlKTtcblxuICAgIG1lZGlhQ2hhbmdlTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIGZpbHRlclNlcnZpY2UgPSBpbmplY3QoRmlsdGVyU2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZSkge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVTdHlsZSgpO1xuICAgICAgICAgICAgdGhpcy5pbml0TWVkaWEoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICB0aGlzLnNvdXJjZUZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMuZmlsdGVyU291cmNlKHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZXNldDogKCkgPT4gdGhpcy5yZXNldFNvdXJjZUZpbHRlcigpXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnRhcmdldEZpbHRlck9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyOiAodmFsdWUpID0+IHRoaXMuZmlsdGVyVGFyZ2V0KHZhbHVlKSxcbiAgICAgICAgICAgICAgICByZXNldDogKCkgPT4gdGhpcy5yZXNldFRhcmdldEZpbHRlcigpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGl0ZW0gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2l0ZW0nKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gc291cmNlIGhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlSGVhZGVyJykgc291cmNlSGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gdGFyZ2V0IGhlYWRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgndGFyZ2V0SGVhZGVyJykgdGFyZ2V0SGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gc291cmNlIGZpbHRlciB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlRmlsdGVyJykgc291cmNlRmlsdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgb3B0aW9uczogUGlja0xpc3RGaWx0ZXJPcHRpb25zIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHRhcmdldCBmaWx0ZXIgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RhcmdldEZpbHRlcicpIHRhcmdldEZpbHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7IG9wdGlvbnM6IFBpY2tMaXN0RmlsdGVyT3B0aW9ucyB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBlbXB0eSBtZXNzYWdlIHdoZW4gc291cmNlIGlzIGVtcHR5IHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdlbXB0eW1lc3NhZ2Vzb3VyY2UnKSBlbXB0eU1lc3NhZ2VTb3VyY2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBlbXB0eSBmaWx0ZXIgbWVzc2FnZSB3aGVuIHNvdXJjZSBpcyBlbXB0eSB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHlmaWx0ZXJtZXNzYWdlc291cmNlJykgZW1wdHlGaWx0ZXJNZXNzYWdlU291cmNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZW1wdHkgbWVzc2FnZSB3aGVuIHRhcmdldCBpcyBlbXB0eSB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnZW1wdHltZXNzYWdldGFyZ2V0JykgZW1wdHlNZXNzYWdlVGFyZ2V0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gZW1wdHkgZmlsdGVyIG1lc3NhZ2Ugd2hlbiB0YXJnZXQgaXMgZW1wdHkgdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5ZmlsdGVybWVzc2FnZXRhcmdldCcpIGVtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgdXAgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXVwaWNvbicpIG1vdmVVcEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSB0b3AgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXRvcGljb24nKSBtb3ZlVG9wSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogYm9vbGVhbiB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBtb3ZlIGRvd24gaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZWRvd25pY29uJykgbW92ZURvd25JY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgYm90dG9tIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmVib3R0b21pY29uJykgbW92ZUJvdHRvbUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSB0byB0YXJnZXQgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnbW92ZXRvdGFyZ2V0aWNvbicpIG1vdmVUb1RhcmdldEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gbW92ZSBhbGwgdG8gdGFyZ2V0IGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmVhbGx0b3RhcmdldGljb24nKSBtb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgdG8gc291cmNlIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ21vdmV0b3NvdXJjZWljb24nKSBtb3ZlVG9Tb3VyY2VJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBib29sZWFuIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIG1vdmUgYWxsIHRvIHNvdXJjZSBpY29uIHRlbXBsYXRlLlxuICAgICAqIEBncm91cCBUZW1wbGF0ZXNcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKCdtb3ZlYWxsdG9zb3VyY2VpY29uJykgbW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogYm9vbGVhbiB9PjtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSB0YXJnZXQgZmlsdGVyIGljb24gdGVtcGxhdGUuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ3RhcmdldGZpbHRlcmljb24nKSB0YXJnZXRGaWx0ZXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHsgb3B0aW9uczogUGlja0xpc3RGaWx0ZXJPcHRpb25zIH0+O1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIHNvdXJjZSBmaWx0ZXIgaWNvbiB0ZW1wbGF0ZS5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnc291cmNlZmlsdGVyaWNvbicpIHNvdXJjZUZpbHRlckljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyBvcHRpb25zOiBQaWNrTGlzdEZpbHRlck9wdGlvbnMgfT47XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgICh0aGlzLnRlbXBsYXRlcyBhcyBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT4pLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdpdGVtJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzb3VyY2VIZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXRIZWFkZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldEhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzb3VyY2VGaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUZpbHRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXRGaWx0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldEZpbHRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eW1lc3NhZ2Vzb3VyY2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5TWVzc2FnZVNvdXJjZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eWZpbHRlcm1lc3NhZ2Vzb3VyY2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5RmlsdGVyTWVzc2FnZVNvdXJjZVRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eW1lc3NhZ2V0YXJnZXQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5TWVzc2FnZVRhcmdldFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdlbXB0eWZpbHRlcm1lc3NhZ2V0YXJnZXQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5RmlsdGVyTWVzc2FnZVRhcmdldFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZldXBpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlVXBJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmV0b3BpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG9wSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlZG93bmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVEb3duSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlYm90dG9taWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUJvdHRvbUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbW92ZXRvdGFyZ2V0aWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVRvVGFyZ2V0SWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdtb3ZlYWxsdG90YXJnZXRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQWxsVG9UYXJnZXRJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ21vdmV0b3NvdXJjZWljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVUb1NvdXJjZUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbW92ZWFsbHRvc291cmNlaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFsbFRvU291cmNlSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXRmaWx0ZXJpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRGaWx0ZXJJY29uVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3NvdXJjZWZpbHRlcmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZUZpbHRlckljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5tb3ZlZFVwIHx8IHRoaXMubW92ZWREb3duKSB7XG4gICAgICAgICAgICBsZXQgbGlzdEl0ZW1zID0gZmluZCh0aGlzLnJlb3JkZXJlZExpc3RFbGVtZW50LCAnbGkucC1oaWdobGlnaHQnKTtcbiAgICAgICAgICAgIGxldCBsaXN0SXRlbTtcblxuICAgICAgICAgICAgaWYgKHRoaXMubW92ZWRVcCkgbGlzdEl0ZW0gPSBsaXN0SXRlbXNbMF07XG4gICAgICAgICAgICBlbHNlIGxpc3RJdGVtID0gbGlzdEl0ZW1zW2xpc3RJdGVtcy5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgc2Nyb2xsSW5WaWV3KHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQsIGxpc3RJdGVtKTtcbiAgICAgICAgICAgIHRoaXMubW92ZWRVcCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5tb3ZlZERvd24gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZXZlbnQ6IEV2ZW50IHwgYW55LCBpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBsaXN0VHlwZTogbnVtYmVyLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGl0ZW1JZD86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5maW5kSW5kZXhJbkxpc3QoaXRlbSwgc2VsZWN0ZWRJdGVtcyk7XG4gICAgICAgIGlmIChpdGVtSWQpIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4ID0gaXRlbUlkO1xuICAgICAgICBsZXQgc2VsZWN0ZWQgPSBpbmRleCAhPSAtMTtcbiAgICAgICAgbGV0IG1ldGFTZWxlY3Rpb24gPSB0aGlzLml0ZW1Ub3VjaGVkID8gZmFsc2UgOiB0aGlzLm1ldGFLZXlTZWxlY3Rpb247XG5cbiAgICAgICAgaWYgKG1ldGFTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGxldCBtZXRhS2V5ID0gKDxLZXlib2FyZEV2ZW50PmV2ZW50KS5tZXRhS2V5IHx8ICg8S2V5Ym9hcmRFdmVudD5ldmVudCkuY3RybEtleSB8fCAoPEtleWJvYXJkRXZlbnQ+ZXZlbnQpLnNoaWZ0S2V5O1xuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgbWV0YUtleSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBzZWxlY3RlZEl0ZW1zLmZpbHRlcigoXywgaSkgPT4gaSAhPT0gaW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKF8sIGkpID0+IGkgIT09IGluZGV4KTsgLy8gQ3JlYXRpbmcgYSBuZXcgYXJyYXkgd2l0aG91dCB0aGUgc2VsZWN0ZWQgaXRlbVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgY2FsbGJhY2suZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcblxuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25PcHRpb25Nb3VzZURvd24oaW5kZXgsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkW2xpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUID8gJ3NvdXJjZUxpc3QnIDogJ3RhcmdldExpc3QnXSA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4ID0gaW5kZXg7XG4gICAgfVxuXG4gICAgb25Tb3VyY2VJdGVtRGJsQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vdmVSaWdodCgpO1xuICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uVGFyZ2V0SXRlbURibENsaWNrKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5tb3ZlTGVmdCgpO1xuICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBxdWVyeSA9ICg8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQpLnZhbHVlO1xuICAgICAgICBpZiAobGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHRoaXMuZmlsdGVyU291cmNlKHF1ZXJ5KTtcbiAgICAgICAgZWxzZSBpZiAobGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpIHRoaXMuZmlsdGVyVGFyZ2V0KHF1ZXJ5KTtcbiAgICB9XG5cbiAgICBmaWx0ZXJTb3VyY2UodmFsdWU6IGFueSA9ICcnKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgPSB2YWx1ZS50cmltKCkudG9Mb2NhbGVMb3dlckNhc2UodGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgIH1cblxuICAgIGZpbHRlclRhcmdldCh2YWx1ZTogYW55ID0gJycpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA9IHZhbHVlLnRyaW0oKS50b0xvY2FsZUxvd2VyQ2FzZSh0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnRhcmdldCwgdGhpcy5UQVJHRVRfTElTVCk7XG4gICAgfVxuXG4gICAgZmlsdGVyKGRhdGE6IGFueVtdLCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGxldCBzZWFyY2hGaWVsZHMgPSAoPHN0cmluZz50aGlzLmZpbHRlckJ5KS5zcGxpdCgnLCcpO1xuXG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIoZGF0YSwgc2VhcmNoRmllbGRzLCB0aGlzLmZpbHRlclZhbHVlU291cmNlLCB0aGlzLmZpbHRlck1hdGNoTW9kZSwgdGhpcy5maWx0ZXJMb2NhbGUpO1xuICAgICAgICAgICAgdGhpcy5vblNvdXJjZUZpbHRlci5lbWl0KHsgcXVlcnk6IHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UsIHZhbHVlOiB0aGlzLnZpc2libGVPcHRpb25zU291cmNlIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0ID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcihkYXRhLCBzZWFyY2hGaWVsZHMsIHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQsIHRoaXMuZmlsdGVyTWF0Y2hNb2RlLCB0aGlzLmZpbHRlckxvY2FsZSk7XG4gICAgICAgICAgICB0aGlzLm9uVGFyZ2V0RmlsdGVyLmVtaXQoeyBxdWVyeTogdGhpcy5maWx0ZXJWYWx1ZVRhcmdldCwgdmFsdWU6IHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0l0ZW1WaXNpYmxlKGl0ZW06IGFueSwgbGlzdFR5cGU6IG51bWJlcik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAobGlzdFR5cGUgPT0gdGhpcy5TT1VSQ0VfTElTVCkgcmV0dXJuIHRoaXMuaXNWaXNpYmxlSW5MaXN0KDxhbnlbXT50aGlzLnZpc2libGVPcHRpb25zU291cmNlLCBpdGVtLCA8c3RyaW5nPnRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpO1xuICAgICAgICBlbHNlIHJldHVybiB0aGlzLmlzVmlzaWJsZUluTGlzdCg8YW55W10+dGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCwgaXRlbSwgPHN0cmluZz50aGlzLmZpbHRlclZhbHVlVGFyZ2V0KTtcbiAgICB9XG5cbiAgICBpc0VtcHR5KGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGxpc3RUeXBlID09IHRoaXMuU09VUkNFX0xJU1QpIHJldHVybiB0aGlzLmZpbHRlclZhbHVlU291cmNlID8gIXRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgfHwgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5sZW5ndGggPT09IDAgOiAhdGhpcy5zb3VyY2UgfHwgdGhpcy5zb3VyY2UubGVuZ3RoID09PSAwO1xuICAgICAgICBlbHNlIHJldHVybiB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gIXRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgfHwgdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldC5sZW5ndGggPT09IDAgOiAhdGhpcy50YXJnZXQgfHwgdGhpcy50YXJnZXQubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIGlzVmlzaWJsZUluTGlzdChkYXRhOiBhbnlbXSwgaXRlbTogYW55LCBmaWx0ZXJWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZSAmJiBmaWx0ZXJWYWx1ZS50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PSBkYXRhW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JdGVtVG91Y2hFbmQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLml0ZW1Ub3VjaGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRCeUluZGV4SW5MaXN0KGl0ZW1zOiBhbnlbXSwgbGlzdDogYW55KSB7XG4gICAgICAgIHJldHVybiBpdGVtcy5zb3J0KChpdGVtMSwgaXRlbTIpID0+IGZpbmRJbmRleEluTGlzdChpdGVtMSwgbGlzdCkgLSBmaW5kSW5kZXhJbkxpc3QoaXRlbTIsIGxpc3QpKTtcbiAgICB9XG5cbiAgICB2aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKSB7XG4gICAgICAgIHRoaXMubGlzdFZpZXdTb3VyY2VDaGlsZC5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5saXN0Vmlld1RhcmdldENoaWxkLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIG1vdmVVcChsaXN0RWxlbWVudDogYW55LCBsaXN0OiBhbnlbXSwgc2VsZWN0ZWRJdGVtczogYW55W10sIGNhbGxiYWNrOiBFdmVudEVtaXR0ZXI8YW55PiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc29ydEJ5SW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtcywgbGlzdCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdGVkSXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXggLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdFtzZWxlY3RlZEl0ZW1JbmRleCAtIDFdID0gbW92ZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4XSA9IHRlbXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiAoKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgJiYgbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHx8ICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ICYmIGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSkpIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgdGhpcy5tb3ZlZFVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmVkTGlzdEVsZW1lbnQgPSBsaXN0RWxlbWVudDtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlVG9wKGxpc3RFbGVtZW50OiBhbnksIGxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zb3J0QnlJbmRleEluTGlzdChzZWxlY3RlZEl0ZW1zLCBsaXN0KTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRJdGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RlZEl0ZW1zW2ldO1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleDogbnVtYmVyID0gZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgbGlzdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gbGlzdC5zcGxpY2Uoc2VsZWN0ZWRJdGVtSW5kZXgsIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnVuc2hpZnQobW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSkgdGhpcy5maWx0ZXIobGlzdCwgbGlzdFR5cGUpO1xuXG4gICAgICAgICAgICBsaXN0RWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVEb3duKGxpc3RFbGVtZW50OiBhbnksIGxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1zICYmIHNlbGVjdGVkSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy5zb3J0QnlJbmRleEluTGlzdChzZWxlY3RlZEl0ZW1zLCBsaXN0KTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzZWxlY3RlZEl0ZW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHNlbGVjdGVkSXRlbXNbaV07XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4OiBudW1iZXIgPSBmaW5kSW5kZXhJbkxpc3Qoc2VsZWN0ZWRJdGVtLCBsaXN0KTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPSBsaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vdmVkSXRlbSA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGxpc3Rbc2VsZWN0ZWRJdGVtSW5kZXggKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgbGlzdFtzZWxlY3RlZEl0ZW1JbmRleCArIDFdID0gbW92ZWRJdGVtO1xuICAgICAgICAgICAgICAgICAgICBsaXN0W3NlbGVjdGVkSXRlbUluZGV4XSA9IHRlbXA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5kcmFnZHJvcCAmJiAoKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UgJiYgbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHx8ICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ICYmIGxpc3RUeXBlID09PSB0aGlzLlRBUkdFVF9MSVNUKSkpIHRoaXMuZmlsdGVyKGxpc3QsIGxpc3RUeXBlKTtcblxuICAgICAgICAgICAgdGhpcy5tb3ZlZERvd24gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5yZW9yZGVyZWRMaXN0RWxlbWVudCA9IGxpc3RFbGVtZW50O1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVCb3R0b20obGlzdEVsZW1lbnQ6IGFueSwgbGlzdDogYW55W10sIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnNvcnRCeUluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbXMsIGxpc3QpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1tpXTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciA9IGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIGxpc3QpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUluZGV4ICE9IGxpc3QubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbW92ZWRJdGVtID0gbGlzdC5zcGxpY2Uoc2VsZWN0ZWRJdGVtSW5kZXgsIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICBsaXN0LnB1c2gobW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyYWdkcm9wICYmICgodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSAmJiBsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkgfHwgKHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgJiYgbGlzdFR5cGUgPT09IHRoaXMuVEFSR0VUX0xJU1QpKSkgdGhpcy5maWx0ZXIobGlzdCwgbGlzdFR5cGUpO1xuXG4gICAgICAgICAgICBsaXN0RWxlbWVudC5zY3JvbGxUb3AgPSBsaXN0RWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZVJpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlICYmIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZVtpXTtcbiAgICAgICAgICAgICAgICBpZiAoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy50YXJnZXQpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0Py5wdXNoKHRoaXMuc291cmNlPy5zcGxpY2UoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy5zb3VyY2UpLCAxKVswXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2U/LmluY2x1ZGVzKHNlbGVjdGVkSXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2Uuc3BsaWNlKGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1RhcmdldC5lbWl0KHtcbiAgICAgICAgICAgICAgICBpdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQsIC4uLnRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnRhcmdldCwgdGhpcy5UQVJHRVRfTElTVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUFsbFJpZ2h0KCkge1xuICAgICAgICBpZiAodGhpcy5zb3VyY2UpIHtcbiAgICAgICAgICAgIGxldCBtb3ZlZEl0ZW1zID0gW107XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zb3VyY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0l0ZW1WaXNpYmxlKHRoaXMuc291cmNlW2ldLCB0aGlzLlNPVVJDRV9MSVNUKSkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVtb3ZlZEl0ZW0gPSB0aGlzLnNvdXJjZS5zcGxpY2UoaSwgMSlbMF07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0Py5wdXNoKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgbW92ZWRJdGVtcy5wdXNoKHJlbW92ZWRJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Nb3ZlQWxsVG9UYXJnZXQuZW1pdCh7XG4gICAgICAgICAgICAgICAgaXRlbXM6IG1vdmVkSXRlbXNcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ID0gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCwgLi4udGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gW107XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hpbGRNYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG1vdmVMZWZ0KCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0ICYmIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldFtpXTtcbiAgICAgICAgICAgICAgICBpZiAoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy5zb3VyY2UpID09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc291cmNlPy5wdXNoKHRoaXMudGFyZ2V0Py5zcGxpY2UoZmluZEluZGV4SW5MaXN0KHNlbGVjdGVkSXRlbSwgdGhpcy50YXJnZXQpLCAxKVswXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQ/LmluY2x1ZGVzKHNlbGVjdGVkSXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQuc3BsaWNlKGZpbmRJbmRleEluTGlzdChzZWxlY3RlZEl0ZW0sIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQpLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1NvdXJjZS5lbWl0KHtcbiAgICAgICAgICAgICAgICBpdGVtczogdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UsIC4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnNvdXJjZSwgdGhpcy5TT1VSQ0VfTElTVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpZXdDaGlsZE1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZUFsbExlZnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnRhcmdldCkge1xuICAgICAgICAgICAgbGV0IG1vdmVkSXRlbXMgPSBbXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhcmdldC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSXRlbVZpc2libGUodGhpcy50YXJnZXRbaV0sIHRoaXMuVEFSR0VUX0xJU1QpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZW1vdmVkSXRlbSA9IHRoaXMudGFyZ2V0LnNwbGljZShpLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zb3VyY2U/LnB1c2gocmVtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBtb3ZlZEl0ZW1zLnB1c2gocmVtb3ZlZEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uTW92ZUFsbFRvU291cmNlLmVtaXQoe1xuICAgICAgICAgICAgICAgIGl0ZW1zOiBtb3ZlZEl0ZW1zXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSA9IFsuLi50aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UsIC4uLnRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IFtdO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKDxhbnlbXT50aGlzLnNvdXJjZSwgdGhpcy5TT1VSQ0VfTElTVCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMudmlld0NoaWxkTWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGl0ZW06IGFueSwgc2VsZWN0ZWRJdGVtczogYW55W10pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEluZGV4SW5MaXN0KGl0ZW0sIHNlbGVjdGVkSXRlbXMpICE9IC0xO1xuICAgIH1cblxuICAgIGZpbmRJbmRleEluTGlzdChpdGVtOiBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGZpbmRJbmRleEluTGlzdChpdGVtLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICB9XG5cbiAgICBvbkRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPiwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBsZXQgaXNUcmFuc2ZlciA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXI7XG4gICAgICAgIGxldCBkcm9wSW5kZXhlcyA9IHRoaXMuZ2V0RHJvcEluZGV4ZXMoZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4LCBsaXN0VHlwZSwgaXNUcmFuc2ZlciwgZXZlbnQuaXRlbS5kYXRhKTtcblxuICAgICAgICBpZiAobGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QpIHtcbiAgICAgICAgICAgIGlmIChpc1RyYW5zZmVyKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSwgZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4ID0gZmluZEluZGV4SW5MaXN0KGV2ZW50Lml0ZW0uZGF0YSwgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0KTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPSAtMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQuc3BsaWNlKHNlbGVjdGVkSXRlbUluZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5rZWVwU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXNUYXJnZXQucHVzaChldmVudC5pdGVtLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQpIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQuc3BsaWNlKGV2ZW50LnByZXZpb3VzSW5kZXgsIDEpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5vbk1vdmVUb1NvdXJjZS5lbWl0KHsgaXRlbXM6IFtldmVudC5pdGVtLmRhdGFdIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGRyb3BJbmRleGVzLnByZXZpb3VzSW5kZXgsIGRyb3BJbmRleGVzLmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNvdXJjZVJlb3JkZXIuZW1pdCh7IGl0ZW1zOiBbZXZlbnQuaXRlbS5kYXRhXSB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyVmFsdWVTb3VyY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcig8YW55W10+dGhpcy5zb3VyY2UsIHRoaXMuU09VUkNFX0xJU1QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzVHJhbnNmZXIpIHtcbiAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLCBldmVudC5jb250YWluZXIuZGF0YSwgZHJvcEluZGV4ZXMucHJldmlvdXNJbmRleCwgZHJvcEluZGV4ZXMuY3VycmVudEluZGV4KTtcblxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW1JbmRleCA9IGZpbmRJbmRleEluTGlzdChldmVudC5pdGVtLmRhdGEsIHRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtSW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlLnNwbGljZShzZWxlY3RlZEl0ZW1JbmRleCwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMua2VlcFNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0LnB1c2goZXZlbnQuaXRlbS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVPcHRpb25zU291cmNlKSB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLnNwbGljZShldmVudC5wcmV2aW91c0luZGV4LCAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub25Nb3ZlVG9UYXJnZXQuZW1pdCh7IGl0ZW1zOiBbZXZlbnQuaXRlbS5kYXRhXSB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBkcm9wSW5kZXhlcy5wcmV2aW91c0luZGV4LCBkcm9wSW5kZXhlcy5jdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgICAgIHRoaXMub25UYXJnZXRSZW9yZGVyLmVtaXQoeyBpdGVtczogW2V2ZW50Lml0ZW0uZGF0YV0gfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlclZhbHVlVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXIoPGFueVtdPnRoaXMudGFyZ2V0LCB0aGlzLlRBUkdFVF9MSVNUKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTGlzdEZvY3VzKGV2ZW50LCBsaXN0VHlwZSkge1xuICAgICAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25MaXN0Qmx1cihldmVudCwgbGlzdFR5cGUpIHtcbiAgICAgICAgdGhpcy5vbkJsdXIuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgZ2V0TGlzdEVsZW1lbnQobGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gbGlzdFR5cGUgPT09IHRoaXMuU09VUkNFX0xJU1QgPyB0aGlzLmxpc3RWaWV3U291cmNlQ2hpbGQ/LmVsLm5hdGl2ZUVsZW1lbnQgOiB0aGlzLmxpc3RWaWV3VGFyZ2V0Q2hpbGQ/LmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0TGlzdEl0ZW1zKGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGxpc3RFbGVtZXQgPSB0aGlzLmdldExpc3RFbGVtZW50KGxpc3RUeXBlKTtcblxuICAgICAgICByZXR1cm4gZmluZChsaXN0RWxlbWV0LCAnbGkucC1waWNrbGlzdC1pdGVtJyk7XG4gICAgfVxuXG4gICAgZ2V0TGF0ZXN0U2VsZWN0ZWRWaXNpYmxlT3B0aW9uSW5kZXgodmlzaWJsZUxpc3Q6IGFueVtdLCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGxhdGVzdFNlbGVjdGVkSXRlbSA9IFsuLi5zZWxlY3RlZEl0ZW1zXS5yZXZlcnNlKCkuZmluZCgoaXRlbSkgPT4gdmlzaWJsZUxpc3QuaW5jbHVkZXMoaXRlbSkpO1xuICAgICAgICByZXR1cm4gbGF0ZXN0U2VsZWN0ZWRJdGVtICE9PSB1bmRlZmluZWQgPyB2aXNpYmxlTGlzdC5pbmRleE9mKGxhdGVzdFNlbGVjdGVkSXRlbSkgOiAtMTtcbiAgICB9XG5cbiAgICBnZXRWaXNpYmxlTGlzdChsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UgJiYgdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZS5sZW5ndGggPiAwID8gdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSA6IHRoaXMuc291cmNlICYmIHRoaXMuc291cmNlLmxlbmd0aCA+IDAgPyB0aGlzLnNvdXJjZSA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCAmJiB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0Lmxlbmd0aCA+IDAgPyB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0IDogdGhpcy50YXJnZXQgJiYgdGhpcy50YXJnZXQubGVuZ3RoID4gMCA/IHRoaXMudGFyZ2V0IDogbnVsbDtcbiAgICB9XG5cbiAgICBzZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlOiBudW1iZXIsIHNlbGVjdGVkSXRlbXM6IGFueVtdKSB7XG4gICAgICAgIGlmIChsaXN0VHlwZSA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU291cmNlID0gc2VsZWN0ZWRJdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1RhcmdldCA9IHNlbGVjdGVkSXRlbXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kTmV4dE9wdGlvbkluZGV4KGluZGV4OiBudW1iZXIsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhsaXN0VHlwZSk7XG5cbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gWy4uLml0ZW1zXS5maW5kSW5kZXgoKGxpbms6IGFueSkgPT4gbGluay5pZCA9PT0gaW5kZXgpO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCArIDEgOiAwO1xuICAgIH1cblxuICAgIGZpbmRQcmV2T3B0aW9uSW5kZXgoaW5kZXg6IG51bWJlciwgbGlzdFR5cGU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0TGlzdEl0ZW1zKGxpc3RUeXBlKTtcbiAgICAgICAgY29uc3QgbWF0Y2hlZE9wdGlvbkluZGV4ID0gWy4uLml0ZW1zXS5maW5kSW5kZXgoKGxpbms6IGFueSkgPT4gbGluay5pZCA9PT0gaW5kZXgpO1xuXG4gICAgICAgIHJldHVybiBtYXRjaGVkT3B0aW9uSW5kZXggPiAtMSA/IG1hdGNoZWRPcHRpb25JbmRleCAtIDEgOiAwO1xuICAgIH1cblxuICAgIG9uSXRlbUtleURvd24oZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dEb3duS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uQXJyb3dVcEtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkhvbWVLZXkoZXZlbnQsIHNlbGVjdGVkSXRlbXMsIGNhbGxiYWNrLCBsaXN0VHlwZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgICAgICAgdGhpcy5vbkVuZEtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMub25TcGFjZUtleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnS2V5QSc6XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCB0aGlzLmdldFZpc2libGVMaXN0KGxpc3RUeXBlKSk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGb2N1c2VkT3B0aW9uKGluZGV4OiBudW1iZXIsIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKGxpc3RUeXBlID09PSB0aGlzLlNPVVJDRV9MSVNUKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlT3B0aW9uc1NvdXJjZSAmJiB0aGlzLnZpc2libGVPcHRpb25zU291cmNlLmxlbmd0aCA/IHRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2VbaW5kZXhdIDogdGhpcy5zb3VyY2UgJiYgdGhpcy5zb3VyY2UubGVuZ3RoID8gdGhpcy5zb3VyY2VbaW5kZXhdIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zVGFyZ2V0ICYmIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQubGVuZ3RoID8gdGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldFtpbmRleF0gOiB0aGlzLnRhcmdldCAmJiB0aGlzLnRhcmdldC5sZW5ndGggPyB0aGlzLnRhcmdldFtpbmRleF0gOiBudWxsO1xuICAgIH1cblxuICAgIGNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChpbmRleCwgbGlzdFR5cGUpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldExpc3RJdGVtcyhsaXN0VHlwZSk7XG4gICAgICAgIGlmIChpdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IG9yZGVyID0gaW5kZXggPj0gaXRlbXMubGVuZ3RoID8gaXRlbXMubGVuZ3RoIC0gMSA6IGluZGV4IDwgMCA/IDAgOiBpbmRleDtcblxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uSW5kZXggPSBpdGVtc1tvcmRlcl0uZ2V0QXR0cmlidXRlKCdpZCcpO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkT3B0aW9uID0gdGhpcy5nZXRGb2N1c2VkT3B0aW9uKG9yZGVyLCBsaXN0VHlwZSk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbEluVmlldyhpdGVtc1tvcmRlcl0uZ2V0QXR0cmlidXRlKCdpZCcpLCBsaXN0VHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzY3JvbGxJblZpZXcoaWQsIGxpc3RUeXBlKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBmaW5kU2luZ2xlKHRoaXMuZ2V0TGlzdEVsZW1lbnQobGlzdFR5cGUpLCBgbGlbaWQ9XCIke2lkfVwiXWApO1xuXG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3ICYmIGVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ25lYXJlc3QnLCBpbmxpbmU6ICdzdGFydCcgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93RG93bktleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uSW5kZXggPSB0aGlzLmZpbmROZXh0T3B0aW9uSW5kZXgodGhpcy5mb2N1c2VkT3B0aW9uSW5kZXgsIGxpc3RUeXBlKTtcblxuICAgICAgICB0aGlzLmNoYW5nZUZvY3VzZWRPcHRpb25JbmRleChvcHRpb25JbmRleCwgbGlzdFR5cGUpO1xuXG4gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkFycm93VXBLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbkluZGV4ID0gdGhpcy5maW5kUHJldk9wdGlvbkluZGV4KHRoaXMuZm9jdXNlZE9wdGlvbkluZGV4LCBsaXN0VHlwZSk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgob3B0aW9uSW5kZXgsIGxpc3RUeXBlKTtcblxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMub25FbnRlcktleShldmVudCwgc2VsZWN0ZWRJdGVtcywgY2FsbGJhY2ssIGxpc3RUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25FbnRlcktleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5vbkl0ZW1DbGljayhldmVudCwgdGhpcy5mb2N1c2VkT3B0aW9uLCBzZWxlY3RlZEl0ZW1zLCBsaXN0VHlwZSwgY2FsbGJhY2spO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uU3BhY2VLZXkoZXZlbnQ6IEV2ZW50IHwgYW55LCBzZWxlY3RlZEl0ZW1zOiBhbnlbXSwgY2FsbGJhY2s6IEV2ZW50RW1pdHRlcjxhbnk+LCBsaXN0VHlwZTogbnVtYmVyKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIHNlbGVjdGVkSXRlbXMgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgdmlzaWJsZUxpc3QgPSB0aGlzLmdldFZpc2libGVMaXN0KGxpc3RUeXBlKTtcbiAgICAgICAgICAgIGxldCBsYXN0U2VsZWN0ZWRJbmRleCA9IHRoaXMuZ2V0TGF0ZXN0U2VsZWN0ZWRWaXNpYmxlT3B0aW9uSW5kZXgodmlzaWJsZUxpc3QsIHNlbGVjdGVkSXRlbXMpO1xuXG4gICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcblxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbLi4udmlzaWJsZUxpc3Quc2xpY2UoTWF0aC5taW4obGFzdFNlbGVjdGVkSW5kZXgsIGZvY3VzZWRJbmRleCksIE1hdGgubWF4KGxhc3RTZWxlY3RlZEluZGV4LCBmb2N1c2VkSW5kZXgpICsgMSldO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uTGlzdChsaXN0VHlwZSwgc2VsZWN0ZWRJdGVtcyk7XG5cbiAgICAgICAgICAgICAgICBjYWxsYmFjay5lbWl0KHsgaXRlbXM6IHNlbGVjdGVkSXRlbXMgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkVudGVyS2V5KGV2ZW50LCBzZWxlY3RlZEl0ZW1zLCBjYWxsYmFjaywgbGlzdFR5cGUpO1xuICAgIH1cblxuICAgIG9uSG9tZUtleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIGxldCB2aXNpYmxlTGlzdCA9IHRoaXMuZ2V0VmlzaWJsZUxpc3QobGlzdFR5cGUpO1xuICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcblxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcyA9IFsuLi52aXNpYmxlTGlzdC5zbGljZSgwLCBmb2N1c2VkSW5kZXggKyAxKV07XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbkxpc3QobGlzdFR5cGUsIHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICAgICAgY2FsbGJhY2suZW1pdCh7IGl0ZW1zOiBzZWxlY3RlZEl0ZW1zIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VGb2N1c2VkT3B0aW9uSW5kZXgoMCwgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBvbkVuZEtleShldmVudDogRXZlbnQgfCBhbnksIHNlbGVjdGVkSXRlbXM6IGFueVtdLCBjYWxsYmFjazogRXZlbnRFbWl0dGVyPGFueT4sIGxpc3RUeXBlOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IHZpc2libGVMaXN0ID0gdGhpcy5nZXRWaXNpYmxlTGlzdChsaXN0VHlwZSk7XG4gICAgICAgIGxldCBsYXN0SW5kZXggPSB2aXNpYmxlTGlzdCAmJiB2aXNpYmxlTGlzdC5sZW5ndGggPiAwID8gdmlzaWJsZUxpc3QubGVuZ3RoIC0gMSA6IG51bGw7XG4gICAgICAgIGlmIChsYXN0SW5kZXggPT09IG51bGwpIHJldHVybjtcblxuICAgICAgICBpZiAoZXZlbnQuY3RybEtleSAmJiBldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgbGV0IGZvY3VzZWRJbmRleCA9IGZpbmRJbmRleEluTGlzdCh0aGlzLmZvY3VzZWRPcHRpb24sIHZpc2libGVMaXN0KTtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMgPSBbLi4udmlzaWJsZUxpc3Quc2xpY2UoZm9jdXNlZEluZGV4LCBsYXN0SW5kZXgpXTtcblxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25MaXN0KGxpc3RUeXBlLCBzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgICAgIGNhbGxiYWNrLmVtaXQoeyBpdGVtczogc2VsZWN0ZWRJdGVtcyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRm9jdXNlZE9wdGlvbkluZGV4KGxhc3RJbmRleCwgbGlzdFR5cGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBnZXREcm9wSW5kZXhlcyhmcm9tSW5kZXg6IG51bWJlciwgdG9JbmRleDogbnVtYmVyLCBkcm9wcGVkTGlzdDogbnVtYmVyLCBpc1RyYW5zZmVyOiBib29sZWFuLCBkYXRhOiBhbnlbXSB8IGFueSkge1xuICAgICAgICBsZXQgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4O1xuXG4gICAgICAgIGlmIChkcm9wcGVkTGlzdCA9PT0gdGhpcy5TT1VSQ0VfTElTVCkge1xuICAgICAgICAgICAgcHJldmlvdXNJbmRleCA9IGlzVHJhbnNmZXIgPyAodGhpcy5maWx0ZXJWYWx1ZVRhcmdldCA/IGZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnRhcmdldCkgOiBmcm9tSW5kZXgpIDogdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA/IGZpbmRJbmRleEluTGlzdChkYXRhLCB0aGlzLnNvdXJjZSkgOiBmcm9tSW5kZXg7XG4gICAgICAgICAgICBjdXJyZW50SW5kZXggPSB0aGlzLmZpbHRlclZhbHVlU291cmNlID8gdGhpcy5maW5kRmlsdGVyZWRDdXJyZW50SW5kZXgoPGFueVtdPnRoaXMudmlzaWJsZU9wdGlvbnNTb3VyY2UsIHRvSW5kZXgsIHRoaXMuc291cmNlKSA6IHRvSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmV2aW91c0luZGV4ID0gaXNUcmFuc2ZlciA/ICh0aGlzLmZpbHRlclZhbHVlU291cmNlID8gZmluZEluZGV4SW5MaXN0KGRhdGEsIHRoaXMuc291cmNlKSA6IGZyb21JbmRleCkgOiB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID8gZmluZEluZGV4SW5MaXN0KGRhdGEsIHRoaXMudGFyZ2V0KSA6IGZyb21JbmRleDtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHRoaXMuZmlsdGVyVmFsdWVUYXJnZXQgPyB0aGlzLmZpbmRGaWx0ZXJlZEN1cnJlbnRJbmRleCg8YW55W10+dGhpcy52aXNpYmxlT3B0aW9uc1RhcmdldCwgdG9JbmRleCwgdGhpcy50YXJnZXQpIDogdG9JbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCB9O1xuICAgIH1cblxuICAgIGZpbmRGaWx0ZXJlZEN1cnJlbnRJbmRleCh2aXNpYmxlT3B0aW9uczogYW55W10sIGluZGV4OiBudW1iZXIsIG9wdGlvbnM6IGFueSkge1xuICAgICAgICBpZiAodmlzaWJsZU9wdGlvbnMubGVuZ3RoID09PSBpbmRleCkge1xuICAgICAgICAgICAgbGV0IHRvSW5kZXggPSBmaW5kSW5kZXhJbkxpc3QodmlzaWJsZU9wdGlvbnNbaW5kZXggLSAxXSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiB0b0luZGV4ICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaW5kSW5kZXhJbkxpc3QodmlzaWJsZU9wdGlvbnNbaW5kZXhdLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2V0U291cmNlRmlsdGVyKCkge1xuICAgICAgICB0aGlzLnZpc2libGVPcHRpb25zU291cmNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZVNvdXJjZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc291cmNlRmlsdGVyVmlld0NoaWxkICYmICgoPEhUTUxJbnB1dEVsZW1lbnQ+dGhpcy5zb3VyY2VGaWx0ZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudCkudmFsdWUgPSAnJyk7XG4gICAgfVxuXG4gICAgcmVzZXRUYXJnZXRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLmZpbHRlclZhbHVlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy50YXJnZXRGaWx0ZXJWaWV3Q2hpbGQgJiYgKCg8SFRNTElucHV0RWxlbWVudD50aGlzLnRhcmdldEZpbHRlclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50KS52YWx1ZSA9ICcnKTtcbiAgICB9XG5cbiAgICByZXNldEZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5yZXNldFNvdXJjZUZpbHRlcigpO1xuICAgICAgICB0aGlzLnJlc2V0VGFyZ2V0RmlsdGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdE1lZGlhKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5tZWRpYSA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubWF0Y2hNZWRpYShgKG1heC13aWR0aDogJHt0aGlzLmJyZWFrcG9pbnR9KWApO1xuICAgICAgICAgICAgdGhpcy52aWV3Q2hhbmdlZCA9IHRoaXMubWVkaWEubWF0Y2hlcztcbiAgICAgICAgICAgIHRoaXMuYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lNZWRpYSgpIHtcbiAgICAgICAgdGhpcy51bmJpbmRNZWRpYUNoYW5nZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lZGlhICYmICF0aGlzLm1lZGlhQ2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWVkaWFDaGFuZ2VMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMubWVkaWEsICdjaGFuZ2UnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdDaGFuZ2VkID0gZXZlbnQubWF0Y2hlcztcblxuICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZE1lZGlhQ2hhbmdlTGlzdGVuZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLm1lZGlhQ2hhbmdlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubWVkaWFDaGFuZ2VMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5tZWRpYUNoYW5nZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZVN0eWxlKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN0eWxlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSwgdGhpcy5pZCwgJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3R5bGVFbGVtZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMuc3R5bGVFbGVtZW50LCAndHlwZScsICd0ZXh0L2NzcycpO1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgaW5uZXJIVE1MID0gYFxuICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICR7dGhpcy5icmVha3BvaW50fSkge1xuICAgICAgICAgICAgICAgICAgICAucC1waWNrbGlzdFske3RoaXMuaWR9XSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnAtcGlja2xpc3RbJHt0aGlzLmlkfV0gLnAtcGlja2xpc3QtY29udHJvbHMge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1gO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLnN0eWxlRWxlbWVudCwgJ2lubmVySFRNTCcsIGlubmVySFRNTCk7XG4gICAgICAgICAgICAgICAgc2V0QXR0cmlidXRlKHRoaXMuc3R5bGVFbGVtZW50LCAnbm9uY2UnLCB0aGlzLmNvbmZpZz8uY3NwKCk/Lm5vbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNvdXJjZU1vdmVEaXNhYmxlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgIXRoaXMuc2VsZWN0ZWRJdGVtc1NvdXJjZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGFyZ2V0TW92ZURpc2FibGVkKCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlUmlnaHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnNlbGVjdGVkSXRlbXNTb3VyY2UpO1xuICAgIH1cblxuICAgIG1vdmVMZWZ0RGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkIHx8IGlzRW1wdHkodGhpcy5zZWxlY3RlZEl0ZW1zVGFyZ2V0KTtcbiAgICB9XG5cbiAgICBtb3ZlQWxsUmlnaHREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnNvdXJjZSk7XG4gICAgfVxuXG4gICAgbW92ZUFsbExlZnREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgfHwgaXNFbXB0eSh0aGlzLnRhcmdldCk7XG4gICAgfVxuXG4gICAgZGVzdHJveVN0eWxlKCkge1xuICAgICAgICBpZiAodGhpcy5zdHlsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQodGhpcy5kb2N1bWVudC5oZWFkLCB0aGlzLnN0eWxlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLnN0eWxlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICBgYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTdHlsZSgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3lNZWRpYSgpO1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbUGlja0xpc3QsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1BpY2tMaXN0LCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFBpY2tMaXN0TW9kdWxlIHt9XG4iXX0=
|