primeng 18.0.0-rc.2 → 18.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/accordion/accordion.d.ts +7 -7
- package/autocomplete/autocomplete.d.ts +26 -13
- package/badge/badge.d.ts +1 -3
- package/basecomponent/basecomponent.d.ts +2 -5
- package/blockui/blockui.d.ts +10 -5
- package/breadcrumb/breadcrumb.d.ts +9 -6
- package/button/button.d.ts +10 -4
- package/calendar/calendar.d.ts +29 -15
- package/card/card.d.ts +12 -5
- package/carousel/carousel.d.ts +10 -4
- package/cascadeselect/cascadeselect.d.ts +18 -8
- package/checkbox/checkbox.d.ts +8 -4
- package/chip/chip.d.ts +9 -7
- package/config/primeng.d.ts +12 -6
- package/config/provideprimeng.d.ts +1 -12
- package/config/themeprovider.d.ts +10 -4
- package/confirmdialog/confirmdialog.d.ts +15 -5
- package/confirmpopup/confirmpopup.d.ts +11 -5
- package/contextmenu/contextmenu.d.ts +10 -6
- package/datepicker/datepicker.d.ts +25 -11
- package/dialog/dialog.d.ts +15 -4
- package/divider/divider.d.ts +1 -1
- package/dock/dock.d.ts +7 -4
- package/drawer/drawer.d.ts +18 -10
- package/dropdown/dropdown.d.ts +4 -3
- package/dynamicdialog/dynamicdialog.d.ts +1 -0
- package/editor/editor.d.ts +7 -3
- package/esm2022/accordion/accordion.mjs +58 -43
- package/esm2022/autocomplete/autocomplete.mjs +227 -168
- package/esm2022/autocomplete/style/autocompletestyle.mjs +5 -4
- package/esm2022/badge/badge.mjs +39 -32
- package/esm2022/basecomponent/basecomponent.mjs +3 -26
- package/esm2022/blockui/blockui.mjs +38 -18
- package/esm2022/breadcrumb/breadcrumb.mjs +50 -32
- package/esm2022/button/button.mjs +55 -28
- package/esm2022/calendar/calendar.mjs +200 -137
- package/esm2022/card/card.mjs +96 -46
- package/esm2022/carousel/carousel.mjs +74 -42
- package/esm2022/cascadeselect/cascadeselect.mjs +100 -62
- package/esm2022/checkbox/checkbox.mjs +32 -14
- package/esm2022/chip/chip.mjs +117 -96
- package/esm2022/colorpicker/colorpicker.mjs +2 -2
- package/esm2022/config/primeng.mjs +14 -18
- package/esm2022/config/provideprimeng.mjs +11 -3
- package/esm2022/config/themeprovider.mjs +10 -16
- package/esm2022/confirmdialog/confirmdialog.mjs +105 -61
- package/esm2022/confirmpopup/confirmpopup.mjs +57 -29
- package/esm2022/contextmenu/contextmenu.mjs +52 -21
- package/esm2022/datepicker/datepicker.mjs +200 -159
- package/esm2022/dialog/dialog.mjs +113 -67
- package/esm2022/divider/divider.mjs +2 -4
- package/esm2022/dock/dock.mjs +31 -13
- package/esm2022/drawer/drawer.mjs +115 -73
- package/esm2022/dropdown/dropdown.mjs +13 -5
- package/esm2022/dynamicdialog/dialogservice.mjs +2 -2
- package/esm2022/dynamicdialog/dynamicdialog-config.mjs +13 -13
- package/esm2022/dynamicdialog/dynamicdialog.mjs +9 -5
- package/esm2022/editor/editor.mjs +27 -11
- package/esm2022/fieldset/fieldset.mjs +61 -33
- package/esm2022/fileupload/fileupload.mjs +139 -89
- package/esm2022/galleria/galleria.mjs +18 -9
- package/esm2022/image/image.mjs +114 -67
- package/esm2022/imagecompare/imagecompare.mjs +31 -11
- package/esm2022/inplace/inplace.mjs +49 -24
- package/esm2022/inputmask/inputmask.mjs +33 -17
- package/esm2022/inputmask/style/inputmaskstyle.mjs +2 -2
- package/esm2022/inputnumber/inputnumber.mjs +58 -50
- package/esm2022/inputotp/inputotp.mjs +33 -14
- package/esm2022/inputtext/inputtext.mjs +11 -10
- package/esm2022/listbox/listbox.mjs +137 -78
- package/esm2022/megamenu/megamenu.mjs +105 -59
- package/esm2022/menu/menu.mjs +27 -27
- package/esm2022/menubar/menubar.mjs +70 -35
- package/esm2022/message/message.mjs +50 -26
- package/esm2022/messages/messages.mjs +13 -4
- package/esm2022/metergroup/metergroup.mjs +63 -31
- package/esm2022/multiselect/multiselect.mjs +247 -156
- package/esm2022/multiselect/style/multiselectstyle.mjs +1 -4
- package/esm2022/orderlist/orderlist.mjs +125 -70
- package/esm2022/organizationchart/organizationchart.mjs +30 -14
- package/esm2022/overlay/overlay.mjs +27 -7
- package/esm2022/overlay/style/overlaystyle.mjs +2 -2
- package/esm2022/overlaypanel/overlaypanel.mjs +34 -11
- package/esm2022/paginator/paginator.mjs +92 -60
- package/esm2022/panel/panel.mjs +160 -100
- package/esm2022/panelmenu/panelmenu.mjs +55 -32
- package/esm2022/password/password.mjs +114 -52
- package/esm2022/picklist/picklist.mjs +397 -269
- package/esm2022/popover/popover.mjs +30 -13
- package/esm2022/progressbar/progressbar.mjs +27 -9
- package/esm2022/rating/rating.mjs +46 -22
- package/esm2022/ripple/ripple.mjs +5 -2
- package/esm2022/scroller/scroller.mjs +47 -37
- package/esm2022/scrollpanel/scrollpanel.mjs +28 -9
- package/esm2022/scrolltop/scrolltop.mjs +17 -10
- package/esm2022/select/select.mjs +202 -122
- package/esm2022/select/style/selectstyle.mjs +2 -5
- package/esm2022/selectbutton/selectbutton.mjs +26 -11
- package/esm2022/sidebar/sidebar.mjs +83 -61
- package/esm2022/speeddial/speeddial.mjs +54 -29
- package/esm2022/splitbutton/splitbutton.mjs +41 -18
- package/esm2022/splitter/splitter.mjs +29 -19
- package/esm2022/splitter/style/splitterstyle.mjs +5 -4
- package/esm2022/stepper/stepper.mjs +27 -13
- package/esm2022/table/table.mjs +6368 -6510
- package/esm2022/tabmenu/tabmenu.mjs +54 -27
- package/esm2022/tabs/tablist.mjs +28 -20
- package/esm2022/tabview/tabview.mjs +106 -54
- package/esm2022/tag/tag.mjs +68 -44
- package/esm2022/textarea/textarea.mjs +9 -9
- package/esm2022/tieredmenu/tieredmenu.mjs +45 -22
- package/esm2022/timeline/timeline.mjs +41 -17
- package/esm2022/toast/toast.mjs +31 -9
- package/esm2022/togglebutton/togglebutton.mjs +45 -30
- package/esm2022/toggleswitch/toggleswitch.mjs +28 -9
- package/esm2022/toolbar/toolbar.mjs +47 -21
- package/esm2022/tooltip/tooltip.mjs +36 -71
- package/esm2022/tree/style/treestyle.mjs +13 -3
- package/esm2022/tree/tree.mjs +193 -137
- package/esm2022/treeselect/style/treeselectstyle.mjs +1 -4
- package/esm2022/treeselect/treeselect.mjs +157 -90
- package/esm2022/treetable/treetable.mjs +31 -12
- package/esm2022/usestyle/usestyle.mjs +2 -2
- package/fesm2022/primeng-accordion.mjs +57 -42
- package/fesm2022/primeng-accordion.mjs.map +1 -1
- package/fesm2022/primeng-autocomplete.mjs +230 -170
- package/fesm2022/primeng-autocomplete.mjs.map +1 -1
- package/fesm2022/primeng-badge.mjs +38 -31
- package/fesm2022/primeng-badge.mjs.map +1 -1
- package/fesm2022/primeng-basecomponent.mjs +2 -25
- package/fesm2022/primeng-basecomponent.mjs.map +1 -1
- package/fesm2022/primeng-blockui.mjs +37 -17
- package/fesm2022/primeng-blockui.mjs.map +1 -1
- package/fesm2022/primeng-breadcrumb.mjs +49 -31
- package/fesm2022/primeng-breadcrumb.mjs.map +1 -1
- package/fesm2022/primeng-button.mjs +54 -27
- package/fesm2022/primeng-button.mjs.map +1 -1
- package/fesm2022/primeng-calendar.mjs +199 -136
- package/fesm2022/primeng-calendar.mjs.map +1 -1
- package/fesm2022/primeng-card.mjs +95 -45
- package/fesm2022/primeng-card.mjs.map +1 -1
- package/fesm2022/primeng-carousel.mjs +73 -41
- package/fesm2022/primeng-carousel.mjs.map +1 -1
- package/fesm2022/primeng-cascadeselect.mjs +99 -61
- package/fesm2022/primeng-cascadeselect.mjs.map +1 -1
- package/fesm2022/primeng-checkbox.mjs +31 -13
- package/fesm2022/primeng-checkbox.mjs.map +1 -1
- package/fesm2022/primeng-chip.mjs +116 -95
- package/fesm2022/primeng-chip.mjs.map +1 -1
- package/fesm2022/primeng-colorpicker.mjs +1 -1
- package/fesm2022/primeng-colorpicker.mjs.map +1 -1
- package/fesm2022/primeng-config.mjs +38 -39
- package/fesm2022/primeng-config.mjs.map +1 -1
- package/fesm2022/primeng-confirmdialog.mjs +104 -60
- package/fesm2022/primeng-confirmdialog.mjs.map +1 -1
- package/fesm2022/primeng-confirmpopup.mjs +56 -28
- package/fesm2022/primeng-confirmpopup.mjs.map +1 -1
- package/fesm2022/primeng-contextmenu.mjs +51 -20
- package/fesm2022/primeng-contextmenu.mjs.map +1 -1
- package/fesm2022/primeng-datepicker.mjs +199 -158
- package/fesm2022/primeng-datepicker.mjs.map +1 -1
- package/fesm2022/primeng-dialog.mjs +112 -66
- package/fesm2022/primeng-dialog.mjs.map +1 -1
- package/fesm2022/primeng-divider.mjs +1 -3
- package/fesm2022/primeng-divider.mjs.map +1 -1
- package/fesm2022/primeng-dock.mjs +30 -12
- package/fesm2022/primeng-dock.mjs.map +1 -1
- package/fesm2022/primeng-drawer.mjs +114 -72
- package/fesm2022/primeng-drawer.mjs.map +1 -1
- package/fesm2022/primeng-dropdown.mjs +12 -4
- package/fesm2022/primeng-dropdown.mjs.map +1 -1
- package/fesm2022/primeng-dynamicdialog.mjs +21 -17
- package/fesm2022/primeng-dynamicdialog.mjs.map +1 -1
- package/fesm2022/primeng-editor.mjs +26 -10
- package/fesm2022/primeng-editor.mjs.map +1 -1
- package/fesm2022/primeng-fieldset.mjs +60 -32
- package/fesm2022/primeng-fieldset.mjs.map +1 -1
- package/fesm2022/primeng-fileupload.mjs +138 -88
- package/fesm2022/primeng-fileupload.mjs.map +1 -1
- package/fesm2022/primeng-galleria.mjs +17 -8
- package/fesm2022/primeng-galleria.mjs.map +1 -1
- package/fesm2022/primeng-image.mjs +113 -66
- package/fesm2022/primeng-image.mjs.map +1 -1
- package/fesm2022/primeng-imagecompare.mjs +30 -10
- package/fesm2022/primeng-imagecompare.mjs.map +1 -1
- package/fesm2022/primeng-inplace.mjs +48 -23
- package/fesm2022/primeng-inplace.mjs.map +1 -1
- package/fesm2022/primeng-inputmask.mjs +33 -17
- package/fesm2022/primeng-inputmask.mjs.map +1 -1
- package/fesm2022/primeng-inputnumber.mjs +57 -49
- package/fesm2022/primeng-inputnumber.mjs.map +1 -1
- package/fesm2022/primeng-inputotp.mjs +32 -13
- package/fesm2022/primeng-inputotp.mjs.map +1 -1
- package/fesm2022/primeng-inputtext.mjs +10 -9
- package/fesm2022/primeng-inputtext.mjs.map +1 -1
- package/fesm2022/primeng-listbox.mjs +136 -77
- package/fesm2022/primeng-listbox.mjs.map +1 -1
- package/fesm2022/primeng-megamenu.mjs +104 -58
- package/fesm2022/primeng-megamenu.mjs.map +1 -1
- package/fesm2022/primeng-menu.mjs +26 -26
- package/fesm2022/primeng-menu.mjs.map +1 -1
- package/fesm2022/primeng-menubar.mjs +69 -34
- package/fesm2022/primeng-menubar.mjs.map +1 -1
- package/fesm2022/primeng-message.mjs +49 -25
- package/fesm2022/primeng-message.mjs.map +1 -1
- package/fesm2022/primeng-messages.mjs +12 -3
- package/fesm2022/primeng-messages.mjs.map +1 -1
- package/fesm2022/primeng-metergroup.mjs +62 -30
- package/fesm2022/primeng-metergroup.mjs.map +1 -1
- package/fesm2022/primeng-multiselect.mjs +246 -158
- package/fesm2022/primeng-multiselect.mjs.map +1 -1
- package/fesm2022/primeng-orderlist.mjs +124 -69
- package/fesm2022/primeng-orderlist.mjs.map +1 -1
- package/fesm2022/primeng-organizationchart.mjs +29 -13
- package/fesm2022/primeng-organizationchart.mjs.map +1 -1
- package/fesm2022/primeng-overlay.mjs +27 -7
- package/fesm2022/primeng-overlay.mjs.map +1 -1
- package/fesm2022/primeng-overlaypanel.mjs +33 -10
- package/fesm2022/primeng-overlaypanel.mjs.map +1 -1
- package/fesm2022/primeng-paginator.mjs +91 -59
- package/fesm2022/primeng-paginator.mjs.map +1 -1
- package/fesm2022/primeng-panel.mjs +159 -99
- package/fesm2022/primeng-panel.mjs.map +1 -1
- package/fesm2022/primeng-panelmenu.mjs +54 -31
- package/fesm2022/primeng-panelmenu.mjs.map +1 -1
- package/fesm2022/primeng-password.mjs +113 -51
- package/fesm2022/primeng-password.mjs.map +1 -1
- package/fesm2022/primeng-picklist.mjs +396 -268
- package/fesm2022/primeng-picklist.mjs.map +1 -1
- package/fesm2022/primeng-popover.mjs +29 -12
- package/fesm2022/primeng-popover.mjs.map +1 -1
- package/fesm2022/primeng-progressbar.mjs +26 -8
- package/fesm2022/primeng-progressbar.mjs.map +1 -1
- package/fesm2022/primeng-rating.mjs +45 -21
- package/fesm2022/primeng-rating.mjs.map +1 -1
- package/fesm2022/primeng-ripple.mjs +4 -1
- package/fesm2022/primeng-ripple.mjs.map +1 -1
- package/fesm2022/primeng-scroller.mjs +46 -36
- package/fesm2022/primeng-scroller.mjs.map +1 -1
- package/fesm2022/primeng-scrollpanel.mjs +27 -8
- package/fesm2022/primeng-scrollpanel.mjs.map +1 -1
- package/fesm2022/primeng-scrolltop.mjs +16 -9
- package/fesm2022/primeng-scrolltop.mjs.map +1 -1
- package/fesm2022/primeng-select.mjs +202 -125
- package/fesm2022/primeng-select.mjs.map +1 -1
- package/fesm2022/primeng-selectbutton.mjs +25 -10
- package/fesm2022/primeng-selectbutton.mjs.map +1 -1
- package/fesm2022/primeng-sidebar.mjs +82 -60
- package/fesm2022/primeng-sidebar.mjs.map +1 -1
- package/fesm2022/primeng-speeddial.mjs +53 -28
- package/fesm2022/primeng-speeddial.mjs.map +1 -1
- package/fesm2022/primeng-splitbutton.mjs +40 -17
- package/fesm2022/primeng-splitbutton.mjs.map +1 -1
- package/fesm2022/primeng-splitter.mjs +32 -21
- package/fesm2022/primeng-splitter.mjs.map +1 -1
- package/fesm2022/primeng-stepper.mjs +26 -12
- package/fesm2022/primeng-stepper.mjs.map +1 -1
- package/fesm2022/primeng-table.mjs +6370 -6512
- package/fesm2022/primeng-table.mjs.map +1 -1
- package/fesm2022/primeng-tabmenu.mjs +53 -26
- package/fesm2022/primeng-tabmenu.mjs.map +1 -1
- package/fesm2022/primeng-tabs.mjs +27 -19
- package/fesm2022/primeng-tabs.mjs.map +1 -1
- package/fesm2022/primeng-tabview.mjs +106 -54
- package/fesm2022/primeng-tabview.mjs.map +1 -1
- package/fesm2022/primeng-tag.mjs +67 -43
- package/fesm2022/primeng-tag.mjs.map +1 -1
- package/fesm2022/primeng-textarea.mjs +8 -8
- package/fesm2022/primeng-textarea.mjs.map +1 -1
- package/fesm2022/primeng-tieredmenu.mjs +44 -21
- package/fesm2022/primeng-tieredmenu.mjs.map +1 -1
- package/fesm2022/primeng-timeline.mjs +40 -16
- package/fesm2022/primeng-timeline.mjs.map +1 -1
- package/fesm2022/primeng-toast.mjs +30 -8
- package/fesm2022/primeng-toast.mjs.map +1 -1
- package/fesm2022/primeng-togglebutton.mjs +44 -29
- package/fesm2022/primeng-togglebutton.mjs.map +1 -1
- package/fesm2022/primeng-toggleswitch.mjs +27 -8
- package/fesm2022/primeng-toggleswitch.mjs.map +1 -1
- package/fesm2022/primeng-toolbar.mjs +46 -20
- package/fesm2022/primeng-toolbar.mjs.map +1 -1
- package/fesm2022/primeng-tooltip.mjs +36 -71
- package/fesm2022/primeng-tooltip.mjs.map +1 -1
- package/fesm2022/primeng-tree.mjs +204 -138
- package/fesm2022/primeng-tree.mjs.map +1 -1
- package/fesm2022/primeng-treeselect.mjs +156 -92
- package/fesm2022/primeng-treeselect.mjs.map +1 -1
- package/fesm2022/primeng-treetable.mjs +30 -11
- package/fesm2022/primeng-treetable.mjs.map +1 -1
- package/fesm2022/primeng-usestyle.mjs +1 -1
- package/fesm2022/primeng-usestyle.mjs.map +1 -1
- package/fieldset/fieldset.d.ts +12 -6
- package/fileupload/fileupload.d.ts +19 -8
- package/galleria/galleria.d.ts +3 -2
- package/image/image.d.ts +18 -7
- package/imagecompare/imagecompare.d.ts +7 -2
- package/inplace/inplace.d.ts +12 -6
- package/inputmask/inputmask.d.ts +8 -4
- package/inputnumber/inputnumber.d.ts +11 -6
- package/inputotp/inputotp.d.ts +7 -2
- package/inputtext/inputtext.d.ts +2 -2
- package/listbox/listbox.d.ts +17 -4
- package/megamenu/megamenu.d.ts +16 -7
- package/menu/menu.d.ts +6 -6
- package/menubar/menubar.d.ts +13 -6
- package/message/message.d.ts +10 -4
- package/messages/messages.d.ts +4 -3
- package/metergroup/metergroup.d.ts +11 -3
- package/multiselect/multiselect.d.ts +36 -17
- package/orderlist/orderlist.d.ts +23 -11
- package/organizationchart/organizationchart.d.ts +6 -4
- package/overlay/overlay.d.ts +6 -3
- package/overlaypanel/overlaypanel.d.ts +6 -3
- package/package.json +233 -233
- package/paginator/paginator.d.ts +15 -8
- package/panel/panel.d.ts +14 -5
- package/panelmenu/panelmenu.d.ts +8 -4
- package/password/password.d.ts +20 -8
- package/picklist/picklist.d.ts +23 -3
- package/popover/popover.d.ts +8 -5
- package/progressbar/progressbar.d.ts +7 -3
- package/rating/rating.d.ts +11 -5
- package/scroller/scroller.d.ts +9 -4
- package/scrollpanel/scrollpanel.d.ts +7 -3
- package/scrolltop/scrolltop.d.ts +7 -4
- package/select/select.d.ts +31 -13
- package/selectbutton/selectbutton.d.ts +7 -3
- package/sidebar/sidebar.d.ts +9 -2
- package/speeddial/speeddial.d.ts +9 -4
- package/splitbutton/splitbutton.d.ts +9 -5
- package/splitter/splitter.d.ts +6 -7
- package/splitter/style/splitterstyle.d.ts +0 -13
- package/stepper/stepper.d.ts +8 -3
- package/table/table.d.ts +928 -1030
- package/tabmenu/tabmenu.d.ts +12 -7
- package/tabs/tablist.d.ts +6 -2
- package/tabview/tabview.d.ts +16 -7
- package/tag/tag.d.ts +8 -9
- package/textarea/textarea.d.ts +2 -2
- package/tieredmenu/tieredmenu.d.ts +10 -6
- package/timeline/timeline.d.ts +7 -2
- package/toast/toast.d.ts +7 -3
- package/togglebutton/togglebutton.d.ts +8 -3
- package/toggleswitch/toggleswitch.d.ts +6 -2
- package/toolbar/toolbar.d.ts +9 -4
- package/tooltip/tooltip.d.ts +2 -1
- package/tree/style/treestyle.d.ts +1 -1
- package/tree/tree.d.ts +25 -10
- package/treeselect/treeselect.d.ts +26 -12
- package/treetable/treetable.d.ts +7 -5
@@ -1,7 +1,7 @@
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
2
|
-
import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, forwardRef, inject, Input, NgModule, ViewChild, ViewEncapsulation } from '@angular/core';
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, ElementRef, forwardRef, inject, Input, NgModule, ViewChild, ViewEncapsulation } from '@angular/core';
|
3
3
|
import { getOuterHeight } from '@primeuix/utils';
|
4
|
-
import { SharedModule } from 'primeng/api';
|
4
|
+
import { PrimeTemplate, SharedModule } from 'primeng/api';
|
5
5
|
import { BaseComponent } from 'primeng/basecomponent';
|
6
6
|
import { MeterGroupStyle } from './style/metergroupstyle';
|
7
7
|
import * as i0 from "@angular/core";
|
@@ -65,7 +65,7 @@ function MeterGroup_Conditional_2_p_meterGroupLabel_0_Template(rf, ctx) { if (rf
|
|
65
65
|
i0.ɵɵelement(0, "p-meterGroupLabel", 6);
|
66
66
|
} if (rf & 2) {
|
67
67
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
68
|
-
i0.ɵɵproperty("value", ctx_r0.value)("labelPosition", ctx_r0.labelPosition)("labelOrientation", ctx_r0.labelOrientation)("min", ctx_r0.min)("max", ctx_r0.max)("iconTemplate", ctx_r0.iconTemplate);
|
68
|
+
i0.ɵɵproperty("value", ctx_r0.value)("labelPosition", ctx_r0.labelPosition)("labelOrientation", ctx_r0.labelOrientation)("min", ctx_r0.min)("max", ctx_r0.max)("iconTemplate", ctx_r0.iconTemplate || ctx_r0._iconTemplate);
|
69
69
|
} }
|
70
70
|
function MeterGroup_Conditional_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
71
71
|
i0.ɵɵelementContainer(0);
|
@@ -74,9 +74,9 @@ function MeterGroup_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
74
74
|
i0.ɵɵtemplate(0, MeterGroup_Conditional_2_p_meterGroupLabel_0_Template, 1, 6, "p-meterGroupLabel", 5)(1, MeterGroup_Conditional_2_ng_container_1_Template, 1, 0, "ng-container", 2);
|
75
75
|
} if (rf & 2) {
|
76
76
|
const ctx_r0 = i0.ɵɵnextContext();
|
77
|
-
i0.ɵɵproperty("ngIf", !ctx_r0.labelTemplate);
|
77
|
+
i0.ɵɵproperty("ngIf", !ctx_r0.labelTemplate && !ctx_r0._labelTemplate);
|
78
78
|
i0.ɵɵadvance();
|
79
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.labelTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(3, _c10, ctx_r0.value, ctx_r0.totalPercent(), ctx_r0.percentages()));
|
79
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.labelTemplate || ctx_r0.labelTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(3, _c10, ctx_r0.value, ctx_r0.totalPercent(), ctx_r0.percentages()));
|
80
80
|
} }
|
81
81
|
function MeterGroup_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
82
82
|
i0.ɵɵelementContainer(0);
|
@@ -103,9 +103,9 @@ function MeterGroup_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
103
103
|
const index_r3 = ctx.index;
|
104
104
|
const ctx_r0 = i0.ɵɵnextContext();
|
105
105
|
i0.ɵɵadvance();
|
106
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.meterTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction5(3, _c11, meterItem_r2, index_r3, ctx_r0.orientation, ctx_r0.percentValue(meterItem_r2.value), ctx_r0.totalPercent()));
|
106
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.meterTemplate || ctx_r0._meterTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction5(3, _c11, meterItem_r2, index_r3, ctx_r0.orientation, ctx_r0.percentValue(meterItem_r2.value), ctx_r0.totalPercent()));
|
107
107
|
i0.ɵɵadvance();
|
108
|
-
i0.ɵɵproperty("ngIf", !ctx_r0.meterTemplate && meterItem_r2.value > 0);
|
108
|
+
i0.ɵɵproperty("ngIf", !ctx_r0.meterTemplate && !ctx_r0._meterTemplate && meterItem_r2.value > 0);
|
109
109
|
} }
|
110
110
|
function MeterGroup_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
111
111
|
i0.ɵɵelementContainer(0);
|
@@ -114,7 +114,7 @@ function MeterGroup_Conditional_7_p_meterGroupLabel_0_Template(rf, ctx) { if (rf
|
|
114
114
|
i0.ɵɵelement(0, "p-meterGroupLabel", 6);
|
115
115
|
} if (rf & 2) {
|
116
116
|
const ctx_r0 = i0.ɵɵnextContext(2);
|
117
|
-
i0.ɵɵproperty("value", ctx_r0.value)("labelPosition", ctx_r0.labelPosition)("labelOrientation", ctx_r0.labelOrientation)("min", ctx_r0.min)("max", ctx_r0.max)("iconTemplate", ctx_r0.iconTemplate);
|
117
|
+
i0.ɵɵproperty("value", ctx_r0.value)("labelPosition", ctx_r0.labelPosition)("labelOrientation", ctx_r0.labelOrientation)("min", ctx_r0.min)("max", ctx_r0.max)("iconTemplate", ctx_r0.iconTemplate || ctx_r0._iconTemplate);
|
118
118
|
} }
|
119
119
|
function MeterGroup_Conditional_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
120
120
|
i0.ɵɵelementContainer(0);
|
@@ -123,9 +123,9 @@ function MeterGroup_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
123
123
|
i0.ɵɵtemplate(0, MeterGroup_Conditional_7_p_meterGroupLabel_0_Template, 1, 6, "p-meterGroupLabel", 5)(1, MeterGroup_Conditional_7_ng_container_1_Template, 1, 0, "ng-container", 2);
|
124
124
|
} if (rf & 2) {
|
125
125
|
const ctx_r0 = i0.ɵɵnextContext();
|
126
|
-
i0.ɵɵproperty("ngIf", !ctx_r0.labelTemplate);
|
126
|
+
i0.ɵɵproperty("ngIf", !ctx_r0.labelTemplate && !ctx_r0._labelTemplate);
|
127
127
|
i0.ɵɵadvance();
|
128
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.labelTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(3, _c10, ctx_r0.value, ctx_r0.totalPercent(), ctx_r0.percentages()));
|
128
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.labelTemplate || ctx_r0._labelTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(3, _c10, ctx_r0.value, ctx_r0.totalPercent(), ctx_r0.percentages()));
|
129
129
|
} }
|
130
130
|
export class MeterGroupLabel {
|
131
131
|
value = null;
|
@@ -246,6 +246,12 @@ export class MeterGroup extends BaseComponent {
|
|
246
246
|
endTemplate;
|
247
247
|
startTemplate;
|
248
248
|
iconTemplate;
|
249
|
+
templates;
|
250
|
+
_labelTemplate;
|
251
|
+
_meterTemplate;
|
252
|
+
_endTemplate;
|
253
|
+
_startTemplate;
|
254
|
+
_iconTemplate;
|
249
255
|
_componentStyle = inject(MeterGroupStyle);
|
250
256
|
container;
|
251
257
|
ngAfterViewInit() {
|
@@ -254,6 +260,27 @@ export class MeterGroup extends BaseComponent {
|
|
254
260
|
const height = getOuterHeight(_container);
|
255
261
|
this.vertical && (_container.style.height = height + 'px');
|
256
262
|
}
|
263
|
+
ngAfterContentInit() {
|
264
|
+
this.templates?.forEach((item) => {
|
265
|
+
switch (item.getType()) {
|
266
|
+
case 'label':
|
267
|
+
this._labelTemplate = item.template;
|
268
|
+
break;
|
269
|
+
case 'meter':
|
270
|
+
this._meterTemplate = item.template;
|
271
|
+
break;
|
272
|
+
case 'icon':
|
273
|
+
this._iconTemplate = item.template;
|
274
|
+
break;
|
275
|
+
case 'start':
|
276
|
+
this._startTemplate = item.template;
|
277
|
+
break;
|
278
|
+
case 'end':
|
279
|
+
this._endTemplate = item.template;
|
280
|
+
break;
|
281
|
+
}
|
282
|
+
});
|
283
|
+
}
|
257
284
|
percent(meter = 0) {
|
258
285
|
const percentOfItem = ((meter - this.min) / (this.max - this.min)) * 100;
|
259
286
|
return Math.round(Math.max(0, Math.min(100, percentOfItem)));
|
@@ -285,11 +312,12 @@ export class MeterGroup extends BaseComponent {
|
|
285
312
|
}
|
286
313
|
static ɵfac = /*@__PURE__*/ (() => { let ɵMeterGroup_BaseFactory; return function MeterGroup_Factory(__ngFactoryType__) { return (ɵMeterGroup_BaseFactory || (ɵMeterGroup_BaseFactory = i0.ɵɵgetInheritedFactory(MeterGroup)))(__ngFactoryType__ || MeterGroup); }; })();
|
287
314
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MeterGroup, selectors: [["p-meterGroup"], ["p-metergroup"], ["p-meter-group"]], contentQueries: function MeterGroup_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
288
|
-
i0.ɵɵcontentQuery(dirIndex, _c4,
|
289
|
-
i0.ɵɵcontentQuery(dirIndex, _c5,
|
290
|
-
i0.ɵɵcontentQuery(dirIndex, _c6,
|
291
|
-
i0.ɵɵcontentQuery(dirIndex, _c7,
|
292
|
-
i0.ɵɵcontentQuery(dirIndex, _c8,
|
315
|
+
i0.ɵɵcontentQuery(dirIndex, _c4, 4);
|
316
|
+
i0.ɵɵcontentQuery(dirIndex, _c5, 4);
|
317
|
+
i0.ɵɵcontentQuery(dirIndex, _c6, 4);
|
318
|
+
i0.ɵɵcontentQuery(dirIndex, _c7, 4);
|
319
|
+
i0.ɵɵcontentQuery(dirIndex, _c8, 4);
|
320
|
+
i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
|
293
321
|
} if (rf & 2) {
|
294
322
|
let _t;
|
295
323
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);
|
@@ -297,6 +325,7 @@ export class MeterGroup extends BaseComponent {
|
|
297
325
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.endTemplate = _t.first);
|
298
326
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.startTemplate = _t.first);
|
299
327
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.iconTemplate = _t.first);
|
328
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
|
300
329
|
} }, viewQuery: function MeterGroup_Query(rf, ctx) { if (rf & 1) {
|
301
330
|
i0.ɵɵviewQuery(_c9, 5, ElementRef);
|
302
331
|
} if (rf & 2) {
|
@@ -317,11 +346,11 @@ export class MeterGroup extends BaseComponent {
|
|
317
346
|
i0.ɵɵadvance(2);
|
318
347
|
i0.ɵɵconditional(ctx.labelPosition === "start" ? 2 : -1);
|
319
348
|
i0.ɵɵadvance();
|
320
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.startTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(16, _c10, ctx.value, ctx.totalPercent(), ctx.percentages()));
|
349
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx.startTemplate || ctx._startTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(16, _c10, ctx.value, ctx.totalPercent(), ctx.percentages()));
|
321
350
|
i0.ɵɵadvance(2);
|
322
351
|
i0.ɵɵproperty("ngForOf", ctx.value)("ngForTrackBy", ctx.trackByFn);
|
323
352
|
i0.ɵɵadvance();
|
324
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx.endTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(20, _c10, ctx.value, ctx.totalPercent(), ctx.percentages()));
|
353
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx.endTemplate || ctx._endTemplate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(20, _c10, ctx.value, ctx.totalPercent(), ctx.percentages()));
|
325
354
|
i0.ɵɵadvance();
|
326
355
|
i0.ɵɵconditional(ctx.labelPosition === "end" ? 7 : -1);
|
327
356
|
} }, dependencies: [CommonModule, i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, MeterGroupLabel, SharedModule], encapsulation: 2, changeDetection: 0 });
|
@@ -335,15 +364,15 @@ export class MeterGroup extends BaseComponent {
|
|
335
364
|
template: `
|
336
365
|
<div #container [ngClass]="containerClass" [attr.role]="'meter'" [attr.aria-valuemin]="min" [attr.aria-valuemax]="max" [attr.aria-valuenow]="totalPercent()" [ngStyle]="style" [class]="styleClass">
|
337
366
|
@if (labelPosition === 'start') {
|
338
|
-
<p-meterGroupLabel *ngIf="!labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate" />
|
339
|
-
<ng-container *ngTemplateOutlet="labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
|
367
|
+
<p-meterGroupLabel *ngIf="!labelTemplate && !_labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate || _iconTemplate" />
|
368
|
+
<ng-container *ngTemplateOutlet="labelTemplate || labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
|
340
369
|
}
|
341
|
-
<ng-container *ngTemplateOutlet="startTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
|
370
|
+
<ng-container *ngTemplateOutlet="startTemplate || _startTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
|
342
371
|
<div class="p-metergroup-meters">
|
343
372
|
<ng-container *ngFor="let meterItem of value; let index = index; trackBy: trackByFn">
|
344
373
|
<ng-container
|
345
374
|
*ngTemplateOutlet="
|
346
|
-
meterTemplate;
|
375
|
+
meterTemplate || _meterTemplate;
|
347
376
|
context: {
|
348
377
|
$implicit: meterItem,
|
349
378
|
index: index,
|
@@ -355,15 +384,15 @@ export class MeterGroup extends BaseComponent {
|
|
355
384
|
"
|
356
385
|
>
|
357
386
|
</ng-container>
|
358
|
-
<ng-container *ngIf="!meterTemplate && meterItem.value > 0">
|
387
|
+
<ng-container *ngIf="!meterTemplate && !_meterTemplate && meterItem.value > 0">
|
359
388
|
<span class="p-metergroup-meter" [ngStyle]="meterStyle(meterItem)"></span>
|
360
389
|
</ng-container>
|
361
390
|
</ng-container>
|
362
391
|
</div>
|
363
|
-
<ng-container *ngTemplateOutlet="endTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
|
392
|
+
<ng-container *ngTemplateOutlet="endTemplate || _endTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
|
364
393
|
@if (labelPosition === 'end') {
|
365
|
-
<p-meterGroupLabel *ngIf="!labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate" />
|
366
|
-
<ng-container *ngTemplateOutlet="labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
|
394
|
+
<p-meterGroupLabel *ngIf="!labelTemplate && !_labelTemplate" [value]="value" [labelPosition]="labelPosition" [labelOrientation]="labelOrientation" [min]="min" [max]="max" [iconTemplate]="iconTemplate || _iconTemplate" />
|
395
|
+
<ng-container *ngTemplateOutlet="labelTemplate || _labelTemplate; context: { $implicit: value, totalPercent: totalPercent(), percentages: percentages() }"></ng-container>
|
367
396
|
}
|
368
397
|
</div>
|
369
398
|
`,
|
@@ -389,19 +418,22 @@ export class MeterGroup extends BaseComponent {
|
|
389
418
|
type: Input
|
390
419
|
}], labelTemplate: [{
|
391
420
|
type: ContentChild,
|
392
|
-
args: ['label']
|
421
|
+
args: ['label', { descendants: false }]
|
393
422
|
}], meterTemplate: [{
|
394
423
|
type: ContentChild,
|
395
|
-
args: ['meter']
|
424
|
+
args: ['meter', { descendants: false }]
|
396
425
|
}], endTemplate: [{
|
397
426
|
type: ContentChild,
|
398
|
-
args: ['end']
|
427
|
+
args: ['end', { descendants: false }]
|
399
428
|
}], startTemplate: [{
|
400
429
|
type: ContentChild,
|
401
|
-
args: ['start']
|
430
|
+
args: ['start', { descendants: false }]
|
402
431
|
}], iconTemplate: [{
|
403
432
|
type: ContentChild,
|
404
|
-
args: ['icon']
|
433
|
+
args: ['icon', { descendants: false }]
|
434
|
+
}], templates: [{
|
435
|
+
type: ContentChildren,
|
436
|
+
args: [PrimeTemplate]
|
405
437
|
}], container: [{
|
406
438
|
type: ViewChild,
|
407
439
|
args: ['container', { read: ElementRef }]
|
@@ -420,4 +452,4 @@ export class MeterGroupModule {
|
|
420
452
|
}]
|
421
453
|
}], null, null); })();
|
422
454
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(MeterGroupModule, { imports: [MeterGroup, SharedModule], exports: [MeterGroup, SharedModule] }); })();
|
423
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0ZXJncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRlcmdyb3VwL21ldGVyZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdLLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7O0lBVXRDLHVCQUE4STs7O0lBQXBILGdDQUF3QjtJQUFpRCxBQUFoRCxvREFBK0MsMkRBQXVDOzs7SUFDekksMEJBQXdIOzs7SUFBeEQsd0VBQWdEOzs7SUFGcEgsNkJBQW9DO0lBRWhDLEFBREEsZ0ZBQTBJLHlFQUN6Qjs7OztJQUQ3RyxjQUFvQjtJQUFwQix3Q0FBb0I7SUFDakIsY0FBcUI7SUFBckIseUNBQXFCOzs7SUFFaEMsd0JBQXVIOzs7SUFMM0gsNkJBQXFIO0lBS2pILEFBSkEsdUZBQW9DLDBFQUlvRTtJQUN4RywrQkFBc0M7SUFBQSxZQUEwRTtJQUNwSCxBQURvSCxpQkFBTyxFQUN0SDs7OztJQU5jLGNBQW1CO0lBQW5CLDJDQUFtQjtJQUluQixjQUFnQztJQUFBLEFBQWhDLHNEQUFnQyx3RkFBdUQ7SUFDaEUsZUFBMEU7SUFBMUUsZ0hBQTBFOzs7Ozs7Ozs7OztJQXVDaEgsdUNBQXdMOzs7SUFBaEMsQUFBWixBQUFaLEFBQXRDLEFB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QUFVO0FBc0h2QixNQUFNLE9BQU8sZ0JBQWdCOzBHQUFoQixnQkFBZ0I7NERBQWhCLGdCQUFnQjtnRUFIZixVQUFVLEVBQUUsWUFBWSxFQUNaLFlBQVk7O2lGQUV6QixnQkFBZ0I7Y0FKNUIsUUFBUTtlQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7YUFDdEM7O3dGQUNZLGdCQUFnQixjQXRIaEIsVUFBVSxFQW1IRyxZQUFZLGFBbkh6QixVQUFVLEVBb0hHLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBpbmplY3QsIElucHV0LCBOZ01vZHVsZSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldE91dGVySGVpZ2h0IH0gZnJvbSAnQHByaW1ldWl4L3V0aWxzJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgTWV0ZXJJdGVtIH0gZnJvbSAnLi9tZXRlcmdyb3VwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZXRlckdyb3VwU3R5bGUgfSBmcm9tICcuL3N0eWxlL21ldGVyZ3JvdXBzdHlsZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1tZXRlckdyb3VwTGFiZWwsIHAtbWV0ZXJncm91cGxhYmVsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPG9sIFtuZ0NsYXNzXT1cImxhYmVsQ2xhc3NcIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbGFiZWxJdGVtIG9mIHZhbHVlOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogcGFyZW50SW5zdGFuY2UudHJhY2tCeUZuXCIgY2xhc3M9XCJwLW1ldGVyZ3JvdXAtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cImxhYmVsSXRlbS5pY29uXCIgW2NsYXNzXT1cImxhYmVsSXRlbS5pY29uXCIgW25nQ2xhc3NdPVwieyAncC1tZXRlcmdyb3VwLWxhYmVsLWljb24nOiB0cnVlIH1cIiBbbmdTdHlsZV09XCJ7IGNvbG9yOiBsYWJlbEl0ZW0uY29sb3IgfVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhbGFiZWxJdGVtLmljb25cIiBjbGFzcz1cInAtbWV0ZXJncm91cC1sYWJlbC1tYXJrZXJcIiBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmRDb2xvcjogbGFiZWxJdGVtLmNvbG9yIH1cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGxhYmVsSXRlbSwgaWNvbjogbGFiZWxJdGVtLmljb24gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZXRlcmdyb3VwLWxhYmVsLXRleHRcIj57eyBsYWJlbEl0ZW0ubGFiZWwgfX0gKHt7IHBhcmVudEluc3RhbmNlLnBlcmNlbnRWYWx1ZShsYWJlbEl0ZW0udmFsdWUpIH19KTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvb2w+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBNZXRlckdyb3VwTGFiZWwge1xuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnlbXSA9IG51bGw7XG5cbiAgICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnc3RhcnQnIHwgJ2VuZCcgPSAnZW5kJztcblxuICAgIEBJbnB1dCgpIGxhYmVsT3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG5cbiAgICBASW5wdXQoKSBtaW46IG51bWJlcjtcblxuICAgIEBJbnB1dCgpIG1heDogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgaWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgZ2V0IGxhYmVsQ2xhc3MoKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3AtbWV0ZXJncm91cC1sYWJlbC1saXN0IHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtbGFiZWwtbGlzdC12ZXJ0aWNhbCc6IHRoaXMubGFiZWxPcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtbGFiZWwtbGlzdC1ob3Jpem9udGFsJzogdGhpcy5sYWJlbE9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCdcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwYXJlbnRJbnN0YW5jZTogTWV0ZXJHcm91cCA9IGluamVjdChmb3J3YXJkUmVmKCgpID0+IE1ldGVyR3JvdXApKTtcbn1cbi8qKlxuICogTWV0ZXJHcm91cCBkaXNwbGF5cyBzY2FsYXIgbWVhc3VyZW1lbnRzIHdpdGhpbiBhIGtub3duIHJhbmdlLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW1ldGVyR3JvdXAsIHAtbWV0ZXJncm91cCwgcC1tZXRlci1ncm91cCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNZXRlckdyb3VwTGFiZWwsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzXCIgW2F0dHIucm9sZV09XCInbWV0ZXInXCIgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJtaW5cIiBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIm1heFwiIFthdHRyLmFyaWEtdmFsdWVub3ddPVwidG90YWxQZXJjZW50KClcIiBbbmdTdHlsZV09XCJzdHlsZVwiIFtjbGFzc109XCJzdHlsZUNsYXNzXCI+XG4gICAgICAgICAgICBAaWYgKGxhYmVsUG9zaXRpb24gPT09ICdzdGFydCcpIHtcbiAgICAgICAgICAgICAgICA8cC1tZXRlckdyb3VwTGFiZWwgKm5nSWY9XCIhbGFiZWxUZW1wbGF0ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIFtsYWJlbFBvc2l0aW9uXT1cImxhYmVsUG9zaXRpb25cIiBbbGFiZWxPcmllbnRhdGlvbl09XCJsYWJlbE9yaWVudGF0aW9uXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtpY29uVGVtcGxhdGVdPVwiaWNvblRlbXBsYXRlXCIgLz5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZhbHVlLCB0b3RhbFBlcmNlbnQ6IHRvdGFsUGVyY2VudCgpLCBwZXJjZW50YWdlczogcGVyY2VudGFnZXMoKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RhcnRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZhbHVlLCB0b3RhbFBlcmNlbnQ6IHRvdGFsUGVyY2VudCgpLCBwZXJjZW50YWdlczogcGVyY2VudGFnZXMoKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1tZXRlcmdyb3VwLW1ldGVyc1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1ldGVySXRlbSBvZiB2YWx1ZTsgbGV0IGluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGVyVGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IG1ldGVySXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmllbnRhdGlvbjogdGhpcy5vcmllbnRhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6ICdwLW1ldGVyZ3JvdXAtbWV0ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplOiBwZXJjZW50VmFsdWUobWV0ZXJJdGVtLnZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWV0ZXJUZW1wbGF0ZSAmJiBtZXRlckl0ZW0udmFsdWUgPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInAtbWV0ZXJncm91cC1tZXRlclwiIFtuZ1N0eWxlXT1cIm1ldGVyU3R5bGUobWV0ZXJJdGVtKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbmRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZhbHVlLCB0b3RhbFBlcmNlbnQ6IHRvdGFsUGVyY2VudCgpLCBwZXJjZW50YWdlczogcGVyY2VudGFnZXMoKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICBAaWYgKGxhYmVsUG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgICAgICAgICAgICAgPHAtbWV0ZXJHcm91cExhYmVsICpuZ0lmPVwiIWxhYmVsVGVtcGxhdGVcIiBbdmFsdWVdPVwidmFsdWVcIiBbbGFiZWxQb3NpdGlvbl09XCJsYWJlbFBvc2l0aW9uXCIgW2xhYmVsT3JpZW50YXRpb25dPVwibGFiZWxPcmllbnRhdGlvblwiIFttaW5dPVwibWluXCIgW21heF09XCJtYXhcIiBbaWNvblRlbXBsYXRlXT1cImljb25UZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbTWV0ZXJHcm91cFN0eWxlXVxufSlcbmV4cG9ydCBjbGFzcyBNZXRlckdyb3VwIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogQ3VycmVudCB2YWx1ZSBvZiB0aGUgbWV0ZXJncm91cC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogTWV0ZXJJdGVtW10gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTWluaW51bSBib3VuZGFyeSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtaW46IG51bWJlciA9IDA7XG4gICAgLyoqXG4gICAgICogTWF4aW11bSBib3VuZGFyeSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtYXg6IG51bWJlciA9IDEwMDtcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIGxheW91dCBvZiB0aGUgY29tcG9uZW50LCB2YWxpZCB2YWx1ZXMgYXJlICdob3Jpem9udGFsJyBhbmQgJ3ZlcnRpY2FsJy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIGxhYmVsIHBvc2l0aW9uIG9mIHRoZSBjb21wb25lbnQsIHZhbGlkIHZhbHVlcyBhcmUgJ3N0YXJ0JyBhbmQgJ2VuZCcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ3N0YXJ0JyB8ICdlbmQnID0gJ2VuZCc7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBsYWJlbCBvcmllbnRhdGlvbiBvZiB0aGUgY29tcG9uZW50LCB2YWxpZCB2YWx1ZXMgYXJlICdob3Jpem9udGFsJyBhbmQgJ3ZlcnRpY2FsJy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBsYWJlbE9yaWVudGF0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnIHwgdW5kZWZpbmVkID0gJ2hvcml6b250YWwnO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBnZXQgdmVydGljYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnO1xuICAgIH1cblxuICAgIGdldCBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3AtbWV0ZXJncm91cC1ob3Jpem9udGFsJzogdGhpcy5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnLFxuICAgICAgICAgICAgJ3AtbWV0ZXJncm91cC12ZXJ0aWNhbCc6IHRoaXMub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkKCdsYWJlbCcpIGxhYmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdtZXRlcicpIG1ldGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdlbmQnKSBlbmRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ3N0YXJ0Jykgc3RhcnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIEBDb250ZW50Q2hpbGQoJ2ljb24nKSBpY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoTWV0ZXJHcm91cFN0eWxlKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBjb25zdCBfY29udGFpbmVyID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZ2V0T3V0ZXJIZWlnaHQoX2NvbnRhaW5lcik7XG4gICAgICAgIHRoaXMudmVydGljYWwgJiYgKF9jb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4Jyk7XG4gICAgfVxuXG4gICAgcGVyY2VudChtZXRlciA9IDApIHtcbiAgICAgICAgY29uc3QgcGVyY2VudE9mSXRlbSA9ICgobWV0ZXIgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikpICogMTAwO1xuXG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKE1hdGgubWF4KDAsIE1hdGgubWluKDEwMCwgcGVyY2VudE9mSXRlbSkpKTtcbiAgICB9XG5cbiAgICBwZXJjZW50VmFsdWUobWV0ZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVyY2VudChtZXRlcikgKyAnJSc7XG4gICAgfVxuXG4gICAgbWV0ZXJTdHlsZSh2YWwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdmFsLmNvbG9yLFxuICAgICAgICAgICAgd2lkdGg6IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB0aGlzLnBlcmNlbnRWYWx1ZSh2YWwudmFsdWUpLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHRoaXMucGVyY2VudFZhbHVlKHZhbC52YWx1ZSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB0b3RhbFBlcmNlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcmNlbnQodGhpcy52YWx1ZS5yZWR1Y2UoKHRvdGFsLCB2YWwpID0+IHRvdGFsICsgdmFsLnZhbHVlLCAwKSk7XG4gICAgfVxuXG4gICAgcGVyY2VudGFnZXMoKSB7XG4gICAgICAgIGxldCBzdW0gPSAwO1xuICAgICAgICBjb25zdCBzdW1zQXJyYXkgPSBbXTtcblxuICAgICAgICB0aGlzLnZhbHVlLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN1bSArPSBpdGVtLnZhbHVlO1xuICAgICAgICAgICAgc3Vtc0FycmF5LnB1c2goc3VtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN1bXNBcnJheTtcbiAgICB9XG5cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW01ldGVyR3JvdXAsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW01ldGVyR3JvdXAsIFNoYXJlZE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgTWV0ZXJHcm91cE1vZHVsZSB7fVxuIl19
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0ZXJncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRlcmdyb3VwL21ldGVyZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBMEIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNOLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztJQVV0Qyx1QkFBOEk7OztJQUFwSCxnQ0FBd0I7SUFBaUQsQUFBaEQsb0RBQStDLDJEQUF1Qzs7O0lBQ3pJLDBCQUF3SDs7O0lBQXhELHdFQUFnRDs7O0lBRnBILDZCQUFvQztJQUVoQyxBQURBLGdGQUEwSSx5RUFDekI7Ozs7SUFEN0csY0FBb0I7SUFBcEIsd0NBQW9CO0lBQ2pCLGNBQXFCO0lBQXJCLHlDQUFxQjs7O0lBRWhDLHdCQUF1SDs7O0lBTDNILDZCQUFxSDtJQUtqSCxBQUpBLHVGQUFvQywwRUFJb0U7SUFDeEcsK0JBQXNDO0lBQUEsWUFBMEU7SUFDcEgsQUFEb0gsaUJBQU8sRUFDdEg7Ozs7SUFOYyxjQUFtQjtJQUFuQiwyQ0FBbUI7SUFJbkIsY0FBZ0M7SUFBQSxBQUFoQyxzREFBZ0Msd0ZBQXVEO0lBQ2hFLGVBQTBFO0lBQTFFLGdIQUEwRTs7Ozs7Ozs7Ozs7SUF1Q2hILHVDQUE0Tjs7O0lB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VUFBVSxFQUFFLFlBQVksRUFDWixZQUFZOztpRkFFekIsZ0JBQWdCO2NBSjVCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO2dCQUNuQyxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO2FBQ3RDOzt3RkFDWSxnQkFBZ0IsY0E1SmhCLFVBQVUsRUF5SkcsWUFBWSxhQXpKekIsVUFBVSxFQTBKRyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBpbmplY3QsIElucHV0LCBOZ01vZHVsZSwgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0T3V0ZXJIZWlnaHQgfSBmcm9tICdAcHJpbWV1aXgvdXRpbHMnO1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZXRlckl0ZW0gfSBmcm9tICcuL21ldGVyZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1ldGVyR3JvdXBTdHlsZSB9IGZyb20gJy4vc3R5bGUvbWV0ZXJncm91cHN0eWxlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLW1ldGVyR3JvdXBMYWJlbCwgcC1tZXRlcmdyb3VwbGFiZWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8b2wgW25nQ2xhc3NdPVwibGFiZWxDbGFzc1wiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBsYWJlbEl0ZW0gb2YgdmFsdWU7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiBwYXJlbnRJbnN0YW5jZS50cmFja0J5Rm5cIiBjbGFzcz1cInAtbWV0ZXJncm91cC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibGFiZWxJdGVtLmljb25cIiBbY2xhc3NdPVwibGFiZWxJdGVtLmljb25cIiBbbmdDbGFzc109XCJ7ICdwLW1ldGVyZ3JvdXAtbGFiZWwtaWNvbic6IHRydWUgfVwiIFtuZ1N0eWxlXT1cInsgY29sb3I6IGxhYmVsSXRlbS5jb2xvciB9XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFsYWJlbEl0ZW0uaWNvblwiIGNsYXNzPVwicC1tZXRlcmdyb3VwLWxhYmVsLW1hcmtlclwiIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZENvbG9yOiBsYWJlbEl0ZW0uY29sb3IgfVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogbGFiZWxJdGVtLCBpY29uOiBsYWJlbEl0ZW0uaWNvbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLW1ldGVyZ3JvdXAtbGFiZWwtdGV4dFwiPnt7IGxhYmVsSXRlbS5sYWJlbCB9fSAoe3sgcGFyZW50SW5zdGFuY2UucGVyY2VudFZhbHVlKGxhYmVsSXRlbS52YWx1ZSkgfX0pPC9zcGFuPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIE1ldGVyR3JvdXBMYWJlbCB7XG4gICAgQElucHV0KCkgdmFsdWU6IGFueVtdID0gbnVsbDtcblxuICAgIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246ICdzdGFydCcgfCAnZW5kJyA9ICdlbmQnO1xuXG4gICAgQElucHV0KCkgbGFiZWxPcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICAgIEBJbnB1dCgpIG1pbjogbnVtYmVyO1xuXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXI7XG5cbiAgICBASW5wdXQoKSBpY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBnZXQgbGFiZWxDbGFzcygpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1tZXRlcmdyb3VwLWxhYmVsLWxpc3QgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3AtbWV0ZXJncm91cC1sYWJlbC1saXN0LXZlcnRpY2FsJzogdGhpcy5sYWJlbE9yaWVudGF0aW9uID09PSAndmVydGljYWwnLFxuICAgICAgICAgICAgJ3AtbWV0ZXJncm91cC1sYWJlbC1saXN0LWhvcml6b250YWwnOiB0aGlzLmxhYmVsT3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHBhcmVudEluc3RhbmNlOiBNZXRlckdyb3VwID0gaW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gTWV0ZXJHcm91cCkpO1xufVxuLyoqXG4gKiBNZXRlckdyb3VwIGRpc3BsYXlzIHNjYWxhciBtZWFzdXJlbWVudHMgd2l0aGluIGEga25vd24gcmFuZ2UuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtbWV0ZXJHcm91cCwgcC1tZXRlcmdyb3VwLCBwLW1ldGVyLWdyb3VwJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1ldGVyR3JvdXBMYWJlbCwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIiBbYXR0ci5yb2xlXT1cIidtZXRlcidcIiBbYXR0ci5hcmlhLXZhbHVlbWluXT1cIm1pblwiIFthdHRyLmFyaWEtdmFsdWVtYXhdPVwibWF4XCIgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ0b3RhbFBlcmNlbnQoKVwiIFtuZ1N0eWxlXT1cInN0eWxlXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgICAgICAgICAgIEBpZiAobGFiZWxQb3NpdGlvbiA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICAgIDxwLW1ldGVyR3JvdXBMYWJlbCAqbmdJZj1cIiFsYWJlbFRlbXBsYXRlICYmICFfbGFiZWxUZW1wbGF0ZVwiIFt2YWx1ZV09XCJ2YWx1ZVwiIFtsYWJlbFBvc2l0aW9uXT1cImxhYmVsUG9zaXRpb25cIiBbbGFiZWxPcmllbnRhdGlvbl09XCJsYWJlbE9yaWVudGF0aW9uXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFtpY29uVGVtcGxhdGVdPVwiaWNvblRlbXBsYXRlIHx8IF9pY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFRlbXBsYXRlIHx8IGxhYmVsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0YXJ0VGVtcGxhdGUgfHwgX3N0YXJ0VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtbWV0ZXJncm91cC1tZXRlcnNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZXRlckl0ZW0gb2YgdmFsdWU7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5Rm5cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRlclRlbXBsYXRlIHx8IF9tZXRlclRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBtZXRlckl0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb246IHRoaXMub3JpZW50YXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiAncC1tZXRlcmdyb3VwLW1ldGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogcGVyY2VudFZhbHVlKG1ldGVySXRlbS52YWx1ZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUGVyY2VudDogdG90YWxQZXJjZW50KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1ldGVyVGVtcGxhdGUgJiYgIV9tZXRlclRlbXBsYXRlICYmIG1ldGVySXRlbS52YWx1ZSA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1tZXRlcmdyb3VwLW1ldGVyXCIgW25nU3R5bGVdPVwibWV0ZXJTdHlsZShtZXRlckl0ZW0pXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVuZFRlbXBsYXRlIHx8IF9lbmRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHZhbHVlLCB0b3RhbFBlcmNlbnQ6IHRvdGFsUGVyY2VudCgpLCBwZXJjZW50YWdlczogcGVyY2VudGFnZXMoKSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICBAaWYgKGxhYmVsUG9zaXRpb24gPT09ICdlbmQnKSB7XG4gICAgICAgICAgICAgICAgPHAtbWV0ZXJHcm91cExhYmVsICpuZ0lmPVwiIWxhYmVsVGVtcGxhdGUgJiYgIV9sYWJlbFRlbXBsYXRlXCIgW3ZhbHVlXT1cInZhbHVlXCIgW2xhYmVsUG9zaXRpb25dPVwibGFiZWxQb3NpdGlvblwiIFtsYWJlbE9yaWVudGF0aW9uXT1cImxhYmVsT3JpZW50YXRpb25cIiBbbWluXT1cIm1pblwiIFttYXhdPVwibWF4XCIgW2ljb25UZW1wbGF0ZV09XCJpY29uVGVtcGxhdGUgfHwgX2ljb25UZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsVGVtcGxhdGUgfHwgX2xhYmVsVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSwgdG90YWxQZXJjZW50OiB0b3RhbFBlcmNlbnQoKSwgcGVyY2VudGFnZXM6IHBlcmNlbnRhZ2VzKCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbTWV0ZXJHcm91cFN0eWxlXVxufSlcbmV4cG9ydCBjbGFzcyBNZXRlckdyb3VwIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIEN1cnJlbnQgdmFsdWUgb2YgdGhlIG1ldGVyZ3JvdXAuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmFsdWU6IE1ldGVySXRlbVtdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1pbmludW0gYm91bmRhcnkgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIE1heGltdW0gYm91bmRhcnkgdmFsdWUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgPSAxMDA7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBsYXlvdXQgb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSAnaG9yaXpvbnRhbCcgYW5kICd2ZXJ0aWNhbCcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgb3JpZW50YXRpb246ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCcgPSAnaG9yaXpvbnRhbCc7XG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIHRoZSBsYWJlbCBwb3NpdGlvbiBvZiB0aGUgY29tcG9uZW50LCB2YWxpZCB2YWx1ZXMgYXJlICdzdGFydCcgYW5kICdlbmQnLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxhYmVsUG9zaXRpb246ICdzdGFydCcgfCAnZW5kJyA9ICdlbmQnO1xuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyB0aGUgbGFiZWwgb3JpZW50YXRpb24gb2YgdGhlIGNvbXBvbmVudCwgdmFsaWQgdmFsdWVzIGFyZSAnaG9yaXpvbnRhbCcgYW5kICd2ZXJ0aWNhbCcuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWxPcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyB8IHVuZGVmaW5lZCA9ICdob3Jpem9udGFsJztcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgZ2V0IHZlcnRpY2FsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJztcbiAgICB9XG5cbiAgICBnZXQgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1tZXRlcmdyb3VwIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtaG9yaXpvbnRhbCc6IHRoaXMub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgICdwLW1ldGVyZ3JvdXAtdmVydGljYWwnOiB0aGlzLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgQENvbnRlbnRDaGlsZCgnbGFiZWwnLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBsYWJlbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZCgnbWV0ZXInLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBtZXRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZCgnZW5kJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgZW5kVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdzdGFydCcsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIHN0YXJ0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkKCdpY29uJywgeyBkZXNjZW5kYW50czogZmFsc2UgfSkgaWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIF9sYWJlbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgX21ldGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfZW5kVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfc3RhcnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9pY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoTWV0ZXJHcm91cFN0eWxlKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBjb25zdCBfY29udGFpbmVyID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gZ2V0T3V0ZXJIZWlnaHQoX2NvbnRhaW5lcik7XG4gICAgICAgIHRoaXMudmVydGljYWwgJiYgKF9jb250YWluZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4Jyk7XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnRlbXBsYXRlcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xhYmVsJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWxUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbWV0ZXInOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tZXRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VuZFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBlcmNlbnQobWV0ZXIgPSAwKSB7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRPZkl0ZW0gPSAoKG1ldGVyIC0gdGhpcy5taW4pIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcblxuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHBlcmNlbnRPZkl0ZW0pKSk7XG4gICAgfVxuXG4gICAgcGVyY2VudFZhbHVlKG1ldGVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcmNlbnQobWV0ZXIpICsgJyUnO1xuICAgIH1cblxuICAgIG1ldGVyU3R5bGUodmFsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHZhbC5jb2xvcixcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgdGhpcy5wZXJjZW50VmFsdWUodmFsLnZhbHVlKSxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiB0aGlzLnBlcmNlbnRWYWx1ZSh2YWwudmFsdWUpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdG90YWxQZXJjZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJjZW50KHRoaXMudmFsdWUucmVkdWNlKCh0b3RhbCwgdmFsKSA9PiB0b3RhbCArIHZhbC52YWx1ZSwgMCkpO1xuICAgIH1cblxuICAgIHBlcmNlbnRhZ2VzKCkge1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgY29uc3Qgc3Vtc0FycmF5ID0gW107XG5cbiAgICAgICAgdGhpcy52YWx1ZS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzdW0gKz0gaXRlbS52YWx1ZTtcbiAgICAgICAgICAgIHN1bXNBcnJheS5wdXNoKHN1bSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBzdW1zQXJyYXk7XG4gICAgfVxuXG4gICAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtNZXRlckdyb3VwLCBTaGFyZWRNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtNZXRlckdyb3VwLCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIE1ldGVyR3JvdXBNb2R1bGUge31cbiJdfQ==
|