@sapui5/sap.fe.macros 1.138.0 → 1.140.0
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 +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +269 -0
- package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
- package/src/sap/fe/macros/CommonHelper.js +2 -2
- package/src/sap/fe/macros/CommonHelper.ts +1 -1
- package/src/sap/fe/macros/Field.js +85 -58
- package/src/sap/fe/macros/Field.ts +104 -60
- package/src/sap/fe/macros/FooterContent.js +44 -11
- package/src/sap/fe/macros/FooterContent.tsx +48 -9
- package/src/sap/fe/macros/FormElement.js +2 -2
- package/src/sap/fe/macros/FormElement.ts +1 -2
- package/src/sap/fe/macros/MessageButton.js +1 -2
- package/src/sap/fe/macros/MessageButton.tsx +0 -1
- package/src/sap/fe/macros/MultiValueField.js +17 -6
- package/src/sap/fe/macros/MultiValueField.tsx +7 -4
- package/src/sap/fe/macros/RichTextEditor.js +30 -5
- package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
- package/src/sap/fe/macros/Share.js +85 -40
- package/src/sap/fe/macros/Share.tsx +42 -1
- package/src/sap/fe/macros/Status.js +226 -0
- package/src/sap/fe/macros/Status.tsx +192 -0
- package/src/sap/fe/macros/ValueHelp.js +4 -29
- package/src/sap/fe/macros/ValueHelp.tsx +2 -43
- package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
- package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
- package/src/sap/fe/macros/ai/EasyFilterBar.js +123 -114
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +140 -124
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
- package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
- package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
- package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
- package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
- package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
- package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
- package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +3 -1
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -0
- package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
- package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
- package/src/sap/fe/macros/controls/FilterBar.js +49 -2
- package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
- package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
- package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +39 -2
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +39 -0
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
- package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
- package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
- package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
- package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
- package/src/sap/fe/macros/form/Form.js +1 -4
- package/src/sap/fe/macros/form/Form.tsx +0 -3
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
- package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
- package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
- package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
- package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
- package/src/sap/fe/macros/form/FormDelegate.js +20 -1
- package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
- package/src/sap/fe/macros/form/FormHelper.js +1 -2
- package/src/sap/fe/macros/form/FormHelper.ts +0 -1
- package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
- package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
- package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
- package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
- package/src/sap/fe/macros/internal/DataPoint.js +2 -1
- package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
- package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
- package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
- package/src/sap/fe/macros/internal/FilterField.block.js +10 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +11 -1
- package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +51 -13
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +53 -6
- package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +11 -0
- package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
- package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +16 -5
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +21 -9
- package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
- package/src/sap/fe/macros/messagebundle.properties +42 -32
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -4
- package/src/sap/fe/macros/messagebundle_bg.properties +11 -3
- package/src/sap/fe/macros/messagebundle_ca.properties +15 -7
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -4
- package/src/sap/fe/macros/messagebundle_cs.properties +10 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -4
- package/src/sap/fe/macros/messagebundle_da.properties +11 -3
- package/src/sap/fe/macros/messagebundle_de.properties +18 -10
- package/src/sap/fe/macros/messagebundle_el.properties +13 -5
- package/src/sap/fe/macros/messagebundle_en.properties +16 -8
- package/src/sap/fe/macros/messagebundle_en_GB.properties +16 -8
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +16 -8
- package/src/sap/fe/macros/messagebundle_es.properties +13 -5
- package/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
- package/src/sap/fe/macros/messagebundle_et.properties +13 -5
- package/src/sap/fe/macros/messagebundle_fi.properties +14 -6
- package/src/sap/fe/macros/messagebundle_fr.properties +14 -6
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +15 -7
- package/src/sap/fe/macros/messagebundle_hi.properties +11 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +11 -3
- package/src/sap/fe/macros/messagebundle_hu.properties +10 -2
- package/src/sap/fe/macros/messagebundle_id.properties +18 -10
- package/src/sap/fe/macros/messagebundle_it.properties +10 -2
- package/src/sap/fe/macros/messagebundle_iw.properties +10 -2
- package/src/sap/fe/macros/messagebundle_ja.properties +13 -5
- package/src/sap/fe/macros/messagebundle_kk.properties +15 -7
- package/src/sap/fe/macros/messagebundle_ko.properties +10 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +11 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -4
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ms.properties +14 -6
- package/src/sap/fe/macros/messagebundle_nl.properties +13 -5
- package/src/sap/fe/macros/messagebundle_no.properties +12 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +13 -5
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +13 -5
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sk.properties +11 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sv.properties +11 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -3
- package/src/sap/fe/macros/messagebundle_tr.properties +10 -2
- package/src/sap/fe/macros/messagebundle_uk.properties +17 -9
- package/src/sap/fe/macros/messagebundle_vi.properties +12 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +11 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -4
- package/src/sap/fe/macros/messages/MessageButton.js +55 -36
- package/src/sap/fe/macros/messages/MessageButton.ts +64 -39
- package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
- package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
- package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
- package/src/sap/fe/macros/share/ShareAPI.js +4 -29
- package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
- package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
- package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
- package/src/sap/fe/macros/table/Action.js +24 -2
- package/src/sap/fe/macros/table/Action.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroup.js +24 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
- package/src/sap/fe/macros/table/Column.js +3 -3
- package/src/sap/fe/macros/table/Column.ts +2 -2
- package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +36 -7
- package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
- package/src/sap/fe/macros/table/Table.block.js +137 -108
- package/src/sap/fe/macros/table/Table.block.tsx +29 -2
- package/src/sap/fe/macros/table/TableAPI.js +143 -133
- package/src/sap/fe/macros/table/TableAPI.ts +5 -1
- package/src/sap/fe/macros/table/TableDefinition.js +4 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
- package/src/sap/fe/macros/table/TableHelper.js +1 -2
- package/src/sap/fe/macros/table/TableHelper.ts +0 -1
- package/src/sap/fe/macros/table/TableRuntime.js +26 -7
- package/src/sap/fe/macros/table/TableRuntime.ts +33 -5
- package/src/sap/fe/macros/table/Utils.js +6 -2
- package/src/sap/fe/macros/table/Utils.ts +5 -1
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -20
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -24
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +8 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +10 -0
- package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +20 -6
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +36 -14
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -7
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +16 -5
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +18 -4
|
@@ -90,7 +90,6 @@ const PREVIOUS_SORTERS = "previousSorters";
|
|
|
90
90
|
* The class is experimental and the API and the behavior are not finalized. This class is not intended for productive usage.
|
|
91
91
|
* @author SAP SE
|
|
92
92
|
* @private
|
|
93
|
-
* @experimental
|
|
94
93
|
* @since 1.69.0
|
|
95
94
|
* @alias sap.fe.macros.TableDelegate
|
|
96
95
|
*/
|
|
@@ -1052,6 +1051,20 @@ export default Object.assign({}, TableDelegateBase, {
|
|
|
1052
1051
|
const tableAPI = table.getParent() as TableAPI;
|
|
1053
1052
|
const bIsSuspended = tableAPI?.getProperty("bindingSuspended");
|
|
1054
1053
|
if (!bIsSuspended) {
|
|
1054
|
+
// if the rowBindingInfo has a $$getKeepAliveContext parameter we need to check it is the only Table with such a
|
|
1055
|
+
// parameter for the collectionMetaPath
|
|
1056
|
+
if (bindingInfo.parameters?.$$getKeepAliveContext === true) {
|
|
1057
|
+
const collectionPath = DelegateUtil.getCustomData<string>(table, "targetCollectionPath") ?? "";
|
|
1058
|
+
const internalModel = table.getModel("internal") as JSONModel;
|
|
1059
|
+
const keptAliveLists = internalModel?.getObject("/keptAliveLists") ?? {};
|
|
1060
|
+
if (!keptAliveLists[collectionPath]) {
|
|
1061
|
+
keptAliveLists[collectionPath] = table.getId();
|
|
1062
|
+
internalModel?.setProperty("/keptAliveLists", keptAliveLists);
|
|
1063
|
+
} else if (keptAliveLists[collectionPath] !== table.getId()) {
|
|
1064
|
+
delete bindingInfo.parameters.$$getKeepAliveContext;
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1055
1068
|
let needManualRefresh = false;
|
|
1056
1069
|
const view = CommonUtils.getTargetView(table);
|
|
1057
1070
|
const internalBindingContext = table.getBindingContext("internal");
|
|
@@ -1156,20 +1169,6 @@ export default Object.assign({}, TableDelegateBase, {
|
|
|
1156
1169
|
rowBindingInfo.parameters.$$updateGroupId = CommonUtils.INLINEEDIT_UPDATEGROUPID;
|
|
1157
1170
|
}
|
|
1158
1171
|
|
|
1159
|
-
// if the rowBindingInfo has a $$getKeepAliveContext parameter we need to check it is the only Table with such a
|
|
1160
|
-
// parameter for the collectionMetaPath
|
|
1161
|
-
if (rowBindingInfo.parameters?.$$getKeepAliveContext === true) {
|
|
1162
|
-
const collectionPath = DelegateUtil.getCustomData<string>(oTable, "targetCollectionPath") ?? "";
|
|
1163
|
-
const internalModel = oTable.getModel("internal") as JSONModel;
|
|
1164
|
-
const keptAliveLists = internalModel?.getObject("/keptAliveLists") ?? {};
|
|
1165
|
-
if (!keptAliveLists[collectionPath]) {
|
|
1166
|
-
keptAliveLists[collectionPath] = oTable.getId();
|
|
1167
|
-
internalModel?.setProperty("/keptAliveLists", keptAliveLists);
|
|
1168
|
-
} else if (keptAliveLists[collectionPath] !== oTable.getId()) {
|
|
1169
|
-
delete rowBindingInfo.parameters.$$getKeepAliveContext;
|
|
1170
|
-
}
|
|
1171
|
-
}
|
|
1172
|
-
|
|
1173
1172
|
return rowBindingInfo;
|
|
1174
1173
|
},
|
|
1175
1174
|
_internalUpdateBindingInfo: function (oTable: Table, oBindingInfo: CollectionBindingInfo) {
|
|
@@ -1204,11 +1203,7 @@ export default Object.assign({}, TableDelegateBase, {
|
|
|
1204
1203
|
if (oDataStateIndicator && oDataStateIndicator.isFiltering()) {
|
|
1205
1204
|
// Include filters on messageStrip
|
|
1206
1205
|
if ((oBindingInfo.filters as unknown as Filter[]).length > 0) {
|
|
1207
|
-
|
|
1208
|
-
oFilter = new Filter({
|
|
1209
|
-
filters: bindingInfoFilters.concat(oFilterInfo.filters),
|
|
1210
|
-
and: true
|
|
1211
|
-
});
|
|
1206
|
+
oFilter = new Filter({ filters: (oBindingInfo.filters as unknown as Filter[]).concat(oFilterInfo.filters), and: true });
|
|
1212
1207
|
this.updateBindingInfoWithSearchQuery(oBindingInfo, oFilterInfo, oFilter);
|
|
1213
1208
|
}
|
|
1214
1209
|
} else {
|
|
@@ -1450,7 +1445,8 @@ export default Object.assign({}, TableDelegateBase, {
|
|
|
1450
1445
|
const oMetaModel = this._getMetaModel(mPropertyBag),
|
|
1451
1446
|
oModifier = mPropertyBag.modifier,
|
|
1452
1447
|
sTableId = oModifier.getId(table),
|
|
1453
|
-
aColumns = (table as UI5Element).isA ? this.getColumnsFor(table as Table) : null
|
|
1448
|
+
aColumns = (table as UI5Element).isA ? this.getColumnsFor(table as Table) : null,
|
|
1449
|
+
tableAPI = (table as Table).getParent() as TableAPI;
|
|
1454
1450
|
if (!aColumns) {
|
|
1455
1451
|
// We return null here because everything should apply at runtime
|
|
1456
1452
|
return Promise.resolve(null);
|
|
@@ -1498,9 +1494,14 @@ export default Object.assign({}, TableDelegateBase, {
|
|
|
1498
1494
|
return Promise.resolve(null);
|
|
1499
1495
|
}
|
|
1500
1496
|
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1497
|
+
let propertyInfos = tableAPI.getEnhancedFetchedPropertyInfos();
|
|
1498
|
+
if (!propertyInfos.length) {
|
|
1499
|
+
// If the propertyInfos are not fetched yet, we need to fetch them
|
|
1500
|
+
// This is the case when the table is not created yet
|
|
1501
|
+
await this.fetchProperties(table as MDCTable);
|
|
1502
|
+
propertyInfos = tableAPI.getEnhancedFetchedPropertyInfos();
|
|
1503
|
+
}
|
|
1504
|
+
const propertyInfo = propertyInfos.find(function (propInfo: EnhancedFEPropertyInfo) {
|
|
1504
1505
|
return propInfo.name === propertyInfoName;
|
|
1505
1506
|
});
|
|
1506
1507
|
|
|
@@ -11,7 +11,6 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/table/delegates/TableDe
|
|
|
11
11
|
* This class is experimental and not intended for productive usage, since the API/behavior has not been finalized.
|
|
12
12
|
* @author SAP SE
|
|
13
13
|
* @private
|
|
14
|
-
* @experimental
|
|
15
14
|
* @since 1.69.0
|
|
16
15
|
* @alias sap.fe.macros.TableDelegate
|
|
17
16
|
*/
|
|
@@ -53,4 +52,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/macros/table/delegates/TableDe
|
|
|
53
52
|
});
|
|
54
53
|
return TreeTableDelegate;
|
|
55
54
|
}, false);
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUcmVlVGFibGVEZWxlZ2F0ZSIsIk9iamVjdCIsImFzc2lnbiIsIlRhYmxlRGVsZWdhdGUiLCJhcGlWZXJzaW9uIiwiX2ludGVybmFsVXBkYXRlQmluZGluZ0luZm8iLCJ0YWJsZSIsImJpbmRpbmdJbmZvIiwiYXBwbHkiLCJjdXJyZW50QWdncmVnYXRpb24iLCJnZXRSb3dCaW5kaW5nIiwiZ2V0QWdncmVnYXRpb24iLCJwYXlsb2FkIiwiZ2V0UGF5bG9hZCIsInBhcmFtZXRlcnMiLCIkJGFnZ3JlZ2F0aW9uIiwiaGllcmFyY2h5UXVhbGlmaWVyIiwiY3JlYXRlSW5QbGFjZSIsInVuZGVmaW5lZCIsImV4cGFuZFRvIiwic2VhcmNoIiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImluaXRpYWxFeHBhbnNpb25MZXZlbCIsImludGVybmFsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2V0UHJvcGVydHkiLCJzb3J0ZXIiLCJsZW5ndGgiLCJ1cGRhdGVCaW5kaW5nSW5mb1dpdGhTZWFyY2hRdWVyeSIsImZpbHRlckluZm8iLCJmaWx0ZXIiLCJmaWx0ZXJzIiwiQ29tbW9uVXRpbHMiLCJub3JtYWxpemVTZWFyY2hUZXJtIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUcmVlVGFibGVEZWxlZ2F0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBUYWJsZURlbGVnYXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL2RlbGVnYXRlcy9UYWJsZURlbGVnYXRlXCI7XG5pbXBvcnQgdHlwZSB7IEJhc2VBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIFNvcnRlciBmcm9tIFwic2FwL3VpL21vZGVsL1NvcnRlclwiO1xuXG50eXBlIFY0QWdncmVnYXRpb25CaW5kaW5nSW5mbyA9IEJhc2VBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvICYge1xuXHRwYXJhbWV0ZXJzOiB7XG5cdFx0JCRhZ2dyZWdhdGlvbjoge1xuXHRcdFx0aGllcmFyY2h5UXVhbGlmaWVyPzogc3RyaW5nO1xuXHRcdFx0ZXhwYW5kVG8/OiBudW1iZXI7XG5cdFx0XHRzZWFyY2g/
|
|
55
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUcmVlVGFibGVEZWxlZ2F0ZSIsIk9iamVjdCIsImFzc2lnbiIsIlRhYmxlRGVsZWdhdGUiLCJhcGlWZXJzaW9uIiwiX2ludGVybmFsVXBkYXRlQmluZGluZ0luZm8iLCJ0YWJsZSIsImJpbmRpbmdJbmZvIiwiYXBwbHkiLCJjdXJyZW50QWdncmVnYXRpb24iLCJnZXRSb3dCaW5kaW5nIiwiZ2V0QWdncmVnYXRpb24iLCJwYXlsb2FkIiwiZ2V0UGF5bG9hZCIsInBhcmFtZXRlcnMiLCIkJGFnZ3JlZ2F0aW9uIiwiaGllcmFyY2h5UXVhbGlmaWVyIiwiY3JlYXRlSW5QbGFjZSIsInVuZGVmaW5lZCIsImV4cGFuZFRvIiwic2VhcmNoIiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImluaXRpYWxFeHBhbnNpb25MZXZlbCIsImludGVybmFsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwic2V0UHJvcGVydHkiLCJzb3J0ZXIiLCJsZW5ndGgiLCJ1cGRhdGVCaW5kaW5nSW5mb1dpdGhTZWFyY2hRdWVyeSIsImZpbHRlckluZm8iLCJmaWx0ZXIiLCJmaWx0ZXJzIiwiQ29tbW9uVXRpbHMiLCJub3JtYWxpemVTZWFyY2hUZXJtIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUcmVlVGFibGVEZWxlZ2F0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBUYWJsZURlbGVnYXRlIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL2RlbGVnYXRlcy9UYWJsZURlbGVnYXRlXCI7XG5pbXBvcnQgdHlwZSB7IEJhc2VBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIFNvcnRlciBmcm9tIFwic2FwL3VpL21vZGVsL1NvcnRlclwiO1xuXG50eXBlIFY0QWdncmVnYXRpb25CaW5kaW5nSW5mbyA9IEJhc2VBZ2dyZWdhdGlvbkJpbmRpbmdJbmZvICYge1xuXHRwYXJhbWV0ZXJzOiB7XG5cdFx0JCRhZ2dyZWdhdGlvbjoge1xuXHRcdFx0aGllcmFyY2h5UXVhbGlmaWVyPzogc3RyaW5nO1xuXHRcdFx0ZXhwYW5kVG8/OiBudW1iZXI7XG5cdFx0XHRzZWFyY2g/OiBzdHJpbmc7XG5cdFx0fTtcblx0fTtcbn07XG4vKipcbiAqIEhlbHBlciBjbGFzcyBmb3Igc2FwLnVpLm1kYy5UYWJsZS5cbiAqIDxoMz48Yj5Ob3RlOjwvYj48L2gzPlxuICogVGhpcyBjbGFzcyBpcyBleHBlcmltZW50YWwgYW5kIG5vdCBpbnRlbmRlZCBmb3IgcHJvZHVjdGl2ZSB1c2FnZSwgc2luY2UgdGhlIEFQSS9iZWhhdmlvciBoYXMgbm90IGJlZW4gZmluYWxpemVkLlxuICogQGF1dGhvciBTQVAgU0VcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMS42OS4wXG4gKiBAYWxpYXMgc2FwLmZlLm1hY3Jvcy5UYWJsZURlbGVnYXRlXG4gKi9cbmNvbnN0IFRyZWVUYWJsZURlbGVnYXRlID0gT2JqZWN0LmFzc2lnbih7fSwgVGFibGVEZWxlZ2F0ZSwge1xuXHRhcGlWZXJzaW9uOiAyLFxuXHRfaW50ZXJuYWxVcGRhdGVCaW5kaW5nSW5mbzogZnVuY3Rpb24gKHRhYmxlOiBNRENUYWJsZSwgYmluZGluZ0luZm86IFY0QWdncmVnYXRpb25CaW5kaW5nSW5mbykge1xuXHRcdFRhYmxlRGVsZWdhdGUuX2ludGVybmFsVXBkYXRlQmluZGluZ0luZm8uYXBwbHkodGhpcywgW3RhYmxlLCBiaW5kaW5nSW5mb10pO1xuXG5cdFx0Y29uc3QgY3VycmVudEFnZ3JlZ2F0aW9uID0gdGFibGUuZ2V0Um93QmluZGluZygpPy5nZXRBZ2dyZWdhdGlvbigpIGFzIHsgZXhwYW5kVG86IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHBheWxvYWQgPSB0YWJsZS5nZXRQYXlsb2FkKCkgYXNcblx0XHRcdHwgeyBoaWVyYXJjaHlRdWFsaWZpZXI6IHN0cmluZzsgY3JlYXRlSW5QbGFjZTogYm9vbGVhbjsgaW5pdGlhbEV4cGFuc2lvbkxldmVsOiBudW1iZXIgfVxuXHRcdFx0fCB1bmRlZmluZWQ7XG5cdFx0YmluZGluZ0luZm8ucGFyYW1ldGVycy4kJGFnZ3JlZ2F0aW9uID0ge1xuXHRcdFx0Li4uYmluZGluZ0luZm8ucGFyYW1ldGVycy4kJGFnZ3JlZ2F0aW9uLFxuXHRcdFx0Li4ueyBoaWVyYXJjaHlRdWFsaWZpZXI6IHBheWxvYWQ/LmhpZXJhcmNoeVF1YWxpZmllciwgY3JlYXRlSW5QbGFjZTogcGF5bG9hZD8uY3JlYXRlSW5QbGFjZSA/IHRydWUgOiB1bmRlZmluZWQgfSxcblx0XHRcdC8vIFNldHRpbmcgdGhlIGV4cGFuZFRvIHBhcmFtZXRlciB0byBhIGhpZ2ggdmFsdWUgZm9yY2VzIHRoZSB0cmVlVGFibGUgdG8gZXhwYW5kIGFsbCBub2RlcyB3aGVuIHRoZSBzZWFyY2ggaXMgYXBwbGllZFxuXHRcdFx0Li4ue1xuXHRcdFx0XHRleHBhbmRUbzogYmluZGluZ0luZm8ucGFyYW1ldGVycy4kJGFnZ3JlZ2F0aW9uPy5zZWFyY2hcblx0XHRcdFx0XHQ/IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG5cdFx0XHRcdFx0OiBjdXJyZW50QWdncmVnYXRpb24/LmV4cGFuZFRvID8/IHBheWxvYWQ/LmluaXRpYWxFeHBhbnNpb25MZXZlbFxuXHRcdFx0fVxuXHRcdH07XG5cblx0XHQvLyBGbGFnIHRvIGtub3cgaWYgc29ydGVycyBhcmUgYXBwbGllZCAodXNlZCBpbiBkcmFnICYgZHJvcCBsb2dpYylcblx0XHRjb25zdCBpbnRlcm5hbENvbnRleHQgPSB0YWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdGludGVybmFsQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzU29ydGVkXCIsIGJpbmRpbmdJbmZvLnNvcnRlciAhPT0gdW5kZWZpbmVkICYmIChiaW5kaW5nSW5mby5zb3J0ZXIgYXMgU29ydGVyW10pLmxlbmd0aCA+IDApO1xuXHR9LFxuXHR1cGRhdGVCaW5kaW5nSW5mb1dpdGhTZWFyY2hRdWVyeTogZnVuY3Rpb24gKGJpbmRpbmdJbmZvOiBWNEFnZ3JlZ2F0aW9uQmluZGluZ0luZm8sIGZpbHRlckluZm86IHsgc2VhcmNoPzogc3RyaW5nIH0sIGZpbHRlcjogRmlsdGVyKSB7XG5cdFx0YmluZGluZ0luZm8uZmlsdGVycyA9IGZpbHRlcjtcblx0XHRpZiAoZmlsdGVySW5mby5zZWFyY2gpIHtcblx0XHRcdGJpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJCRhZ2dyZWdhdGlvbiA9IHtcblx0XHRcdFx0Li4uYmluZGluZ0luZm8ucGFyYW1ldGVycy4kJGFnZ3JlZ2F0aW9uLFxuXHRcdFx0XHQuLi57XG5cdFx0XHRcdFx0c2VhcmNoOiBDb21tb25VdGlscy5ub3JtYWxpemVTZWFyY2hUZXJtKGZpbHRlckluZm8uc2VhcmNoKVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkZWxldGUgYmluZGluZ0luZm8ucGFyYW1ldGVycz8uJCRhZ2dyZWdhdGlvbj8uc2VhcmNoO1xuXHRcdH1cblx0fVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFRyZWVUYWJsZURlbGVnYXRlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLE1BQU1BLGlCQUFpQixHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRUMsYUFBYSxFQUFFO0lBQzFEQyxVQUFVLEVBQUUsQ0FBQztJQUNiQywwQkFBMEIsRUFBRSxTQUFBQSxDQUFVQyxLQUFlLEVBQUVDLFdBQXFDLEVBQUU7TUFDN0ZKLGFBQWEsQ0FBQ0UsMEJBQTBCLENBQUNHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQ0YsS0FBSyxFQUFFQyxXQUFXLENBQUMsQ0FBQztNQUUxRSxNQUFNRSxrQkFBa0IsR0FBR0gsS0FBSyxDQUFDSSxhQUFhLENBQUMsQ0FBQyxFQUFFQyxjQUFjLENBQUMsQ0FBcUM7TUFDdEcsTUFBTUMsT0FBTyxHQUFHTixLQUFLLENBQUNPLFVBQVUsQ0FBQyxDQUVyQjtNQUNaTixXQUFXLENBQUNPLFVBQVUsQ0FBQ0MsYUFBYSxHQUFHO1FBQ3RDLEdBQUdSLFdBQVcsQ0FBQ08sVUFBVSxDQUFDQyxhQUFhO1FBQ3ZDLEdBQUc7VUFBRUMsa0JBQWtCLEVBQUVKLE9BQU8sRUFBRUksa0JBQWtCO1VBQUVDLGFBQWEsRUFBRUwsT0FBTyxFQUFFSyxhQUFhLEdBQUcsSUFBSSxHQUFHQztRQUFVLENBQUM7UUFDaEg7UUFDQSxHQUFHO1VBQ0ZDLFFBQVEsRUFBRVosV0FBVyxDQUFDTyxVQUFVLENBQUNDLGFBQWEsRUFBRUssTUFBTSxHQUNuREMsTUFBTSxDQUFDQyxnQkFBZ0IsR0FDdkJiLGtCQUFrQixFQUFFVSxRQUFRLElBQUlQLE9BQU8sRUFBRVc7UUFDN0M7TUFDRCxDQUFDOztNQUVEO01BQ0EsTUFBTUMsZUFBZSxHQUFHbEIsS0FBSyxDQUFDbUIsaUJBQWlCLENBQUMsVUFBVSxDQUF5QjtNQUNuRkQsZUFBZSxDQUFDRSxXQUFXLENBQUMsVUFBVSxFQUFFbkIsV0FBVyxDQUFDb0IsTUFBTSxLQUFLVCxTQUFTLElBQUtYLFdBQVcsQ0FBQ29CLE1BQU0sQ0FBY0MsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBQ0RDLGdDQUFnQyxFQUFFLFNBQUFBLENBQVV0QixXQUFxQyxFQUFFdUIsVUFBK0IsRUFBRUMsTUFBYyxFQUFFO01BQ25JeEIsV0FBVyxDQUFDeUIsT0FBTyxHQUFHRCxNQUFNO01BQzVCLElBQUlELFVBQVUsQ0FBQ1YsTUFBTSxFQUFFO1FBQ3RCYixXQUFXLENBQUNPLFVBQVUsQ0FBQ0MsYUFBYSxHQUFHO1VBQ3RDLEdBQUdSLFdBQVcsQ0FBQ08sVUFBVSxDQUFDQyxhQUFhO1VBQ3ZDLEdBQUc7WUFDRkssTUFBTSxFQUFFYSxXQUFXLENBQUNDLG1CQUFtQixDQUFDSixVQUFVLENBQUNWLE1BQU07VUFDMUQ7UUFDRCxDQUFDO01BQ0YsQ0FBQyxNQUFNO1FBQ04sT0FBT2IsV0FBVyxDQUFDTyxVQUFVLEVBQUVDLGFBQWEsRUFBRUssTUFBTTtNQUNyRDtJQUNEO0VBQ0QsQ0FBQyxDQUFDO0VBQUMsT0FFWXBCLGlCQUFpQjtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -21,7 +21,6 @@ type V4AggregationBindingInfo = BaseAggregationBindingInfo & {
|
|
|
21
21
|
* This class is experimental and not intended for productive usage, since the API/behavior has not been finalized.
|
|
22
22
|
* @author SAP SE
|
|
23
23
|
* @private
|
|
24
|
-
* @experimental
|
|
25
24
|
* @since 1.69.0
|
|
26
25
|
* @alias sap.fe.macros.TableDelegate
|
|
27
26
|
*/
|
|
@@ -12,6 +12,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/designtime/AnnotationBase
|
|
|
12
12
|
var prepareConfigModel = Designtime_helper.prepareConfigModel;
|
|
13
13
|
var openAdaptionDialog = Designtime_helper.openAdaptionDialog;
|
|
14
14
|
var noChanges = Designtime_helper.noChanges;
|
|
15
|
+
var isManifestChangesEnabled = Designtime_helper.isManifestChangesEnabled;
|
|
15
16
|
var isConfigModelPrepared = Designtime_helper.isConfigModelPrepared;
|
|
16
17
|
var getSettingsIfKeyUser = Designtime_helper.getSettingsIfKeyUser;
|
|
17
18
|
var getPropertyNamesAndDescriptions = Designtime_helper.getPropertyNamesAndDescriptions;
|
|
@@ -182,6 +183,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/designtime/AnnotationBase
|
|
|
182
183
|
fe: {
|
|
183
184
|
name: getText("RTA_CONTEXT_ACTIONMENU_CONFIG"),
|
|
184
185
|
icon: "sap-icon://developer-settings",
|
|
186
|
+
isEnabled: isManifestChangesEnabled,
|
|
185
187
|
handler: async function (control) {
|
|
186
188
|
const tableAPI = control.getParent();
|
|
187
189
|
const designtimeSettings = getDesigntimeSettings(tableAPI);
|
|
@@ -282,4 +284,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/designtime/AnnotationBase
|
|
|
282
284
|
};
|
|
283
285
|
return designTime;
|
|
284
286
|
}, false);
|
|
285
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpdGVtc1RvUmVtb3ZlIiwiZ2V0QWRhcHRhdGlvblByb3BlcnRpZXMiLCJkZXNpZ250aW1lU2V0dGluZ3MiLCJjb250cm9sIiwicHJvcGVydHlWYWx1ZXMiLCJmb3JFYWNoIiwic2V0dGluZyIsImlkIiwiZ2V0QWRhcHRhdGlvblByb3BlcnR5VmFsdWUiLCJfZXhwb3J0cyIsInRhYmxlIiwiZ2V0UGFyZW50IiwidGFibGVEZWZpbml0aW9uIiwiZ2V0UHJvcGVydHkiLCJyZXR1cm5WYWx1ZSIsImhlYWRlclZpc2libGUiLCJoZWFkZXIiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlRXhwb3J0IiwiZGF0YSIsImNyZWF0aW9uTW9kZSIsImNyZWF0ZUF0RW5kIiwiZnJvemVuQ29sdW1uQ291bnQiLCJmaWx0ZXJzIiwicXVpY2tGaWx0ZXJzIiwic2hvd0NvdW50cyIsImdldFAxM25Nb2RlIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJyb3dDb3VudCIsInJvd0NvdW50TW9kZSIsInVzZUNvbmRlbnNlZFRhYmxlTGF5b3V0Iiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJhbm5vdGF0aW9uIiwic2VsZWN0aW9uTW9kZSIsInNlbGVjdGlvbkxpbWl0IiwidGhyZXNob2xkIiwic2Nyb2xsVGhyZXNob2xkIiwiaGllcmFyY2h5UXVhbGlmaWVyIiwibWFzc0VkaXQiLCJlbmFibGVkIiwidmlzaWJsZUZpZWxkcyIsImlnbm9yZUZpZWxkcyIsImVuYWJsZUFkZENhcmRUb0luc2lnaHRzIiwiYmVmb3JlUmViaW5kVGFibGUiLCJzZWxlY3Rpb25DaGFuZ2UiLCJnZXRTZXR0aW5ncyIsInRhYmxlQVBJIiwiaXRlbXMiLCJnZXREZXNpZ250aW1lU2V0dGluZ3MiLCJtYW5pZmVzdFNldHRpbmciLCJzZXR0aW5nc0RhdGEiLCJsYWJlbCIsIm5hbWUiLCJ0b29sdGlwIiwiZGVzY3JpcHRpb24iLCJrZXlVc2VyIiwiY29udHJvbERhdGEiLCJ0eXBlIiwiZW51bSIsImVudW1zIiwidmFsdWUiLCJwdXNoIiwiY29uZmlnUGF0aCIsImRlc2lnblRpbWUiLCJhY3Rpb25zIiwidGV4dEFycmFuZ2VtZW50IiwiZ2V0VGV4dEFycmFuZ2VtZW50Q2hhbmdlQWN0aW9uIiwicmVuYW1lIiwiZ2V0UmVuYW1lQWN0aW9uIiwic2V0dGluZ3MiLCJmZSIsImdldFRleHQiLCJpY29uIiwiaGFuZGxlciIsInVuY2hhbmdlZERhdGEiLCJjb25maWdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJpc0NvbmZpZ01vZGVsUHJlcGFyZWQiLCJnZXRTZXR0aW5nc0lmS2V5VXNlciIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwicHJlcGFyZUNvbmZpZ01vZGVsIiwicGVyc29uYWxpemF0aW9uIiwiZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyIsInJlc291cmNlTW9kZWwiLCJnZXRNb2RlbCIsIm9wZW5BZGFwdGlvbkRpYWxvZyIsIndpZHRoIiwiaGVpZ2h0IiwidGhlbiIsInByb3BlcnR5VmFsdWVzRW50ZXJlZCIsInByb3BlcnR5UGF0aCIsImdldFByb3BlcnR5UGF0aCIsImV4dHJhY3RDaGFuZ2VzIiwibm9DaGFuZ2VzIiwicHJvcGVydGllcyIsImJ1c3lJbmRpY2F0b3JEZWxheSIsImlnbm9yZSIsImVuYWJsZUNvbHVtblJlc2l6ZSIsImhlYWRlckxldmVsIiwibXVsdGlTZWxlY3RNb2RlIiwic2hvd1Bhc3RlQnV0dG9uIiwic2hvd1Jvd0NvdW50IiwiYWdncmVnYXRpb25zIiwibWFuaWZlc3RTZXR0aW5ncyIsImZpbHRlciIsIml0ZW0iLCJnZXRQcm9wZXJ0eU5hbWVzQW5kRGVzY3JpcHRpb25zIiwibWFuaWZlc3RTZXR0aW5nc1ZhbHVlcyIsInJldHVyblZhbHVlcyIsInByb3BlcnR5SW5kZXgiLCJwYXRoIiwibWFuaWZlc3RQcm9wZXJ0eVBhdGgiLCJtYW5pZmVzdFByb3BlcnR5Q2hhbmdlIiwicHJvcGVydHlDaGFuZ2VzIiwic2VwYXJhdGVDaGFuZ2VzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZS5kZXNpZ250aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogRmluZCB0aGUgY3VycmVudCB2YWx1ZXMgb2YgdGhlIHRhYmxlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyBwcm92aWRlZCBpbiB0aGUgdGFibGUgYWRhcHQgZGlhbG9nXG4gKi9cblxuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuXG5pbXBvcnQgeyBnZXRSZW5hbWVBY3Rpb24sIGdldFRleHQsIGdldFRleHRBcnJhbmdlbWVudENoYW5nZUFjdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0Fubm90YXRpb25CYXNlZENoYW5nZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0RGVzaWdudGltZVNldHRpbmcsXG5cdERlc2lnbnRpbWVTZXR0aW5nRW51bXMsXG5cdFByb3BlcnR5VmFsdWUsXG5cdFNldHRpbmdzRGF0YSxcblx0YWRhcHRpb25DaGFuZ2Vcbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZGVzaWdudGltZS9EZXNpZ250aW1lLmhlbHBlclwiO1xuaW1wb3J0IHtcblx0ZXh0cmFjdENoYW5nZXMsXG5cdGdldFBlcnNvbmFsaXphdGlvblNldHRpbmcsXG5cdGdldFByb3BlcnR5TmFtZXNBbmREZXNjcmlwdGlvbnMsXG5cdGdldFNldHRpbmdzSWZLZXlVc2VyLFxuXHRpc0NvbmZpZ01vZGVsUHJlcGFyZWQsXG5cdG5vQ2hhbmdlcyxcblx0b3BlbkFkYXB0aW9uRGlhbG9nLFxuXHRwcmVwYXJlQ29uZmlnTW9kZWwsXG5cdHNlcGFyYXRlQ2hhbmdlc1xufSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9kZXNpZ250aW1lL0Rlc2lnbnRpbWUuaGVscGVyXCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IHsgZ2V0RGVzaWdudGltZVNldHRpbmdzLCBnZXRQcm9wZXJ0eVBhdGggfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9kZXNpZ250aW1lL1RhYmxlLmRlc2lnbnRpbWUuaGVscGVyXCI7XG5pbXBvcnQgdHlwZSBNRENUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxudHlwZSBDb250cm9sRGF0YSA9IHtcblx0dHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRlbnVtOiBEZXNpZ250aW1lU2V0dGluZ0VudW1zW10gfCB1bmRlZmluZWQ7XG5cdHZhbHVlOiB1bmtub3duO1xuXHRpZDogc3RyaW5nO1xufTtcbi8vIERvbid0IHBhc3MgdGhlc2UgcHJvcGVydGllcyB0byBmaW9yaSB0b29scyBwcm9jZXNzaW5nIGZvciB0aGUgY29udHJvbCBwYW5lbCBmb3IgdGFibGUuIEN1cnJlbnRseSB0aGUgY29tYmluYXRpb25cbi8vIG9mIGJvb2xlYW4gcHJvcGVydHkgcGx1cyBmdXJ0aGVyIG9wdGlvbiBvZiBmaXhlZCBsaXN0IGlzIG5vdCBzdXBwb3J0ZWRcbmNvbnN0IGl0ZW1zVG9SZW1vdmUgPSBbXG5cdFwicGVyc29uYWxpemF0aW9uXCIsXG5cdFwicGVyc29uYWxpemF0aW9uU29ydFwiLFxuXHRcInBlcnNvbmFsaXphdGlvbkNvbHVtblwiLFxuXHRcInBlcnNvbmFsaXphdGlvbkZpbHRlclwiLFxuXHRcInBlcnNvbmFsaXphdGlvbkdyb3VwXCIsXG5cdFwicGVyc29uYWxpemF0aW9uQWdncmVnYXRlXCJcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBZGFwdGF0aW9uUHJvcGVydGllcyhkZXNpZ250aW1lU2V0dGluZ3M6IERlc2lnbnRpbWVTZXR0aW5nW10sIGNvbnRyb2w6IE1EQ1RhYmxlKTogUHJvcGVydHlWYWx1ZSB7XG5cdGNvbnN0IHByb3BlcnR5VmFsdWVzOiBQcm9wZXJ0eVZhbHVlID0ge307XG5cdGRlc2lnbnRpbWVTZXR0aW5ncy5mb3JFYWNoKGZ1bmN0aW9uIChzZXR0aW5nKSB7XG5cdFx0cHJvcGVydHlWYWx1ZXNbc2V0dGluZy5pZF0gPSBnZXRBZGFwdGF0aW9uUHJvcGVydHlWYWx1ZShjb250cm9sLCBzZXR0aW5nKTtcblx0fSk7XG5cdHJldHVybiBwcm9wZXJ0eVZhbHVlcztcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgdmFsdWUgb2Ygb25lIG9mIHRoZSBzZXR0aW5ncyB0aGF0IGhhdmUgYmVlbiBkZWZpbmVkIGZvciB0YWJsZSBhZGFwdGF0aW9uLlxuICogQHBhcmFtIGNvbnRyb2wgUmVmZXJlbmNlIHRvIHNlbGVjdGVkIHRhYmxlXG4gKiBAcGFyYW0gc2V0dGluZyBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgc2V0dGluZyByZXF1aXJlZCBmb3IgYWRhcHRhdGlvblxuICogQHJldHVybnMgU2V0dGluZyBkZWZpbml0aW9uIHdpdGggYSB2YWx1ZSBmb3Igc2VsZWN0ZWQgY29udHJvbFxuICovXG5mdW5jdGlvbiBnZXRBZGFwdGF0aW9uUHJvcGVydHlWYWx1ZShjb250cm9sOiBNRENUYWJsZSwgc2V0dGluZzogRGVzaWdudGltZVNldHRpbmcpOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyIHtcblx0Y29uc3QgdGFibGUgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJO1xuXHRjb25zdCB0YWJsZURlZmluaXRpb24gPSB0YWJsZS5nZXRQcm9wZXJ0eShcInRhYmxlRGVmaW5pdGlvblwiKTtcblx0bGV0IHJldHVyblZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyID0gXCJcIjtcblxuXHRzd2l0Y2ggKHNldHRpbmcuaWQpIHtcblx0XHRjYXNlIFwiaGVhZGVyVmlzaWJsZVwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uaGVhZGVyVmlzaWJsZTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJoZWFkZXJcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmhlYWRlcjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJlbmFibGVGdWxsU2NyZWVuXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmVuYWJsZUZ1bGxTY3JlZW47XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiZW5hYmxlRXhwb3J0XCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmVuYWJsZUV4cG9ydDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJ0eXBlXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IGNvbnRyb2wuZGF0YShcInRhYmxlVHlwZVwiKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJjcmVhdGlvbk1vZGVOYW1lXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmNyZWF0aW9uTW9kZTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJjcmVhdGlvbk1vZGVDcmVhdGVBdEVuZFwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5jcmVhdGVBdEVuZDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJmcm96ZW5Db2x1bW5Db3VudFwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5mcm96ZW5Db2x1bW5Db3VudDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJzaG93Q291bnRzXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmZpbHRlcnM/LnF1aWNrRmlsdGVycz8uc2hvd0NvdW50cztcblx0XHRcdGJyZWFrO1xuXHRcdC8qIGNhc2UgXCJoaWRlVGFibGVUaXRsZVwiOlxuXHRcdFx0cHJvcGVydHlWYWx1ZXMuaGlkZVRhYmxlVGl0bGUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5maWx0ZXJzPy5xdWlja0ZpbHRlcnMgJiYgIXRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmhlYWRlclZpc2libGU7XG5cdFx0XHRicmVhazsgKi9cblx0XHRjYXNlIFwicGVyc29uYWxpemF0aW9uXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IGNvbnRyb2wuZ2V0UDEzbk1vZGUoKS5sZW5ndGggPT09IDAgPyBcIkZhbHNlXCIgOiBcIlRydWVcIjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJwZXJzb25hbGl6YXRpb25Tb3J0XCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IGNvbnRyb2wuZ2V0UDEzbk1vZGUoKS5pbmNsdWRlcyhcIlNvcnRcIik7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwicGVyc29uYWxpemF0aW9uQ29sdW1uXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IGNvbnRyb2wuZ2V0UDEzbk1vZGUoKS5pbmNsdWRlcyhcIkNvbHVtblwiKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJwZXJzb25hbGl6YXRpb25GaWx0ZXJcIjpcblx0XHRcdHJldHVyblZhbHVlID0gY29udHJvbC5nZXRQMTNuTW9kZSgpLmluY2x1ZGVzKFwiRmlsdGVyXCIpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInBlcnNvbmFsaXphdGlvbkdyb3VwXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IGNvbnRyb2wuZ2V0UDEzbk1vZGUoKS5pbmNsdWRlcyhcIkdyb3VwXCIpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInBlcnNvbmFsaXphdGlvbkFnZ3JlZ2F0ZVwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSBjb250cm9sLmdldFAxM25Nb2RlKCkuaW5jbHVkZXMoXCJBZ2dyZWdhdGVcIik7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwicm93Q291bnRcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wucm93Q291bnQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwicm93Q291bnRNb2RlXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnJvd0NvdW50TW9kZTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJjb25kZW5zZWRUYWJsZUxheW91dFwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC51c2VDb25kZW5zZWRUYWJsZUxheW91dDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJ3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC53aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJzZWxlY3Rpb25Nb2RlXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5hbm5vdGF0aW9uLnNlbGVjdGlvbk1vZGU7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwic2VsZWN0QWxsXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnNlbGVjdGlvbkxpbWl0ID09PSAwO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInRocmVzaG9sZFwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC50aHJlc2hvbGQgPz8gdGFibGVEZWZpbml0aW9uLmFubm90YXRpb24udGhyZXNob2xkO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInNjcm9sbFRocmVzaG9sZFwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5zY3JvbGxUaHJlc2hvbGQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwic2VsZWN0aW9uTGltaXRcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuc2VsZWN0aW9uTGltaXQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiaGllcmFyY2h5UXVhbGlmaWVyXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmhpZXJhcmNoeVF1YWxpZmllcjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJlbmFibGVNYXNzRWRpdFwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5tYXNzRWRpdC5lbmFibGVkO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImVuYWJsZU1hc3NFZGl0VmlzaWJsZUZpZWxkc1wiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5tYXNzRWRpdC52aXNpYmxlRmllbGRzO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImVuYWJsZU1hc3NFZGl0SWdub3JlZEZpZWxkc1wiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5tYXNzRWRpdC5pZ25vcmVGaWVsZHM7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiZW5hYmxlQWRkQ2FyZFRvSW5zaWdodHNcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZW5hYmxlQWRkQ2FyZFRvSW5zaWdodHM7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiYmVmb3JlUmViaW5kVGFibGVcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuYmVmb3JlUmViaW5kVGFibGU7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwic2VsZWN0aW9uQ2hhbmdlXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnNlbGVjdGlvbkNoYW5nZTtcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiByZXR1cm5WYWx1ZTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgc2V0dGluZ3MgYW5kIHZhbHVlcyBmb3IgYSB0YWJsZSBmb3JtYXR0ZWQgZm9yIHRoZSBhZGFwdGF0aW9uIGRpYWxvZyBjb250ZW50LlxuICogQHBhcmFtIHRhYmxlQVBJIFJlZmVyZW5jZSB0byBzZWxlY3RlZCB0YWJsZVxuICogQHBhcmFtIHByb3BlcnR5VmFsdWVzIFRoZSBsaXN0IG9mIHByb3BlcnRpZXMgYW5kIHZhbHVlcyBmb3IgdGhlIHNlbGVjdGVkIHRhYmxlXG4gKiBAcmV0dXJucyBGb3JtYXR0ZWQgbGlzdCBmb3IgdGhlIGFkYXB0YXRpb24gZGlhbG9nXG4gKi9cbmZ1bmN0aW9uIGdldFNldHRpbmdzKHRhYmxlQVBJOiBUYWJsZUFQSSwgcHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWUpOiBTZXR0aW5nc0RhdGFbXSB7XG5cdGNvbnN0IGl0ZW1zOiBTZXR0aW5nc0RhdGFbXSA9IFtdO1xuXG5cdGdldERlc2lnbnRpbWVTZXR0aW5ncyh0YWJsZUFQSSkuZm9yRWFjaChmdW5jdGlvbiAobWFuaWZlc3RTZXR0aW5nKSB7XG5cdFx0Ly9GaWxsIG1vZGVsIGZvciBhZGFwdGF0aW9uIHNldHRpbmdzIGRhdGFcblx0XHRjb25zdCBzZXR0aW5nc0RhdGE6IFNldHRpbmdzRGF0YSA9IHtcblx0XHRcdGxhYmVsOiBtYW5pZmVzdFNldHRpbmcubmFtZSxcblx0XHRcdHRvb2x0aXA6IG1hbmlmZXN0U2V0dGluZy5kZXNjcmlwdGlvbixcblx0XHRcdGNvbnRyb2w6IFtdLFxuXHRcdFx0a2V5VXNlcjogbWFuaWZlc3RTZXR0aW5nLmtleVVzZXJcblx0XHR9O1xuXG5cdFx0Y29uc3QgY29udHJvbERhdGE6IENvbnRyb2xEYXRhID0ge1xuXHRcdFx0dHlwZTogbWFuaWZlc3RTZXR0aW5nLnR5cGUsXG5cdFx0XHRlbnVtOiBtYW5pZmVzdFNldHRpbmcuZW51bXMsXG5cdFx0XHR2YWx1ZTogcHJvcGVydHlWYWx1ZXNbbWFuaWZlc3RTZXR0aW5nLmlkXSxcblx0XHRcdGlkOiBtYW5pZmVzdFNldHRpbmcuaWRcblx0XHR9O1xuXG5cdFx0c2V0dGluZ3NEYXRhLmNvbnRyb2wucHVzaChjb250cm9sRGF0YSk7XG5cdFx0aXRlbXMucHVzaChzZXR0aW5nc0RhdGEpO1xuXHR9KTtcblx0cmV0dXJuIGl0ZW1zO1xufVxuXG5jb25zdCBjb25maWdQYXRoID0gXCJydGEvY29uZmlnU2V0dGluZ3NcIjtcblxuY29uc3QgZGVzaWduVGltZSA9IHtcblx0YWN0aW9uczoge1xuXHRcdGFubm90YXRpb246IHtcblx0XHRcdHRleHRBcnJhbmdlbWVudDogZ2V0VGV4dEFycmFuZ2VtZW50Q2hhbmdlQWN0aW9uKCksXG5cdFx0XHRyZW5hbWU6IGdldFJlbmFtZUFjdGlvbigpXG5cdFx0fSxcblx0XHRzZXR0aW5nczoge1xuXHRcdFx0ZmU6IHtcblx0XHRcdFx0bmFtZTogZ2V0VGV4dChcIlJUQV9DT05URVhUX0FDVElPTk1FTlVfQ09ORklHXCIpLFxuXHRcdFx0XHRpY29uOiBcInNhcC1pY29uOi8vZGV2ZWxvcGVyLXNldHRpbmdzXCIsXG5cdFx0XHRcdGhhbmRsZXI6IGFzeW5jIGZ1bmN0aW9uIChjb250cm9sOiBNRENUYWJsZSk6IFByb21pc2U8YWRhcHRpb25DaGFuZ2VbXT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRhYmxlQVBJID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSTtcblx0XHRcdFx0XHRjb25zdCBkZXNpZ250aW1lU2V0dGluZ3MgPSBnZXREZXNpZ250aW1lU2V0dGluZ3ModGFibGVBUEkpO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzID0gZ2V0QWRhcHRhdGlvblByb3BlcnRpZXMoZGVzaWdudGltZVNldHRpbmdzLCBjb250cm9sKTtcblx0XHRcdFx0XHRjb25zdCB1bmNoYW5nZWREYXRhID0geyAuLi5wcm9wZXJ0eVZhbHVlcyB9O1xuXHRcdFx0XHRcdGNvbnN0IGNvbmZpZ0NvbnRleHQgPSBjb250cm9sLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgQ29udGV4dDtcblx0XHRcdFx0XHRpZiAoIWlzQ29uZmlnTW9kZWxQcmVwYXJlZChjb25maWdDb250ZXh0LCBjb25maWdQYXRoKSkge1xuXHRcdFx0XHRcdFx0Ly8gZmlyc3QgdGltZSB0aGlzIHNlc3Npb25cblx0XHRcdFx0XHRcdGxldCBpdGVtcyA9IGdldFNldHRpbmdzKHRhYmxlQVBJLCBwcm9wZXJ0eVZhbHVlcyk7XG5cdFx0XHRcdFx0XHRpdGVtcyA9IGdldFNldHRpbmdzSWZLZXlVc2VyKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChjb250cm9sKSwgaXRlbXMpO1xuXHRcdFx0XHRcdFx0Ly8gdXNlIGludGVybmFsIG1vZGVsIHRvIHBlcnNpc3QgYWRhcHRhdGlvbiBjb25maWd1cmF0aW9uIHZhbHVlc1xuXHRcdFx0XHRcdFx0cHJlcGFyZUNvbmZpZ01vZGVsKGl0ZW1zLCBjb25maWdDb250ZXh0LCBjb25maWdQYXRoKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gc2V0IHBlcnNvbmFsaXphdGlvbiB0byAnT3duIFNldHRpbmdzJyBpZiB0aGF0IHdhcyBjaG9zZW4gcHJldmlvdXNseVxuXHRcdFx0XHRcdFx0Ly8gYXMgdGhpcyBzZXR0aW5nIGNhbm5vdCBiZSByZXRyaXZlZCBmcm9tIHRoZSBjb250cm9sLCBhbmQgd2lsbCBiZSBhbHdheXMgdHJ1ZSBpZiBwZXJzb25hbGl6YXRpb24gaXMgZW5hYmxlZFxuXHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXMucGVyc29uYWxpemF0aW9uID0gZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyhjb25maWdDb250ZXh0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsO1xuXHRcdFx0XHRcdHJldHVybiBvcGVuQWRhcHRpb25EaWFsb2coXG5cdFx0XHRcdFx0XHRjb25maWdDb250ZXh0LFxuXHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXMsXG5cdFx0XHRcdFx0XHRcIntzYXAuZmUuaTE4bj5SVEFfQ09ORklHVVJBVElPTl9USVRMRV9UQUJMRX1cIixcblx0XHRcdFx0XHRcdHJlc291cmNlTW9kZWwsXG5cdFx0XHRcdFx0XHRjb25maWdQYXRoLFxuXHRcdFx0XHRcdFx0XCJ7c2FwLmZlLmkxOG4+UlRBX0NPTkZJR1VSQVRJT05fSU5GT19NRVNTQUdFX1RBQkxFfVwiLFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR3aWR0aDogXCI2NTBweFwiLFxuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IFwiODAwcHhcIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCkudGhlbihmdW5jdGlvbiAocHJvcGVydHlWYWx1ZXNFbnRlcmVkOiBQcm9wZXJ0eVZhbHVlKTogYWRhcHRpb25DaGFuZ2VbXSB8IFtdIHtcblx0XHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IGdldFByb3BlcnR5UGF0aChjb250cm9sLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKTtcblx0XHRcdFx0XHRcdHJldHVybiBleHRyYWN0Q2hhbmdlcyhkZXNpZ250aW1lU2V0dGluZ3MsIHVuY2hhbmdlZERhdGEsIHByb3BlcnR5VmFsdWVzRW50ZXJlZCwgcHJvcGVydHlQYXRoLCBjb250cm9sKTtcblx0XHRcdFx0XHR9LCBub0NoYW5nZXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHQvLyBXZSBkaXNhYmxlIG1kYyB0YWJsZSBwcm9wZXJ0aWVzIGluIHRoZSBwcm9wZXJ0eSBwYW5lbCBvZiBGaW9yaSBUb29sc1xuXHRwcm9wZXJ0aWVzOiB7XG5cdFx0YnVzeUluZGljYXRvckRlbGF5OiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGVuYWJsZUNvbHVtblJlc2l6ZTogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRlbmFibGVFeHBvcnQ6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0aGVhZGVyOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGhlYWRlckxldmVsOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGhlYWRlclZpc2libGU6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0bXVsdGlTZWxlY3RNb2RlOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdHNob3dQYXN0ZUJ1dHRvbjogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRzaG93Um93Q291bnQ6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0dGhyZXNob2xkOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdHdpZHRoOiB7IGlnbm9yZTogdHJ1ZSB9XG5cdH0sXG5cdGFnZ3JlZ2F0aW9uczoge30sXG5cblx0Ly8gVGhlc2UgZnVuY3Rpb25zIHByb3ZpZGUgdGhlIHByb3BlcnRpZXMgdXNlZCBpbiB0YWJsZSBhZGFwdGlvbiB0byBGaW9yaSB0b29scy5cblx0bWFuaWZlc3RTZXR0aW5nczogZnVuY3Rpb24gKGNvbnRyb2w6IE1EQ1RhYmxlKTogRGVzaWdudGltZVNldHRpbmdbXSB7XG5cdFx0Y29uc3QgdGFibGUgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJO1xuXHRcdGNvbnN0IGRlc2lnbnRpbWVTZXR0aW5ncyA9IGdldERlc2lnbnRpbWVTZXR0aW5ncyh0YWJsZSkuZmlsdGVyKChpdGVtKSA9PiAhaXRlbXNUb1JlbW92ZS5pbmNsdWRlcyhpdGVtLmlkKSk7XG5cdFx0cmV0dXJuIGdldFByb3BlcnR5TmFtZXNBbmREZXNjcmlwdGlvbnMoZGVzaWdudGltZVNldHRpbmdzLCBjb250cm9sLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCk7XG5cdH0sXG5cdC8vIGdldEFkYXB0aW9uUHJvcGVydHlWYWx1ZVxuXHRtYW5pZmVzdFNldHRpbmdzVmFsdWVzOiBmdW5jdGlvbiAoZGVzaWdudGltZVNldHRpbmdzOiBEZXNpZ250aW1lU2V0dGluZ1tdLCBjb250cm9sOiBNRENUYWJsZSk6IFByb3BlcnR5VmFsdWUge1xuXHRcdGNvbnN0IHJldHVyblZhbHVlczogUHJvcGVydHlWYWx1ZSA9IHt9O1xuXHRcdGRlc2lnbnRpbWVTZXR0aW5ncy5mb3JFYWNoKGZ1bmN0aW9uIChzZXR0aW5nKSB7XG5cdFx0XHRsZXQgcHJvcGVydHlJbmRleDtcblx0XHRcdGlmIChzZXR0aW5nLnBhdGgpIHtcblx0XHRcdFx0cHJvcGVydHlJbmRleCA9IHNldHRpbmcucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHByb3BlcnR5SW5kZXggPSBzZXR0aW5nLmlkO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuVmFsdWVzW3Byb3BlcnR5SW5kZXhdID0gZ2V0QWRhcHRhdGlvblByb3BlcnR5VmFsdWUoY29udHJvbCwgc2V0dGluZyk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJldHVyblZhbHVlcztcblx0fSxcblx0Ly8gZ2V0IHBhdGggZm9yIGNvbnRyb2wgY29uZmlndXJhdGlvbi4gUGFzcyByZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2xcblx0bWFuaWZlc3RQcm9wZXJ0eVBhdGg6IGZ1bmN0aW9uIChjb250cm9sOiBNRENUYWJsZSk6IHN0cmluZyB7XG5cdFx0Y29uc3QgdGFibGUgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJO1xuXHRcdHJldHVybiBnZXRQcm9wZXJ0eVBhdGgodGFibGUpO1xuXHR9LFxuXHQvLyBjcmVhdGUgY2hhbmdlIHN0cnVjdHVlLiBQYXNzIGFycmF5IG9mIG1hbmlmZXN0IHNldHRpbmcgYW5kIG5ldyB2YWx1ZSwgdGhlIHByb3BlcnR5IHBhdGggYW5kIHRoZSBjb250cm9sXG5cdG1hbmlmZXN0UHJvcGVydHlDaGFuZ2U6IGZ1bmN0aW9uIChwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5VmFsdWUsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBjb250cm9sOiBNRENUYWJsZSk6IGFkYXB0aW9uQ2hhbmdlW10ge1xuXHRcdHJldHVybiBzZXBhcmF0ZUNoYW5nZXMocHJvcGVydHlDaGFuZ2VzLCBwcm9wZXJ0eVBhdGgsIGNvbnRyb2wpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBkZXNpZ25UaW1lO1xuIl0sIm1hcHBpbmdzIjoi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
|
|
287
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpdGVtc1RvUmVtb3ZlIiwiZ2V0QWRhcHRhdGlvblByb3BlcnRpZXMiLCJkZXNpZ250aW1lU2V0dGluZ3MiLCJjb250cm9sIiwicHJvcGVydHlWYWx1ZXMiLCJmb3JFYWNoIiwic2V0dGluZyIsImlkIiwiZ2V0QWRhcHRhdGlvblByb3BlcnR5VmFsdWUiLCJfZXhwb3J0cyIsInRhYmxlIiwiZ2V0UGFyZW50IiwidGFibGVEZWZpbml0aW9uIiwiZ2V0UHJvcGVydHkiLCJyZXR1cm5WYWx1ZSIsImhlYWRlclZpc2libGUiLCJoZWFkZXIiLCJlbmFibGVGdWxsU2NyZWVuIiwiZW5hYmxlRXhwb3J0IiwiZGF0YSIsImNyZWF0aW9uTW9kZSIsImNyZWF0ZUF0RW5kIiwiZnJvemVuQ29sdW1uQ291bnQiLCJmaWx0ZXJzIiwicXVpY2tGaWx0ZXJzIiwic2hvd0NvdW50cyIsImdldFAxM25Nb2RlIiwibGVuZ3RoIiwiaW5jbHVkZXMiLCJyb3dDb3VudCIsInJvd0NvdW50TW9kZSIsInVzZUNvbmRlbnNlZFRhYmxlTGF5b3V0Iiwid2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIiLCJhbm5vdGF0aW9uIiwic2VsZWN0aW9uTW9kZSIsInNlbGVjdGlvbkxpbWl0IiwidGhyZXNob2xkIiwic2Nyb2xsVGhyZXNob2xkIiwiaGllcmFyY2h5UXVhbGlmaWVyIiwibWFzc0VkaXQiLCJlbmFibGVkIiwidmlzaWJsZUZpZWxkcyIsImlnbm9yZUZpZWxkcyIsImVuYWJsZUFkZENhcmRUb0luc2lnaHRzIiwiYmVmb3JlUmViaW5kVGFibGUiLCJzZWxlY3Rpb25DaGFuZ2UiLCJnZXRTZXR0aW5ncyIsInRhYmxlQVBJIiwiaXRlbXMiLCJnZXREZXNpZ250aW1lU2V0dGluZ3MiLCJtYW5pZmVzdFNldHRpbmciLCJzZXR0aW5nc0RhdGEiLCJsYWJlbCIsIm5hbWUiLCJ0b29sdGlwIiwiZGVzY3JpcHRpb24iLCJrZXlVc2VyIiwiY29udHJvbERhdGEiLCJ0eXBlIiwiZW51bSIsImVudW1zIiwidmFsdWUiLCJwdXNoIiwiY29uZmlnUGF0aCIsImRlc2lnblRpbWUiLCJhY3Rpb25zIiwidGV4dEFycmFuZ2VtZW50IiwiZ2V0VGV4dEFycmFuZ2VtZW50Q2hhbmdlQWN0aW9uIiwicmVuYW1lIiwiZ2V0UmVuYW1lQWN0aW9uIiwic2V0dGluZ3MiLCJmZSIsImdldFRleHQiLCJpY29uIiwiaXNFbmFibGVkIiwiaXNNYW5pZmVzdENoYW5nZXNFbmFibGVkIiwiaGFuZGxlciIsInVuY2hhbmdlZERhdGEiLCJjb25maWdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJpc0NvbmZpZ01vZGVsUHJlcGFyZWQiLCJnZXRTZXR0aW5nc0lmS2V5VXNlciIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwicHJlcGFyZUNvbmZpZ01vZGVsIiwicGVyc29uYWxpemF0aW9uIiwiZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyIsInJlc291cmNlTW9kZWwiLCJnZXRNb2RlbCIsIm9wZW5BZGFwdGlvbkRpYWxvZyIsIndpZHRoIiwiaGVpZ2h0IiwidGhlbiIsInByb3BlcnR5VmFsdWVzRW50ZXJlZCIsInByb3BlcnR5UGF0aCIsImdldFByb3BlcnR5UGF0aCIsImV4dHJhY3RDaGFuZ2VzIiwibm9DaGFuZ2VzIiwicHJvcGVydGllcyIsImJ1c3lJbmRpY2F0b3JEZWxheSIsImlnbm9yZSIsImVuYWJsZUNvbHVtblJlc2l6ZSIsImhlYWRlckxldmVsIiwibXVsdGlTZWxlY3RNb2RlIiwic2hvd1Bhc3RlQnV0dG9uIiwic2hvd1Jvd0NvdW50IiwiYWdncmVnYXRpb25zIiwibWFuaWZlc3RTZXR0aW5ncyIsImZpbHRlciIsIml0ZW0iLCJnZXRQcm9wZXJ0eU5hbWVzQW5kRGVzY3JpcHRpb25zIiwibWFuaWZlc3RTZXR0aW5nc1ZhbHVlcyIsInJldHVyblZhbHVlcyIsInByb3BlcnR5SW5kZXgiLCJwYXRoIiwibWFuaWZlc3RQcm9wZXJ0eVBhdGgiLCJtYW5pZmVzdFByb3BlcnR5Q2hhbmdlIiwicHJvcGVydHlDaGFuZ2VzIiwic2VwYXJhdGVDaGFuZ2VzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJUYWJsZS5kZXNpZ250aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogRmluZCB0aGUgY3VycmVudCB2YWx1ZXMgb2YgdGhlIHRhYmxlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyBwcm92aWRlZCBpbiB0aGUgdGFibGUgYWRhcHQgZGlhbG9nXG4gKi9cblxuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuXG5pbXBvcnQgeyBnZXRSZW5hbWVBY3Rpb24sIGdldFRleHQsIGdldFRleHRBcnJhbmdlbWVudENoYW5nZUFjdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9kZXNpZ250aW1lL0Fubm90YXRpb25CYXNlZENoYW5nZXNcIjtcbmltcG9ydCB0eXBlIHtcblx0RGVzaWdudGltZVNldHRpbmcsXG5cdERlc2lnbnRpbWVTZXR0aW5nRW51bXMsXG5cdFByb3BlcnR5VmFsdWUsXG5cdFNldHRpbmdzRGF0YSxcblx0YWRhcHRpb25DaGFuZ2Vcbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZGVzaWdudGltZS9EZXNpZ250aW1lLmhlbHBlclwiO1xuaW1wb3J0IHtcblx0ZXh0cmFjdENoYW5nZXMsXG5cdGdldFBlcnNvbmFsaXphdGlvblNldHRpbmcsXG5cdGdldFByb3BlcnR5TmFtZXNBbmREZXNjcmlwdGlvbnMsXG5cdGdldFNldHRpbmdzSWZLZXlVc2VyLFxuXHRpc0NvbmZpZ01vZGVsUHJlcGFyZWQsXG5cdGlzTWFuaWZlc3RDaGFuZ2VzRW5hYmxlZCxcblx0bm9DaGFuZ2VzLFxuXHRvcGVuQWRhcHRpb25EaWFsb2csXG5cdHByZXBhcmVDb25maWdNb2RlbCxcblx0c2VwYXJhdGVDaGFuZ2VzXG59IGZyb20gXCJzYXAvZmUvbWFjcm9zL2Rlc2lnbnRpbWUvRGVzaWdudGltZS5oZWxwZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQVBJXCI7XG5pbXBvcnQgeyBnZXREZXNpZ250aW1lU2V0dGluZ3MsIGdldFByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL2Rlc2lnbnRpbWUvVGFibGUuZGVzaWdudGltZS5oZWxwZXJcIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG50eXBlIENvbnRyb2xEYXRhID0ge1xuXHR0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGVudW06IERlc2lnbnRpbWVTZXR0aW5nRW51bXNbXSB8IHVuZGVmaW5lZDtcblx0dmFsdWU6IHVua25vd247XG5cdGlkOiBzdHJpbmc7XG59O1xuLy8gRG9uJ3QgcGFzcyB0aGVzZSBwcm9wZXJ0aWVzIHRvIGZpb3JpIHRvb2xzIHByb2Nlc3NpbmcgZm9yIHRoZSBjb250cm9sIHBhbmVsIGZvciB0YWJsZS4gQ3VycmVudGx5IHRoZSBjb21iaW5hdGlvblxuLy8gb2YgYm9vbGVhbiBwcm9wZXJ0eSBwbHVzIGZ1cnRoZXIgb3B0aW9uIG9mIGZpeGVkIGxpc3QgaXMgbm90IHN1cHBvcnRlZFxuY29uc3QgaXRlbXNUb1JlbW92ZSA9IFtcblx0XCJwZXJzb25hbGl6YXRpb25cIixcblx0XCJwZXJzb25hbGl6YXRpb25Tb3J0XCIsXG5cdFwicGVyc29uYWxpemF0aW9uQ29sdW1uXCIsXG5cdFwicGVyc29uYWxpemF0aW9uRmlsdGVyXCIsXG5cdFwicGVyc29uYWxpemF0aW9uR3JvdXBcIixcblx0XCJwZXJzb25hbGl6YXRpb25BZ2dyZWdhdGVcIlxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkYXB0YXRpb25Qcm9wZXJ0aWVzKGRlc2lnbnRpbWVTZXR0aW5nczogRGVzaWdudGltZVNldHRpbmdbXSwgY29udHJvbDogTURDVGFibGUpOiBQcm9wZXJ0eVZhbHVlIHtcblx0Y29uc3QgcHJvcGVydHlWYWx1ZXM6IFByb3BlcnR5VmFsdWUgPSB7fTtcblx0ZGVzaWdudGltZVNldHRpbmdzLmZvckVhY2goZnVuY3Rpb24gKHNldHRpbmcpIHtcblx0XHRwcm9wZXJ0eVZhbHVlc1tzZXR0aW5nLmlkXSA9IGdldEFkYXB0YXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnRyb2wsIHNldHRpbmcpO1xuXHR9KTtcblx0cmV0dXJuIHByb3BlcnR5VmFsdWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiBvbmUgb2YgdGhlIHNldHRpbmdzIHRoYXQgaGF2ZSBiZWVuIGRlZmluZWQgZm9yIHRhYmxlIGFkYXB0YXRpb24uXG4gKiBAcGFyYW0gY29udHJvbCBSZWZlcmVuY2UgdG8gc2VsZWN0ZWQgdGFibGVcbiAqIEBwYXJhbSBzZXR0aW5nIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBzZXR0aW5nIHJlcXVpcmVkIGZvciBhZGFwdGF0aW9uXG4gKiBAcmV0dXJucyBTZXR0aW5nIGRlZmluaXRpb24gd2l0aCBhIHZhbHVlIGZvciBzZWxlY3RlZCBjb250cm9sXG4gKi9cbmZ1bmN0aW9uIGdldEFkYXB0YXRpb25Qcm9wZXJ0eVZhbHVlKGNvbnRyb2w6IE1EQ1RhYmxlLCBzZXR0aW5nOiBEZXNpZ250aW1lU2V0dGluZyk6IGJvb2xlYW4gfCBzdHJpbmcgfCBudW1iZXIge1xuXHRjb25zdCB0YWJsZSA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgVGFibGVBUEk7XG5cdGNvbnN0IHRhYmxlRGVmaW5pdGlvbiA9IHRhYmxlLmdldFByb3BlcnR5KFwidGFibGVEZWZpbml0aW9uXCIpO1xuXHRsZXQgcmV0dXJuVmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudW1iZXIgPSBcIlwiO1xuXG5cdHN3aXRjaCAoc2V0dGluZy5pZCkge1xuXHRcdGNhc2UgXCJoZWFkZXJWaXNpYmxlXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5oZWFkZXJWaXNpYmxlO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImhlYWRlclwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uaGVhZGVyO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImVuYWJsZUZ1bGxTY3JlZW5cIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZW5hYmxlRnVsbFNjcmVlbjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJlbmFibGVFeHBvcnRcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZW5hYmxlRXhwb3J0O1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInR5cGVcIjpcblx0XHRcdHJldHVyblZhbHVlID0gY29udHJvbC5kYXRhKFwidGFibGVUeXBlXCIpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImNyZWF0aW9uTW9kZU5hbWVcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuY3JlYXRpb25Nb2RlO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImNyZWF0aW9uTW9kZUNyZWF0ZUF0RW5kXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmNyZWF0ZUF0RW5kO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImZyb3plbkNvbHVtbkNvdW50XCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmZyb3plbkNvbHVtbkNvdW50O1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInNob3dDb3VudHNcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuZmlsdGVycz8ucXVpY2tGaWx0ZXJzPy5zaG93Q291bnRzO1xuXHRcdFx0YnJlYWs7XG5cdFx0LyogY2FzZSBcImhpZGVUYWJsZVRpdGxlXCI6XG5cdFx0XHRwcm9wZXJ0eVZhbHVlcy5oaWRlVGFibGVUaXRsZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmZpbHRlcnM/LnF1aWNrRmlsdGVycyAmJiAhdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaGVhZGVyVmlzaWJsZTtcblx0XHRcdGJyZWFrOyAqL1xuXHRcdGNhc2UgXCJwZXJzb25hbGl6YXRpb25cIjpcblx0XHRcdHJldHVyblZhbHVlID0gY29udHJvbC5nZXRQMTNuTW9kZSgpLmxlbmd0aCA9PT0gMCA/IFwiRmFsc2VcIiA6IFwiVHJ1ZVwiO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInBlcnNvbmFsaXphdGlvblNvcnRcIjpcblx0XHRcdHJldHVyblZhbHVlID0gY29udHJvbC5nZXRQMTNuTW9kZSgpLmluY2x1ZGVzKFwiU29ydFwiKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJwZXJzb25hbGl6YXRpb25Db2x1bW5cIjpcblx0XHRcdHJldHVyblZhbHVlID0gY29udHJvbC5nZXRQMTNuTW9kZSgpLmluY2x1ZGVzKFwiQ29sdW1uXCIpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInBlcnNvbmFsaXphdGlvbkZpbHRlclwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSBjb250cm9sLmdldFAxM25Nb2RlKCkuaW5jbHVkZXMoXCJGaWx0ZXJcIik7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwicGVyc29uYWxpemF0aW9uR3JvdXBcIjpcblx0XHRcdHJldHVyblZhbHVlID0gY29udHJvbC5nZXRQMTNuTW9kZSgpLmluY2x1ZGVzKFwiR3JvdXBcIik7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwicGVyc29uYWxpemF0aW9uQWdncmVnYXRlXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IGNvbnRyb2wuZ2V0UDEzbk1vZGUoKS5pbmNsdWRlcyhcIkFnZ3JlZ2F0ZVwiKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJyb3dDb3VudFwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5yb3dDb3VudDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJyb3dDb3VudE1vZGVcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wucm93Q291bnRNb2RlO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImNvbmRlbnNlZFRhYmxlTGF5b3V0XCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnVzZUNvbmRlbnNlZFRhYmxlTGF5b3V0O1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcInNlbGVjdGlvbk1vZGVcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmFubm90YXRpb24uc2VsZWN0aW9uTW9kZTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJzZWxlY3RBbGxcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuc2VsZWN0aW9uTGltaXQgPT09IDA7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwidGhyZXNob2xkXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnRocmVzaG9sZCA/PyB0YWJsZURlZmluaXRpb24uYW5ub3RhdGlvbi50aHJlc2hvbGQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwic2Nyb2xsVGhyZXNob2xkXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLnNjcm9sbFRocmVzaG9sZDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJzZWxlY3Rpb25MaW1pdFwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5zZWxlY3Rpb25MaW1pdDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJoaWVyYXJjaHlRdWFsaWZpZXJcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuaGllcmFyY2h5UXVhbGlmaWVyO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcImVuYWJsZU1hc3NFZGl0XCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLm1hc3NFZGl0LmVuYWJsZWQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiZW5hYmxlTWFzc0VkaXRWaXNpYmxlRmllbGRzXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLm1hc3NFZGl0LnZpc2libGVGaWVsZHM7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiZW5hYmxlTWFzc0VkaXRJZ25vcmVkRmllbGRzXCI6XG5cdFx0XHRyZXR1cm5WYWx1ZSA9IHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLm1hc3NFZGl0Lmlnbm9yZUZpZWxkcztcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJlbmFibGVBZGRDYXJkVG9JbnNpZ2h0c1wiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5lbmFibGVBZGRDYXJkVG9JbnNpZ2h0cztcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJiZWZvcmVSZWJpbmRUYWJsZVwiOlxuXHRcdFx0cmV0dXJuVmFsdWUgPSB0YWJsZURlZmluaXRpb24uY29udHJvbC5iZWZvcmVSZWJpbmRUYWJsZTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJzZWxlY3Rpb25DaGFuZ2VcIjpcblx0XHRcdHJldHVyblZhbHVlID0gdGFibGVEZWZpbml0aW9uLmNvbnRyb2wuc2VsZWN0aW9uQ2hhbmdlO1xuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIHJldHVyblZhbHVlO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzZXR0aW5ncyBhbmQgdmFsdWVzIGZvciBhIHRhYmxlIGZvcm1hdHRlZCBmb3IgdGhlIGFkYXB0YXRpb24gZGlhbG9nIGNvbnRlbnQuXG4gKiBAcGFyYW0gdGFibGVBUEkgUmVmZXJlbmNlIHRvIHNlbGVjdGVkIHRhYmxlXG4gKiBAcGFyYW0gcHJvcGVydHlWYWx1ZXMgVGhlIGxpc3Qgb2YgcHJvcGVydGllcyBhbmQgdmFsdWVzIGZvciB0aGUgc2VsZWN0ZWQgdGFibGVcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBsaXN0IGZvciB0aGUgYWRhcHRhdGlvbiBkaWFsb2dcbiAqL1xuZnVuY3Rpb24gZ2V0U2V0dGluZ3ModGFibGVBUEk6IFRhYmxlQVBJLCBwcm9wZXJ0eVZhbHVlczogUHJvcGVydHlWYWx1ZSk6IFNldHRpbmdzRGF0YVtdIHtcblx0Y29uc3QgaXRlbXM6IFNldHRpbmdzRGF0YVtdID0gW107XG5cblx0Z2V0RGVzaWdudGltZVNldHRpbmdzKHRhYmxlQVBJKS5mb3JFYWNoKGZ1bmN0aW9uIChtYW5pZmVzdFNldHRpbmcpIHtcblx0XHQvL0ZpbGwgbW9kZWwgZm9yIGFkYXB0YXRpb24gc2V0dGluZ3MgZGF0YVxuXHRcdGNvbnN0IHNldHRpbmdzRGF0YTogU2V0dGluZ3NEYXRhID0ge1xuXHRcdFx0bGFiZWw6IG1hbmlmZXN0U2V0dGluZy5uYW1lLFxuXHRcdFx0dG9vbHRpcDogbWFuaWZlc3RTZXR0aW5nLmRlc2NyaXB0aW9uLFxuXHRcdFx0Y29udHJvbDogW10sXG5cdFx0XHRrZXlVc2VyOiBtYW5pZmVzdFNldHRpbmcua2V5VXNlclxuXHRcdH07XG5cblx0XHRjb25zdCBjb250cm9sRGF0YTogQ29udHJvbERhdGEgPSB7XG5cdFx0XHR0eXBlOiBtYW5pZmVzdFNldHRpbmcudHlwZSxcblx0XHRcdGVudW06IG1hbmlmZXN0U2V0dGluZy5lbnVtcyxcblx0XHRcdHZhbHVlOiBwcm9wZXJ0eVZhbHVlc1ttYW5pZmVzdFNldHRpbmcuaWRdLFxuXHRcdFx0aWQ6IG1hbmlmZXN0U2V0dGluZy5pZFxuXHRcdH07XG5cblx0XHRzZXR0aW5nc0RhdGEuY29udHJvbC5wdXNoKGNvbnRyb2xEYXRhKTtcblx0XHRpdGVtcy5wdXNoKHNldHRpbmdzRGF0YSk7XG5cdH0pO1xuXHRyZXR1cm4gaXRlbXM7XG59XG5cbmNvbnN0IGNvbmZpZ1BhdGggPSBcInJ0YS9jb25maWdTZXR0aW5nc1wiO1xuXG5jb25zdCBkZXNpZ25UaW1lID0ge1xuXHRhY3Rpb25zOiB7XG5cdFx0YW5ub3RhdGlvbjoge1xuXHRcdFx0dGV4dEFycmFuZ2VtZW50OiBnZXRUZXh0QXJyYW5nZW1lbnRDaGFuZ2VBY3Rpb24oKSxcblx0XHRcdHJlbmFtZTogZ2V0UmVuYW1lQWN0aW9uKClcblx0XHR9LFxuXHRcdHNldHRpbmdzOiB7XG5cdFx0XHRmZToge1xuXHRcdFx0XHRuYW1lOiBnZXRUZXh0KFwiUlRBX0NPTlRFWFRfQUNUSU9OTUVOVV9DT05GSUdcIiksXG5cdFx0XHRcdGljb246IFwic2FwLWljb246Ly9kZXZlbG9wZXItc2V0dGluZ3NcIixcblx0XHRcdFx0aXNFbmFibGVkOiBpc01hbmlmZXN0Q2hhbmdlc0VuYWJsZWQsXG5cdFx0XHRcdGhhbmRsZXI6IGFzeW5jIGZ1bmN0aW9uIChjb250cm9sOiBNRENUYWJsZSk6IFByb21pc2U8YWRhcHRpb25DaGFuZ2VbXT4ge1xuXHRcdFx0XHRcdGNvbnN0IHRhYmxlQVBJID0gY29udHJvbC5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSTtcblx0XHRcdFx0XHRjb25zdCBkZXNpZ250aW1lU2V0dGluZ3MgPSBnZXREZXNpZ250aW1lU2V0dGluZ3ModGFibGVBUEkpO1xuXHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5VmFsdWVzID0gZ2V0QWRhcHRhdGlvblByb3BlcnRpZXMoZGVzaWdudGltZVNldHRpbmdzLCBjb250cm9sKTtcblx0XHRcdFx0XHRjb25zdCB1bmNoYW5nZWREYXRhID0geyAuLi5wcm9wZXJ0eVZhbHVlcyB9O1xuXHRcdFx0XHRcdGNvbnN0IGNvbmZpZ0NvbnRleHQgPSBjb250cm9sLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgQ29udGV4dDtcblx0XHRcdFx0XHRpZiAoIWlzQ29uZmlnTW9kZWxQcmVwYXJlZChjb25maWdDb250ZXh0LCBjb25maWdQYXRoKSkge1xuXHRcdFx0XHRcdFx0Ly8gZmlyc3QgdGltZSB0aGlzIHNlc3Npb25cblx0XHRcdFx0XHRcdGxldCBpdGVtcyA9IGdldFNldHRpbmdzKHRhYmxlQVBJLCBwcm9wZXJ0eVZhbHVlcyk7XG5cdFx0XHRcdFx0XHRpdGVtcyA9IGdldFNldHRpbmdzSWZLZXlVc2VyKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChjb250cm9sKSwgaXRlbXMpO1xuXHRcdFx0XHRcdFx0Ly8gdXNlIGludGVybmFsIG1vZGVsIHRvIHBlcnNpc3QgYWRhcHRhdGlvbiBjb25maWd1cmF0aW9uIHZhbHVlc1xuXHRcdFx0XHRcdFx0cHJlcGFyZUNvbmZpZ01vZGVsKGl0ZW1zLCBjb25maWdDb250ZXh0LCBjb25maWdQYXRoKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly8gc2V0IHBlcnNvbmFsaXphdGlvbiB0byAnT3duIFNldHRpbmdzJyBpZiB0aGF0IHdhcyBjaG9zZW4gcHJldmlvdXNseVxuXHRcdFx0XHRcdFx0Ly8gYXMgdGhpcyBzZXR0aW5nIGNhbm5vdCBiZSByZXRyaXZlZCBmcm9tIHRoZSBjb250cm9sLCBhbmQgd2lsbCBiZSBhbHdheXMgdHJ1ZSBpZiBwZXJzb25hbGl6YXRpb24gaXMgZW5hYmxlZFxuXHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXMucGVyc29uYWxpemF0aW9uID0gZ2V0UGVyc29uYWxpemF0aW9uU2V0dGluZyhjb25maWdDb250ZXh0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGNvbnRyb2wuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsO1xuXHRcdFx0XHRcdHJldHVybiBvcGVuQWRhcHRpb25EaWFsb2coXG5cdFx0XHRcdFx0XHRjb25maWdDb250ZXh0LFxuXHRcdFx0XHRcdFx0cHJvcGVydHlWYWx1ZXMsXG5cdFx0XHRcdFx0XHRcIntzYXAuZmUuaTE4bj5SVEFfQ09ORklHVVJBVElPTl9USVRMRV9UQUJMRX1cIixcblx0XHRcdFx0XHRcdHJlc291cmNlTW9kZWwsXG5cdFx0XHRcdFx0XHRjb25maWdQYXRoLFxuXHRcdFx0XHRcdFx0XCJ7c2FwLmZlLmkxOG4+UlRBX0NPTkZJR1VSQVRJT05fSU5GT19NRVNTQUdFX1RBQkxFfVwiLFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHR3aWR0aDogXCI2NTBweFwiLFxuXHRcdFx0XHRcdFx0XHRoZWlnaHQ6IFwiODAwcHhcIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdCkudGhlbihmdW5jdGlvbiAocHJvcGVydHlWYWx1ZXNFbnRlcmVkOiBQcm9wZXJ0eVZhbHVlKTogYWRhcHRpb25DaGFuZ2VbXSB8IFtdIHtcblx0XHRcdFx0XHRcdGNvbnN0IHByb3BlcnR5UGF0aCA9IGdldFByb3BlcnR5UGF0aChjb250cm9sLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKTtcblx0XHRcdFx0XHRcdHJldHVybiBleHRyYWN0Q2hhbmdlcyhkZXNpZ250aW1lU2V0dGluZ3MsIHVuY2hhbmdlZERhdGEsIHByb3BlcnR5VmFsdWVzRW50ZXJlZCwgcHJvcGVydHlQYXRoLCBjb250cm9sKTtcblx0XHRcdFx0XHR9LCBub0NoYW5nZXMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHQvLyBXZSBkaXNhYmxlIG1kYyB0YWJsZSBwcm9wZXJ0aWVzIGluIHRoZSBwcm9wZXJ0eSBwYW5lbCBvZiBGaW9yaSBUb29sc1xuXHRwcm9wZXJ0aWVzOiB7XG5cdFx0YnVzeUluZGljYXRvckRlbGF5OiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGVuYWJsZUNvbHVtblJlc2l6ZTogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRlbmFibGVFeHBvcnQ6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0aGVhZGVyOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGhlYWRlckxldmVsOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdGhlYWRlclZpc2libGU6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0bXVsdGlTZWxlY3RNb2RlOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdHNob3dQYXN0ZUJ1dHRvbjogeyBpZ25vcmU6IHRydWUgfSxcblx0XHRzaG93Um93Q291bnQ6IHsgaWdub3JlOiB0cnVlIH0sXG5cdFx0dGhyZXNob2xkOiB7IGlnbm9yZTogdHJ1ZSB9LFxuXHRcdHdpZHRoOiB7IGlnbm9yZTogdHJ1ZSB9XG5cdH0sXG5cdGFnZ3JlZ2F0aW9uczoge30sXG5cblx0Ly8gVGhlc2UgZnVuY3Rpb25zIHByb3ZpZGUgdGhlIHByb3BlcnRpZXMgdXNlZCBpbiB0YWJsZSBhZGFwdGlvbiB0byBGaW9yaSB0b29scy5cblx0bWFuaWZlc3RTZXR0aW5nczogZnVuY3Rpb24gKGNvbnRyb2w6IE1EQ1RhYmxlKTogRGVzaWdudGltZVNldHRpbmdbXSB7XG5cdFx0Y29uc3QgdGFibGUgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJO1xuXHRcdGNvbnN0IGRlc2lnbnRpbWVTZXR0aW5ncyA9IGdldERlc2lnbnRpbWVTZXR0aW5ncyh0YWJsZSkuZmlsdGVyKChpdGVtKSA9PiAhaXRlbXNUb1JlbW92ZS5pbmNsdWRlcyhpdGVtLmlkKSk7XG5cdFx0cmV0dXJuIGdldFByb3BlcnR5TmFtZXNBbmREZXNjcmlwdGlvbnMoZGVzaWdudGltZVNldHRpbmdzLCBjb250cm9sLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCk7XG5cdH0sXG5cdC8vIGdldEFkYXB0aW9uUHJvcGVydHlWYWx1ZVxuXHRtYW5pZmVzdFNldHRpbmdzVmFsdWVzOiBmdW5jdGlvbiAoZGVzaWdudGltZVNldHRpbmdzOiBEZXNpZ250aW1lU2V0dGluZ1tdLCBjb250cm9sOiBNRENUYWJsZSk6IFByb3BlcnR5VmFsdWUge1xuXHRcdGNvbnN0IHJldHVyblZhbHVlczogUHJvcGVydHlWYWx1ZSA9IHt9O1xuXHRcdGRlc2lnbnRpbWVTZXR0aW5ncy5mb3JFYWNoKGZ1bmN0aW9uIChzZXR0aW5nKSB7XG5cdFx0XHRsZXQgcHJvcGVydHlJbmRleDtcblx0XHRcdGlmIChzZXR0aW5nLnBhdGgpIHtcblx0XHRcdFx0cHJvcGVydHlJbmRleCA9IHNldHRpbmcucGF0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHByb3BlcnR5SW5kZXggPSBzZXR0aW5nLmlkO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuVmFsdWVzW3Byb3BlcnR5SW5kZXhdID0gZ2V0QWRhcHRhdGlvblByb3BlcnR5VmFsdWUoY29udHJvbCwgc2V0dGluZyk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHJldHVyblZhbHVlcztcblx0fSxcblx0Ly8gZ2V0IHBhdGggZm9yIGNvbnRyb2wgY29uZmlndXJhdGlvbi4gUGFzcyByZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2xcblx0bWFuaWZlc3RQcm9wZXJ0eVBhdGg6IGZ1bmN0aW9uIChjb250cm9sOiBNRENUYWJsZSk6IHN0cmluZyB7XG5cdFx0Y29uc3QgdGFibGUgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIFRhYmxlQVBJO1xuXHRcdHJldHVybiBnZXRQcm9wZXJ0eVBhdGgodGFibGUpO1xuXHR9LFxuXHQvLyBjcmVhdGUgY2hhbmdlIHN0cnVjdHVlLiBQYXNzIGFycmF5IG9mIG1hbmlmZXN0IHNldHRpbmcgYW5kIG5ldyB2YWx1ZSwgdGhlIHByb3BlcnR5IHBhdGggYW5kIHRoZSBjb250cm9sXG5cdG1hbmlmZXN0UHJvcGVydHlDaGFuZ2U6IGZ1bmN0aW9uIChwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5VmFsdWUsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBjb250cm9sOiBNRENUYWJsZSk6IGFkYXB0aW9uQ2hhbmdlW10ge1xuXHRcdHJldHVybiBzZXBhcmF0ZUNoYW5nZXMocHJvcGVydHlDaGFuZ2VzLCBwcm9wZXJ0eVBhdGgsIGNvbnRyb2wpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBkZXNpZ25UaW1lO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBO0FBQ0E7QUFDQTtFQW9DQTtFQUNBO0VBQ0EsTUFBTUEsYUFBYSxHQUFHLENBQ3JCLGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsMEJBQTBCLENBQzFCO0VBRU0sU0FBU0MsdUJBQXVCQSxDQUFDQyxrQkFBdUMsRUFBRUMsT0FBaUIsRUFBaUI7SUFDbEgsTUFBTUMsY0FBNkIsR0FBRyxDQUFDLENBQUM7SUFDeENGLGtCQUFrQixDQUFDRyxPQUFPLENBQUMsVUFBVUMsT0FBTyxFQUFFO01BQzdDRixjQUFjLENBQUNFLE9BQU8sQ0FBQ0MsRUFBRSxDQUFDLEdBQUdDLDBCQUEwQixDQUFDTCxPQUFPLEVBQUVHLE9BQU8sQ0FBQztJQUMxRSxDQUFDLENBQUM7SUFDRixPQUFPRixjQUFjO0VBQ3RCO0VBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEFLLFFBQUEsQ0FBQVIsdUJBQUEsR0FBQUEsdUJBQUE7RUFNQSxTQUFTTywwQkFBMEJBLENBQUNMLE9BQWlCLEVBQUVHLE9BQTBCLEVBQTZCO0lBQzdHLE1BQU1JLEtBQUssR0FBR1AsT0FBTyxDQUFDUSxTQUFTLENBQUMsQ0FBYTtJQUM3QyxNQUFNQyxlQUFlLEdBQUdGLEtBQUssQ0FBQ0csV0FBVyxDQUFDLGlCQUFpQixDQUFDO0lBQzVELElBQUlDLFdBQXNDLEdBQUcsRUFBRTtJQUUvQyxRQUFRUixPQUFPLENBQUNDLEVBQUU7TUFDakIsS0FBSyxlQUFlO1FBQ25CTyxXQUFXLEdBQUdGLGVBQWUsQ0FBQ0csYUFBYTtRQUMzQztNQUNELEtBQUssUUFBUTtRQUNaRCxXQUFXLEdBQUdGLGVBQWUsQ0FBQ0ksTUFBTTtRQUNwQztN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
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
getPropertyNamesAndDescriptions,
|
|
20
20
|
getSettingsIfKeyUser,
|
|
21
21
|
isConfigModelPrepared,
|
|
22
|
+
isManifestChangesEnabled,
|
|
22
23
|
noChanges,
|
|
23
24
|
openAdaptionDialog,
|
|
24
25
|
prepareConfigModel,
|
|
@@ -207,6 +208,7 @@ const designTime = {
|
|
|
207
208
|
fe: {
|
|
208
209
|
name: getText("RTA_CONTEXT_ACTIONMENU_CONFIG"),
|
|
209
210
|
icon: "sap-icon://developer-settings",
|
|
211
|
+
isEnabled: isManifestChangesEnabled,
|
|
210
212
|
handler: async function (control: MDCTable): Promise<adaptionChange[]> {
|
|
211
213
|
const tableAPI = control.getParent() as TableAPI;
|
|
212
214
|
const designtimeSettings = getDesigntimeSettings(tableAPI);
|
|
@@ -6,6 +6,7 @@ sap.ui.define(["sap/fe/macros/designtime/Designtime.helper", "sap/ui/core/Lib",
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var getPropertyPath = Table_designtime_helper.getPropertyPath;
|
|
9
|
+
var isManifestChangesEnabled = Designtime_helper.isManifestChangesEnabled;
|
|
9
10
|
var extractChanges = Designtime_helper.extractChanges;
|
|
10
11
|
const massEditRtaPath = "rta/massEditConfigSettings/visibleFields";
|
|
11
12
|
const MassEditDesignTime = {
|
|
@@ -16,6 +17,7 @@ sap.ui.define(["sap/fe/macros/designtime/Designtime.helper", "sap/ui/core/Lib",
|
|
|
16
17
|
fe: {
|
|
17
18
|
name: Library.getResourceBundleFor("sap.fe.macros").getText("C_MASS_EDIT_DESIGN_CONFIGURATION"),
|
|
18
19
|
icon: "sap-icon://developer-settings",
|
|
20
|
+
isEnabled: isManifestChangesEnabled,
|
|
19
21
|
/**
|
|
20
22
|
* Handles the changes for the mass edit configuration.
|
|
21
23
|
* @param dialog The dialog that is opened
|
|
@@ -71,4 +73,4 @@ sap.ui.define(["sap/fe/macros/designtime/Designtime.helper", "sap/ui/core/Lib",
|
|
|
71
73
|
};
|
|
72
74
|
return MassEditDesignTime;
|
|
73
75
|
}, false);
|
|
74
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXNzRWRpdFJ0YVBhdGgiLCJNYXNzRWRpdERlc2lnblRpbWUiLCJhY3Rpb25zIiwicmVuYW1lIiwic2V0dGluZ3MiLCJmZSIsIm5hbWUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJnZXRUZXh0IiwiaWNvbiIsImlzRW5hYmxlZCIsImlzTWFuaWZlc3RDaGFuZ2VzRW5hYmxlZCIsImhhbmRsZXIiLCJkaWFsb2ciLCJlbGVtZW50IiwiaXNBIiwiZ2V0UGFyZW50IiwibWFzc0VkaXREaWFsb2dIZWxwZXIiLCJnZXRNYXNzRWRpdERpYWxvZ0hlbHBlciIsImNvbmZpZ0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsInJ0YVNlbGVjdGVkSXRlbXMiLCJnZXRQcm9wZXJ0eSIsIm9yaWdpbmFsRmllbGRzIiwiZ2V0RmllbGRQcm9wZXJ0aWVzIiwibWFwIiwiZmllbGQiLCJwcm9wZXJ0eUluZm8iLCJyZWxhdGl2ZVBhdGgiLCJqb2luIiwicmVzdWx0IiwiTWFzc0VkaXREZXNpZ25EaWFsb2ciLCJvcGVuRGlhbG9nIiwiaXNDaGFuZ2VPYnNlcnZlZCIsImluaXRpYWxJZ25vcmVkRmllbGRzIiwiZ2V0VGFibGVEZWZpbml0aW9uIiwiY29udHJvbCIsIm1hc3NFZGl0IiwiaWdub3JlZEZpZWxkcyIsInNldFByb3BlcnR5IiwiZXh0cmFjdENoYW5nZXMiLCJpZCIsImRlc2NyaXB0aW9uIiwidHlwZSIsInZhbHVlIiwidmlzaWJsZUZpZWxkcyIsImdldFByb3BlcnR5UGF0aCIsImdldENvbnRlbnQiLCJlcnJvciIsInByb3BlcnRpZXMiLCJhZ2dyZWdhdGlvbnMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1hc3NFZGl0LmRlc2lnbnRpbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgYWRhcHRpb25DaGFuZ2UgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9kZXNpZ250aW1lL0Rlc2lnbnRpbWUuaGVscGVyXCI7XG5pbXBvcnQgeyBleHRyYWN0Q2hhbmdlcywgaXNNYW5pZmVzdENoYW5nZXNFbmFibGVkIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZGVzaWdudGltZS9EZXNpZ250aW1lLmhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCB0eXBlIERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHsgZ2V0UHJvcGVydHlQYXRoIH0gZnJvbSBcIi4uLy4uL2Rlc2lnbnRpbWUvVGFibGUuZGVzaWdudGltZS5oZWxwZXJcIjtcbmltcG9ydCBNYXNzRWRpdERlc2lnbkRpYWxvZyBmcm9tIFwiLi9NYXNzRWRpdERlc2lnbkRpYWxvZ1wiO1xuXG5jb25zdCBtYXNzRWRpdFJ0YVBhdGggPSBcInJ0YS9tYXNzRWRpdENvbmZpZ1NldHRpbmdzL3Zpc2libGVGaWVsZHNcIjtcbmNvbnN0IE1hc3NFZGl0RGVzaWduVGltZSA9IHtcblx0YWN0aW9uczoge1xuXHRcdHJlbmFtZTogKCk6IG51bGwgPT4gbnVsbCwgLy8gUmVtb3ZlIHRoZSByZW5hbWUgYWN0aW9uIG9mIHRoZSBzYXAubS5kaWFsb2dcblx0XHRzZXR0aW5nczoge1xuXHRcdFx0ZmU6IHtcblx0XHRcdFx0bmFtZTogKExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUubWFjcm9zXCIpIGFzIFJlc291cmNlQnVuZGxlKS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfREVTSUdOX0NPTkZJR1VSQVRJT05cIiksXG5cdFx0XHRcdGljb246IFwic2FwLWljb246Ly9kZXZlbG9wZXItc2V0dGluZ3NcIixcblx0XHRcdFx0aXNFbmFibGVkOiBpc01hbmlmZXN0Q2hhbmdlc0VuYWJsZWQsXG5cdFx0XHRcdC8qKlxuXHRcdFx0XHQgKiBIYW5kbGVzIHRoZSBjaGFuZ2VzIGZvciB0aGUgbWFzcyBlZGl0IGNvbmZpZ3VyYXRpb24uXG5cdFx0XHRcdCAqIEBwYXJhbSBkaWFsb2cgVGhlIGRpYWxvZyB0aGF0IGlzIG9wZW5lZFxuXHRcdFx0XHQgKiBAcmV0dXJucyBUaGUgY2hhbmdlc1xuXHRcdFx0XHQgKi9cblx0XHRcdFx0aGFuZGxlcjogYXN5bmMgKGRpYWxvZzogRGlhbG9nKTogUHJvbWlzZTxhZGFwdGlvbkNoYW5nZVtdPiA9PiB7XG5cdFx0XHRcdFx0bGV0IGVsZW1lbnQ6IE1hbmFnZWRPYmplY3QgfCBudWxsID0gZGlhbG9nO1xuXHRcdFx0XHRcdHdoaWxlIChlbGVtZW50ICYmICFlbGVtZW50LmlzQTxUYWJsZUFQST4oXCJzYXAuZmUubWFjcm9zLnRhYmxlLlRhYmxlQVBJXCIpKSB7XG5cdFx0XHRcdFx0XHRlbGVtZW50ID0gZWxlbWVudC5nZXRQYXJlbnQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3QgbWFzc0VkaXREaWFsb2dIZWxwZXIgPSBlbGVtZW50Py5nZXRNYXNzRWRpdERpYWxvZ0hlbHBlcigpO1xuXG5cdFx0XHRcdFx0aWYgKCFlbGVtZW50IHx8ICFtYXNzRWRpdERpYWxvZ0hlbHBlcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgY29uZmlnQ29udGV4dCA9IGVsZW1lbnQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBDb250ZXh0O1xuXHRcdFx0XHRcdFx0Y29uc3QgcnRhU2VsZWN0ZWRJdGVtcyA9IGNvbmZpZ0NvbnRleHQuZ2V0UHJvcGVydHkobWFzc0VkaXRSdGFQYXRoKSBhcyB1bmRlZmluZWQgfCBzdHJpbmc7XG5cdFx0XHRcdFx0XHRjb25zdCBvcmlnaW5hbEZpZWxkcyA9XG5cdFx0XHRcdFx0XHRcdHJ0YVNlbGVjdGVkSXRlbXMgPz9cblx0XHRcdFx0XHRcdFx0bWFzc0VkaXREaWFsb2dIZWxwZXJcblx0XHRcdFx0XHRcdFx0XHQuZ2V0RmllbGRQcm9wZXJ0aWVzKClcblx0XHRcdFx0XHRcdFx0XHQubWFwKChmaWVsZCkgPT4gZmllbGQucHJvcGVydHlJbmZvLnJlbGF0aXZlUGF0aClcblx0XHRcdFx0XHRcdFx0XHQuam9pbihcIixcIik7XG5cblx0XHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5ldyBNYXNzRWRpdERlc2lnbkRpYWxvZyhlbGVtZW50KS5vcGVuRGlhbG9nKGRpYWxvZywgb3JpZ2luYWxGaWVsZHMpO1xuXHRcdFx0XHRcdFx0Y29uc3QgaXNDaGFuZ2VPYnNlcnZlZCA9IHJlc3VsdCAhPT0gb3JpZ2luYWxGaWVsZHM7XG5cdFx0XHRcdFx0XHRjb25zdCBpbml0aWFsSWdub3JlZEZpZWxkcyA9IGVsZW1lbnQuZ2V0VGFibGVEZWZpbml0aW9uKCkuY29udHJvbC5tYXNzRWRpdC5pZ25vcmVkRmllbGRzLmpvaW4oXCIsXCIpO1xuXHRcdFx0XHRcdFx0aWYgKGlzQ2hhbmdlT2JzZXJ2ZWQpIHtcblx0XHRcdFx0XHRcdFx0Y29uZmlnQ29udGV4dC5zZXRQcm9wZXJ0eShtYXNzRWRpdFJ0YVBhdGgsIHJlc3VsdCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJldHVybiBleHRyYWN0Q2hhbmdlcyhcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGlkOiBcInZpc2libGVGaWVsZHNcIixcblx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IFwidmlzaWJsZSBmaWVsZHNcIixcblx0XHRcdFx0XHRcdFx0XHRcdGRlc2NyaXB0aW9uOiBcIlZpc2libGUgZmllbGRzIGZvciB0aGUgbWFzcyBlZGl0IGRpYWxvZ1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBvcmlnaW5hbEZpZWxkc1xuXHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0aWQ6IFwiaWdub3JlZEZpZWxkc1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogXCJpZ25vcmVkIGZpZWxkc1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVzY3JpcHRpb246IFwiSWdub3JlZCBmaWVsZHMgZm9yIHRoZSBtYXNzIGVkaXQgZGlhbG9nXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGluaXRpYWxJZ25vcmVkRmllbGRzXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0dmlzaWJsZUZpZWxkczogb3JpZ2luYWxGaWVsZHMsXG5cdFx0XHRcdFx0XHRcdFx0aWdub3JlZEZpZWxkczogaW5pdGlhbElnbm9yZWRGaWVsZHNcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdHZpc2libGVGaWVsZHM6IHJlc3VsdCxcblx0XHRcdFx0XHRcdFx0XHRpZ25vcmVkRmllbGRzOiAhaXNDaGFuZ2VPYnNlcnZlZCA/IGluaXRpYWxJZ25vcmVkRmllbGRzIDogXCJcIlxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRgJHtnZXRQcm9wZXJ0eVBhdGgoZWxlbWVudCl9L2VuYWJsZU1hc3NFZGl0YCxcblx0XHRcdFx0XHRcdFx0ZWxlbWVudC5nZXRDb250ZW50KClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdHByb3BlcnRpZXM6IHt9LFxuXHRhZ2dyZWdhdGlvbnM6IHt9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNYXNzRWRpdERlc2lnblRpbWU7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7RUFXQSxNQUFNQSxlQUFlLEdBQUcsMENBQTBDO0VBQ2xFLE1BQU1DLGtCQUFrQixHQUFHO0lBQzFCQyxPQUFPLEVBQUU7TUFDUkMsTUFBTSxFQUFFQSxDQUFBLEtBQVksSUFBSTtNQUFFO01BQzFCQyxRQUFRLEVBQUU7UUFDVEMsRUFBRSxFQUFFO1VBQ0hDLElBQUksRUFBR0MsT0FBTyxDQUFDQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBb0JDLE9BQU8sQ0FBQyxrQ0FBa0MsQ0FBQztVQUNuSEMsSUFBSSxFQUFFLCtCQUErQjtVQUNyQ0MsU0FBUyxFQUFFQyx3QkFBd0I7VUFDbkM7QUFDSjtBQUNBO0FBQ0E7QUFDQTtVQUNJQyxPQUFPLEVBQUUsTUFBT0MsTUFBYyxJQUFnQztZQUM3RCxJQUFJQyxPQUE2QixHQUFHRCxNQUFNO1lBQzFDLE9BQU9DLE9BQU8sSUFBSSxDQUFDQSxPQUFPLENBQUNDLEdBQUcsQ0FBVyw4QkFBOEIsQ0FBQyxFQUFFO2NBQ3pFRCxPQUFPLEdBQUdBLE9BQU8sQ0FBQ0UsU0FBUyxDQUFDLENBQUM7WUFDOUI7WUFDQSxNQUFNQyxvQkFBb0IsR0FBR0gsT0FBTyxFQUFFSSx1QkFBdUIsQ0FBQyxDQUFDO1lBRS9ELElBQUksQ0FBQ0osT0FBTyxJQUFJLENBQUNHLG9CQUFvQixFQUFFO2NBQ3RDLE9BQU8sRUFBRTtZQUNWO1lBQ0EsSUFBSTtjQUNILE1BQU1FLGFBQWEsR0FBR0wsT0FBTyxDQUFDTSxpQkFBaUIsQ0FBQyxVQUFVLENBQVk7Y0FDdEUsTUFBTUMsZ0JBQWdCLEdBQUdGLGFBQWEsQ0FBQ0csV0FBVyxDQUFDdkIsZUFBZSxDQUF1QjtjQUN6RixNQUFNd0IsY0FBYyxHQUNuQkYsZ0JBQWdCLElBQ2hCSixvQkFBb0IsQ0FDbEJPLGtCQUFrQixDQUFDLENBQUMsQ0FDcEJDLEdBQUcsQ0FBRUMsS0FBSyxJQUFLQSxLQUFLLENBQUNDLFlBQVksQ0FBQ0MsWUFBWSxDQUFDLENBQy9DQyxJQUFJLENBQUMsR0FBRyxDQUFDO2NBRVosTUFBTUMsTUFBTSxHQUFHLE1BQU0sSUFBSUMsb0JBQW9CLENBQUNqQixPQUFPLENBQUMsQ0FBQ2tCLFVBQVUsQ0FBQ25CLE1BQU0sRUFBRVUsY0FBYyxDQUFDO2NBQ3pGLE1BQU1VLGdCQUFnQixHQUFHSCxNQUFNLEtBQUtQLGNBQWM7Y0FDbEQsTUFBTVcsb0JBQW9CLEdBQUdwQixPQUFPLENBQUNxQixrQkFBa0IsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDQyxhQUFhLENBQUNULElBQUksQ0FBQyxHQUFHLENBQUM7Y0FDbEcsSUFBSUksZ0JBQWdCLEVBQUU7Z0JBQ3JCZCxhQUFhLENBQUNvQixXQUFXLENBQUN4QyxlQUFlLEVBQUUrQixNQUFNLENBQUM7Y0FDbkQ7Y0FFQSxPQUFPVSxjQUFjLENBQ3BCLENBQ0M7Z0JBQ0NDLEVBQUUsRUFBRSxlQUFlO2dCQUNuQnBDLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCcUMsV0FBVyxFQUFFLHlDQUF5QztnQkFDdERDLElBQUksRUFBRSxRQUFRO2dCQUNkQyxLQUFLLEVBQUVyQjtjQUNSLENBQUMsRUFDRDtnQkFDQ2tCLEVBQUUsRUFBRSxlQUFlO2dCQUNuQnBDLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCcUMsV0FBVyxFQUFFLHlDQUF5QztnQkFDdERDLElBQUksRUFBRSxRQUFRO2dCQUNkQyxLQUFLLEVBQUVWO2NBQ1IsQ0FBQyxDQUNELEVBQ0Q7Z0JBQ0NXLGFBQWEsRUFBRXRCLGNBQWM7Z0JBQzdCZSxhQUFhLEVBQUVKO2NBQ2hCLENBQUMsRUFDRDtnQkFDQ1csYUFBYSxFQUFFZixNQUFNO2dCQUNyQlEsYUFBYSxFQUFFLENBQUNMLGdCQUFnQixHQUFHQyxvQkFBb0IsR0FBRztjQUMzRCxDQUFDLEVBQ0QsR0FBR1ksZUFBZSxDQUFDaEMsT0FBTyxDQUFDLGlCQUFpQixFQUM1Q0EsT0FBTyxDQUFDaUMsVUFBVSxDQUFDLENBQ3BCLENBQUM7WUFDRixDQUFDLENBQUMsT0FBT0MsS0FBYyxFQUFFO2NBQ3hCLE9BQU8sRUFBRTtZQUNWO1VBQ0Q7UUFDRDtNQUNEO0lBQ0QsQ0FBQztJQUNEQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ2RDLFlBQVksRUFBRSxDQUFDO0VBQ2hCLENBQUM7RUFBQyxPQUVhbEQsa0JBQWtCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
2
2
|
import type { adaptionChange } from "sap/fe/macros/designtime/Designtime.helper";
|
|
3
|
-
import { extractChanges } from "sap/fe/macros/designtime/Designtime.helper";
|
|
3
|
+
import { extractChanges, isManifestChangesEnabled } from "sap/fe/macros/designtime/Designtime.helper";
|
|
4
4
|
import type TableAPI from "sap/fe/macros/table/TableAPI";
|
|
5
5
|
import type Dialog from "sap/m/Dialog";
|
|
6
6
|
import type ManagedObject from "sap/ui/base/ManagedObject";
|
|
@@ -17,6 +17,7 @@ const MassEditDesignTime = {
|
|
|
17
17
|
fe: {
|
|
18
18
|
name: (Library.getResourceBundleFor("sap.fe.macros") as ResourceBundle).getText("C_MASS_EDIT_DESIGN_CONFIGURATION"),
|
|
19
19
|
icon: "sap-icon://developer-settings",
|
|
20
|
+
isEnabled: isManifestChangesEnabled,
|
|
20
21
|
/**
|
|
21
22
|
* Handles the changes for the mass edit configuration.
|
|
22
23
|
* @param dialog The dialog that is opened
|
|
@@ -298,6 +298,7 @@ sap.ui.define(["sap/fe/core/ActionRuntime", "sap/fe/core/CommonUtils", "sap/fe/c
|
|
|
298
298
|
const activeSelectedContexts = contextMenuSelection.filter(function (oContext) {
|
|
299
299
|
return !oContext.isInactive();
|
|
300
300
|
});
|
|
301
|
+
internalModelContext?.setProperty("contextmenu/selectedContextsIncludingInactive", contextMenuSelection);
|
|
301
302
|
internalModelContext?.setProperty("contextmenu/selectedContexts", activeSelectedContexts);
|
|
302
303
|
//reset number of selected contexts to ensure callback for custom enable handler
|
|
303
304
|
internalModelContext?.setProperty("contextmenu/numberOfSelectedContexts", -1);
|
|
@@ -371,4 +372,4 @@ sap.ui.define(["sap/fe/core/ActionRuntime", "sap/fe/core/CommonUtils", "sap/fe/c
|
|
|
371
372
|
_exports = ContextMenuHandler;
|
|
372
373
|
return _exports;
|
|
373
374
|
}, false);
|
|
374
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudUhhbmRsZXIiLCJjb250ZXh0TWVudUFjdGl2ZSIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0dXBNaXhpbiIsIl9iYXNlQ2xhc3MiLCJhbGlnbkNvbnRleHRNZW51V2l0aFRhYmxlVG9vbGJhckNoYW5nZXMiLCJ0YWJsZSIsImNvbnRleHRNZW51IiwiZ2V0Q29udGV4dE1lbnUiLCJzb3J0SGVscGVyRm9yTWVudUl0ZW1zIiwidGFibGVBY3Rpb25zIiwiZ2V0QWN0aW9ucyIsImZvckVhY2giLCJ0YWJsZUFjdGlvbiIsInRhYmxlQWN0aW9uSXRlbSIsImdldEFnZ3JlZ2F0aW9uIiwiX2lzQWN0aW9uU3BsaXQiLCJfc3BsaXRBY3Rpb25zSW5Db250ZXh0TWVudSIsIl9pc0FjdGlvbkNvbWJpbmVkIiwiX2NvbWJpbmVBY3Rpb25JbkNvbnRleHRNZW51IiwiY29udGV4dE1lbnVJdGVtIiwiX2dldENvcnJlc3BvbmRpbmdDb250ZXh0TWVudUFjdGlvbiIsIl9hbGlnblRleHRBbmRWaXNpYmxpdHlJbkNvbnRleHRNZW51IiwicHVzaCIsImxlbmd0aCIsIm1lbnVJdGVtIiwic29ydEluZGV4IiwiaW5kZXhPZkNvbnRleHRNZW51IiwiaW5kZXhPZkl0ZW0iLCJyZW1vdmVJdGVtIiwiaW5zZXJ0SXRlbSIsImFjdGlvbkl0ZW0iLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJkZXBlbmRlbnRzIiwiZ2V0RGVwZW5kZW50cyIsImZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzIiwiZmlsdGVyIiwiZGVwZW5kZW50IiwiTWFuYWdlZE9iamVjdE1vZGVsIiwic29tZSIsIm1vZGVsIiwiaW5jbHVkZXMiLCJjb250ZXh0TWVudUl0ZW1zIiwiZ2V0SXRlbXMiLCJtZW51QnV0dG9uIiwiX2ZpbmRPckNyZWF0ZU1lbnVCdXR0b25JbkNvbnRleHRNZW51IiwiYWN0aW9uSXRlbXMiLCJnZXRNZW51IiwiYWN0aW9uIiwidG9vbEJhckFjdGlvbiIsImFjdGlvbklkSW5Db250ZXh0TWVudSIsImRhdGEiLCJhY3Rpb25JZEluVG9vbGJhciIsInJlcGxhY2UiLCJzZXRUZXh0IiwiZ2V0VGV4dCIsImFkZEl0ZW0iLCJnZXRJZCIsImFjdGlvbkluU3ViTWVudSIsIl9maW5kQWN0aW9uSW5TdWJNZW51IiwiZGVzdHJveSIsInN1Yk1lbnUiLCJzcGxpY2UiLCJpbmRleE9mIiwidW5kZWZpbmVkIiwibmV3TWVudUJ1dHRvbiIsIk1lbnVJdGVtIiwiaWQiLCJnZW5lcmF0ZSIsInRleHQiLCJtZW51SXRlbXMiLCJpIiwiaXRlbSIsInN1Ykl0ZW1zIiwic3ViSXRlbSIsImluZGV4IiwidGFibGVBY3Rpb25WaXNpYmlsaXR5IiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGUiLCJzZXRDb250ZXh0TWVudUFjdGl2ZSIsImFjdGl2ZSIsImlzQ29udGV4dE1lbnVBY3RpdmUiLCJzZXRDb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtVmlzaWJpbGl0eSIsImNvbnRleHRzIiwiY29sbGFib3JhdGlvbk1hbmFnZXJNZW51SXRlbSIsImZpbmQiLCJhcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk9wdGlvbiIsImNvbGxhYm9yYXRpb25TZXJ2aWNlIiwiY21IZWxwZXJTZXJ2aWNlIiwiZ2V0T3B0aW9ucyIsInRhYmxlRGVmaW5pdGlvbiIsImdldFBhcmVudCIsImdldFRhYmxlRGVmaW5pdGlvbiIsIm5hdmlnYXRpb25UeXBlIiwiYW5ub3RhdGlvbiIsInJvdyIsIm5hdmlnYXRpb25JbmZvIiwidHlwZSIsInZpZXciLCJnZXRUYXJnZXRWaWV3IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiZ2V0Q29udHJvbGxlciIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiaXNEcmFmdCIsIk1vZGVsSGVscGVyIiwiaXNEcmFmdFN1cHBvcnRlZCIsImdldFBhdGgiLCJ2aXNpYmxlIiwiaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCIsImNvbnRleHQiLCJnZXRPYmplY3QiLCJJc0FjdGl2ZUVudGl0eSIsIkhhc0FjdGl2ZUVudGl0eSIsIkZFU1JIZWxwZXIiLCJzZXRTZW1hbnRpY1N0ZXBuYW1lIiwiX29uQ29udGV4dE1lbnVQcmVzcyIsIm9FdmVudCIsImdldFNvdXJjZSIsInRhYmxlQ29udGV4dHMiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwiY29udGV4dE1lbnVDb250ZXh0IiwiZ2V0UGFyYW1ldGVyIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImNvbnRleHRNZW51U2VsZWN0aW9uIiwiZ2V0UmVsZXZhbnRTZWxlY3Rpb24iLCJvbmVDb250ZXh0SXNBY3RpdmUiLCJpc0luYWN0aXZlIiwic2V0UHJvcGVydHkiLCJhY3RpdmVTZWxlY3RlZENvbnRleHRzIiwib0NvbnRleHQiLCJ2aXNpYmxlTWVudUl0ZW1zIiwicHJldmVudERlZmF1bHQiLCJpc0V4cGFuZGFibGUiLCJzaW5nbGVDb250ZXh0IiwiaXNFeHBhbmRlZCIsImlzQ29sbGFwc2FibGUiLCJkZWxldGVIZWxwZXIiLCJ1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyIsIm5hdmlnYXRpb25BdmFpbGFibGVNYXAiLCJUYWJsZVJ1bnRpbWUiLCJzZXRJbnRlbnRCYXNlZE5hdmlnYXRpb25FbmFibGVtZW50IiwidXBkYXRhYmxlUHJvcGVydHlQYXRoIiwiZHJhZnQiLCJyZWFkT25seURyYWZ0RW5hYmxlZCIsInVwZGF0YWJsZUNvbnRleHRzIiwic2VsZWN0ZWRDb250ZXh0IiwiaXNVcGRhdGFibGVDb250ZXh0IiwiY29udHJvbCIsImNyZWF0ZUVuYWJsZW1lbnQiLCJfdXBkYXRlQ3JlYXRlRW5hYmxlbWVudCIsIm5vZGVUeXBlIiwidXBkYXRlQ3V0Q29weVBhc3RlRW5hYmxlbWVudCIsInVwZGF0ZU1vdmVVcERvd25FbmFibGVtZW50IiwiQWN0aW9uUnVudGltZSIsInNldEFjdGlvbkVuYWJsZW1lbnQiLCJKU09OIiwicGFyc2UiLCJvcGVyYXRpb25BdmFpbGFibGVNYXAiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbnRleHRNZW51SGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIElJbnRlcmZhY2VXaXRoTWl4aW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQWN0aW9uUnVudGltZSBmcm9tIFwic2FwL2ZlL2NvcmUvQWN0aW9uUnVudGltZVwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IGRlbGV0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9EZWxldGVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUgTWVudSBmcm9tIFwic2FwL20vTWVudVwiO1xuaW1wb3J0IHR5cGUgTWVudUJ1dHRvbiBmcm9tIFwic2FwL20vTWVudUJ1dHRvblwiO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IE1hbmFnZWRPYmplY3RNb2RlbCBmcm9tIFwic2FwL3VpL2ZsL3V0aWwvTWFuYWdlZE9iamVjdE1vZGVsXCI7XG5pbXBvcnQgdHlwZSBNRENUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Ub29sYmFyQWN0aW9uIGZyb20gXCJzYXAvdWkvbWRjL2FjdGlvbnRvb2xiYXIvQWN0aW9uVG9vbGJhckFjdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBGRVNSSGVscGVyIGZyb20gXCJzYXAvdWkvcGVyZm9ybWFuY2UvdHJhY2UvRkVTUkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBJVGFibGVCbG9jayB9IGZyb20gXCIuLi9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlUnVudGltZSBmcm9tIFwiLi4vVGFibGVSdW50aW1lXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRleHRNZW51SGFuZGxlciBpbXBsZW1lbnRzIElJbnRlcmZhY2VXaXRoTWl4aW4ge1xuXHRwcm90ZWN0ZWQgY29udGV4dE1lbnVBY3RpdmUgPSBmYWxzZTtcblxuXHRzZXR1cE1peGluKF9iYXNlQ2xhc3M6IEZ1bmN0aW9uKTogdm9pZCB7XG5cdFx0Ly8gVGhpcyBtZXRob2QgaXMgbmVlZGVkIHRvIGltcGxlbWVudCBpbnRlcmZhY2UgSUludGVyZmFjZVdpdGhNaXhpblxuXHR9XG5cblx0LyoqXG5cdCAqIEFsaWduIGNvbnRleHQgbWVudSB3aXRoIHRoZSB0YWJsZSBhY3Rpb25zIGJ5IFJUQSBjaGFuZ2VzIGluIHRhYmxlIHRvb2xiYXIuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgd2l0aCBib3VuZCB0YWJsZSBhY3Rpb25zXG5cdCAqL1xuXHRhbGlnbkNvbnRleHRNZW51V2l0aFRhYmxlVG9vbGJhckNoYW5nZXModGFibGU6IE1EQ1RhYmxlKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dE1lbnUgPSB0YWJsZS5nZXRDb250ZXh0TWVudSgpIGFzIE1lbnU7XG5cdFx0Y29uc3Qgc29ydEhlbHBlckZvck1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuXHRcdGNvbnN0IHRhYmxlQWN0aW9ucyA9IHRhYmxlLmdldEFjdGlvbnMoKTtcblx0XHR0YWJsZUFjdGlvbnM/LmZvckVhY2goKHRhYmxlQWN0aW9uKSA9PiB7XG5cdFx0XHRjb25zdCB0YWJsZUFjdGlvbkl0ZW0gPSB0YWJsZUFjdGlvbi5nZXRBZ2dyZWdhdGlvbihcImFjdGlvblwiKSBhcyBCdXR0b247XG5cdFx0XHQvLyBDaGVjayBpZiB0aGUgYWN0aW9uIGl0ZW0gaGFzIGJlZW4gc3BsaXQgYnkgUlRBXG5cdFx0XHRpZiAodGhpcy5faXNBY3Rpb25TcGxpdCh0YWJsZUFjdGlvbkl0ZW0pKSB7XG5cdFx0XHRcdC8vIFJlbW92ZSBvcmlnaW5hbCBtZW51IGl0ZW0gYW5kIGFkZCBzdWIgaXRlbXMgYXMgbmV3IG1lbnUgaXRlbXNcblx0XHRcdFx0dGhpcy5fc3BsaXRBY3Rpb25zSW5Db250ZXh0TWVudSh0YWJsZUFjdGlvbkl0ZW0sIGNvbnRleHRNZW51KTtcblx0XHRcdH1cblx0XHRcdC8vIENoZWNrIGlmIHRoZSBhY3Rpb24gaXRlbSBoYXMgYmVlbiBjcmVhdGVkIGJ5IGNvbWJpbmluZyB0aGUgdHdvIGFjdGlvbnNcblx0XHRcdGlmICh0aGlzLl9pc0FjdGlvbkNvbWJpbmVkKHRhYmxlQWN0aW9uSXRlbSkpIHtcblx0XHRcdFx0dGhpcy5fY29tYmluZUFjdGlvbkluQ29udGV4dE1lbnUodGFibGVBY3Rpb25JdGVtIGFzIHVua25vd24gYXMgTWVudUJ1dHRvbiwgY29udGV4dE1lbnUsIHRhYmxlKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRleHRNZW51SXRlbSA9IHRoaXMuX2dldENvcnJlc3BvbmRpbmdDb250ZXh0TWVudUFjdGlvbih0YWJsZUFjdGlvbkl0ZW0sIGNvbnRleHRNZW51KTtcblx0XHRcdGlmIChjb250ZXh0TWVudUl0ZW0pIHtcblx0XHRcdFx0dGhpcy5fYWxpZ25UZXh0QW5kVmlzaWJsaXR5SW5Db250ZXh0TWVudSh0YWJsZUFjdGlvbkl0ZW0sIGNvbnRleHRNZW51SXRlbSwgdGFibGVBY3Rpb24gYXMgQWN0aW9uVG9vbGJhckFjdGlvbik7XG5cdFx0XHRcdHNvcnRIZWxwZXJGb3JNZW51SXRlbXMucHVzaChjb250ZXh0TWVudUl0ZW0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdC8vIEFsaWduIHRoZSBvcmRlciBvZiBjb250ZXh0LW1lbnVJdGVtcyB3aXRoIGJvdW5kIHRhYmxlIGFjdGlvbnNcblx0XHRpZiAoc29ydEhlbHBlckZvck1lbnVJdGVtcy5sZW5ndGgpIHtcblx0XHRcdHNvcnRIZWxwZXJGb3JNZW51SXRlbXMuZm9yRWFjaCgobWVudUl0ZW0sIHNvcnRJbmRleCkgPT4ge1xuXHRcdFx0XHRjb25zdCBpbmRleE9mQ29udGV4dE1lbnUgPSBjb250ZXh0TWVudS5pbmRleE9mSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdGlmIChpbmRleE9mQ29udGV4dE1lbnUgIT09IHNvcnRJbmRleCkge1xuXHRcdFx0XHRcdGNvbnRleHRNZW51LnJlbW92ZUl0ZW0obWVudUl0ZW0pO1xuXHRcdFx0XHRcdGNvbnRleHRNZW51Lmluc2VydEl0ZW0obWVudUl0ZW0sIHNvcnRJbmRleCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgYWN0aW9uIGl0ZW0gaGFzIGJlZW4gY3JlYXRlZCBieSBhIENvbWJpbmUgUlRBIGNoYW5nZXMgaW4gdGhlIHRhYmxlIHRvb2xiYXIuXG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBhY3Rpb24gdG8gY2hlY2tcblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIGl0ZW0gaGFzIGJlZW4gY3JlYXRlZCBieSBhIENvbWJpbmUgUlRBIGNoYW5nZXMgaW4gdGhlIHRhYmxlIHRvb2xiYXJcblx0ICovXG5cdF9pc0FjdGlvbkNvbWJpbmVkKGFjdGlvbkl0ZW06IEJ1dHRvbik6IGJvb2xlYW4ge1xuXHRcdGlmIChhY3Rpb25JdGVtLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpID09PSBcInNhcC5tLk1lbnVCdXR0b25cIikge1xuXHRcdFx0Ly8gV2UgZG9uJ3QgaGF2ZSBjdXN0b20gZGF0YSBhdHRyaWJ1dGUgb24gdGhlIE1lbnVCdXR0b24gY3JlYXRlZCBieSBSVEEgY29tYmluZSBjaGFuZ2Vcblx0XHRcdGNvbnN0IGRlcGVuZGVudHMgPSBhY3Rpb25JdGVtLmdldERlcGVuZGVudHMoKTtcblx0XHRcdC8vIGZpbmQgYWxsIHRoZSBkZXBlbmRlbnRzIHdoaWNoIGFyZSBhIEZsZXggTWFuYWdlZE9iamVjdE1vZGVsXG5cdFx0XHRjb25zdCBmbGV4TWFuYWdlZE9iamVjdE1vZGVscyA9IGRlcGVuZGVudHMuZmlsdGVyKChkZXBlbmRlbnQpID0+IGRlcGVuZGVudCBpbnN0YW5jZW9mIE1hbmFnZWRPYmplY3RNb2RlbCk7XG5cdFx0XHQvLyBjaGVjayBpZiB0aGUgbmFtZSBvZiBvbmUgb2YgdGhlbSBpbmNsdWRlcyBcIiRzYXAubS5mbGV4aWJpbGl0eS5NZW51QnV0dG9uTW9kZWxcIlxuXHRcdFx0cmV0dXJuIGZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzLnNvbWUoKG1vZGVsKSA9PlxuXHRcdFx0XHQobW9kZWwgYXMgdW5rbm93biBhcyBNYW5hZ2VkT2JqZWN0TW9kZWwpLmdldE5hbWUoKS5pbmNsdWRlcyhcIiRzYXAubS5mbGV4aWJpbGl0eS5NZW51QnV0dG9uTW9kZWxcIilcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb21iaW5lIHRoZSBhY3Rpb25zIGluIHRoZSBjb250ZXh0IG1lbnUgdG8gYWxpZ24gd2l0aCB0aGUgdGFibGUgYWN0aW9uIHRvb2xiYXIuXG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBhY3Rpb24gaXRlbSB0byBzcGxpdFxuXHQgKiBAcGFyYW0gY29udGV4dE1lbnUgVGhlIGNvbnRleHQgbWVudVxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIE1EQ1RhYmxlXG5cdCAqL1xuXHRfY29tYmluZUFjdGlvbkluQ29udGV4dE1lbnUoYWN0aW9uSXRlbTogTWVudUJ1dHRvbiwgY29udGV4dE1lbnU6IE1lbnUsIHRhYmxlOiBNRENUYWJsZSk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRleHRNZW51SXRlbXMgPSBjb250ZXh0TWVudS5nZXRJdGVtcygpO1xuXHRcdC8vIENyZWF0ZSBhIG5ldyBtZW51IGJ1dHRvbiBpbiB0aGUgY29udGV4dCBtZW51IGlmIGl0IGRvZXMgbm90IGV4aXN0XG5cdFx0Y29uc3QgbWVudUJ1dHRvbiA9IHRoaXMuX2ZpbmRPckNyZWF0ZU1lbnVCdXR0b25JbkNvbnRleHRNZW51KGFjdGlvbkl0ZW0sIHRhYmxlKTtcblx0XHRjb25zdCBhY3Rpb25JdGVtcyA9IGFjdGlvbkl0ZW0uZ2V0TWVudSgpLmdldEl0ZW1zKCk7XG5cdFx0Zm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9uSXRlbXMpIHtcblx0XHRcdGNvbnN0IHRvb2xCYXJBY3Rpb24gPSBhY3Rpb247XG5cdFx0XHQvLyBub3cgZmluZCB0aGUgYWN0aW9uIGluIHRoZSBjb250ZXh0IG1lbnUgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBjb250ZXh0IG1lbnVcblx0XHRcdGZvciAoY29uc3QgbWVudUl0ZW0gb2YgY29udGV4dE1lbnVJdGVtcykge1xuXHRcdFx0XHRjb25zdCBhY3Rpb25JZEluQ29udGV4dE1lbnUgPSBtZW51SXRlbS5kYXRhKFwiYWN0aW9uSWRcIik7XG5cdFx0XHRcdGNvbnN0IGFjdGlvbklkSW5Ub29sYmFyID0gdG9vbEJhckFjdGlvbi5kYXRhKFwiYWN0aW9uSWRcIik7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRhY3Rpb25JZEluQ29udGV4dE1lbnUgPT09IGFjdGlvbklkSW5Ub29sYmFyICsgXCI6OkNvbnRleHRNZW51XCIgfHxcblx0XHRcdFx0XHRhY3Rpb25JZEluQ29udGV4dE1lbnUgPT09IGFjdGlvbklkSW5Ub29sYmFyLnJlcGxhY2UoXCI6OkFjdGlvbk1lbnVcIiwgXCI6OkNvbnRleHRNZW51XCIpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdG1lbnVJdGVtLnNldFRleHQodG9vbEJhckFjdGlvbi5nZXRUZXh0KCkpO1xuXHRcdFx0XHRcdC8vIEFkZCB0aGUgYWN0aW9uIHRvIHRoZSBtZW51IGJ1dHRvblxuXHRcdFx0XHRcdGNvbnRleHRNZW51LnJlbW92ZUl0ZW0obWVudUl0ZW0pO1xuXHRcdFx0XHRcdG1lbnVCdXR0b24uYWRkSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSWYgd2UgZmluZCBhbm90aGVyIG1lbnUgaW4gdGhlIGNvbnRleHQgbWVudSB3ZSBjaGVjayBpZiB0aGUgYWN0aW9uIGlzIGluIHRoZSBzdWIgbWVudVxuXHRcdFx0XHRpZiAobWVudUl0ZW0uZ2V0SXRlbXMoKS5sZW5ndGggPiAwICYmICFtZW51SXRlbS5nZXRJZCgpLmluY2x1ZGVzKGFjdGlvbkl0ZW0uZ2V0SWQoKSkpIHtcblx0XHRcdFx0XHRjb25zdCBhY3Rpb25JblN1Yk1lbnUgPSB0aGlzLl9maW5kQWN0aW9uSW5TdWJNZW51KG1lbnVJdGVtLmdldEl0ZW1zKCksIHRvb2xCYXJBY3Rpb24pO1xuXHRcdFx0XHRcdGlmIChhY3Rpb25JblN1Yk1lbnUpIHtcblx0XHRcdFx0XHRcdGFjdGlvbkluU3ViTWVudS5zZXRUZXh0KHRvb2xCYXJBY3Rpb24uZ2V0VGV4dCgpKTtcblx0XHRcdFx0XHRcdG1lbnVCdXR0b24uYWRkSXRlbShhY3Rpb25JblN1Yk1lbnUpO1xuXHRcdFx0XHRcdFx0aWYgKG1lbnVJdGVtLmdldEl0ZW1zKCkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdG1lbnVJdGVtLmRlc3Ryb3koKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRmluZHMgdGhlIGFjdGlvbiBpbiBhbiBhY3Rpb24gbWVudSBpbiB0aGUgY29udGV4dCBtZW51LCBpdCByZXR1cm4gdGhlIGFjdGlvbiBpZiBmb3VuZCBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBtZW51LlxuXHQgKiBAcGFyYW0gc3ViTWVudSBUaGUgYXJyYXkgb2YgYWN0aW9ucyBpbiB0aGUgbWVudVxuXHQgKiBAcGFyYW0gYWN0aW9uSXRlbSBUaGUgYWN0aW9uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG5cdCAqIEByZXR1cm5zIFRoZSBhY3Rpb24gaWYgZm91bmQsIG90aGVyd2lzZSB1bmRlZmluZWRcblx0ICovXG5cdF9maW5kQWN0aW9uSW5TdWJNZW51KHN1Yk1lbnU6IE1lbnVJdGVtW10sIGFjdGlvbkl0ZW06IE1lbnVJdGVtKTogTWVudUl0ZW0gfCB1bmRlZmluZWQge1xuXHRcdGZvciAoY29uc3QgbWVudUl0ZW0gb2Ygc3ViTWVudSkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRtZW51SXRlbS5kYXRhKFwiYWN0aW9uSWRcIikgPT09IGFjdGlvbkl0ZW0uZGF0YShcImFjdGlvbklkXCIpLnJlcGxhY2UoXCI6OkFjdGlvbk1lbnVcIiwgXCI6OkNvbnRleHRNZW51XCIpIHx8XG5cdFx0XHRcdG1lbnVJdGVtLmRhdGEoXCJhY3Rpb25JZFwiKSA9PT0gYWN0aW9uSXRlbS5kYXRhKFwiYWN0aW9uSWRcIikgKyBcIjo6Q29udGV4dE1lbnVcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvbiA9IG1lbnVJdGVtO1xuXHRcdFx0XHRzdWJNZW51LnNwbGljZShzdWJNZW51LmluZGV4T2YobWVudUl0ZW0pLCAxKTtcblx0XHRcdFx0cmV0dXJuIGFjdGlvbjtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjaydzIGlmIGEgcGFydGljdWxhciBtZW51IGJ1dHRvbiBleGlzdHMgaW4gdGhlIGNvbnRleHQgbWVudSwgaWYgbm90IGNyZWF0ZXMgYSBuZXcgbWVudSBidXR0b24gYW5kIGFkZHMgaXQgdG8gdGhlIGNvbnRleHQgbWVudS5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIG1lbnUgYnV0dG9uIHRvIGZpbmQgb3IgY3JlYXRlXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgTURDVGFibGVcblx0ICogQHJldHVybnMgVGhlIE1lbnVJdGVtIGlmIGZvdW5kLCBvdGhlcndpc2UgYSBuZXcgTWVudUl0ZW1cblx0ICovXG5cdF9maW5kT3JDcmVhdGVNZW51QnV0dG9uSW5Db250ZXh0TWVudShhY3Rpb25JdGVtOiBNZW51QnV0dG9uLCB0YWJsZTogTURDVGFibGUpOiBNZW51SXRlbSB7XG5cdFx0Y29uc3QgY29udGV4dE1lbnUgPSB0YWJsZS5nZXRDb250ZXh0TWVudSgpIGFzIE1lbnU7XG5cdFx0Y29uc3QgY29udGV4dE1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cdFx0Ly9sb29wIG92ZXIgY29udGV4dE1lbnVJdGVtcyBhbmQgY2hlY2sgaWYgdGhlIHJlcXVpcmVkIG1lbnUgYnV0dG9uIGFscmVhZHkgZXhpc3RzXG5cdFx0Zm9yIChjb25zdCBtZW51SXRlbSBvZiBjb250ZXh0TWVudUl0ZW1zKSB7XG5cdFx0XHRpZiAobWVudUl0ZW0uZ2V0SWQoKS5pbmNsdWRlcyhhY3Rpb25JdGVtLmdldElkKCkpKSB7XG5cdFx0XHRcdHJldHVybiBtZW51SXRlbTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gaWYgdGhlIHJlcXVpcmVkIG1lbnUgYnV0dG9uIGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgYSBuZXcgbWVudSBidXR0b24gYW5kIGFkZCBpdCB0byB0aGUgY29udGV4dE1lbnVcblx0XHRjb25zdCBuZXdNZW51QnV0dG9uID0gbmV3IE1lbnVJdGVtKHtcblx0XHRcdGlkOiBnZW5lcmF0ZShbdGFibGUuZ2V0SWQoKSwgYWN0aW9uSXRlbS5nZXRJZCgpLCBcIjo6Q29udGV4dE1lbnVcIl0pLFxuXHRcdFx0dGV4dDogYWN0aW9uSXRlbS5nZXRUZXh0KClcblx0XHR9KTtcblx0XHRjb250ZXh0TWVudS5hZGRJdGVtKG5ld01lbnVCdXR0b24pO1xuXHRcdHJldHVybiBuZXdNZW51QnV0dG9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNwbGl0IHRoZSBhY3Rpb24gaXRlbXMgaW4gdGhlIGNvbnRleHQgbWVudS5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIGFjdGlvbiBpdGVtIHRvIHNwbGl0XG5cdCAqIEBwYXJhbSBjb250ZXh0TWVudSBUaGUgY29udGV4dCBtZW51XG5cdCAqL1xuXHRfc3BsaXRBY3Rpb25zSW5Db250ZXh0TWVudShhY3Rpb25JdGVtOiBCdXR0b24sIGNvbnRleHRNZW51OiBNZW51KTogdm9pZCB7XG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gY29udGV4dE1lbnUuZ2V0SXRlbXMoKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVJdGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Ly9jaGVjayBpZiB0aGUgbWVudSBpdGVtIGlzIGEgTWVudVxuXHRcdFx0aWYgKG1lbnVJdGVtc1tpXS5nZXRJdGVtcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG1lbnVJdGVtc1tpXVxuXHRcdFx0XHRcdFx0LmdldEl0ZW1zKClcblx0XHRcdFx0XHRcdC5zb21lKChpdGVtKSA9PiBpdGVtLmRhdGEoXCJhY3Rpb25JZFwiKSA9PT0gYWN0aW9uSXRlbS5kYXRhKFwiYWN0aW9uSWRcIikucmVwbGFjZShcIjo6QWN0aW9uTWVudVwiLCBcIjo6Q29udGV4dE1lbnVcIikpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0IG1lbnVJdGVtID0gbWVudUl0ZW1zW2ldO1xuXHRcdFx0XHRcdGNvbnN0IHN1Ykl0ZW1zID0gbWVudUl0ZW0uZ2V0SXRlbXMoKTtcblx0XHRcdFx0XHQvLyBSZW1vdmUgdGhlIG1lbnVJdGVtIGZyb20gdGhlIGNvbnRleHQgbWVudVxuXHRcdFx0XHRcdGNvbnRleHRNZW51LnJlbW92ZUl0ZW0obWVudUl0ZW0pO1xuXHRcdFx0XHRcdC8vIEluc2VydCB0aGVzZSBzdWItaXRlbXMgaW50byB0aGUgY29udGV4dE1lbnUgc3RhcnRpbmcgZnJvbSB0aGUgb3JpZ2luYWwgaW5kZXhcblx0XHRcdFx0XHRzdWJJdGVtcy5mb3JFYWNoKChzdWJJdGVtLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29udGV4dE1lbnUuaW5zZXJ0SXRlbShzdWJJdGVtLCBpICsgaW5kZXgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNvcnJlc3BvbmRpbmcgY29udGV4dCBtZW51IGFjdGlvbiBmb3IgdGhlIHRhYmxlIGFjdGlvbi5cblx0ICogQHBhcmFtIHRhYmxlQWN0aW9uIFRoZSBhY3Rpb24gaXRlbSB0byBzcGxpdFxuXHQgKiBAcGFyYW0gY29udGV4dE1lbnUgVGhlIGNvbnRleHQgbWVudVxuXHQgKiBAcmV0dXJucyAgTWVudUl0ZW18bnVsbCB0aGUgY29ycmVzcG9uZGluZyBjb250ZXh0IG1lbnUgYWN0aW9uIG9yIG51bGwgaWYgbm90IGZvdW5kXG5cdCAqL1xuXHRfZ2V0Q29ycmVzcG9uZGluZ0NvbnRleHRNZW51QWN0aW9uKHRhYmxlQWN0aW9uOiBCdXR0b24sIGNvbnRleHRNZW51OiBNZW51KTogTWVudUl0ZW0gfCBudWxsIHtcblx0XHRjb25zdCBtZW51SXRlbXMgPSBjb250ZXh0TWVudS5nZXRJdGVtcygpO1xuXHRcdGZvciAoY29uc3QgaXRlbSBvZiBtZW51SXRlbXMpIHtcblx0XHRcdC8vIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRleHQgbWVudSBhY3Rpb24gaXMgZWl0aGVyIGFuIGl0ZW0gd2l0aCBhbiBhZGRpdGlvbmFsIFwiOjpDb250ZXh0TWVudVwiIHRleHQgYXQgdGhlIGVuZCBvZiB0aGUgaWRcblx0XHRcdC8vIG9yIGl0IGlzIGEgc3BsaXR0ZWQgbWVudSBpdGVtIHdoZXJlIHRoZSBcIjo6Q29udGV4dE1lbnVcIiBwYXJ0IGlzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGlkXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRhYmxlQWN0aW9uLmdldElkKCkgKyBcIjo6Q29udGV4dE1lbnVcIiA9PT0gaXRlbS5nZXRJZCgpIHx8XG5cdFx0XHRcdGl0ZW0uZGF0YShcImFjdGlvbklkXCIpID09PSB0YWJsZUFjdGlvbi5kYXRhKFwiYWN0aW9uSWRcIik/LnJlcGxhY2UoXCI6OkFjdGlvbk1lbnVcIiwgXCI6OkNvbnRleHRNZW51XCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9XG5cdFx0XHQvLyBmb3IgY29tYmluZWQgYWN0aW9ucywgdGhlIGNvbnRleHQgbWVudSBhY3Rpb24gaXMgdGhlIG9uZSB3aXRoIHRoZSBzYW1lIHRleHRcblx0XHRcdGlmIChpdGVtLmdldElkKCkuaW5jbHVkZXModGFibGVBY3Rpb24uZ2V0SWQoKSkpIHtcblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkanVzdCB0aGUgdGV4dCBhbmQgdmlzaWJpbGl0eSBvZiB0aGUgYWN0aW9uIGl0ZW1zIGluIHRoZSBjb250ZXh0IG1lbnUuXG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBhY3Rpb24gaXRlbSB0byBzcGxpdFxuXHQgKiBAcGFyYW0gY29udGV4dE1lbnVJdGVtIFRoZSBjb250ZXh0IG1lbnVcblx0ICogQHBhcmFtIHRhYmxlQWN0aW9uIFRoZSBhcnJheSBvZiB0YWJsZSBhY3Rpb25zXG5cdCAqL1xuXHRfYWxpZ25UZXh0QW5kVmlzaWJsaXR5SW5Db250ZXh0TWVudShhY3Rpb25JdGVtOiBCdXR0b24sIGNvbnRleHRNZW51SXRlbTogTWVudUl0ZW0sIHRhYmxlQWN0aW9uOiBBY3Rpb25Ub29sYmFyQWN0aW9uKTogdm9pZCB7XG5cdFx0Ly8gY2hhbmdlIHRoZSB0ZXh0IG9mIHRoZSBtZW51IGl0ZW0gYXMgdGhlIHRleHQgb2YgYWN0aW9uIGl0ZW1cblx0XHRjb250ZXh0TWVudUl0ZW0uc2V0VGV4dChhY3Rpb25JdGVtLmdldFRleHQoKSk7XG5cdFx0Ly8gY2hhbmdlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjb250ZXh0TWVudSBhY3Rpb24gYXMgdGhlIHZpc2liaWxpdHkgb2YgdGFibGUgYWN0aW9uXG5cdFx0Y29uc3QgdGFibGVBY3Rpb25WaXNpYmlsaXR5ID0gYWN0aW9uSXRlbS5nZXRWaXNpYmxlKCkgJiYgdGFibGVBY3Rpb24uZ2V0VmlzaWJsZSgpO1xuXHRcdGlmICh0YWJsZUFjdGlvblZpc2liaWxpdHkgIT09IGNvbnRleHRNZW51SXRlbS5nZXRWaXNpYmxlKCkpIHtcblx0XHRcdGNvbnRleHRNZW51SXRlbS5zZXRWaXNpYmxlKHRhYmxlQWN0aW9uVmlzaWJpbGl0eSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIGFuIGFjdGlvbiBoYXMgYmVlbiBzcGxpdCBieSBSVEEuXG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBvcmlnaW5hbCBhY3Rpb24gaXRlbVxuXHQgKiBAcmV0dXJucyBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIGFjdGlvbiBoYXMgYmVlbiBzcGxpdFxuXHQgKi9cblx0X2lzQWN0aW9uU3BsaXQoYWN0aW9uSXRlbTogQnV0dG9uKTogYm9vbGVhbiB7XG5cdFx0aWYgKGFjdGlvbkl0ZW0uZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkgPT09IFwic2FwLm0uTWVudUJ1dHRvblwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IGRlcGVuZGVudHMgPSBhY3Rpb25JdGVtLmdldERlcGVuZGVudHMoKTtcblx0XHQvLyBmaW5kIGFsbCB0aGUgZGVwZW5kZW50cyB3aGljaCBhcmUgYSBGbGV4IE1hbmFnZWRPYmplY3RNb2RlbFxuXHRcdGNvbnN0IGZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzID0gZGVwZW5kZW50cy5maWx0ZXIoKGRlcGVuZGVudCkgPT4gZGVwZW5kZW50IGluc3RhbmNlb2YgTWFuYWdlZE9iamVjdE1vZGVsKTtcblx0XHQvLyBjaGVjayBpZiBvbmUgb2YgdGhlbSBoYXMgdGhlIG5hbWUgXCIkc2FwLm0uZmxleGliaWxpdHkuU3BsaXRCdXR0b25zTW9kZWxcIlxuXHRcdHJldHVybiBmbGV4TWFuYWdlZE9iamVjdE1vZGVscy5zb21lKFxuXHRcdFx0KG1vZGVsKSA9PiAobW9kZWwgYXMgdW5rbm93biBhcyBNYW5hZ2VkT2JqZWN0TW9kZWwpLmdldE5hbWUoKSA9PT0gXCIkc2FwLm0uZmxleGliaWxpdHkuU3BsaXRCdXR0b25zTW9kZWxcIlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBhIGNvbnRleHQgbWVudSBpdGVtIGhhcyBiZWVuIHByZXNzZWQuXG5cdCAqIEBwYXJhbSBhY3RpdmVcblx0ICovXG5cdHNldENvbnRleHRNZW51QWN0aXZlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuY29udGV4dE1lbnVBY3RpdmUgPSBhY3RpdmU7XG5cdH1cblxuXHRpc0NvbnRleHRNZW51QWN0aXZlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRleHRNZW51QWN0aXZlO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ha2UgdGhlIG1lbnUgaXRlbSBvZiBTQVAgQ29sbGFib3JhdGlvbiBNYW5hZ2VyIHZpc2libGUgaWYgaXQgaXMgc3VwcG9ydGVkLlxuXHQgKiBAcGFyYW0gdGFibGVcblx0ICogQHBhcmFtIGNvbnRleHRzXG5cdCAqL1xuXHRzZXRDb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtVmlzaWJpbGl0eSh0YWJsZTogTURDVGFibGUsIGNvbnRleHRzOiBDb250ZXh0W10pOiB2b2lkIHtcblx0XHQvLyBnZXQgY29sbGFib3JhdGlvbiBtZW51IGl0ZW0gZnJvbSBjb250ZXh0IG1lbnVcblx0XHRjb25zdCBjb250ZXh0TWVudSA9IHRhYmxlLmdldENvbnRleHRNZW51KCkgYXMgTWVudTtcblx0XHRjb25zdCBtZW51SXRlbXMgPSBjb250ZXh0TWVudS5nZXRJdGVtcygpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW0gPSBtZW51SXRlbXM/LmZpbmQoKG1lbnVJdGVtKSA9PiBtZW51SXRlbS5nZXRJZCgpLmluY2x1ZGVzKFwiQ29udGV4dE1lbnU6OkNvbGxhYm9yYXRpb25NYW5hZ2VyXCIpKTtcblx0XHRpZiAoY29sbGFib3JhdGlvbk1hbmFnZXJNZW51SXRlbSkge1xuXHRcdFx0Ly8gZ2V0IGNvbGxhYm9yYXRpb24gb3B0aW9uIGZyb20gY29sbGFib3JhdGl2ZSB0b29scyBzZXJ2aWNlXG5cdFx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGFibGUpO1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSA9IGFwcENvbXBvbmVudD8uZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSgpO1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbk9wdGlvbiA9IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2U/LmNvbGxhYm9yYXRpb25TZXJ2aWNlLmNtSGVscGVyU2VydmljZT8uZ2V0T3B0aW9ucygpO1xuXHRcdFx0Ly8gZ2V0IG5hdmlnYXRpb24gaW5mbyBmcm9tIHRhYmxlIGRlZmluaXRpb25cblx0XHRcdGNvbnN0IHRhYmxlRGVmaW5pdGlvbiA9ICh0YWJsZT8uZ2V0UGFyZW50KCkgYXMgSVRhYmxlQmxvY2spPy5nZXRUYWJsZURlZmluaXRpb24oKTtcblx0XHRcdGNvbnN0IG5hdmlnYXRpb25UeXBlID0gdGFibGVEZWZpbml0aW9uPy5hbm5vdGF0aW9uPy5yb3c/Lm5hdmlnYXRpb25JbmZvPy50eXBlO1xuXHRcdFx0aWYgKGNvbGxhYm9yYXRpb25PcHRpb24gJiYgbmF2aWdhdGlvblR5cGUgPT09IFwiTmF2aWdhdGlvblwiICYmIGNvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gSXRlbXMgdG8gc2hhcmUgbmVlZHMgdG8gaGF2ZSBhbiBhY3RpdmUgZW50aXR5LCBpZiBpdCdzIG5vdCBDb2xsYWJvcmF0aXZlIERyYWZ0IG9yIGEgbm9uIGRyYWZ0IHByb2dyYW1taW5nIG1vZGVsXG5cdFx0XHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRhYmxlKTtcblx0XHRcdFx0Y29uc3QgY29sbGFib3JhdGl2ZURyYWZ0ID0gdmlldy5nZXRDb250cm9sbGVyKCkuY29sbGFib3JhdGl2ZURyYWZ0O1xuXHRcdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBjb250ZXh0c1swXS5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0Y29uc3QgaXNEcmFmdCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQobWV0YU1vZGVsLCBjb250ZXh0c1swXS5nZXRQYXRoKCkpO1xuXHRcdFx0XHQvLyBJZiB3ZSBhcmUgaW4gQ29sbGFib3JhdGl2ZSBEcmFmdCBvciBpbiBhbiBub24tZHJhZnQgYXBwLCB3ZSBzZXQgdmlzaWJsZSB0byB0cnVlLlxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugd2Ugb25seSBzZXQgdmlzaWJsZSB0byB0cnVlLCBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIHNlbGVjdGVkIGNvbnRleHRzIGlzIG9yIGhhcyBhbiBhY3RpdmUgdmVyc2lvbi5cblx0XHRcdFx0Y29uc3QgdmlzaWJsZSA9XG5cdFx0XHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LmlzQ29sbGFib3JhdGlvbkVuYWJsZWQoKSB8fCAhaXNEcmFmdFxuXHRcdFx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdFx0XHQ6IGNvbnRleHRzLnNvbWUoKGNvbnRleHQpID0+IGNvbnRleHQuZ2V0T2JqZWN0KCkuSXNBY3RpdmVFbnRpdHkgfHwgY29udGV4dC5nZXRPYmplY3QoKS5IYXNBY3RpdmVFbnRpdHkpO1xuXHRcdFx0XHRjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtLnNldFZpc2libGUodmlzaWJsZSk7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZShjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtLCBcInByZXNzXCIsIFwiQ006U2hhcmVMaW5rXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29sbGFib3JhdGlvbk1hbmFnZXJNZW51SXRlbS5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciB3aGVuIGFuIGl0ZW0gaW4gdGhlIGNvbnRleHQgbWVudSBpcyBwcmVzc2VkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRfb25Db250ZXh0TWVudVByZXNzKHRoaXM6IElUYWJsZUJsb2NrICYgQ29udGV4dE1lbnVIYW5kbGVyLCBvRXZlbnQ6IFRhYmxlJEJlZm9yZU9wZW5Db250ZXh0TWVudUV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGUgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHR0YWJsZUNvbnRleHRzID0gdGFibGUuZ2V0U2VsZWN0ZWRDb250ZXh0cygpIGFzIENvbnRleHRbXSwgLy8gc2VsZWN0ZWQgaXRlbXMgaW4gdGhlIHRhYmxlXG5cdFx0XHRjb250ZXh0TWVudUNvbnRleHQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiYmluZGluZ0NvbnRleHRcIikgYXMgQ29udGV4dCwgLy8gcm93IGNsaWNrZWQgZm9yIGNvbnRleHQgbWVudVxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cblx0XHRjb25zdCBjb250ZXh0TWVudVNlbGVjdGlvbiA9IHRoaXMuZ2V0UmVsZXZhbnRTZWxlY3Rpb24odGFibGVDb250ZXh0cywgY29udGV4dE1lbnVDb250ZXh0KTtcblxuXHRcdC8vIENoZWNrIGlmIGFsbCBjb250ZXh0cyBpbiBjb250ZXh0TWVudVNlbGVjdGlvbiBhcmUgaW5hY3RpdmVcblx0XHQvLyBpZiBzbywgc2V0IHRoZSBpbmFjdGl2ZUNvbnRleHQgcHJvcGVydHkgaW4gdGhlIGludGVybmFsIG1vZGVsIHRvIHRydWVcblx0XHQvLyBpZiBqdXN0IG9uZSBjb250ZXh0IGlzIG5vdCBpbmFjdGl2ZSwgc2V0IHRoZSBpbmFjdGl2ZUNvbnRleHQgcHJvcGVydHkgdG8gZmFsc2Vcblx0XHRsZXQgb25lQ29udGV4dElzQWN0aXZlID0gdHJ1ZTtcblx0XHRvbmVDb250ZXh0SXNBY3RpdmUgPSBjb250ZXh0TWVudVNlbGVjdGlvbi5zb21lKChjb250ZXh0KSA9PiAhY29udGV4dC5pc0luYWN0aXZlKCkpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L2luYWN0aXZlQ29udGV4dFwiLCAhb25lQ29udGV4dElzQWN0aXZlKTtcblxuXHRcdC8vIERvIG5vdCBjb25zaWRlciBlbXB0eSByb3dzIGFzIHNlbGVjdGVkIGNvbnRleHQsIGZvciBvdGhlciBhY3Rpb25zIHRoYW4gZGVsZXRlXG5cdFx0Y29uc3QgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyA9IGNvbnRleHRNZW51U2VsZWN0aW9uLmZpbHRlcihmdW5jdGlvbiAob0NvbnRleHQ6IENvbnRleHQpIHtcblx0XHRcdHJldHVybiAhb0NvbnRleHQuaXNJbmFjdGl2ZSgpO1xuXHRcdH0pO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNcIiwgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0Ly9yZXNldCBudW1iZXIgb2Ygc2VsZWN0ZWQgY29udGV4dHMgdG8gZW5zdXJlIGNhbGxiYWNrIGZvciBjdXN0b20gZW5hYmxlIGhhbmRsZXJcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9udW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiwgLTEpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L251bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiLCBhY3RpdmVTZWxlY3RlZENvbnRleHRzLmxlbmd0aCk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzRm9yRGVsZXRlXCIsIGNvbnRleHRNZW51U2VsZWN0aW9uLmxlbmd0aCk7XG5cblx0XHRpZiAoYWN0aXZlU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHQvKiBBbGlnbiBjb250ZXh0IG1lbnUgd2l0aCBSVEEgY2hhbmdlcyBpbiB0YWJsZSB0b29sYmFyICovXG5cdFx0XHR0aGlzLmFsaWduQ29udGV4dE1lbnVXaXRoVGFibGVUb29sYmFyQ2hhbmdlcyh0YWJsZSk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBNZW51SXRlbSBmb3IgQ29sbGFib3JhdGlvbiBNYW5hZ2VyXG5cdFx0dGhpcy5zZXRDb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtVmlzaWJpbGl0eSh0YWJsZSwgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyk7XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgY29udGV4dCBtZW51IGNvbnRhaW5zIG9ubHkgbm90IHZpc2libGUgaXRlbXNcblx0XHQvLyBpbiB0aGF0IGNhc2UgcHJldmVudCB0aGUgY29udGV4dCBtZW51IGZyb20gb3BlbmluZ1xuXHRcdGNvbnN0IGNvbnRleHRNZW51ID0gdGFibGUuZ2V0Q29udGV4dE1lbnUoKSBhcyBNZW51O1xuXHRcdGNvbnN0IG1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cblx0XHRjb25zdCB2aXNpYmxlTWVudUl0ZW1zID0gbWVudUl0ZW1zLmZpbHRlcigobWVudUl0ZW0pID0+IG1lbnVJdGVtLmdldFZpc2libGUoKSk7XG5cdFx0aWYgKHZpc2libGVNZW51SXRlbXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRvRXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cblx0XHQvLyBFbmFibGVtZW50IG9mIHRoZSBFeHBhbmQvQ29sbGFwc2UgYnV0dG9uc1xuXHRcdGNvbnN0IGlzRXhwYW5kYWJsZSA9IGNvbnRleHRNZW51U2VsZWN0aW9uLnNvbWUoKHNpbmdsZUNvbnRleHQpID0+IHNpbmdsZUNvbnRleHQuaXNFeHBhbmRlZCgpICE9PSB1bmRlZmluZWQpO1xuXHRcdGNvbnN0IGlzQ29sbGFwc2FibGUgPSBjb250ZXh0TWVudVNlbGVjdGlvbi5zb21lKChzaW5nbGVDb250ZXh0KSA9PiBzaW5nbGVDb250ZXh0LmlzRXhwYW5kZWQoKSk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvaXNFeHBhbmRhYmxlXCIsIGlzRXhwYW5kYWJsZSk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvaXNDb2xsYXBzYWJsZVwiLCBpc0NvbGxhcHNhYmxlKTtcblxuXHRcdC8vIEFjdGlvbiBlbmFibGVtZW50IGZvciBEZWxldGVcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250cm9sSWRcIiwgdGFibGUuZ2V0SWQoKSk7XG5cdFx0ZGVsZXRlSGVscGVyLnVwZGF0ZURlbGV0ZUluZm9Gb3JTZWxlY3RlZENvbnRleHRzKGludGVybmFsTW9kZWxDb250ZXh0LCBjb250ZXh0TWVudVNlbGVjdGlvbiwgdHJ1ZSk7XG5cblx0XHQvLyBBY3Rpb24gZW5hYmxlbWVudCBmb3IgSUJOXG5cdFx0aWYgKCF0YWJsZS5kYXRhKFwiZW5hYmxlQW5hbHl0aWNzXCIpKSB7XG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uQXZhaWxhYmxlTWFwID0gdGFibGU/LmRhdGEoXCJuYXZpZ2F0aW9uQXZhaWxhYmxlTWFwXCIpO1xuXHRcdFx0VGFibGVSdW50aW1lLnNldEludGVudEJhc2VkTmF2aWdhdGlvbkVuYWJsZW1lbnQoaW50ZXJuYWxNb2RlbENvbnRleHQsIG5hdmlnYXRpb25BdmFpbGFibGVNYXAsIGFjdGl2ZVNlbGVjdGVkQ29udGV4dHMsIHRydWUpO1xuXHRcdH1cblxuXHRcdC8vIEFjdGlvbiBlbmFibGVtZW50IGZvciBNYXNzIEVkaXRcblx0XHRjb25zdCB1cGRhdGFibGVQcm9wZXJ0eVBhdGggPSB0YWJsZT8uZGF0YShcInVwZGF0YWJsZVByb3BlcnR5UGF0aFwiKTtcblx0XHRjb25zdCBkcmFmdCA9IHRhYmxlPy5kYXRhKFwiZHJhZnRcIik7XG5cdFx0Y29uc3QgcmVhZE9ubHlEcmFmdEVuYWJsZWQgPSB0YWJsZS5kYXRhKFwiZGlzcGxheU1vZGVQcm9wZXJ0eUJpbmRpbmdcIikgPT09IFwidHJ1ZVwiICYmIGRyYWZ0ICE9PSBcInVuZGVmaW5lZFwiO1xuXHRcdGNvbnN0IHVwZGF0YWJsZUNvbnRleHRzOiBDb250ZXh0W10gPSBbXTtcblx0XHRmb3IgKGNvbnN0IHNlbGVjdGVkQ29udGV4dCBvZiBhY3RpdmVTZWxlY3RlZENvbnRleHRzKSB7XG5cdFx0XHRpZiAoVGFibGVSdW50aW1lLmlzVXBkYXRhYmxlQ29udGV4dCh1cGRhdGFibGVQcm9wZXJ0eVBhdGgsIHNlbGVjdGVkQ29udGV4dCwgcmVhZE9ubHlEcmFmdEVuYWJsZWQpKSB7XG5cdFx0XHRcdHVwZGF0YWJsZUNvbnRleHRzLnB1c2goc2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvdXBkYXRhYmxlQ29udGV4dHNcIiwgdXBkYXRhYmxlQ29udGV4dHMpO1xuXG5cdFx0Y29uc3QgdGFibGVEZWZpbml0aW9uID0gdGhpcy5nZXRUYWJsZURlZmluaXRpb24oKTtcblx0XHRpZiAodGFibGVEZWZpbml0aW9uLmNvbnRyb2wuY3JlYXRlRW5hYmxlbWVudCAmJiBjb250ZXh0TWVudVNlbGVjdGlvbi5sZW5ndGggPT09IDEpIHtcblx0XHRcdFRhYmxlUnVudGltZS5fdXBkYXRlQ3JlYXRlRW5hYmxlbWVudChcblx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdHRhYmxlRGVmaW5pdGlvbi5jb250cm9sLmNyZWF0ZUVuYWJsZW1lbnQsXG5cdFx0XHRcdHRhYmxlLFxuXHRcdFx0XHRjb250ZXh0TWVudVNlbGVjdGlvblswXSxcblx0XHRcdFx0dGFibGVEZWZpbml0aW9uLmNvbnRyb2wubm9kZVR5cGUsXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0VGFibGVSdW50aW1lLnVwZGF0ZUN1dENvcHlQYXN0ZUVuYWJsZW1lbnQoaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0T2JqZWN0KCksIHRhYmxlLCB0cnVlKTtcblx0XHRUYWJsZVJ1bnRpbWUudXBkYXRlTW92ZVVwRG93bkVuYWJsZW1lbnQoaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0T2JqZWN0KCksIHRhYmxlLCB0cnVlKTtcblxuXHRcdC8vIE90aGVyIGFjdGlvbiBlbmFibGVtZW50XG5cdFx0QWN0aW9uUnVudGltZS5zZXRBY3Rpb25FbmFibGVtZW50KFxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRKU09OLnBhcnNlKHRhYmxlRGVmaW5pdGlvbi5vcGVyYXRpb25BdmFpbGFibGVNYXApLFxuXHRcdFx0YWN0aXZlU2VsZWN0ZWRDb250ZXh0cyxcblx0XHRcdFwidGFibGVcIixcblx0XHRcdHRydWVcblx0XHQpO1xuXHR9XG5cblx0Z2V0UmVsZXZhbnRTZWxlY3Rpb24odGFibGVDb250ZXh0czogQ29udGV4dFtdLCBjb250ZXh0TWVudUNvbnRleHQ6IENvbnRleHQpOiBDb250ZXh0W10ge1xuXHRcdGxldCBjb250ZXh0TWVudVNlbGVjdGlvbjogQ29udGV4dFtdO1xuXHRcdGlmICh0YWJsZUNvbnRleHRzLmluY2x1ZGVzKGNvbnRleHRNZW51Q29udGV4dCkpIHtcblx0XHRcdGNvbnRleHRNZW51U2VsZWN0aW9uID0gdGFibGVDb250ZXh0cztcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udGV4dE1lbnVTZWxlY3Rpb24gPSBbY29udGV4dE1lbnVDb250ZXh0XSBhcyBDb250ZXh0W107XG5cdFx0fVxuXHRcdHJldHVybiBjb250ZXh0TWVudVNlbGVjdGlvbjtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7TUFvQnFCQSxrQkFBa0I7SUFBQSxTQUFBQSxtQkFBQTtNQUFBLEtBQzVCQyxpQkFBaUIsR0FBRyxLQUFLO0lBQUE7SUFBQUMsUUFBQSxHQUFBRixrQkFBQTtJQUFBLElBQUFHLE1BQUEsR0FBQUgsa0JBQUEsQ0FBQUksU0FBQTtJQUFBRCxNQUFBLENBRW5DRSxVQUFVLEdBQVYsU0FBQUEsVUFBVUEsQ0FBQ0MsVUFBb0IsRUFBUTtNQUN0QztJQUFBOztJQUdEO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQUgsTUFBQSxDQUlBSSx1Q0FBdUMsR0FBdkMsU0FBQUEsdUNBQXVDQSxDQUFDQyxLQUFlLEVBQVE7TUFDOUQsTUFBTUMsV0FBVyxHQUFHRCxLQUFLLENBQUNFLGNBQWMsQ0FBQyxDQUFTO01BQ2xELE1BQU1DLHNCQUFrQyxHQUFHLEVBQUU7TUFDN0MsTUFBTUMsWUFBWSxHQUFHSixLQUFLLENBQUNLLFVBQVUsQ0FBQyxDQUFDO01BQ3ZDRCxZQUFZLEVBQUVFLE9BQU8sQ0FBRUMsV0FBVyxJQUFLO1FBQ3RDLE1BQU1DLGVBQWUsR0FBR0QsV0FBVyxDQUFDRSxjQUFjLENBQUMsUUFBUSxDQUFXO1FBQ3RFO1FBQ0EsSUFBSSxJQUFJLENBQUNDLGNBQWMsQ0FBQ0YsZUFBZSxDQUFDLEVBQUU7VUFDekM7VUFDQSxJQUFJLENBQUNHLDBCQUEwQixDQUFDSCxlQUFlLEVBQUVQLFdBQVcsQ0FBQztRQUM5RDtRQUNBO1FBQ0EsSUFBSSxJQUFJLENBQUNXLGlCQUFpQixDQUFDSixlQUFlLENBQUMsRUFBRTtVQUM1QyxJQUFJLENBQUNLLDJCQUEyQixDQUFDTCxlQUFlLEVBQTJCUCxXQUFXLEVBQUVELEtBQUssQ0FBQztR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LGlCQUFpQixDQUFDbEksSUFBSSxDQUFDbUksZUFBZSxDQUFDO1FBQ3hDO01BQ0Q7TUFDQXhCLG9CQUFvQixFQUFFTSxXQUFXLENBQUMsK0JBQStCLEVBQUVpQixpQkFBaUIsQ0FBQztNQUVyRixNQUFNekQsZUFBZSxHQUFHLElBQUksQ0FBQ0Usa0JBQWtCLENBQUMsQ0FBQztNQUNqRCxJQUFJRixlQUFlLENBQUM0RCxPQUFPLENBQUNDLGdCQUFnQixJQUFJekIsb0JBQW9CLENBQUM1RyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ2xGNEgsWUFBWSxDQUFDVSx1QkFBdUIsQ0FDbkM1QixvQkFBb0IsRUFDcEJsQyxlQUFlLENBQUM0RCxPQUFPLENBQUNDLGdCQUFnQixFQUN4Q3ZKLEtBQUssRUFDTDhILG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUN2QnBDLGVBQWUsQ0FBQzRELE9BQU8sQ0FBQ0csUUFBUSxFQUNoQyxJQUNELENBQUM7TUFDRjtNQUVBWCxZQUFZLENBQUNZLDRCQUE0QixDQUFDOUIsb0JBQW9CLENBQUNaLFNBQVMsQ0FBQyxDQUFDLEVBQUVoSCxLQUFLLEVBQUUsSUFBSSxDQUFDO01BQ3hGOEksWUFBWSxDQUFDYSwwQkFBMEIsQ0FBQy9CLG9CQUFvQixDQUFDWixTQUFTLENBQUMsQ0FBQyxFQUFFaEgsS0FBSyxFQUFFLElBQUksQ0FBQzs7TUFFdEY7TUFDQTRKLGFBQWEsQ0FBQ0MsbUJBQW1CLENBQ2hDakMsb0JBQW9CLEVBQ3BCa0MsSUFBSSxDQUFDQyxLQUFLLENBQUNyRSxlQUFlLENBQUNzRSxxQkFBcUIsQ0FBQyxFQUNqRDdCLHNCQUFzQixFQUN0QixPQUFPLEVBQ1AsSUFDRCxDQUFDO0lBQ0YsQ0FBQztJQUFBeEksTUFBQSxDQUVEb0ksb0JBQW9CLEdBQXBCLFNBQUFBLG9CQUFvQkEsQ0FBQ1AsYUFBd0IsRUFBRUUsa0JBQTJCLEVBQWE7TUFDdEYsSUFBSUksb0JBQStCO01BQ25DLElBQUlOLGFBQWEsQ0FBQ3BGLFFBQVEsQ0FBQ3NGLGtCQUFrQixDQUFDLEVBQUU7UUFDL0NJLG9CQUFvQixHQUFHTixhQUFhO01BQ3JDLENBQUMsTUFBTTtRQUNOTSxvQkFBb0IsR0FBRyxDQUFDSixrQkFBa0IsQ0FBYztNQUN6RDtNQUNBLE9BQU9JLG9CQUFvQjtJQUM1QixDQUFDO0lBQUEsT0FBQXRJLGtCQUFBO0VBQUE7RUFBQUUsUUFBQSxHQUFBRixrQkFBQTtFQUFBLE9BQUFFLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
375
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudUhhbmRsZXIiLCJjb250ZXh0TWVudUFjdGl2ZSIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwic2V0dXBNaXhpbiIsIl9iYXNlQ2xhc3MiLCJhbGlnbkNvbnRleHRNZW51V2l0aFRhYmxlVG9vbGJhckNoYW5nZXMiLCJ0YWJsZSIsImNvbnRleHRNZW51IiwiZ2V0Q29udGV4dE1lbnUiLCJzb3J0SGVscGVyRm9yTWVudUl0ZW1zIiwidGFibGVBY3Rpb25zIiwiZ2V0QWN0aW9ucyIsImZvckVhY2giLCJ0YWJsZUFjdGlvbiIsInRhYmxlQWN0aW9uSXRlbSIsImdldEFnZ3JlZ2F0aW9uIiwiX2lzQWN0aW9uU3BsaXQiLCJfc3BsaXRBY3Rpb25zSW5Db250ZXh0TWVudSIsIl9pc0FjdGlvbkNvbWJpbmVkIiwiX2NvbWJpbmVBY3Rpb25JbkNvbnRleHRNZW51IiwiY29udGV4dE1lbnVJdGVtIiwiX2dldENvcnJlc3BvbmRpbmdDb250ZXh0TWVudUFjdGlvbiIsIl9hbGlnblRleHRBbmRWaXNpYmxpdHlJbkNvbnRleHRNZW51IiwicHVzaCIsImxlbmd0aCIsIm1lbnVJdGVtIiwic29ydEluZGV4IiwiaW5kZXhPZkNvbnRleHRNZW51IiwiaW5kZXhPZkl0ZW0iLCJyZW1vdmVJdGVtIiwiaW5zZXJ0SXRlbSIsImFjdGlvbkl0ZW0iLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJkZXBlbmRlbnRzIiwiZ2V0RGVwZW5kZW50cyIsImZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzIiwiZmlsdGVyIiwiZGVwZW5kZW50IiwiTWFuYWdlZE9iamVjdE1vZGVsIiwic29tZSIsIm1vZGVsIiwiaW5jbHVkZXMiLCJjb250ZXh0TWVudUl0ZW1zIiwiZ2V0SXRlbXMiLCJtZW51QnV0dG9uIiwiX2ZpbmRPckNyZWF0ZU1lbnVCdXR0b25JbkNvbnRleHRNZW51IiwiYWN0aW9uSXRlbXMiLCJnZXRNZW51IiwiYWN0aW9uIiwidG9vbEJhckFjdGlvbiIsImFjdGlvbklkSW5Db250ZXh0TWVudSIsImRhdGEiLCJhY3Rpb25JZEluVG9vbGJhciIsInJlcGxhY2UiLCJzZXRUZXh0IiwiZ2V0VGV4dCIsImFkZEl0ZW0iLCJnZXRJZCIsImFjdGlvbkluU3ViTWVudSIsIl9maW5kQWN0aW9uSW5TdWJNZW51IiwiZGVzdHJveSIsInN1Yk1lbnUiLCJzcGxpY2UiLCJpbmRleE9mIiwidW5kZWZpbmVkIiwibmV3TWVudUJ1dHRvbiIsIk1lbnVJdGVtIiwiaWQiLCJnZW5lcmF0ZSIsInRleHQiLCJtZW51SXRlbXMiLCJpIiwiaXRlbSIsInN1Ykl0ZW1zIiwic3ViSXRlbSIsImluZGV4IiwidGFibGVBY3Rpb25WaXNpYmlsaXR5IiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGUiLCJzZXRDb250ZXh0TWVudUFjdGl2ZSIsImFjdGl2ZSIsImlzQ29udGV4dE1lbnVBY3RpdmUiLCJzZXRDb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtVmlzaWJpbGl0eSIsImNvbnRleHRzIiwiY29sbGFib3JhdGlvbk1hbmFnZXJNZW51SXRlbSIsImZpbmQiLCJhcHBDb21wb25lbnQiLCJDb21tb25VdGlscyIsImdldEFwcENvbXBvbmVudCIsImNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2UiLCJnZXRDb2xsYWJvcmF0aXZlVG9vbHNTZXJ2aWNlIiwiY29sbGFib3JhdGlvbk9wdGlvbiIsImNvbGxhYm9yYXRpb25TZXJ2aWNlIiwiY21IZWxwZXJTZXJ2aWNlIiwiZ2V0T3B0aW9ucyIsInRhYmxlRGVmaW5pdGlvbiIsImdldFBhcmVudCIsImdldFRhYmxlRGVmaW5pdGlvbiIsIm5hdmlnYXRpb25UeXBlIiwiYW5ub3RhdGlvbiIsInJvdyIsIm5hdmlnYXRpb25JbmZvIiwidHlwZSIsInZpZXciLCJnZXRUYXJnZXRWaWV3IiwiY29sbGFib3JhdGl2ZURyYWZ0IiwiZ2V0Q29udHJvbGxlciIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiaXNEcmFmdCIsIk1vZGVsSGVscGVyIiwiaXNEcmFmdFN1cHBvcnRlZCIsImdldFBhdGgiLCJ2aXNpYmxlIiwiaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCIsImNvbnRleHQiLCJnZXRPYmplY3QiLCJJc0FjdGl2ZUVudGl0eSIsIkhhc0FjdGl2ZUVudGl0eSIsIkZFU1JIZWxwZXIiLCJzZXRTZW1hbnRpY1N0ZXBuYW1lIiwiX29uQ29udGV4dE1lbnVQcmVzcyIsIm9FdmVudCIsImdldFNvdXJjZSIsInRhYmxlQ29udGV4dHMiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwiY29udGV4dE1lbnVDb250ZXh0IiwiZ2V0UGFyYW1ldGVyIiwiaW50ZXJuYWxNb2RlbENvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsImNvbnRleHRNZW51U2VsZWN0aW9uIiwiZ2V0UmVsZXZhbnRTZWxlY3Rpb24iLCJvbmVDb250ZXh0SXNBY3RpdmUiLCJpc0luYWN0aXZlIiwic2V0UHJvcGVydHkiLCJhY3RpdmVTZWxlY3RlZENvbnRleHRzIiwib0NvbnRleHQiLCJ2aXNpYmxlTWVudUl0ZW1zIiwicHJldmVudERlZmF1bHQiLCJpc0V4cGFuZGFibGUiLCJzaW5nbGVDb250ZXh0IiwiaXNFeHBhbmRlZCIsImlzQ29sbGFwc2FibGUiLCJkZWxldGVIZWxwZXIiLCJ1cGRhdGVEZWxldGVJbmZvRm9yU2VsZWN0ZWRDb250ZXh0cyIsIm5hdmlnYXRpb25BdmFpbGFibGVNYXAiLCJUYWJsZVJ1bnRpbWUiLCJzZXRJbnRlbnRCYXNlZE5hdmlnYXRpb25FbmFibGVtZW50IiwidXBkYXRhYmxlUHJvcGVydHlQYXRoIiwiZHJhZnQiLCJyZWFkT25seURyYWZ0RW5hYmxlZCIsInVwZGF0YWJsZUNvbnRleHRzIiwic2VsZWN0ZWRDb250ZXh0IiwiaXNVcGRhdGFibGVDb250ZXh0IiwiY29udHJvbCIsImNyZWF0ZUVuYWJsZW1lbnQiLCJfdXBkYXRlQ3JlYXRlRW5hYmxlbWVudCIsIm5vZGVUeXBlIiwidXBkYXRlQ3V0Q29weVBhc3RlRW5hYmxlbWVudCIsInVwZGF0ZU1vdmVVcERvd25FbmFibGVtZW50IiwiQWN0aW9uUnVudGltZSIsInNldEFjdGlvbkVuYWJsZW1lbnQiLCJKU09OIiwicGFyc2UiLCJvcGVyYXRpb25BdmFpbGFibGVNYXAiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNvbnRleHRNZW51SGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIElJbnRlcmZhY2VXaXRoTWl4aW4gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQWN0aW9uUnVudGltZSBmcm9tIFwic2FwL2ZlL2NvcmUvQWN0aW9uUnVudGltZVwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IGRlbGV0ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9EZWxldGVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUgTWVudSBmcm9tIFwic2FwL20vTWVudVwiO1xuaW1wb3J0IHR5cGUgTWVudUJ1dHRvbiBmcm9tIFwic2FwL20vTWVudUJ1dHRvblwiO1xuaW1wb3J0IE1lbnVJdGVtIGZyb20gXCJzYXAvbS9NZW51SXRlbVwiO1xuaW1wb3J0IE1hbmFnZWRPYmplY3RNb2RlbCBmcm9tIFwic2FwL3VpL2ZsL3V0aWwvTWFuYWdlZE9iamVjdE1vZGVsXCI7XG5pbXBvcnQgdHlwZSBNRENUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBUYWJsZSRCZWZvcmVPcGVuQ29udGV4dE1lbnVFdmVudCB9IGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBBY3Rpb25Ub29sYmFyQWN0aW9uIGZyb20gXCJzYXAvdWkvbWRjL2FjdGlvbnRvb2xiYXIvQWN0aW9uVG9vbGJhckFjdGlvblwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBGRVNSSGVscGVyIGZyb20gXCJzYXAvdWkvcGVyZm9ybWFuY2UvdHJhY2UvRkVTUkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBJVGFibGVCbG9jayB9IGZyb20gXCIuLi9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlUnVudGltZSBmcm9tIFwiLi4vVGFibGVSdW50aW1lXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRleHRNZW51SGFuZGxlciBpbXBsZW1lbnRzIElJbnRlcmZhY2VXaXRoTWl4aW4ge1xuXHRwcm90ZWN0ZWQgY29udGV4dE1lbnVBY3RpdmUgPSBmYWxzZTtcblxuXHRzZXR1cE1peGluKF9iYXNlQ2xhc3M6IEZ1bmN0aW9uKTogdm9pZCB7XG5cdFx0Ly8gVGhpcyBtZXRob2QgaXMgbmVlZGVkIHRvIGltcGxlbWVudCBpbnRlcmZhY2UgSUludGVyZmFjZVdpdGhNaXhpblxuXHR9XG5cblx0LyoqXG5cdCAqIEFsaWduIGNvbnRleHQgbWVudSB3aXRoIHRoZSB0YWJsZSBhY3Rpb25zIGJ5IFJUQSBjaGFuZ2VzIGluIHRhYmxlIHRvb2xiYXIuXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgd2l0aCBib3VuZCB0YWJsZSBhY3Rpb25zXG5cdCAqL1xuXHRhbGlnbkNvbnRleHRNZW51V2l0aFRhYmxlVG9vbGJhckNoYW5nZXModGFibGU6IE1EQ1RhYmxlKTogdm9pZCB7XG5cdFx0Y29uc3QgY29udGV4dE1lbnUgPSB0YWJsZS5nZXRDb250ZXh0TWVudSgpIGFzIE1lbnU7XG5cdFx0Y29uc3Qgc29ydEhlbHBlckZvck1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuXHRcdGNvbnN0IHRhYmxlQWN0aW9ucyA9IHRhYmxlLmdldEFjdGlvbnMoKTtcblx0XHR0YWJsZUFjdGlvbnM/LmZvckVhY2goKHRhYmxlQWN0aW9uKSA9PiB7XG5cdFx0XHRjb25zdCB0YWJsZUFjdGlvbkl0ZW0gPSB0YWJsZUFjdGlvbi5nZXRBZ2dyZWdhdGlvbihcImFjdGlvblwiKSBhcyBCdXR0b247XG5cdFx0XHQvLyBDaGVjayBpZiB0aGUgYWN0aW9uIGl0ZW0gaGFzIGJlZW4gc3BsaXQgYnkgUlRBXG5cdFx0XHRpZiAodGhpcy5faXNBY3Rpb25TcGxpdCh0YWJsZUFjdGlvbkl0ZW0pKSB7XG5cdFx0XHRcdC8vIFJlbW92ZSBvcmlnaW5hbCBtZW51IGl0ZW0gYW5kIGFkZCBzdWIgaXRlbXMgYXMgbmV3IG1lbnUgaXRlbXNcblx0XHRcdFx0dGhpcy5fc3BsaXRBY3Rpb25zSW5Db250ZXh0TWVudSh0YWJsZUFjdGlvbkl0ZW0sIGNvbnRleHRNZW51KTtcblx0XHRcdH1cblx0XHRcdC8vIENoZWNrIGlmIHRoZSBhY3Rpb24gaXRlbSBoYXMgYmVlbiBjcmVhdGVkIGJ5IGNvbWJpbmluZyB0aGUgdHdvIGFjdGlvbnNcblx0XHRcdGlmICh0aGlzLl9pc0FjdGlvbkNvbWJpbmVkKHRhYmxlQWN0aW9uSXRlbSkpIHtcblx0XHRcdFx0dGhpcy5fY29tYmluZUFjdGlvbkluQ29udGV4dE1lbnUodGFibGVBY3Rpb25JdGVtIGFzIHVua25vd24gYXMgTWVudUJ1dHRvbiwgY29udGV4dE1lbnUsIHRhYmxlKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRleHRNZW51SXRlbSA9IHRoaXMuX2dldENvcnJlc3BvbmRpbmdDb250ZXh0TWVudUFjdGlvbih0YWJsZUFjdGlvbkl0ZW0sIGNvbnRleHRNZW51KTtcblx0XHRcdGlmIChjb250ZXh0TWVudUl0ZW0pIHtcblx0XHRcdFx0dGhpcy5fYWxpZ25UZXh0QW5kVmlzaWJsaXR5SW5Db250ZXh0TWVudSh0YWJsZUFjdGlvbkl0ZW0sIGNvbnRleHRNZW51SXRlbSwgdGFibGVBY3Rpb24gYXMgQWN0aW9uVG9vbGJhckFjdGlvbik7XG5cdFx0XHRcdHNvcnRIZWxwZXJGb3JNZW51SXRlbXMucHVzaChjb250ZXh0TWVudUl0ZW0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdC8vIEFsaWduIHRoZSBvcmRlciBvZiBjb250ZXh0LW1lbnVJdGVtcyB3aXRoIGJvdW5kIHRhYmxlIGFjdGlvbnNcblx0XHRpZiAoc29ydEhlbHBlckZvck1lbnVJdGVtcy5sZW5ndGgpIHtcblx0XHRcdHNvcnRIZWxwZXJGb3JNZW51SXRlbXMuZm9yRWFjaCgobWVudUl0ZW0sIHNvcnRJbmRleCkgPT4ge1xuXHRcdFx0XHRjb25zdCBpbmRleE9mQ29udGV4dE1lbnUgPSBjb250ZXh0TWVudS5pbmRleE9mSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdGlmIChpbmRleE9mQ29udGV4dE1lbnUgIT09IHNvcnRJbmRleCkge1xuXHRcdFx0XHRcdGNvbnRleHRNZW51LnJlbW92ZUl0ZW0obWVudUl0ZW0pO1xuXHRcdFx0XHRcdGNvbnRleHRNZW51Lmluc2VydEl0ZW0obWVudUl0ZW0sIHNvcnRJbmRleCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgYWN0aW9uIGl0ZW0gaGFzIGJlZW4gY3JlYXRlZCBieSBhIENvbWJpbmUgUlRBIGNoYW5nZXMgaW4gdGhlIHRhYmxlIHRvb2xiYXIuXG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBhY3Rpb24gdG8gY2hlY2tcblx0ICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgYWN0aW9uIGl0ZW0gaGFzIGJlZW4gY3JlYXRlZCBieSBhIENvbWJpbmUgUlRBIGNoYW5nZXMgaW4gdGhlIHRhYmxlIHRvb2xiYXJcblx0ICovXG5cdF9pc0FjdGlvbkNvbWJpbmVkKGFjdGlvbkl0ZW06IEJ1dHRvbik6IGJvb2xlYW4ge1xuXHRcdGlmIChhY3Rpb25JdGVtLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpID09PSBcInNhcC5tLk1lbnVCdXR0b25cIikge1xuXHRcdFx0Ly8gV2UgZG9uJ3QgaGF2ZSBjdXN0b20gZGF0YSBhdHRyaWJ1dGUgb24gdGhlIE1lbnVCdXR0b24gY3JlYXRlZCBieSBSVEEgY29tYmluZSBjaGFuZ2Vcblx0XHRcdGNvbnN0IGRlcGVuZGVudHMgPSBhY3Rpb25JdGVtLmdldERlcGVuZGVudHMoKTtcblx0XHRcdC8vIGZpbmQgYWxsIHRoZSBkZXBlbmRlbnRzIHdoaWNoIGFyZSBhIEZsZXggTWFuYWdlZE9iamVjdE1vZGVsXG5cdFx0XHRjb25zdCBmbGV4TWFuYWdlZE9iamVjdE1vZGVscyA9IGRlcGVuZGVudHMuZmlsdGVyKChkZXBlbmRlbnQpID0+IGRlcGVuZGVudCBpbnN0YW5jZW9mIE1hbmFnZWRPYmplY3RNb2RlbCk7XG5cdFx0XHQvLyBjaGVjayBpZiB0aGUgbmFtZSBvZiBvbmUgb2YgdGhlbSBpbmNsdWRlcyBcIiRzYXAubS5mbGV4aWJpbGl0eS5NZW51QnV0dG9uTW9kZWxcIlxuXHRcdFx0cmV0dXJuIGZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzLnNvbWUoKG1vZGVsKSA9PlxuXHRcdFx0XHQobW9kZWwgYXMgdW5rbm93biBhcyBNYW5hZ2VkT2JqZWN0TW9kZWwpLmdldE5hbWUoKS5pbmNsdWRlcyhcIiRzYXAubS5mbGV4aWJpbGl0eS5NZW51QnV0dG9uTW9kZWxcIilcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb21iaW5lIHRoZSBhY3Rpb25zIGluIHRoZSBjb250ZXh0IG1lbnUgdG8gYWxpZ24gd2l0aCB0aGUgdGFibGUgYWN0aW9uIHRvb2xiYXIuXG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBhY3Rpb24gaXRlbSB0byBzcGxpdFxuXHQgKiBAcGFyYW0gY29udGV4dE1lbnUgVGhlIGNvbnRleHQgbWVudVxuXHQgKiBAcGFyYW0gdGFibGUgVGhlIE1EQ1RhYmxlXG5cdCAqL1xuXHRfY29tYmluZUFjdGlvbkluQ29udGV4dE1lbnUoYWN0aW9uSXRlbTogTWVudUJ1dHRvbiwgY29udGV4dE1lbnU6IE1lbnUsIHRhYmxlOiBNRENUYWJsZSk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRleHRNZW51SXRlbXMgPSBjb250ZXh0TWVudS5nZXRJdGVtcygpO1xuXHRcdC8vIENyZWF0ZSBhIG5ldyBtZW51IGJ1dHRvbiBpbiB0aGUgY29udGV4dCBtZW51IGlmIGl0IGRvZXMgbm90IGV4aXN0XG5cdFx0Y29uc3QgbWVudUJ1dHRvbiA9IHRoaXMuX2ZpbmRPckNyZWF0ZU1lbnVCdXR0b25JbkNvbnRleHRNZW51KGFjdGlvbkl0ZW0sIHRhYmxlKTtcblx0XHRjb25zdCBhY3Rpb25JdGVtcyA9IGFjdGlvbkl0ZW0uZ2V0TWVudSgpLmdldEl0ZW1zKCk7XG5cdFx0Zm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9uSXRlbXMpIHtcblx0XHRcdGNvbnN0IHRvb2xCYXJBY3Rpb24gPSBhY3Rpb247XG5cdFx0XHQvLyBub3cgZmluZCB0aGUgYWN0aW9uIGluIHRoZSBjb250ZXh0IG1lbnUgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBjb250ZXh0IG1lbnVcblx0XHRcdGZvciAoY29uc3QgbWVudUl0ZW0gb2YgY29udGV4dE1lbnVJdGVtcykge1xuXHRcdFx0XHRjb25zdCBhY3Rpb25JZEluQ29udGV4dE1lbnUgPSBtZW51SXRlbS5kYXRhKFwiYWN0aW9uSWRcIik7XG5cdFx0XHRcdGNvbnN0IGFjdGlvbklkSW5Ub29sYmFyID0gdG9vbEJhckFjdGlvbi5kYXRhKFwiYWN0aW9uSWRcIik7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRhY3Rpb25JZEluQ29udGV4dE1lbnUgPT09IGFjdGlvbklkSW5Ub29sYmFyICsgXCI6OkNvbnRleHRNZW51XCIgfHxcblx0XHRcdFx0XHRhY3Rpb25JZEluQ29udGV4dE1lbnUgPT09IGFjdGlvbklkSW5Ub29sYmFyLnJlcGxhY2UoXCI6OkFjdGlvbk1lbnVcIiwgXCI6OkNvbnRleHRNZW51XCIpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdG1lbnVJdGVtLnNldFRleHQodG9vbEJhckFjdGlvbi5nZXRUZXh0KCkpO1xuXHRcdFx0XHRcdC8vIEFkZCB0aGUgYWN0aW9uIHRvIHRoZSBtZW51IGJ1dHRvblxuXHRcdFx0XHRcdGNvbnRleHRNZW51LnJlbW92ZUl0ZW0obWVudUl0ZW0pO1xuXHRcdFx0XHRcdG1lbnVCdXR0b24uYWRkSXRlbShtZW51SXRlbSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gSWYgd2UgZmluZCBhbm90aGVyIG1lbnUgaW4gdGhlIGNvbnRleHQgbWVudSB3ZSBjaGVjayBpZiB0aGUgYWN0aW9uIGlzIGluIHRoZSBzdWIgbWVudVxuXHRcdFx0XHRpZiAobWVudUl0ZW0uZ2V0SXRlbXMoKS5sZW5ndGggPiAwICYmICFtZW51SXRlbS5nZXRJZCgpLmluY2x1ZGVzKGFjdGlvbkl0ZW0uZ2V0SWQoKSkpIHtcblx0XHRcdFx0XHRjb25zdCBhY3Rpb25JblN1Yk1lbnUgPSB0aGlzLl9maW5kQWN0aW9uSW5TdWJNZW51KG1lbnVJdGVtLmdldEl0ZW1zKCksIHRvb2xCYXJBY3Rpb24pO1xuXHRcdFx0XHRcdGlmIChhY3Rpb25JblN1Yk1lbnUpIHtcblx0XHRcdFx0XHRcdGFjdGlvbkluU3ViTWVudS5zZXRUZXh0KHRvb2xCYXJBY3Rpb24uZ2V0VGV4dCgpKTtcblx0XHRcdFx0XHRcdG1lbnVCdXR0b24uYWRkSXRlbShhY3Rpb25JblN1Yk1lbnUpO1xuXHRcdFx0XHRcdFx0aWYgKG1lbnVJdGVtLmdldEl0ZW1zKCkubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdG1lbnVJdGVtLmRlc3Ryb3koKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRmluZHMgdGhlIGFjdGlvbiBpbiBhbiBhY3Rpb24gbWVudSBpbiB0aGUgY29udGV4dCBtZW51LCBpdCByZXR1cm4gdGhlIGFjdGlvbiBpZiBmb3VuZCBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBtZW51LlxuXHQgKiBAcGFyYW0gc3ViTWVudSBUaGUgYXJyYXkgb2YgYWN0aW9ucyBpbiB0aGUgbWVudVxuXHQgKiBAcGFyYW0gYWN0aW9uSXRlbSBUaGUgYWN0aW9uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG5cdCAqIEByZXR1cm5zIFRoZSBhY3Rpb24gaWYgZm91bmQsIG90aGVyd2lzZSB1bmRlZmluZWRcblx0ICovXG5cdF9maW5kQWN0aW9uSW5TdWJNZW51KHN1Yk1lbnU6IE1lbnVJdGVtW10sIGFjdGlvbkl0ZW06IE1lbnVJdGVtKTogTWVudUl0ZW0gfCB1bmRlZmluZWQge1xuXHRcdGZvciAoY29uc3QgbWVudUl0ZW0gb2Ygc3ViTWVudSkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRtZW51SXRlbS5kYXRhKFwiYWN0aW9uSWRcIikgPT09IGFjdGlvbkl0ZW0uZGF0YShcImFjdGlvbklkXCIpLnJlcGxhY2UoXCI6OkFjdGlvbk1lbnVcIiwgXCI6OkNvbnRleHRNZW51XCIpIHx8XG5cdFx0XHRcdG1lbnVJdGVtLmRhdGEoXCJhY3Rpb25JZFwiKSA9PT0gYWN0aW9uSXRlbS5kYXRhKFwiYWN0aW9uSWRcIikgKyBcIjo6Q29udGV4dE1lbnVcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdGNvbnN0IGFjdGlvbiA9IG1lbnVJdGVtO1xuXHRcdFx0XHRzdWJNZW51LnNwbGljZShzdWJNZW51LmluZGV4T2YobWVudUl0ZW0pLCAxKTtcblx0XHRcdFx0cmV0dXJuIGFjdGlvbjtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjaydzIGlmIGEgcGFydGljdWxhciBtZW51IGJ1dHRvbiBleGlzdHMgaW4gdGhlIGNvbnRleHQgbWVudSwgaWYgbm90IGNyZWF0ZXMgYSBuZXcgbWVudSBidXR0b24gYW5kIGFkZHMgaXQgdG8gdGhlIGNvbnRleHQgbWVudS5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIG1lbnUgYnV0dG9uIHRvIGZpbmQgb3IgY3JlYXRlXG5cdCAqIEBwYXJhbSB0YWJsZSBUaGUgTURDVGFibGVcblx0ICogQHJldHVybnMgVGhlIE1lbnVJdGVtIGlmIGZvdW5kLCBvdGhlcndpc2UgYSBuZXcgTWVudUl0ZW1cblx0ICovXG5cdF9maW5kT3JDcmVhdGVNZW51QnV0dG9uSW5Db250ZXh0TWVudShhY3Rpb25JdGVtOiBNZW51QnV0dG9uLCB0YWJsZTogTURDVGFibGUpOiBNZW51SXRlbSB7XG5cdFx0Y29uc3QgY29udGV4dE1lbnUgPSB0YWJsZS5nZXRDb250ZXh0TWVudSgpIGFzIE1lbnU7XG5cdFx0Y29uc3QgY29udGV4dE1lbnVJdGVtcyA9IGNvbnRleHRNZW51LmdldEl0ZW1zKCk7XG5cdFx0Ly9sb29wIG92ZXIgY29udGV4dE1lbnVJdGVtcyBhbmQgY2hlY2sgaWYgdGhlIHJlcXVpcmVkIG1lbnUgYnV0dG9uIGFscmVhZHkgZXhpc3RzXG5cdFx0Zm9yIChjb25zdCBtZW51SXRlbSBvZiBjb250ZXh0TWVudUl0ZW1zKSB7XG5cdFx0XHRpZiAobWVudUl0ZW0uZ2V0SWQoKS5pbmNsdWRlcyhhY3Rpb25JdGVtLmdldElkKCkpKSB7XG5cdFx0XHRcdHJldHVybiBtZW51SXRlbTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gaWYgdGhlIHJlcXVpcmVkIG1lbnUgYnV0dG9uIGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgYSBuZXcgbWVudSBidXR0b24gYW5kIGFkZCBpdCB0byB0aGUgY29udGV4dE1lbnVcblx0XHRjb25zdCBuZXdNZW51QnV0dG9uID0gbmV3IE1lbnVJdGVtKHtcblx0XHRcdGlkOiBnZW5lcmF0ZShbdGFibGUuZ2V0SWQoKSwgYWN0aW9uSXRlbS5nZXRJZCgpLCBcIjo6Q29udGV4dE1lbnVcIl0pLFxuXHRcdFx0dGV4dDogYWN0aW9uSXRlbS5nZXRUZXh0KClcblx0XHR9KTtcblx0XHRjb250ZXh0TWVudS5hZGRJdGVtKG5ld01lbnVCdXR0b24pO1xuXHRcdHJldHVybiBuZXdNZW51QnV0dG9uO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNwbGl0IHRoZSBhY3Rpb24gaXRlbXMgaW4gdGhlIGNvbnRleHQgbWVudS5cblx0ICogQHBhcmFtIGFjdGlvbkl0ZW0gVGhlIGFjdGlvbiBpdGVtIHRvIHNwbGl0XG5cdCAqIEBwYXJhbSBjb250ZXh0TWVudSBUaGUgY29udGV4dCBtZW51XG5cdCAqL1xuXHRfc3BsaXRBY3Rpb25zSW5Db250ZXh0TWVudShhY3Rpb25JdGVtOiBCdXR0b24sIGNvbnRleHRNZW51OiBNZW51KTogdm9pZCB7XG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gY29udGV4dE1lbnUuZ2V0SXRlbXMoKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVJdGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Ly9jaGVjayBpZiB0aGUgbWVudSBpdGVtIGlzIGEgTWVudVxuXHRcdFx0aWYgKG1lbnVJdGVtc1tpXS5nZXRJdGVtcygpLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG1lbnVJdGVtc1tpXVxuXHRcdFx0XHRcdFx0LmdldEl0ZW1zKClcblx0XHRcdFx0XHRcdC5zb21lKChpdGVtKSA9PiBpdGVtLmRhdGEoXCJhY3Rpb25JZFwiKSA9PT0gYWN0aW9uSXRlbS5kYXRhKFwiYWN0aW9uSWRcIikucmVwbGFjZShcIjo6QWN0aW9uTWVudVwiLCBcIjo6Q29udGV4dE1lbnVcIikpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbnN0IG1lbnVJdGVtID0gbWVudUl0ZW1zW2ldO1xuXHRcdFx0XHRcdGNvbnN0IHN1Ykl0ZW1zID0gbWVudUl0ZW0uZ2V0SXRlbXMoKTtcblx0XHRcdFx0XHQvLyBSZW1vdmUgdGhlIG1lbnVJdGVtIGZyb20gdGhlIGNvbnRleHQgbWVudVxuXHRcdFx0XHRcdGNvbnRleHRNZW51LnJlbW92ZUl0ZW0obWVudUl0ZW0pO1xuXHRcdFx0XHRcdC8vIEluc2VydCB0aGVzZSBzdWItaXRlbXMgaW50byB0aGUgY29udGV4dE1lbnUgc3RhcnRpbmcgZnJvbSB0aGUgb3JpZ2luYWwgaW5kZXhcblx0XHRcdFx0XHRzdWJJdGVtcy5mb3JFYWNoKChzdWJJdGVtLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29udGV4dE1lbnUuaW5zZXJ0SXRlbShzdWJJdGVtLCBpICsgaW5kZXgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGNvcnJlc3BvbmRpbmcgY29udGV4dCBtZW51IGFjdGlvbiBmb3IgdGhlIHRhYmxlIGFjdGlvbi5cblx0ICogQHBhcmFtIHRhYmxlQWN0aW9uIFRoZSBhY3Rpb24gaXRlbSB0byBzcGxpdFxuXHQgKiBAcGFyYW0gY29udGV4dE1lbnUgVGhlIGNvbnRleHQgbWVudVxuXHQgKiBAcmV0dXJucyAgTWVudUl0ZW18bnVsbCB0aGUgY29ycmVzcG9uZGluZyBjb250ZXh0IG1lbnUgYWN0aW9uIG9yIG51bGwgaWYgbm90IGZvdW5kXG5cdCAqL1xuXHRfZ2V0Q29ycmVzcG9uZGluZ0NvbnRleHRNZW51QWN0aW9uKHRhYmxlQWN0aW9uOiBCdXR0b24sIGNvbnRleHRNZW51OiBNZW51KTogTWVudUl0ZW0gfCBudWxsIHtcblx0XHRjb25zdCBtZW51SXRlbXMgPSBjb250ZXh0TWVudS5nZXRJdGVtcygpO1xuXHRcdGZvciAoY29uc3QgaXRlbSBvZiBtZW51SXRlbXMpIHtcblx0XHRcdC8vIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRleHQgbWVudSBhY3Rpb24gaXMgZWl0aGVyIGFuIGl0ZW0gd2l0aCBhbiBhZGRpdGlvbmFsIFwiOjpDb250ZXh0TWVudVwiIHRleHQgYXQgdGhlIGVuZCBvZiB0aGUgaWRcblx0XHRcdC8vIG9yIGl0IGlzIGEgc3BsaXR0ZWQgbWVudSBpdGVtIHdoZXJlIHRoZSBcIjo6Q29udGV4dE1lbnVcIiBwYXJ0IGlzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGlkXG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRhYmxlQWN0aW9uLmdldElkKCkgKyBcIjo6Q29udGV4dE1lbnVcIiA9PT0gaXRlbS5nZXRJZCgpIHx8XG5cdFx0XHRcdGl0ZW0uZGF0YShcImFjdGlvbklkXCIpID09PSB0YWJsZUFjdGlvbi5kYXRhKFwiYWN0aW9uSWRcIik/LnJlcGxhY2UoXCI6OkFjdGlvbk1lbnVcIiwgXCI6OkNvbnRleHRNZW51XCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9XG5cdFx0XHQvLyBmb3IgY29tYmluZWQgYWN0aW9ucywgdGhlIGNvbnRleHQgbWVudSBhY3Rpb24gaXMgdGhlIG9uZSB3aXRoIHRoZSBzYW1lIHRleHRcblx0XHRcdGlmIChpdGVtLmdldElkKCkuaW5jbHVkZXModGFibGVBY3Rpb24uZ2V0SWQoKSkpIHtcblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkanVzdCB0aGUgdGV4dCBhbmQgdmlzaWJpbGl0eSBvZiB0aGUgYWN0aW9uIGl0ZW1zIGluIHRoZSBjb250ZXh0IG1lbnUuXG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBhY3Rpb24gaXRlbSB0byBzcGxpdFxuXHQgKiBAcGFyYW0gY29udGV4dE1lbnVJdGVtIFRoZSBjb250ZXh0IG1lbnVcblx0ICogQHBhcmFtIHRhYmxlQWN0aW9uIFRoZSBhcnJheSBvZiB0YWJsZSBhY3Rpb25zXG5cdCAqL1xuXHRfYWxpZ25UZXh0QW5kVmlzaWJsaXR5SW5Db250ZXh0TWVudShhY3Rpb25JdGVtOiBCdXR0b24sIGNvbnRleHRNZW51SXRlbTogTWVudUl0ZW0sIHRhYmxlQWN0aW9uOiBBY3Rpb25Ub29sYmFyQWN0aW9uKTogdm9pZCB7XG5cdFx0Ly8gY2hhbmdlIHRoZSB0ZXh0IG9mIHRoZSBtZW51IGl0ZW0gYXMgdGhlIHRleHQgb2YgYWN0aW9uIGl0ZW1cblx0XHRjb250ZXh0TWVudUl0ZW0uc2V0VGV4dChhY3Rpb25JdGVtLmdldFRleHQoKSk7XG5cdFx0Ly8gY2hhbmdlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjb250ZXh0TWVudSBhY3Rpb24gYXMgdGhlIHZpc2liaWxpdHkgb2YgdGFibGUgYWN0aW9uXG5cdFx0Y29uc3QgdGFibGVBY3Rpb25WaXNpYmlsaXR5ID0gYWN0aW9uSXRlbS5nZXRWaXNpYmxlKCkgJiYgdGFibGVBY3Rpb24uZ2V0VmlzaWJsZSgpO1xuXHRcdGlmICh0YWJsZUFjdGlvblZpc2liaWxpdHkgIT09IGNvbnRleHRNZW51SXRlbS5nZXRWaXNpYmxlKCkpIHtcblx0XHRcdGNvbnRleHRNZW51SXRlbS5zZXRWaXNpYmxlKHRhYmxlQWN0aW9uVmlzaWJpbGl0eSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIGFuIGFjdGlvbiBoYXMgYmVlbiBzcGxpdCBieSBSVEEuXG5cdCAqIEBwYXJhbSBhY3Rpb25JdGVtIFRoZSBvcmlnaW5hbCBhY3Rpb24gaXRlbVxuXHQgKiBAcmV0dXJucyBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIGFjdGlvbiBoYXMgYmVlbiBzcGxpdFxuXHQgKi9cblx0X2lzQWN0aW9uU3BsaXQoYWN0aW9uSXRlbTogQnV0dG9uKTogYm9vbGVhbiB7XG5cdFx0aWYgKGFjdGlvbkl0ZW0uZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkgPT09IFwic2FwLm0uTWVudUJ1dHRvblwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IGRlcGVuZGVudHMgPSBhY3Rpb25JdGVtLmdldERlcGVuZGVudHMoKTtcblx0XHQvLyBmaW5kIGFsbCB0aGUgZGVwZW5kZW50cyB3aGljaCBhcmUgYSBGbGV4IE1hbmFnZWRPYmplY3RNb2RlbFxuXHRcdGNvbnN0IGZsZXhNYW5hZ2VkT2JqZWN0TW9kZWxzID0gZGVwZW5kZW50cy5maWx0ZXIoKGRlcGVuZGVudCkgPT4gZGVwZW5kZW50IGluc3RhbmNlb2YgTWFuYWdlZE9iamVjdE1vZGVsKTtcblx0XHQvLyBjaGVjayBpZiBvbmUgb2YgdGhlbSBoYXMgdGhlIG5hbWUgXCIkc2FwLm0uZmxleGliaWxpdHkuU3BsaXRCdXR0b25zTW9kZWxcIlxuXHRcdHJldHVybiBmbGV4TWFuYWdlZE9iamVjdE1vZGVscy5zb21lKFxuXHRcdFx0KG1vZGVsKSA9PiAobW9kZWwgYXMgdW5rbm93biBhcyBNYW5hZ2VkT2JqZWN0TW9kZWwpLmdldE5hbWUoKSA9PT0gXCIkc2FwLm0uZmxleGliaWxpdHkuU3BsaXRCdXR0b25zTW9kZWxcIlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyBhIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBhIGNvbnRleHQgbWVudSBpdGVtIGhhcyBiZWVuIHByZXNzZWQuXG5cdCAqIEBwYXJhbSBhY3RpdmVcblx0ICovXG5cdHNldENvbnRleHRNZW51QWN0aXZlKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuY29udGV4dE1lbnVBY3RpdmUgPSBhY3RpdmU7XG5cdH1cblxuXHRpc0NvbnRleHRNZW51QWN0aXZlKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmNvbnRleHRNZW51QWN0aXZlO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1ha2UgdGhlIG1lbnUgaXRlbSBvZiBTQVAgQ29sbGFib3JhdGlvbiBNYW5hZ2VyIHZpc2libGUgaWYgaXQgaXMgc3VwcG9ydGVkLlxuXHQgKiBAcGFyYW0gdGFibGVcblx0ICogQHBhcmFtIGNvbnRleHRzXG5cdCAqL1xuXHRzZXRDb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtVmlzaWJpbGl0eSh0YWJsZTogTURDVGFibGUsIGNvbnRleHRzOiBDb250ZXh0W10pOiB2b2lkIHtcblx0XHQvLyBnZXQgY29sbGFib3JhdGlvbiBtZW51IGl0ZW0gZnJvbSBjb250ZXh0IG1lbnVcblx0XHRjb25zdCBjb250ZXh0TWVudSA9IHRhYmxlLmdldENvbnRleHRNZW51KCkgYXMgTWVudTtcblx0XHRjb25zdCBtZW51SXRlbXMgPSBjb250ZXh0TWVudS5nZXRJdGVtcygpO1xuXHRcdGNvbnN0IGNvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW0gPSBtZW51SXRlbXM/LmZpbmQoKG1lbnVJdGVtKSA9PiBtZW51SXRlbS5nZXRJZCgpLmluY2x1ZGVzKFwiQ29udGV4dE1lbnU6OkNvbGxhYm9yYXRpb25NYW5hZ2VyXCIpKTtcblx0XHRpZiAoY29sbGFib3JhdGlvbk1hbmFnZXJNZW51SXRlbSkge1xuXHRcdFx0Ly8gZ2V0IGNvbGxhYm9yYXRpb24gb3B0aW9uIGZyb20gY29sbGFib3JhdGl2ZSB0b29scyBzZXJ2aWNlXG5cdFx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGFibGUpO1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSA9IGFwcENvbXBvbmVudD8uZ2V0Q29sbGFib3JhdGl2ZVRvb2xzU2VydmljZSgpO1xuXHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbk9wdGlvbiA9IGNvbGxhYm9yYXRpdmVUb29sc1NlcnZpY2U/LmNvbGxhYm9yYXRpb25TZXJ2aWNlLmNtSGVscGVyU2VydmljZT8uZ2V0T3B0aW9ucygpO1xuXHRcdFx0Ly8gZ2V0IG5hdmlnYXRpb24gaW5mbyBmcm9tIHRhYmxlIGRlZmluaXRpb25cblx0XHRcdGNvbnN0IHRhYmxlRGVmaW5pdGlvbiA9ICh0YWJsZT8uZ2V0UGFyZW50KCkgYXMgSVRhYmxlQmxvY2spPy5nZXRUYWJsZURlZmluaXRpb24oKTtcblx0XHRcdGNvbnN0IG5hdmlnYXRpb25UeXBlID0gdGFibGVEZWZpbml0aW9uPy5hbm5vdGF0aW9uPy5yb3c/Lm5hdmlnYXRpb25JbmZvPy50eXBlO1xuXHRcdFx0aWYgKGNvbGxhYm9yYXRpb25PcHRpb24gJiYgbmF2aWdhdGlvblR5cGUgPT09IFwiTmF2aWdhdGlvblwiICYmIGNvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gSXRlbXMgdG8gc2hhcmUgbmVlZHMgdG8gaGF2ZSBhbiBhY3RpdmUgZW50aXR5LCBpZiBpdCdzIG5vdCBDb2xsYWJvcmF0aXZlIERyYWZ0IG9yIGEgbm9uIGRyYWZ0IHByb2dyYW1taW5nIG1vZGVsXG5cdFx0XHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRhYmxlKTtcblx0XHRcdFx0Y29uc3QgY29sbGFib3JhdGl2ZURyYWZ0ID0gdmlldy5nZXRDb250cm9sbGVyKCkuY29sbGFib3JhdGl2ZURyYWZ0O1xuXHRcdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBjb250ZXh0c1swXS5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0Y29uc3QgaXNEcmFmdCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQobWV0YU1vZGVsLCBjb250ZXh0c1swXS5nZXRQYXRoKCkpO1xuXHRcdFx0XHQvLyBJZiB3ZSBhcmUgaW4gQ29sbGFib3JhdGl2ZSBEcmFmdCBvciBpbiBhbiBub24tZHJhZnQgYXBwLCB3ZSBzZXQgdmlzaWJsZSB0byB0cnVlLlxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugd2Ugb25seSBzZXQgdmlzaWJsZSB0byB0cnVlLCBpZiBhdCBsZWFzdCBvbmUgb2YgdGhlIHNlbGVjdGVkIGNvbnRleHRzIGlzIG9yIGhhcyBhbiBhY3RpdmUgdmVyc2lvbi5cblx0XHRcdFx0Y29uc3QgdmlzaWJsZSA9XG5cdFx0XHRcdFx0Y29sbGFib3JhdGl2ZURyYWZ0LmlzQ29sbGFib3JhdGlvbkVuYWJsZWQoKSB8fCAhaXNEcmFmdFxuXHRcdFx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdFx0XHQ6IGNvbnRleHRzLnNvbWUoKGNvbnRleHQpID0+IGNvbnRleHQuZ2V0T2JqZWN0KCkuSXNBY3RpdmVFbnRpdHkgfHwgY29udGV4dC5nZXRPYmplY3QoKS5IYXNBY3RpdmVFbnRpdHkpO1xuXHRcdFx0XHRjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtLnNldFZpc2libGUodmlzaWJsZSk7XG5cdFx0XHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZShjb2xsYWJvcmF0aW9uTWFuYWdlck1lbnVJdGVtLCBcInByZXNzXCIsIFwiQ006U2hhcmVMaW5rXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29sbGFib3JhdGlvbk1hbmFnZXJNZW51SXRlbS5zZXRWaXNpYmxlKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciB3aGVuIGFuIGl0ZW0gaW4gdGhlIGNvbnRleHQgbWVudSBpcyBwcmVzc2VkLlxuXHQgKiBAcGFyYW0gb0V2ZW50XG5cdCAqL1xuXHRfb25Db250ZXh0TWVudVByZXNzKHRoaXM6IElUYWJsZUJsb2NrICYgQ29udGV4dE1lbnVIYW5kbGVyLCBvRXZlbnQ6IFRhYmxlJEJlZm9yZU9wZW5Db250ZXh0TWVudUV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgdGFibGUgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHR0YWJsZUNvbnRleHRzID0gdGFibGUuZ2V0U2VsZWN0ZWRDb250ZXh0cygpIGFzIENvbnRleHRbXSwgLy8gc2VsZWN0ZWQgaXRlbXMgaW4gdGhlIHRhYmxlXG5cdFx0XHRjb250ZXh0TWVudUNvbnRleHQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiYmluZGluZ0NvbnRleHRcIikgYXMgQ29udGV4dCwgLy8gcm93IGNsaWNrZWQgZm9yIGNvbnRleHQgbWVudVxuXHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cblx0XHRjb25zdCBjb250ZXh0TWVudVNlbGVjdGlvbiA9IHRoaXMuZ2V0UmVsZXZhbnRTZWxlY3Rpb24odGFibGVDb250ZXh0cywgY29udGV4dE1lbnVDb250ZXh0KTtcblxuXHRcdC8vIENoZWNrIGlmIGFsbCBjb250ZXh0cyBpbiBjb250ZXh0TWVudVNlbGVjdGlvbiBhcmUgaW5hY3RpdmVcblx0XHQvLyBpZiBzbywgc2V0IHRoZSBpbmFjdGl2ZUNvbnRleHQgcHJvcGVydHkgaW4gdGhlIGludGVybmFsIG1vZGVsIHRvIHRydWVcblx0XHQvLyBpZiBqdXN0IG9uZSBjb250ZXh0IGlzIG5vdCBpbmFjdGl2ZSwgc2V0IHRoZSBpbmFjdGl2ZUNvbnRleHQgcHJvcGVydHkgdG8gZmFsc2Vcblx0XHRsZXQgb25lQ29udGV4dElzQWN0aXZlID0gdHJ1ZTtcblx0XHRvbmVDb250ZXh0SXNBY3RpdmUgPSBjb250ZXh0TWVudVNlbGVjdGlvbi5zb21lKChjb250ZXh0KSA9PiAhY29udGV4dC5pc0luYWN0aXZlKCkpO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L2luYWN0aXZlQ29udGV4dFwiLCAhb25lQ29udGV4dElzQWN0aXZlKTtcblxuXHRcdC8vIERvIG5vdCBjb25zaWRlciBlbXB0eSByb3dzIGFzIHNlbGVjdGVkIGNvbnRleHQsIGZvciBvdGhlciBhY3Rpb25zIHRoYW4gZGVsZXRlXG5cdFx0Y29uc3QgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cyA9IGNvbnRleHRNZW51U2VsZWN0aW9uLmZpbHRlcihmdW5jdGlvbiAob0NvbnRleHQ6IENvbnRleHQpIHtcblx0XHRcdHJldHVybiAhb0NvbnRleHQuaXNJbmFjdGl2ZSgpO1xuXHRcdH0pO1xuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L3NlbGVjdGVkQ29udGV4dHNJbmNsdWRpbmdJbmFjdGl2ZVwiLCBjb250ZXh0TWVudVNlbGVjdGlvbik7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvc2VsZWN0ZWRDb250ZXh0c1wiLCBhY3RpdmVTZWxlY3RlZENvbnRleHRzKTtcblx0XHQvL3Jlc2V0IG51bWJlciBvZiBzZWxlY3RlZCBjb250ZXh0cyB0byBlbnN1cmUgY2FsbGJhY2sgZm9yIGN1c3RvbSBlbmFibGUgaGFuZGxlclxuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRleHRtZW51L251bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiLCAtMSk7XG5cdFx0aW50ZXJuYWxNb2RlbENvbnRleHQ/LnNldFByb3BlcnR5KFwiY29udGV4dG1lbnUvbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIGFjdGl2ZVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9udW1iZXJPZlNlbGVjdGVkQ29udGV4dHNGb3JEZWxldGVcIiwgY29udGV4dE1lbnVTZWxlY3Rpb24ubGVuZ3RoKTtcblxuXHRcdGlmIChhY3RpdmVTZWxlY3RlZENvbnRleHRzLmxlbmd0aCA+IDApIHtcblx0XHRcdC8qIEFsaWduIGNvbnRleHQgbWVudSB3aXRoIFJUQSBjaGFuZ2VzIGluIHRhYmxlIHRvb2xiYXIgKi9cblx0XHRcdHRoaXMuYWxpZ25Db250ZXh0TWVudVdpdGhUYWJsZVRvb2xiYXJDaGFuZ2VzKHRhYmxlKTtcblx0XHR9XG5cblx0XHQvLyBTZXQgdGhlIHZpc2liaWxpdHkgb2YgdGhlIE1lbnVJdGVtIGZvciBDb2xsYWJvcmF0aW9uIE1hbmFnZXJcblx0XHR0aGlzLnNldENvbGxhYm9yYXRpb25NYW5hZ2VyTWVudUl0ZW1WaXNpYmlsaXR5KHRhYmxlLCBhY3RpdmVTZWxlY3RlZENvbnRleHRzKTtcblxuXHRcdC8vIENoZWNrIGlmIHRoZSBjb250ZXh0IG1lbnUgY29udGFpbnMgb25seSBub3QgdmlzaWJsZSBpdGVtc1xuXHRcdC8vIGluIHRoYXQgY2FzZSBwcmV2ZW50IHRoZSBjb250ZXh0IG1lbnUgZnJvbSBvcGVuaW5nXG5cdFx0Y29uc3QgY29udGV4dE1lbnUgPSB0YWJsZS5nZXRDb250ZXh0TWVudSgpIGFzIE1lbnU7XG5cdFx0Y29uc3QgbWVudUl0ZW1zID0gY29udGV4dE1lbnUuZ2V0SXRlbXMoKTtcblxuXHRcdGNvbnN0IHZpc2libGVNZW51SXRlbXMgPSBtZW51SXRlbXMuZmlsdGVyKChtZW51SXRlbSkgPT4gbWVudUl0ZW0uZ2V0VmlzaWJsZSgpKTtcblx0XHRpZiAodmlzaWJsZU1lbnVJdGVtcy5sZW5ndGggPT09IDApIHtcblx0XHRcdG9FdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblxuXHRcdC8vIEVuYWJsZW1lbnQgb2YgdGhlIEV4cGFuZC9Db2xsYXBzZSBidXR0b25zXG5cdFx0Y29uc3QgaXNFeHBhbmRhYmxlID0gY29udGV4dE1lbnVTZWxlY3Rpb24uc29tZSgoc2luZ2xlQ29udGV4dCkgPT4gc2luZ2xlQ29udGV4dC5pc0V4cGFuZGVkKCkgIT09IHVuZGVmaW5lZCk7XG5cdFx0Y29uc3QgaXNDb2xsYXBzYWJsZSA9IGNvbnRleHRNZW51U2VsZWN0aW9uLnNvbWUoKHNpbmdsZUNvbnRleHQpID0+IHNpbmdsZUNvbnRleHQuaXNFeHBhbmRlZCgpKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9pc0V4cGFuZGFibGVcIiwgaXNFeHBhbmRhYmxlKTtcblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS9pc0NvbGxhcHNhYmxlXCIsIGlzQ29sbGFwc2FibGUpO1xuXG5cdFx0Ly8gQWN0aW9uIGVuYWJsZW1lbnQgZm9yIERlbGV0ZVxuXHRcdGludGVybmFsTW9kZWxDb250ZXh0Py5zZXRQcm9wZXJ0eShcImNvbnRyb2xJZFwiLCB0YWJsZS5nZXRJZCgpKTtcblx0XHRkZWxldGVIZWxwZXIudXBkYXRlRGVsZXRlSW5mb0ZvclNlbGVjdGVkQ29udGV4dHMoaW50ZXJuYWxNb2RlbENvbnRleHQsIGNvbnRleHRNZW51U2VsZWN0aW9uLCB0cnVlKTtcblxuXHRcdC8vIEFjdGlvbiBlbmFibGVtZW50IGZvciBJQk5cblx0XHRpZiAoIXRhYmxlLmRhdGEoXCJlbmFibGVBbmFseXRpY3NcIikpIHtcblx0XHRcdGNvbnN0IG5hdmlnYXRpb25BdmFpbGFibGVNYXAgPSB0YWJsZT8uZGF0YShcIm5hdmlnYXRpb25BdmFpbGFibGVNYXBcIik7XG5cdFx0XHRUYWJsZVJ1bnRpbWUuc2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uRW5hYmxlbWVudChpbnRlcm5hbE1vZGVsQ29udGV4dCwgbmF2aWdhdGlvbkF2YWlsYWJsZU1hcCwgYWN0aXZlU2VsZWN0ZWRDb250ZXh0cywgdHJ1ZSk7XG5cdFx0fVxuXG5cdFx0Ly8gQWN0aW9uIGVuYWJsZW1lbnQgZm9yIE1hc3MgRWRpdFxuXHRcdGNvbnN0IHVwZGF0YWJsZVByb3BlcnR5UGF0aCA9IHRhYmxlPy5kYXRhKFwidXBkYXRhYmxlUHJvcGVydHlQYXRoXCIpO1xuXHRcdGNvbnN0IGRyYWZ0ID0gdGFibGU/LmRhdGEoXCJkcmFmdFwiKTtcblx0XHRjb25zdCByZWFkT25seURyYWZ0RW5hYmxlZCA9IHRhYmxlLmRhdGEoXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiKSA9PT0gXCJ0cnVlXCIgJiYgZHJhZnQgIT09IFwidW5kZWZpbmVkXCI7XG5cdFx0Y29uc3QgdXBkYXRhYmxlQ29udGV4dHM6IENvbnRleHRbXSA9IFtdO1xuXHRcdGZvciAoY29uc3Qgc2VsZWN0ZWRDb250ZXh0IG9mIGFjdGl2ZVNlbGVjdGVkQ29udGV4dHMpIHtcblx0XHRcdGlmIChUYWJsZVJ1bnRpbWUuaXNVcGRhdGFibGVDb250ZXh0KHVwZGF0YWJsZVByb3BlcnR5UGF0aCwgc2VsZWN0ZWRDb250ZXh0LCByZWFkT25seURyYWZ0RW5hYmxlZCkpIHtcblx0XHRcdFx0dXBkYXRhYmxlQ29udGV4dHMucHVzaChzZWxlY3RlZENvbnRleHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dD8uc2V0UHJvcGVydHkoXCJjb250ZXh0bWVudS91cGRhdGFibGVDb250ZXh0c1wiLCB1cGRhdGFibGVDb250ZXh0cyk7XG5cblx0XHRjb25zdCB0YWJsZURlZmluaXRpb24gPSB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbigpO1xuXHRcdGlmICh0YWJsZURlZmluaXRpb24uY29udHJvbC5jcmVhdGVFbmFibGVtZW50ICYmIGNvbnRleHRNZW51U2VsZWN0aW9uLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0VGFibGVSdW50aW1lLl91cGRhdGVDcmVhdGVFbmFibGVtZW50KFxuXHRcdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0dGFibGVEZWZpbml0aW9uLmNvbnRyb2wuY3JlYXRlRW5hYmxlbWVudCxcblx0XHRcdFx0dGFibGUsXG5cdFx0XHRcdGNvbnRleHRNZW51U2VsZWN0aW9uWzBdLFxuXHRcdFx0XHR0YWJsZURlZmluaXRpb24uY29udHJvbC5ub2RlVHlwZSxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRUYWJsZVJ1bnRpbWUudXBkYXRlQ3V0Q29weVBhc3RlRW5hYmxlbWVudChpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRPYmplY3QoKSwgdGFibGUsIHRydWUpO1xuXHRcdFRhYmxlUnVudGltZS51cGRhdGVNb3ZlVXBEb3duRW5hYmxlbWVudChpbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRPYmplY3QoKSwgdGFibGUsIHRydWUpO1xuXG5cdFx0Ly8gT3RoZXIgYWN0aW9uIGVuYWJsZW1lbnRcblx0XHRBY3Rpb25SdW50aW1lLnNldEFjdGlvbkVuYWJsZW1lbnQoXG5cdFx0XHRpbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdEpTT04ucGFyc2UodGFibGVEZWZpbml0aW9uLm9wZXJhdGlvbkF2YWlsYWJsZU1hcCksXG5cdFx0XHRhY3RpdmVTZWxlY3RlZENvbnRleHRzLFxuXHRcdFx0XCJ0YWJsZVwiLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblxuXHRnZXRSZWxldmFudFNlbGVjdGlvbih0YWJsZUNvbnRleHRzOiBDb250ZXh0W10sIGNvbnRleHRNZW51Q29udGV4dDogQ29udGV4dCk6IENvbnRleHRbXSB7XG5cdFx0bGV0IGNvbnRleHRNZW51U2VsZWN0aW9uOiBDb250ZXh0W107XG5cdFx0aWYgKHRhYmxlQ29udGV4dHMuaW5jbHVkZXMoY29udGV4dE1lbnVDb250ZXh0KSkge1xuXHRcdFx0Y29udGV4dE1lbnVTZWxlY3Rpb24gPSB0YWJsZUNvbnRleHRzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250ZXh0TWVudVNlbGVjdGlvbiA9IFtjb250ZXh0TWVudUNvbnRleHRdIGFzIENvbnRleHRbXTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRNZW51U2VsZWN0aW9uO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztNQW9CcUJBLGtCQUFrQjtJQUFBLFNBQUFBLG1CQUFBO01BQUEsS0FDNUJDLGlCQUFpQixHQUFHLEtBQUs7SUFBQTtJQUFBQyxRQUFBLEdBQUFGLGtCQUFBO0lBQUEsSUFBQUcsTUFBQSxHQUFBSCxrQkFBQSxDQUFBSSxTQUFBO0lBQUFELE1BQUEsQ0FFbkNFLFVBQVUsR0FBVixTQUFBQSxVQUFVQSxDQUFDQyxVQUFvQixFQUFRO01BQ3RDO0lBQUE7O0lBR0Q7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBSCxNQUFBLENBSUFJLHVDQUF1QyxHQUF2QyxTQUFBQSx1Q0FBdUNBLENBQUNDLEtBQWUsRUFBUTtNQUM5RCxNQUFNQyxXQUFXLEdBQUdELEtBQUssQ0FBQ0UsY0FBYyxDQUFDLENBQVM7TUFDbEQsTUFBTUMsc0JBQWtDLEdBQUcsRUFBRTtNQUM3QyxNQUFNQyxZQUFZLEdBQUdKLEtBQUssQ0FBQ0ssVUFBVSxDQUFDLENBQUM7TUFDdkNELFlBQVksRUFBRUUsT0FBTyxDQUFFQyxXQUFXLElBQUs7UUFDdEMsTUFBTUMsZUFBZSxHQUFHRCxXQUFXLENBQUNFLGNBQWMsQ0FBQyxRQUFRLENBQVc7UUFDdEU7UUFDQSxJQUFJLElBQUksQ0FBQ0MsY0FBYyxDQUFDRixlQUFlLENBQUMsRUFBRTtVQUN6QztVQUNBLElBQUksQ0FBQ0csMEJBQTBCLENBQUNILGVBQWUsRUFBRVAsV0FBVyxDQUFDO1FBQzlEO1FBQ0E7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
|