primeng 18.0.0 → 18.0.2
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/accordion/accordion.d.ts +7 -7
- package/autocomplete/autocomplete.d.ts +21 -8
- 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/confirmdialog/confirmdialog.d.ts +14 -5
- package/confirmpopup/confirmpopup.d.ts +11 -5
- package/contextmenu/contextmenu.d.ts +10 -6
- package/datepicker/datepicker.d.ts +113 -33
- 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 +153 -92
- 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 +207 -143
- 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/confirmdialog/confirmdialog.mjs +96 -57
- package/esm2022/confirmpopup/confirmpopup.mjs +57 -29
- package/esm2022/contextmenu/contextmenu.mjs +51 -20
- package/esm2022/datepicker/datepicker.mjs +198 -156
- package/esm2022/dialog/dialog.mjs +98 -52
- package/esm2022/divider/divider.mjs +2 -4
- package/esm2022/dock/dock.mjs +31 -13
- package/esm2022/drawer/drawer.mjs +112 -70
- package/esm2022/dropdown/dropdown.mjs +13 -5
- 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 +113 -66
- package/esm2022/imagecompare/imagecompare.mjs +31 -11
- package/esm2022/inplace/inplace.mjs +49 -24
- package/esm2022/inputmask/inputmask.mjs +30 -14
- package/esm2022/inputmask/style/inputmaskstyle.mjs +2 -2
- package/esm2022/inputnumber/inputnumber.mjs +55 -47
- package/esm2022/inputotp/inputotp.mjs +30 -11
- package/esm2022/listbox/listbox.mjs +137 -78
- package/esm2022/megamenu/megamenu.mjs +105 -59
- package/esm2022/menu/menu.mjs +26 -26
- 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/orderlist/orderlist.mjs +125 -70
- package/esm2022/organizationchart/organizationchart.mjs +30 -14
- package/esm2022/overlay/overlay.mjs +27 -7
- package/esm2022/overlaypanel/overlaypanel.mjs +33 -10
- 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 +88 -49
- package/esm2022/picklist/picklist.mjs +363 -259
- package/esm2022/popover/popover.mjs +29 -12
- package/esm2022/progressbar/progressbar.mjs +27 -9
- package/esm2022/rating/rating.mjs +46 -22
- 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 +198 -119
- package/esm2022/selectbutton/selectbutton.mjs +26 -11
- package/esm2022/sidebar/sidebar.mjs +82 -60
- package/esm2022/speeddial/speeddial.mjs +54 -29
- package/esm2022/splitbutton/splitbutton.mjs +41 -18
- package/esm2022/splitter/splitter.mjs +5 -5
- package/esm2022/stepper/stepper.mjs +27 -13
- package/esm2022/table/table.mjs +107 -96
- 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/tieredmenu/tieredmenu.mjs +44 -21
- 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 +35 -70
- package/esm2022/tree/tree.mjs +114 -97
- package/esm2022/treeselect/treeselect.mjs +156 -89
- 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 +152 -91
- 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 +206 -142
- 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-confirmdialog.mjs +95 -56
- 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 +50 -19
- package/fesm2022/primeng-contextmenu.mjs.map +1 -1
- package/fesm2022/primeng-datepicker.mjs +197 -155
- package/fesm2022/primeng-datepicker.mjs.map +1 -1
- package/fesm2022/primeng-dialog.mjs +97 -51
- 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 +111 -69
- 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 +20 -16
- 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 +112 -65
- 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 +30 -14
- package/fesm2022/primeng-inputmask.mjs.map +1 -1
- package/fesm2022/primeng-inputnumber.mjs +54 -46
- package/fesm2022/primeng-inputnumber.mjs.map +1 -1
- package/fesm2022/primeng-inputotp.mjs +29 -10
- package/fesm2022/primeng-inputotp.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 +25 -25
- 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 -155
- 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 +26 -6
- package/fesm2022/primeng-overlay.mjs.map +1 -1
- package/fesm2022/primeng-overlaypanel.mjs +32 -9
- 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 +87 -48
- package/fesm2022/primeng-password.mjs.map +1 -1
- package/fesm2022/primeng-picklist.mjs +362 -258
- package/fesm2022/primeng-picklist.mjs.map +1 -1
- package/fesm2022/primeng-popover.mjs +28 -11
- 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-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 +197 -118
- 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 +81 -59
- 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 +4 -4
- 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 +106 -95
- 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-tieredmenu.mjs +43 -20
- 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 +35 -70
- package/fesm2022/primeng-tooltip.mjs.map +1 -1
- package/fesm2022/primeng-tree.mjs +114 -97
- package/fesm2022/primeng-tree.mjs.map +1 -1
- package/fesm2022/primeng-treeselect.mjs +155 -88
- 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/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 +165 -165
- 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 +15 -7
- 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 +4 -4
- package/stepper/stepper.d.ts +8 -3
- package/table/table.d.ts +2 -2
- 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/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/tree.d.ts +23 -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 { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, inject, Input, NgModule, numberAttribute, Output, signal, ViewChild, ViewEncapsulation } from '@angular/core';
|
2
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, ContentChildren, EventEmitter, inject, Input, NgModule, numberAttribute, Output, signal, ViewChild, ViewEncapsulation } from '@angular/core';
|
3
3
|
import { uuid } from '@primeuix/utils';
|
4
|
-
import { SharedModule } from 'primeng/api';
|
4
|
+
import { PrimeTemplate, SharedModule } from 'primeng/api';
|
5
5
|
import { AutoFocus } from 'primeng/autofocus';
|
6
6
|
import { BaseComponent } from 'primeng/basecomponent';
|
7
7
|
import { ButtonDirective } from 'primeng/button';
|
@@ -35,7 +35,7 @@ function SplitButton_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
35
35
|
i0.ɵɵproperty("severity", ctx_r2.severity)("text", ctx_r2.text)("outlined", ctx_r2.outlined)("size", ctx_r2.size)("icon", ctx_r2.icon)("iconPos", ctx_r2.iconPos)("disabled", ctx_r2.disabled)("pAutoFocus", ctx_r2.autofocus)("pTooltip", ctx_r2.tooltip)("tooltipOptions", ctx_r2.tooltipOptions);
|
36
36
|
i0.ɵɵattribute("tabindex", ctx_r2.tabindex)("aria-label", (ctx_r2.buttonProps == null ? null : ctx_r2.buttonProps["ariaLabel"]) || ctx_r2.label);
|
37
37
|
i0.ɵɵadvance();
|
38
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.contentTemplate);
|
38
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.contentTemplate || ctx_r2._contentTemplate);
|
39
39
|
} }
|
40
40
|
function SplitButton_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
41
41
|
const _r4 = i0.ɵɵgetCurrentView();
|
@@ -67,9 +67,9 @@ function SplitButton_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
67
67
|
} if (rf & 2) {
|
68
68
|
const ctx_r2 = i0.ɵɵnextContext();
|
69
69
|
i0.ɵɵadvance();
|
70
|
-
i0.ɵɵproperty("ngIf", !ctx_r2.
|
70
|
+
i0.ɵɵproperty("ngIf", !ctx_r2.dropdownIconTemplate && !ctx_r2._dropdownIconTemplate);
|
71
71
|
i0.ɵɵadvance();
|
72
|
-
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.
|
72
|
+
i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.dropdownIconTemplate || ctx_r2._dropdownIconTemplate);
|
73
73
|
} }
|
74
74
|
/**
|
75
75
|
* SplitButton groups a set of commands in an overlay with a default command.
|
@@ -283,17 +283,35 @@ export class SplitButton extends BaseComponent {
|
|
283
283
|
* Template of the dropdownicon.
|
284
284
|
* @group Templates
|
285
285
|
**/
|
286
|
-
|
286
|
+
dropdownIconTemplate;
|
287
|
+
templates;
|
287
288
|
ariaId;
|
288
289
|
isExpanded = signal(false);
|
289
290
|
_disabled;
|
290
291
|
_buttonDisabled;
|
291
292
|
_menuButtonDisabled;
|
292
293
|
_componentStyle = inject(SplitButtonStyle);
|
294
|
+
_contentTemplate;
|
295
|
+
_dropdownIconTemplate;
|
293
296
|
ngOnInit() {
|
294
297
|
super.ngOnInit();
|
295
298
|
this.ariaId = uuid('pn_id_');
|
296
299
|
}
|
300
|
+
ngAfterContentInit() {
|
301
|
+
this.templates?.forEach((item) => {
|
302
|
+
switch (item.getType()) {
|
303
|
+
case 'content':
|
304
|
+
this._contentTemplate = item.template;
|
305
|
+
break;
|
306
|
+
case 'dropdownicon':
|
307
|
+
this._dropdownIconTemplate = item.template;
|
308
|
+
break;
|
309
|
+
default:
|
310
|
+
this._contentTemplate = item.template;
|
311
|
+
break;
|
312
|
+
}
|
313
|
+
});
|
314
|
+
}
|
297
315
|
get containerClass() {
|
298
316
|
const cls = {
|
299
317
|
'p-splitbutton p-component': true,
|
@@ -329,12 +347,14 @@ export class SplitButton extends BaseComponent {
|
|
329
347
|
}
|
330
348
|
static ɵfac = /*@__PURE__*/ (() => { let ɵSplitButton_BaseFactory; return function SplitButton_Factory(__ngFactoryType__) { return (ɵSplitButton_BaseFactory || (ɵSplitButton_BaseFactory = i0.ɵɵgetInheritedFactory(SplitButton)))(__ngFactoryType__ || SplitButton); }; })();
|
331
349
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SplitButton, selectors: [["p-splitbutton"], ["p-splitButton"], ["p-split-button"]], contentQueries: function SplitButton_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
332
|
-
i0.ɵɵcontentQuery(dirIndex, _c0,
|
333
|
-
i0.ɵɵcontentQuery(dirIndex, _c1,
|
350
|
+
i0.ɵɵcontentQuery(dirIndex, _c0, 4);
|
351
|
+
i0.ɵɵcontentQuery(dirIndex, _c1, 4);
|
352
|
+
i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
|
334
353
|
} if (rf & 2) {
|
335
354
|
let _t;
|
336
355
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);
|
337
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
356
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownIconTemplate = _t.first);
|
357
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
|
338
358
|
} }, viewQuery: function SplitButton_Query(rf, ctx) { if (rf & 1) {
|
339
359
|
i0.ɵɵviewQuery(_c2, 5);
|
340
360
|
i0.ɵɵviewQuery(_c3, 5);
|
@@ -360,7 +380,7 @@ export class SplitButton extends BaseComponent {
|
|
360
380
|
i0.ɵɵclassMap(ctx.styleClass);
|
361
381
|
i0.ɵɵproperty("ngClass", ctx.containerClass)("ngStyle", ctx.style);
|
362
382
|
i0.ɵɵadvance(2);
|
363
|
-
i0.ɵɵproperty("ngIf", ctx.contentTemplate)("ngIfElse", defaultButton_r5);
|
383
|
+
i0.ɵɵproperty("ngIf", ctx.contentTemplate || ctx._contentTemplate)("ngIfElse", defaultButton_r5);
|
364
384
|
i0.ɵɵadvance(3);
|
365
385
|
i0.ɵɵproperty("size", ctx.size)("severity", ctx.severity)("text", ctx.text)("outlined", ctx.outlined)("disabled", ctx.menuButtonDisabled);
|
366
386
|
i0.ɵɵattribute("aria-label", (ctx.menuButtonProps == null ? null : ctx.menuButtonProps["ariaLabel"]) || ctx.expandAriaLabel)("aria-haspopup", (ctx.menuButtonProps == null ? null : ctx.menuButtonProps["ariaHasPopup"]) || true)("aria-expanded", (ctx.menuButtonProps == null ? null : ctx.menuButtonProps["ariaExpanded"]) || ctx.isExpanded())("aria-controls", (ctx.menuButtonProps == null ? null : ctx.menuButtonProps["ariaControls"]) || ctx.ariaId);
|
@@ -381,7 +401,7 @@ export class SplitButton extends BaseComponent {
|
|
381
401
|
imports: [CommonModule, ButtonDirective, TieredMenu, AutoFocus, ChevronDownIcon, Ripple, TooltipModule, SharedModule],
|
382
402
|
template: `
|
383
403
|
<div #container [ngClass]="containerClass" [class]="styleClass" [ngStyle]="style">
|
384
|
-
<ng-container *ngIf="contentTemplate; else defaultButton">
|
404
|
+
<ng-container *ngIf="contentTemplate || _contentTemplate; else defaultButton">
|
385
405
|
<button
|
386
406
|
class="p-splitbutton-button"
|
387
407
|
type="button"
|
@@ -401,7 +421,7 @@ export class SplitButton extends BaseComponent {
|
|
401
421
|
[pTooltip]="tooltip"
|
402
422
|
[tooltipOptions]="tooltipOptions"
|
403
423
|
>
|
404
|
-
<ng-container *ngTemplateOutlet="contentTemplate"></ng-container>
|
424
|
+
<ng-container *ngTemplateOutlet="contentTemplate || _contentTemplate"></ng-container>
|
405
425
|
</button>
|
406
426
|
</ng-container>
|
407
427
|
<ng-template #defaultButton>
|
@@ -446,8 +466,8 @@ export class SplitButton extends BaseComponent {
|
|
446
466
|
>
|
447
467
|
<span *ngIf="dropdownIcon" [class]="dropdownIcon"></span>
|
448
468
|
<ng-container *ngIf="!dropdownIcon">
|
449
|
-
<ChevronDownIcon *ngIf="!
|
450
|
-
<ng-template *ngTemplateOutlet="
|
469
|
+
<ChevronDownIcon *ngIf="!dropdownIconTemplate && !_dropdownIconTemplate" />
|
470
|
+
<ng-template *ngTemplateOutlet="dropdownIconTemplate || _dropdownIconTemplate"></ng-template>
|
451
471
|
</ng-container>
|
452
472
|
</button>
|
453
473
|
<p-tieredMenu
|
@@ -557,10 +577,13 @@ export class SplitButton extends BaseComponent {
|
|
557
577
|
args: ['menu']
|
558
578
|
}], contentTemplate: [{
|
559
579
|
type: ContentChild,
|
560
|
-
args: ['content']
|
561
|
-
}],
|
580
|
+
args: ['content', { descendants: false }]
|
581
|
+
}], dropdownIconTemplate: [{
|
562
582
|
type: ContentChild,
|
563
|
-
args: ['dropdownicon']
|
583
|
+
args: ['dropdownicon', { descendants: false }]
|
584
|
+
}], templates: [{
|
585
|
+
type: ContentChildren,
|
586
|
+
args: [PrimeTemplate]
|
564
587
|
}] }); })();
|
565
588
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SplitButton, { className: "SplitButton" }); })();
|
566
589
|
export class SplitButtonModule {
|
@@ -576,4 +599,4 @@ export class SplitButtonModule {
|
|
576
599
|
}]
|
577
600
|
}], null, null); })();
|
578
601
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(SplitButtonModule, { imports: [SplitButton, SharedModule], exports: [SplitButton, SharedModule] }); })();
|
579
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXRidXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3BsaXRidXR0b24vc3BsaXRidXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBZSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbE8sT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBWSxZQUFZLEVBQWtCLE1BQU0sYUFBYSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7SUFpQ3hDLHdCQUFpRTs7OztJQXBCekUsNkJBQTBEO0lBQ3RELGtDQWtCQztJQVBHLHNMQUFTLG1DQUE0QixLQUFDO0lBUXRDLDhGQUFrRDtJQUN0RCxpQkFBUzs7OztJQWZMLGNBQXFCO0lBWXJCLEFBREEsQUFEQSxB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QUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDO2FBQ3ZDOzt3RkFDWSxpQkFBaUIsY0EvUWpCLFdBQVcsRUE0UUcsWUFBWSxhQTVRMUIsV0FBVyxFQTZRRyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBOZ01vZHVsZSwgbnVtYmVyQXR0cmlidXRlLCBPdXRwdXQsIHNpZ25hbCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAcHJpbWV1aXgvdXRpbHMnO1xuaW1wb3J0IHsgTWVudUl0ZW0sIFNoYXJlZE1vZHVsZSwgVG9vbHRpcE9wdGlvbnMgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBBdXRvRm9jdXMgfSBmcm9tICdwcmltZW5nL2F1dG9mb2N1cyc7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAncHJpbWVuZy9iYXNlY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IENoZXZyb25Eb3duSWNvbiB9IGZyb20gJ3ByaW1lbmcvaWNvbnMnO1xuaW1wb3J0IHsgUmlwcGxlIH0gZnJvbSAncHJpbWVuZy9yaXBwbGUnO1xuaW1wb3J0IHsgVGllcmVkTWVudSB9IGZyb20gJ3ByaW1lbmcvdGllcmVkbWVudSc7XG5pbXBvcnQgeyBUb29sdGlwTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90b29sdGlwJztcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBNZW51QnV0dG9uUHJvcHMgfSBmcm9tICcuL3NwbGl0YnV0dG9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTcGxpdEJ1dHRvblN0eWxlIH0gZnJvbSAnLi9zdHlsZS9zcGxpdGJ1dHRvbnN0eWxlJztcblxudHlwZSBTcGxpdEJ1dHRvbkljb25Qb3NpdGlvbiA9ICdsZWZ0JyB8ICdyaWdodCc7XG4vKipcbiAqIFNwbGl0QnV0dG9uIGdyb3VwcyBhIHNldCBvZiBjb21tYW5kcyBpbiBhbiBvdmVybGF5IHdpdGggYSBkZWZhdWx0IGNvbW1hbmQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc3BsaXRidXR0b24sIHAtc3BsaXRCdXR0b24sIHAtc3BsaXQtYnV0dG9uJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEJ1dHRvbkRpcmVjdGl2ZSwgVGllcmVkTWVudSwgQXV0b0ZvY3VzLCBDaGV2cm9uRG93bkljb24sIFJpcHBsZSwgVG9vbHRpcE1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2ICNjb250YWluZXIgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIiBbY2xhc3NdPVwic3R5bGVDbGFzc1wiIFtuZ1N0eWxlXT1cInN0eWxlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRCdXR0b25cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zcGxpdGJ1dHRvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJzZXZlcml0eVwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbb3V0bGluZWRdPVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uUG9zXT1cImljb25Qb3NcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWZhdWx0QnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b25Qcm9wcz8uWydhcmlhTGFiZWwnXSB8fCBsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtwQXV0b0ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBPcHRpb25zXT1cInRvb2x0aXBPcHRpb25zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgI2RlZmF1bHRidG5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLXNwbGl0YnV0dG9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgW3NldmVyaXR5XT1cInNldmVyaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIFtvdXRsaW5lZF09XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJpY29uXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25Qb3NdPVwiaWNvblBvc1wiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlZmF1bHRCdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImJ1dHRvblByb3BzPy5bJ2FyaWFMYWJlbCddXCJcbiAgICAgICAgICAgICAgICAgICAgW3BBdXRvRm9jdXNdPVwiYXV0b2ZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE9wdGlvbnNdPVwidG9vbHRpcE9wdGlvbnNcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwic2V2ZXJpdHlcIlxuICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRleHRcIlxuICAgICAgICAgICAgICAgIFtvdXRsaW5lZF09XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLXNwbGl0YnV0dG9uLWRyb3Bkb3duIHAtYnV0dG9uLWljb24tb25seVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25CdXR0b25DbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbkRyb3Bkb3duQnV0dG9uS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibWVudUJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIm1lbnVCdXR0b25Qcm9wcz8uWydhcmlhTGFiZWwnXSB8fCBleHBhbmRBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwibWVudUJ1dHRvblByb3BzPy5bJ2FyaWFIYXNQb3B1cCddIHx8IHRydWVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwibWVudUJ1dHRvblByb3BzPy5bJ2FyaWFFeHBhbmRlZCddIHx8IGlzRXhwYW5kZWQoKVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJtZW51QnV0dG9uUHJvcHM/LlsnYXJpYUNvbnRyb2xzJ10gfHwgYXJpYUlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRyb3Bkb3duSWNvblwiIFtjbGFzc109XCJkcm9wZG93bkljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFkcm9wZG93bkljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPENoZXZyb25Eb3duSWNvbiAqbmdJZj1cIiFkcm9wZG93bmljb25UZW1wbGF0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3Bkb3duaWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPHAtdGllcmVkTWVudVxuICAgICAgICAgICAgICAgIFtpZF09XCJhcmlhSWRcIlxuICAgICAgICAgICAgICAgICNtZW51XG4gICAgICAgICAgICAgICAgW3BvcHVwXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFttb2RlbF09XCJtb2RlbFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlXT1cIm1lbnVTdHlsZVwiXG4gICAgICAgICAgICAgICAgW3N0eWxlQ2xhc3NdPVwibWVudVN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFthcHBlbmRUb109XCJhcHBlbmRUb1wiXG4gICAgICAgICAgICAgICAgW3Nob3dUcmFuc2l0aW9uT3B0aW9uc109XCJzaG93VHJhbnNpdGlvbk9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIFtoaWRlVHJhbnNpdGlvbk9wdGlvbnNdPVwiaGlkZVRyYW5zaXRpb25PcHRpb25zXCJcbiAgICAgICAgICAgICAgICAob25IaWRlKT1cIm9uSGlkZSgpXCJcbiAgICAgICAgICAgICAgICAob25TaG93KT1cIm9uU2hvdygpXCJcbiAgICAgICAgICAgID48L3AtdGllcmVkTWVudT5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtTcGxpdEJ1dHRvblN0eWxlXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNwbGl0QnV0dG9uIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogTWVudU1vZGVsIGluc3RhbmNlIHRvIGRlZmluZSB0aGUgb3ZlcmxheSBpdGVtcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb2RlbDogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBzdHlsZSBvZiB0aGUgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldmVyaXR5OiAnc3VjY2VzcycgfCAnaW5mbycgfCAnd2FybicgfCAnZGFuZ2VyJyB8ICdoZWxwJyB8ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ2NvbnRyYXN0JyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQWRkIGEgc2hhZG93IHRvIGluZGljYXRlIGVsZXZhdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmFpc2VkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQWRkIGEgY2lyY3VsYXIgYm9yZGVyIHJhZGl1cyB0byB0aGUgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByb3VuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQWRkIGEgdGV4dHVhbCBjbGFzcyB0byB0aGUgYnV0dG9uIHdpdGhvdXQgYSBiYWNrZ3JvdW5kIGluaXRpYWxseS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEFkZCBhIGJvcmRlciBjbGFzcyB3aXRob3V0IGEgYmFja2dyb3VuZCBpbml0aWFsbHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG91dGxpbmVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc2l6ZSBvZiB0aGUgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNpemU6ICdzbWFsbCcgfCAnbGFyZ2UnIHwgdW5kZWZpbmVkIHwgbnVsbCA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQWRkIGEgcGxhaW4gdGV4dHVhbCBjbGFzcyB0byB0aGUgYnV0dG9uIHdpdGhvdXQgYSBiYWNrZ3JvdW5kIGluaXRpYWxseS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcGxhaW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBpY29uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgaWNvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpY29uUG9zOiBTcGxpdEJ1dHRvbkljb25Qb3NpdGlvbiA9ICdsZWZ0JztcbiAgICAvKipcbiAgICAgKiBUZXh0IG9mIHRoZSBidXR0b24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUb29sdGlwIGZvciB0aGUgbWFpbiBidXR0b24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRvb2x0aXAgb3B0aW9ucyBmb3IgdGhlIG1haW4gYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRvb2x0aXBPcHRpb25zOiBUb29sdGlwT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ2xhc3Mgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgb3ZlcmxheSBtZW51LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lbnVTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgb3ZlcmxheSBtZW51LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lbnVTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZHJvcGRvd24gaWNvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkcm9wZG93bkljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiAgVGFyZ2V0IGVsZW1lbnQgdG8gYXR0YWNoIHRoZSBvdmVybGF5LCB2YWxpZCB2YWx1ZXMgYXJlIFwiYm9keVwiIG9yIGEgbG9jYWwgbmctdGVtcGxhdGUgdmFyaWFibGUgb2YgYW5vdGhlciBlbGVtZW50IChub3RlOiB1c2UgYmluZGluZyB3aXRoIGJyYWNrZXRzIGZvciB0ZW1wbGF0ZSB2YXJpYWJsZXMsIGUuZy4gW2FwcGVuZFRvXT1cIm15ZGl2XCIgZm9yIGEgZGl2IGVsZW1lbnQgaGF2aW5nICNteWRpdiBhcyB2YXJpYWJsZSBuYW1lKS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBhbnk7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZGlyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgZXhwYW5kIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBleHBhbmRBcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuICAgIC8qKlxuICAgICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiB0aGUgaGlkZSBhbmltYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjFzIGxpbmVhcic7XG4gICAgLyoqXG4gICAgICogQnV0dG9uIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYnV0dG9uUHJvcHM6IEJ1dHRvblByb3BzIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1lbnUgQnV0dG9uIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWVudUJ1dHRvblByb3BzOiBNZW51QnV0dG9uUHJvcHMgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdjtcbiAgICAgICAgdGhpcy5fYnV0dG9uRGlzYWJsZWQgPSB2O1xuICAgICAgICB0aGlzLm1lbnVCdXR0b25EaXNhYmxlZCA9IHY7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIG1lbnUgYnV0dG9uIGVsZW1lbnQgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgnbWVudUJ1dHRvbkRpc2FibGVkJykgc2V0IG1lbnVCdXR0b25EaXNhYmxlZCh2OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9tZW51QnV0dG9uRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xuICAgICAgICB9IGVsc2UgdGhpcy5fbWVudUJ1dHRvbkRpc2FibGVkID0gdjtcbiAgICB9XG4gICAgcHVibGljIGdldCBtZW51QnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51QnV0dG9uRGlzYWJsZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGJ1dHRvbiBlbGVtZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgYnV0dG9uRGlzYWJsZWQodjogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5idXR0b25EaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICAgIH0gZWxzZSB0aGlzLl9idXR0b25EaXNhYmxlZCA9IHY7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgYnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b25EaXNhYmxlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZGVmYXVsdCBjb21tYW5kIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7TW91c2VFdmVudH0gZXZlbnQgLSBNb3VzZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIG92ZXJsYXkgbWVudSBpcyBoaWRkZW4uXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTWVudUhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gb3ZlcmxheSBtZW51IGlzIHNob3duLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbk1lbnVTaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGRyb3Bkb3duIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7TW91c2VFdmVudH0gZXZlbnQgLSBNb3VzZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Ecm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0YnRuJykgYnV0dG9uVmlld0NoaWxkOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgnbWVudScpIG1lbnU6IFRpZXJlZE1lbnUgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGVtcGxhdGUgb2YgdGhlIGNvbnRlbnQuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NvbnRlbnQnKSBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGVtcGxhdGUgb2YgdGhlIGRyb3Bkb3duaWNvbi5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICoqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2Ryb3Bkb3duaWNvbicpIGRyb3Bkb3duaWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgYXJpYUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBpc0V4cGFuZGVkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJpdmF0ZSBfYnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBwcml2YXRlIF9tZW51QnV0dG9uRGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgICBfY29tcG9uZW50U3R5bGUgPSBpbmplY3QoU3BsaXRCdXR0b25TdHlsZSk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5hcmlhSWQgPSB1dWlkKCdwbl9pZF8nKTtcbiAgICB9XG5cbiAgICBnZXQgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIGNvbnN0IGNscyA9IHtcbiAgICAgICAgICAgICdwLXNwbGl0YnV0dG9uIHAtY29tcG9uZW50JzogdHJ1ZSxcbiAgICAgICAgICAgICdwLXNwbGl0YnV0dG9uLXJhaXNlZCc6IHRoaXMucmFpc2VkLFxuICAgICAgICAgICAgJ3Atc3BsaXRidXR0b24tcm91bmRlZCc6IHRoaXMucm91bmRlZCxcbiAgICAgICAgICAgICdwLXNwbGl0YnV0dG9uLW91dGxpbmVkJzogdGhpcy5vdXRsaW5lZCxcbiAgICAgICAgICAgICdwLXNwbGl0YnV0dG9uLXRleHQnOiB0aGlzLnRleHQsXG4gICAgICAgICAgICBbYHAtc3BsaXRidXR0b24tJHt0aGlzLnNpemUgPT09ICdzbWFsbCcgPyAnc20nIDogJ2xnJ31gXTogdGhpcy5zaXplXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHsgLi4uY2xzIH07XG4gICAgfVxuXG4gICAgb25EZWZhdWx0QnV0dG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgICB0aGlzLm1lbnUuaGlkZSgpO1xuICAgIH1cblxuICAgIG9uRHJvcGRvd25CdXR0b25DbGljayhldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkRyb3Bkb3duQ2xpY2suZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMubWVudT8udG9nZ2xlKHsgY3VycmVudFRhcmdldDogdGhpcy5jb250YWluZXJWaWV3Q2hpbGQ/Lm5hdGl2ZUVsZW1lbnQsIHJlbGF0aXZlQWxpZ246IHRoaXMuYXBwZW5kVG8gPT0gbnVsbCB9KTtcbiAgICB9XG5cbiAgICBvbkRyb3Bkb3duQnV0dG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQuY29kZSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgICB0aGlzLm9uRHJvcGRvd25CdXR0b25DbGljaygpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSGlkZSgpIHtcbiAgICAgICAgdGhpcy5pc0V4cGFuZGVkLnNldChmYWxzZSk7XG4gICAgICAgIHRoaXMub25NZW51SGlkZS5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25TaG93KCkge1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQuc2V0KHRydWUpO1xuICAgICAgICB0aGlzLm9uTWVudVNob3cuZW1pdCgpO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbU3BsaXRCdXR0b24sIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1NwbGl0QnV0dG9uLCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFNwbGl0QnV0dG9uTW9kdWxlIHt9XG4iXX0=
|
602
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXRidXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3BsaXRidXR0b24vc3BsaXRidXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFFSCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUVmLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixlQUFlLEVBQ2YsTUFBTSxFQUVOLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQVksYUFBYSxFQUFFLFlBQVksRUFBa0IsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7OztJQWlDeEMsd0JBQXFGOzs7O0lBcEI3Riw2QkFBOEU7SUFDMUUsa0NBa0JDO0lBUEcsc0xBQVMsbUNBQTRCLEtBQUM7SUFRdEMsOEZBQXNFO0lBQzFFLGlCQUFTOzs7O0lBZkws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O1lBWWQsY0FBYztrQkFBMUIsS0FBSztZQWFJLE9BQU87a0JBQWhCLE1BQU07WUFLRyxVQUFVO2tCQUFuQixNQUFNO1lBS0csVUFBVTtrQkFBbkIsTUFBTTtZQU1HLGVBQWU7a0JBQXhCLE1BQU07WUFFaUIsa0JBQWtCO2tCQUF6QyxTQUFTO21CQUFDLFdBQVc7WUFFRyxlQUFlO2tCQUF2QyxTQUFTO21CQUFDLFlBQVk7WUFFSixJQUFJO2tCQUF0QixTQUFTO21CQUFDLE1BQU07WUFLZ0MsZUFBZTtrQkFBL0QsWUFBWTttQkFBQyxTQUFTLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFO1lBS08sb0JBQW9CO2tCQUF6RSxZQUFZO21CQUFDLGNBQWMsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7WUFFcEIsU0FBUztrQkFBeEMsZUFBZTttQkFBQyxhQUFhOztrRkFqTnJCLFdBQVc7QUF1U3hCLE1BQU0sT0FBTyxpQkFBaUI7MkdBQWpCLGlCQUFpQjs0REFBakIsaUJBQWlCO2dFQUhoQixXQUFXLEVBQUUsWUFBWSxFQUNaLFlBQVk7O2lGQUUxQixpQkFBaUI7Y0FKN0IsUUFBUTtlQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7Z0JBQ3BDLE9BQU8sRUFBRSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7YUFDdkM7O3dGQUNZLGlCQUFpQixjQXZTakIsV0FBVyxFQW9TRyxZQUFZLGFBcFMxQixXQUFXLEVBcVNHLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIG51bWJlckF0dHJpYnV0ZSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIHNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQHByaW1ldWl4L3V0aWxzJztcbmltcG9ydCB7IE1lbnVJdGVtLCBQcmltZVRlbXBsYXRlLCBTaGFyZWRNb2R1bGUsIFRvb2x0aXBPcHRpb25zIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQXV0b0ZvY3VzIH0gZnJvbSAncHJpbWVuZy9hdXRvZm9jdXMnO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdwcmltZW5nL2J1dHRvbic7XG5pbXBvcnQgeyBDaGV2cm9uRG93bkljb24gfSBmcm9tICdwcmltZW5nL2ljb25zJztcbmltcG9ydCB7IFJpcHBsZSB9IGZyb20gJ3ByaW1lbmcvcmlwcGxlJztcbmltcG9ydCB7IFRpZXJlZE1lbnUgfSBmcm9tICdwcmltZW5nL3RpZXJlZG1lbnUnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5pbXBvcnQgeyBCdXR0b25Qcm9wcywgTWVudUJ1dHRvblByb3BzIH0gZnJvbSAnLi9zcGxpdGJ1dHRvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3BsaXRCdXR0b25TdHlsZSB9IGZyb20gJy4vc3R5bGUvc3BsaXRidXR0b25zdHlsZSc7XG5cbnR5cGUgU3BsaXRCdXR0b25JY29uUG9zaXRpb24gPSAnbGVmdCcgfCAncmlnaHQnO1xuLyoqXG4gKiBTcGxpdEJ1dHRvbiBncm91cHMgYSBzZXQgb2YgY29tbWFuZHMgaW4gYW4gb3ZlcmxheSB3aXRoIGEgZGVmYXVsdCBjb21tYW5kLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXNwbGl0YnV0dG9uLCBwLXNwbGl0QnV0dG9uLCBwLXNwbGl0LWJ1dHRvbicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCdXR0b25EaXJlY3RpdmUsIFRpZXJlZE1lbnUsIEF1dG9Gb2N1cywgQ2hldnJvbkRvd25JY29uLCBSaXBwbGUsIFRvb2x0aXBNb2R1bGUsIFNoYXJlZE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzXCIgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJzdHlsZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRlbnRUZW1wbGF0ZSB8fCBfY29udGVudFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRCdXR0b25cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zcGxpdGJ1dHRvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJzZXZlcml0eVwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbb3V0bGluZWRdPVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uUG9zXT1cImljb25Qb3NcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWZhdWx0QnV0dG9uQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJidXR0b25Qcm9wcz8uWydhcmlhTGFiZWwnXSB8fCBsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtwQXV0b0ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJ0b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBPcHRpb25zXT1cInRvb2x0aXBPcHRpb25zXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50VGVtcGxhdGUgfHwgX2NvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCdXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAjZGVmYXVsdGJ0blxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtc3BsaXRidXR0b24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHBCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwic2V2ZXJpdHlcIlxuICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgW291dGxpbmVkXT1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwic2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImljb25cIlxuICAgICAgICAgICAgICAgICAgICBbaWNvblBvc109XCJpY29uUG9zXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVmYXVsdEJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYnV0dG9uUHJvcHM/LlsnYXJpYUxhYmVsJ11cIlxuICAgICAgICAgICAgICAgICAgICBbcEF1dG9Gb2N1c109XCJhdXRvZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwidG9vbHRpcFwiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwT3B0aW9uc109XCJ0b29sdGlwT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBwQnV0dG9uXG4gICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgIFtzaXplXT1cInNpemVcIlxuICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJzZXZlcml0eVwiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgW291dGxpbmVkXT1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtc3BsaXRidXR0b24tZHJvcGRvd24gcC1idXR0b24taWNvbi1vbmx5XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ecm9wZG93bkJ1dHRvbkNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uRHJvcGRvd25CdXR0b25LZXlkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtZW51QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibWVudUJ1dHRvblByb3BzPy5bJ2FyaWFMYWJlbCddIHx8IGV4cGFuZEFyaWFMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJtZW51QnV0dG9uUHJvcHM/LlsnYXJpYUhhc1BvcHVwJ10gfHwgdHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJtZW51QnV0dG9uUHJvcHM/LlsnYXJpYUV4cGFuZGVkJ10gfHwgaXNFeHBhbmRlZCgpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cIm1lbnVCdXR0b25Qcm9wcz8uWydhcmlhQ29udHJvbHMnXSB8fCBhcmlhSWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZHJvcGRvd25JY29uXCIgW2NsYXNzXT1cImRyb3Bkb3duSWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWRyb3Bkb3duSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd25JY29uICpuZ0lmPVwiIWRyb3Bkb3duSWNvblRlbXBsYXRlICYmICFfZHJvcGRvd25JY29uVGVtcGxhdGVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93bkljb25UZW1wbGF0ZSB8fCBfZHJvcGRvd25JY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8cC10aWVyZWRNZW51XG4gICAgICAgICAgICAgICAgW2lkXT1cImFyaWFJZFwiXG4gICAgICAgICAgICAgICAgI21lbnVcbiAgICAgICAgICAgICAgICBbcG9wdXBdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVdPVwibWVudVN0eWxlXCJcbiAgICAgICAgICAgICAgICBbc3R5bGVDbGFzc109XCJtZW51U3R5bGVDbGFzc1wiXG4gICAgICAgICAgICAgICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICAgICAgICAgICAgICBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cInNob3dUcmFuc2l0aW9uT3B0aW9uc1wiXG4gICAgICAgICAgICAgICAgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCJoaWRlVHJhbnNpdGlvbk9wdGlvbnNcIlxuICAgICAgICAgICAgICAgIChvbkhpZGUpPVwib25IaWRlKClcIlxuICAgICAgICAgICAgICAgIChvblNob3cpPVwib25TaG93KClcIlxuICAgICAgICAgICAgPjwvcC10aWVyZWRNZW51PlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1NwbGl0QnV0dG9uU3R5bGVdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU3BsaXRCdXR0b24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgLyoqXG4gICAgICogTWVudU1vZGVsIGluc3RhbmNlIHRvIGRlZmluZSB0aGUgb3ZlcmxheSBpdGVtcy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtb2RlbDogTWVudUl0ZW1bXSB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBzdHlsZSBvZiB0aGUgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNldmVyaXR5OiAnc3VjY2VzcycgfCAnaW5mbycgfCAnd2FybicgfCAnZGFuZ2VyJyB8ICdoZWxwJyB8ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgJ2NvbnRyYXN0JyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQWRkIGEgc2hhZG93IHRvIGluZGljYXRlIGVsZXZhdGlvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmFpc2VkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQWRkIGEgY2lyY3VsYXIgYm9yZGVyIHJhZGl1cyB0byB0aGUgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSByb3VuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQWRkIGEgdGV4dHVhbCBjbGFzcyB0byB0aGUgYnV0dG9uIHdpdGhvdXQgYSBiYWNrZ3JvdW5kIGluaXRpYWxseS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgdGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEFkZCBhIGJvcmRlciBjbGFzcyB3aXRob3V0IGEgYmFja2dyb3VuZCBpbml0aWFsbHkuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG91dGxpbmVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgc2l6ZSBvZiB0aGUgYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNpemU6ICdzbWFsbCcgfCAnbGFyZ2UnIHwgdW5kZWZpbmVkIHwgbnVsbCA9IG51bGw7XG4gICAgLyoqXG4gICAgICogQWRkIGEgcGxhaW4gdGV4dHVhbCBjbGFzcyB0byB0aGUgYnV0dG9uIHdpdGhvdXQgYSBiYWNrZ3JvdW5kIGluaXRpYWxseS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcGxhaW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBpY29uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgaWNvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpY29uUG9zOiBTcGxpdEJ1dHRvbkljb25Qb3NpdGlvbiA9ICdsZWZ0JztcbiAgICAvKipcbiAgICAgKiBUZXh0IG9mIHRoZSBidXR0b24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUb29sdGlwIGZvciB0aGUgbWFpbiBidXR0b24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdG9vbHRpcDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFRvb2x0aXAgb3B0aW9ucyBmb3IgdGhlIG1haW4gYnV0dG9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRvb2x0aXBPcHRpb25zOiBUb29sdGlwT3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogQ2xhc3Mgb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgb3ZlcmxheSBtZW51LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lbnVTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgb3ZlcmxheSBtZW51LlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1lbnVTdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgZHJvcGRvd24gaWNvbi5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBkcm9wZG93bkljb246IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiAgVGFyZ2V0IGVsZW1lbnQgdG8gYXR0YWNoIHRoZSBvdmVybGF5LCB2YWxpZCB2YWx1ZXMgYXJlIFwiYm9keVwiIG9yIGEgbG9jYWwgbmctdGVtcGxhdGUgdmFyaWFibGUgb2YgYW5vdGhlciBlbGVtZW50IChub3RlOiB1c2UgYmluZGluZyB3aXRoIGJyYWNrZXRzIGZvciB0ZW1wbGF0ZSB2YXJpYWJsZXMsIGUuZy4gW2FwcGVuZFRvXT1cIm15ZGl2XCIgZm9yIGEgZGl2IGVsZW1lbnQgaGF2aW5nICNteWRpdiBhcyB2YXJpYWJsZSBuYW1lKS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBhcHBlbmRUbzogSFRNTEVsZW1lbnQgfCBFbGVtZW50UmVmIHwgVGVtcGxhdGVSZWY8YW55PiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgfCBhbnk7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGVsZW1lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZGlyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHN0cmluZyB0aGF0IGxhYmVscyB0aGUgZXhwYW5kIGJ1dHRvbiBmb3IgYWNjZXNzaWJpbGl0eS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBleHBhbmRBcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJy4xMnMgY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSknO1xuICAgIC8qKlxuICAgICAqIFRyYW5zaXRpb24gb3B0aW9ucyBvZiB0aGUgaGlkZSBhbmltYXRpb24uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaGlkZVRyYW5zaXRpb25PcHRpb25zOiBzdHJpbmcgPSAnLjFzIGxpbmVhcic7XG4gICAgLyoqXG4gICAgICogQnV0dG9uIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgYnV0dG9uUHJvcHM6IEJ1dHRvblByb3BzIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIE1lbnUgQnV0dG9uIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgbWVudUJ1dHRvblByb3BzOiBNZW51QnV0dG9uUHJvcHMgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgY29tcG9uZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IGdldCBmb2N1cyBvbiBsb2FkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBhdXRvZm9jdXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogV2hlbiBwcmVzZW50LCBpdCBzcGVjaWZpZXMgdGhhdCB0aGUgZWxlbWVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNldCBkaXNhYmxlZCh2OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdjtcbiAgICAgICAgdGhpcy5fYnV0dG9uRGlzYWJsZWQgPSB2O1xuICAgICAgICB0aGlzLm1lbnVCdXR0b25EaXNhYmxlZCA9IHY7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSB0YWJpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIG1lbnUgYnV0dG9uIGVsZW1lbnQgc2hvdWxkIGJlIGRpc2FibGVkLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgnbWVudUJ1dHRvbkRpc2FibGVkJykgc2V0IG1lbnVCdXR0b25EaXNhYmxlZCh2OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9tZW51QnV0dG9uRGlzYWJsZWQgPSB0aGlzLmRpc2FibGVkO1xuICAgICAgICB9IGVsc2UgdGhpcy5fbWVudUJ1dHRvbkRpc2FibGVkID0gdjtcbiAgICB9XG4gICAgcHVibGljIGdldCBtZW51QnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51QnV0dG9uRGlzYWJsZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZW4gcHJlc2VudCwgaXQgc3BlY2lmaWVzIHRoYXQgdGhlIGJ1dHRvbiBlbGVtZW50IHNob3VsZCBiZSBkaXNhYmxlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzZXQgYnV0dG9uRGlzYWJsZWQodjogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5idXR0b25EaXNhYmxlZCA9IHRoaXMuZGlzYWJsZWQ7XG4gICAgICAgIH0gZWxzZSB0aGlzLl9idXR0b25EaXNhYmxlZCA9IHY7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgYnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b25EaXNhYmxlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gZGVmYXVsdCBjb21tYW5kIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7TW91c2VFdmVudH0gZXZlbnQgLSBNb3VzZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25DbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIG92ZXJsYXkgbWVudSBpcyBoaWRkZW4uXG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uTWVudUhpZGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gb3ZlcmxheSBtZW51IGlzIHNob3duLlxuICAgICAqIEBncm91cCBFbWl0c1xuICAgICAqL1xuICAgIEBPdXRwdXQoKSBvbk1lbnVTaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIC8qKlxuICAgICAqIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIGRyb3Bkb3duIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSB7TW91c2VFdmVudH0gZXZlbnQgLSBNb3VzZSBldmVudC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgb25Ecm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXJWaWV3Q2hpbGQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0YnRuJykgYnV0dG9uVmlld0NoaWxkOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgQFZpZXdDaGlsZCgnbWVudScpIG1lbnU6IFRpZXJlZE1lbnUgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGVtcGxhdGUgb2YgdGhlIGNvbnRlbnQuXG4gICAgICogQGdyb3VwIFRlbXBsYXRlc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2NvbnRlbnQnLCB7IGRlc2NlbmRhbnRzOiBmYWxzZSB9KSBjb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogVGVtcGxhdGUgb2YgdGhlIGRyb3Bkb3duaWNvbi5cbiAgICAgKiBAZ3JvdXAgVGVtcGxhdGVzXG4gICAgICoqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2Ryb3Bkb3duaWNvbicsIHsgZGVzY2VuZGFudHM6IGZhbHNlIH0pIGRyb3Bkb3duSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihQcmltZVRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxQcmltZVRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIGFyaWFJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgaXNFeHBhbmRlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAgIHByaXZhdGUgX2J1dHRvbkRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJpdmF0ZSBfbWVudUJ1dHRvbkRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gICAgX2NvbXBvbmVudFN0eWxlID0gaW5qZWN0KFNwbGl0QnV0dG9uU3R5bGUpO1xuXG4gICAgX2NvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIF9kcm9wZG93bkljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLmFyaWFJZCA9IHV1aWQoJ3BuX2lkXycpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAoaXRlbS5nZXRUeXBlKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjb250ZW50JzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkcm9wZG93bmljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kcm9wZG93bkljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBjb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgY29uc3QgY2xzID0ge1xuICAgICAgICAgICAgJ3Atc3BsaXRidXR0b24gcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3Atc3BsaXRidXR0b24tcmFpc2VkJzogdGhpcy5yYWlzZWQsXG4gICAgICAgICAgICAncC1zcGxpdGJ1dHRvbi1yb3VuZGVkJzogdGhpcy5yb3VuZGVkLFxuICAgICAgICAgICAgJ3Atc3BsaXRidXR0b24tb3V0bGluZWQnOiB0aGlzLm91dGxpbmVkLFxuICAgICAgICAgICAgJ3Atc3BsaXRidXR0b24tdGV4dCc6IHRoaXMudGV4dCxcbiAgICAgICAgICAgIFtgcC1zcGxpdGJ1dHRvbi0ke3RoaXMuc2l6ZSA9PT0gJ3NtYWxsJyA/ICdzbScgOiAnbGcnfWBdOiB0aGlzLnNpemVcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4geyAuLi5jbHMgfTtcbiAgICB9XG5cbiAgICBvbkRlZmF1bHRCdXR0b25DbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLm9uQ2xpY2suZW1pdChldmVudCk7XG4gICAgICAgIHRoaXMubWVudS5oaWRlKCk7XG4gICAgfVxuXG4gICAgb25Ecm9wZG93bkJ1dHRvbkNsaWNrKGV2ZW50PzogTW91c2VFdmVudCkge1xuICAgICAgICB0aGlzLm9uRHJvcGRvd25DbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5tZW51Py50b2dnbGUoeyBjdXJyZW50VGFyZ2V0OiB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZD8ubmF0aXZlRWxlbWVudCwgcmVsYXRpdmVBbGlnbjogdGhpcy5hcHBlbmRUbyA9PSBudWxsIH0pO1xuICAgIH1cblxuICAgIG9uRHJvcGRvd25CdXR0b25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5jb2RlID09PSAnQXJyb3dEb3duJyB8fCBldmVudC5jb2RlID09PSAnQXJyb3dVcCcpIHtcbiAgICAgICAgICAgIHRoaXMub25Ecm9wZG93bkJ1dHRvbkNsaWNrKCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25IaWRlKCkge1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5vbk1lbnVIaWRlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvblNob3coKSB7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMub25NZW51U2hvdy5lbWl0KCk7XG4gICAgfVxufVxuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtTcGxpdEJ1dHRvbiwgU2hhcmVkTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbU3BsaXRCdXR0b24sIFNoYXJlZE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgU3BsaXRCdXR0b25Nb2R1bGUge31cbiJdfQ==
|
@@ -158,6 +158,7 @@ export class Splitter extends BaseComponent {
|
|
158
158
|
*/
|
159
159
|
onResizeStart = new EventEmitter();
|
160
160
|
containerViewChild;
|
161
|
+
templates;
|
161
162
|
nested = false;
|
162
163
|
panels = [];
|
163
164
|
dragging = false;
|
@@ -181,9 +182,8 @@ export class Splitter extends BaseComponent {
|
|
181
182
|
super.ngOnInit();
|
182
183
|
this.nested = this.isNested();
|
183
184
|
}
|
184
|
-
_templates;
|
185
185
|
ngAfterContentInit() {
|
186
|
-
this.
|
186
|
+
this.templates.forEach((item) => {
|
187
187
|
switch (item.getType()) {
|
188
188
|
case 'panel':
|
189
189
|
this.panels.push(item.template);
|
@@ -499,7 +499,7 @@ export class Splitter extends BaseComponent {
|
|
499
499
|
i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);
|
500
500
|
} if (rf & 2) {
|
501
501
|
let _t;
|
502
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
502
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);
|
503
503
|
} }, viewQuery: function Splitter_Query(rf, ctx) { if (rf & 1) {
|
504
504
|
i0.ɵɵviewQuery(_c1, 5);
|
505
505
|
} if (rf & 2) {
|
@@ -605,7 +605,7 @@ export class Splitter extends BaseComponent {
|
|
605
605
|
}], containerViewChild: [{
|
606
606
|
type: ViewChild,
|
607
607
|
args: ['container', { static: false }]
|
608
|
-
}],
|
608
|
+
}], templates: [{
|
609
609
|
type: ContentChildren,
|
610
610
|
args: [PrimeTemplate]
|
611
611
|
}] }); })();
|
@@ -623,4 +623,4 @@ export class SplitterModule {
|
|
623
623
|
}]
|
624
624
|
}], null, null); })();
|
625
625
|
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(SplitterModule, { imports: [Splitter, SplitterPanel, SharedModule], exports: [Splitter, SplitterPanel, SharedModule] }); })();
|
626
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pPLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztJQXVDbEMsd0JBQXVEOzs7O0lBRTNELDhCQVdDO0lBSEcsQUFEQSxBQURBLEFBREEsb09BQWEsc0NBQTRCLEtBQUMseU5BQzVCLHVDQUE2QixLQUFDLGlMQUMvQixnQ0FBeUIsS0FBQywrS0FDM0IsK0JBQXdCLEtBQUM7SUFJckMsOEJBU0M7SUFERyxBQURBLHNMQUFTLDRCQUFxQixLQUFDLG1OQUNwQixvQ0FBMEIsS0FBQztJQUU5QyxBQURLLGlCQUFNLEVBQ0w7Ozs7SUFQRSxjQUF5QjtJQUF6Qiw4Q0FBeUI7Ozs7SUFsQmpDLDhCQUF1SztJQUNuSyx5RkFBd0M7SUFDNUMsaUJBQU07SUFDTix1RUFXQzs7Ozs7SUFkc0MscUNBQXlCO0lB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QkFDRCxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7YUFDN0I7Z0JBTVksVUFBVTtrQkFBbEIsS0FBSztZQUtHLGVBQWU7a0JBQXZCLEtBQUs7WUFLRyxLQUFLO2tCQUFiLEtBQUs7WUFLRyxVQUFVO2tCQUFsQixLQUFLO1lBS0csWUFBWTtrQkFBcEIsS0FBSztZQUtHLFFBQVE7a0JBQWhCLEtBQUs7WUFLRyxNQUFNO2tCQUFkLEtBQUs7WUFLaUMsVUFBVTtrQkFBaEQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7WUFLRSxJQUFJO2tCQUExQyxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtZQUs1QixRQUFRO2tCQUFoQixLQUFLO1lBS08sVUFBVTtrQkFBdEIsS0FBSztZQXVCSSxXQUFXO2tCQUFwQixNQUFNO1lBTUcsYUFBYTtrQkFBdEIsTUFBTTtZQUVvQyxrQkFBa0I7a0JBQTVELFNBQVM7bUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQTZDVCxVQUFVO2tCQUF6QyxlQUFlO21CQUFDLGFBQWE7O2tGQW5JckIsUUFBUTtBQXdmckIsTUFBTSxPQUFPLGNBQWM7d0dBQWQsY0FBYzs0REFBZCxjQUFjO2dFQUhiLFFBQVEsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUNaLFlBQVk7O2lGQUV0QyxjQUFjO2NBSjFCLFFBQVE7ZUFBQztnQkFDTixPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQztnQkFDaEQsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7YUFDbkQ7O3dGQUNZLGNBQWMsY0F4ZmQsUUFBUSxFQTlEUixhQUFhLEVBbWpCYSxZQUFZLGFBcmZ0QyxRQUFRLEVBOURSLGFBQWEsRUFvakJhLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBjb250ZW50Q2hpbGQsIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBOZ01vZHVsZSwgbnVtYmVyQXR0cmlidXRlLCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYWRkQ2xhc3MsIGdldEhlaWdodCwgZ2V0T3V0ZXJIZWlnaHQsIGdldE91dGVyV2lkdGgsIGdldFdpZHRoLCBoYXNDbGFzcywgaXNSVEwsIHJlbW92ZUNsYXNzIH0gZnJvbSAnQHByaW1ldWl4L3V0aWxzJztcbmltcG9ydCB7IFByaW1lVGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICdwcmltZW5nL2Jhc2Vjb21wb25lbnQnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFZvaWRMaXN0ZW5lciB9IGZyb20gJ3ByaW1lbmcvdHMtaGVscGVycyc7XG5pbXBvcnQgeyBTcGxpdHRlclJlc2l6ZUVuZEV2ZW50LCBTcGxpdHRlclJlc2l6ZVN0YXJ0RXZlbnQgfSBmcm9tICcuL3NwbGl0dGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTcGxpdHRlclN0eWxlIH0gZnJvbSAnLi9zdHlsZS9zcGxpdHRlcnN0eWxlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwLXNwbGl0dGVyLXBhbmVsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PmAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3Atc3BsaXR0ZXJwYW5lbCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFNwbGl0dGVyUGFuZWwgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgICBzcGxpdHRlciA9IGNvbnRlbnRDaGlsZChTcGxpdHRlcik7XG5cbiAgICBuZXN0ZWRTdGF0ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuc3BsaXR0ZXIoKSk7XG59XG5cbi8qKlxuICogU3BsaXR0ZXIgaXMgdXRpbGl6ZWQgdG8gc2VwYXJhdGUgYW5kIHJlc2l6ZSBwYW5lbHMuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc3BsaXR0ZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjY29udGFpbmVyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJjb250YWluZXJDbGFzcygpXCJcbiAgICAgICAgICAgIFtjbGFzc109XCJzdHlsZUNsYXNzXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInN0eWxlXCJcbiAgICAgICAgICAgIFtzdHlsZV09XCJ7IGRpc3BsYXk6ICdmbGV4JywgJ2ZsZXgtd3JhcCc6ICdub3dyYXAnLCAnZmxleC1kaXJlY3Rpb24nOiBsYXlvdXQgPT09ICd2ZXJ0aWNhbCcgPyAnY29sdW1uJyA6ICcnIH1cIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1uYW1lXT1cIidzcGxpdHRlcidcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWd1dHRlci1yZXNpemluZ109XCJmYWxzZVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLXNlY3Rpb25dPVwiJ3Jvb3QnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nRm9yIGxldC1wYW5lbCBbbmdGb3JPZl09XCJwYW5lbHNcIiBsZXQtaT1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJwYW5lbENvbnRhaW5lckNsYXNzKClcIiBbY2xhc3NdPVwicGFuZWxTdHlsZUNsYXNzXCIgW25nU3R5bGVdPVwicGFuZWxTdHlsZVwiIHRhYmluZGV4PVwiLTFcIiBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ3NwbGl0dGVyJ1wiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncm9vdCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhbmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImkgIT09IHBhbmVscy5sZW5ndGggLSAxXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLXNwbGl0dGVyLWd1dHRlclwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJzZXBhcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJvbkd1dHRlck1vdXNlRG93bigkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgKHRvdWNoc3RhcnQpPVwib25HdXR0ZXJUb3VjaFN0YXJ0KCRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAodG91Y2htb3ZlKT1cIm9uR3V0dGVyVG91Y2hNb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAodG91Y2hlbmQpPVwib25HdXR0ZXJUb3VjaEVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wLWd1dHRlci1yZXNpemluZ109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZ3V0dGVyJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtc3BsaXR0ZXItZ3V0dGVyLWhhbmRsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ3V0dGVyU3R5bGUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLW9yaWVudGF0aW9uXT1cImxheW91dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInByZXZTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZ3V0dGVyaGFuZGxlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25HdXR0ZXJLZXlVcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uR3V0dGVyS2V5RG93bigkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5wLXNwbGl0dGVycGFuZWwtbmVzdGVkXSc6ICduZXN0ZWQnXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtTcGxpdHRlclN0eWxlXVxufSlcbmV4cG9ydCBjbGFzcyBTcGxpdHRlciBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBwYW5lbC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwYW5lbFN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIHBhbmVsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHBhbmVsU3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGVyZSBhIHN0YXRlZnVsIHNwbGl0dGVyIGtlZXBzIGl0cyBzdGF0ZSwgdmFsaWQgdmFsdWVzIGFyZSAnc2Vzc2lvbicgZm9yIHNlc3Npb25TdG9yYWdlIGFuZCAnbG9jYWwnIGZvciBsb2NhbFN0b3JhZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3RhdGVTdG9yYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Vzc2lvbic7XG4gICAgLyoqXG4gICAgICogU3RvcmFnZSBpZGVudGlmaWVyIG9mIGEgc3RhdGVmdWwgU3BsaXR0ZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3RhdGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIE9yaWVudGF0aW9uIG9mIHRoZSBwYW5lbHMuIFZhbGlkIHZhbHVlcyBhcmUgJ2hvcml6b250YWwnIGFuZCAndmVydGljYWwnLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxheW91dDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2hvcml6b250YWwnO1xuICAgIC8qKlxuICAgICAqIFNpemUgb2YgdGhlIGRpdmlkZXIgaW4gcGl4ZWxzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGd1dHRlclNpemU6IG51bWJlciA9IDQ7XG4gICAgLyoqXG4gICAgICogU3RlcCBmYWN0b3IgdG8gaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgc2l6ZSBvZiB0aGUgcGFuZWxzIHdoaWxlIHByZXNzaW5nIHRoZSBhcnJvdyBrZXlzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHN0ZXA6IG51bWJlciA9IDU7XG4gICAgLyoqXG4gICAgICogTWluaW11bSBzaXplIG9mIHRoZSBlbGVtZW50cyByZWxhdGl2ZSB0byAxMDAlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1pblNpemVzOiBudW1iZXJbXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIFNpemUgb2YgdGhlIGVsZW1lbnRzIHJlbGF0aXZlIHRvIDEwMCUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHBhbmVsU2l6ZXMoKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFuZWxTaXplcztcbiAgICB9XG4gICAgc2V0IHBhbmVsU2l6ZXModmFsOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLl9wYW5lbFNpemVzID0gdmFsO1xuXG4gICAgICAgIGlmICh0aGlzLmVsICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudCAmJiB0aGlzLnBhbmVscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBbLi4udGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuXS5maWx0ZXIoKGNoaWxkKSA9PiBoYXNDbGFzcyhjaGlsZCwgJ3Atc3BsaXR0ZXJwYW5lbCcpKTtcbiAgICAgICAgICAgIGxldCBfcGFuZWxTaXplcyA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLnBhbmVscy5tYXAoKHBhbmVsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsSW5pdGlhbFNpemUgPSB0aGlzLnBhbmVsU2l6ZXMubGVuZ3RoIC0gMSA+PSBpID8gdGhpcy5wYW5lbFNpemVzW2ldIDogbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxTaXplID0gcGFuZWxJbml0aWFsU2l6ZSB8fCAxMDAgLyB0aGlzLnBhbmVscy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgX3BhbmVsU2l6ZXNbaV0gPSBwYW5lbFNpemU7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW5baV0uc3R5bGUuZmxleEJhc2lzID0gJ2NhbGMoJyArIHBhbmVsU2l6ZSArICclIC0gJyArICh0aGlzLnBhbmVscy5sZW5ndGggLSAxKSAqIHRoaXMuZ3V0dGVyU2l6ZSArICdweCknO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gcmVzaXplIGVuZHMuXG4gICAgICogQHBhcmFtIHtTcGxpdHRlclJlc2l6ZUVuZEV2ZW50fSBldmVudCAtIEN1c3RvbSBwYW5lbCByZXNpemUgZW5kIGV2ZW50XG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uUmVzaXplRW5kOiBFdmVudEVtaXR0ZXI8U3BsaXR0ZXJSZXNpemVFbmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNwbGl0dGVyUmVzaXplRW5kRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gcmVzaXplIHN0YXJ0cy5cbiAgICAgKiBAcGFyYW0ge1NwbGl0dGVyUmVzaXplU3RhcnRFdmVudH0gZXZlbnQgLSBDdXN0b20gcGFuZWwgcmVzaXplIHN0YXJ0IGV2ZW50XG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uUmVzaXplU3RhcnQ6IEV2ZW50RW1pdHRlcjxTcGxpdHRlclJlc2l6ZVN0YXJ0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcGxpdHRlclJlc2l6ZVN0YXJ0RXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGFpbmVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIG5lc3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcGFuZWxzOiBhbnlbXSA9IFtdO1xuXG4gICAgZHJhZ2dpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG1vdXNlTW92ZUxpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICBtb3VzZVVwTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIHRvdWNoTW92ZUxpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICB0b3VjaEVuZExpc3RlbmVyOiBWb2lkTGlzdGVuZXI7XG5cbiAgICBzaXplOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgZ3V0dGVyRWxlbWVudDogTnVsbGFibGU8RWxlbWVudFJlZiB8IEhUTUxFbGVtZW50PjtcblxuICAgIHN0YXJ0UG9zOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgcHJldlBhbmVsRWxlbWVudDogTnVsbGFibGU8RWxlbWVudFJlZiB8IEhUTUxFbGVtZW50PjtcblxuICAgIG5leHRQYW5lbEVsZW1lbnQ6IE51bGxhYmxlPEVsZW1lbnRSZWYgfCBIVE1MRWxlbWVudD47XG5cbiAgICBuZXh0UGFuZWxTaXplOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgcHJldlBhbmVsU2l6ZTogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIF9wYW5lbFNpemVzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgcHJldlBhbmVsSW5kZXg6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICB0aW1lcjogYW55O1xuXG4gICAgcHJldlNpemU6IGFueTtcblxuICAgIF9jb21wb25lbnRTdHlsZSA9IGluamVjdChTcGxpdHRlclN0eWxlKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm5lc3RlZCA9IHRoaXMuaXNOZXN0ZWQoKTtcbiAgICB9XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFByaW1lVGVtcGxhdGUpIF90ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8UHJpbWVUZW1wbGF0ZT47XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuX3RlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncGFuZWwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVscy5wdXNoKGl0ZW0udGVtcGxhdGUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVscy5wdXNoKGl0ZW0udGVtcGxhdGUpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhbmVscyAmJiB0aGlzLnBhbmVscy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1N0YXRlZnVsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0aGlzLnJlc3RvcmVTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gWy4uLnRoaXMuZWwubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlbl0uZmlsdGVyKChjaGlsZCkgPT4gaGFzQ2xhc3MoY2hpbGQsICdwLXNwbGl0dGVycGFuZWwnKSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBfcGFuZWxTaXplcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWxzLm1hcCgocGFuZWwsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYW5lbEluaXRpYWxTaXplID0gdGhpcy5wYW5lbFNpemVzLmxlbmd0aCAtIDEgPj0gaSA/IHRoaXMucGFuZWxTaXplc1tpXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFuZWxTaXplID0gcGFuZWxJbml0aWFsU2l6ZSB8fCAxMDAgLyB0aGlzLnBhbmVscy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgICAgICBfcGFuZWxTaXplc1tpXSA9IHBhbmVsU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLnN0eWxlLmZsZXhCYXNpcyA9ICdjYWxjKCcgKyBwYW5lbFNpemUgKyAnJSAtICcgKyAodGhpcy5wYW5lbHMubGVuZ3RoIC0gMSkgKiAodGhpcy5ndXR0ZXJTaXplIGFzIG51bWJlcikgKyAncHgpJztcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFuZWxTaXplcyA9IF9wYW5lbFNpemVzO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldlNpemUgPSBwYXJzZUZsb2F0KF9wYW5lbFNpemVzWzBdKS50b0ZpeGVkKDQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2l6ZVN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50IHwgTW91c2VFdmVudCwgaW5kZXg6IG51bWJlciwgaXNLZXlEb3duPzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmd1dHRlckVsZW1lbnQgPSAoZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkgfHwgKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkucGFyZW50RWxlbWVudDtcbiAgICAgICAgdGhpcy5zaXplID0gdGhpcy5ob3Jpem9udGFsKCkgPyBnZXRXaWR0aCgodGhpcy5jb250YWluZXJWaWV3Q2hpbGQgYXMgRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCkgOiBnZXRIZWlnaHQoKHRoaXMuY29udGFpbmVyVmlld0NoaWxkIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAgIGlmICghaXNLZXlEb3duKSB7XG4gICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRQb3MgPSB0aGlzLmhvcml6b250YWwoKSA/IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgPyBldmVudC5wYWdlWCA6IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYKSA6IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZQYW5lbEVsZW1lbnQgPSB0aGlzLmd1dHRlckVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZyBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgdGhpcy5uZXh0UGFuZWxFbGVtZW50ID0gdGhpcy5ndXR0ZXJFbGVtZW50Lm5leHRFbGVtZW50U2libGluZyBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNLZXlEb3duKSB7XG4gICAgICAgICAgICB0aGlzLnByZXZQYW5lbFNpemUgPSB0aGlzLmhvcml6b250YWwoKSA/IGdldE91dGVyV2lkdGgodGhpcy5wcmV2UGFuZWxFbGVtZW50LCB0cnVlKSA6IGdldE91dGVySGVpZ2h0KHRoaXMucHJldlBhbmVsRWxlbWVudCwgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLm5leHRQYW5lbFNpemUgPSB0aGlzLmhvcml6b250YWwoKSA/IGdldE91dGVyV2lkdGgodGhpcy5uZXh0UGFuZWxFbGVtZW50LCB0cnVlKSA6IGdldE91dGVySGVpZ2h0KHRoaXMubmV4dFBhbmVsRWxlbWVudCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByZXZQYW5lbFNpemUgPSAoMTAwICogKHRoaXMuaG9yaXpvbnRhbCgpID8gZ2V0T3V0ZXJXaWR0aCh0aGlzLnByZXZQYW5lbEVsZW1lbnQsIHRydWUpIDogZ2V0T3V0ZXJIZWlnaHQodGhpcy5wcmV2UGFuZWxFbGVtZW50LCB0cnVlKSkpIC8gdGhpcy5zaXplO1xuICAgICAgICAgICAgdGhpcy5uZXh0UGFuZWxTaXplID0gKDEwMCAqICh0aGlzLmhvcml6b250YWwoKSA/IGdldE91dGVyV2lkdGgodGhpcy5uZXh0UGFuZWxFbGVtZW50LCB0cnVlKSA6IGdldE91dGVySGVpZ2h0KHRoaXMubmV4dFBhbmVsRWxlbWVudCwgdHJ1ZSkpKSAvIHRoaXMuc2l6ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJldlBhbmVsSW5kZXggPSBpbmRleDtcbiAgICAgICAgYWRkQ2xhc3ModGhpcy5ndXR0ZXJFbGVtZW50LCAncC1zcGxpdHRlci1ndXR0ZXItcmVzaXppbmcnKTtcbiAgICAgICAgdGhpcy5ndXR0ZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wLWd1dHRlci1yZXNpemluZycsICd0cnVlJyk7XG4gICAgICAgIGFkZENsYXNzKCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZCBhcyBFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50LCAncC1zcGxpdHRlci1yZXNpemluZycpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lclZpZXdDaGlsZC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1wLXJlc2l6aW5nJywgJ3RydWUnKTtcbiAgICAgICAgdGhpcy5vblJlc2l6ZVN0YXJ0LmVtaXQoeyBvcmlnaW5hbEV2ZW50OiBldmVudCwgc2l6ZXM6IHRoaXMuX3BhbmVsU2l6ZXMgYXMgbnVtYmVyW10gfSk7XG4gICAgfVxuXG4gICAgb25SZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQsIHN0ZXA/OiBudW1iZXIsIGlzS2V5RG93bj86IGJvb2xlYW4pIHtcbiAgICAgICAgbGV0IG5ld1BvcywgbmV3UHJldlBhbmVsU2l6ZSwgbmV3TmV4dFBhbmVsU2l6ZTtcblxuICAgICAgICBpZiAoaXNLZXlEb3duKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ob3Jpem9udGFsKCkpIHtcbiAgICAgICAgICAgICAgICBuZXdQcmV2UGFuZWxTaXplID0gKDEwMCAqICh0aGlzLnByZXZQYW5lbFNpemUgKyBzdGVwKSkgLyB0aGlzLnNpemU7XG4gICAgICAgICAgICAgICAgbmV3TmV4dFBhbmVsU2l6ZSA9ICgxMDAgKiAodGhpcy5uZXh0UGFuZWxTaXplIC0gc3RlcCkpIC8gdGhpcy5zaXplO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdQcmV2UGFuZWxTaXplID0gKDEwMCAqICh0aGlzLnByZXZQYW5lbFNpemUgLSBzdGVwKSkgLyB0aGlzLnNpemU7XG4gICAgICAgICAgICAgICAgbmV3TmV4dFBhbmVsU2l6ZSA9ICgxMDAgKiAodGhpcy5uZXh0UGFuZWxTaXplICsgc3RlcCkpIC8gdGhpcy5zaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuaG9yaXpvbnRhbCgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUlRMKHRoaXMuZWwubmF0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3UG9zID0gKCh0aGlzLnN0YXJ0UG9zIC0gZXZlbnQucGFnZVgpICogMTAwKSAvIHRoaXMuc2l6ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXdQb3MgPSAoKGV2ZW50LnBhZ2VYIC0gdGhpcy5zdGFydFBvcykgKiAxMDApIC8gdGhpcy5zaXplO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3UG9zID0gKChldmVudC5wYWdlWSAtIHRoaXMuc3RhcnRQb3MpICogMTAwKSAvIHRoaXMuc2l6ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbmV3UHJldlBhbmVsU2l6ZSA9ICh0aGlzLnByZXZQYW5lbFNpemUgYXMgbnVtYmVyKSArIG5ld1BvcztcbiAgICAgICAgICAgIG5ld05leHRQYW5lbFNpemUgPSAodGhpcy5uZXh0UGFuZWxTaXplIGFzIG51bWJlcikgLSBuZXdQb3M7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZTaXplID0gcGFyc2VGbG9hdChuZXdQcmV2UGFuZWxTaXplKS50b0ZpeGVkKDQpO1xuXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRlUmVzaXplKG5ld1ByZXZQYW5lbFNpemUsIG5ld05leHRQYW5lbFNpemUpKSB7XG4gICAgICAgICAgICAodGhpcy5wcmV2UGFuZWxFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zdHlsZS5mbGV4QmFzaXMgPSAnY2FsYygnICsgbmV3UHJldlBhbmVsU2l6ZSArICclIC0gJyArICh0aGlzLnBhbmVscy5sZW5ndGggLSAxKSAqIHRoaXMuZ3V0dGVyU2l6ZSArICdweCknO1xuICAgICAgICAgICAgKHRoaXMubmV4dFBhbmVsRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZmxleEJhc2lzID0gJ2NhbGMoJyArIG5ld05leHRQYW5lbFNpemUgKyAnJSAtICcgKyAodGhpcy5wYW5lbHMubGVuZ3RoIC0gMSkgKiB0aGlzLmd1dHRlclNpemUgKyAncHgpJztcbiAgICAgICAgICAgIHRoaXMuX3BhbmVsU2l6ZXNbdGhpcy5wcmV2UGFuZWxJbmRleCBhcyBudW1iZXJdID0gbmV3UHJldlBhbmVsU2l6ZTtcbiAgICAgICAgICAgIHRoaXMuX3BhbmVsU2l6ZXNbKHRoaXMucHJldlBhbmVsSW5kZXggYXMgbnVtYmVyKSArIDFdID0gbmV3TmV4dFBhbmVsU2l6ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlc2l6ZUVuZChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNTdGF0ZWZ1bCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vblJlc2l6ZUVuZC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHNpemVzOiB0aGlzLl9wYW5lbFNpemVzIH0pO1xuICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmd1dHRlckVsZW1lbnQgYXMgYW55LCAncC1zcGxpdHRlci1ndXR0ZXItcmVzaXppbmcnKTtcbiAgICAgICAgcmVtb3ZlQ2xhc3MoKHRoaXMuY29udGFpbmVyVmlld0NoaWxkIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQsICdwLXNwbGl0dGVyLXJlc2l6aW5nJyk7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBvbkd1dHRlck1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnJlc2l6ZVN0YXJ0KGV2ZW50LCBpbmRleCk7XG4gICAgICAgIHRoaXMuYmluZE1vdXNlTGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgb25HdXR0ZXJUb3VjaFN0YXJ0KGV2ZW50OiBUb3VjaEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZVN0YXJ0KGV2ZW50LCBpbmRleCk7XG4gICAgICAgICAgICB0aGlzLmJpbmRUb3VjaExpc3RlbmVycygpO1xuXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25HdXR0ZXJUb3VjaE1vdmUoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5vblJlc2l6ZShldmVudCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgb25HdXR0ZXJUb3VjaEVuZChldmVudDogVG91Y2hFdmVudCkge1xuICAgICAgICB0aGlzLnJlc2l6ZUVuZChldmVudCk7XG4gICAgICAgIHRoaXMudW5iaW5kVG91Y2hMaXN0ZW5lcnMoKTtcblxuICAgICAgICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICByZXBlYXQoZXZlbnQsIGluZGV4LCBzdGVwKSB7XG4gICAgICAgIHRoaXMucmVzaXplU3RhcnQoZXZlbnQsIGluZGV4LCB0cnVlKTtcbiAgICAgICAgdGhpcy5vblJlc2l6ZShldmVudCwgc3RlcCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgc2V0VGltZXIoZXZlbnQsIGluZGV4LCBzdGVwKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB0aGlzLnRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlcGVhdChldmVudCwgaW5kZXgsIHN0ZXApO1xuICAgICAgICB9LCA0MCk7XG4gICAgfVxuXG4gICAgY2xlYXJUaW1lcigpIHtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uR3V0dGVyS2V5VXAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgIHRoaXMucmVzaXplRW5kKGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkd1dHRlcktleURvd24oZXZlbnQsIGluZGV4KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0Jzoge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxheW91dCA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZXIoZXZlbnQsIGluZGV4LCB0aGlzLnN0ZXAgKiAtMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWVyKGV2ZW50LCBpbmRleCwgdGhpcy5zdGVwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZXIoZXZlbnQsIGluZGV4LCB0aGlzLnN0ZXAgKiAtMSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUaW1lcihldmVudCwgaW5kZXgsIHRoaXMuc3RlcCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvL25vIG9wXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YWxpZGF0ZVJlc2l6ZShuZXdQcmV2UGFuZWxTaXplOiBudW1iZXIsIG5ld05leHRQYW5lbFNpemU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5taW5TaXplcy5sZW5ndGggPj0gMSAmJiB0aGlzLm1pblNpemVzWzBdICYmIHRoaXMubWluU2l6ZXNbMF0gPiBuZXdQcmV2UGFuZWxTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5taW5TaXplcy5sZW5ndGggPiAxICYmIHRoaXMubWluU2l6ZXNbMV0gJiYgdGhpcy5taW5TaXplc1sxXSA+IG5ld05leHRQYW5lbFNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGJpbmRNb3VzZUxpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vdXNlTW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlTW92ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ21vdXNlbW92ZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25SZXNpemUoZXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMubW91c2VVcExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlVXBMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQsICdtb3VzZXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVFbmQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kTW91c2VMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmluZFRvdWNoTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAoIXRoaXMudG91Y2hNb3ZlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMudG91Y2hNb3ZlTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCAndG91Y2htb3ZlJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblJlc2l6ZShldmVudC5jaGFuZ2VkVG91Y2hlc1swXSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy50b3VjaEVuZExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnRvdWNoRW5kTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCAndG91Y2hlbmQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZUVuZChldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy51bmJpbmRUb3VjaExpc3RlbmVycygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1bmJpbmRNb3VzZUxpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKHRoaXMubW91c2VNb3ZlTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMubW91c2VNb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VNb3ZlTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW91c2VVcExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlVXBMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5tb3VzZVVwTGlzdGVuZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kVG91Y2hMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLnRvdWNoTW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnRvdWNoTW92ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLnRvdWNoTW92ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnRvdWNoRW5kTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMudG91Y2hFbmRMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy50b3VjaEVuZExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2l6ZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhcnRQb3MgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXZQYW5lbEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHRQYW5lbEVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXZQYW5lbFNpemUgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHRQYW5lbFNpemUgPSBudWxsO1xuICAgICAgICB0aGlzLmd1dHRlckVsZW1lbnQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXZQYW5lbEluZGV4ID0gbnVsbDtcbiAgICB9XG5cbiAgICBpc05lc3RlZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgbGV0IHBhcmVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudCAmJiAhaGFzQ2xhc3MocGFyZW50LCAncC1zcGxpdHRlcicpKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBwYXJlbnQgIT09IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1N0YXRlZnVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZUtleSAhPSBudWxsO1xuICAgIH1cblxuICAgIGdldFN0b3JhZ2UoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuc3RhdGVTdG9yYWdlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnbG9jYWwnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5sb2NhbFN0b3JhZ2U7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdzZXNzaW9uJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcuc2Vzc2lvblN0b3JhZ2U7XG5cbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5zdGF0ZVN0b3JhZ2UgKyAnIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciB0aGUgc3RhdGUgc3RvcmFnZSwgc3VwcG9ydGVkIHZhbHVlcyBhcmUgXCJsb2NhbFwiIGFuZCBcInNlc3Npb25cIi4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU3RvcmFnZSBpcyBub3QgYSBhdmFpbGFibGUgYnkgZGVmYXVsdCBvbiB0aGUgc2VydmVyLicpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2F2ZVN0YXRlKCkge1xuICAgICAgICB0aGlzLmdldFN0b3JhZ2UoKS5zZXRJdGVtKHRoaXMuc3RhdGVLZXkgYXMgc3RyaW5nLCBKU09OLnN0cmluZ2lmeSh0aGlzLl9wYW5lbFNpemVzKSk7XG4gICAgfVxuXG4gICAgcmVzdG9yZVN0YXRlKCkge1xuICAgICAgICBjb25zdCBzdG9yYWdlID0gdGhpcy5nZXRTdG9yYWdlKCk7XG4gICAgICAgIGNvbnN0IHN0YXRlU3RyaW5nID0gc3RvcmFnZS5nZXRJdGVtKHRoaXMuc3RhdGVLZXkgYXMgc3RyaW5nKTtcblxuICAgICAgICBpZiAoc3RhdGVTdHJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX3BhbmVsU2l6ZXMgPSBKU09OLnBhcnNlKHN0YXRlU3RyaW5nKTtcbiAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IFsuLi4odGhpcy5jb250YWluZXJWaWV3Q2hpbGQgYXMgRWxlbWVudFJlZikubmF0aXZlRWxlbWVudC5jaGlsZHJlbl0uZmlsdGVyKChjaGlsZCkgPT4gaGFzQ2xhc3MoY2hpbGQsICdwLXNwbGl0dGVycGFuZWwnKSk7XG4gICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGNoaWxkLnN0eWxlLmZsZXhCYXNpcyA9ICdjYWxjKCcgKyB0aGlzLl9wYW5lbFNpemVzW2ldICsgJyUgLSAnICsgKHRoaXMucGFuZWxzLmxlbmd0aCAtIDEpICogdGhpcy5ndXR0ZXJTaXplICsgJ3B4KSc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29udGFpbmVyQ2xhc3MoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAncC1zcGxpdHRlciBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAncC1zcGxpdHRlci1ob3Jpem9udGFsJzogdGhpcy5sYXlvdXQgPT09ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgICdwLXNwbGl0dGVyLXZlcnRpY2FsJzogdGhpcy5sYXlvdXQgPT09ICd2ZXJ0aWNhbCdcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwYW5lbENvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3Atc3BsaXR0ZXJwYW5lbCc6IHRydWUsXG4gICAgICAgICAgICAncC1zcGxpdHRlcnBhbmVsLW5lc3RlZCc6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBndXR0ZXJTdHlsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuaG9yaXpvbnRhbCgpKSByZXR1cm4geyB3aWR0aDogdGhpcy5ndXR0ZXJTaXplICsgJ3B4JyB9O1xuICAgICAgICBlbHNlIHJldHVybiB7IGhlaWdodDogdGhpcy5ndXR0ZXJTaXplICsgJ3B4JyB9O1xuICAgIH1cblxuICAgIGhvcml6b250YWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxheW91dCA9PT0gJ2hvcml6b250YWwnO1xuICAgIH1cbn1cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbU3BsaXR0ZXIsIFNwbGl0dGVyUGFuZWwsIFNoYXJlZE1vZHVsZV0sXG4gICAgZXhwb3J0czogW1NwbGl0dGVyLCBTcGxpdHRlclBhbmVsLCBTaGFyZWRNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFNwbGl0dGVyTW9kdWxlIHt9XG4iXX0=
|
626
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXR0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3BsaXR0ZXIvc3BsaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBb0IsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuUCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdILE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7SUF1Q2xDLHdCQUF1RDs7OztJQUUzRCw4QkFXQztJQUhHLEFBREEsQUFEQSxBQURBLG9PQUFhLHNDQUE0QixLQUFDLHlOQUM1Qix1Q0FBNkIsS0FBQyxpTEFDL0IsZ0NBQXlCLEtBQUMsK0tBQzNCLCtCQUF3QixLQUFDO0lBSXJDLDhCQVNDO0lBREcsQUFEQSxzTEFBUyw0QkFBcUIsS0FBQyxtTkFDcEIsb0NBQTBCLEtBQUM7SUFFOUMsQUFESyxpQkFBTSxFQUNMOzs7O0lBUEUsY0FBeUI7SUFBekIsOENBQXlCOzs7O0lBbEJqQyw4QkFBdUs7SUFDbksseUZBQXdDO0lBQzVDLGlCQUFNO0lBQ04sdUVBV0M7Ozs7O0lBZHNDLHFDQUF5QjtJQUFDLEFBQTVELHNEQUFpQyw4QkFBaUQ7O0lBQ3BFLGNBQXVCO0lBQXZCLDJDQUF1QjtJQUdyQyxjQUE2QjtJQUE3Qix3REFBNkI7O0FBOUJsRCxNQUFNLE9BQU8sYUFBYyxTQUFRLGFBQWE7SUFDNUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVsQyxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2lPQUhyQyxhQUFhLHlCQUFiLGFBQWE7NkRBQWIsYUFBYTs0REFDRSxRQUFROzs7OztZQVByQixrQkFBeUI7NEJBRDFCLFlBQVk7O2lGQU9iLGFBQWE7Y0FWekIsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2dCQUMvQyxJQUFJLEVBQUU7b0JBQ0YsS0FBSyxFQUFFLGlCQUFpQjtpQkFDM0I7YUFDSjs7a0ZBQ1ksYUFBYTtBQU0xQjs7O0dBR0c7QUFxREgsTUFBTSxPQUFPLFFBQVMsU0FBUSxhQUFhO0lBQ3ZDOzs7T0FHRztJQUNNLFVBQVUsQ0FBcUI7SUFDeEM7OztPQUdHO0lBQ00sZUFBZSxDQUFxQjtJQUM3Qzs7O09BR0c7SUFDTSxLQUFLLENBQThDO0lBQzVEOzs7T0FHRztJQUNNLFVBQVUsQ0FBOEM7SUFDakU7OztPQUdHO0lBQ00sWUFBWSxHQUF1QixTQUFTLENBQUM7SUFDdEQ7OztPQUdHO0lBQ00sUUFBUSxHQUE4QixJQUFJLENBQUM7SUFDcEQ7OztPQUdHO0lBQ00sTUFBTSxHQUF1QixZQUFZLENBQUM7SUFDbkQ7OztPQUdHO0lBQ29DLFVBQVUsR0FBVyxDQUFDLENBQUM7SUFDOUQ7OztPQUdHO0lBQ29DLElBQUksR0FBVyxDQUFDLENBQUM7SUFDeEQ7OztPQUdHO0lBQ00sUUFBUSxHQUFhLEVBQUUsQ0FBQztJQUNqQzs7O09BR0c7SUFDSCxJQUFhLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxHQUFhO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBRXZCLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxJQUFJLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDckgsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBRXJCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6QixJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkYsSUFBSSxTQUFTLEdBQUcsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUM3RCxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO2dCQUMzQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3BILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ08sV0FBVyxHQUF5QyxJQUFJLFlBQVksRUFBMEIsQ0FBQztJQUN6Rzs7OztPQUlHO0lBQ08sYUFBYSxHQUEyQyxJQUFJLFlBQVksRUFBNEIsQ0FBQztJQUVwRSxrQkFBa0IsQ0FBdUI7SUFFcEQsU0FBUyxDQUE0QjtJQUVyRSxNQUFNLEdBQVksS0FBSyxDQUFDO0lBRXhCLE1BQU0sR0FBVSxFQUFFLENBQUM7SUFFbkIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUUxQixpQkFBaUIsQ0FBZTtJQUVoQyxlQUFlLENBQWU7SUFFOUIsaUJBQWlCLENBQWU7SUFFaEMsZ0JBQWdCLENBQWU7SUFFL0IsSUFBSSxDQUFtQjtJQUV2QixhQUFhLENBQXFDO0lBRWxELFFBQVEsQ0FBbUI7SUFFM0IsZ0JBQWdCLENBQXFDO0lBRXJELGdCQUFnQixDQUFxQztJQUVyRCxhQUFhLENBQW1CO0lBRWhDLGFBQWEsQ0FBbUI7SUFFaEMsV0FBVyxHQUFhLEVBQUUsQ0FBQztJQUUzQixjQUFjLENBQW1CO0lBRWpDLEtBQUssQ0FBTTtJQUVYLFFBQVEsQ0FBTTtJQUVkLGVBQWUsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFeEMsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM1QixRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUNyQixLQUFLLE9BQU87b0JBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUNoQyxNQUFNO2dCQUNWO29CQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDaEMsTUFBTTtZQUNkLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ1gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztvQkFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEMsQ0FBQztnQkFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2YsSUFBSSxRQUFRLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO29CQUNySCxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7b0JBRXJCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUN6QixJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDbkYsSUFBSSxTQUFTLEdBQUcsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO3dCQUM3RCxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO3dCQUMzQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLEdBQUcsU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFJLElBQUksQ0FBQyxVQUFxQixHQUFHLEtBQUssQ0FBQztvQkFDaEksQ0FBQyxDQUFDLENBQUM7b0JBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7b0JBRS9CLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUQsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUE4QixFQUFFLEtBQWEsRUFBRSxTQUFtQjtRQUMxRSxJQUFJLENBQUMsYUFBYSxHQUFJLEtBQUssQ0FBQyxhQUE2QixJQUFLLEtBQUssQ0FBQyxNQUFzQixDQUFDLGFBQWEsQ0FBQztRQUN6RyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFFLElBQUksQ0FBQyxrQkFBaUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFFLElBQUksQ0FBQyxrQkFBaUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUVuSyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNoTSxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsc0JBQXFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWlDLENBQUM7UUFFN0UsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RJLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN4SixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVKLENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLFFBQVEsQ0FBRSxJQUFJLENBQUMsa0JBQWlDLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLENBQUM7UUFDdkYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBdUIsRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFpQixFQUFFLElBQWEsRUFBRSxTQUFtQjtRQUMxRCxJQUFJLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQztRQUUvQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDcEIsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDbkUsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2RSxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDbkUsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2RSxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDL0QsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztnQkFDL0QsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDL0QsQ0FBQztZQUVELGdCQUFnQixHQUFJLElBQUksQ0FBQyxhQUF3QixHQUFHLE1BQU0sQ0FBQztZQUMzRCxnQkFBZ0IsR0FBSSxJQUFJLENBQUMsYUFBd0IsR0FBRyxNQUFNLENBQUM7UUFDL0QsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXhELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLGdCQUFnQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxHQUFHLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ2pKLElBQUksQ0FBQyxnQkFBZ0MsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLE9BQU8sR0FBRyxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUNsSixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxjQUF3QixDQUFDLEdBQUcsZ0JBQWdCLENBQUM7WUFDbkUsSUFBSSxDQUFDLFdBQVcsQ0FBRSxJQUFJLENBQUMsY0FBeUIsR0FBRyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztRQUM3RSxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUE4QjtRQUNwQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN6RSxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQW9CLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUNyRSxXQUFXLENBQUUsSUFBSSxDQUFDLGtCQUFpQyxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBaUIsRUFBRSxLQUFhO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFpQixFQUFFLEtBQWE7UUFDL0MsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFMUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsS0FBSztRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBaUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixJQUFJLEtBQUssQ0FBQyxVQUFVO1lBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUk7UUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELFVBQVU7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBSztRQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUs7UUFDeEIsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNmLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxZQUFZLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsQ0FBQztnQkFFRCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU07WUFDVixDQUFDO1lBRUQsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssWUFBWSxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixNQUFNO1lBQ1YsQ0FBQztZQUVELEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDZixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hELENBQUM7Z0JBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixNQUFNO1lBQ1YsQ0FBQztZQUVELEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDYixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNDLENBQUM7Z0JBRUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN2QixNQUFNO1lBQ1YsQ0FBQztZQUVEO2dCQUNJLE9BQU87Z0JBQ1AsTUFBTTtRQUNkLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLGdCQUF3QixFQUFFLGdCQUF3QjtRQUM3RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztZQUN2RixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGdCQUFnQixFQUFFLENBQUM7WUFDdEYsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2hGLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDOUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUNoQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUNqQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDeEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ2pELE9BQU8sTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztZQUNsQyxDQUFDO1lBRUQsT0FBTyxNQUFNLEtBQUssSUFBSSxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssT0FBTztvQkFDUixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztnQkFFbEQsS0FBSyxTQUFTO29CQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO2dCQUVwRDtvQkFDSSxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsMEZBQTBGLENBQUMsQ0FBQztZQUN4SSxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBa0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxZQUFZO1FBQ1IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQWtCLENBQUMsQ0FBQztRQUU3RCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNDLElBQUksUUFBUSxHQUFHLENBQUMsR0FBSSxJQUFJLENBQUMsa0JBQWlDLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDekksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDMUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDeEgsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWM7UUFDVixPQUFPO1lBQ0gsd0JBQXdCLEVBQUUsSUFBSTtZQUM5Qix1QkFBdUIsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVk7WUFDckQscUJBQXFCLEVBQUUsSUFBSSxDQUFDLE1BQU0sS0FBSyxVQUFVO1NBQ3BELENBQUM7SUFDTixDQUFDO0lBRUQsbUJBQW1CO1FBQ2YsT0FBTztZQUNILGlCQUFpQixFQUFFLElBQUk7WUFDdkIsd0JBQXdCLEVBQUUsSUFBSTtTQUNqQyxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFLENBQUM7O1lBQzNELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUM7SUFDeEMsQ0FBQzs2TUFqZlEsUUFBUSx5QkFBUixRQUFROzZEQUFSLFFBQVE7d0NBd0ZBLGFBQWE7Ozs7Ozs7Ozs7WUF4RnJCLG9EQUFRO2lQQXdDRyxlQUFlLDZCQUtmLGVBQWUsaUxBL0N4QixDQUFDLGFBQWEsQ0FBQztZQTdDdEIsaUNBU0M7WUFDRyx5RUFBOEQ7WUE0QmxFLGlCQUFNOztZQWpDRixxRkFBNkc7WUFGN0csNkJBQW9CO1lBQ3BCLEFBRkEsOENBQTRCLHNCQUVYOztZQU1ZLGVBQWtCO1lBQWxCLG9DQUFrQjs0QkFaN0MsWUFBWSxvRUFBRSxZQUFZOztpRkFpRDNCLFFBQVE7Y0FwRHBCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7Z0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXdDVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLElBQUksRUFBRTtvQkFDRixnQ0FBZ0MsRUFBRSxRQUFRO2lCQUM3QztnQkFDRCxTQUFTLEVBQUUsQ0FBQyxhQUFhLENBQUM7YUFDN0I7Z0JBTVksVUFBVTtrQkFBbEIsS0FBSztZQUtHLGVBQWU7a0JBQXZCLEtBQUs7WUFLRyxLQUFLO2tCQUFiLEtBQUs7WUFLRyxVQUFVO2tCQUFsQixLQUFLO1lBS0csWUFBWTtrQkFBcEIsS0FBSztZQUtHLFFBQVE7a0JBQWhCLEtBQUs7WUFLRyxNQUFNO2tCQUFkLEtBQUs7WUFLaUMsVUFBVTtrQkFBaEQsS0FBSzttQkFBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7WUFLRSxJQUFJO2tCQUExQyxLQUFLO21CQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtZQUs1QixRQUFRO2tCQUFoQixLQUFLO1lBS08sVUFBVTtrQkFBdEIsS0FBSztZQXVCSSxXQUFXO2tCQUFwQixNQUFNO1lBTUcsYUFBYTtrQkFBdEIsTUFBTTtZQUVvQyxrQkFBa0I7a0JBQTVELFNBQVM7bUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVULFNBQVM7a0JBQXhDLGVBQWU7bUJBQUMsYUFBYTs7a0ZBeEZyQixRQUFRO0FBd2ZyQixNQUFNLE9BQU8sY0FBYzt3R0FBZCxjQUFjOzREQUFkLGNBQWM7Z0VBSGIsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQ1osWUFBWTs7aUZBRXRDLGNBQWM7Y0FKMUIsUUFBUTtlQUFDO2dCQUNOLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDO2dCQUNoRCxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQzthQUNuRDs7d0ZBQ1ksY0FBYyxjQXhmZCxRQUFRLEVBOURSLGFBQWEsRUFtakJhLFlBQVksYUFyZnRDLFFBQVEsRUE5RFIsYUFBYSxFQW9qQmEsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGNvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE5nTW9kdWxlLCBudW1iZXJBdHRyaWJ1dGUsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhZGRDbGFzcywgZ2V0SGVpZ2h0LCBnZXRPdXRlckhlaWdodCwgZ2V0T3V0ZXJXaWR0aCwgZ2V0V2lkdGgsIGhhc0NsYXNzLCBpc1JUTCwgcmVtb3ZlQ2xhc3MgfSBmcm9tICdAcHJpbWV1aXgvdXRpbHMnO1xuaW1wb3J0IHsgUHJpbWVUZW1wbGF0ZSwgU2hhcmVkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gJ3ByaW1lbmcvYmFzZWNvbXBvbmVudCc7XG5pbXBvcnQgeyBOdWxsYWJsZSwgVm9pZExpc3RlbmVyIH0gZnJvbSAncHJpbWVuZy90cy1oZWxwZXJzJztcbmltcG9ydCB7IFNwbGl0dGVyUmVzaXplRW5kRXZlbnQsIFNwbGl0dGVyUmVzaXplU3RhcnRFdmVudCB9IGZyb20gJy4vc3BsaXR0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNwbGl0dGVyU3R5bGUgfSBmcm9tICcuL3N0eWxlL3NwbGl0dGVyc3R5bGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3Atc3BsaXR0ZXItcGFuZWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAncC1zcGxpdHRlcnBhbmVsJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgU3BsaXR0ZXJQYW5lbCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAgIHNwbGl0dGVyID0gY29udGVudENoaWxkKFNwbGl0dGVyKTtcblxuICAgIG5lc3RlZFN0YXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zcGxpdHRlcigpKTtcbn1cblxuLyoqXG4gKiBTcGxpdHRlciBpcyB1dGlsaXplZCB0byBzZXBhcmF0ZSBhbmQgcmVzaXplIHBhbmVscy5cbiAqIEBncm91cCBDb21wb25lbnRzXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1zcGxpdHRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTaGFyZWRNb2R1bGVdLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICNjb250YWluZXJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvbnRhaW5lckNsYXNzKClcIlxuICAgICAgICAgICAgW2NsYXNzXT1cInN0eWxlQ2xhc3NcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwic3R5bGVcIlxuICAgICAgICAgICAgW3N0eWxlXT1cInsgZGlzcGxheTogJ2ZsZXgnLCAnZmxleC13cmFwJzogJ25vd3JhcCcsICdmbGV4LWRpcmVjdGlvbic6IGxheW91dCA9PT0gJ3ZlcnRpY2FsJyA/ICdjb2x1bW4nIDogJycgfVwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXBjLW5hbWVdPVwiJ3NwbGl0dGVyJ1wiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXAtZ3V0dGVyLXJlc2l6aW5nXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIncm9vdCdcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LXBhbmVsIFtuZ0Zvck9mXT1cInBhbmVsc1wiIGxldC1pPVwiaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInBhbmVsQ29udGFpbmVyQ2xhc3MoKVwiIFtjbGFzc109XCJwYW5lbFN0eWxlQ2xhc3NcIiBbbmdTdHlsZV09XCJwYW5lbFN0eWxlXCIgdGFiaW5kZXg9XCItMVwiIFthdHRyLmRhdGEtcGMtbmFtZV09XCInc3BsaXR0ZXInXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidyb290J1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFuZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaSAhPT0gcGFuZWxzLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtc3BsaXR0ZXItZ3V0dGVyXCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cInNlcGFyYXRvclwiXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uR3V0dGVyTW91c2VEb3duKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvbkd1dHRlclRvdWNoU3RhcnQoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICh0b3VjaG1vdmUpPVwib25HdXR0ZXJUb3VjaE1vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICh0b3VjaGVuZCk9XCJvbkd1dHRlclRvdWNoRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXAtZ3V0dGVyLXJlc2l6aW5nXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidndXR0ZXInXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1zcGxpdHRlci1ndXR0ZXItaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJndXR0ZXJTdHlsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtb3JpZW50YXRpb25dPVwibGF5b3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwicHJldlNpemVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidndXR0ZXJoYW5kbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJvbkd1dHRlcktleVVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25HdXR0ZXJLZXlEb3duKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICBgLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLnAtc3BsaXR0ZXJwYW5lbC1uZXN0ZWRdJzogJ25lc3RlZCdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1NwbGl0dGVyU3R5bGVdXG59KVxuZXhwb3J0IGNsYXNzIFNwbGl0dGVyIGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBwYW5lbC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwYW5lbFN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIHBhbmVsLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHBhbmVsU3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGVyZSBhIHN0YXRlZnVsIHNwbGl0dGVyIGtlZXBzIGl0cyBzdGF0ZSwgdmFsaWQgdmFsdWVzIGFyZSAnc2Vzc2lvbicgZm9yIHNlc3Npb25TdG9yYWdlIGFuZCAnbG9jYWwnIGZvciBsb2NhbFN0b3JhZ2UuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3RhdGVTdG9yYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Vzc2lvbic7XG4gICAgLyoqXG4gICAgICogU3RvcmFnZSBpZGVudGlmaWVyIG9mIGEgc3RhdGVmdWwgU3BsaXR0ZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgc3RhdGVLZXk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwgPSBudWxsO1xuICAgIC8qKlxuICAgICAqIE9yaWVudGF0aW9uIG9mIHRoZSBwYW5lbHMuIFZhbGlkIHZhbHVlcyBhcmUgJ2hvcml6b250YWwnIGFuZCAndmVydGljYWwnLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGxheW91dDogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2hvcml6b250YWwnO1xuICAgIC8qKlxuICAgICAqIFNpemUgb2YgdGhlIGRpdmlkZXIgaW4gcGl4ZWxzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIGd1dHRlclNpemU6IG51bWJlciA9IDQ7XG4gICAgLyoqXG4gICAgICogU3RlcCBmYWN0b3IgdG8gaW5jcmVtZW50L2RlY3JlbWVudCB0aGUgc2l6ZSBvZiB0aGUgcGFuZWxzIHdoaWxlIHByZXNzaW5nIHRoZSBhcnJvdyBrZXlzLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIHN0ZXA6IG51bWJlciA9IDU7XG4gICAgLyoqXG4gICAgICogTWluaW11bSBzaXplIG9mIHRoZSBlbGVtZW50cyByZWxhdGl2ZSB0byAxMDAlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIG1pblNpemVzOiBudW1iZXJbXSA9IFtdO1xuICAgIC8qKlxuICAgICAqIFNpemUgb2YgdGhlIGVsZW1lbnRzIHJlbGF0aXZlIHRvIDEwMCUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IHBhbmVsU2l6ZXMoKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFuZWxTaXplcztcbiAgICB9XG4gICAgc2V0IHBhbmVsU2l6ZXModmFsOiBudW1iZXJbXSkge1xuICAgICAgICB0aGlzLl9wYW5lbFNpemVzID0gdmFsO1xuXG4gICAgICAgIGlmICh0aGlzLmVsICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudCAmJiB0aGlzLnBhbmVscy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBbLi4udGhpcy5lbC5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuXS5maWx0ZXIoKGNoaWxkKSA9PiBoYXNDbGFzcyhjaGlsZCwgJ3Atc3BsaXR0ZXJwYW5lbCcpKTtcbiAgICAgICAgICAgIGxldCBfcGFuZWxTaXplcyA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLnBhbmVscy5tYXAoKHBhbmVsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHBhbmVsSW5pdGlhbFNpemUgPSB0aGlzLnBhbmVsU2l6ZXMubGVuZ3RoIC0gMSA+PSBpID8gdGhpcy5wYW5lbFNpemVzW2ldIDogbnVsbDtcbiAgICAgICAgICAgICAgICBsZXQgcGFuZWxTaXplID0gcGFuZWxJbml0aWFsU2l6ZSB8fCAxMDAgLyB0aGlzLnBhbmVscy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgX3BhbmVsU2l6ZXNbaV0gPSBwYW5lbFNpemU7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW5baV0uc3R5bGUuZmxleEJhc2lzID0gJ2NhbGMoJyArIHBhbmVsU2l6ZSArICclIC0gJyArICh0aGlzLnBhbmVscy5sZW5ndGggLSAxKSAqIHRoaXMuZ3V0dGVyU2l6ZSArICdweCknO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gcmVzaXplIGVuZHMuXG4gICAgICogQHBhcmFtIHtTcGxpdHRlclJlc2l6ZUVuZEV2ZW50fSBldmVudCAtIEN1c3RvbSBwYW5lbCByZXNpemUgZW5kIGV2ZW50XG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uUmVzaXplRW5kOiBFdmVudEVtaXR0ZXI8U3BsaXR0ZXJSZXNpemVFbmRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNwbGl0dGVyUmVzaXplRW5kRXZlbnQ+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gcmVzaXplIHN0YXJ0cy5cbiAgICAgKiBAcGFyYW0ge1NwbGl0dGVyUmVzaXplU3RhcnRFdmVudH0gZXZlbnQgLSBDdXN0b20gcGFuZWwgcmVzaXplIHN0YXJ0IGV2ZW50XG4gICAgICogQGdyb3VwIEVtaXRzXG4gICAgICovXG4gICAgQE91dHB1dCgpIG9uUmVzaXplU3RhcnQ6IEV2ZW50RW1pdHRlcjxTcGxpdHRlclJlc2l6ZVN0YXJ0RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxTcGxpdHRlclJlc2l6ZVN0YXJ0RXZlbnQ+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGFpbmVyVmlld0NoaWxkOiBOdWxsYWJsZTxFbGVtZW50UmVmPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oUHJpbWVUZW1wbGF0ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PFByaW1lVGVtcGxhdGU+O1xuXG4gICAgbmVzdGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBwYW5lbHM6IGFueVtdID0gW107XG5cbiAgICBkcmFnZ2luZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgbW91c2VNb3ZlTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIG1vdXNlVXBMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgdG91Y2hNb3ZlTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIHRvdWNoRW5kTGlzdGVuZXI6IFZvaWRMaXN0ZW5lcjtcblxuICAgIHNpemU6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBndXR0ZXJFbGVtZW50OiBOdWxsYWJsZTxFbGVtZW50UmVmIHwgSFRNTEVsZW1lbnQ+O1xuXG4gICAgc3RhcnRQb3M6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBwcmV2UGFuZWxFbGVtZW50OiBOdWxsYWJsZTxFbGVtZW50UmVmIHwgSFRNTEVsZW1lbnQ+O1xuXG4gICAgbmV4dFBhbmVsRWxlbWVudDogTnVsbGFibGU8RWxlbWVudFJlZiB8IEhUTUxFbGVtZW50PjtcblxuICAgIG5leHRQYW5lbFNpemU6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBwcmV2UGFuZWxTaXplOiBOdWxsYWJsZTxudW1iZXI+O1xuXG4gICAgX3BhbmVsU2l6ZXM6IG51bWJlcltdID0gW107XG5cbiAgICBwcmV2UGFuZWxJbmRleDogTnVsbGFibGU8bnVtYmVyPjtcblxuICAgIHRpbWVyOiBhbnk7XG5cbiAgICBwcmV2U2l6ZTogYW55O1xuXG4gICAgX2NvbXBvbmVudFN0eWxlID0gaW5qZWN0KFNwbGl0dGVyU3R5bGUpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIHRoaXMubmVzdGVkID0gdGhpcy5pc05lc3RlZCgpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChpdGVtLmdldFR5cGUoKSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3BhbmVsJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lbHMucHVzaChpdGVtLnRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lbHMucHVzaChpdGVtLnRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYW5lbHMgJiYgdGhpcy5wYW5lbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTdGF0ZWZ1bCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVkID0gdGhpcy5yZXN0b3JlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIWluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IFsuLi50aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5dLmZpbHRlcigoY2hpbGQpID0+IGhhc0NsYXNzKGNoaWxkLCAncC1zcGxpdHRlcnBhbmVsJykpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgX3BhbmVsU2l6ZXMgPSBbXTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVscy5tYXAoKHBhbmVsLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFuZWxJbml0aWFsU2l6ZSA9IHRoaXMucGFuZWxTaXplcy5sZW5ndGggLSAxID49IGkgPyB0aGlzLnBhbmVsU2l6ZXNbaV0gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhbmVsU2l6ZSA9IHBhbmVsSW5pdGlhbFNpemUgfHwgMTAwIC8gdGhpcy5wYW5lbHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgX3BhbmVsU2l6ZXNbaV0gPSBwYW5lbFNpemU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5zdHlsZS5mbGV4QmFzaXMgPSAnY2FsYygnICsgcGFuZWxTaXplICsgJyUgLSAnICsgKHRoaXMucGFuZWxzLmxlbmd0aCAtIDEpICogKHRoaXMuZ3V0dGVyU2l6ZSBhcyBudW1iZXIpICsgJ3B4KSc7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVsU2l6ZXMgPSBfcGFuZWxTaXplcztcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZTaXplID0gcGFyc2VGbG9hdChfcGFuZWxTaXplc1swXSkudG9GaXhlZCg0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNpemVTdGFydChldmVudDogVG91Y2hFdmVudCB8IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIsIGlzS2V5RG93bj86IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5ndXR0ZXJFbGVtZW50ID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpIHx8IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHRoaXMuaG9yaXpvbnRhbCgpID8gZ2V0V2lkdGgoKHRoaXMuY29udGFpbmVyVmlld0NoaWxkIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQpIDogZ2V0SGVpZ2h0KCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZCBhcyBFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICBpZiAoIWlzS2V5RG93bikge1xuICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0UG9zID0gdGhpcy5ob3Jpem9udGFsKCkgPyAoZXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50ID8gZXZlbnQucGFnZVggOiBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCkgOiBldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQgPyBldmVudC5wYWdlWSA6IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2UGFuZWxFbGVtZW50ID0gdGhpcy5ndXR0ZXJFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHRoaXMubmV4dFBhbmVsRWxlbWVudCA9IHRoaXMuZ3V0dGVyRWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGlzS2V5RG93bikge1xuICAgICAgICAgICAgdGhpcy5wcmV2UGFuZWxTaXplID0gdGhpcy5ob3Jpem9udGFsKCkgPyBnZXRPdXRlcldpZHRoKHRoaXMucHJldlBhbmVsRWxlbWVudCwgdHJ1ZSkgOiBnZXRPdXRlckhlaWdodCh0aGlzLnByZXZQYW5lbEVsZW1lbnQsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5uZXh0UGFuZWxTaXplID0gdGhpcy5ob3Jpem9udGFsKCkgPyBnZXRPdXRlcldpZHRoKHRoaXMubmV4dFBhbmVsRWxlbWVudCwgdHJ1ZSkgOiBnZXRPdXRlckhlaWdodCh0aGlzLm5leHRQYW5lbEVsZW1lbnQsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcmV2UGFuZWxTaXplID0gKDEwMCAqICh0aGlzLmhvcml6b250YWwoKSA/IGdldE91dGVyV2lkdGgodGhpcy5wcmV2UGFuZWxFbGVtZW50LCB0cnVlKSA6IGdldE91dGVySGVpZ2h0KHRoaXMucHJldlBhbmVsRWxlbWVudCwgdHJ1ZSkpKSAvIHRoaXMuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMubmV4dFBhbmVsU2l6ZSA9ICgxMDAgKiAodGhpcy5ob3Jpem9udGFsKCkgPyBnZXRPdXRlcldpZHRoKHRoaXMubmV4dFBhbmVsRWxlbWVudCwgdHJ1ZSkgOiBnZXRPdXRlckhlaWdodCh0aGlzLm5leHRQYW5lbEVsZW1lbnQsIHRydWUpKSkgLyB0aGlzLnNpemU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByZXZQYW5lbEluZGV4ID0gaW5kZXg7XG4gICAgICAgIGFkZENsYXNzKHRoaXMuZ3V0dGVyRWxlbWVudCwgJ3Atc3BsaXR0ZXItZ3V0dGVyLXJlc2l6aW5nJyk7XG4gICAgICAgIHRoaXMuZ3V0dGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcC1ndXR0ZXItcmVzaXppbmcnLCAndHJ1ZScpO1xuICAgICAgICBhZGRDbGFzcygodGhpcy5jb250YWluZXJWaWV3Q2hpbGQgYXMgRWxlbWVudFJlZikubmF0aXZlRWxlbWVudCwgJ3Atc3BsaXR0ZXItcmVzaXppbmcnKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJWaWV3Q2hpbGQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcC1yZXNpemluZycsICd0cnVlJyk7XG4gICAgICAgIHRoaXMub25SZXNpemVTdGFydC5lbWl0KHsgb3JpZ2luYWxFdmVudDogZXZlbnQsIHNpemVzOiB0aGlzLl9wYW5lbFNpemVzIGFzIG51bWJlcltdIH0pO1xuICAgIH1cblxuICAgIG9uUmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50LCBzdGVwPzogbnVtYmVyLCBpc0tleURvd24/OiBib29sZWFuKSB7XG4gICAgICAgIGxldCBuZXdQb3MsIG5ld1ByZXZQYW5lbFNpemUsIG5ld05leHRQYW5lbFNpemU7XG5cbiAgICAgICAgaWYgKGlzS2V5RG93bikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaG9yaXpvbnRhbCgpKSB7XG4gICAgICAgICAgICAgICAgbmV3UHJldlBhbmVsU2l6ZSA9ICgxMDAgKiAodGhpcy5wcmV2UGFuZWxTaXplICsgc3RlcCkpIC8gdGhpcy5zaXplO1xuICAgICAgICAgICAgICAgIG5ld05leHRQYW5lbFNpemUgPSAoMTAwICogKHRoaXMubmV4dFBhbmVsU2l6ZSAtIHN0ZXApKSAvIHRoaXMuc2l6ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3UHJldlBhbmVsU2l6ZSA9ICgxMDAgKiAodGhpcy5wcmV2UGFuZWxTaXplIC0gc3RlcCkpIC8gdGhpcy5zaXplO1xuICAgICAgICAgICAgICAgIG5ld05leHRQYW5lbFNpemUgPSAoMTAwICogKHRoaXMubmV4dFBhbmVsU2l6ZSArIHN0ZXApKSAvIHRoaXMuc2l6ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhvcml6b250YWwoKSkge1xuICAgICAgICAgICAgICAgIGlmIChpc1JUTCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1BvcyA9ICgodGhpcy5zdGFydFBvcyAtIGV2ZW50LnBhZ2VYKSAqIDEwMCkgLyB0aGlzLnNpemU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3UG9zID0gKChldmVudC5wYWdlWCAtIHRoaXMuc3RhcnRQb3MpICogMTAwKSAvIHRoaXMuc2l6ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1BvcyA9ICgoZXZlbnQucGFnZVkgLSB0aGlzLnN0YXJ0UG9zKSAqIDEwMCkgLyB0aGlzLnNpemU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5ld1ByZXZQYW5lbFNpemUgPSAodGhpcy5wcmV2UGFuZWxTaXplIGFzIG51bWJlcikgKyBuZXdQb3M7XG4gICAgICAgICAgICBuZXdOZXh0UGFuZWxTaXplID0gKHRoaXMubmV4dFBhbmVsU2l6ZSBhcyBudW1iZXIpIC0gbmV3UG9zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmV2U2l6ZSA9IHBhcnNlRmxvYXQobmV3UHJldlBhbmVsU2l6ZSkudG9GaXhlZCg0KTtcblxuICAgICAgICBpZiAodGhpcy52YWxpZGF0ZVJlc2l6ZShuZXdQcmV2UGFuZWxTaXplLCBuZXdOZXh0UGFuZWxTaXplKSkge1xuICAgICAgICAgICAgKHRoaXMucHJldlBhbmVsRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuc3R5bGUuZmxleEJhc2lzID0gJ2NhbGMoJyArIG5ld1ByZXZQYW5lbFNpemUgKyAnJSAtICcgKyAodGhpcy5wYW5lbHMubGVuZ3RoIC0gMSkgKiB0aGlzLmd1dHRlclNpemUgKyAncHgpJztcbiAgICAgICAgICAgICh0aGlzLm5leHRQYW5lbEVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmZsZXhCYXNpcyA9ICdjYWxjKCcgKyBuZXdOZXh0UGFuZWxTaXplICsgJyUgLSAnICsgKHRoaXMucGFuZWxzLmxlbmd0aCAtIDEpICogdGhpcy5ndXR0ZXJTaXplICsgJ3B4KSc7XG4gICAgICAgICAgICB0aGlzLl9wYW5lbFNpemVzW3RoaXMucHJldlBhbmVsSW5kZXggYXMgbnVtYmVyXSA9IG5ld1ByZXZQYW5lbFNpemU7XG4gICAgICAgICAgICB0aGlzLl9wYW5lbFNpemVzWyh0aGlzLnByZXZQYW5lbEluZGV4IGFzIG51bWJlcikgKyAxXSA9IG5ld05leHRQYW5lbFNpemU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNpemVFbmQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RhdGVmdWwoKSkge1xuICAgICAgICAgICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25SZXNpemVFbmQuZW1pdCh7IG9yaWdpbmFsRXZlbnQ6IGV2ZW50LCBzaXplczogdGhpcy5fcGFuZWxTaXplcyB9KTtcbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5ndXR0ZXJFbGVtZW50IGFzIGFueSwgJ3Atc3BsaXR0ZXItZ3V0dGVyLXJlc2l6aW5nJyk7XG4gICAgICAgIHJlbW92ZUNsYXNzKCh0aGlzLmNvbnRhaW5lclZpZXdDaGlsZCBhcyBFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50LCAncC1zcGxpdHRlci1yZXNpemluZycpO1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgb25HdXR0ZXJNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVTdGFydChldmVudCwgaW5kZXgpO1xuICAgICAgICB0aGlzLmJpbmRNb3VzZUxpc3RlbmVycygpO1xuICAgIH1cblxuICAgIG9uR3V0dGVyVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVTdGFydChldmVudCwgaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5iaW5kVG91Y2hMaXN0ZW5lcnMoKTtcblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uR3V0dGVyVG91Y2hNb3ZlKGV2ZW50KSB7XG4gICAgICAgIHRoaXMub25SZXNpemUoZXZlbnQpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uR3V0dGVyVG91Y2hFbmQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICAgICAgdGhpcy5yZXNpemVFbmQoZXZlbnQpO1xuICAgICAgICB0aGlzLnVuYmluZFRvdWNoTGlzdGVuZXJzKCk7XG5cbiAgICAgICAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgcmVwZWF0KGV2ZW50LCBpbmRleCwgc3RlcCkge1xuICAgICAgICB0aGlzLnJlc2l6ZVN0YXJ0KGV2ZW50LCBpbmRleCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMub25SZXNpemUoZXZlbnQsIHN0ZXAsIHRydWUpO1xuICAgIH1cblxuICAgIHNldFRpbWVyKGV2ZW50LCBpbmRleCwgc3RlcCkge1xuICAgICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXBlYXQoZXZlbnQsIGluZGV4LCBzdGVwKTtcbiAgICAgICAgfSwgNDApO1xuICAgIH1cblxuICAgIGNsZWFyVGltZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkd1dHRlcktleVVwKGV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgICB0aGlzLnJlc2l6ZUVuZChldmVudCk7XG4gICAgfVxuXG4gICAgb25HdXR0ZXJLZXlEb3duKGV2ZW50LCBpbmRleCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYXlvdXQgPT09ICdob3Jpem9udGFsJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWVyKGV2ZW50LCBpbmRleCwgdGhpcy5zdGVwICogLTEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ID09PSAnaG9yaXpvbnRhbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRUaW1lcihldmVudCwgaW5kZXgsIHRoaXMuc3RlcCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzoge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxheW91dCA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWVyKGV2ZW50LCBpbmRleCwgdGhpcy5zdGVwICogLTEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGF5b3V0ID09PSAndmVydGljYWwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZXIoZXZlbnQsIGluZGV4LCB0aGlzLnN0ZXApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgLy9ubyBvcFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFsaWRhdGVSZXNpemUobmV3UHJldlBhbmVsU2l6ZTogbnVtYmVyLCBuZXdOZXh0UGFuZWxTaXplOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMubWluU2l6ZXMubGVuZ3RoID49IDEgJiYgdGhpcy5taW5TaXplc1swXSAmJiB0aGlzLm1pblNpemVzWzBdID4gbmV3UHJldlBhbmVsU2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWluU2l6ZXMubGVuZ3RoID4gMSAmJiB0aGlzLm1pblNpemVzWzFdICYmIHRoaXMubWluU2l6ZXNbMV0gPiBuZXdOZXh0UGFuZWxTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBiaW5kTW91c2VMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5tb3VzZU1vdmVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5tb3VzZU1vdmVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKHRoaXMuZG9jdW1lbnQsICdtb3VzZW1vdmUnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uUmVzaXplKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLm1vdXNlVXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5tb3VzZVVwTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbih0aGlzLmRvY3VtZW50LCAnbW91c2V1cCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplRW5kKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE1vdXNlTGlzdGVuZXJzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJpbmRUb3VjaExpc3RlbmVycygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRvdWNoTW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnRvdWNoTW92ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ3RvdWNobW92ZScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25SZXNpemUoZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMudG91Y2hFbmRMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy50b3VjaEVuZExpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4odGhpcy5kb2N1bWVudCwgJ3RvdWNoZW5kJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemVFbmQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kVG91Y2hMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kTW91c2VMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdXNlTW92ZUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLm1vdXNlTW92ZUxpc3RlbmVyKCk7XG4gICAgICAgICAgICB0aGlzLm1vdXNlTW92ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vdXNlVXBMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5tb3VzZVVwTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMubW91c2VVcExpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuYmluZFRvdWNoTGlzdGVuZXJzKCkge1xuICAgICAgICBpZiAodGhpcy50b3VjaE1vdmVMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy50b3VjaE1vdmVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy50b3VjaE1vdmVMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50b3VjaEVuZExpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnRvdWNoRW5kTGlzdGVuZXIoKTtcbiAgICAgICAgICAgIHRoaXMudG91Y2hFbmRMaXN0ZW5lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5kcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNpemUgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2UGFuZWxFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0UGFuZWxFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2UGFuZWxTaXplID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0UGFuZWxTaXplID0gbnVsbDtcbiAgICAgICAgdGhpcy5ndXR0ZXJFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2UGFuZWxJbmRleCA9IG51bGw7XG4gICAgfVxuXG4gICAgaXNOZXN0ZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIHdoaWxlIChwYXJlbnQgJiYgIWhhc0NsYXNzKHBhcmVudCwgJ3Atc3BsaXR0ZXInKSkge1xuICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcGFyZW50ICE9PSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNTdGF0ZWZ1bCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVLZXkgIT0gbnVsbDtcbiAgICB9XG5cbiAgICBnZXRTdG9yYWdlKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnN0YXRlU3RvcmFnZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xvY2FsJzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYWxTdG9yYWdlO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vzc2lvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LnNlc3Npb25TdG9yYWdlO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuc3RhdGVTdG9yYWdlICsgJyBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgdGhlIHN0YXRlIHN0b3JhZ2UsIHN1cHBvcnRlZCB2YWx1ZXMgYXJlIFwibG9jYWxcIiBhbmQgXCJzZXNzaW9uXCIuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0b3JhZ2UgaXMgbm90IGEgYXZhaWxhYmxlIGJ5IGRlZmF1bHQgb24gdGhlIHNlcnZlci4nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNhdmVTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5nZXRTdG9yYWdlKCkuc2V0SXRlbSh0aGlzLnN0YXRlS2V5IGFzIHN0cmluZywgSlNPTi5zdHJpbmdpZnkodGhpcy5fcGFuZWxTaXplcykpO1xuICAgIH1cblxuICAgIHJlc3RvcmVTdGF0ZSgpIHtcbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZSgpO1xuICAgICAgICBjb25zdCBzdGF0ZVN0cmluZyA9IHN0b3JhZ2UuZ2V0SXRlbSh0aGlzLnN0YXRlS2V5IGFzIHN0cmluZyk7XG5cbiAgICAgICAgaWYgKHN0YXRlU3RyaW5nKSB7XG4gICAgICAgICAgICB0aGlzLl9wYW5lbFNpemVzID0gSlNPTi5wYXJzZShzdGF0ZVN0cmluZyk7XG4gICAgICAgICAgICBsZXQgY2hpbGRyZW4gPSBbLi4uKHRoaXMuY29udGFpbmVyVmlld0NoaWxkIGFzIEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5dLmZpbHRlcigoY2hpbGQpID0+IGhhc0NsYXNzKGNoaWxkLCAncC1zcGxpdHRlcnBhbmVsJykpO1xuICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBjaGlsZC5zdHlsZS5mbGV4QmFzaXMgPSAnY2FsYygnICsgdGhpcy5fcGFuZWxTaXplc1tpXSArICclIC0gJyArICh0aGlzLnBhbmVscy5sZW5ndGggLSAxKSAqIHRoaXMuZ3V0dGVyU2l6ZSArICdweCknO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnRhaW5lckNsYXNzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3Atc3BsaXR0ZXIgcC1jb21wb25lbnQnOiB0cnVlLFxuICAgICAgICAgICAgJ3Atc3BsaXR0ZXItaG9yaXpvbnRhbCc6IHRoaXMubGF5b3V0ID09PSAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAncC1zcGxpdHRlci12ZXJ0aWNhbCc6IHRoaXMubGF5b3V0ID09PSAndmVydGljYWwnXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcGFuZWxDb250YWluZXJDbGFzcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdwLXNwbGl0dGVycGFuZWwnOiB0cnVlLFxuICAgICAgICAgICAgJ3Atc3BsaXR0ZXJwYW5lbC1uZXN0ZWQnOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ3V0dGVyU3R5bGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmhvcml6b250YWwoKSkgcmV0dXJuIHsgd2lkdGg6IHRoaXMuZ3V0dGVyU2l6ZSArICdweCcgfTtcbiAgICAgICAgZWxzZSByZXR1cm4geyBoZWlnaHQ6IHRoaXMuZ3V0dGVyU2l6ZSArICdweCcgfTtcbiAgICB9XG5cbiAgICBob3Jpem9udGFsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQgPT09ICdob3Jpem9udGFsJztcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1NwbGl0dGVyLCBTcGxpdHRlclBhbmVsLCBTaGFyZWRNb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtTcGxpdHRlciwgU3BsaXR0ZXJQYW5lbCwgU2hhcmVkTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBTcGxpdHRlck1vZHVsZSB7fVxuIl19
|