@ng-nest/ui 17.0.1 → 17.0.3
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/affix/affix.component.d.ts +1 -2
- package/affix/affix.module.d.ts +1 -3
- package/alert/alert.component.d.ts +4 -5
- package/alert/alert.module.d.ts +1 -8
- package/anchor/anchor-inner.component.d.ts +1 -1
- package/anchor/anchor.component.d.ts +6 -7
- package/anchor/anchor.module.d.ts +2 -6
- package/api/api.component.d.ts +4 -4
- package/api/api.module.d.ts +1 -2
- package/auto-complete/auto-complete-portal.component.d.ts +3 -5
- package/auto-complete/auto-complete.component.d.ts +12 -13
- package/auto-complete/auto-complete.module.d.ts +1 -9
- package/avatar/avatar-group.component.d.ts +1 -2
- package/avatar/avatar.component.d.ts +6 -7
- package/avatar/avatar.module.d.ts +2 -6
- package/back-top/back-top.component.d.ts +7 -12
- package/back-top/back-top.module.d.ts +1 -5
- package/badge/badge.component.d.ts +3 -8
- package/badge/badge.module.d.ts +1 -3
- package/base-form/base-form.component.d.ts +1 -1
- package/base-form/base-form.module.d.ts +1 -2
- package/border/border.component.d.ts +4 -4
- package/border/border.module.d.ts +1 -1
- package/button/button.component.d.ts +8 -10
- package/button/button.module.d.ts +1 -5
- package/button/buttons.component.d.ts +4 -5
- package/calendar/calendar.component.d.ts +9 -14
- package/calendar/calendar.module.d.ts +1 -10
- package/card/card.component.d.ts +2 -6
- package/card/card.module.d.ts +1 -5
- package/carousel/carousel-panel.component.d.ts +10 -13
- package/carousel/carousel.component.d.ts +4 -8
- package/carousel/carousel.module.d.ts +1 -5
- package/cascade/cascade-portal.component.d.ts +4 -5
- package/cascade/cascade.component.d.ts +14 -13
- package/cascade/cascade.module.d.ts +1 -9
- package/checkbox/checkbox.component.d.ts +6 -9
- package/checkbox/checkbox.module.d.ts +1 -8
- package/collapse/collapse-panel.component.d.ts +5 -8
- package/collapse/collapse.component.d.ts +3 -7
- package/collapse/collapse.module.d.ts +1 -5
- package/color/color.component.d.ts +4 -6
- package/color/color.module.d.ts +1 -3
- package/color-picker/color-picker-portal.component.d.ts +7 -11
- package/color-picker/color-picker.component.d.ts +11 -12
- package/color-picker/color-picker.module.d.ts +1 -11
- package/comment/comment-reply.component.d.ts +4 -9
- package/comment/comment.component.d.ts +5 -9
- package/comment/comment.module.d.ts +1 -11
- package/container/aside.component.d.ts +5 -5
- package/container/container.component.d.ts +2 -3
- package/container/container.module.d.ts +1 -3
- package/container/footer.component.d.ts +5 -7
- package/container/header.component.d.ts +5 -7
- package/container/main.component.d.ts +4 -4
- package/crumb/crumb.component.d.ts +4 -6
- package/crumb/crumb.module.d.ts +1 -5
- package/date-picker/date-picker-portal.component.d.ts +5 -9
- package/date-picker/date-picker.component.d.ts +14 -16
- package/date-picker/date-picker.module.d.ts +2 -21
- package/date-picker/date-quarter.pipe.d.ts +1 -1
- package/date-picker/date-range-portal.component.d.ts +1 -1
- package/date-picker/date-range.component.d.ts +17 -19
- package/date-picker/picker-date.component.d.ts +8 -12
- package/date-picker/picker-month.component.d.ts +8 -11
- package/date-picker/picker-quarter.component.d.ts +9 -14
- package/date-picker/picker-year.component.d.ts +5 -8
- package/description/description-item.component.d.ts +1 -2
- package/description/description.component.d.ts +4 -5
- package/description/description.module.d.ts +2 -5
- package/dialog/dialog-container.component.d.ts +1 -2
- package/dialog/dialog-portal.component.d.ts +1 -1
- package/dialog/dialog-portal.directives.d.ts +13 -17
- package/dialog/dialog.component.d.ts +15 -17
- package/dialog/dialog.module.d.ts +1 -14
- package/dialog/dialog.service.d.ts +8 -10
- package/doc/doc.component.d.ts +6 -6
- package/doc/doc.module.d.ts +1 -2
- package/drag/drag.directive.d.ts +5 -6
- package/drag/drag.module.d.ts +1 -2
- package/drawer/drawer-container.component.d.ts +1 -2
- package/drawer/drawer-portal.component.d.ts +1 -2
- package/drawer/drawer-portal.directives.d.ts +5 -6
- package/drawer/drawer.component.d.ts +10 -15
- package/drawer/drawer.module.d.ts +2 -8
- package/drawer/drawer.service.d.ts +5 -7
- package/dropdown/dropdown-portal.component.d.ts +1 -1
- package/dropdown/dropdown.component.d.ts +10 -13
- package/dropdown/dropdown.module.d.ts +1 -7
- package/empty/empty.component.d.ts +4 -7
- package/empty/empty.module.d.ts +1 -6
- package/esm2022/affix/affix.component.mjs +11 -11
- package/esm2022/affix/affix.module.mjs +6 -9
- package/esm2022/affix/affix.property.mjs +3 -3
- package/esm2022/alert/alert.component.mjs +19 -19
- package/esm2022/alert/alert.module.mjs +6 -14
- package/esm2022/alert/alert.property.mjs +4 -4
- package/esm2022/anchor/anchor-inner.component.mjs +5 -4
- package/esm2022/anchor/anchor.component.mjs +18 -21
- package/esm2022/anchor/anchor.module.mjs +6 -11
- package/esm2022/anchor/anchor.property.mjs +7 -7
- package/esm2022/api/api.component.mjs +14 -12
- package/esm2022/api/api.module.mjs +6 -8
- package/esm2022/auto-complete/auto-complete-portal.component.mjs +15 -16
- package/esm2022/auto-complete/auto-complete.component.mjs +44 -31
- package/esm2022/auto-complete/auto-complete.module.mjs +7 -16
- package/esm2022/auto-complete/auto-complete.property.mjs +3 -3
- package/esm2022/avatar/avatar-group.component.mjs +7 -7
- package/esm2022/avatar/avatar.component.mjs +17 -19
- package/esm2022/avatar/avatar.module.mjs +6 -11
- package/esm2022/avatar/avatar.property.mjs +7 -7
- package/esm2022/back-top/back-top.component.mjs +23 -29
- package/esm2022/back-top/back-top.module.mjs +6 -11
- package/esm2022/back-top/back-top.property.mjs +3 -3
- package/esm2022/badge/badge.component.mjs +18 -23
- package/esm2022/badge/badge.module.mjs +6 -9
- package/esm2022/badge/badge.property.mjs +3 -3
- package/esm2022/base-form/base-form.component.mjs +11 -6
- package/esm2022/base-form/base-form.module.mjs +7 -8
- package/esm2022/base-form/base-form.property.mjs +4 -4
- package/esm2022/border/border.component.mjs +14 -12
- package/esm2022/border/border.module.mjs +6 -6
- package/esm2022/button/button.component.mjs +19 -24
- package/esm2022/button/button.module.mjs +6 -11
- package/esm2022/button/button.property.mjs +7 -7
- package/esm2022/button/buttons.component.mjs +15 -15
- package/esm2022/calendar/calendar.component.mjs +38 -30
- package/esm2022/calendar/calendar.module.mjs +6 -16
- package/esm2022/calendar/calendar.property.mjs +3 -3
- package/esm2022/card/card.component.mjs +14 -17
- package/esm2022/card/card.module.mjs +6 -11
- package/esm2022/card/card.property.mjs +3 -3
- package/esm2022/carousel/carousel-panel.component.mjs +36 -34
- package/esm2022/carousel/carousel.component.mjs +19 -26
- package/esm2022/carousel/carousel.module.mjs +7 -12
- package/esm2022/carousel/carousel.property.mjs +6 -6
- package/esm2022/cascade/cascade-portal.component.mjs +20 -20
- package/esm2022/cascade/cascade.component.mjs +34 -29
- package/esm2022/cascade/cascade.module.mjs +7 -16
- package/esm2022/cascade/cascade.property.mjs +3 -3
- package/esm2022/checkbox/checkbox.component.mjs +31 -27
- package/esm2022/checkbox/checkbox.module.mjs +6 -14
- package/esm2022/checkbox/checkbox.property.mjs +3 -3
- package/esm2022/collapse/collapse-panel.component.mjs +18 -21
- package/esm2022/collapse/collapse.component.mjs +11 -15
- package/esm2022/collapse/collapse.module.mjs +6 -11
- package/esm2022/collapse/collapse.property.mjs +6 -6
- package/esm2022/color/color.component.mjs +14 -19
- package/esm2022/color/color.module.mjs +6 -9
- package/esm2022/color/color.property.mjs +3 -3
- package/esm2022/color-picker/color-picker-portal.component.mjs +45 -35
- package/esm2022/color-picker/color-picker.component.mjs +36 -35
- package/esm2022/color-picker/color-picker.module.mjs +7 -44
- package/esm2022/color-picker/color-picker.property.mjs +3 -3
- package/esm2022/comment/comment-reply.component.mjs +18 -19
- package/esm2022/comment/comment.component.mjs +30 -25
- package/esm2022/comment/comment.module.mjs +6 -43
- package/esm2022/comment/comment.property.mjs +7 -7
- package/esm2022/container/aside.component.mjs +15 -13
- package/esm2022/container/container.component.mjs +14 -14
- package/esm2022/container/container.module.mjs +7 -37
- package/esm2022/container/container.property.mjs +12 -12
- package/esm2022/container/footer.component.mjs +17 -21
- package/esm2022/container/header.component.mjs +17 -21
- package/esm2022/container/main.component.mjs +14 -12
- package/esm2022/core/config/config.service.mjs +11 -6
- package/esm2022/core/services/http.service.mjs +3 -3
- package/esm2022/core/services/preloading-strategy.service.mjs +6 -5
- package/esm2022/core/services/storage.service.mjs +3 -3
- package/esm2022/core/theme/theme.service.mjs +3 -3
- package/esm2022/crumb/crumb.component.mjs +15 -19
- package/esm2022/crumb/crumb.module.mjs +6 -11
- package/esm2022/crumb/crumb.property.mjs +3 -3
- package/esm2022/date-picker/date-picker-portal.component.mjs +38 -29
- package/esm2022/date-picker/date-picker.component.mjs +52 -47
- package/esm2022/date-picker/date-picker.module.mjs +7 -108
- package/esm2022/date-picker/date-picker.property.mjs +18 -18
- package/esm2022/date-picker/date-quarter.pipe.mjs +5 -5
- package/esm2022/date-picker/date-range-portal.component.mjs +25 -13
- package/esm2022/date-picker/date-range.component.mjs +50 -51
- package/esm2022/date-picker/picker-date.component.mjs +45 -43
- package/esm2022/date-picker/picker-month.component.mjs +31 -30
- package/esm2022/date-picker/picker-quarter.component.mjs +31 -32
- package/esm2022/date-picker/picker-year.component.mjs +26 -25
- package/esm2022/description/description-item.component.mjs +6 -9
- package/esm2022/description/description.component.mjs +13 -14
- package/esm2022/description/description.module.mjs +6 -10
- package/esm2022/description/description.property.mjs +6 -6
- package/esm2022/dialog/dialog-container.component.mjs +7 -7
- package/esm2022/dialog/dialog-portal.component.mjs +22 -11
- package/esm2022/dialog/dialog-portal.directives.mjs +48 -48
- package/esm2022/dialog/dialog-ref.mjs +1 -1
- package/esm2022/dialog/dialog.component.mjs +40 -48
- package/esm2022/dialog/dialog.module.mjs +12 -71
- package/esm2022/dialog/dialog.property.mjs +6 -6
- package/esm2022/dialog/dialog.service.mjs +16 -17
- package/esm2022/doc/doc.component.mjs +12 -10
- package/esm2022/doc/doc.module.mjs +6 -8
- package/esm2022/drag/drag.directive.mjs +11 -11
- package/esm2022/drag/drag.module.mjs +6 -8
- package/esm2022/drag/drag.property.mjs +3 -3
- package/esm2022/drawer/drawer-container.component.mjs +7 -7
- package/esm2022/drawer/drawer-portal.component.mjs +12 -12
- package/esm2022/drawer/drawer-portal.directives.mjs +22 -21
- package/esm2022/drawer/drawer.component.mjs +23 -33
- package/esm2022/drawer/drawer.module.mjs +10 -27
- package/esm2022/drawer/drawer.property.mjs +6 -6
- package/esm2022/drawer/drawer.service.mjs +15 -15
- package/esm2022/dropdown/dropdown-portal.component.mjs +8 -7
- package/esm2022/dropdown/dropdown.component.mjs +18 -22
- package/esm2022/dropdown/dropdown.module.mjs +7 -14
- package/esm2022/dropdown/dropdown.property.mjs +3 -3
- package/esm2022/empty/empty.component.mjs +20 -18
- package/esm2022/empty/empty.module.mjs +6 -12
- package/esm2022/empty/empty.property.mjs +3 -3
- package/esm2022/examples/examples.component.mjs +12 -10
- package/esm2022/examples/examples.module.mjs +6 -8
- package/esm2022/find/find.component.mjs +48 -33
- package/esm2022/find/find.module.mjs +6 -54
- package/esm2022/find/find.property.mjs +3 -3
- package/esm2022/form/control.component.mjs +67 -40
- package/esm2022/form/form.component.mjs +28 -22
- package/esm2022/form/form.module.mjs +6 -71
- package/esm2022/form/form.property.mjs +6 -6
- package/esm2022/highlight/highlight.component.mjs +26 -24
- package/esm2022/highlight/highlight.module.mjs +6 -10
- package/esm2022/highlight/highlight.property.mjs +3 -3
- package/esm2022/i18n/i18n.directive.mjs +14 -11
- package/esm2022/i18n/i18n.module.mjs +6 -6
- package/esm2022/i18n/i18n.pipe.mjs +6 -5
- package/esm2022/i18n/i18n.service.mjs +9 -13
- package/esm2022/icon/icon.component.mjs +21 -22
- package/esm2022/icon/icon.module.mjs +6 -11
- package/esm2022/icon/icon.property.mjs +4 -4
- package/esm2022/icon/icon.service.mjs +36 -35
- package/esm2022/image/image-group.component.mjs +12 -6
- package/esm2022/image/image-preview.component.mjs +26 -32
- package/esm2022/image/image.component.mjs +30 -30
- package/esm2022/image/image.module.mjs +6 -15
- package/esm2022/image/image.property.mjs +6 -6
- package/esm2022/inner/inner.component.mjs +14 -14
- package/esm2022/inner/inner.module.mjs +6 -9
- package/esm2022/inner/inner.property.mjs +3 -3
- package/esm2022/input/input-group.component.mjs +12 -14
- package/esm2022/input/input.component.mjs +33 -35
- package/esm2022/input/input.module.mjs +6 -13
- package/esm2022/input/input.property.mjs +6 -6
- package/esm2022/input-number/input-number.component.mjs +23 -27
- package/esm2022/input-number/input-number.module.mjs +6 -13
- package/esm2022/input-number/input-number.property.mjs +3 -3
- package/esm2022/keyword/keyword.directive.mjs +14 -14
- package/esm2022/keyword/keyword.module.mjs +6 -9
- package/esm2022/keyword/keyword.property.mjs +5 -5
- package/esm2022/layout/col.component.mjs +15 -19
- package/esm2022/layout/layout.module.mjs +6 -9
- package/esm2022/layout/layout.property.mjs +7 -7
- package/esm2022/layout/row.component.mjs +13 -13
- package/esm2022/link/link.component.mjs +17 -19
- package/esm2022/link/link.module.mjs +6 -12
- package/esm2022/link/link.property.mjs +3 -3
- package/esm2022/list/list-drop-group.directive.mjs +5 -4
- package/esm2022/list/list-option.component.mjs +16 -17
- package/esm2022/list/list.component.mjs +36 -33
- package/esm2022/list/list.module.mjs +6 -54
- package/esm2022/list/list.property.mjs +6 -6
- package/esm2022/loading/loading.component.mjs +19 -22
- package/esm2022/loading/loading.module.mjs +6 -12
- package/esm2022/loading/loading.property.mjs +3 -3
- package/esm2022/menu/menu-node.component.mjs +17 -18
- package/esm2022/menu/menu.component.mjs +21 -27
- package/esm2022/menu/menu.module.mjs +6 -13
- package/esm2022/menu/menu.property.mjs +6 -6
- package/esm2022/message/message.component.mjs +10 -16
- package/esm2022/message/message.module.mjs +7 -14
- package/esm2022/message/message.service.mjs +13 -13
- package/esm2022/message-box/message-box.component.mjs +21 -12
- package/esm2022/message-box/message-box.module.mjs +7 -49
- package/esm2022/message-box/message-box.service.mjs +13 -12
- package/esm2022/notification/notification.component.mjs +10 -16
- package/esm2022/notification/notification.module.mjs +7 -14
- package/esm2022/notification/notification.service.mjs +15 -11
- package/esm2022/outlet/outlet.directive.mjs +10 -10
- package/esm2022/outlet/outlet.module.mjs +6 -8
- package/esm2022/page-header/page-header.component.mjs +18 -19
- package/esm2022/page-header/page-header.module.mjs +6 -10
- package/esm2022/page-header/page-header.property.mjs +3 -3
- package/esm2022/pagination/pagination.component.mjs +37 -33
- package/esm2022/pagination/pagination.module.mjs +6 -15
- package/esm2022/pagination/pagination.property.mjs +3 -3
- package/esm2022/pattern/pattern.component.mjs +12 -10
- package/esm2022/pattern/pattern.module.mjs +6 -8
- package/esm2022/popconfirm/popconfirm.component.mjs +23 -26
- package/esm2022/popconfirm/popconfirm.module.mjs +6 -13
- package/esm2022/popconfirm/popconfirm.property.mjs +3 -3
- package/esm2022/popover/popover-portal.component.mjs +16 -16
- package/esm2022/popover/popover.directive.mjs +17 -19
- package/esm2022/popover/popover.module.mjs +7 -13
- package/esm2022/popover/popover.property.mjs +3 -3
- package/esm2022/portal/portal.module.mjs +8 -11
- package/esm2022/portal/portal.service.mjs +13 -12
- package/esm2022/progress/progress.component.mjs +16 -19
- package/esm2022/progress/progress.module.mjs +6 -11
- package/esm2022/progress/progress.property.mjs +3 -3
- package/esm2022/radio/radio.component.mjs +21 -25
- package/esm2022/radio/radio.module.mjs +6 -14
- package/esm2022/radio/radio.property.mjs +3 -3
- package/esm2022/rate/rate.component.mjs +22 -22
- package/esm2022/rate/rate.module.mjs +6 -13
- package/esm2022/rate/rate.property.mjs +3 -3
- package/esm2022/resizable/resizable.directive.mjs +57 -46
- package/esm2022/resizable/resizable.module.mjs +7 -9
- package/esm2022/resizable/resizable.property.mjs +5 -5
- package/esm2022/result/result.component.mjs +15 -19
- package/esm2022/result/result.module.mjs +6 -11
- package/esm2022/result/result.property.mjs +3 -3
- package/esm2022/ripple/ripple.directive.mjs +12 -11
- package/esm2022/ripple/ripple.module.mjs +7 -10
- package/esm2022/ripple/ripple.property.mjs +3 -3
- package/esm2022/select/select-portal.component.mjs +7 -6
- package/esm2022/select/select.component.mjs +51 -50
- package/esm2022/select/select.module.mjs +7 -48
- package/esm2022/select/select.property.mjs +3 -3
- package/esm2022/skeleton/skeleton.component.mjs +14 -17
- package/esm2022/skeleton/skeleton.module.mjs +6 -10
- package/esm2022/skeleton/skeleton.property.mjs +3 -3
- package/esm2022/slider/slider.component.mjs +38 -39
- package/esm2022/slider/slider.module.mjs +7 -13
- package/esm2022/slider/slider.property.mjs +3 -3
- package/esm2022/slider-select/slider-select.component.mjs +46 -38
- package/esm2022/slider-select/slider-select.module.mjs +6 -38
- package/esm2022/slider-select/slider-select.property.mjs +3 -3
- package/esm2022/statistic/countdown.component.mjs +15 -16
- package/esm2022/statistic/statistic.component.mjs +13 -14
- package/esm2022/statistic/statistic.module.mjs +6 -11
- package/esm2022/statistic/statistic.property.mjs +6 -6
- package/esm2022/steps/steps.component.mjs +17 -22
- package/esm2022/steps/steps.module.mjs +6 -11
- package/esm2022/steps/steps.property.mjs +3 -3
- package/esm2022/switch/switch.component.mjs +18 -18
- package/esm2022/switch/switch.module.mjs +6 -13
- package/esm2022/switch/switch.property.mjs +3 -3
- package/esm2022/table/table-body.component.mjs +23 -13
- package/esm2022/table/table-foot.component.mjs +12 -16
- package/esm2022/table/table-head.component.mjs +35 -31
- package/esm2022/table/table.component.mjs +22 -13
- package/esm2022/table/table.module.mjs +6 -71
- package/esm2022/table/table.property.mjs +12 -12
- package/esm2022/tabs/tab-content.component.mjs +13 -11
- package/esm2022/tabs/tab-link.directive.mjs +11 -9
- package/esm2022/tabs/tab.component.mjs +11 -11
- package/esm2022/tabs/tabs.component.mjs +28 -27
- package/esm2022/tabs/tabs.module.mjs +7 -28
- package/esm2022/tabs/tabs.property.mjs +6 -6
- package/esm2022/tag/tag.component.mjs +16 -20
- package/esm2022/tag/tag.module.mjs +6 -11
- package/esm2022/tag/tag.property.mjs +3 -3
- package/esm2022/text-retract/text-retract.component.mjs +16 -19
- package/esm2022/text-retract/text-retract.module.mjs +6 -12
- package/esm2022/text-retract/text-retract.property.mjs +3 -3
- package/esm2022/textarea/textarea.component.mjs +24 -25
- package/esm2022/textarea/textarea.module.mjs +6 -12
- package/esm2022/textarea/textarea.property.mjs +3 -3
- package/esm2022/theme/theme.component.mjs +42 -31
- package/esm2022/theme/theme.module.mjs +6 -42
- package/esm2022/theme/theme.property.mjs +3 -3
- package/esm2022/time-ago/time-ago.module.mjs +6 -8
- package/esm2022/time-ago/time-ago.pipe.mjs +21 -21
- package/esm2022/time-picker/time-picker-frame.component.mjs +30 -30
- package/esm2022/time-picker/time-picker-portal.component.mjs +18 -20
- package/esm2022/time-picker/time-picker.component.mjs +40 -41
- package/esm2022/time-picker/time-picker.module.mjs +7 -48
- package/esm2022/time-picker/time-picker.property.mjs +3 -3
- package/esm2022/time-range/time-range.module.mjs +7 -7
- package/esm2022/time-range/time-range.pipe.mjs +5 -5
- package/esm2022/timeline/timeline.component.mjs +17 -20
- package/esm2022/timeline/timeline.module.mjs +6 -13
- package/esm2022/timeline/timeline.property.mjs +3 -3
- package/esm2022/tooltip/tooltip-portal.component.mjs +16 -16
- package/esm2022/tooltip/tooltip.directive.mjs +16 -19
- package/esm2022/tooltip/tooltip.module.mjs +7 -13
- package/esm2022/tooltip/tooltip.property.mjs +3 -3
- package/esm2022/transfer/transfer.component.mjs +70 -55
- package/esm2022/transfer/transfer.module.mjs +6 -59
- package/esm2022/transfer/transfer.property.mjs +3 -3
- package/esm2022/tree/tree-node.component.mjs +36 -30
- package/esm2022/tree/tree.component.mjs +12 -16
- package/esm2022/tree/tree.module.mjs +6 -43
- package/esm2022/tree/tree.property.mjs +6 -6
- package/esm2022/tree/tree.service.mjs +6 -5
- package/esm2022/tree-file/tree-file.component.mjs +34 -31
- package/esm2022/tree-file/tree-file.module.mjs +6 -15
- package/esm2022/tree-file/tree-file.property.mjs +3 -3
- package/esm2022/tree-select/tree-select-portal.component.mjs +24 -26
- package/esm2022/tree-select/tree-select.component.mjs +52 -51
- package/esm2022/tree-select/tree-select.module.mjs +8 -56
- package/esm2022/tree-select/tree-select.property.mjs +3 -3
- package/esm2022/typography/typography.component.mjs +12 -12
- package/esm2022/typography/typography.module.mjs +6 -9
- package/esm2022/typography/typography.property.mjs +3 -3
- package/esm2022/upload/upload-portal.component.mjs +11 -12
- package/esm2022/upload/upload.component.mjs +42 -43
- package/esm2022/upload/upload.module.mjs +6 -55
- package/esm2022/upload/upload.property.mjs +3 -3
- package/examples/examples.component.d.ts +6 -6
- package/examples/examples.module.d.ts +1 -2
- package/fesm2022/ng-nest-ui-affix.mjs +18 -21
- package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-alert.mjs +25 -32
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +32 -37
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +18 -18
- package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +65 -57
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-avatar.mjs +33 -38
- package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +30 -39
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-badge.mjs +25 -32
- package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +19 -14
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-border.mjs +18 -16
- package/fesm2022/ng-nest-ui-border.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-button.mjs +40 -49
- package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +44 -44
- package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-card.mjs +21 -28
- package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +62 -68
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +58 -58
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +37 -39
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +36 -47
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +84 -106
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color.mjs +22 -28
- package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-comment.mjs +51 -83
- package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-container.mjs +80 -114
- package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +24 -18
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-crumb.mjs +22 -30
- package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +277 -326
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-description.mjs +28 -35
- package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +193 -242
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-doc.mjs +16 -16
- package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drag.mjs +19 -20
- package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drawer.mjs +128 -149
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +33 -38
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-empty.mjs +26 -31
- package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-examples.mjs +16 -16
- package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +55 -86
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +98 -126
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +33 -33
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-i18n.mjs +29 -29
- package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +62 -64
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +69 -75
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-inner.mjs +21 -24
- package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +31 -38
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +51 -60
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-keyword.mjs +22 -24
- package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-layout.mjs +35 -41
- package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-link.mjs +24 -31
- package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-list.mjs +63 -100
- package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +26 -34
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-menu.mjs +42 -54
- package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message-box.mjs +38 -66
- package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message.mjs +26 -37
- package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-notification.mjs +28 -35
- package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-outlet.mjs +14 -16
- package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-page-header.mjs +25 -30
- package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pagination.mjs +43 -47
- package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pattern.mjs +16 -16
- package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popconfirm.mjs +30 -40
- package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popover.mjs +39 -44
- package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-portal.mjs +26 -26
- package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-progress.mjs +22 -29
- package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +28 -38
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +29 -34
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +67 -57
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-result.mjs +22 -30
- package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-ripple.mjs +20 -21
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +66 -100
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-skeleton.mjs +21 -27
- package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +53 -73
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider.mjs +46 -52
- package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-statistic.mjs +34 -40
- package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-steps.mjs +24 -33
- package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +25 -30
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +111 -154
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tabs.mjs +67 -79
- package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +23 -31
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-text-retract.mjs +22 -30
- package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +31 -36
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-theme.mjs +49 -71
- package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-ago.mjs +24 -26
- package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +89 -127
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-range.mjs +10 -10
- package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-timeline.mjs +24 -33
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +38 -44
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +76 -111
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +41 -46
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +83 -126
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +60 -89
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-typography.mjs +19 -21
- package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-upload.mjs +58 -106
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/find/find.component.d.ts +6 -8
- package/find/find.module.d.ts +1 -13
- package/form/control.component.d.ts +6 -7
- package/form/form.component.d.ts +5 -8
- package/form/form.module.d.ts +1 -24
- package/highlight/highlight.component.d.ts +12 -10
- package/highlight/highlight.module.d.ts +1 -4
- package/i18n/i18n.directive.d.ts +6 -7
- package/i18n/i18n.module.d.ts +1 -1
- package/i18n/i18n.pipe.d.ts +1 -1
- package/i18n/i18n.service.d.ts +3 -2
- package/icon/icon.component.d.ts +7 -9
- package/icon/icon.module.d.ts +1 -3
- package/icon/icon.property.d.ts +1 -1
- package/icon/icon.service.d.ts +6 -7
- package/image/image-group.component.d.ts +3 -1
- package/image/image-preview.component.d.ts +5 -10
- package/image/image.component.d.ts +9 -14
- package/image/image.module.d.ts +3 -11
- package/inner/inner.component.d.ts +2 -3
- package/inner/inner.module.d.ts +1 -3
- package/input/input-group.component.d.ts +3 -6
- package/input/input.component.d.ts +8 -10
- package/input/input.module.d.ts +2 -8
- package/input-number/input-number.component.d.ts +5 -6
- package/input-number/input-number.module.d.ts +1 -7
- package/keyword/keyword.directive.d.ts +3 -4
- package/keyword/keyword.module.d.ts +1 -3
- package/keyword/keyword.property.d.ts +1 -1
- package/layout/col.component.d.ts +5 -7
- package/layout/layout.module.d.ts +1 -3
- package/layout/row.component.d.ts +3 -4
- package/link/link.component.d.ts +5 -7
- package/link/link.module.d.ts +1 -6
- package/list/list-drop-group.directive.d.ts +1 -1
- package/list/list-option.component.d.ts +6 -7
- package/list/list.component.d.ts +9 -12
- package/list/list.module.d.ts +1 -13
- package/loading/loading.component.d.ts +7 -10
- package/loading/loading.module.d.ts +1 -6
- package/menu/menu-node.component.d.ts +6 -7
- package/menu/menu.component.d.ts +4 -8
- package/menu/menu.module.d.ts +1 -7
- package/message/message.component.d.ts +3 -7
- package/message/message.module.d.ts +1 -5
- package/message/message.service.d.ts +4 -5
- package/message-box/message-box.component.d.ts +1 -1
- package/message-box/message-box.module.d.ts +1 -11
- package/message-box/message-box.service.d.ts +2 -5
- package/notification/notification.component.d.ts +3 -7
- package/notification/notification.module.d.ts +1 -5
- package/notification/notification.service.d.ts +1 -3
- package/outlet/outlet.directive.d.ts +4 -5
- package/outlet/outlet.module.d.ts +1 -2
- package/package.json +36 -36
- package/page-header/page-header.component.d.ts +5 -7
- package/page-header/page-header.module.d.ts +1 -4
- package/pagination/pagination.component.d.ts +8 -11
- package/pagination/pagination.module.d.ts +1 -9
- package/pattern/pattern.component.d.ts +4 -4
- package/pattern/pattern.module.d.ts +1 -2
- package/popconfirm/popconfirm.component.d.ts +6 -9
- package/popconfirm/popconfirm.module.d.ts +1 -7
- package/popover/popover-portal.component.d.ts +4 -5
- package/popover/popover.directive.d.ts +9 -10
- package/popover/popover.module.d.ts +1 -6
- package/portal/portal.module.d.ts +1 -3
- package/portal/portal.service.d.ts +3 -4
- package/progress/progress.component.d.ts +3 -7
- package/progress/progress.module.d.ts +1 -5
- package/radio/radio.component.d.ts +6 -9
- package/radio/radio.module.d.ts +1 -8
- package/rate/rate.component.d.ts +6 -8
- package/rate/rate.module.d.ts +1 -7
- package/resizable/resizable.directive.d.ts +5 -7
- package/resizable/resizable.module.d.ts +1 -2
- package/resizable/resizable.property.d.ts +1 -1
- package/result/result.component.d.ts +3 -7
- package/result/result.module.d.ts +1 -5
- package/ripple/ripple.directive.d.ts +4 -5
- package/ripple/ripple.module.d.ts +1 -3
- package/select/select-portal.component.d.ts +1 -1
- package/select/select.component.d.ts +14 -15
- package/select/select.module.d.ts +1 -12
- package/skeleton/skeleton.component.d.ts +3 -6
- package/skeleton/skeleton.module.d.ts +1 -4
- package/slider/slider.component.d.ts +5 -8
- package/slider/slider.module.d.ts +1 -7
- package/slider-select/slider-select.component.d.ts +6 -7
- package/slider-select/slider-select.module.d.ts +1 -9
- package/statistic/countdown.component.d.ts +6 -7
- package/statistic/statistic.component.d.ts +2 -3
- package/statistic/statistic.module.d.ts +1 -5
- package/steps/steps.component.d.ts +4 -8
- package/steps/steps.module.d.ts +1 -5
- package/style/core/index.css +1 -1
- package/style/params/colors.scss +1 -1
- package/switch/switch.component.d.ts +6 -7
- package/switch/switch.module.d.ts +1 -7
- package/table/table-body.component.d.ts +1 -1
- package/table/table-foot.component.d.ts +3 -6
- package/table/table-head.component.d.ts +5 -8
- package/table/table.component.d.ts +1 -1
- package/table/table.module.d.ts +4 -17
- package/tabs/tab-content.component.d.ts +6 -6
- package/tabs/tab-link.directive.d.ts +2 -2
- package/tabs/tab.component.d.ts +2 -3
- package/tabs/tabs.component.d.ts +8 -9
- package/tabs/tabs.module.d.ts +3 -9
- package/tag/tag.component.d.ts +4 -8
- package/tag/tag.module.d.ts +1 -5
- package/text-retract/text-retract.component.d.ts +6 -10
- package/text-retract/text-retract.module.d.ts +1 -6
- package/textarea/textarea.component.d.ts +5 -7
- package/textarea/textarea.module.d.ts +1 -6
- package/theme/theme.component.d.ts +8 -9
- package/theme/theme.module.d.ts +1 -10
- package/time-ago/time-ago.module.d.ts +1 -1
- package/time-ago/time-ago.pipe.d.ts +6 -9
- package/time-picker/time-picker-frame.component.d.ts +5 -6
- package/time-picker/time-picker-portal.component.d.ts +5 -7
- package/time-picker/time-picker.component.d.ts +14 -16
- package/time-picker/time-picker.module.d.ts +2 -13
- package/time-range/time-range.module.d.ts +1 -1
- package/time-range/time-range.pipe.d.ts +1 -1
- package/timeline/timeline.component.d.ts +5 -8
- package/timeline/timeline.module.d.ts +1 -7
- package/tooltip/tooltip-portal.component.d.ts +4 -5
- package/tooltip/tooltip.directive.d.ts +8 -9
- package/tooltip/tooltip.module.d.ts +1 -6
- package/transfer/transfer.component.d.ts +6 -9
- package/transfer/transfer.module.d.ts +1 -15
- package/tree/tree-node.component.d.ts +6 -10
- package/tree/tree.component.d.ts +1 -1
- package/tree/tree.module.d.ts +1 -11
- package/tree-file/tree-file.component.d.ts +5 -10
- package/tree-file/tree-file.module.d.ts +1 -9
- package/tree-select/tree-select-portal.component.d.ts +5 -7
- package/tree-select/tree-select.component.d.ts +14 -15
- package/tree-select/tree-select.module.d.ts +1 -14
- package/typography/typography.component.d.ts +3 -4
- package/typography/typography.module.d.ts +1 -3
- package/upload/upload-portal.component.d.ts +5 -7
- package/upload/upload.component.d.ts +12 -16
- package/upload/upload.module.d.ts +1 -14
|
@@ -2,16 +2,15 @@ import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ViewC
|
|
|
2
2
|
import { XTreePrefix, XTreeProperty } from './tree.property';
|
|
3
3
|
import { XIsEmpty, XIsFunction, XIsUndefined, XIsChange, XSetData, XResize, XRemove } from '@ng-nest/ui/core';
|
|
4
4
|
import { debounceTime, map, Subject, takeUntil } from 'rxjs';
|
|
5
|
+
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
5
6
|
import { XTreeNodeComponent } from './tree-node.component';
|
|
6
|
-
import {
|
|
7
|
+
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
8
|
+
import { XIconComponent } from '@ng-nest/ui/icon';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
10
|
import * as i1 from "@ng-nest/ui/core";
|
|
9
11
|
import * as i2 from "./tree.service";
|
|
10
|
-
import * as i3 from "@angular/
|
|
11
|
-
import * as i4 from "@angular/cdk/
|
|
12
|
-
import * as i5 from "@ng-nest/ui/icon";
|
|
13
|
-
import * as i6 from "@angular/cdk/scrolling";
|
|
14
|
-
import * as i7 from "./tree-node.component";
|
|
12
|
+
import * as i3 from "@angular/cdk/drag-drop";
|
|
13
|
+
import * as i4 from "@angular/cdk/scrolling";
|
|
15
14
|
export class XTreeComponent extends XTreeProperty {
|
|
16
15
|
set _nodeComponents(value) {
|
|
17
16
|
this.nodeComponents = value;
|
|
@@ -171,8 +170,7 @@ export class XTreeComponent extends XTreeProperty {
|
|
|
171
170
|
}
|
|
172
171
|
}
|
|
173
172
|
}
|
|
174
|
-
if ((!this.lazy && (XIsUndefined(node.leaf) || regetChildren)) ||
|
|
175
|
-
node.id === lazyParant?.id) {
|
|
173
|
+
if ((!this.lazy && (XIsUndefined(node.leaf) || regetChildren)) || node.id === lazyParant?.id) {
|
|
176
174
|
node.leaf = node.children?.length === 0;
|
|
177
175
|
}
|
|
178
176
|
if (!node.leaf)
|
|
@@ -378,9 +376,7 @@ export class XTreeComponent extends XTreeProperty {
|
|
|
378
376
|
let before = this.activatedNode;
|
|
379
377
|
if (this.multiple) {
|
|
380
378
|
if (this.activatedId.length > 0) {
|
|
381
|
-
let ids = this.objectArray
|
|
382
|
-
? this.activatedId.map((x) => x.id)
|
|
383
|
-
: this.activatedId;
|
|
379
|
+
let ids = this.objectArray ? this.activatedId.map((x) => x.id) : this.activatedId;
|
|
384
380
|
for (let i = 0; i < ids.length; i++) {
|
|
385
381
|
let node = nodes.find((x) => x.id === ids[i]);
|
|
386
382
|
if (node) {
|
|
@@ -551,12 +547,12 @@ export class XTreeComponent extends XTreeProperty {
|
|
|
551
547
|
trackByItem(_index, item) {
|
|
552
548
|
return `${item.id}-${item.level}`;
|
|
553
549
|
}
|
|
554
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
555
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
550
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }, { token: i0.NgZone }, { token: i2.XTreeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
551
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.7", type: XTreeComponent, isStandalone: true, selector: "x-tree", viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true, static: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true }, { propertyName: "dropList", first: true, predicate: ["dropList"], descendants: true }, { propertyName: "_nodeComponents", predicate: XTreeNodeComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf\">\r\n @if (virtualScroll) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty\"\r\n [cdkDropListData]=\"nodes\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty\"\r\n [cdkDropListData]=\"nodes\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes; track node.id) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n@if (lazy) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n", styles: [".x-tree{margin:0;padding:0}.x-tree-only-leaf .x-tree-node-sub{color:var(--x-text-300)}.x-tree-content.cdk-drop-list-dragging x-tree-node .x-tree-node-content:not(.x-disabled):not(.x-activated):hover{background-color:transparent}.x-tree-content.cdk-drop-list-dragging x-tree-node.cdk-drag-placeholder .x-tree-node-content{color:var(--x-primary);background-color:var(--x-background-a200);opacity:.8}.x-tree-content.cdk-drop-list-dragging x-tree-node:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i4.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["tree"], outputs: ["nodeMouseenter"] }, { kind: "component", type: XIconComponent, selector: "x-icon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
556
552
|
}
|
|
557
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
553
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeComponent, decorators: [{
|
|
558
554
|
type: Component,
|
|
559
|
-
args: [{ selector: `${XTreePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
555
|
+
args: [{ selector: `${XTreePrefix}`, standalone: true, imports: [DragDropModule, ScrollingModule, XTreeNodeComponent, XIconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #tree class=\"x-tree\" [class.x-tree-only-leaf]=\"onlyLeaf\">\r\n @if (virtualScroll) {\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty\"\r\n [cdkDropListData]=\"nodes\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></x-tree-node>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n } @else {\r\n <div\r\n class=\"x-tree-content\"\r\n #dropList\r\n cdkDropList\r\n [cdkDropListDisabled]=\"!drag\"\r\n [cdkDropListSortingDisabled]=\"true\"\r\n [hidden]=\"isEmpty\"\r\n [cdkDropListData]=\"nodes\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n >\r\n @for (node of nodes; track node.id) {\r\n <x-tree-node\r\n cdkDrag\r\n [cdkDragDisabled]=\"node.disabled\"\r\n (cdkDragStarted)=\"cdkDragStarted($event)\"\r\n (cdkDragEnded)=\"cdkDragEnded($event)\"\r\n (cdkDragMoved)=\"cdkDragMoved($event)\"\r\n [cdkDragData]=\"node\"\r\n (nodeMouseenter)=\"nodeMouseenter($event)\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></x-tree-node>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n@if (lazy) {\r\n <x-icon [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n}\r\n", styles: [".x-tree{margin:0;padding:0}.x-tree-only-leaf .x-tree-node-sub{color:var(--x-text-300)}.x-tree-content.cdk-drop-list-dragging x-tree-node .x-tree-node-content:not(.x-disabled):not(.x-activated):hover{background-color:transparent}.x-tree-content.cdk-drop-list-dragging x-tree-node.cdk-drag-placeholder .x-tree-node-content{color:var(--x-primary);background-color:var(--x-background-a200);opacity:.8}.x-tree-content.cdk-drop-list-dragging x-tree-node:not(.cdk-drag-placeholder){transition:transform var(--x-animation-duration-base) cubic-bezier(0,0,.2,1)}\n"] }]
|
|
560
556
|
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }, { type: i0.NgZone }, { type: i2.XTreeService }], propDecorators: { tree: [{
|
|
561
557
|
type: ViewChild,
|
|
562
558
|
args: ['tree', { static: true }]
|
|
@@ -570,4 +566,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
|
|
|
570
566
|
type: ViewChildren,
|
|
571
567
|
args: [XTreeNodeComponent]
|
|
572
568
|
}] } });
|
|
573
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixTQUFTLEVBSVQsWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsWUFBWSxFQUNaLFNBQVMsRUFDVCxRQUFRLEVBRVIsT0FBTyxFQUNQLE9BQU8sRUFFUixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFRM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFVOUMsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBSy9DLElBQ1csZUFBZSxDQUFDLEtBQW9DO1FBQzdELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFjRCxJQUFJLE9BQU87UUFDVCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUlELFlBQ1MsUUFBbUIsRUFDbkIsVUFBbUMsRUFDbkMsR0FBc0IsRUFDdEIsYUFBNkIsRUFDN0IsTUFBYyxFQUNkLFdBQXlCO1FBRWhDLEtBQUssRUFBRSxDQUFDO1FBUEQsYUFBUSxHQUFSLFFB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QyxVQUFVO2dCQUdWLGVBQWU7c0JBRHpCLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgTmdab25lXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlUHJlZml4LCBYVHJlZU5vZGUsIFhUcmVlUHJvcGVydHkgfSBmcm9tICcuL3RyZWUucHJvcGVydHknO1xyXG5pbXBvcnQge1xyXG4gIFhJc0VtcHR5LFxyXG4gIFhJc0Z1bmN0aW9uLFxyXG4gIFhJc1VuZGVmaW5lZCxcclxuICBYSXNDaGFuZ2UsXHJcbiAgWFNldERhdGEsXHJcbiAgWENvbmZpZ1NlcnZpY2UsXHJcbiAgWFJlc2l6ZSxcclxuICBYUmVtb3ZlLFxyXG4gIFhSZXNpemVPYnNlcnZlclxyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xyXG5pbXBvcnQgeyBYVHJlZU5vZGVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtbm9kZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gIENka0RyYWcsXHJcbiAgQ2RrRHJhZ0VuZCxcclxuICBDZGtEcmFnTW92ZSxcclxuICBDZGtEcmFnU3RhcnQsXHJcbiAgQ2RrRHJvcExpc3RcclxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgWFRyZWVTZXJ2aWNlIH0gZnJvbSAnLi90cmVlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hUcmVlUHJlZml4fWAsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RyZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHByb3ZpZGVyczogW1hUcmVlU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlQ29tcG9uZW50IGV4dGVuZHMgWFRyZWVQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQFZpZXdDaGlsZCgndHJlZScsIHsgc3RhdGljOiB0cnVlIH0pIHRyZWUhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCd2aXJ0dWFsQm9keScpIHZpcnR1YWxCb2R5ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xyXG4gIEBWaWV3Q2hpbGQoJ2Ryb3BMaXN0JykgZHJvcExpc3QhOiBDZGtEcm9wTGlzdDxIVE1MRWxlbWVudD47XHJcbiAgbm9kZUNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8WFRyZWVOb2RlQ29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKFhUcmVlTm9kZUNvbXBvbmVudClcclxuICBwdWJsaWMgc2V0IF9ub2RlQ29tcG9uZW50cyh2YWx1ZTogUXVlcnlMaXN0PFhUcmVlTm9kZUNvbXBvbmVudD4pIHtcclxuICAgIHRoaXMubm9kZUNvbXBvbmVudHMgPSB2YWx1ZTtcclxuICB9XHJcbiAgbm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgdmlydHVhbE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gIGFjdGl2YXRlZE5vZGUhOiBYVHJlZU5vZGU7XHJcbiAgZGF0YUlzRnVuYyA9IGZhbHNlO1xyXG4gIGdldHRpbmcgPSBmYWxzZTtcclxuICB0cmVlRGF0YTogWFRyZWVOb2RlW10gPSBbXTtcclxuXHJcbiAgZHJhZ2dpbmcgPSBmYWxzZTtcclxuICBkcmFnUG9zaXRpb24hOiAtMSB8IDE7XHJcbiAgaG92ZXJUcmVlTm9kZSE6IFhUcmVlTm9kZTtcclxuICBob3ZlclRyZWVFbGUhOiBFbGVtZW50UmVmO1xyXG4gIGRyYWdnaW5nVHJlZU5vZGU6IFhUcmVlTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiBYSXNFbXB0eSh0aGlzLm5vZGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIhOiBYUmVzaXplT2JzZXJ2ZXI7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlLFxyXG4gICAgcHVibGljIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHVibGljIHRyZWVTZXJ2aWNlOiBYVHJlZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGV4cGFuZGVkQWxsLCBkYXRhLCBhY3RpdmF0ZWRJZCwgY2hlY2tlZCwgbWFudWFsIH0gPSBjaGFuZ2VzO1xyXG4gICAgWElzQ2hhbmdlKGRhdGEpICYmIHRoaXMuc2V0RGF0YSgpO1xyXG4gICAgWElzQ2hhbmdlKGFjdGl2YXRlZElkKSAmJiB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy50cmVlRGF0YSk7XHJcbiAgICBYSXNDaGFuZ2UoZXhwYW5kZWRBbGwpICYmIHRoaXMuc2V0RXhwYW5kZWRBbGwoKTtcclxuICAgIFhJc0NoYW5nZShjaGVja2VkKSAmJiB0aGlzLnNldENoZWNrZWRLZXlzKHRoaXMuY2hlY2tlZCk7XHJcbiAgICBYSXNDaGFuZ2UobWFudWFsKSAmJiB0aGlzLnNldE1hbnVhbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLmhlaWdodEFkYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2V0VmlydHVhbFNjcm9sbEhlaWdodCgpO1xyXG4gICAgICBYUmVzaXplKHRoaXMuaGVpZ2h0QWRhcHRpb24gYXMgSFRNTEVsZW1lbnQpXHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSB4LnJlc2l6ZU9ic2VydmVyO1xyXG4gICAgICAgICAgdGhpcy5zZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFNjb3JsbFRvcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0YSgpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5kYXRhID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xyXG4gICAgdGhpcy5kYXRhSXNGdW5jID0gZmFsc2U7XHJcbiAgICBpZiAoWElzRnVuY3Rpb24odGhpcy5kYXRhKSkge1xyXG4gICAgICB0aGlzLmRhdGFJc0Z1bmMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFhTZXREYXRhPFhUcmVlTm9kZT4odGhpcy5kYXRhLCB0aGlzLl91blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh4KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjZGtEcmFnU3RhcnRlZChldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZHJhZ2dpbmdUcmVlTm9kZSA9IGV2ZW50LnNvdXJjZS5kYXRhO1xyXG4gICAgaWYgKGV2ZW50LnNvdXJjZS5kYXRhLm9wZW4pIHtcclxuICAgICAgdGhpcy5vblRvZ2dsZShldmVudC5ldmVudCwgZXZlbnQuc291cmNlLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlRHJhZ1N0YXJ0ZWQuZW1pdCh7IGV2ZW50LCBmcm9tOiB0aGlzLmRyYWdnaW5nVHJlZU5vZGUhIH0pO1xyXG4gIH1cclxuXHJcbiAgY2RrRHJhZ0VuZGVkKGV2ZW50OiBDZGtEcmFnRW5kKSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5ob3ZlclRyZWVOb2RlKSB7XHJcbiAgICAgIGlmICh0aGlzLmhvdmVyVHJlZU5vZGUuaWQgIT09IGV2ZW50LnNvdXJjZS5kYXRhLmlkKSB7XHJcbiAgICAgICAgdGhpcy5pbnNlcnROb2RlKGV2ZW50LnNvdXJjZS5kYXRhLCB0aGlzLmhvdmVyVHJlZU5vZGUsIHRoaXMuZHJhZ1Bvc2l0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIHRoaXMuaG92ZXJUcmVlTm9kZS5jaGFuZ2UoKTtcclxuICAgICAgdGhpcy5ub2RlRHJhZ0VuZGVkLmVtaXQoe1xyXG4gICAgICAgIGV2ZW50LFxyXG4gICAgICAgIGZyb206IGV2ZW50LnNvdXJjZS5kYXRhLFxyXG4gICAgICAgIHRvOiB0aGlzLmhvdmVyVHJlZU5vZGUsXHJcbiAgICAgICAgcG9zaXRpb246IHRoaXMuZHJhZ1Bvc2l0aW9uXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5zZXJ0Tm9kZShkcmFnTm9kZTogWFRyZWVOb2RlLCBob3Zlck5vZGU6IFhUcmVlTm9kZSwgZHJhZ1Bvc2l0aW9uOiAtMSB8IDEpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLm5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGRyYWdOb2RlLnBpZCk7XHJcbiAgICB0aGlzLnRyZWVTZXJ2aWNlLm1vdmVOb2RlKHRoaXMudHJlZURhdGEsIGRyYWdOb2RlLCBob3Zlck5vZGUsIGRyYWdQb3NpdGlvbik7XHJcbiAgICB0aGlzLnNldERhdGFDaGFuZ2UodGhpcy50cmVlRGF0YSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHBhcmVudCk7XHJcbiAgfVxyXG5cclxuICBjZGtEcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlPFhUcmVlTm9kZT4pIHtcclxuICAgIGlmICghdGhpcy5kcmFnZ2luZyB8fCAhdGhpcy5ob3ZlclRyZWVOb2RlKSByZXR1cm47XHJcbiAgICBjb25zdCB5ID0gZXZlbnQucG9pbnRlclBvc2l0aW9uLnk7XHJcbiAgICBpZiAoZXZlbnQuc291cmNlLmRhdGEuaWQgPT09IHRoaXMuaG92ZXJUcmVlTm9kZS5pZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5ob3ZlclRyZWVFbGUubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHsgdG9wLCBoZWlnaHQgfSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGRlcyA9IE1hdGgubWF4KGhlaWdodCAqIDAuNSwgMik7XHJcbiAgICBpZiAoeSA+IHRvcCAmJiB5IDwgdG9wICsgZGVzKSB7XHJcbiAgICAgIHRoaXMuZHJhZ1Bvc2l0aW9uID0gLTE7XHJcbiAgICB9IGVsc2UgaWYgKHkgPiB0b3AgKyBkZXMgJiYgeSA8IHRvcCArIGhlaWdodCkge1xyXG4gICAgICB0aGlzLmRyYWdQb3NpdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIHRoaXMuaG92ZXJUcmVlTm9kZS5jaGFuZ2UoKTtcclxuICAgIHRoaXMubm9kZURyYWdNb3ZlZC5lbWl0KHtcclxuICAgICAgZXZlbnQsXHJcbiAgICAgIGZyb206IHRoaXMuZHJhZ2dpbmdUcmVlTm9kZSEsXHJcbiAgICAgIHRvOiB0aGlzLmhvdmVyVHJlZU5vZGUsXHJcbiAgICAgIHBvc2l0aW9uOiB0aGlzLmRyYWdQb3NpdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmVkaWNhdGUoX2RyYWc6IENka0RyYWc8WFRyZWVOb2RlPiwgX2Ryb3A6IENka0Ryb3BMaXN0PFhUcmVlTm9kZT4pIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCkge1xyXG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsSGVpZ2h0ID0gKHRoaXMuaGVpZ2h0QWRhcHRpb24gYXMgSFRNTEVsZW1lbnQpLmNsaWVudEhlaWdodDtcclxuICAgIHRoaXMubWluQnVmZmVyUHggPSB0aGlzLnZpcnR1YWxTY3JvbGxIZWlnaHQ7XHJcbiAgICB0aGlzLm1heEJ1ZmZlclB4ID0gdGhpcy52aXJ0dWFsU2Nyb2xsSGVpZ2h0ICogMS4yO1xyXG4gICAgdGhpcy52aXJ0dWFsQm9keVsnX3Njcm9sbFN0cmF0ZWd5J11bJ19taW5CdWZmZXJQeCddID0gdGhpcy5taW5CdWZmZXJQeDtcclxuICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWF4QnVmZmVyUHgnXSA9IHRoaXMubWF4QnVmZmVyUHg7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE1hbnVhbCgpIHtcclxuICAgIGlmICh0aGlzLmRhdGFJc0Z1bmMpIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhQnlGdW5jKCkge1xyXG4gICAgaWYgKCF0aGlzLm1hbnVhbCkgcmV0dXJuO1xyXG4gICAgWFNldERhdGE8WFRyZWVOb2RlPigodGhpcy5kYXRhIGFzIEZ1bmN0aW9uKSgpLCB0aGlzLl91blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnNldERhdGFDaGFuZ2UoeCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YUNoYW5nZShcclxuICAgIHZhbHVlOiBYVHJlZU5vZGVbXSxcclxuICAgIHJlZ2V0Q2hpbGRyZW4gPSBmYWxzZSxcclxuICAgIGluaXQgPSB0cnVlLFxyXG4gICAgcGFyZW50T3BlbiA9IHRydWUsXHJcbiAgICBsYXp5UGFyYW50PzogWFRyZWVOb2RlXHJcbiAgKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5jaGVja2VkKSkgdGhpcy5jaGVja2VkID0gW107XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlOiBYVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKGluaXQpIHtcclxuICAgICAgICBub2RlLmxldmVsID0gbGV2ZWw7XHJcbiAgICAgICAgbm9kZS5vcGVuID1cclxuICAgICAgICAgIEJvb2xlYW4odGhpcy5leHBhbmRlZEFsbCkgfHxcclxuICAgICAgICAgIGxldmVsIDw9IE51bWJlcih0aGlzLmV4cGFuZGVkTGV2ZWwpIHx8XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkLmluY2x1ZGVzKG5vZGUuaWQpIHx8XHJcbiAgICAgICAgICBub2RlLm9wZW47XHJcbiAgICAgICAgbm9kZS5jaGVja2VkID0gdGhpcy5jaGVja2VkLmluY2x1ZGVzKG5vZGUuaWQpIHx8IG5vZGUuY2hlY2tlZDtcclxuICAgICAgICBub2RlLmNoaWxkcmVuTG9hZGVkID0gbm9kZS5vcGVuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5jaGlsZHJlbikgfHwgcmVnZXRDaGlsZHJlbikge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSB2YWx1ZS5maWx0ZXIoKHkpID0+IHkucGlkID09PSBub2RlLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5sZXZlbENoZWNrICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGVja2VkKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBuZCBvZiBub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIG5kLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQucHVzaChuZC5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChcclxuICAgICAgICAoIXRoaXMubGF6eSAmJiAoWElzVW5kZWZpbmVkKG5vZGUubGVhZikgfHwgcmVnZXRDaGlsZHJlbikpIHx8XHJcbiAgICAgICAgbm9kZS5pZCA9PT0gbGF6eVBhcmFudD8uaWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgbm9kZS5sZWFmID0gKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCBhcyBudW1iZXIpID09PSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghbm9kZS5sZWFmKSBub2RlLmNoaWxkcmVuPy5tYXAoKHkpID0+IGdldENoaWxkcmVuKHksIGxldmVsICsgMSkpO1xyXG4gICAgICByZXR1cm4gbm9kZTtcclxuICAgIH07XHJcbiAgICB0aGlzLnRyZWVEYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLm5vZGVzID0gdmFsdWUuZmlsdGVyKCh4KSA9PiBYSXNFbXB0eSh4LnBpZCkpLm1hcCgoeCkgPT4gZ2V0Q2hpbGRyZW4oeCwgMCkpO1xyXG4gICAgaWYgKHBhcmVudE9wZW4pIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgIGlmICghaXRlbS5sZWFmICYmIGl0ZW0ub3Blbikge1xyXG4gICAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKHZhbHVlLCBpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2V0RXhwYW5kZWQoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5vZGVNb3VzZWVudGVyKCRldmVudDogeyBldmVudDogTW91c2VFdmVudDsgbm9kZTogWFRyZWVOb2RlOyBlbGU6IEVsZW1lbnRSZWYgfSkge1xyXG4gICAgY29uc3QgeyBub2RlLCBlbGUgfSA9ICRldmVudDtcclxuICAgIGlmICghdGhpcy5kcmFnZ2luZykgcmV0dXJuO1xyXG4gICAgbGV0IGJlZm9yZSA9IHRoaXMuaG92ZXJUcmVlTm9kZTtcclxuICAgIHRoaXMuaG92ZXJUcmVlTm9kZSA9IG5vZGU7XHJcbiAgICB0aGlzLmhvdmVyVHJlZUVsZSA9IGVsZTtcclxuICAgIHRoaXMuaG92ZXJUcmVlTm9kZS5jaGFuZ2UgJiYgdGhpcy5ob3ZlclRyZWVOb2RlLmNoYW5nZSgpO1xyXG4gICAgaWYgKGJlZm9yZSkge1xyXG4gICAgICBiZWZvcmUuY2hhbmdlICYmIGJlZm9yZS5jaGFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW5vZGUubGVhZiAmJiAhbm9kZS5vcGVuKSB7XHJcbiAgICAgIGxldCBmcm9tID0gdGhpcy5ub2Rlcy5pbmRleE9mKHRoaXMuZHJhZ2dpbmdUcmVlTm9kZSEpO1xyXG4gICAgICBsZXQgdG8gPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XHJcbiAgICAgIGlmICh0byAtIGZyb20gIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5vblRvZ2dsZShudWxsISwgbm9kZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZWxzZSB7XHJcbiAgICAgIC8vICAgbGV0IGFkZE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gICAgICAvLyAgIG5vZGUub3BlbiA9IHRydWU7XHJcbiAgICAgIC8vICAgY29uc3QgZ2V0Tm9kZXMgPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAvLyAgICAgaWYgKFhJc0VtcHR5KG5kLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAvLyAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgIC8vICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAvLyAgICAgICBjaGlsZC5vcGVuICYmIGdldE5vZGVzKGNoaWxkKTtcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9O1xyXG4gICAgICAvLyAgIGdldE5vZGVzKG5vZGUpO1xyXG4gICAgICAvLyAgIGxldCBub2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICAgICAgLy8gICBub2Rlcy5zcGxpY2UodG8gKyAxLCAwLCAuLi5hZGROb2Rlcyk7XHJcbiAgICAgIC8vICAgdGhpcy5ub2RlcyA9IG5vZGVzO1xyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTY29ybGxUb3AoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsRWxlbWVudCB8fCAhdGhpcy5hY3RpdmF0ZWROb2RlKSByZXR1cm47XHJcbiAgICBsZXQgaW54ID0gdGhpcy5ub2Rlcy5pbmRleE9mKHRoaXMuYWN0aXZhdGVkTm9kZSk7XHJcbiAgICBsZXQgY29tID0gdGhpcy5ub2RlQ29tcG9uZW50cy5nZXQoaW54KTtcclxuICAgIGlmICghY29tKSByZXR1cm47XHJcbiAgICBsZXQgZWxlID0gY29tLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGxldCBzY3JvbGxFbGUgPSB0aGlzLnNjcm9sbEVsZW1lbnQ7XHJcbiAgICBsZXQgbWluID0gc2Nyb2xsRWxlLnNjcm9sbFRvcDtcclxuICAgIGxldCBtYXggPSBzY3JvbGxFbGUuc2Nyb2xsVG9wICsgc2Nyb2xsRWxlLmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGUub2Zmc2V0VG9wICsgZWxlLmNsaWVudEhlaWdodCA+IG1heCkge1xyXG4gICAgICBsZXQgc2Nyb2xsVG9wID0gZWxlLm9mZnNldFRvcCArIGVsZS5jbGllbnRIZWlnaHQgLSBzY3JvbGxFbGUuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBzY3JvbGxFbGUuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsZS5vZmZzZXRUb3AgPCBtaW4pIHtcclxuICAgICAgc2Nyb2xsRWxlLnNjcm9sbFRvcCA9IGVsZS5vZmZzZXRUb3A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkTm9kZXMoKTogWFRyZWVOb2RlW10ge1xyXG4gICAgbGV0IHJlc3VsdDogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5jaGVja2VkICYmICFyZXN1bHQuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIHhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgZ2V0Q2hpbGRyZW4odGhpcy5ub2Rlcyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZEtleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja2VkTm9kZXMoKS5tYXAoKHgpID0+IHguaWQpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tlZEtleXMoa2V5czogYW55W10gPSBbXSkge1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUcmVlTm9kZVtdLCBjbGVhciA9IGZhbHNlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHguY2hlY2tlZCA9ICFjbGVhciAmJiBrZXlzLmluY2x1ZGVzKHguaWQpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKHRydWUpO1xyXG4gICAgICAgIHNldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10sIGNsZWFyKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2RlcywgWElzRW1wdHkoa2V5cykpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RXhwYW5kZWRBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZEFsbCAmJiB0aGlzLnRyZWVEYXRhLmxlbmd0aCA9PT0gdGhpcy5ub2Rlcy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICB4Lm9wZW4gPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLmV4cGFuZGVkQWxsID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLm5vZGVzID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsTm9kZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsTm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLnZpcnR1YWxOb2Rlc107XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy52aXJ0dWFsTm9kZXMpIHtcclxuICAgICAgICB0aGlzLnNldFZpcnR1YWxFeHBhbmRlZEFsbChpdGVtLCB0aGlzLmV4cGFuZGVkQWxsIGFzIGJvb2xlYW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRFeHBhbmRlZCgpIHtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5ub2Rlcykge1xyXG4gICAgICBpZiAoaXRlbS5vcGVuICYmIGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi4oaXRlbS5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uY2hhbmdlICYmIGl0ZW0uY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gIH1cclxuXHJcbiAgc2V0VmlydHVhbEV4cGFuZGVkQWxsKGl0ZW06IFhUcmVlTm9kZSwgZXhwYW5kZWRBbGw6IGJvb2xlYW4pIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihpdGVtKTtcclxuICAgIGlmIChleHBhbmRlZEFsbCkge1xyXG4gICAgICBsZXQgYWRkTm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICAgIGNvbnN0IGdldE5vZGVzID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBuZC5jaGlsZHJlbiEpIHtcclxuICAgICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgZ2V0Tm9kZXMoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgZ2V0Tm9kZXMoaXRlbSk7XHJcbiAgICAgIHRoaXMubm9kZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgLi4uYWRkTm9kZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICB9XHJcblxyXG4gIHZpcnR1YWxUb2dnbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGxldCBhZGROb2RlczogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgICAgY29uc3QgZ2V0Tm9kZXMgPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAgIGlmIChYSXNFbXB0eShuZC5jaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBuZC5jaGlsZHJlbiEpIHtcclxuICAgICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgY2hpbGQub3BlbiAmJiBnZXROb2RlcyhjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBnZXROb2Rlcyhub2RlKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi5hZGROb2Rlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGVsQ291bnQgPSAwO1xyXG4gICAgICBjb25zdCBnZXRDb3VudCA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc0VtcHR5KG5kLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAgIGRlbENvdW50ICs9IG5kLmNoaWxkcmVuIS5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBjaGlsZC5vcGVuICYmIGdldENvdW50KGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldENvdW50KG5vZGUpO1xyXG4gICAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCArIDEsIGRlbENvdW50KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFkZE9yUmVtb3ZlRXhwYW5kZWQobm9kZSk7XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgdGhpcy52aXJ0dWFsQm9keT8uY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFkZE9yUmVtb3ZlRXhwYW5kZWQobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGlmICghdGhpcy5leHBhbmRlZC5pbmNsdWRlcyhub2RlLmlkKSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWQucHVzaChub2RlLmlkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZXhwYW5kZWQuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkLnNwbGljZSh0aGlzLmV4cGFuZGVkLmluZGV4T2Yobm9kZS5pZCksIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmF0ZWROb2RlKG5vZGVzOiBYVHJlZU5vZGVbXSwgcGFyZW50T3BlbiA9IHRydWUsIGRhdGFDaGFuZ2UgPSB0cnVlKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5hY3RpdmF0ZWRJZCkgJiYgdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZElkID0gW107XHJcbiAgICB9XHJcbiAgICBsZXQgYmVmb3JlID0gdGhpcy5hY3RpdmF0ZWROb2RlO1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZhdGVkSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBpZHMgPSB0aGlzLm9iamVjdEFycmF5XHJcbiAgICAgICAgICA/IHRoaXMuYWN0aXZhdGVkSWQubWFwKCh4OiBYVHJlZU5vZGUpID0+IHguaWQpXHJcbiAgICAgICAgICA6IHRoaXMuYWN0aXZhdGVkSWQ7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBub2RlID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gaWRzW2ldKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgICAgICBpZiAobm9kZSkge1xyXG4gICAgICAgICAgICBwYXJlbnRPcGVuICYmIHRoaXMuc2V0UGFyZW50T3Blbihub2Rlcywgbm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChpID09PSBpZHMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkTm9kZSA9IG5vZGU7XHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2YXRlZE5vZGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgYWN0aXZhdGVkSWQgPSB0aGlzLmFjdGl2YXRlZElkO1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZE5vZGUgPSBub2Rlcy5maW5kKCh4KSA9PiB4LmlkID09IGFjdGl2YXRlZElkKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgIGlmICh0aGlzLmFjdGl2YXRlZE5vZGUpIHtcclxuICAgICAgICBwYXJlbnRPcGVuICYmIHRoaXMuc2V0UGFyZW50T3Blbihub2RlcywgdGhpcy5hY3RpdmF0ZWROb2RlKTtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZENoYW5nZS5lbWl0KHRoaXMuYWN0aXZhdGVkTm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChiZWZvcmUpIHtcclxuICAgICAgYmVmb3JlLmNoYW5nZSAmJiBiZWZvcmUuY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIVhJc0VtcHR5KG5vZGVzKSAmJiBkYXRhQ2hhbmdlKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZShub2RlcywgZmFsc2UsIHRydWUsIHBhcmVudE9wZW4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFyZW50T3Blbihub2RlczogWFRyZWVOb2RlW10sIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgZ2V0UGFyZW50ID0gKGNoaWxkOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkLnBpZCkpIHJldHVybjtcclxuICAgICAgY29uc3QgcGFyZW50ID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgIGlmICghWElzRW1wdHkocGFyZW50KSkge1xyXG4gICAgICAgIGlmICghdGhpcy5leHBhbmRlZC5pbmNsdWRlcyhwYXJlbnQuaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gWy4uLnRoaXMuZXhwYW5kZWQsIHBhcmVudC5pZF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgICAgICBnZXRQYXJlbnQocGFyZW50KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGdldFBhcmVudChub2RlKTtcclxuICB9XHJcblxyXG4gIHNldFBhcmVudENoZWNrKG5vZGVzOiBYVHJlZU5vZGVbXSwgbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBjb25zdCBnZXRQYXJlbnQgPSAoY2hpbGQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGQucGlkKSkgcmV0dXJuO1xyXG4gICAgICBjb25zdCBwYXJlbnQgPSBub2Rlcy5maW5kKCh4KSA9PiB4LmlkID09PSBjaGlsZC5waWQpIGFzIFhUcmVlTm9kZTtcclxuICAgICAgaWYgKCFYSXNFbXB0eShwYXJlbnQpKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmV4cGFuZGVkLmluY2x1ZGVzKHBhcmVudC5pZCkpIHtcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBbLi4udGhpcy5leHBhbmRlZCwgcGFyZW50LmlkXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFyZW50Lm9wZW4gPSB0cnVlO1xyXG4gICAgICAgIHBhcmVudC5jaGFuZ2UgJiYgcGFyZW50LmNoYW5nZSgpO1xyXG4gICAgICAgIGdldFBhcmVudChwYXJlbnQpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgZ2V0UGFyZW50KG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgb25Ub2dnbGUoZXZlbnQ6IEV2ZW50LCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgIG5vZGUub3BlbiA9ICFub2RlLm9wZW47XHJcbiAgICAgIGlmICh0aGlzLmxhenkgJiYgIW5vZGUuY2hpbGRyZW5Mb2FkZWQpIHtcclxuICAgICAgICB0aGlzLmdldExhenlEYXRhKG5vZGUsICgpID0+IHRoaXMudmlydHVhbFRvZ2dsZShub2RlKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsVG9nZ2xlKG5vZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExhenlEYXRhKG5vZGU6IFhUcmVlTm9kZSwgY2FsbEJhY2s/OiAoKSA9PiB2b2lkKSB7XHJcbiAgICBub2RlLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICh0aGlzLmRhdGEgYXMgKHBpZD86IGFueSkgPT4gT2JzZXJ2YWJsZTxYVHJlZU5vZGVbXT4pKG5vZGUuaWQpXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoeCkgPT5cclxuICAgICAgICAgIHgubWFwKCh5KSA9PiB7XHJcbiAgICAgICAgICAgIHkubGV2ZWwgPSAobm9kZS5sZXZlbCBhcyBudW1iZXIpICsgMTtcclxuICAgICAgICAgICAgeS5jaGVja2VkID0gbm9kZS5jaGVja2VkO1xyXG4gICAgICAgICAgICByZXR1cm4geTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuID0geDtcclxuICAgICAgICBub2RlLmNoaWxkcmVuTG9hZGVkID0gdHJ1ZTtcclxuICAgICAgICBub2RlLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhID0gWy4uLnRoaXMudHJlZURhdGEsIC4uLnhdO1xyXG4gICAgICAgIGlmIChjYWxsQmFjaykgY2FsbEJhY2soKTtcclxuICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhZGROb2RlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZURhdGEuZmluZCgoeCkgPT4geC5pZCA9PT0gbm9kZS5waWQpITtcclxuICAgIGNvbnN0IF9hZGROb2RlID0gKCkgPT4ge1xyXG4gICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgbm9kZS5sZXZlbCA9IHBhcmVudC5sZXZlbCEgKyAxO1xyXG4gICAgICAgIG5vZGUucGlkID0gcGFyZW50LmlkO1xyXG4gICAgICAgIG5vZGUubGVhZiA9IHRydWU7XHJcbiAgICAgICAgcGFyZW50LmxlYWYgPSBmYWxzZTtcclxuICAgICAgICBwYXJlbnQub3BlbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YSA9IFsuLi50aGlzLnRyZWVEYXRhLCBub2RlXTtcclxuICAgICAgICB0aGlzLnNldFBhcmVudE9wZW4odGhpcy50cmVlRGF0YSwgbm9kZSk7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhQ2hhbmdlKHRoaXMudHJlZURhdGEsIHRydWUsIGZhbHNlLCBmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWRJZChub2RlKTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy5ub2RlcywgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgIG5vZGUuY2hhbmdlICYmIG5vZGUuY2hhbmdlKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoWElzRW1wdHkobm9kZS5waWQpKSB7XHJcbiAgICAgICAgbm9kZS5sZXZlbCA9IDA7XHJcbiAgICAgICAgbm9kZS5sZWFmID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRyZWVEYXRhID0gWy4uLnRoaXMudHJlZURhdGEsIG5vZGVdO1xyXG4gICAgICAgIHRoaXMubm9kZXMgPSBbLi4udGhpcy5ub2Rlcywgbm9kZV07XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWRJZChub2RlKTtcclxuICAgICAgICB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy5ub2RlcywgdHJ1ZSwgZmFsc2UpO1xyXG4gICAgICAgIG5vZGUuY2hhbmdlICYmIG5vZGUuY2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5sYXp5ICYmIHBhcmVudCAmJiAhcGFyZW50LmNoaWxkcmVuTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuZ2V0TGF6eURhdGEocGFyZW50LCAoKSA9PiB7XHJcbiAgICAgICAgX2FkZE5vZGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBfYWRkTm9kZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZhdGVkSWQobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICBpZiAodGhpcy5vYmplY3RBcnJheSkge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkSWQgPSBbbm9kZV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRJZCA9IFtub2RlLmlkXTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY3RpdmF0ZWRJZCA9IG5vZGUuaWQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2YXRlZElkQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmF0ZWRJZCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVOb2RlKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudHJlZURhdGEuZmluZCgoeCkgPT4geC5pZCA9PT0gbm9kZS5waWQpITtcclxuICAgIGNvbnN0IHJlbW92ZUNoaWxkcmVuID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgWFJlbW92ZSh0aGlzLnRyZWVEYXRhLCAoeCkgPT4geC5pZCA9PT0gbmQuaWQpO1xyXG4gICAgICBpZiAobmQuY2hpbGRyZW4pIHtcclxuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG5kLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICByZW1vdmVDaGlsZHJlbihpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICByZW1vdmVDaGlsZHJlbihub2RlKTtcclxuXHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGlmICghcGFyZW50LmNoaWxkcmVuKSBwYXJlbnQuY2hpbGRyZW4gPSBbXTtcclxuICAgICAgY29uc3QgY2hpbGRJbmRleCA9IHBhcmVudC5jaGlsZHJlbi5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICBpZiAoY2hpbGRJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgcGFyZW50LmNoaWxkcmVuLnNwbGljZShjaGlsZEluZGV4LCAxKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJlbnQubGVhZiA9IHBhcmVudC5jaGlsZHJlbi5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldERhdGFDaGFuZ2UodGhpcy50cmVlRGF0YSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZU5vZGUobm9kZTogWFRyZWVOb2RlLCBub3dOb2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIE9iamVjdC5hc3NpZ24obm9kZSwgbm93Tm9kZSk7XHJcbiAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IFhUcmVlTm9kZSkge1xyXG4gICAgcmV0dXJuIGAke2l0ZW0uaWR9LSR7aXRlbS5sZXZlbH1gO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICN0cmVlIGNsYXNzPVwieC10cmVlXCIgW2NsYXNzLngtdHJlZS1vbmx5LWxlYWZdPVwib25seUxlYWZcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXZpcnR1YWxTY3JvbGw7IGVsc2UgdmlydHVhbFNjcm9sbFRwbFwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIngtdHJlZS1jb250ZW50XCJcclxuICAgICAgI2Ryb3BMaXN0XHJcbiAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgIFtjZGtEcm9wTGlzdERpc2FibGVkXT1cIiFkcmFnXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICBbaGlkZGVuXT1cImlzRW1wdHlcIlxyXG4gICAgICBbY2RrRHJvcExpc3REYXRhXT1cIm5vZGVzXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwicHJlZGljYXRlXCJcclxuICAgID5cclxuICAgICAgPHgtdHJlZS1ub2RlXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXM7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCJcclxuICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgW2Nka0RyYWdEaXNhYmxlZF09XCJub2RlLmRpc2FibGVkXCJcclxuICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiY2RrRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJjZGtEcmFnRW5kZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJjZGtEcmFnTW92ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Nka0RyYWdEYXRhXT1cIm5vZGVcIlxyXG4gICAgICAgIChub2RlTW91c2VlbnRlcik9XCJub2RlTW91c2VlbnRlcigkZXZlbnQpXCJcclxuICAgICAgICBbbm9kZV09XCJub2RlXCJcclxuICAgICAgICBbbGF6eV09XCJsYXp5XCJcclxuICAgICAgICBbbGF6eURhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgW25vZGVIZWlnaHRdPVwibm9kZUhlaWdodFwiXHJcbiAgICAgICAgW25vZGVOb3dyYXBdPVwibm9kZU5vd3JhcFwiXHJcbiAgICAgICAgW25vZGVBbGlnbkl0ZW1zXT1cIm5vZGVBbGlnbkl0ZW1zXCJcclxuICAgICAgICBbdHJlZV09XCJ0aGlzXCJcclxuICAgICAgPjwveC10cmVlLW5vZGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI3ZpcnR1YWxTY3JvbGxUcGw+XHJcbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxyXG4gICAgI3ZpcnR1YWxCb2R5XHJcbiAgICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxyXG4gICAgW21pbkJ1ZmZlclB4XT1cIm1pbkJ1ZmZlclB4XCJcclxuICAgIFttYXhCdWZmZXJQeF09XCJtYXhCdWZmZXJQeFwiXHJcbiAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInZpcnR1YWxTY3JvbGxIZWlnaHRcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ4LXRyZWUtY29udGVudFwiXHJcbiAgICAgICNkcm9wTGlzdFxyXG4gICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ1wiXHJcbiAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJ0cnVlXCJcclxuICAgICAgW2hpZGRlbl09XCJpc0VtcHR5XCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJub2Rlc1wiXHJcbiAgICAgIFtjZGtEcm9wTGlzdEVudGVyUHJlZGljYXRlXT1cInByZWRpY2F0ZVwiXHJcbiAgICA+XHJcbiAgICAgIDx4LXRyZWUtbm9kZVxyXG4gICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IG5vZGUgb2Ygbm9kZXM7IHRlbXBsYXRlQ2FjaGVTaXplOiAwOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXHJcbiAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cImNka0RyYWdTdGFydGVkKCRldmVudClcIlxyXG4gICAgICAgIChjZGtEcmFnRW5kZWQpPVwiY2RrRHJhZ0VuZGVkKCRldmVudClcIlxyXG4gICAgICAgIChjZGtEcmFnTW92ZWQpPVwiY2RrRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgICAgIFtjZGtEcmFnRGF0YV09XCJub2RlXCJcclxuICAgICAgICAobm9kZU1vdXNlZW50ZXIpPVwibm9kZU1vdXNlZW50ZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgICAgW2xhenldPVwibGF6eVwiXHJcbiAgICAgICAgW2xhenlEYXRhXT1cImRhdGFcIlxyXG4gICAgICAgIFtub2RlSGVpZ2h0XT1cIm5vZGVIZWlnaHRcIlxyXG4gICAgICAgIFtub2RlTm93cmFwXT1cIm5vZGVOb3dyYXBcIlxyXG4gICAgICAgIFtub2RlQWxpZ25JdGVtc109XCJub2RlQWxpZ25JdGVtc1wiXHJcbiAgICAgICAgW3RyZWVdPVwidGhpc1wiXHJcbiAgICAgID48L3gtdHJlZS1ub2RlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIOaPkOWJjeWKoOi9vWxvYWRpbmfnmoTlm77moIctLT5cclxuPHgtaWNvbiAqbmdJZj1cImxhenlcIiBbc3R5bGUuZGlzcGxheV09XCInbm9uZSdcIiB0eXBlPVwiZnRvLWxvYWRlclwiPjwveC1pY29uPlxyXG4iXX0=
|
|
569
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBSWpCLHVCQUF1QixFQUN2QixTQUFTLEVBSVQsWUFBWSxFQUViLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQWEsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEUsT0FBTyxFQUNMLFFBQVEsRUFDUixXQUFXLEVBQ1gsWUFBWSxFQUNaLFNBQVMsRUFDVCxRQUFRLEVBRVIsT0FBTyxFQUNQLE9BQU8sRUFFUixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUE0QixlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQStELGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7O0FBV2xELE1BQU0sT0FBTyxjQUFlLFNBQVEsYUFBYTtJQUsvQyxJQUNXLGVBQWUsQ0FBQyxLQUFvQztRQUM3RCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBY0QsSUFBSSxPQUFPO1FBQ1QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFJRCxZQUNTLFFBQW1CLEVBQ25CLFVBQW1D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LG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO29OQUdWLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDVCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0QsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUdWLGVBQWU7c0JBRHpCLFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgUmVuZGVyZXIyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgVmlld0NoaWxkLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGRyZW4sXHJcbiAgTmdab25lXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlUHJlZml4LCBYVHJlZU5vZGUsIFhUcmVlUHJvcGVydHkgfSBmcm9tICcuL3RyZWUucHJvcGVydHknO1xyXG5pbXBvcnQge1xyXG4gIFhJc0VtcHR5LFxyXG4gIFhJc0Z1bmN0aW9uLFxyXG4gIFhJc1VuZGVmaW5lZCxcclxuICBYSXNDaGFuZ2UsXHJcbiAgWFNldERhdGEsXHJcbiAgWENvbmZpZ1NlcnZpY2UsXHJcbiAgWFJlc2l6ZSxcclxuICBYUmVtb3ZlLFxyXG4gIFhSZXNpemVPYnNlcnZlclxyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IFhUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENka0RyYWcsIENka0RyYWdFbmQsIENka0RyYWdNb3ZlLCBDZGtEcmFnU3RhcnQsIENka0Ryb3BMaXN0LCBEcmFnRHJvcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBYVHJlZVNlcnZpY2UgfSBmcm9tICcuL3RyZWUuc2VydmljZSc7XHJcbmltcG9ydCB7IFhJY29uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvaWNvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFRyZWVQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtEcmFnRHJvcE1vZHVsZSwgU2Nyb2xsaW5nTW9kdWxlLCBYVHJlZU5vZGVDb21wb25lbnQsIFhJY29uQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhUcmVlQ29tcG9uZW50IGV4dGVuZHMgWFRyZWVQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQFZpZXdDaGlsZCgndHJlZScsIHsgc3RhdGljOiB0cnVlIH0pIHRyZWUhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCd2aXJ0dWFsQm9keScpIHZpcnR1YWxCb2R5ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xyXG4gIEBWaWV3Q2hpbGQoJ2Ryb3BMaXN0JykgZHJvcExpc3QhOiBDZGtEcm9wTGlzdDxIVE1MRWxlbWVudD47XHJcbiAgbm9kZUNvbXBvbmVudHMhOiBRdWVyeUxpc3Q8WFRyZWVOb2RlQ29tcG9uZW50PjtcclxuICBAVmlld0NoaWxkcmVuKFhUcmVlTm9kZUNvbXBvbmVudClcclxuICBwdWJsaWMgc2V0IF9ub2RlQ29tcG9uZW50cyh2YWx1ZTogUXVlcnlMaXN0PFhUcmVlTm9kZUNvbXBvbmVudD4pIHtcclxuICAgIHRoaXMubm9kZUNvbXBvbmVudHMgPSB2YWx1ZTtcclxuICB9XHJcbiAgbm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgdmlydHVhbE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gIGFjdGl2YXRlZE5vZGUhOiBYVHJlZU5vZGU7XHJcbiAgZGF0YUlzRnVuYyA9IGZhbHNlO1xyXG4gIGdldHRpbmcgPSBmYWxzZTtcclxuICB0cmVlRGF0YTogWFRyZWVOb2RlW10gPSBbXTtcclxuXHJcbiAgZHJhZ2dpbmcgPSBmYWxzZTtcclxuICBkcmFnUG9zaXRpb24hOiAtMSB8IDE7XHJcbiAgaG92ZXJUcmVlTm9kZSE6IFhUcmVlTm9kZTtcclxuICBob3ZlclRyZWVFbGUhOiBFbGVtZW50UmVmO1xyXG4gIGRyYWdnaW5nVHJlZU5vZGU6IFhUcmVlTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgaXNFbXB0eSgpIHtcclxuICAgIHJldHVybiBYSXNFbXB0eSh0aGlzLm5vZGVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIhOiBYUmVzaXplT2JzZXJ2ZXI7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IFhDb25maWdTZXJ2aWNlLFxyXG4gICAgcHVibGljIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHVibGljIHRyZWVTZXJ2aWNlOiBYVHJlZVNlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGV4cGFuZGVkQWxsLCBkYXRhLCBhY3RpdmF0ZWRJZCwgY2hlY2tlZCwgbWFudWFsIH0gPSBjaGFuZ2VzO1xyXG4gICAgWElzQ2hhbmdlKGRhdGEpICYmIHRoaXMuc2V0RGF0YSgpO1xyXG4gICAgWElzQ2hhbmdlKGFjdGl2YXRlZElkKSAmJiB0aGlzLnNldEFjdGl2YXRlZE5vZGUodGhpcy50cmVlRGF0YSk7XHJcbiAgICBYSXNDaGFuZ2UoZXhwYW5kZWRBbGwpICYmIHRoaXMuc2V0RXhwYW5kZWRBbGwoKTtcclxuICAgIFhJc0NoYW5nZShjaGVja2VkKSAmJiB0aGlzLnNldENoZWNrZWRLZXlzKHRoaXMuY2hlY2tlZCk7XHJcbiAgICBYSXNDaGFuZ2UobWFudWFsKSAmJiB0aGlzLnNldE1hbnVhbCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLmhlaWdodEFkYXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuc2V0VmlydHVhbFNjcm9sbEhlaWdodCgpO1xyXG4gICAgICBYUmVzaXplKHRoaXMuaGVpZ2h0QWRhcHRpb24gYXMgSFRNTEVsZW1lbnQpXHJcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSB4LnJlc2l6ZU9ic2VydmVyO1xyXG4gICAgICAgICAgdGhpcy5zZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFNjb3JsbFRvcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0YSgpIHtcclxuICAgIGlmICh0eXBlb2YgdGhpcy5kYXRhID09PSAndW5kZWZpbmVkJykgcmV0dXJuO1xyXG4gICAgdGhpcy5kYXRhSXNGdW5jID0gZmFsc2U7XHJcbiAgICBpZiAoWElzRnVuY3Rpb24odGhpcy5kYXRhKSkge1xyXG4gICAgICB0aGlzLmRhdGFJc0Z1bmMgPSB0cnVlO1xyXG4gICAgICB0aGlzLmdldERhdGFCeUZ1bmMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFhTZXREYXRhPFhUcmVlTm9kZT4odGhpcy5kYXRhLCB0aGlzLl91blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh4KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjZGtEcmFnU3RhcnRlZChldmVudDogQ2RrRHJhZ1N0YXJ0KSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZHJhZ2dpbmdUcmVlTm9kZSA9IGV2ZW50LnNvdXJjZS5kYXRhO1xyXG4gICAgaWYgKGV2ZW50LnNvdXJjZS5kYXRhLm9wZW4pIHtcclxuICAgICAgdGhpcy5vblRvZ2dsZShldmVudC5ldmVudCwgZXZlbnQuc291cmNlLmRhdGEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlRHJhZ1N0YXJ0ZWQuZW1pdCh7IGV2ZW50LCBmcm9tOiB0aGlzLmRyYWdnaW5nVHJlZU5vZGUhIH0pO1xyXG4gIH1cclxuXHJcbiAgY2RrRHJhZ0VuZGVkKGV2ZW50OiBDZGtEcmFnRW5kKSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5ob3ZlclRyZWVOb2RlKSB7XHJcbiAgICAgIGlmICh0aGlzLmhvdmVyVHJlZU5vZGUuaWQgIT09IGV2ZW50LnNvdXJjZS5kYXRhLmlkKSB7XHJcbiAgICAgICAgdGhpcy5pbnNlcnROb2RlKGV2ZW50LnNvdXJjZS5kYXRhLCB0aGlzLmhvdmVyVHJlZU5vZGUsIHRoaXMuZHJhZ1Bvc2l0aW9uKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIHRoaXMuaG92ZXJUcmVlTm9kZS5jaGFuZ2UoKTtcclxuICAgICAgdGhpcy5ub2RlRHJhZ0VuZGVkLmVtaXQoe1xyXG4gICAgICAgIGV2ZW50LFxyXG4gICAgICAgIGZyb206IGV2ZW50LnNvdXJjZS5kYXRhLFxyXG4gICAgICAgIHRvOiB0aGlzLmhvdmVyVHJlZU5vZGUsXHJcbiAgICAgICAgcG9zaXRpb246IHRoaXMuZHJhZ1Bvc2l0aW9uXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5zZXJ0Tm9kZShkcmFnTm9kZTogWFRyZWVOb2RlLCBob3Zlck5vZGU6IFhUcmVlTm9kZSwgZHJhZ1Bvc2l0aW9uOiAtMSB8IDEpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLm5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGRyYWdOb2RlLnBpZCk7XHJcbiAgICB0aGlzLnRyZWVTZXJ2aWNlLm1vdmVOb2RlKHRoaXMudHJlZURhdGEsIGRyYWdOb2RlLCBob3Zlck5vZGUsIGRyYWdQb3NpdGlvbik7XHJcbiAgICB0aGlzLnNldERhdGFDaGFuZ2UodGhpcy50cmVlRGF0YSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHBhcmVudCk7XHJcbiAgfVxyXG5cclxuICBjZGtEcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlPFhUcmVlTm9kZT4pIHtcclxuICAgIGlmICghdGhpcy5kcmFnZ2luZyB8fCAhdGhpcy5ob3ZlclRyZWVOb2RlKSByZXR1cm47XHJcbiAgICBjb25zdCB5ID0gZXZlbnQucG9pbnRlclBvc2l0aW9uLnk7XHJcbiAgICBpZiAoZXZlbnQuc291cmNlLmRhdGEuaWQgPT09IHRoaXMuaG92ZXJUcmVlTm9kZS5pZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5ob3ZlclRyZWVFbGUubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IHsgdG9wLCBoZWlnaHQgfSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IGRlcyA9IE1hdGgubWF4KGhlaWdodCAqIDAuNSwgMik7XHJcbiAgICBpZiAoeSA+IHRvcCAmJiB5IDwgdG9wICsgZGVzKSB7XHJcbiAgICAgIHRoaXMuZHJhZ1Bvc2l0aW9uID0gLTE7XHJcbiAgICB9IGVsc2UgaWYgKHkgPiB0b3AgKyBkZXMgJiYgeSA8IHRvcCArIGhlaWdodCkge1xyXG4gICAgICB0aGlzLmRyYWdQb3NpdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhvdmVyVHJlZU5vZGUuY2hhbmdlICYmIHRoaXMuaG92ZXJUcmVlTm9kZS5jaGFuZ2UoKTtcclxuICAgIHRoaXMubm9kZURyYWdNb3ZlZC5lbWl0KHtcclxuICAgICAgZXZlbnQsXHJcbiAgICAgIGZyb206IHRoaXMuZHJhZ2dpbmdUcmVlTm9kZSEsXHJcbiAgICAgIHRvOiB0aGlzLmhvdmVyVHJlZU5vZGUsXHJcbiAgICAgIHBvc2l0aW9uOiB0aGlzLmRyYWdQb3NpdGlvblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmVkaWNhdGUoX2RyYWc6IENka0RyYWc8WFRyZWVOb2RlPiwgX2Ryb3A6IENka0Ryb3BMaXN0PFhUcmVlTm9kZT4pIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRWaXJ0dWFsU2Nyb2xsSGVpZ2h0KCkge1xyXG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsSGVpZ2h0ID0gKHRoaXMuaGVpZ2h0QWRhcHRpb24gYXMgSFRNTEVsZW1lbnQpLmNsaWVudEhlaWdodDtcclxuICAgIHRoaXMubWluQnVmZmVyUHggPSB0aGlzLnZpcnR1YWxTY3JvbGxIZWlnaHQ7XHJcbiAgICB0aGlzLm1heEJ1ZmZlclB4ID0gdGhpcy52aXJ0dWFsU2Nyb2xsSGVpZ2h0ICogMS4yO1xyXG4gICAgdGhpcy52aXJ0dWFsQm9keVsnX3Njcm9sbFN0cmF0ZWd5J11bJ19taW5CdWZmZXJQeCddID0gdGhpcy5taW5CdWZmZXJQeDtcclxuICAgIHRoaXMudmlydHVhbEJvZHlbJ19zY3JvbGxTdHJhdGVneSddWydfbWF4QnVmZmVyUHgnXSA9IHRoaXMubWF4QnVmZmVyUHg7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE1hbnVhbCgpIHtcclxuICAgIGlmICh0aGlzLmRhdGFJc0Z1bmMpIHRoaXMuZ2V0RGF0YUJ5RnVuYygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhQnlGdW5jKCkge1xyXG4gICAgaWYgKCF0aGlzLm1hbnVhbCkgcmV0dXJuO1xyXG4gICAgWFNldERhdGE8WFRyZWVOb2RlPigodGhpcy5kYXRhIGFzIEZ1bmN0aW9uKSgpLCB0aGlzLl91blN1YmplY3QpLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICB0aGlzLnNldERhdGFDaGFuZ2UoeCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0RGF0YUNoYW5nZShcclxuICAgIHZhbHVlOiBYVHJlZU5vZGVbXSxcclxuICAgIHJlZ2V0Q2hpbGRyZW4gPSBmYWxzZSxcclxuICAgIGluaXQgPSB0cnVlLFxyXG4gICAgcGFyZW50T3BlbiA9IHRydWUsXHJcbiAgICBsYXp5UGFyYW50PzogWFRyZWVOb2RlXHJcbiAgKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5jaGVja2VkKSkgdGhpcy5jaGVja2VkID0gW107XHJcbiAgICBjb25zdCBnZXRDaGlsZHJlbiA9IChub2RlOiBYVHJlZU5vZGUsIGxldmVsOiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKGluaXQpIHtcclxuICAgICAgICBub2RlLmxldmVsID0gbGV2ZWw7XHJcbiAgICAgICAgbm9kZS5vcGVuID1cclxuICAgICAgICAgIEJvb2xlYW4odGhpcy5leHBhbmRlZEFsbCkgfHxcclxuICAgICAgICAgIGxldmVsIDw9IE51bWJlcih0aGlzLmV4cGFuZGVkTGV2ZWwpIHx8XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkLmluY2x1ZGVzKG5vZGUuaWQpIHx8XHJcbiAgICAgICAgICBub2RlLm9wZW47XHJcbiAgICAgICAgbm9kZS5jaGVja2VkID0gdGhpcy5jaGVja2VkLmluY2x1ZGVzKG5vZGUuaWQpIHx8IG5vZGUuY2hlY2tlZDtcclxuICAgICAgICBub2RlLmNoaWxkcmVuTG9hZGVkID0gbm9kZS5vcGVuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChYSXNVbmRlZmluZWQobm9kZS5jaGlsZHJlbikgfHwgcmVnZXRDaGlsZHJlbikge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4gPSB2YWx1ZS5maWx0ZXIoKHkpID0+IHkucGlkID09PSBub2RlLmlkKTtcclxuICAgICAgICBpZiAodGhpcy5sZXZlbENoZWNrICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGVja2VkKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBuZCBvZiBub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICAgIG5kLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQucHVzaChuZC5pZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICgoIXRoaXMubGF6eSAmJiAoWElzVW5kZWZpbmVkKG5vZGUubGVhZikgfHwgcmVnZXRDaGlsZHJlbikpIHx8IG5vZGUuaWQgPT09IGxhenlQYXJhbnQ/LmlkKSB7XHJcbiAgICAgICAgbm9kZS5sZWFmID0gKG5vZGUuY2hpbGRyZW4/Lmxlbmd0aCBhcyBudW1iZXIpID09PSAwO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghbm9kZS5sZWFmKSBub2RlLmNoaWxkcmVuPy5tYXAoKHkpID0+IGdldENoaWxkcmVuKHksIGxldmVsICsgMSkpO1xyXG4gICAgICByZXR1cm4gbm9kZTtcclxuICAgIH07XHJcbiAgICB0aGlzLnRyZWVEYXRhID0gdmFsdWU7XHJcbiAgICB0aGlzLm5vZGVzID0gdmFsdWUuZmlsdGVyKCh4KSA9PiBYSXNFbXB0eSh4LnBpZCkpLm1hcCgoeCkgPT4gZ2V0Q2hpbGRyZW4oeCwgMCkpO1xyXG4gICAgaWYgKHBhcmVudE9wZW4pIHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xyXG4gICAgICAgIGlmICghaXRlbS5sZWFmICYmIGl0ZW0ub3Blbikge1xyXG4gICAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKHZhbHVlLCBpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc2V0RXhwYW5kZWQoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5vZGVNb3VzZWVudGVyKCRldmVudDogeyBldmVudDogTW91c2VFdmVudDsgbm9kZTogWFRyZWVOb2RlOyBlbGU6IEVsZW1lbnRSZWYgfSkge1xyXG4gICAgY29uc3QgeyBub2RlLCBlbGUgfSA9ICRldmVudDtcclxuICAgIGlmICghdGhpcy5kcmFnZ2luZykgcmV0dXJuO1xyXG4gICAgbGV0IGJlZm9yZSA9IHRoaXMuaG92ZXJUcmVlTm9kZTtcclxuICAgIHRoaXMuaG92ZXJUcmVlTm9kZSA9IG5vZGU7XHJcbiAgICB0aGlzLmhvdmVyVHJlZUVsZSA9IGVsZTtcclxuICAgIHRoaXMuaG92ZXJUcmVlTm9kZS5jaGFuZ2UgJiYgdGhpcy5ob3ZlclRyZWVOb2RlLmNoYW5nZSgpO1xyXG4gICAgaWYgKGJlZm9yZSkge1xyXG4gICAgICBiZWZvcmUuY2hhbmdlICYmIGJlZm9yZS5jaGFuZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIW5vZGUubGVhZiAmJiAhbm9kZS5vcGVuKSB7XHJcbiAgICAgIGxldCBmcm9tID0gdGhpcy5ub2Rlcy5pbmRleE9mKHRoaXMuZHJhZ2dpbmdUcmVlTm9kZSEpO1xyXG4gICAgICBsZXQgdG8gPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XHJcbiAgICAgIGlmICh0byAtIGZyb20gIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5vblRvZ2dsZShudWxsISwgbm9kZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZWxzZSB7XHJcbiAgICAgIC8vICAgbGV0IGFkZE5vZGVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gICAgICAvLyAgIG5vZGUub3BlbiA9IHRydWU7XHJcbiAgICAgIC8vICAgY29uc3QgZ2V0Tm9kZXMgPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAvLyAgICAgaWYgKFhJc0VtcHR5KG5kLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAvLyAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgIC8vICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAvLyAgICAgICBjaGlsZC5vcGVuICYmIGdldE5vZGVzKGNoaWxkKTtcclxuICAgICAgLy8gICAgIH1cclxuICAgICAgLy8gICB9O1xyXG4gICAgICAvLyAgIGdldE5vZGVzKG5vZGUpO1xyXG4gICAgICAvLyAgIGxldCBub2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICAgICAgLy8gICBub2Rlcy5zcGxpY2UodG8gKyAxLCAwLCAuLi5hZGROb2Rlcyk7XHJcbiAgICAgIC8vICAgdGhpcy5ub2RlcyA9IG5vZGVzO1xyXG4gICAgICAvLyB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTY29ybGxUb3AoKSB7XHJcbiAgICBpZiAoIXRoaXMuc2Nyb2xsRWxlbWVudCB8fCAhdGhpcy5hY3RpdmF0ZWROb2RlKSByZXR1cm47XHJcbiAgICBsZXQgaW54ID0gdGhpcy5ub2Rlcy5pbmRleE9mKHRoaXMuYWN0aXZhdGVkTm9kZSk7XHJcbiAgICBsZXQgY29tID0gdGhpcy5ub2RlQ29tcG9uZW50cy5nZXQoaW54KTtcclxuICAgIGlmICghY29tKSByZXR1cm47XHJcbiAgICBsZXQgZWxlID0gY29tLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGxldCBzY3JvbGxFbGUgPSB0aGlzLnNjcm9sbEVsZW1lbnQ7XHJcbiAgICBsZXQgbWluID0gc2Nyb2xsRWxlLnNjcm9sbFRvcDtcclxuICAgIGxldCBtYXggPSBzY3JvbGxFbGUuc2Nyb2xsVG9wICsgc2Nyb2xsRWxlLmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGUub2Zmc2V0VG9wICsgZWxlLmNsaWVudEhlaWdodCA+IG1heCkge1xyXG4gICAgICBsZXQgc2Nyb2xsVG9wID0gZWxlLm9mZnNldFRvcCArIGVsZS5jbGllbnRIZWlnaHQgLSBzY3JvbGxFbGUuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBzY3JvbGxFbGUuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsZS5vZmZzZXRUb3AgPCBtaW4pIHtcclxuICAgICAgc2Nyb2xsRWxlLnNjcm9sbFRvcCA9IGVsZS5vZmZzZXRUb3A7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDaGVja2VkTm9kZXMoKTogWFRyZWVOb2RlW10ge1xyXG4gICAgbGV0IHJlc3VsdDogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgIGNvbnN0IGdldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICBpZiAoeC5jaGVja2VkICYmICFyZXN1bHQuaW5jbHVkZXMoeCkpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IFsuLi5yZXN1bHQsIHhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBnZXRDaGlsZHJlbih4LmNoaWxkcmVuIGFzIFhUcmVlTm9kZVtdKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgZ2V0Q2hpbGRyZW4odGhpcy5ub2Rlcyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hlY2tlZEtleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRDaGVja2VkTm9kZXMoKS5tYXAoKHgpID0+IHguaWQpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tlZEtleXMoa2V5czogYW55W10gPSBbXSkge1xyXG4gICAgY29uc3Qgc2V0Q2hpbGRyZW4gPSAobm9kZXM6IFhUcmVlTm9kZVtdLCBjbGVhciA9IGZhbHNlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShub2RlcykpIHJldHVybjtcclxuICAgICAgbm9kZXMuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHguY2hlY2tlZCA9ICFjbGVhciAmJiBrZXlzLmluY2x1ZGVzKHguaWQpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKHRydWUpO1xyXG4gICAgICAgIHNldENoaWxkcmVuKHguY2hpbGRyZW4gYXMgWFRyZWVOb2RlW10sIGNsZWFyKTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgc2V0Q2hpbGRyZW4odGhpcy5ub2RlcywgWElzRW1wdHkoa2V5cykpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0RXhwYW5kZWRBbGwoKSB7XHJcbiAgICBpZiAodGhpcy5leHBhbmRlZEFsbCAmJiB0aGlzLnRyZWVEYXRhLmxlbmd0aCA9PT0gdGhpcy5ub2Rlcy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IHNldENoaWxkcmVuID0gKG5vZGVzOiBYVHJlZU5vZGVbXSkgPT4ge1xyXG4gICAgICBpZiAoWElzRW1wdHkobm9kZXMpKSByZXR1cm47XHJcbiAgICAgIG5vZGVzLmZvckVhY2goKHgpID0+IHtcclxuICAgICAgICB4Lm9wZW4gPSBCb29sZWFuKHRoaXMuZXhwYW5kZWRBbGwpO1xyXG4gICAgICAgIHguY2hhbmdlICYmIHguY2hhbmdlKCk7XHJcbiAgICAgICAgc2V0Q2hpbGRyZW4oeC5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHNldENoaWxkcmVuKHRoaXMubm9kZXMpO1xyXG5cclxuICAgIGlmICh0aGlzLmV4cGFuZGVkQWxsID09PSBmYWxzZSkge1xyXG4gICAgICB0aGlzLm5vZGVzID0gdGhpcy50cmVlRGF0YS5maWx0ZXIoKHgpID0+IFhJc0VtcHR5KHgucGlkKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy52aXJ0dWFsTm9kZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy52aXJ0dWFsTm9kZXMgPSBbLi4udGhpcy5ub2Rlc107XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLnZpcnR1YWxOb2Rlc107XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy52aXJ0dWFsTm9kZXMpIHtcclxuICAgICAgICB0aGlzLnNldFZpcnR1YWxFeHBhbmRlZEFsbChpdGVtLCB0aGlzLmV4cGFuZGVkQWxsIGFzIGJvb2xlYW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRFeHBhbmRlZCgpIHtcclxuICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5ub2Rlcykge1xyXG4gICAgICBpZiAoaXRlbS5vcGVuICYmIGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2YoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi4oaXRlbS5jaGlsZHJlbiBhcyBYVHJlZU5vZGVbXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uY2hhbmdlICYmIGl0ZW0uY2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gIH1cclxuXHJcbiAgc2V0VmlydHVhbEV4cGFuZGVkQWxsKGl0ZW06IFhUcmVlTm9kZSwgZXhwYW5kZWRBbGw6IGJvb2xlYW4pIHtcclxuICAgIGxldCBpbmRleCA9IHRoaXMubm9kZXMuaW5kZXhPZihpdGVtKTtcclxuICAgIGlmIChleHBhbmRlZEFsbCkge1xyXG4gICAgICBsZXQgYWRkTm9kZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICAgIGNvbnN0IGdldE5vZGVzID0gKG5kOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBuZC5jaGlsZHJlbiEpIHtcclxuICAgICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgZ2V0Tm9kZXMoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgZ2V0Tm9kZXMoaXRlbSk7XHJcbiAgICAgIHRoaXMubm9kZXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgLi4uYWRkTm9kZXMpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ub2RlcyA9IFsuLi50aGlzLm5vZGVzXTtcclxuICB9XHJcblxyXG4gIHZpcnR1YWxUb2dnbGUobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBsZXQgaW5kZXggPSB0aGlzLm5vZGVzLmluZGV4T2Yobm9kZSk7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGxldCBhZGROb2RlczogWFRyZWVOb2RlW10gPSBbXTtcclxuICAgICAgY29uc3QgZ2V0Tm9kZXMgPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICAgIGlmIChYSXNFbXB0eShuZC5jaGlsZHJlbikpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiBuZC5jaGlsZHJlbiEpIHtcclxuICAgICAgICAgIGFkZE5vZGVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgY2hpbGQub3BlbiAmJiBnZXROb2RlcyhjaGlsZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICBnZXROb2Rlcyhub2RlKTtcclxuICAgICAgdGhpcy5ub2Rlcy5zcGxpY2UoaW5kZXggKyAxLCAwLCAuLi5hZGROb2Rlcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgZGVsQ291bnQgPSAwO1xyXG4gICAgICBjb25zdCBnZXRDb3VudCA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKFhJc0VtcHR5KG5kLmNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICAgIGRlbENvdW50ICs9IG5kLmNoaWxkcmVuIS5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgbmQuY2hpbGRyZW4hKSB7XHJcbiAgICAgICAgICBjaGlsZC5vcGVuICYmIGdldENvdW50KGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICAgIGdldENvdW50KG5vZGUpO1xyXG4gICAgICB0aGlzLm5vZGVzLnNwbGljZShpbmRleCArIDEsIGRlbENvdW50KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFkZE9yUmVtb3ZlRXhwYW5kZWQobm9kZSk7XHJcbiAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXNdO1xyXG4gICAgdGhpcy52aXJ0dWFsQm9keT8uY2hlY2tWaWV3cG9ydFNpemUoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGFkZE9yUmVtb3ZlRXhwYW5kZWQobm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBpZiAobm9kZS5vcGVuKSB7XHJcbiAgICAgIGlmICghdGhpcy5leHBhbmRlZC5pbmNsdWRlcyhub2RlLmlkKSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWQucHVzaChub2RlLmlkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuZXhwYW5kZWQuaW5jbHVkZXMobm9kZS5pZCkpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkLnNwbGljZSh0aGlzLmV4cGFuZGVkLmluZGV4T2Yobm9kZS5pZCksIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRBY3RpdmF0ZWROb2RlKG5vZGVzOiBYVHJlZU5vZGVbXSwgcGFyZW50T3BlbiA9IHRydWUsIGRhdGFDaGFuZ2UgPSB0cnVlKSB7XHJcbiAgICBpZiAoWElzRW1wdHkodGhpcy5hY3RpdmF0ZWRJZCkgJiYgdGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICB0aGlzLmFjdGl2YXRlZElkID0gW107XHJcbiAgICB9XHJcbiAgICBsZXQgYmVmb3JlID0gdGhpcy5hY3RpdmF0ZWROb2RlO1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZhdGVkSWQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGxldCBpZHMgPSB0aGlzLm9iamVjdEFycmF5ID8gdGhpcy5hY3RpdmF0ZWRJZC5tYXAoKHg6IFhUcmVlTm9kZSkgPT4geC5pZCkgOiB0aGlzLmFjdGl2YXRlZElkO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgbm9kZSA9IG5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGlkc1tpXSkgYXMgWFRyZWVOb2RlO1xyXG4gICAgICAgICAgaWYgKG5vZGUpIHtcclxuICAgICAgICAgICAgcGFyZW50T3BlbiAmJiB0aGlzLnNldFBhcmVudE9wZW4obm9kZXMsIG5vZGUpO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gaWRzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlZE5vZGUgPSBub2RlO1xyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmF0ZWROb2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGFjdGl2YXRlZElkID0gdGhpcy5hY3RpdmF0ZWRJZDtcclxuICAgICAgdGhpcy5hY3RpdmF0ZWROb2RlID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PSBhY3RpdmF0ZWRJZCkgYXMgWFRyZWVOb2RlO1xyXG4gICAgICBpZiAodGhpcy5hY3RpdmF0ZWROb2RlKSB7XHJcbiAgICAgICAgcGFyZW50T3BlbiAmJiB0aGlzLnNldFBhcmVudE9wZW4obm9kZXMsIHRoaXMuYWN0aXZhdGVkTm9kZSk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmF0ZWRDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2YXRlZE5vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoYmVmb3JlKSB7XHJcbiAgICAgIGJlZm9yZS5jaGFuZ2UgJiYgYmVmb3JlLmNoYW5nZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFYSXNFbXB0eShub2RlcykgJiYgZGF0YUNoYW5nZSkge1xyXG4gICAgICB0aGlzLnNldERhdGFDaGFuZ2Uobm9kZXMsIGZhbHNlLCB0cnVlLCBwYXJlbnRPcGVuKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFBhcmVudE9wZW4obm9kZXM6IFhUcmVlTm9kZVtdLCBub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGNvbnN0IGdldFBhcmVudCA9IChjaGlsZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgIGlmIChYSXNFbXB0eShjaGlsZC5waWQpKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IG5vZGVzLmZpbmQoKHgpID0+IHguaWQgPT09IGNoaWxkLnBpZCkgYXMgWFRyZWVOb2RlO1xyXG4gICAgICBpZiAoIVhJc0VtcHR5KHBhcmVudCkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZXhwYW5kZWQuaW5jbHVkZXMocGFyZW50LmlkKSkge1xyXG4gICAgICAgICAgdGhpcy5leHBhbmRlZCA9IFsuLi50aGlzLmV4cGFuZGVkLCBwYXJlbnQuaWRdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJlbnQub3BlbiA9IHRydWU7XHJcbiAgICAgICAgcGFyZW50LmNoYW5nZSAmJiBwYXJlbnQuY2hhbmdlKCk7XHJcbiAgICAgICAgZ2V0UGFyZW50KHBhcmVudCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBnZXRQYXJlbnQobm9kZSk7XHJcbiAgfVxyXG5cclxuICBzZXRQYXJlbnRDaGVjayhub2RlczogWFRyZWVOb2RlW10sIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgZ2V0UGFyZW50ID0gKGNoaWxkOiBYVHJlZU5vZGUpID0+IHtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkLnBpZCkpIHJldHVybjtcclxuICAgICAgY29uc3QgcGFyZW50ID0gbm9kZXMuZmluZCgoeCkgPT4geC5pZCA9PT0gY2hpbGQucGlkKSBhcyBYVHJlZU5vZGU7XHJcbiAgICAgIGlmICghWElzRW1wdHkocGFyZW50KSkge1xyXG4gICAgICAgIGlmICghdGhpcy5leHBhbmRlZC5pbmNsdWRlcyhwYXJlbnQuaWQpKSB7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGVkID0gWy4uLnRoaXMuZXhwYW5kZWQsIHBhcmVudC5pZF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudC5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBwYXJlbnQuY2hhbmdlICYmIHBhcmVudC5jaGFuZ2UoKTtcclxuICAgICAgICBnZXRQYXJlbnQocGFyZW50KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGdldFBhcmVudChub2RlKTtcclxuICB9XHJcblxyXG4gIG9uVG9nZ2xlKGV2ZW50OiBFdmVudCwgbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICBub2RlLm9wZW4gPSAhbm9kZS5vcGVuO1xyXG4gICAgICBpZiAodGhpcy5sYXp5ICYmICFub2RlLmNoaWxkcmVuTG9hZGVkKSB7XHJcbiAgICAgICAgdGhpcy5nZXRMYXp5RGF0YShub2RlLCAoKSA9PiB0aGlzLnZpcnR1YWxUb2dnbGUobm9kZSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudmlydHVhbFRvZ2dsZShub2RlKTtcclxuICAgICAgfVxyXG4gICAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRMYXp5RGF0YShub2RlOiBYVHJlZU5vZGUsIGNhbGxCYWNrPzogKCkgPT4gdm9pZCkge1xyXG4gICAgbm9kZS5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIG5vZGUuY2hhbmdlICYmIG5vZGUuY2hhbmdlKCk7XHJcbiAgICAodGhpcy5kYXRhIGFzIChwaWQ/OiBhbnkpID0+IE9ic2VydmFibGU8WFRyZWVOb2RlW10+KShub2RlLmlkKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+XHJcbiAgICAgICAgICB4Lm1hcCgoeSkgPT4ge1xyXG4gICAgICAgICAgICB5LmxldmVsID0gKG5vZGUubGV2ZWwgYXMgbnVtYmVyKSArIDE7XHJcbiAgICAgICAgICAgIHkuY2hlY2tlZCA9IG5vZGUuY2hlY2tlZDtcclxuICAgICAgICAgICAgcmV0dXJuIHk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbiA9IHg7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbkxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgbm9kZS5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YSA9IFsuLi50aGlzLnRyZWVEYXRhLCAuLi54XTtcclxuICAgICAgICBpZiAoY2FsbEJhY2spIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYWRkTm9kZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoKHgpID0+IHguaWQgPT09IG5vZGUucGlkKSE7XHJcbiAgICBjb25zdCBfYWRkTm9kZSA9ICgpID0+IHtcclxuICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIG5vZGUubGV2ZWwgPSBwYXJlbnQubGV2ZWwhICsgMTtcclxuICAgICAgICBub2RlLnBpZCA9IHBhcmVudC5pZDtcclxuICAgICAgICBub2RlLmxlYWYgPSB0cnVlO1xyXG4gICAgICAgIHBhcmVudC5sZWFmID0gZmFsc2U7XHJcbiAgICAgICAgcGFyZW50Lm9wZW4gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudHJlZURhdGEgPSBbLi4udGhpcy50cmVlRGF0YSwgbm9kZV07XHJcbiAgICAgICAgdGhpcy5zZXRQYXJlbnRPcGVuKHRoaXMudHJlZURhdGEsIG5vZGUpO1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YUNoYW5nZSh0aGlzLnRyZWVEYXRhLCB0cnVlLCBmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkSWQobm9kZSk7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWROb2RlKHRoaXMubm9kZXMsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFhJc0VtcHR5KG5vZGUucGlkKSkge1xyXG4gICAgICAgIG5vZGUubGV2ZWwgPSAwO1xyXG4gICAgICAgIG5vZGUubGVhZiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50cmVlRGF0YSA9IFsuLi50aGlzLnRyZWVEYXRhLCBub2RlXTtcclxuICAgICAgICB0aGlzLm5vZGVzID0gWy4uLnRoaXMubm9kZXMsIG5vZGVdO1xyXG4gICAgICAgIHRoaXMuc2V0QWN0aXZhdGVkSWQobm9kZSk7XHJcbiAgICAgICAgdGhpcy5zZXRBY3RpdmF0ZWROb2RlKHRoaXMubm9kZXMsIHRydWUsIGZhbHNlKTtcclxuICAgICAgICBub2RlLmNoYW5nZSAmJiBub2RlLmNoYW5nZSgpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMubGF6eSAmJiBwYXJlbnQgJiYgIXBhcmVudC5jaGlsZHJlbkxvYWRlZCkge1xyXG4gICAgICB0aGlzLmdldExhenlEYXRhKHBhcmVudCwgKCkgPT4ge1xyXG4gICAgICAgIF9hZGROb2RlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgX2FkZE5vZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEFjdGl2YXRlZElkKG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKHRoaXMub2JqZWN0QXJyYXkpIHtcclxuICAgICAgICB0aGlzLmFjdGl2YXRlZElkID0gW25vZGVdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYWN0aXZhdGVkSWQgPSBbbm9kZS5pZF07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkSWQgPSBub2RlLmlkO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmF0ZWRJZENoYW5nZS5lbWl0KHRoaXMuYWN0aXZhdGVkSWQpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlTm9kZShub2RlOiBYVHJlZU5vZGUpIHtcclxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnRyZWVEYXRhLmZpbmQoKHgpID0+IHguaWQgPT09IG5vZGUucGlkKSE7XHJcbiAgICBjb25zdCByZW1vdmVDaGlsZHJlbiA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgIFhSZW1vdmUodGhpcy50cmVlRGF0YSwgKHgpID0+IHguaWQgPT09IG5kLmlkKTtcclxuICAgICAgaWYgKG5kLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBuZC5jaGlsZHJlbikge1xyXG4gICAgICAgICAgcmVtb3ZlQ2hpbGRyZW4oaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVtb3ZlQ2hpbGRyZW4obm9kZSk7XHJcblxyXG4gICAgaWYgKHBhcmVudCkge1xyXG4gICAgICBpZiAoIXBhcmVudC5jaGlsZHJlbikgcGFyZW50LmNoaWxkcmVuID0gW107XHJcbiAgICAgIGNvbnN0IGNoaWxkSW5kZXggPSBwYXJlbnQuY2hpbGRyZW4uZmluZEluZGV4KCh4KSA9PiB4LmlkID09PSBub2RlLmlkKTtcclxuICAgICAgaWYgKGNoaWxkSW5kZXggPiAtMSkge1xyXG4gICAgICAgIHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoY2hpbGRJbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgICAgcGFyZW50LmxlYWYgPSBwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAwO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXREYXRhQ2hhbmdlKHRoaXMudHJlZURhdGEsIHRydWUsIGZhbHNlLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVOb2RlKG5vZGU6IFhUcmVlTm9kZSwgbm93Tm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBPYmplY3QuYXNzaWduKG5vZGUsIG5vd05vZGUpO1xyXG4gICAgbm9kZS5jaGFuZ2UgJiYgbm9kZS5jaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJdGVtKF9pbmRleDogbnVtYmVyLCBpdGVtOiBYVHJlZU5vZGUpIHtcclxuICAgIHJldHVybiBgJHtpdGVtLmlkfS0ke2l0ZW0ubGV2ZWx9YDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjdHJlZSBjbGFzcz1cIngtdHJlZVwiIFtjbGFzcy54LXRyZWUtb25seS1sZWFmXT1cIm9ubHlMZWFmXCI+XHJcbiAgQGlmICh2aXJ0dWFsU2Nyb2xsKSB7XHJcbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICN2aXJ0dWFsQm9keVxyXG4gICAgICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxyXG4gICAgICBbbWluQnVmZmVyUHhdPVwibWluQnVmZmVyUHhcIlxyXG4gICAgICBbbWF4QnVmZmVyUHhdPVwibWF4QnVmZmVyUHhcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInZpcnR1YWxTY3JvbGxIZWlnaHRcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ4LXRyZWUtY29udGVudFwiXHJcbiAgICAgICAgI2Ryb3BMaXN0XHJcbiAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICBbY2RrRHJvcExpc3REaXNhYmxlZF09XCIhZHJhZ1wiXHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgIFtoaWRkZW5dPVwiaXNFbXB0eVwiXHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJub2Rlc1wiXHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwicHJlZGljYXRlXCJcclxuICAgICAgPlxyXG4gICAgICAgIDx4LXRyZWUtbm9kZVxyXG4gICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJsZXQgbm9kZSBvZiBub2RlczsgdGVtcGxhdGVDYWNoZVNpemU6IDA7IHRyYWNrQnk6IHRyYWNrQnlJdGVtXCJcclxuICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgIFtjZGtEcmFnRGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAoY2RrRHJhZ1N0YXJ0ZWQpPVwiY2RrRHJhZ1N0YXJ0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2RrRHJhZ0VuZGVkKT1cImNka0RyYWdFbmRlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIChjZGtEcmFnTW92ZWQpPVwiY2RrRHJhZ01vdmVkKCRldmVudClcIlxyXG4gICAgICAgICAgW2Nka0RyYWdEYXRhXT1cIm5vZGVcIlxyXG4gICAgICAgICAgKG5vZGVNb3VzZWVudGVyKT1cIm5vZGVNb3VzZWVudGVyKCRldmVudClcIlxyXG4gICAgICAgICAgW25vZGVdPVwibm9kZVwiXHJcbiAgICAgICAgICBbbGF6eV09XCJsYXp5XCJcclxuICAgICAgICAgIFtsYXp5RGF0YV09XCJkYXRhXCJcclxuICAgICAgICAgIFtub2RlSGVpZ2h0XT1cIm5vZGVIZWlnaHRcIlxyXG4gICAgICAgICAgW25vZGVOb3dyYXBdPVwibm9kZU5vd3JhcFwiXHJcbiAgICAgICAgICBbbm9kZUFsaWduSXRlbXNdPVwibm9kZUFsaWduSXRlbXNcIlxyXG4gICAgICAgICAgW3RyZWVdPVwidGhpc1wiXHJcbiAgICAgICAgPjwveC10cmVlLW5vZGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwieC10cmVlLWNvbnRlbnRcIlxyXG4gICAgICAjZHJvcExpc3RcclxuICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgW2Nka0Ryb3BMaXN0RGlzYWJsZWRdPVwiIWRyYWdcIlxyXG4gICAgICBbY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgIFtoaWRkZW5dPVwiaXNFbXB0eVwiXHJcbiAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwibm9kZXNcIlxyXG4gICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJwcmVkaWNhdGVcIlxyXG4gICAgPlxyXG4gICAgICBAZm9yIChub2RlIG9mIG5vZGVzOyB0cmFjayBub2RlLmlkKSB7XHJcbiAgICAgICAgPHgtdHJlZS1ub2RlXHJcbiAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICBbY2RrRHJhZ0Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cImNka0RyYWdTdGFydGVkKCRldmVudClcIlxyXG4gICAgICAgICAgKGNka0RyYWdFbmRlZCk9XCJjZGtEcmFnRW5kZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2RrRHJhZ01vdmVkKT1cImNka0RyYWdNb3ZlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJub2RlXCJcclxuICAgICAgICAgIChub2RlTW91c2VlbnRlcik9XCJub2RlTW91c2VlbnRlcigkZXZlbnQpXCJcclxuICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxyXG4gICAgICAgICAgW2xhenldPVwibGF6eVwiXHJcbiAgICAgICAgICBbbGF6eURhdGFdPVwiZGF0YVwiXHJcbiAgICAgICAgICBbbm9kZUhlaWdodF09XCJub2RlSGVpZ2h0XCJcclxuICAgICAgICAgIFtub2RlTm93cmFwXT1cIm5vZGVOb3dyYXBcIlxyXG4gICAgICAgICAgW25vZGVBbGlnbkl0ZW1zXT1cIm5vZGVBbGlnbkl0ZW1zXCJcclxuICAgICAgICAgIFt0cmVlXT1cInRoaXNcIlxyXG4gICAgICAgID48L3gtdHJlZS1ub2RlPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvZGl2PlxyXG5cclxuPCEtLSDmj5DliY3liqDovb1sb2FkaW5n55qE5Zu+5qCHLS0+XHJcbkBpZiAobGF6eSkge1xyXG4gIDx4LWljb24gW3N0eWxlLmRpc3BsYXldPVwiJ25vbmUnXCIgdHlwZT1cImZ0by1sb2FkZXJcIj48L3gtaWNvbj5cclxufVxyXG4iXX0=
|
|
@@ -1,54 +1,17 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
2
|
import { XTreeComponent } from './tree.component';
|
|
5
3
|
import { XTreeNodeComponent } from './tree-node.component';
|
|
6
|
-
import { XIconModule } from '@ng-nest/ui/icon';
|
|
7
|
-
import { XCheckboxModule } from '@ng-nest/ui/checkbox';
|
|
8
|
-
import { XOutletModule } from '@ng-nest/ui/outlet';
|
|
9
|
-
import { XLinkModule } from '@ng-nest/ui/link';
|
|
10
|
-
import { XTreeProperty, XTreeNodeProperty } from './tree.property';
|
|
11
|
-
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
12
|
-
import { XKeywordModule } from '@ng-nest/ui/keyword';
|
|
13
|
-
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
14
4
|
import * as i0 from "@angular/core";
|
|
15
5
|
export class XTreeModule {
|
|
16
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
17
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.
|
|
18
|
-
|
|
19
|
-
DragDropModule,
|
|
20
|
-
XIconModule,
|
|
21
|
-
XCheckboxModule,
|
|
22
|
-
XOutletModule,
|
|
23
|
-
XLinkModule,
|
|
24
|
-
ScrollingModule,
|
|
25
|
-
XKeywordModule], exports: [XTreeComponent, XTreeNodeComponent] }); }
|
|
26
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: XTreeModule, imports: [CommonModule,
|
|
27
|
-
FormsModule,
|
|
28
|
-
DragDropModule,
|
|
29
|
-
XIconModule,
|
|
30
|
-
XCheckboxModule,
|
|
31
|
-
XOutletModule,
|
|
32
|
-
XLinkModule,
|
|
33
|
-
ScrollingModule,
|
|
34
|
-
XKeywordModule] }); }
|
|
6
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: XTreeModule, imports: [XTreeComponent, XTreeNodeComponent], exports: [XTreeComponent, XTreeNodeComponent] }); }
|
|
8
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeModule, imports: [XTreeComponent, XTreeNodeComponent] }); }
|
|
35
9
|
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeModule, decorators: [{
|
|
37
11
|
type: NgModule,
|
|
38
12
|
args: [{
|
|
39
|
-
declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty],
|
|
40
13
|
exports: [XTreeComponent, XTreeNodeComponent],
|
|
41
|
-
imports: [
|
|
42
|
-
CommonModule,
|
|
43
|
-
FormsModule,
|
|
44
|
-
DragDropModule,
|
|
45
|
-
XIconModule,
|
|
46
|
-
XCheckboxModule,
|
|
47
|
-
XOutletModule,
|
|
48
|
-
XLinkModule,
|
|
49
|
-
ScrollingModule,
|
|
50
|
-
XKeywordModule
|
|
51
|
-
]
|
|
14
|
+
imports: [XTreeComponent, XTreeNodeComponent]
|
|
52
15
|
}]
|
|
53
16
|
}] });
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS90cmVlL3RyZWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQU0zRCxNQUFNLE9BQU8sV0FBVztpSUFBWCxXQUFXO2tJQUFYLFdBQVcsWUFGWixjQUFjLEVBQUUsa0JBQWtCLGFBRGxDLGNBQWMsRUFBRSxrQkFBa0I7a0lBR2pDLFdBQVcsWUFGWixjQUFjLEVBQUUsa0JBQWtCOzsyRkFFakMsV0FBVztrQkFKdkIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUM7b0JBQzdDLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQztpQkFDOUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYVHJlZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYVHJlZU5vZGVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtbm9kZS5jb21wb25lbnQnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBleHBvcnRzOiBbWFRyZWVDb21wb25lbnQsIFhUcmVlTm9kZUNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW1hUcmVlQ29tcG9uZW50LCBYVHJlZU5vZGVDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYVHJlZU1vZHVsZSB7fVxyXG4iXX0=
|
|
@@ -106,8 +106,8 @@ export class XTreeProperty extends XProperty {
|
|
|
106
106
|
*/
|
|
107
107
|
this.nodeDragMoved = new EventEmitter();
|
|
108
108
|
}
|
|
109
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
110
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.
|
|
109
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
110
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: XTreeProperty, selector: "x-tree-property", inputs: { data: "data", checkbox: "checkbox", lazy: "lazy", activatedId: "activatedId", expanded: "expanded", checked: "checked", expandedAll: "expandedAll", expandedLevel: "expandedLevel", nodeOpen: "nodeOpen", spacing: "spacing", labelTpl: "labelTpl", nodeHeight: "nodeHeight", allowManyActivated: "allowManyActivated", drag: "drag", manual: "manual", levelCheck: "levelCheck", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", actions: "actions", scrollElement: "scrollElement", virtualScroll: "virtualScroll", virtualScrollHeight: "virtualScrollHeight", heightAdaption: "heightAdaption", itemSize: "itemSize", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", multiple: "multiple", objectArray: "objectArray", keywordText: "keywordText", caseSensitive: "caseSensitive", onlyLeaf: "onlyLeaf", expandedIcon: "expandedIcon", showLine: "showLine" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange", nodeClick: "nodeClick", activatedIdChange: "activatedIdChange", nodeDragStarted: "nodeDragStarted", nodeDragEnded: "nodeDragEnded", nodeDragMoved: "nodeDragMoved" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
111
111
|
}
|
|
112
112
|
__decorate([
|
|
113
113
|
XDataConvert()
|
|
@@ -183,7 +183,7 @@ __decorate([
|
|
|
183
183
|
XInputBoolean(),
|
|
184
184
|
XWithConfig(X_CONFIG_NAME, false)
|
|
185
185
|
], XTreeProperty.prototype, "showLine", void 0);
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeProperty, decorators: [{
|
|
187
187
|
type: Component,
|
|
188
188
|
args: [{ selector: `${XTreePrefix}-property`, template: '' }]
|
|
189
189
|
}], propDecorators: { data: [{
|
|
@@ -297,8 +297,8 @@ export class XTreeNodeProperty extends XProperty {
|
|
|
297
297
|
*/
|
|
298
298
|
this.nodeAlignItems = 'center';
|
|
299
299
|
}
|
|
300
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
301
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.
|
|
300
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeNodeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
301
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: XTreeNodeProperty, selector: "x-tree-node-property", inputs: { node: "node", level: "level", lazy: "lazy", nodeHeight: "nodeHeight", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", lazyData: "lazyData", virtualScroll: "virtualScroll" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
302
302
|
}
|
|
303
303
|
__decorate([
|
|
304
304
|
XInputBoolean()
|
|
@@ -312,7 +312,7 @@ __decorate([
|
|
|
312
312
|
__decorate([
|
|
313
313
|
XInputBoolean()
|
|
314
314
|
], XTreeNodeProperty.prototype, "virtualScroll", void 0);
|
|
315
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
315
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeNodeProperty, decorators: [{
|
|
316
316
|
type: Component,
|
|
317
317
|
args: [{ selector: `${XTreeNodePrefix}-property`, template: '' }]
|
|
318
318
|
}], propDecorators: { node: [{
|
|
@@ -68,10 +68,11 @@ export class XTreeService {
|
|
|
68
68
|
data.splice(pos === -1 ? index : index + 1, 0, from);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.
|
|
72
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.
|
|
71
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
72
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeService, providedIn: 'root' }); }
|
|
73
73
|
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.
|
|
75
|
-
type: Injectable
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: XTreeService, decorators: [{
|
|
75
|
+
type: Injectable,
|
|
76
|
+
args: [{ providedIn: 'root' }]
|
|
76
77
|
}] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvdHJlZS90cmVlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUlyRCxNQUFNLE9BQU8sWUFBWTtJQUN2QixXQUFXLENBQUMsSUFBaUIsRUFBRSxJQUFlO1FBQzVDLE1BQU0sR0FBRyxHQUFnQixFQUFFLENBQUM7UUFDNUIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFhLEVBQUUsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRCxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQUUsT0FBTztZQUMvQixLQUFLLElBQUksS0FBSyxJQUFJLFFBQVEsRUFBRTtnQkFDMUIsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFpQixFQUFFLElBQWU7UUFDM0MsTUFBTSxHQUFHLEdBQWdCLEVBQUUsQ0FBQztRQUM1QixNQUFNLE9BQU8sR0FBRyxDQUFDLEVBQWEsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRztnQkFBRSxPQUFPO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxD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QyxDQUFDLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDdEQ7SUFDSCxDQUFDO2lJQWpFVSxZQUFZO3FJQUFaLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhJc0VtcHR5LCBYUmVtb3ZlIH0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFhUcmVlTm9kZSB9IGZyb20gJy4vdHJlZS5wcm9wZXJ0eSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgWFRyZWVTZXJ2aWNlIHtcclxuICBnZXRDaGlsZHJlbihkYXRhOiBYVHJlZU5vZGVbXSwgbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBjb25zdCByZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICBjb25zdCBnQ2hpbGRyZW4gPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuZmlsdGVyKCh4KSA9PiB4LnBpZCA9PT0gbmQuaWQpO1xyXG4gICAgICBpZiAoWElzRW1wdHkoY2hpbGRyZW4pKSByZXR1cm47XHJcbiAgICAgIGZvciAobGV0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XHJcbiAgICAgICAgcmVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgIGdDaGlsZHJlbihjaGlsZCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBnQ2hpbGRyZW4obm9kZSk7XHJcblxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIGdldFBhcmVudHMoZGF0YTogWFRyZWVOb2RlW10sIG5vZGU6IFhUcmVlTm9kZSkge1xyXG4gICAgY29uc3QgcmVzOiBYVHJlZU5vZGVbXSA9IFtdO1xyXG4gICAgY29uc3QgZ1BhcmVudCA9IChuZDogWFRyZWVOb2RlKSA9PiB7XHJcbiAgICAgIGlmICghbmQucGlkKSByZXR1cm47XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IGRhdGEuZmluZCgoeCkgPT4geC5pZCA9PT0gbmQucGlkKTtcclxuICAgICAgaWYgKCFwYXJlbnQpIHJldHVybjtcclxuICAgICAgcmVzLnB1c2gocGFyZW50KTtcclxuICAgICAgZ1BhcmVudChwYXJlbnQpO1xyXG4gICAgfTtcclxuICAgIGdQYXJlbnQobm9kZSk7XHJcblxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9XHJcblxyXG4gIGdldE9wZW5DaGlsZHJlbihkYXRhOiBYVHJlZU5vZGVbXSwgbm9kZTogWFRyZWVOb2RlKSB7XHJcbiAgICBjb25zdCByZXM6IFhUcmVlTm9kZVtdID0gW107XHJcbiAgICBjb25zdCBnQ2hpbGRyZW4gPSAobmQ6IFhUcmVlTm9kZSkgPT4ge1xyXG4gICAgICBpZiAoIW5kLm9wZW4pIHJldHVybjtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmZpbHRlcigoeCkgPT4geC5waWQgPT09IG5kLmlkKTtcclxuICAgICAgaWYgKFhJc0VtcHR5KGNoaWxkcmVuKSkgcmV0dXJuO1xyXG4gICAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xyXG4gICAgICAgIHJlcy5wdXNoKGNoaWxkKTtcclxuICAgICAgICBnQ2hpbGRyZW4oY2hpbGQpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgZ0NoaWxkcmVuKG5vZGUpO1xyXG5cclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG5cclxuICBtb3ZlTm9kZShkYXRhOiBYVHJlZU5vZGVbXSwgZnJvbTogWFRyZWVOb2RlLCB0bzogWFRyZWVOb2RlLCBwb3M6IC0xIHwgMSkge1xyXG4gICAgaWYgKFhJc0VtcHR5KGRhdGEpKSByZXR1cm47XHJcbiAgICBjb25zdCBmb3JtSW5kZXggPSBkYXRhLmZpbmRJbmRleCgoeCkgPT4geC5pZCA9PT0gZnJvbS5pZCk7XHJcbiAgICBjb25zdCB0b0luZGV4ID0gZGF0YS5maW5kSW5kZXgoKHgpID0+IHguaWQgPT09IHRvLmlkKTtcclxuICAgIFhSZW1vdmUoZGF0YSwgKHgpID0+IHguaWQgPT09IGZyb20uaWQpO1xyXG4gICAgaWYgKGZyb20ucGlkID09PSB0by5waWQpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0b0luZGV4ID4gZm9ybUluZGV4ID8gdG9JbmRleCAtIDEgOiB0b0luZGV4O1xyXG4gICAgICBkYXRhLnNwbGljZShwb3MgPT09IC0xID8gaW5kZXggOiBpbmRleCArIDEsIDAsIGZyb20pO1xyXG4gICAgfSBlbHNlIGlmIChmcm9tLnBpZCAhPT0gdG8ucGlkKSB7XHJcbiAgICAgIGZyb20ucGlkID0gdG8ucGlkO1xyXG4gICAgICBjb25zdCBkaWZmTGV2ZWwgPSB0by5sZXZlbCEgLSBmcm9tLmxldmVsITtcclxuICAgICAgZnJvbS5sZXZlbCA9IHRvLmxldmVsO1xyXG4gICAgICBjb25zdCBmcm9tQ2hpbGRyZW4gPSB0aGlzLmdldENoaWxkcmVuKGRhdGEsIGZyb20pO1xyXG4gICAgICBmcm9tQ2hpbGRyZW4uZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICAgIHgubGV2ZWwgPSB4LmxldmVsISArIGRpZmZMZXZlbDtcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdG9JbmRleCA+IGZvcm1JbmRleCA/IHRvSW5kZXggLSAxIDogdG9JbmRleDtcclxuICAgICAgZGF0YS5zcGxpY2UocG9zID09PSAtMSA/IGluZGV4IDogaW5kZXggKyAxLCAwLCBmcm9tKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|