@sapui5/sap.fe.templates 1.103.0 → 1.104.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +3 -4
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +1 -2
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +60 -296
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +52 -264
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +367 -0
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +259 -0
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +16 -9
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +15 -9
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +19 -27
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +23 -27
- package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +1 -1
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +19 -3
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +75 -47
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +149 -108
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +56 -62
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.tsx +132 -0
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +55 -29
- package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +28 -29
- package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +2 -14
- package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +5 -3
- package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +1 -1
- package/src/sap/fe/templates/controls/Table.fragment.xml +1 -1
- package/src/sap/fe/templates/library.js +4 -3
- package/src/sap/fe/templates/library.ts +2 -0
- package/src/sap/fe/templates/messagebundle.properties +2 -5
- package/src/sap/fe/templates/messagebundle_ar.properties +3 -12
- package/src/sap/fe/templates/messagebundle_bg.properties +0 -9
- package/src/sap/fe/templates/messagebundle_ca.properties +2 -11
- package/src/sap/fe/templates/messagebundle_cs.properties +3 -12
- package/src/sap/fe/templates/messagebundle_cy.properties +0 -9
- package/src/sap/fe/templates/messagebundle_da.properties +3 -12
- package/src/sap/fe/templates/messagebundle_de.properties +2 -11
- package/src/sap/fe/templates/messagebundle_el.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en_GB.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +1 -5
- package/src/sap/fe/templates/messagebundle_es.properties +0 -9
- package/src/sap/fe/templates/messagebundle_es_MX.properties +2 -11
- package/src/sap/fe/templates/messagebundle_et.properties +0 -9
- package/src/sap/fe/templates/messagebundle_fi.properties +2 -11
- package/src/sap/fe/templates/messagebundle_fr.properties +3 -12
- package/src/sap/fe/templates/messagebundle_fr_CA.properties +2 -11
- package/src/sap/fe/templates/messagebundle_hi.properties +2 -11
- package/src/sap/fe/templates/messagebundle_hr.properties +2 -11
- package/src/sap/fe/templates/messagebundle_hu.properties +2 -11
- package/src/sap/fe/templates/messagebundle_id.properties +2 -11
- package/src/sap/fe/templates/messagebundle_it.properties +2 -11
- package/src/sap/fe/templates/messagebundle_iw.properties +2 -11
- package/src/sap/fe/templates/messagebundle_ja.properties +2 -11
- package/src/sap/fe/templates/messagebundle_kk.properties +2 -11
- package/src/sap/fe/templates/messagebundle_ko.properties +2 -11
- package/src/sap/fe/templates/messagebundle_lt.properties +2 -11
- package/src/sap/fe/templates/messagebundle_lv.properties +0 -9
- package/src/sap/fe/templates/messagebundle_ms.properties +2 -11
- package/src/sap/fe/templates/messagebundle_nl.properties +2 -11
- package/src/sap/fe/templates/messagebundle_no.properties +0 -9
- package/src/sap/fe/templates/messagebundle_pl.properties +0 -9
- package/src/sap/fe/templates/messagebundle_pt.properties +2 -11
- package/src/sap/fe/templates/messagebundle_pt_PT.properties +2 -11
- package/src/sap/fe/templates/messagebundle_ro.properties +0 -9
- package/src/sap/fe/templates/messagebundle_ru.properties +2 -11
- package/src/sap/fe/templates/messagebundle_sh.properties +2 -11
- package/src/sap/fe/templates/messagebundle_sk.properties +2 -11
- package/src/sap/fe/templates/messagebundle_sl.properties +2 -11
- package/src/sap/fe/templates/messagebundle_sv.properties +2 -11
- package/src/sap/fe/templates/messagebundle_th.properties +1 -10
- package/src/sap/fe/templates/messagebundle_tr.properties +2 -11
- package/src/sap/fe/templates/messagebundle_uk.properties +2 -11
- package/src/sap/fe/templates/messagebundle_vi.properties +0 -9
- package/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -9
- package/src/sap/fe/templates/messagebundle_zh_TW.properties +2 -11
- package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.js +0 -103
- package/src/sap/fe/templates/ObjectPage/handler/DraftHandler.ts +0 -97
- package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +0 -27
|
@@ -45,11 +45,11 @@ import ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
|
45
45
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
46
46
|
import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
47
47
|
import type ResourceModel from "sap/ui/model/resource/ResourceModel";
|
|
48
|
+
import type BreadCrumbs from "sap/uxap/BreadCrumbs";
|
|
48
49
|
import type ObjectPageDynamicHeaderTitle from "sap/uxap/ObjectPageDynamicHeaderTitle";
|
|
49
50
|
import type ObjectPageLayout from "sap/uxap/ObjectPageLayout";
|
|
50
51
|
import type ObjectPageSection from "sap/uxap/ObjectPageSection";
|
|
51
52
|
import type ObjectPageSubSection from "sap/uxap/ObjectPageSubSection";
|
|
52
|
-
import DraftHandler from "./handler/DraftHandler";
|
|
53
53
|
import IntentBasedNavigationOverride from "./overrides/IntentBasedNavigation";
|
|
54
54
|
import InternalRoutingOverride from "./overrides/InternalRouting";
|
|
55
55
|
import MessageHandlerOverride from "./overrides/MessageHandler";
|
|
@@ -477,40 +477,35 @@ class ObjectPageController extends PageController {
|
|
|
477
477
|
* @param oTable
|
|
478
478
|
* @param oListBinding
|
|
479
479
|
*/
|
|
480
|
-
function enableFastCreationRow(oTable: any, oListBinding: any) {
|
|
480
|
+
async function enableFastCreationRow(oTable: any, oListBinding: any) {
|
|
481
481
|
const oFastCreationRow = oTable.getCreationRow();
|
|
482
482
|
let oFastCreationListBinding, oFastCreationContext;
|
|
483
483
|
|
|
484
484
|
if (oFastCreationRow) {
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
// this is needed to avoid console error
|
|
506
|
-
oFastCreationContext.created().catch(function () {
|
|
507
|
-
Log.trace("transient fast creation context deleted");
|
|
508
|
-
});
|
|
485
|
+
try {
|
|
486
|
+
await oFinalUIState;
|
|
487
|
+
if (oFastCreationRow.getModel("ui").getProperty("/isEditable")) {
|
|
488
|
+
oFastCreationListBinding = oModel.bindList(oListBinding.getPath(), oListBinding.getContext(), [], [], {
|
|
489
|
+
$$updateGroupId: "doNotSubmit",
|
|
490
|
+
$$groupId: "doNotSubmit"
|
|
491
|
+
});
|
|
492
|
+
// Workaround suggested by OData model v4 colleagues
|
|
493
|
+
oFastCreationListBinding.refreshInternal = function () {
|
|
494
|
+
/* do nothing */
|
|
495
|
+
};
|
|
496
|
+
oFastCreationContext = oFastCreationListBinding.create();
|
|
497
|
+
oFastCreationRow.setBindingContext(oFastCreationContext);
|
|
498
|
+
|
|
499
|
+
// this is needed to avoid console error
|
|
500
|
+
try {
|
|
501
|
+
await oFastCreationContext.created();
|
|
502
|
+
} catch (e) {
|
|
503
|
+
Log.trace("transient fast creation context deleted");
|
|
509
504
|
}
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
505
|
+
}
|
|
506
|
+
} catch (oError: any) {
|
|
507
|
+
Log.error("Error while computing the final UI state", oError);
|
|
508
|
+
}
|
|
514
509
|
}
|
|
515
510
|
}
|
|
516
511
|
|
|
@@ -763,7 +758,7 @@ class ObjectPageController extends PageController {
|
|
|
763
758
|
});
|
|
764
759
|
}
|
|
765
760
|
|
|
766
|
-
_saveDocument(oContext: any) {
|
|
761
|
+
async _saveDocument(oContext: any) {
|
|
767
762
|
const oModel = this.getView().getModel("ui"),
|
|
768
763
|
aWaitCreateDocuments: any[] = [];
|
|
769
764
|
// indicates if we are creating a new row in the OP
|
|
@@ -792,31 +787,33 @@ class ObjectPageController extends PageController {
|
|
|
792
787
|
);
|
|
793
788
|
}
|
|
794
789
|
});
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
790
|
+
|
|
791
|
+
try {
|
|
792
|
+
const aBindings = await Promise.all(aWaitCreateDocuments);
|
|
793
|
+
const mParameters = {
|
|
794
|
+
bExecuteSideEffectsOnError: bExecuteSideEffectsOnError,
|
|
795
|
+
bindings: aBindings
|
|
796
|
+
};
|
|
797
|
+
// We need to either reject or resolve a promise here and return it since this save
|
|
798
|
+
// function is not only called when pressing the save button in the footer, but also
|
|
799
|
+
// when the user selects create or save in a dataloss popup.
|
|
800
|
+
// The logic of the dataloss popup needs to detect if the save had errors or not in order
|
|
801
|
+
// to decide if the subsequent action - like a back navigation - has to be executed or not.
|
|
802
|
+
try {
|
|
803
|
+
await this.editFlow.saveDocument(oContext, mParameters);
|
|
804
|
+
} catch (error: any) {
|
|
805
|
+
// If the saveDocument in editFlow returns errors we need
|
|
806
|
+
// to show the message popover here and ensure that the
|
|
807
|
+
// dataloss logic does not perform the follow up function
|
|
808
|
+
// like e.g. a back navigation hence we return a promise and reject it
|
|
809
|
+
this._showMessagePopover(error);
|
|
810
|
+
throw error;
|
|
811
|
+
}
|
|
812
|
+
} finally {
|
|
813
|
+
if (BusyLocker.isLocked(oModel)) {
|
|
814
|
+
BusyLocker.unlock(oModel);
|
|
815
|
+
}
|
|
816
|
+
}
|
|
820
817
|
}
|
|
821
818
|
|
|
822
819
|
_manageCollaboration() {
|
|
@@ -836,9 +833,6 @@ class ObjectPageController extends PageController {
|
|
|
836
833
|
return this.editFlow.applyDocument(oContext).catch(() => this._showMessagePopover());
|
|
837
834
|
}
|
|
838
835
|
|
|
839
|
-
_showSwitchDraftAndActivePopover = DraftHandler.showSwitchDraftAndActivePopover;
|
|
840
|
-
_switchDraftAndActivePopoverListSelect = DraftHandler.switchDraftAndActivePopoverListSelect;
|
|
841
|
-
|
|
842
836
|
_updateRelatedApps() {
|
|
843
837
|
const oObjectPage = this._getObjectPageLayoutControl();
|
|
844
838
|
if (CommonUtils.resolveStringtoBoolean(oObjectPage.data("showRelatedApps"))) {
|
|
@@ -1053,13 +1047,13 @@ class ObjectPageController extends PageController {
|
|
|
1053
1047
|
* @ui5-restricted
|
|
1054
1048
|
* @experimental
|
|
1055
1049
|
*/
|
|
1056
|
-
async _setBreadcrumbLinks(oSource:
|
|
1050
|
+
async _setBreadcrumbLinks(oSource: BreadCrumbs) {
|
|
1057
1051
|
const oContext = oSource.getBindingContext(),
|
|
1058
1052
|
oAppComponent = this.getAppComponent(),
|
|
1059
1053
|
aPromises: Promise<void>[] = [],
|
|
1060
1054
|
aSkipParameterized: any[] = [],
|
|
1061
|
-
sNewPath = oContext
|
|
1062
|
-
aPathParts = sNewPath
|
|
1055
|
+
sNewPath = oContext?.getPath(),
|
|
1056
|
+
aPathParts = sNewPath?.split("/") ?? [],
|
|
1063
1057
|
oMetaModel = oAppComponent && oAppComponent.getMetaModel();
|
|
1064
1058
|
let sPath = "";
|
|
1065
1059
|
aPathParts.shift();
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { BuildingBlockBase, defineBuildingBlock, xmlAttribute } from "sap/fe/core/buildingBlocks/BuildingBlock";
|
|
2
|
+
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
3
|
+
import { Entity, UI } from "sap/fe/core/converters/helpers/BindingHelper";
|
|
4
|
+
import { and, ifElse, not, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
|
|
5
|
+
import { defineReference, PropertiesOf } from "sap/fe/core/helpers/ClassSupport";
|
|
6
|
+
import { Ref } from "sap/fe/core/jsx-runtime/jsx";
|
|
7
|
+
import PageController from "sap/fe/core/PageController";
|
|
8
|
+
import { getSwitchDraftAndActiveVisibility } from "sap/fe/templates/ObjectPage/ObjectPageTemplating";
|
|
9
|
+
import Button from "sap/m/Button";
|
|
10
|
+
import ResponsivePopover from "sap/m/ResponsivePopover";
|
|
11
|
+
import SelectList from "sap/m/SelectList";
|
|
12
|
+
import Event from "sap/ui/base/Event";
|
|
13
|
+
import { PropertyBindingInfo } from "sap/ui/base/ManagedObject";
|
|
14
|
+
import InvisibleText from "sap/ui/core/InvisibleText";
|
|
15
|
+
import Item from "sap/ui/core/Item";
|
|
16
|
+
import View from "sap/ui/core/mvc/View";
|
|
17
|
+
import Context from "sap/ui/model/Context";
|
|
18
|
+
import type { V4Context } from "types/extension_types";
|
|
19
|
+
|
|
20
|
+
@defineBuildingBlock({ name: "DraftHandlerButton", namespace: "sap.fe.templates.ObjectPage.components", isRuntime: true })
|
|
21
|
+
export default class DraftHandlerButton extends BuildingBlockBase {
|
|
22
|
+
private _containingView!: View;
|
|
23
|
+
private popover?: ResponsivePopover;
|
|
24
|
+
|
|
25
|
+
private readonly SWITCH_TO_DRAFT_KEY = "switchToDraft";
|
|
26
|
+
private readonly SWITCH_TO_ACTIVE_KEY = "switchToActive";
|
|
27
|
+
|
|
28
|
+
constructor(oProps: PropertiesOf<DraftHandlerButton>) {
|
|
29
|
+
super(oProps);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@xmlAttribute({ type: "string" })
|
|
33
|
+
public id!: string;
|
|
34
|
+
|
|
35
|
+
@xmlAttribute({ type: "sap.ui.model.Context" })
|
|
36
|
+
public contextPath!: Context;
|
|
37
|
+
|
|
38
|
+
@defineReference()
|
|
39
|
+
public switchToActiveRef!: Ref<Item>;
|
|
40
|
+
@defineReference()
|
|
41
|
+
public switchToDraftRef!: Ref<Item>;
|
|
42
|
+
|
|
43
|
+
private initialSelectedKey: string = this.SWITCH_TO_ACTIVE_KEY;
|
|
44
|
+
|
|
45
|
+
handleSelectedItemChange = (event: Event) => {
|
|
46
|
+
const selectedItemKey = event.getParameter("item").getProperty("key");
|
|
47
|
+
if (selectedItemKey !== this.initialSelectedKey) {
|
|
48
|
+
(this._containingView.getController() as PageController).editFlow.toggleDraftActive(
|
|
49
|
+
this._containingView.getBindingContext() as V4Context
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
if (this.popover) {
|
|
53
|
+
this.popover.close();
|
|
54
|
+
this.popover.destroy();
|
|
55
|
+
delete this.popover;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
openSwitchActivePopover = (event: Event) => {
|
|
60
|
+
const sourceControl = event.getSource();
|
|
61
|
+
const containingView = CommonUtils.getTargetView(sourceControl);
|
|
62
|
+
|
|
63
|
+
const context: V4Context = containingView.getBindingContext();
|
|
64
|
+
const isActiveEntity = context.getObject().IsActiveEntity;
|
|
65
|
+
this.initialSelectedKey = isActiveEntity ? this.SWITCH_TO_ACTIVE_KEY : this.SWITCH_TO_DRAFT_KEY;
|
|
66
|
+
this.popover = this.createPopover();
|
|
67
|
+
|
|
68
|
+
this._containingView = containingView;
|
|
69
|
+
containingView.addDependent(this.popover);
|
|
70
|
+
this.popover.openBy(sourceControl);
|
|
71
|
+
this.popover.attachEventOnce("afterOpen", () => {
|
|
72
|
+
if (isActiveEntity) {
|
|
73
|
+
this.switchToDraftRef.current?.focus();
|
|
74
|
+
} else {
|
|
75
|
+
this.switchToActiveRef.current?.focus();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return this.popover;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
createPopover(): ResponsivePopover {
|
|
82
|
+
return (
|
|
83
|
+
<ResponsivePopover
|
|
84
|
+
showHeader={false}
|
|
85
|
+
contentWidth={"15.625rem"}
|
|
86
|
+
verticalScrolling={false}
|
|
87
|
+
class={"sapUiNoContentPadding"}
|
|
88
|
+
placement={"Bottom"}
|
|
89
|
+
>
|
|
90
|
+
<SelectList selectedKey={this.initialSelectedKey} itemPress={this.handleSelectedItemChange}>
|
|
91
|
+
<Item
|
|
92
|
+
text={"{sap.fe.i18n>C_COMMON_OBJECT_PAGE_DISPLAY_DRAFT_MIT}"}
|
|
93
|
+
key={this.SWITCH_TO_DRAFT_KEY}
|
|
94
|
+
ref={this.switchToDraftRef}
|
|
95
|
+
/>
|
|
96
|
+
<Item
|
|
97
|
+
text={"{sap.fe.i18n>C_COMMON_OBJECT_PAGE_DISPLAY_SAVED_VERSION_MIT}"}
|
|
98
|
+
key={this.SWITCH_TO_ACTIVE_KEY}
|
|
99
|
+
ref={this.switchToActiveRef}
|
|
100
|
+
/>
|
|
101
|
+
</SelectList>
|
|
102
|
+
</ResponsivePopover>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
render() {
|
|
107
|
+
const textValue = ifElse(
|
|
108
|
+
and(not(UI.IsEditable), not(UI.IsCreateMode), Entity.HasDraft),
|
|
109
|
+
pathInModel("C_COMMON_OBJECT_PAGE_SAVED_VERSION_BUT", "sap.fe.i18n"),
|
|
110
|
+
pathInModel("C_COMMON_OBJECT_PAGE_DRAFT_BUT", "sap.fe.i18n")
|
|
111
|
+
) as PropertyBindingInfo;
|
|
112
|
+
const visible = getSwitchDraftAndActiveVisibility(this.contextPath.getObject("@"));
|
|
113
|
+
return (
|
|
114
|
+
<>
|
|
115
|
+
<Button
|
|
116
|
+
id="fe::StandardAction::SwitchDraftAndActiveObject"
|
|
117
|
+
text={textValue}
|
|
118
|
+
visible={visible}
|
|
119
|
+
icon="sap-icon://navigation-down-arrow"
|
|
120
|
+
iconFirst={false}
|
|
121
|
+
type="Transparent"
|
|
122
|
+
press={this.openSwitchActivePopover}
|
|
123
|
+
ariaDescribedBy={["fe::StandardAction::SwitchDraftAndActiveObject::AriaTextDraftSwitcher"]}
|
|
124
|
+
></Button>
|
|
125
|
+
<InvisibleText
|
|
126
|
+
text="{sap.fe.i18n>T_HEADER_DATAPOINT_TITLE_DRAFT_SWITCHER_ARIA_BUTTON}"
|
|
127
|
+
id="fe::StandardAction::SwitchDraftAndActiveObject::AriaTextDraftSwitcher"
|
|
128
|
+
/>
|
|
129
|
+
</>
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -55,4 +55,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/navigation/SelectionVariant"],
|
|
|
55
55
|
};
|
|
56
56
|
return IntentBasedNavigationOverride;
|
|
57
57
|
}, false);
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkludGVudEJhc2VkTmF2aWdhdGlvbi50cyJdLCJuYW1lcyI6WyJJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSIsImFkYXB0TmF2aWdhdGlvbkNvbnRleHQiLCJvU2VsZWN0aW9uVmFyaWFudCIsIm9UYXJnZXRJbmZvIiwib1ZpZXciLCJnZXRWaWV3Iiwib0NvbnRyb2xsZXIiLCJnZXRDb250cm9sbGVyIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dCIsImdldFByb3BlcnR5Iiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwicGFnZSIsIm9QYWdlQ29udGV4dCIsInNNZXRhUGF0aCIsImdldE1ldGFQYXRoIiwiZ2V0UGF0aCIsIm9QYWdlQ29udGV4dERhdGEiLCJfaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwicmVtb3ZlU2Vuc2l0aXZlRGF0YSIsImdldE9iamVjdCIsIm9QYWdlRGF0YSIsInByZXBhcmVDb250ZXh0Rm9yRXh0ZXJuYWxOYXZpZ2F0aW9uIiwib1BhZ2VQcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0IiwicHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsIm9QYWdlU1YiLCJhZGRQYWdlQ29udGV4dFRvU2VsZWN0aW9uVmFyaWFudCIsIlNlbGVjdGlvblZhcmlhbnQiLCJzZW1hbnRpY0F0dHJpYnV0ZXMiLCJvUHJvcGVydGllc1dpdGhvdXRDb25mbGljdCIsImFTZWxlY3RPcHRpb25Qcm9wZXJ0eU5hbWVzIiwiZ2V0U2VsZWN0T3B0aW9uc1Byb3BlcnR5TmFtZXMiLCJmb3JFYWNoIiwic1Byb3BlcnR5TmFtZSIsImdldFNlbGVjdE9wdGlvbiIsIm1hc3NBZGRTZWxlY3RPcHRpb24iLCJzZXRQcm9wZXJ0eSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7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bHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBJbnRlbnRCYXNlZE5hdmlnYXRpb24gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVudEJhc2VkTmF2aWdhdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBTZWxlY3Rpb25WYXJpYW50IGZyb20gXCJzYXAvZmUvbmF2aWdhdGlvbi9TZWxlY3Rpb25WYXJpYW50XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuXG5jb25zdCBJbnRlbnRCYXNlZE5hdmlnYXRpb25PdmVycmlkZSA9IHtcblx0YWRhcHROYXZpZ2F0aW9uQ29udGV4dDogZnVuY3Rpb24gKHRoaXM6IEludGVudEJhc2VkTmF2aWdhdGlvbiwgb1NlbGVjdGlvblZhcmlhbnQ6IGFueSwgb1RhcmdldEluZm86IGFueSkge1xuXHRcdGNvbnN0IG9WaWV3ID0gdGhpcy5nZXRWaWV3KCksXG5cdFx0XHRvQ29udHJvbGxlciA9IG9WaWV3LmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcixcblx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IHRoaXMuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRvRXh0ZXJuYWxOYXZpZ2F0aW9uQ29udGV4dCA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcImV4dGVybmFsTmF2aWdhdGlvbkNvbnRleHRcIik7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvVmlldyk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9BcHBDb21wb25lbnQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRpZiAob0V4dGVybmFsTmF2aWdhdGlvbkNvbnRleHQucGFnZSkge1xuXHRcdFx0Y29uc3Qgb1BhZ2VDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0LFxuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKG9QYWdlQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3Qgb1BhZ2VDb250ZXh0RGF0YSA9IG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ucmVtb3ZlU2Vuc2l0aXZlRGF0YShvUGFnZUNvbnRleHQuZ2V0T2JqZWN0KCksIHNNZXRhUGF0aCksXG5cdFx0XHRcdG9QYWdlRGF0YSA9IG9Db250cm9sbGVyLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ucHJlcGFyZUNvbnRleHRGb3JFeHRlcm5hbE5hdmlnYXRpb24ob1BhZ2VDb250ZXh0RGF0YSwgb1BhZ2VDb250ZXh0KSxcblx0XHRcdFx0b1BhZ2VQcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0ID0gb1BhZ2VEYXRhLnByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QsXG5cdFx0XHRcdC8vIFRPRE86IG1vdmUgdGhpcyBhbHNvIGludG8gdGhlIGludGVudCBiYXNlZCBuYXZpZ2F0aW9uIGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdFx0XHRcdG9QYWdlU1Y6IGFueSA9IENvbW1vblV0aWxzLmFkZFBhZ2VDb250ZXh0VG9TZWxlY3Rpb25WYXJpYW50KG5ldyBTZWxlY3Rpb25WYXJpYW50KCksIG9QYWdlRGF0YS5zZW1hbnRpY0F0dHJpYnV0ZXMsIG9WaWV3KSxcblx0XHRcdFx0b1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QgPSBvVGFyZ2V0SW5mby5wcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0O1xuXHRcdFx0Y29uc3QgYVNlbGVjdE9wdGlvblByb3BlcnR5TmFtZXMgPSBvUGFnZVNWLmdldFNlbGVjdE9wdGlvbnNQcm9wZXJ0eU5hbWVzKCk7XG5cdFx0XHRhU2VsZWN0T3B0aW9uUHJvcGVydHlOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uIChzUHJvcGVydHlOYW1lOiBhbnkpIHtcblx0XHRcdFx0aWYgKCFvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb24oc1Byb3BlcnR5TmFtZSkpIHtcblx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUsIG9QYWdlU1YuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBPbmx5IHdoZW4gdGhlcmUgaXMgbm8gY29uZmxpY3QgZG8gd2UgbmVlZCB0byBhZGQgc29tZXRoaW5nXG5cdFx0XHRcdFx0Ly8gaW4gYWxsIG90aGVyIGNhc2UgdGhlIGNvbmZsaWN0ZWQgcGF0aHMgYXJlIGFscmVhZHkgYWRkZWQgaW4gcHJlcGFyZUNvbnRleHRGb3JFeHRlcm5hbE5hdmlnYXRpb25cblx0XHRcdFx0XHQvLyBpZiBwcm9wZXJ0eSB3YXMgd2l0aG91dCBjb25mbGljdCBpbiBpbmNvbWluZyBjb250ZXh0IHRoZW4gYWRkIHBhdGggZnJvbSBpbmNvbWluZyBjb250ZXh0IHRvIFNWXG5cdFx0XHRcdFx0Ly8gVE8tRE8uIFJlbW92ZSB0aGUgY2hlY2sgZm9yIG9Qcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0IG9uY2Ugc2VtYW50aWMgbGlua3MgZnVuY3Rpb25hbGl0eSBpcyBjb3ZlcmVkXG5cdFx0XHRcdFx0aWYgKG9Qcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0ICYmIHNQcm9wZXJ0eU5hbWUgaW4gb1Byb3BlcnRpZXNXaXRob3V0Q29uZmxpY3QpIHtcblx0XHRcdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50Lm1hc3NBZGRTZWxlY3RPcHRpb24oXG5cdFx0XHRcdFx0XHRcdG9Qcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0W3NQcm9wZXJ0eU5hbWVdLFxuXHRcdFx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5nZXRTZWxlY3RPcHRpb24oc1Byb3BlcnR5TmFtZSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vIGlmIHByb3BlcnR5IHdhcyB3aXRob3V0IGNvbmZsaWN0IGluIHBhZ2UgY29udGV4dCB0aGVuIGFkZCBwYXRoIGZyb20gcGFnZSBjb250ZXh0IHRvIFNWXG5cdFx0XHRcdFx0aWYgKHNQcm9wZXJ0eU5hbWUgaW4gb1BhZ2VQcm9wZXJ0aWVzV2l0aG91dENvbmZsaWN0KSB7XG5cdFx0XHRcdFx0XHRvU2VsZWN0aW9uVmFyaWFudC5tYXNzQWRkU2VsZWN0T3B0aW9uKFxuXHRcdFx0XHRcdFx0XHRvUGFnZVByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Rbc1Byb3BlcnR5TmFtZV0sXG5cdFx0XHRcdFx0XHRcdG9QYWdlU1YuZ2V0U2VsZWN0T3B0aW9uKHNQcm9wZXJ0eU5hbWUpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHQvLyByZW1vdmUgbm9uIHB1YmxpYyBwcm9wZXJ0aWVzIGZyb20gdGFyZ2V0SW5mb1xuXHRcdFx0ZGVsZXRlIG9UYXJnZXRJbmZvLnByb3BlcnRpZXNXaXRob3V0Q29uZmxpY3Q7XG5cdFx0fVxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcImV4dGVybmFsTmF2aWdhdGlvbkNvbnRleHRcIiwgeyBcInBhZ2VcIjogdHJ1ZSB9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgSW50ZW50QmFzZWROYXZpZ2F0aW9uT3ZlcnJpZGU7XG4iXX0=
|
|
@@ -21,7 +21,7 @@ const IntentBasedNavigationOverride = {
|
|
|
21
21
|
oPageData = oController._intentBasedNavigation.prepareContextForExternalNavigation(oPageContextData, oPageContext),
|
|
22
22
|
oPagePropertiesWithoutConflict = oPageData.propertiesWithoutConflict,
|
|
23
23
|
// TODO: move this also into the intent based navigation controller extension
|
|
24
|
-
oPageSV = CommonUtils.addPageContextToSelectionVariant(new SelectionVariant(), oPageData.semanticAttributes, oView),
|
|
24
|
+
oPageSV: any = CommonUtils.addPageContextToSelectionVariant(new SelectionVariant(), oPageData.semanticAttributes, oView),
|
|
25
25
|
oPropertiesWithoutConflict = oTargetInfo.propertiesWithoutConflict;
|
|
26
26
|
const aSelectOptionPropertyNames = oPageSV.getSelectOptionsPropertyNames();
|
|
27
27
|
aSelectOptionPropertyNames.forEach(function (sPropertyName: any) {
|
|
@@ -5,6 +5,20 @@
|
|
|
5
5
|
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/SemanticKeyHelper", "sap/ui/core/routing/HashChanger", "sap/ui/model/Filter", "sap/ui/model/FilterOperator"], function (Log, ModelHelper, SemanticKeyHelper, HashChanger, Filter, FilterOperator) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
function _catch(body, recover) {
|
|
9
|
+
try {
|
|
10
|
+
var result = body();
|
|
11
|
+
} catch (e) {
|
|
12
|
+
return recover(e);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (result && result.then) {
|
|
16
|
+
return result.then(void 0, recover);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
|
|
8
22
|
var bGlobalIsStickySupported;
|
|
9
23
|
|
|
10
24
|
function createFilterToFetchActiveContext(mKeyValues, bIsActiveEntityDefined) {
|
|
@@ -276,38 +290,50 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/h
|
|
|
276
290
|
|
|
277
291
|
var ShareExtensionOverride = {
|
|
278
292
|
adaptShareMetadata: function (oShareMetadata) {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
293
|
+
try {
|
|
294
|
+
var _this2 = this;
|
|
295
|
+
|
|
296
|
+
var oContext = _this2.base.getView().getBindingContext();
|
|
297
|
+
|
|
298
|
+
var oUIModel = _this2.base.getView().getModel("ui");
|
|
299
|
+
|
|
300
|
+
var bIsEditable = oUIModel.getProperty("/isEditable");
|
|
301
|
+
|
|
302
|
+
var _temp2 = _catch(function () {
|
|
303
|
+
return Promise.resolve(fetchActiveContextPaths(oContext, _this2.base.getView().getController())).then(function (aActiveContextPaths) {
|
|
304
|
+
var oPageTitleInfo = _this2.base.getView().getController()._getPageTitleInformation();
|
|
305
|
+
|
|
306
|
+
return Promise.resolve(Promise.all([getJamUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareUrl(bIsEditable, bGlobalIsStickySupported, aActiveContextPaths), getShareEmailUrl()])).then(function (oData) {
|
|
307
|
+
var sTitle = oPageTitleInfo.title;
|
|
308
|
+
var sObjectSubtitle = oPageTitleInfo.subtitle ? oPageTitleInfo.subtitle.toString() : "";
|
|
309
|
+
|
|
310
|
+
if (sObjectSubtitle) {
|
|
311
|
+
sTitle = "".concat(sTitle, " - ").concat(sObjectSubtitle);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
oShareMetadata.tile = {
|
|
315
|
+
title: oPageTitleInfo.title,
|
|
316
|
+
subtitle: sObjectSubtitle
|
|
317
|
+
};
|
|
318
|
+
oShareMetadata.email.title = sTitle;
|
|
319
|
+
oShareMetadata.title = sTitle;
|
|
320
|
+
oShareMetadata.jam.url = oData[0];
|
|
321
|
+
oShareMetadata.url = oData[1];
|
|
322
|
+
oShareMetadata.email.url = oData[2];
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
}, function (error) {
|
|
306
326
|
Log.error(error);
|
|
307
327
|
});
|
|
308
|
-
|
|
328
|
+
|
|
329
|
+
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {
|
|
330
|
+
return oShareMetadata;
|
|
331
|
+
}) : oShareMetadata);
|
|
332
|
+
} catch (e) {
|
|
333
|
+
return Promise.reject(e);
|
|
334
|
+
}
|
|
309
335
|
}
|
|
310
336
|
};
|
|
311
337
|
return ShareExtensionOverride;
|
|
312
338
|
}, false);
|
|
313
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCIsImNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0IiwibUtleVZhbHVlcyIsImJJc0FjdGl2ZUVudGl0eURlZmluZWQiLCJhS2V5cyIsIk9iamVjdCIsImtleXMiLCJhRmlsdGVycyIsIm1hcCIsInNLZXkiLCJzVmFsdWUiLCJ1bmRlZmluZWQiLCJGaWx0ZXIiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwib0FjdGl2ZUZpbHRlciIsImZpbHRlcnMiLCJhbmQiLCJwdXNoIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGgiLCJvQ29udHJvbGxlciIsInNQYWdlRW50aXR5TmFtZSIsIm9GaWx0ZXIiLCJvTGlzdEJpbmRpbmciLCJnZXRWaWV3IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRNb2RlbCIsImJpbmRMaXN0IiwicmVxdWVzdENvbnRleHRzIiwidGhlbiIsIm9Db250ZXh0cyIsImxlbmd0aCIsImdldFBhdGgiLCJnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzIiwib0NvbnRleHQiLCJvRW50aXR5U2V0IiwiYUFjdGl2ZUNvbnRleHRwcm9taXNlcyIsImFQYWdlcyIsInNNZXRhUGF0aCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFQYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImFNZXRhUGF0aEFycmF5Iiwic3BsaXQiLCJzQ3VycmVudEhhc2hOb1BhcmFtcyIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwiYUN1cnJlbnRIYXNoQXJyYXkiLCJvUGFnZU1hcCIsImFQYWdlSGFzaEFycmF5IiwiZm9yRWFjaCIsInNQYWdlSGFzaCIsImFLZXlWYWx1ZXMiLCJzUGFnZUhhc2hOYW1lIiwiaSIsInNLZXlBc3NpZ25tZW50IiwiYVBhcnRzIiwic0tleVZhbHVlIiwib01ldGFNb2RlbCIsImFUZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0Iiwiam9pbiIsImxhc3RJbmRleE9mIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwib1BhZ2VFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblBhdGgiLCJvUGFnZUluZm8iLCJzUGFnZUVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsInBhZ2VFbnRpdHlOYW1lIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGhzIiwic1Jvb3RFbnRpdHlOYW1lIiwic3Vic3RyIiwib1BhZ2VDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsImFEYXRhIiwiYUFjdGl2ZUNvbnRleHRQYXRocyIsInNBY3RpdmVDb250ZXh0UGF0aCIsInNOYXZpZ2F0aW9Qcm9wZXJ0eSIsInNFbnRpdHlTZXROYW1lIiwidmFsdWVzIiwicmVwbGFjZSIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsInJlc29sdmUiLCJmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyIsIm9Qcm9taXNlIiwiYVNlbWFudGljS2V5cyIsIm9Nb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiU2VtYW50aWNLZXlIZWxwZXIiLCJnZXRTZW1hbnRpY0tleXMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsImdldFNoYXJlVXJsIiwiYklzRWRpdGFibGUiLCJiSXNTdGlja3lTdXBwb3J0ZWQiLCJzU2hhcmVVcmwiLCJzSGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZUV4dGVuc2lvbk92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJiYXNlIiwib1VJTW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldENvbnRyb2xsZXIiLCJvUGFnZVRpdGxlSW5mbyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIm9EYXRhIiwic1RpdGxlIiwidGl0bGUiLCJzT2JqZWN0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInRvU3RyaW5nIiwidGlsZSIsImVtYWlsIiwiamFtIiwidXJsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBT0EsTUFBSUEsd0JBQUo7O0FBRUEsV0FBU0MsZ0NBQVQsQ0FBMENDLFVBQTFDLEVBQTJEQyxzQkFBM0QsRUFBd0Y7QUFDdkYsUUFBTUMsS0FBSyxHQUFHQyxNQUFNLENBQUNDLElBQVAsQ0FBWUosVUFBWixDQUFkO0FBRUEsUUFBTUssUUFBUSxHQUFHSCxLQUFLLENBQUNJLEdBQU4sQ0FBVSxVQUFVQyxJQUFWLEVBQXdCO0FBQ2xELFVBQU1DLE1BQU0sR0FBR1IsVUFBVSxDQUFDTyxJQUFELENBQXpCOztBQUNBLFVBQUlDLE1BQU0sS0FBS0MsU0FBZixFQUEwQjtBQUN6QixlQUFPLElBQUlDLE1BQUosQ0FBV0gsSUFBWCxFQUFpQkksY0FBYyxDQUFDQyxFQUFoQyxFQUFvQ0osTUFBcEMsQ0FBUDtBQUNBO0FBQ0QsS0FMZ0IsQ0FBakI7O0FBT0EsUUFBSVAsc0JBQUosRUFBNEI7QUFDM0IsVUFBTVksYUFBYSxHQUFHLElBQUlILE1BQUosQ0FBVztBQUNoQ0ksUUFBQUEsT0FBTyxFQUFFLENBQUMsSUFBSUosTUFBSixDQUFXLDhCQUFYLEVBQTJDQyxjQUFjLENBQUNDLEVBQTFELEVBQThELElBQTlELENBQUQsQ0FEdUI7QUFFaENHLFFBQUFBLEdBQUcsRUFBRTtBQUYyQixPQUFYLENBQXRCO0FBS0FWLE1BQUFBLFFBQVEsQ0FBQ1csSUFBVCxDQUFjSCxhQUFkO0FBQ0E7O0FBRUQsV0FBTyxJ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LGVBQUosRUFBcUI7QUFDcEJGLFlBQUFBLE1BQU0sYUFBTUEsTUFBTixnQkFBa0JFLGVBQWxCLENBQU47QUFDQTs7QUFDRFYsVUFBQUEsY0FBYyxDQUFDYSxJQUFmLEdBQXNCO0FBQ3JCSixZQUFBQSxLQUFLLEVBQUVKLGNBQWMsQ0FBQ0ksS0FERDtBQUVyQkUsWUFBQUEsUUFBUSxFQUFFRDtBQUZXLFdBQXRCO0FBSUFWLFVBQUFBLGNBQWMsQ0FBQ2MsS0FBZixDQUFxQkwsS0FBckIsR0FBNkJELE1BQTdCO0FBQ0FSLFVBQUFBLGNBQWMsQ0FBQ1MsS0FBZixHQUF1QkQsTUFBdkI7QUFDQVIsVUFBQUEsY0FBYyxDQUFDZSxHQUFmLENBQW1CQyxHQUFuQixHQUF5QlQsS0FBSyxDQUFDLENBQUQsQ0FBOUI7QUFDQVAsVUFBQUEsY0FBYyxDQUFDZ0IsR0FBZixHQUFxQlQsS0FBSyxDQUFDLENBQUQsQ0FBMUI7QUFDQVAsVUFBQUEsY0FBYyxDQUFDYyxLQUFmLENBQXFCRSxHQUFyQixHQUEyQlQsS0FBSyxDQUFDLENBQUQsQ0FBaEM7QUFFQSxpQkFBT1AsY0FBUDtBQUNBLFNBdEJLLEVBdUJML0MsS0F2QkssQ0F1QkMsVUFBVWtDLEtBQVYsRUFBc0I7QUFDNUJoQyxVQUFBQSxHQUFHLENBQUNnQyxLQUFKLENBQVVBLEtBQVY7QUFDQSxTQXpCSyxDQUFQO0FBMEJBLE9BN0JNLENBQVA7QUE4QkE7QUFuQzZCLEdBQS9CO1NBc0NlVyxzQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IFNlbWFudGljS2V5SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1NlbWFudGljS2V5SGVscGVyXCI7XG5pbXBvcnQgdHlwZSBPYmplY3RQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL09iamVjdFBhZ2VDb250cm9sbGVyLmNvbnRyb2xsZXJcIjtcbmltcG9ydCBIYXNoQ2hhbmdlciBmcm9tIFwic2FwL3VpL2NvcmUvcm91dGluZy9IYXNoQ2hhbmdlclwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcblxubGV0IGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZDogYm9vbGVhbjtcblxuZnVuY3Rpb24gY3JlYXRlRmlsdGVyVG9GZXRjaEFjdGl2ZUNvbnRleHQobUtleVZhbHVlczogYW55LCBiSXNBY3RpdmVFbnRpdHlEZWZpbmVkOiBhbnkpIHtcblx0Y29uc3QgYUtleXMgPSBPYmplY3Qua2V5cyhtS2V5VmFsdWVzKTtcblxuXHRjb25zdCBhRmlsdGVycyA9IGFLZXlzLm1hcChmdW5jdGlvbiAoc0tleTogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgc1ZhbHVlID0gbUtleVZhbHVlc1tzS2V5XTtcblx0XHRpZiAoc1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBuZXcgRmlsdGVyKHNLZXksIEZpbHRlck9wZXJhdG9yLkVRLCBzVmFsdWUpO1xuXHRcdH1cblx0fSk7XG5cblx0aWYgKGJJc0FjdGl2ZUVudGl0eURlZmluZWQpIHtcblx0XHRjb25zdCBvQWN0aXZlRmlsdGVyID0gbmV3IEZpbHRlcih7XG5cdFx0XHRmaWx0ZXJzOiBbbmV3IEZpbHRlcihcIlNpYmxpbmdFbnRpdHkvSXNBY3RpdmVFbnRpdHlcIiwgRmlsdGVyT3BlcmF0b3IuRVEsIHRydWUpXSxcblx0XHRcdGFuZDogZmFsc2Vcblx0XHR9KTtcblxuXHRcdGFGaWx0ZXJzLnB1c2gob0FjdGl2ZUZpbHRlcik7XG5cdH1cblxuXHRyZXR1cm4gbmV3IEZpbHRlcihhRmlsdGVycyBhcyBhbnksIHRydWUpO1xufVxuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGgob0NvbnRyb2xsZXI6IGFueSwgc1BhZ2VFbnRpdHlOYW1lOiBhbnksIG9GaWx0ZXI6IGFueSkge1xuXHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvQ29udHJvbGxlclxuXHRcdC5nZXRWaWV3KClcblx0XHQuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdC5nZXRNb2RlbCgpXG5cdFx0LmJpbmRMaXN0KGAvJHtzUGFnZUVudGl0eU5hbWV9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9GaWx0ZXIsIHsgXCIkJGdyb3VwSWRcIjogXCIkYXV0by5IZXJvZXNcIiB9KTtcblx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMikudGhlbihmdW5jdGlvbiAob0NvbnRleHRzOiBhbnkpIHtcblx0XHRpZiAob0NvbnRleHRzICYmIG9Db250ZXh0cy5sZW5ndGgpIHtcblx0XHRcdHJldHVybiBvQ29udGV4dHNbMF0uZ2V0UGF0aCgpO1xuXHRcdH1cblx0fSk7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnksIG9FbnRpdHlTZXQ6IGFueSkge1xuXHRjb25zdCBhQWN0aXZlQ29udGV4dHByb21pc2VzOiBhbnlbXSA9IFtdO1xuXHRjb25zdCBhUGFnZXM6IGFueVtdID0gW107XG5cdGxldCBzTWV0YVBhdGggPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE1ldGFQYXRoKG9Db250ZXh0LmdldFBhdGgoKSk7XG5cdGlmIChzTWV0YVBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRzTWV0YVBhdGggPSBzTWV0YVBhdGguc3Vic3RyaW5nKDEpO1xuXHR9XG5cdGNvbnN0IGFNZXRhUGF0aEFycmF5ID0gc01ldGFQYXRoLnNwbGl0KFwiL1wiKTtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGNvbnN0IGFDdXJyZW50SGFzaEFycmF5ID0gc0N1cnJlbnRIYXNoTm9QYXJhbXMuc3BsaXQoXCIvXCIpO1xuXG5cdC8vIG9QYWdlTWFwIC0gY3JlYXRpbmcgYW4gb2JqZWN0IHRoYXQgY29udGFpbnMgbWFwIG9mIG1ldGFwYXRoIG5hbWUgYW5kIGl0J3MgdGVjaG5pY2FsIGRldGFpbHNcblx0Ly8gd2hpY2ggaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgZmlsdGVyIHRvIGZldGNoIHRoZSByZWxhdmFudC9jb3JyZWN0IGFjdGl2ZSBjb250ZXh0XG5cdC8vIEV4YW1wbGU6IHtTYWxlc09yZGVyTWFuYWdlOnt0ZWNobmljYWxJRDp0ZWNobmljYWxJRFZhbHVlfSwgX0l0ZW06e3RlY2huaWNhbElEOnRlY2huaWNhbElEVmFsdWV9fSBldGMuLFxuXHRjb25zdCBvUGFnZU1hcDogYW55ID0ge307XG5cdGNvbnN0IGFQYWdlSGFzaEFycmF5OiBhbnlbXSA9IFtdO1xuXHRhQ3VycmVudEhhc2hBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzUGFnZUhhc2g6IGFueSkge1xuXHRcdGNvbnN0IGFLZXlWYWx1ZXMgPSBzUGFnZUhhc2guc3Vic3RyaW5nKHNQYWdlSGFzaC5pbmRleE9mKFwiKFwiKSArIDEsIHNQYWdlSGFzaC5sZW5ndGggLSAxKS5zcGxpdChcIixcIik7XG5cdFx0Y29uc3QgbUtleVZhbHVlczogYW55ID0ge307XG5cdFx0Y29uc3Qgc1BhZ2VIYXNoTmFtZSA9IHNQYWdlSGFzaC5zcGxpdChcIihcIilbMF07XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV0gPSB7fTtcblx0XHRhUGFnZUhhc2hBcnJheS5wdXNoKHNQYWdlSGFzaE5hbWUpO1xuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdW1wiYklzQWN0aXZlRW50aXR5RGVmaW5lZFwiXSA9IHRydWU7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhS2V5VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBzS2V5QXNzaWdubWVudCA9IGFLZXlWYWx1ZXNbaV07XG5cdFx0XHRjb25zdCBhUGFydHMgPSBzS2V5QXNzaWdubWVudC5zcGxpdChcIj1cIik7XG5cdFx0XHRsZXQgc0tleVZhbHVlID0gYVBhcnRzWzFdO1xuXHRcdFx0bGV0IHNLZXkgPSBhUGFydHNbMF07XG5cdFx0XHQvLyBJbiBjYXNlIGlmIG9ubHkgb25lIHRlY2huaWNhbCBrZXkgaXMgZGVmaW5lZCB0aGVuIHRoZSB1cmwganVzdCBjb250YWlucyB0aGUgdGVjaG5pY2FsSURWYWx1ZSBidXQgbm90IHRoZSB0ZWNobmljYWxJRFxuXHRcdFx0Ly8gRXhhbXBsZTogU2FsZXNPcmRlck1hbmFnZShJRD0xMTExMTEyOS1hYWFhLWJiYmItY2NjYy1kZGRkZWVlZWZmZmYsSXNBY3RpdmVFbnRpdHk9ZmFsc2UpL19JdGVtKDExMTExMTI5LWFhYWEtYmJiYi1jY2NjLWRkZGRlZWVlZmZmZilcblx0XHRcdC8vIEluIGFib3ZlIGV4YW1wbGUgU2FsZXNPcmRlckl0ZW0gaGFzIG9ubHkgb25lIHRlY2huaWNhbCBrZXkgZGVmaW5lZCwgaGVuY2UgdGVjaG5pY2FsSUQgaW5mbyBpcyBub3QgcHJlc2VudCBpbiB0aGUgdXJsXG5cdFx0XHQvLyBIZW5jZSBpbiBzdWNoIGNhc2VzIHdlIGdldCB0ZWNobmljYWwga2V5IGFuZCB1c2UgdGhlbSB0byBmZXRjaCBhY3RpdmUgY29udGV4dFxuXHRcdFx0aWYgKHNLZXlBc3NpZ25tZW50LmluZGV4T2YoXCI9XCIpID09PSAtMSkge1xuXHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0Y29uc3QgYVRlY2huaWNhbEtleXMgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7YVBhZ2VIYXNoQXJyYXkuam9pbihcIi9cIil9LyRUeXBlLyRLZXlgKTtcblx0XHRcdFx0c0tleVZhbHVlID0gYVBhcnRzWzBdO1xuXHRcdFx0XHRzS2V5ID0gYVRlY2huaWNhbEtleXNbMF07XG5cdFx0XHRcdG9QYWdlTWFwW3NQYWdlSGFzaC5zcGxpdChcIihcIilbMF1dW1wiYklzQWN0aXZlRW50aXR5RGVmaW5lZFwiXSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoc0tleSAhPT0gXCJJc0FjdGl2ZUVudGl0eVwiKSB7XG5cdFx0XHRcdGlmIChzS2V5VmFsdWUuaW5kZXhPZihcIidcIikgPT09IDAgJiYgc0tleVZhbHVlLmxhc3RJbmRleE9mKFwiJ1wiKSA9PT0gc0tleVZhbHVlLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgdGhlIHF1b3RlcyBmcm9tIHRoZSB2YWx1ZSBhbmQgZGVjb2RlIHNwZWNpYWwgY2hhcnNcblx0XHRcdFx0XHRzS2V5VmFsdWUgPSBkZWNvZGVVUklDb21wb25lbnQoc0tleVZhbHVlLnN1YnN0cmluZygxLCBzS2V5VmFsdWUubGVuZ3RoIC0gMSkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG1LZXlWYWx1ZXNbc0tleV0gPSBzS2V5VmFsdWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdG9QYWdlTWFwW3NQYWdlSGFzaE5hbWVdLm1LZXlWYWx1ZXMgPSBtS2V5VmFsdWVzO1xuXHR9KTtcblxuXHRsZXQgb1BhZ2VFbnRpdHlTZXQgPSBvRW50aXR5U2V0O1xuXHRhTWV0YVBhdGhBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzTmF2aWdhdGlvblBhdGg6IGFueSkge1xuXHRcdGNvbnN0IG9QYWdlSW5mbzogYW55ID0ge307XG5cdFx0Y29uc3Qgc1BhZ2VFbnRpdHlTZXROYW1lID0gb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgJiYgb1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbc05hdmlnYXRpb25QYXRoXTtcblx0XHRpZiAoc1BhZ2VFbnRpdHlTZXROYW1lKSB7XG5cdFx0XHRvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUgPSBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tzTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0b1BhZ2VFbnRpdHlTZXQgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChgLyR7c1BhZ2VFbnRpdHlTZXROYW1lfWApIHx8IG9FbnRpdHlTZXQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSA9IHNOYXZpZ2F0aW9uUGF0aDtcblx0XHR9XG5cdFx0b1BhZ2VJbmZvLm1LZXlWYWx1ZXMgPSBvUGFnZU1hcFtzTmF2aWdhdGlvblBhdGhdLm1LZXlWYWx1ZXM7XG5cdFx0b1BhZ2VJbmZvLmJJc0FjdGl2ZUVudGl0eURlZmluZWQgPSBvUGFnZU1hcFtzTmF2aWdhdGlvblBhdGhdLmJJc0FjdGl2ZUVudGl0eURlZmluZWQ7XG5cdFx0YVBhZ2VzLnB1c2gob1BhZ2VJbmZvKTtcblx0fSk7XG5cblx0YVBhZ2VzLmZvckVhY2goZnVuY3Rpb24gKG9QYWdlSW5mbzogYW55KSB7XG5cdFx0Y29uc3Qgb0ZpbHRlciA9IGNyZWF0ZUZpbHRlclRvRmV0Y2hBY3RpdmVDb250ZXh0KG9QYWdlSW5mby5tS2V5VmFsdWVzLCBvUGFnZUluZm8uYklzQWN0aXZlRW50aXR5RGVmaW5lZCk7XG5cdFx0YUFjdGl2ZUNvbnRleHRwcm9taXNlcy5wdXNoKGdldEFjdGl2ZUNvbnRleHRQYXRoKG9Db250cm9sbGVyLCBvUGFnZUluZm8ucGFnZUVudGl0eU5hbWUsIG9GaWx0ZXIpKTtcblx0fSk7XG5cblx0cmV0dXJuIGFBY3RpdmVDb250ZXh0cHJvbWlzZXM7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGZldGNoIGFjdGl2ZSBjb250ZXh0IHBhdGgncy5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIFBhZ2UgQ29udGV4dFxuICogQHBhcmFtIG9Db250cm9sbGVyXG4gKiBAcmV0dXJucyBQcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIG9uY2UgdGhlIGFjdGl2ZSBjb250ZXh0J3MgYXJlIGZldGNoZWRcbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0OiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRpZiAoc1Jvb3RFbnRpdHlOYW1lLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0c1Jvb3RFbnRpdHlOYW1lID0gc1Jvb3RFbnRpdHlOYW1lLnN1YnN0cmluZygxKTtcblx0fVxuXHRjb25zdCBvRW50aXR5U2V0ID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKS5nZXRPYmplY3QoYC8ke3NSb290RW50aXR5TmFtZX1gKTtcblx0Y29uc3Qgb1BhZ2VDb250ZXh0ID0gb0NvbnRleHQ7XG5cdGNvbnN0IGFBY3RpdmVDb250ZXh0cHJvbWlzZXMgPSBnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzKG9Db250ZXh0LCBvQ29udHJvbGxlciwgb0VudGl0eVNldCk7XG5cdGlmIChhQWN0aXZlQ29udGV4dHByb21pc2VzLmxlbmd0aCA+IDApIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYUFjdGl2ZUNvbnRleHRwcm9taXNlcylcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChhRGF0YTogYW55W10pIHtcblx0XHRcdFx0Y29uc3QgYUFjdGl2ZUNvbnRleHRQYXRocyA9IFtdO1xuXHRcdFx0XHRsZXQgb1BhZ2VFbnRpdHlTZXQgPSBvRW50aXR5U2V0O1xuXHRcdFx0XHRpZiAoYURhdGFbMF0uaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goYURhdGFbMF0uc3Vic3RyaW5nKDEpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goYURhdGFbMF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEluIHRoZSBhY3RpdmUgY29udGV4dCBwYXRocyBpZGVudGlmeSBhbmQgcmVwbGFjZSB0aGUgZW50aXR5U2V0IE5hbWUgd2l0aCBjb3JyZXNwb25kaW5nIG5hdmlnYXRpb24gcHJvcGVydHkgbmFtZVxuXHRcdFx0XHQvLyBSZXF1aXJlZCB0byBmb3JtIHRoZSB1cmwgcG9pbnRpbmcgdG8gYWN0aXZlIGNvbnRleHRcblx0XHRcdFx0Ly8gRXhhbXBsZSA6IFNhbGVzT3JkZXJJdGVtIC0tPiBfSXRlbSwgTWF0ZXJpYWxEZXRhaWxzIC0tPiBfTWF0ZXJpYWxEZXRhaWxzIGV0Yy4sXG5cdFx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgYURhdGEubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRsZXQgc0FjdGl2ZUNvbnRleHRQYXRoID0gYURhdGFbaV07XG5cdFx0XHRcdFx0bGV0IHNOYXZpZ2F0aW9Qcm9wZXJ0eSA9IFwiXCI7XG5cdFx0XHRcdFx0bGV0IHNFbnRpdHlTZXROYW1lID0gc0FjdGl2ZUNvbnRleHRQYXRoICYmIHNBY3RpdmVDb250ZXh0UGF0aC5zdWJzdHIoMCwgc0FjdGl2ZUNvbnRleHRQYXRoLmluZGV4T2YoXCIoXCIpKTtcblx0XHRcdFx0XHRpZiAoc0VudGl0eVNldE5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRcdHNFbnRpdHlTZXROYW1lID0gc0VudGl0eVNldE5hbWUuc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoc0FjdGl2ZUNvbnRleHRQYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRcdFx0XHRzQWN0aXZlQ29udGV4dFBhdGggPSBzQWN0aXZlQ29udGV4dFBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzTmF2aWdhdGlvUHJvcGVydHkgPSBPYmplY3Qua2V5cyhvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZylbXG5cdFx0XHRcdFx0XHRPYmplY3QudmFsdWVzKG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKS5pbmRleE9mKHNFbnRpdHlTZXROYW1lKVxuXHRcdFx0XHRcdF07XG5cdFx0XHRcdFx0aWYgKHNOYXZpZ2F0aW9Qcm9wZXJ0eSkge1xuXHRcdFx0XHRcdFx0YUFjdGl2ZUNvbnRleHRQYXRocy5wdXNoKHNBY3RpdmVDb250ZXh0UGF0aC5yZXBsYWNlKHNFbnRpdHlTZXROYW1lLCBzTmF2aWdhdGlvUHJvcGVydHkpKTtcblx0XHRcdFx0XHRcdG9QYWdlRW50aXR5U2V0ID0gb1BhZ2VDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0T2JqZWN0KGAvJHtzRW50aXR5U2V0TmFtZX1gKSB8fCBvRW50aXR5U2V0O1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goc0FjdGl2ZUNvbnRleHRQYXRoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGFBY3RpdmVDb250ZXh0UGF0aHM7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuaW5mbyhcIkZhaWxlZCB0byByZXRyaWV2ZSBvbmUgb3IgbW9yZSBhY3RpdmUgY29udGV4dCBwYXRoJ3NcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxufVxuZnVuY3Rpb24gZmV0Y2hBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRsZXQgb1Byb21pc2UsIGFTZW1hbnRpY0tleXM7XG5cdGNvbnN0IHNDdXJyZW50SGFzaE5vUGFyYW1zID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCkuc3BsaXQoXCI/XCIpWzBdO1xuXHRpZiAob0NvbnRleHQpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Ykdsb2JhbElzU3RpY2t5U3VwcG9ydGVkID0gTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKG9NZXRhTW9kZWwpO1xuXHRcdGxldCBzUm9vdEVudGl0eU5hbWUgPSBzQ3VycmVudEhhc2hOb1BhcmFtcyAmJiBzQ3VycmVudEhhc2hOb1BhcmFtcy5zdWJzdHIoMCwgc0N1cnJlbnRIYXNoTm9QYXJhbXMuaW5kZXhPZihcIihcIikpO1xuXHRcdGlmIChzUm9vdEVudGl0eU5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdHNSb290RW50aXR5TmFtZSA9IHNSb290RW50aXR5TmFtZS5zdWJzdHJpbmcoMSk7XG5cdFx0fVxuXHRcdGFTZW1hbnRpY0tleXMgPSBTZW1hbnRpY0tleUhlbHBlci5nZXRTZW1hbnRpY0tleXMob01ldGFNb2RlbCwgc1Jvb3RFbnRpdHlOYW1lKTtcblx0fVxuXHQvLyBGZXRjaCBhY3RpdmUgY29udGV4dCBkZXRhaWxzIGluY2FzZSBvZiBiZWxvdyBzY2VuYXJpbydzKHdoZXJlIHBhZ2UgaXMgbm90IHN0aWNreSBzdXBwb3J0ZWQod2UgZG8gbm90IGhhdmUgZHJhZnQgaW5zdGFuY2UpKVxuXHQvLyAxLiBJbiBjYXNlIG9mIGRyYWZ0IGVuYWJsZWQgT2JqZWN0IHBhZ2Ugd2hlcmUgc2VtYW50aWMga2V5IGJhc2VkIFVSTCBpcyBub3QgcG9zc2libGUobGlrZSBzZW1hbnRpYyBrZXlzIGFyZSBub3QgbW9kZWxlZCBpbiB0aGUgZW50aXR5IHNldClcblx0Ly8gMi4gSW4gY2FzZSBvZiBkcmFmdCBlbmFibGVkIFN1YiBPYmplY3QgUGFnZXMgKHdoZXJlIHNlbWFudGljIGJvb2ttYXJraW5nIGlzIG5vdCBzdXBwb3J0ZWQpXG5cdGNvbnN0IG9WaWV3RGF0YSA9IG9Db250cm9sbGVyLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpO1xuXHRpZiAob0NvbnRleHQgJiYgIWJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCAmJiAoKG9WaWV3RGF0YS52aWV3TGV2ZWwgPT09IDEgJiYgIWFTZW1hbnRpY0tleXMpIHx8IG9WaWV3RGF0YS52aWV3TGV2ZWwgPj0gMikpIHtcblx0XHRvUHJvbWlzZSA9IGdldEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dCwgb0NvbnRyb2xsZXIpO1xuXHRcdHJldHVybiBvUHJvbWlzZTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cbn1cblxuLy8gLyoqXG4vLyAgKiBHZXQgc2hhcmUgVVJMLlxuLy8gICogQHBhcmFtIGJJc0VkaXRhYmxlXG4vLyAgKiBAcGFyYW0gYklzU3RpY2t5U3VwcG9ydGVkXG4vLyAgKiBAcGFyYW0gYUFjdGl2ZUNvbnRleHRQYXRoc1xuLy8gICogQHJldHVybnMge3N0cmluZ30gVGhlIHNoYXJlIFVSTFxuLy8gICogQHByb3RlY3RlZFxuLy8gICogQHN0YXRpY1xuLy8gICovXG5mdW5jdGlvbiBnZXRTaGFyZVVybChiSXNFZGl0YWJsZTogYW55LCBiSXNTdGlja3lTdXBwb3J0ZWQ6IGFueSwgYUFjdGl2ZUNvbnRleHRQYXRoczogYW55KSB7XG5cdGxldCBzU2hhcmVVcmw7XG5cdGNvbnN0IHNIYXNoID0gSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKS5nZXRIYXNoKCk7XG5cdGNvbnN0IHNCYXNlUGF0aCA9IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaFxuXHRcdD8gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoKFwiXCIpXG5cdFx0OiBcIlwiO1xuXHRpZiAoYklzRWRpdGFibGUgJiYgIWJJc1N0aWNreVN1cHBvcnRlZCAmJiBhQWN0aXZlQ29udGV4dFBhdGhzKSB7XG5cdFx0c1NoYXJlVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzU2hhcmVVcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdH1cblx0cmV0dXJuIHNTaGFyZVVybDtcbn1cbmZ1bmN0aW9uIGdldFNoYXJlRW1haWxVcmwoKSB7XG5cdGNvbnN0IG9VU2hlbGxDb250YWluZXIgPSBzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyO1xuXHRpZiAob1VTaGVsbENvbnRhaW5lcikge1xuXHRcdHJldHVybiBvVVNoZWxsQ29udGFpbmVyXG5cdFx0XHQuZ2V0RkxQVXJsQXN5bmModHJ1ZSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChzRkxQVXJsOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIHNGTFBVcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoZG9jdW1lbnQuVVJMKTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRKYW1VcmwoYklzRWRpdE1vZGU6IGJvb2xlYW4sIGJJc1N0aWNreVN1cHBvcnRlZDogYW55LCBhQWN0aXZlQ29udGV4dFBhdGhzOiBhbnkpIHtcblx0bGV0IHNKYW1Vcmw6IHN0cmluZztcblx0Y29uc3Qgc0hhc2ggPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKTtcblx0Y29uc3Qgc0Jhc2VQYXRoID0gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoXG5cdFx0PyAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIilcblx0XHQ6IFwiXCI7XG5cdGlmIChiSXNFZGl0TW9kZSAmJiAhYklzU3RpY2t5U3VwcG9ydGVkICYmIGFBY3RpdmVDb250ZXh0UGF0aHMpIHtcblx0XHRzSmFtVXJsID0gc0Jhc2VQYXRoICsgYUFjdGl2ZUNvbnRleHRQYXRocy5qb2luKFwiL1wiKTtcblx0fSBlbHNlIHtcblx0XHRzSmFtVXJsID0gc0hhc2ggPyBzQmFzZVBhdGggKyBzSGFzaCA6IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHR9XG5cdC8vIGluIGNhc2Ugd2UgYXJlIGluIGNGTFAgc2NlbmFyaW8sIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nXG5cdC8vIGluc2lkZSBhbiBpZnJhbWUsIGFuZCB0aGVyZSBmb3Igd2UgbmVlZCB0byBnZXQgdGhlIGNGTFAgVVJMXG5cdC8vIGFuZCBub3QgJ2RvY3VtZW50LlVSTCcgdGhhdCByZXByZXNlbnRzIHRoZSBpZnJhbWUgVVJMXG5cdGlmIChzYXAudXNoZWxsICYmIHNhcC51c2hlbGwuQ29udGFpbmVyICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSAmJiBzYXAudXNoZWxsLkNvbnRhaW5lci5ydW5uaW5nSW5JZnJhbWUoKSkge1xuXHRcdHNhcC51c2hlbGwuQ29udGFpbmVyLmdldEZMUFVybCh0cnVlKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNVcmw6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gc1VybC5zdWJzdHIoMCwgc1VybC5pbmRleE9mKFwiI1wiKSkgKyBzSmFtVXJsO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoc0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiQ291bGQgbm90IHJldHJpZXZlIGNGTFAgVVJMIGZvciB0aGUgc2hhcmluZyBkaWFsb2cgKGRpYWxvZyB3aWxsIG5vdCBiZSBvcGVuZWQpXCIsIHNFcnJvcik7XG5cdFx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBzSmFtVXJsKTtcblx0fVxufVxuXG5jb25zdCBTaGFyZUV4dGVuc2lvbk92ZXJyaWRlID0ge1xuXHRhZGFwdFNoYXJlTWV0YWRhdGE6IGZ1bmN0aW9uICh0aGlzOiBTaGFyZSwgb1NoYXJlTWV0YWRhdGE6IGFueSkge1xuXHRcdGNvbnN0IG9Db250ZXh0ID0gdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpLFxuXHRcdFx0b1VJTW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwidWlcIiksXG5cdFx0XHRiSXNFZGl0YWJsZSA9IG9VSU1vZGVsLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVcIik7XG5cdFx0cmV0dXJuIGZldGNoQWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0LCB0aGlzLmJhc2UuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSkudGhlbigoYUFjdGl2ZUNvbnRleHRQYXRocykgPT4ge1xuXHRcdFx0Y29uc3Qgb1BhZ2VUaXRsZUluZm8gPSAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRnZXRKYW1VcmwoYklzRWRpdGFibGUsIGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCwgYUFjdGl2ZUNvbnRleHRQYXRocyksXG5cdFx0XHRcdGdldFNoYXJlVXJsKGJJc0VkaXRhYmxlLCBiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQsIGFBY3RpdmVDb250ZXh0UGF0aHMpLFxuXHRcdFx0XHRnZXRTaGFyZUVtYWlsVXJsKClcblx0XHRcdF0pXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvRGF0YSkge1xuXHRcdFx0XHRcdGxldCBzVGl0bGUgPSBvUGFnZVRpdGxlSW5mby50aXRsZTtcblx0XHRcdFx0XHRjb25zdCBzT2JqZWN0U3VidGl0bGUgPSBvUGFnZVRpdGxlSW5mby5zdWJ0aXRsZSA/IG9QYWdlVGl0bGVJbmZvLnN1YnRpdGxlLnRvU3RyaW5nKCkgOiBcIlwiO1xuXHRcdFx0XHRcdGlmIChzT2JqZWN0U3VidGl0bGUpIHtcblx0XHRcdFx0XHRcdHNUaXRsZSA9IGAke3NUaXRsZX0gLSAke3NPYmplY3RTdWJ0aXRsZX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvU2hhcmVNZXRhZGF0YS50aWxlID0ge1xuXHRcdFx0XHRcdFx0dGl0bGU6IG9QYWdlVGl0bGVJbmZvLnRpdGxlLFxuXHRcdFx0XHRcdFx0c3VidGl0bGU6IHNPYmplY3RTdWJ0aXRsZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRcdFx0b1NoYXJlTWV0YWRhdGEuamFtLnVybCA9IG9EYXRhWzBdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLnVybCA9IG9EYXRhWzFdO1xuXHRcdFx0XHRcdG9TaGFyZU1ldGFkYXRhLmVtYWlsLnVybCA9IG9EYXRhWzJdO1xuXG5cdFx0XHRcdFx0cmV0dXJuIG9TaGFyZU1ldGFkYXRhO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhcmVFeHRlbnNpb25PdmVycmlkZTtcbiJdfQ==
|
|
339
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNoYXJlLnRzIl0sIm5hbWVzIjpbImJvZHkiLCJyZWNvdmVyIiwicmVzdWx0IiwiZSIsInRoZW4iLCJiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQiLCJjcmVhdGVGaWx0ZXJUb0ZldGNoQWN0aXZlQ29udGV4dCIsIm1LZXlWYWx1ZXMiLCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkIiwiYUtleXMiLCJPYmplY3QiLCJrZXlzIiwiYUZpbHRlcnMiLCJtYXAiLCJzS2V5Iiwic1ZhbHVlIiwidW5kZWZpbmVkIiwiRmlsdGVyIiwiRmlsdGVyT3BlcmF0b3IiLCJFUSIsIm9BY3RpdmVGaWx0ZXIiLCJmaWx0ZXJzIiwiYW5kIiwicHVzaCIsImdldEFjdGl2ZUNvbnRleHRQYXRoIiwib0NvbnRyb2xsZXIiLCJzUGFnZUVudGl0eU5hbWUiLCJvRmlsdGVyIiwib0xpc3RCaW5kaW5nIiwiZ2V0VmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0TW9kZWwiLCJiaW5kTGlzdCIsInJlcXVlc3RDb250ZXh0cyIsIm9Db250ZXh0cyIsImxlbmd0aCIsImdldFBhdGgiLCJnZXRBY3RpdmVDb250ZXh0SW5zdGFuY2VzIiwib0NvbnRleHQiLCJvRW50aXR5U2V0IiwiYUFjdGl2ZUNvbnRleHRwcm9taXNlcyIsImFQYWdlcyIsInNNZXRhUGF0aCIsImdldE1ldGFNb2RlbCIsImdldE1ldGFQYXRoIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImFNZXRhUGF0aEFycmF5Iiwic3BsaXQiLCJzQ3VycmVudEhhc2hOb1BhcmFtcyIsIkhhc2hDaGFuZ2VyIiwiZ2V0SW5zdGFuY2UiLCJnZXRIYXNoIiwiYUN1cnJlbnRIYXNoQXJyYXkiLCJvUGFnZU1hcCIsImFQYWdlSGFzaEFycmF5IiwiZm9yRWFjaCIsInNQYWdlSGFzaCIsImFLZXlWYWx1ZXMiLCJzUGFnZUhhc2hOYW1lIiwiaSIsInNLZXlBc3NpZ25tZW50IiwiYVBhcnRzIiwic0tleVZhbHVlIiwib01ldGFNb2RlbCIsImFUZWNobmljYWxLZXlzIiwiZ2V0T2JqZWN0Iiwiam9pbiIsImxhc3RJbmRleE9mIiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwib1BhZ2VFbnRpdHlTZXQiLCJzTmF2aWdhdGlvblBhdGgiLCJvUGFnZUluZm8iLCJzUGFnZUVudGl0eVNldE5hbWUiLCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyIsInBhZ2VFbnRpdHlOYW1lIiwiZ2V0QWN0aXZlQ29udGV4dFBhdGhzIiwic1Jvb3RFbnRpdHlOYW1lIiwic3Vic3RyIiwib1BhZ2VDb250ZXh0IiwiUHJvbWlzZSIsImFsbCIsImFEYXRhIiwiYUFjdGl2ZUNvbnRleHRQYXRocyIsInNBY3RpdmVDb250ZXh0UGF0aCIsInNOYXZpZ2F0aW9Qcm9wZXJ0eSIsInNFbnRpdHlTZXROYW1lIiwidmFsdWVzIiwicmVwbGFjZSIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwiaW5mbyIsInJlc29sdmUiLCJmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyIsIm9Qcm9taXNlIiwiYVNlbWFudGljS2V5cyIsIm9Nb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiU2VtYW50aWNLZXlIZWxwZXIiLCJnZXRTZW1hbnRpY0tleXMiLCJvVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInZpZXdMZXZlbCIsImdldFNoYXJlVXJsIiwiYklzRWRpdGFibGUiLCJiSXNTdGlja3lTdXBwb3J0ZWQiLCJzU2hhcmVVcmwiLCJzSGFzaCIsInNCYXNlUGF0aCIsImhyZWZGb3JBcHBTcGVjaWZpY0hhc2giLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhhc2giLCJnZXRTaGFyZUVtYWlsVXJsIiwib1VTaGVsbENvbnRhaW5lciIsInNhcCIsInVzaGVsbCIsIkNvbnRhaW5lciIsImdldEZMUFVybEFzeW5jIiwic0ZMUFVybCIsInNFcnJvciIsImVycm9yIiwiZG9jdW1lbnQiLCJVUkwiLCJnZXRKYW1VcmwiLCJiSXNFZGl0TW9kZSIsInNKYW1VcmwiLCJydW5uaW5nSW5JZnJhbWUiLCJnZXRGTFBVcmwiLCJzVXJsIiwib3JpZ2luIiwicGF0aG5hbWUiLCJTaGFyZUV4dGVuc2lvbk92ZXJyaWRlIiwiYWRhcHRTaGFyZU1ldGFkYXRhIiwib1NoYXJlTWV0YWRhdGEiLCJiYXNlIiwib1VJTW9kZWwiLCJnZXRQcm9wZXJ0eSIsImdldENvbnRyb2xsZXIiLCJvUGFnZVRpdGxlSW5mbyIsIl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbiIsIm9EYXRhIiwic1RpdGxlIiwidGl0bGUiLCJzT2JqZWN0U3VidGl0bGUiLCJzdWJ0aXRsZSIsInRvU3RyaW5nIiwidGlsZSIsImVtYWlsIiwiamFtIiwidXJsIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBZ2pCTyxrQkFBZ0JBLElBQWhCLEVBQXNCQyxPQUF0QixFQUErQjtBQUNyQyxRQUFJO0FBQ0gsVUFBSUMsTUFBTSxHQUFHRixJQUFJLEVBQWpCO0FBQ0EsS0FGRCxDQUVFLE9BQU1HLENBQU4sRUFBUztBQUNWLGFBQU9GLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFkO0FBQ0E7O0FBQ0QsUUFBSUQsTUFBTSxJQUFJQSxNQUFNLENBQUNFLElBQXJCLEVBQTJCO0FBQzFCLGFBQU9GLE1BQU0sQ0FBQ0UsSUFBUCxDQUFZLEtBQUssQ0FBakIsRUFBb0JILE9BQXBCLENBQVA7QUFDQTs7QUFDRCxXQUFPQyxNQUFQO0FBQ0E7O0FBbmpCRCxNQUFJRyx3QkFBSjs7QUFFQSxXQUFTQyxnQ0FBVCxDQUEwQ0MsVUFBMUMsRUFBMkRDLHNCQUEzRCxFQUF3RjtBQUN2RixRQUFNQyxLQUFLLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZSixVQUFaLENBQWQ7QUFFQSxRQUFNSyxRQUFRLEdBQUdILEtBQUssQ0FBQ0ksR0FBTixDQUFVLFVBQVVDLElBQVYsRUFBd0I7QUFDbEQsVUFBTUMsTUFBTSxHQUFHUixVQUFVLENBQUNPLElBQUQsQ0FBekI7O0FBQ0EsVUFBSUMsTUFBTSxLQUFLQyxTQUFmLEVBQTBCO0FBQ3pCLGVBQU8sSUFBSUMsTUFBSixDQUFXSCxJQUFY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QUFPYSxjQUFQO0FBaENxRSxhQWdDOURBLGNBaEM4RDtBQWlDckUsT0FqQ2lCO0FBQUE7QUFBQTtBQUFBO0FBRFksR0FBL0I7U0FxQ2VGLHNCIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIFNoYXJlIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaGFyZVwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgU2VtYW50aWNLZXlIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU2VtYW50aWNLZXlIZWxwZXJcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL09iamVjdFBhZ2UvT2JqZWN0UGFnZUNvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IEhhc2hDaGFuZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9yb3V0aW5nL0hhc2hDaGFuZ2VyXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuXG5sZXQgYkdsb2JhbElzU3RpY2t5U3VwcG9ydGVkOiBib29sZWFuO1xuXG5mdW5jdGlvbiBjcmVhdGVGaWx0ZXJUb0ZldGNoQWN0aXZlQ29udGV4dChtS2V5VmFsdWVzOiBhbnksIGJJc0FjdGl2ZUVudGl0eURlZmluZWQ6IGFueSkge1xuXHRjb25zdCBhS2V5cyA9IE9iamVjdC5rZXlzKG1LZXlWYWx1ZXMpO1xuXG5cdGNvbnN0IGFGaWx0ZXJzID0gYUtleXMubWFwKGZ1bmN0aW9uIChzS2V5OiBzdHJpbmcpIHtcblx0XHRjb25zdCBzVmFsdWUgPSBtS2V5VmFsdWVzW3NLZXldO1xuXHRcdGlmIChzVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIG5ldyBGaWx0ZXIoc0tleSwgRmlsdGVyT3BlcmF0b3IuRVEsIHNWYWx1ZSk7XG5cdFx0fVxuXHR9KTtcblxuXHRpZiAoYklzQWN0aXZlRW50aXR5RGVmaW5lZCkge1xuXHRcdGNvbnN0IG9BY3RpdmVGaWx0ZXIgPSBuZXcgRmlsdGVyKHtcblx0XHRcdGZpbHRlcnM6IFtuZXcgRmlsdGVyKFwiU2libGluZ0VudGl0eS9Jc0FjdGl2ZUVudGl0eVwiLCBGaWx0ZXJPcGVyYXRvci5FUSwgdHJ1ZSldLFxuXHRcdFx0YW5kOiBmYWxzZVxuXHRcdH0pO1xuXG5cdFx0YUZpbHRlcnMucHVzaChvQWN0aXZlRmlsdGVyKTtcblx0fVxuXG5cdHJldHVybiBuZXcgRmlsdGVyKGFGaWx0ZXJzIGFzIGFueSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0UGF0aChvQ29udHJvbGxlcjogYW55LCBzUGFnZUVudGl0eU5hbWU6IGFueSwgb0ZpbHRlcjogYW55KSB7XG5cdGNvbnN0IG9MaXN0QmluZGluZyA9IG9Db250cm9sbGVyXG5cdFx0LmdldFZpZXcoKVxuXHRcdC5nZXRCaW5kaW5nQ29udGV4dCgpXG5cdFx0LmdldE1vZGVsKClcblx0XHQuYmluZExpc3QoYC8ke3NQYWdlRW50aXR5TmFtZX1gLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb0ZpbHRlciwgeyBcIiQkZ3JvdXBJZFwiOiBcIiRhdXRvLkhlcm9lc1wiIH0pO1xuXHRyZXR1cm4gb0xpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCAyKS50aGVuKGZ1bmN0aW9uIChvQ29udGV4dHM6IGFueSkge1xuXHRcdGlmIChvQ29udGV4dHMgJiYgb0NvbnRleHRzLmxlbmd0aCkge1xuXHRcdFx0cmV0dXJuIG9Db250ZXh0c1swXS5nZXRQYXRoKCk7XG5cdFx0fVxuXHR9KTtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZUNvbnRleHRJbnN0YW5jZXMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSwgb0VudGl0eVNldDogYW55KSB7XG5cdGNvbnN0IGFBY3RpdmVDb250ZXh0cHJvbWlzZXM6IGFueVtdID0gW107XG5cdGNvbnN0IGFQYWdlczogYW55W10gPSBbXTtcblx0bGV0IHNNZXRhUGF0aCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0TWV0YVBhdGgob0NvbnRleHQuZ2V0UGF0aCgpKTtcblx0aWYgKHNNZXRhUGF0aC5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdHNNZXRhUGF0aCA9IHNNZXRhUGF0aC5zdWJzdHJpbmcoMSk7XG5cdH1cblx0Y29uc3QgYU1ldGFQYXRoQXJyYXkgPSBzTWV0YVBhdGguc3BsaXQoXCIvXCIpO1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0Y29uc3QgYUN1cnJlbnRIYXNoQXJyYXkgPSBzQ3VycmVudEhhc2hOb1BhcmFtcy5zcGxpdChcIi9cIik7XG5cblx0Ly8gb1BhZ2VNYXAgLSBjcmVhdGluZyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBtYXAgb2YgbWV0YXBhdGggbmFtZSBhbmQgaXQncyB0ZWNobmljYWwgZGV0YWlsc1xuXHQvLyB3aGljaCBpcyByZXF1aXJlZCB0byBjcmVhdGUgYSBmaWx0ZXIgdG8gZmV0Y2ggdGhlIHJlbGF2YW50L2NvcnJlY3QgYWN0aXZlIGNvbnRleHRcblx0Ly8gRXhhbXBsZToge1NhbGVzT3JkZXJNYW5hZ2U6e3RlY2huaWNhbElEOnRlY2huaWNhbElEVmFsdWV9LCBfSXRlbTp7dGVjaG5pY2FsSUQ6dGVjaG5pY2FsSURWYWx1ZX19IGV0Yy4sXG5cdGNvbnN0IG9QYWdlTWFwOiBhbnkgPSB7fTtcblx0Y29uc3QgYVBhZ2VIYXNoQXJyYXk6IGFueVtdID0gW107XG5cdGFDdXJyZW50SGFzaEFycmF5LmZvckVhY2goZnVuY3Rpb24gKHNQYWdlSGFzaDogYW55KSB7XG5cdFx0Y29uc3QgYUtleVZhbHVlcyA9IHNQYWdlSGFzaC5zdWJzdHJpbmcoc1BhZ2VIYXNoLmluZGV4T2YoXCIoXCIpICsgMSwgc1BhZ2VIYXNoLmxlbmd0aCAtIDEpLnNwbGl0KFwiLFwiKTtcblx0XHRjb25zdCBtS2V5VmFsdWVzOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzUGFnZUhhc2hOYW1lID0gc1BhZ2VIYXNoLnNwbGl0KFwiKFwiKVswXTtcblx0XHRvUGFnZU1hcFtzUGFnZUhhc2hOYW1lXSA9IHt9O1xuXHRcdGFQYWdlSGFzaEFycmF5LnB1c2goc1BhZ2VIYXNoTmFtZSk7XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV1bXCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkXCJdID0gdHJ1ZTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFLZXlWYWx1ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHNLZXlBc3NpZ25tZW50ID0gYUtleVZhbHVlc1tpXTtcblx0XHRcdGNvbnN0IGFQYXJ0cyA9IHNLZXlBc3NpZ25tZW50LnNwbGl0KFwiPVwiKTtcblx0XHRcdGxldCBzS2V5VmFsdWUgPSBhUGFydHNbMV07XG5cdFx0XHRsZXQgc0tleSA9IGFQYXJ0c1swXTtcblx0XHRcdC8vIEluIGNhc2UgaWYgb25seSBvbmUgdGVjaG5pY2FsIGtleSBpcyBkZWZpbmVkIHRoZW4gdGhlIHVybCBqdXN0IGNvbnRhaW5zIHRoZSB0ZWNobmljYWxJRFZhbHVlIGJ1dCBub3QgdGhlIHRlY2huaWNhbElEXG5cdFx0XHQvLyBFeGFtcGxlOiBTYWxlc09yZGVyTWFuYWdlKElEPTExMTExMTI5LWFhYWEtYmJiYi1jY2NjLWRkZGRlZWVlZmZmZixJc0FjdGl2ZUVudGl0eT1mYWxzZSkvX0l0ZW0oMTExMTExMjktYWFhYS1iYmJiLWNjY2MtZGRkZGVlZWVmZmZmKVxuXHRcdFx0Ly8gSW4gYWJvdmUgZXhhbXBsZSBTYWxlc09yZGVySXRlbSBoYXMgb25seSBvbmUgdGVjaG5pY2FsIGtleSBkZWZpbmVkLCBoZW5jZSB0ZWNobmljYWxJRCBpbmZvIGlzIG5vdCBwcmVzZW50IGluIHRoZSB1cmxcblx0XHRcdC8vIEhlbmNlIGluIHN1Y2ggY2FzZXMgd2UgZ2V0IHRlY2huaWNhbCBrZXkgYW5kIHVzZSB0aGVtIHRvIGZldGNoIGFjdGl2ZSBjb250ZXh0XG5cdFx0XHRpZiAoc0tleUFzc2lnbm1lbnQuaW5kZXhPZihcIj1cIikgPT09IC0xKSB7XG5cdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRjb25zdCBhVGVjaG5pY2FsS2V5cyA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAvJHthUGFnZUhhc2hBcnJheS5qb2luKFwiL1wiKX0vJFR5cGUvJEtleWApO1xuXHRcdFx0XHRzS2V5VmFsdWUgPSBhUGFydHNbMF07XG5cdFx0XHRcdHNLZXkgPSBhVGVjaG5pY2FsS2V5c1swXTtcblx0XHRcdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoLnNwbGl0KFwiKFwiKVswXV1bXCJiSXNBY3RpdmVFbnRpdHlEZWZpbmVkXCJdID0gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzS2V5ICE9PSBcIklzQWN0aXZlRW50aXR5XCIpIHtcblx0XHRcdFx0aWYgKHNLZXlWYWx1ZS5pbmRleE9mKFwiJ1wiKSA9PT0gMCAmJiBzS2V5VmFsdWUubGFzdEluZGV4T2YoXCInXCIpID09PSBzS2V5VmFsdWUubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRcdC8vIFJlbW92ZSB0aGUgcXVvdGVzIGZyb20gdGhlIHZhbHVlIGFuZCBkZWNvZGUgc3BlY2lhbCBjaGFyc1xuXHRcdFx0XHRcdHNLZXlWYWx1ZSA9IGRlY29kZVVSSUNvbXBvbmVudChzS2V5VmFsdWUuc3Vic3RyaW5nKDEsIHNLZXlWYWx1ZS5sZW5ndGggLSAxKSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0bUtleVZhbHVlc1tzS2V5XSA9IHNLZXlWYWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0b1BhZ2VNYXBbc1BhZ2VIYXNoTmFtZV0ubUtleVZhbHVlcyA9IG1LZXlWYWx1ZXM7XG5cdH0pO1xuXG5cdGxldCBvUGFnZUVudGl0eVNldCA9IG9FbnRpdHlTZXQ7XG5cdGFNZXRhUGF0aEFycmF5LmZvckVhY2goZnVuY3Rpb24gKHNOYXZpZ2F0aW9uUGF0aDogYW55KSB7XG5cdFx0Y29uc3Qgb1BhZ2VJbmZvOiBhbnkgPSB7fTtcblx0XHRjb25zdCBzUGFnZUVudGl0eVNldE5hbWUgPSBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZyAmJiBvUGFnZUVudGl0eVNldC4kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tzTmF2aWdhdGlvblBhdGhdO1xuXHRcdGlmIChzUGFnZUVudGl0eVNldE5hbWUpIHtcblx0XHRcdG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSA9IG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3NOYXZpZ2F0aW9uUGF0aF07XG5cdFx0XHRvUGFnZUVudGl0eVNldCA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCkuZ2V0T2JqZWN0KGAvJHtzUGFnZUVudGl0eVNldE5hbWV9YCkgfHwgb0VudGl0eVNldDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1BhZ2VJbmZvLnBhZ2VFbnRpdHlOYW1lID0gc05hdmlnYXRpb25QYXRoO1xuXHRcdH1cblx0XHRvUGFnZUluZm8ubUtleVZhbHVlcyA9IG9QYWdlTWFwW3NOYXZpZ2F0aW9uUGF0aF0ubUtleVZhbHVlcztcblx0XHRvUGFnZUluZm8uYklzQWN0aXZlRW50aXR5RGVmaW5lZCA9IG9QYWdlTWFwW3NOYXZpZ2F0aW9uUGF0aF0uYklzQWN0aXZlRW50aXR5RGVmaW5lZDtcblx0XHRhUGFnZXMucHVzaChvUGFnZUluZm8pO1xuXHR9KTtcblxuXHRhUGFnZXMuZm9yRWFjaChmdW5jdGlvbiAob1BhZ2VJbmZvOiBhbnkpIHtcblx0XHRjb25zdCBvRmlsdGVyID0gY3JlYXRlRmlsdGVyVG9GZXRjaEFjdGl2ZUNvbnRleHQob1BhZ2VJbmZvLm1LZXlWYWx1ZXMsIG9QYWdlSW5mby5iSXNBY3RpdmVFbnRpdHlEZWZpbmVkKTtcblx0XHRhQWN0aXZlQ29udGV4dHByb21pc2VzLnB1c2goZ2V0QWN0aXZlQ29udGV4dFBhdGgob0NvbnRyb2xsZXIsIG9QYWdlSW5mby5wYWdlRW50aXR5TmFtZSwgb0ZpbHRlcikpO1xuXHR9KTtcblxuXHRyZXR1cm4gYUFjdGl2ZUNvbnRleHRwcm9taXNlcztcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZmV0Y2ggYWN0aXZlIGNvbnRleHQgcGF0aCdzLlxuICpcbiAqIEBwYXJhbSBvQ29udGV4dCBUaGUgUGFnZSBDb250ZXh0XG4gKiBAcGFyYW0gb0NvbnRyb2xsZXJcbiAqIEByZXR1cm5zIFByb21pc2Ugd2hpY2ggaXMgcmVzb2x2ZWQgb25jZSB0aGUgYWN0aXZlIGNvbnRleHQncyBhcmUgZmV0Y2hlZFxuICovXG5mdW5jdGlvbiBnZXRBY3RpdmVDb250ZXh0UGF0aHMob0NvbnRleHQ6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRjb25zdCBzQ3VycmVudEhhc2hOb1BhcmFtcyA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpLnNwbGl0KFwiP1wiKVswXTtcblx0bGV0IHNSb290RW50aXR5TmFtZSA9IHNDdXJyZW50SGFzaE5vUGFyYW1zICYmIHNDdXJyZW50SGFzaE5vUGFyYW1zLnN1YnN0cigwLCBzQ3VycmVudEhhc2hOb1BhcmFtcy5pbmRleE9mKFwiKFwiKSk7XG5cdGlmIChzUm9vdEVudGl0eU5hbWUuaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRzUm9vdEVudGl0eU5hbWUgPSBzUm9vdEVudGl0eU5hbWUuc3Vic3RyaW5nKDEpO1xuXHR9XG5cdGNvbnN0IG9FbnRpdHlTZXQgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLmdldE9iamVjdChgLyR7c1Jvb3RFbnRpdHlOYW1lfWApO1xuXHRjb25zdCBvUGFnZUNvbnRleHQgPSBvQ29udGV4dDtcblx0Y29uc3QgYUFjdGl2ZUNvbnRleHRwcm9taXNlcyA9IGdldEFjdGl2ZUNvbnRleHRJbnN0YW5jZXMob0NvbnRleHQsIG9Db250cm9sbGVyLCBvRW50aXR5U2V0KTtcblx0aWYgKGFBY3RpdmVDb250ZXh0cHJvbWlzZXMubGVuZ3RoID4gMCkge1xuXHRcdHJldHVybiBQcm9taXNlLmFsbChhQWN0aXZlQ29udGV4dHByb21pc2VzKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFEYXRhOiBhbnlbXSkge1xuXHRcdFx0XHRjb25zdCBhQWN0aXZlQ29udGV4dFBhdGhzID0gW107XG5cdFx0XHRcdGxldCBvUGFnZUVudGl0eVNldCA9IG9FbnRpdHlTZXQ7XG5cdFx0XHRcdGlmIChhRGF0YVswXS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChhRGF0YVswXS5zdWJzdHJpbmcoMSkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChhRGF0YVswXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSW4gdGhlIGFjdGl2ZSBjb250ZXh0IHBhdGhzIGlkZW50aWZ5IGFuZCByZXBsYWNlIHRoZSBlbnRpdHlTZXQgTmFtZSB3aXRoIGNvcnJlc3BvbmRpbmcgbmF2aWdhdGlvbiBwcm9wZXJ0eSBuYW1lXG5cdFx0XHRcdC8vIFJlcXVpcmVkIHRvIGZvcm0gdGhlIHVybCBwb2ludGluZyB0byBhY3RpdmUgY29udGV4dFxuXHRcdFx0XHQvLyBFeGFtcGxlIDogU2FsZXNPcmRlckl0ZW0gLS0+IF9JdGVtLCBNYXRlcmlhbERldGFpbHMgLS0+IF9NYXRlcmlhbERldGFpbHMgZXRjLixcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBhRGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGxldCBzQWN0aXZlQ29udGV4dFBhdGggPSBhRGF0YVtpXTtcblx0XHRcdFx0XHRsZXQgc05hdmlnYXRpb1Byb3BlcnR5ID0gXCJcIjtcblx0XHRcdFx0XHRsZXQgc0VudGl0eVNldE5hbWUgPSBzQWN0aXZlQ29udGV4dFBhdGggJiYgc0FjdGl2ZUNvbnRleHRQYXRoLnN1YnN0cigwLCBzQWN0aXZlQ29udGV4dFBhdGguaW5kZXhPZihcIihcIikpO1xuXHRcdFx0XHRcdGlmIChzRW50aXR5U2V0TmFtZS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0XHRcdFx0c0VudGl0eVNldE5hbWUgPSBzRW50aXR5U2V0TmFtZS5zdWJzdHJpbmcoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChzQWN0aXZlQ29udGV4dFBhdGguaW5kZXhPZihcIi9cIikgPT09IDApIHtcblx0XHRcdFx0XHRcdHNBY3RpdmVDb250ZXh0UGF0aCA9IHNBY3RpdmVDb250ZXh0UGF0aC5zdWJzdHJpbmcoMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNOYXZpZ2F0aW9Qcm9wZXJ0eSA9IE9iamVjdC5rZXlzKG9QYWdlRW50aXR5U2V0LiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nKVtcblx0XHRcdFx0XHRcdE9iamVjdC52YWx1ZXMob1BhZ2VFbnRpdHlTZXQuJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcpLmluZGV4T2Yoc0VudGl0eVNldE5hbWUpXG5cdFx0XHRcdFx0XTtcblx0XHRcdFx0XHRpZiAoc05hdmlnYXRpb1Byb3BlcnR5KSB7XG5cdFx0XHRcdFx0XHRhQWN0aXZlQ29udGV4dFBhdGhzLnB1c2goc0FjdGl2ZUNvbnRleHRQYXRoLnJlcGxhY2Uoc0VudGl0eVNldE5hbWUsIHNOYXZpZ2F0aW9Qcm9wZXJ0eSkpO1xuXHRcdFx0XHRcdFx0b1BhZ2VFbnRpdHlTZXQgPSBvUGFnZUNvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKS5nZXRPYmplY3QoYC8ke3NFbnRpdHlTZXROYW1lfWApIHx8IG9FbnRpdHlTZXQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGFBY3RpdmVDb250ZXh0UGF0aHMucHVzaChzQWN0aXZlQ29udGV4dFBhdGgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYUFjdGl2ZUNvbnRleHRQYXRocztcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5pbmZvKFwiRmFpbGVkIHRvIHJldHJpZXZlIG9uZSBvciBtb3JlIGFjdGl2ZSBjb250ZXh0IHBhdGgnc1wiLCBvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHR9XG59XG5mdW5jdGlvbiBmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dDogYW55LCBvQ29udHJvbGxlcjogYW55KSB7XG5cdGxldCBvUHJvbWlzZSwgYVNlbWFudGljS2V5cztcblx0Y29uc3Qgc0N1cnJlbnRIYXNoTm9QYXJhbXMgPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKS5zcGxpdChcIj9cIilbMF07XG5cdGlmIChvQ29udGV4dCkge1xuXHRcdGNvbnN0IG9Nb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRiR2xvYmFsSXNTdGlja3lTdXBwb3J0ZWQgPSBNb2RlbEhlbHBlci5pc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQob01ldGFNb2RlbCk7XG5cdFx0bGV0IHNSb290RW50aXR5TmFtZSA9IHNDdXJyZW50SGFzaE5vUGFyYW1zICYmIHNDdXJyZW50SGFzaE5vUGFyYW1zLnN1YnN0cigwLCBzQ3VycmVudEhhc2hOb1BhcmFtcy5pbmRleE9mKFwiKFwiKSk7XG5cdFx0aWYgKHNSb290RW50aXR5TmFtZS5pbmRleE9mKFwiL1wiKSA9PT0gMCkge1xuXHRcdFx0c1Jvb3RFbnRpdHlOYW1lID0gc1Jvb3RFbnRpdHlOYW1lLnN1YnN0cmluZygxKTtcblx0XHR9XG5cdFx0YVNlbWFudGljS2V5cyA9IFNlbWFudGljS2V5SGVscGVyLmdldFNlbWFudGljS2V5cyhvTWV0YU1vZGVsLCBzUm9vdEVudGl0eU5hbWUpO1xuXHR9XG5cdC8vIEZldGNoIGFjdGl2ZSBjb250ZXh0IGRldGFpbHMgaW5jYXNlIG9mIGJlbG93IHNjZW5hcmlvJ3Mod2hlcmUgcGFnZSBpcyBub3Qgc3RpY2t5IHN1cHBvcnRlZCh3ZSBkbyBub3QgaGF2ZSBkcmFmdCBpbnN0YW5jZSkpXG5cdC8vIDEuIEluIGNhc2Ugb2YgZHJhZnQgZW5hYmxlZCBPYmplY3QgcGFnZSB3aGVyZSBzZW1hbnRpYyBrZXkgYmFzZWQgVVJMIGlzIG5vdCBwb3NzaWJsZShsaWtlIHNlbWFudGljIGtleXMgYXJlIG5vdCBtb2RlbGVkIGluIHRoZSBlbnRpdHkgc2V0KVxuXHQvLyAyLiBJbiBjYXNlIG9mIGRyYWZ0IGVuYWJsZWQgU3ViIE9iamVjdCBQYWdlcyAod2hlcmUgc2VtYW50aWMgYm9va21hcmtpbmcgaXMgbm90IHN1cHBvcnRlZClcblx0Y29uc3Qgb1ZpZXdEYXRhID0gb0NvbnRyb2xsZXIuZ2V0VmlldygpLmdldFZpZXdEYXRhKCk7XG5cdGlmIChvQ29udGV4dCAmJiAhYkdsb2JhbElzU3RpY2t5U3VwcG9ydGVkICYmICgob1ZpZXdEYXRhLnZpZXdMZXZlbCA9PT0gMSAmJiAhYVNlbWFudGljS2V5cykgfHwgb1ZpZXdEYXRhLnZpZXdMZXZlbCA+PSAyKSkge1xuXHRcdG9Qcm9taXNlID0gZ2V0QWN0aXZlQ29udGV4dFBhdGhzKG9Db250ZXh0LCBvQ29udHJvbGxlcik7XG5cdFx0cmV0dXJuIG9Qcm9taXNlO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxufVxuXG4vLyAvKipcbi8vICAqIEdldCBzaGFyZSBVUkwuXG4vLyAgKiBAcGFyYW0gYklzRWRpdGFibGVcbi8vICAqIEBwYXJhbSBiSXNTdGlja3lTdXBwb3J0ZWRcbi8vICAqIEBwYXJhbSBhQWN0aXZlQ29udGV4dFBhdGhzXG4vLyAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgc2hhcmUgVVJMXG4vLyAgKiBAcHJvdGVjdGVkXG4vLyAgKiBAc3RhdGljXG4vLyAgKi9cbmZ1bmN0aW9uIGdldFNoYXJlVXJsKGJJc0VkaXRhYmxlOiBhbnksIGJJc1N0aWNreVN1cHBvcnRlZDogYW55LCBhQWN0aXZlQ29udGV4dFBhdGhzOiBhbnkpIHtcblx0bGV0IHNTaGFyZVVybDtcblx0Y29uc3Qgc0hhc2ggPSBIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpLmdldEhhc2goKTtcblx0Y29uc3Qgc0Jhc2VQYXRoID0gKEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkgYXMgYW55KS5ocmVmRm9yQXBwU3BlY2lmaWNIYXNoXG5cdFx0PyAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2goXCJcIilcblx0XHQ6IFwiXCI7XG5cdGlmIChiSXNFZGl0YWJsZSAmJiAhYklzU3RpY2t5U3VwcG9ydGVkICYmIGFBY3RpdmVDb250ZXh0UGF0aHMpIHtcblx0XHRzU2hhcmVVcmwgPSBzQmFzZVBhdGggKyBhQWN0aXZlQ29udGV4dFBhdGhzLmpvaW4oXCIvXCIpO1xuXHR9IGVsc2Uge1xuXHRcdHNTaGFyZVVybCA9IHNIYXNoID8gc0Jhc2VQYXRoICsgc0hhc2ggOiB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0fVxuXHRyZXR1cm4gc1NoYXJlVXJsO1xufVxuZnVuY3Rpb24gZ2V0U2hhcmVFbWFpbFVybCgpIHtcblx0Y29uc3Qgb1VTaGVsbENvbnRhaW5lciA9IHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXI7XG5cdGlmIChvVVNoZWxsQ29udGFpbmVyKSB7XG5cdFx0cmV0dXJuIG9VU2hlbGxDb250YWluZXJcblx0XHRcdC5nZXRGTFBVcmxBc3luYyh0cnVlKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKHNGTFBVcmw6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gc0ZMUFVybDtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKHNFcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkNvdWxkIG5vdCByZXRyaWV2ZSBjRkxQIFVSTCBmb3IgdGhlIHNoYXJpbmcgZGlhbG9nIChkaWFsb2cgd2lsbCBub3QgYmUgb3BlbmVkKVwiLCBzRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShkb2N1bWVudC5VUkwpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGdldEphbVVybChiSXNFZGl0TW9kZTogYm9vbGVhbiwgYklzU3RpY2t5U3VwcG9ydGVkOiBhbnksIGFBY3RpdmVDb250ZXh0UGF0aHM6IGFueSkge1xuXHRsZXQgc0phbVVybDogc3RyaW5nO1xuXHRjb25zdCBzSGFzaCA9IEhhc2hDaGFuZ2VyLmdldEluc3RhbmNlKCkuZ2V0SGFzaCgpO1xuXHRjb25zdCBzQmFzZVBhdGggPSAoSGFzaENoYW5nZXIuZ2V0SW5zdGFuY2UoKSBhcyBhbnkpLmhyZWZGb3JBcHBTcGVjaWZpY0hhc2hcblx0XHQ/IChIYXNoQ2hhbmdlci5nZXRJbnN0YW5jZSgpIGFzIGFueSkuaHJlZkZvckFwcFNwZWNpZmljSGFzaChcIlwiKVxuXHRcdDogXCJcIjtcblx0aWYgKGJJc0VkaXRNb2RlICYmICFiSXNTdGlja3lTdXBwb3J0ZWQgJiYgYUFjdGl2ZUNvbnRleHRQYXRocykge1xuXHRcdHNKYW1VcmwgPSBzQmFzZVBhdGggKyBhQWN0aXZlQ29udGV4dFBhdGhzLmpvaW4oXCIvXCIpO1xuXHR9IGVsc2Uge1xuXHRcdHNKYW1VcmwgPSBzSGFzaCA/IHNCYXNlUGF0aCArIHNIYXNoIDogd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdH1cblx0Ly8gaW4gY2FzZSB3ZSBhcmUgaW4gY0ZMUCBzY2VuYXJpbywgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmdcblx0Ly8gaW5zaWRlIGFuIGlmcmFtZSwgYW5kIHRoZXJlIGZvciB3ZSBuZWVkIHRvIGdldCB0aGUgY0ZMUCBVUkxcblx0Ly8gYW5kIG5vdCAnZG9jdW1lbnQuVVJMJyB0aGF0IHJlcHJlc2VudHMgdGhlIGlmcmFtZSBVUkxcblx0aWYgKHNhcC51c2hlbGwgJiYgc2FwLnVzaGVsbC5Db250YWluZXIgJiYgc2FwLnVzaGVsbC5Db250YWluZXIucnVubmluZ0luSWZyYW1lICYmIHNhcC51c2hlbGwuQ29udGFpbmVyLnJ1bm5pbmdJbklmcmFtZSgpKSB7XG5cdFx0c2FwLnVzaGVsbC5Db250YWluZXIuZ2V0RkxQVXJsKHRydWUpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoc1VybDogYW55KSB7XG5cdFx0XHRcdHJldHVybiBzVXJsLnN1YnN0cigwLCBzVXJsLmluZGV4T2YoXCIjXCIpKSArIHNKYW1Vcmw7XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChzRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJDb3VsZCBub3QgcmV0cmlldmUgY0ZMUCBVUkwgZm9yIHRoZSBzaGFyaW5nIGRpYWxvZyAoZGlhbG9nIHdpbGwgbm90IGJlIG9wZW5lZClcIiwgc0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHNKYW1VcmwpO1xuXHR9XG59XG5cbmNvbnN0IFNoYXJlRXh0ZW5zaW9uT3ZlcnJpZGUgPSB7XG5cdGFkYXB0U2hhcmVNZXRhZGF0YTogYXN5bmMgZnVuY3Rpb24gKHRoaXM6IFNoYXJlLCBvU2hhcmVNZXRhZGF0YTogYW55KSB7XG5cdFx0Y29uc3Qgb0NvbnRleHQgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0Y29uc3Qgb1VJTW9kZWwgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldE1vZGVsKFwidWlcIik7XG5cdFx0Y29uc3QgYklzRWRpdGFibGUgPSBvVUlNb2RlbC5nZXRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlXCIpO1xuXG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IGFBY3RpdmVDb250ZXh0UGF0aHMgPSBhd2FpdCBmZXRjaEFjdGl2ZUNvbnRleHRQYXRocyhvQ29udGV4dCwgdGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkpO1xuXHRcdFx0Y29uc3Qgb1BhZ2VUaXRsZUluZm8gPSAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgT2JqZWN0UGFnZUNvbnRyb2xsZXIpLl9nZXRQYWdlVGl0bGVJbmZvcm1hdGlvbigpO1xuXHRcdFx0Y29uc3Qgb0RhdGEgPSBhd2FpdCBQcm9taXNlLmFsbChbXG5cdFx0XHRcdGdldEphbVVybChiSXNFZGl0YWJsZSwgYkdsb2JhbElzU3RpY2t5U3VwcG9ydGVkLCBhQWN0aXZlQ29udGV4dFBhdGhzKSxcblx0XHRcdFx0Z2V0U2hhcmVVcmwoYklzRWRpdGFibGUsIGJHbG9iYWxJc1N0aWNreVN1cHBvcnRlZCwgYUFjdGl2ZUNvbnRleHRQYXRocyksXG5cdFx0XHRcdGdldFNoYXJlRW1haWxVcmwoKVxuXHRcdFx0XSk7XG5cblx0XHRcdGxldCBzVGl0bGUgPSBvUGFnZVRpdGxlSW5mby50aXRsZTtcblx0XHRcdGNvbnN0IHNPYmplY3RTdWJ0aXRsZSA9IG9QYWdlVGl0bGVJbmZvLnN1YnRpdGxlID8gb1BhZ2VUaXRsZUluZm8uc3VidGl0bGUudG9TdHJpbmcoKSA6IFwiXCI7XG5cdFx0XHRpZiAoc09iamVjdFN1YnRpdGxlKSB7XG5cdFx0XHRcdHNUaXRsZSA9IGAke3NUaXRsZX0gLSAke3NPYmplY3RTdWJ0aXRsZX1gO1xuXHRcdFx0fVxuXHRcdFx0b1NoYXJlTWV0YWRhdGEudGlsZSA9IHtcblx0XHRcdFx0dGl0bGU6IG9QYWdlVGl0bGVJbmZvLnRpdGxlLFxuXHRcdFx0XHRzdWJ0aXRsZTogc09iamVjdFN1YnRpdGxlXG5cdFx0XHR9O1xuXHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudGl0bGUgPSBzVGl0bGU7XG5cdFx0XHRvU2hhcmVNZXRhZGF0YS50aXRsZSA9IHNUaXRsZTtcblx0XHRcdG9TaGFyZU1ldGFkYXRhLmphbS51cmwgPSBvRGF0YVswXTtcblx0XHRcdG9TaGFyZU1ldGFkYXRhLnVybCA9IG9EYXRhWzFdO1xuXHRcdFx0b1NoYXJlTWV0YWRhdGEuZW1haWwudXJsID0gb0RhdGFbMl07XG5cdFx0fSBjYXRjaCAoZXJyb3I6IGFueSkge1xuXHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb1NoYXJlTWV0YWRhdGE7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNoYXJlRXh0ZW5zaW9uT3ZlcnJpZGU7XG4iXX0=
|