@sapui5/sap.fe.macros 1.138.0 → 1.139.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +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/Chart.js +1 -1
- package/src/sap/fe/macros/Chart.tsx +1 -1
- 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 +21 -4
- package/src/sap/fe/macros/Field.ts +21 -3
- package/src/sap/fe/macros/FooterContent.js +40 -10
- package/src/sap/fe/macros/FooterContent.tsx +44 -8
- package/src/sap/fe/macros/FormElement.js +2 -2
- package/src/sap/fe/macros/FormElement.ts +1 -2
- package/src/sap/fe/macros/MultiValueField.js +17 -4
- package/src/sap/fe/macros/MultiValueField.tsx +7 -2
- package/src/sap/fe/macros/RichTextEditor.js +30 -6
- package/src/sap/fe/macros/RichTextEditor.tsx +34 -7
- package/src/sap/fe/macros/Share.js +73 -40
- package/src/sap/fe/macros/Share.tsx +29 -1
- 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 +30 -30
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
- 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/chart/ChartDelegate.js +4 -4
- package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
- 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/BuildingBlockObjectProperty.js +5 -1
- package/src/sap/fe/macros/controls/BuildingBlockObjectProperty.ts +4 -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 +86 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +97 -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/Section.js +3 -2
- package/src/sap/fe/macros/controls/Section.ts +2 -1
- 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/designtime/Designtime.helper.js +12 -2
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +16 -5
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +6 -1
- 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 +38 -8
- package/src/sap/fe/macros/field/FieldRuntime.ts +65 -7
- package/src/sap/fe/macros/filter/FilterUtils.js +7 -1
- package/src/sap/fe/macros/filter/FilterUtils.ts +7 -0
- 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.block.js +6 -2
- package/src/sap/fe/macros/form/Form.block.ts +4 -1
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
- 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/formatters/TableFormatter.js +10 -1
- package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
- 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/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 +4 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
- package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +52 -12
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +54 -5
- 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 +10 -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/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +3 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +11 -3
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +12 -7
- 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 +11 -6
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +12 -7
- package/src/sap/fe/macros/messagebundle.properties +37 -29
- package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
- package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
- package/src/sap/fe/macros/messagebundle_da.properties +6 -4
- package/src/sap/fe/macros/messagebundle_de.properties +11 -9
- package/src/sap/fe/macros/messagebundle_el.properties +7 -5
- package/src/sap/fe/macros/messagebundle_en.properties +8 -6
- package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
- package/src/sap/fe/macros/messagebundle_es.properties +6 -4
- package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
- package/src/sap/fe/macros/messagebundle_et.properties +5 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
- package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
- package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
- package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
- package/src/sap/fe/macros/messagebundle_id.properties +8 -6
- package/src/sap/fe/macros/messagebundle_it.properties +4 -2
- package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
- package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
- package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
- package/src/sap/fe/macros/messagebundle_no.properties +6 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
- package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
- package/src/sap/fe/macros/messagebundle_th.properties +4 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
- package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
- package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
- package/src/sap/fe/macros/messages/MessageButton.js +17 -19
- package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
- 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 +32 -6
- 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/Table.js +7 -1
- package/src/sap/fe/macros/table/Table.tsx +7 -1
- package/src/sap/fe/macros/table/TableAPI.js +150 -133
- package/src/sap/fe/macros/table/TableAPI.ts +20 -3
- 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/TableRuntime.js +3 -3
- package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
- package/src/sap/fe/macros/table/TableSizeHelper.js +3 -3
- package/src/sap/fe/macros/table/TableSizeHelper.ts +5 -2
- package/src/sap/fe/macros/table/TreeTable.js +7 -1
- package/src/sap/fe/macros/table/TreeTable.tsx +7 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +27 -20
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +35 -26
- 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/MassEditDialog.js +10 -10
- package/src/sap/fe/macros/table/massEdit/MassEditDialog.tsx +11 -9
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +8 -8
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +7 -6
- 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 +4 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +37 -8
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +47 -16
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
|
@@ -108,21 +108,19 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/helpers/StableIdHelper",
|
|
|
108
108
|
if (fields.length === 1) {
|
|
109
109
|
const control = Field.getControlInFieldWrapper(fields[0].getContent());
|
|
110
110
|
const isTextArea = control?.isA("sap.fe.macros.field.TextAreaEx");
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
this.setInvisibleTextWhereTextAreaLabelIsHidden(formElements[0], fields[0]);
|
|
125
|
-
}
|
|
111
|
+
const isRequired = fields[0].getRequired() === true;
|
|
112
|
+
const pageMode = (control?.getParent()).editMode;
|
|
113
|
+
if (isTextArea && isRequired && pageMode !== "Display") {
|
|
114
|
+
formElements[0].getLabelControl().setVisible(true);
|
|
115
|
+
}
|
|
116
|
+
if (control?.isA("sap.m.ExpandableText") && pageMode === "Display") {
|
|
117
|
+
formElements[0].getLabelControl().setVisible(false);
|
|
118
|
+
}
|
|
119
|
+
const textAreaLabelVisibility = formElements[0].getLabelControl().getVisible();
|
|
120
|
+
const dependents = formElements[0].getDependents();
|
|
121
|
+
const isInvisibleTextAdded = dependents.find(dependent => dependent.isA("sap.ui.core.InvisibleText"));
|
|
122
|
+
if (!textAreaLabelVisibility && !isInvisibleTextAdded) {
|
|
123
|
+
this.setInvisibleTextWhereTextAreaLabelIsHidden(formElements[0], fields[0]);
|
|
126
124
|
}
|
|
127
125
|
}
|
|
128
126
|
}
|
|
@@ -146,4 +144,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/helpers/StableIdHelper",
|
|
|
146
144
|
}), _applyDecoratedDescriptor(_class2.prototype, "toggleDetails", [_dec4], Object.getOwnPropertyDescriptor(_class2.prototype, "toggleDetails"), _class2.prototype), _class2)) || _class);
|
|
147
145
|
return FormContainerAPI;
|
|
148
146
|
}, false);
|
|
149
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtQ29udGFpbmVyQVBJIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwieG1sRXZlbnRIYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Gb3JtQ29udGFpbmVyQVBJIiwiX01hY3JvQVBJIiwicHJvcHMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwic2V0UGFyZW50QmluZGluZ0NvbnRleHQiLCJmb3JtQ29udGFpbmVySWQiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJvd25lckNvbXBvbmVudCIsInZpZXciLCJnZXRSb290Q29udHJvbGxlciIsImdldFZpZXciLCJmb3JtQ29udGFpbmVyIiwiYnlJZCIsInNldEZvcm1FbGVtZW50c0ludmlzaWJsZVRleHRzVG9TdGF0aWMiLCJhdHRhY2hFdmVudE9uY2UiLCJiaW5kIiwiZm9ybUVsZW1lbnRzIiwiZ2V0Rm9ybUVsZW1lbnRzIiwiZm9yRWFjaCIsImZvcm1FbGVtZW50IiwiZGVwZW5kZW50cyIsImdldERlcGVuZGVudHMiLCJkZXBlbmRlbnQiLCJpc0EiLCJ0b1N0YXRpYyIsInNldEludmlzaWJsZVRleHRXaGVyZVRleHRBcmVhTGFiZWxJc0hpZGRlbiIsImZpZWxkIiwiYWRkRGVwZW5kZW50IiwiSW52aXNpYmxlVGV4dCIsImdlbmVyYXRlIiwiZ2V0SWQiLCJ0ZXh0IiwiZ2V0TGFiZWwiLCJzZXRMYWJlbCIsIkxhYmVsIiwidmlzaWJsZSIsImxheW91dERhdGEiLCJDb2x1bW5FbGVtZW50RGF0YSIsImNlbGxzTGFyZ2UiLCJhZGRBcmlhTGFiZWxsZWRCeSIsInNldFRleHRBcmVhTGFiZWxWaXNpYmlsaXR5IiwiYWxsRm9ybUVsZW1lbnRzIiwiZmlsdGVyIiwiZ2V0VmlzaWJsZSIsImxlbmd0aCIsImZpZWxkcyIsImdldEZpZWxkcyIsImNvbnRyb2wiLCJGaWVsZCIsImdldENvbnRyb2xJbkZpZWxkV3JhcHBlciIsImdldENvbnRlbnQiLCJpc1RleHRBcmVhIiwiaXNSZXF1aXJlZCIsImdldFJlcXVpcmVkIiwicGFnZU1vZGUiLCJnZXRQYXJlbnQiLCJlZGl0TW9kZSIsImdldExhYmVsQ29udHJvbCIsInNldFZpc2libGUiLCJ0ZXh0QXJlYUxhYmVsVmlzaWJpbGl0eSIsImlzSW52aXNpYmxlVGV4dEFkZGVkIiwiZmluZCIsInRvZ2dsZURldGFpbHMiLCJzaG93RGV0YWlscyIsIk1hY3JvQVBJIiwiaXNEZXBlbmRlbnRCb3VuZCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRm9ybUNvbnRhaW5lckFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSwgeG1sRXZlbnRIYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgRmllbGQgZnJvbSBcInNhcC9mZS9tYWNyb3MvRmllbGRcIjtcbmltcG9ydCB0eXBlIEZpZWxkV3JhcHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWVsZFdyYXBwZXJcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBJbnZpc2libGVUZXh0IGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVUZXh0XCI7XG5pbXBvcnQgQ29sdW1uRWxlbWVudERhdGEgZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Db2x1bW5FbGVtZW50RGF0YVwiO1xuaW1wb3J0IHR5cGUgRm9ybUNvbnRhaW5lciBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL0Zvcm1Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIEZvcm1FbGVtZW50IGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vRm9ybUVsZW1lbnRcIjtcbmltcG9ydCB0eXBlIG1kY0ZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcIi4uL01hY3JvQVBJXCI7XG5cbi8qKlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuZm9ybS5Gb3JtQ29udGFpbmVyQVBJXG4gKiBAcHJpdmF0ZVxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUNvbnRhaW5lckFQSVwiKVxuY2xhc3MgRm9ybUNvbnRhaW5lckFQSSBleHRlbmRzIE1hY3JvQVBJIHtcblx0LyoqXG5cdCAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBmb3JtIGNvbnRhaW5lciBjb250cm9sLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZvcm1Db250YWluZXJJZCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRzaG93RGV0YWlscyA9IGZhbHNlO1xuXG5cdHN0YXRpYyBpc0RlcGVuZGVudEJvdW5kID0gdHJ1ZTtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wcz86IFByb3BlcnRpZXNPZjxGb3JtQ29udGFpbmVyQVBJPikge1xuXHRcdHN1cGVyKHByb3BzKTtcblx0XHR0aGlzLnNldFBhcmVudEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIiwgYGNvbnRyb2xzLyR7dGhpcy5mb3JtQ29udGFpbmVySWR9YCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqIEBwYXJhbSBvd25lckNvbXBvbmVudFxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZShvd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gb3duZXJDb21wb25lbnQuZ2V0Um9vdENvbnRyb2xsZXIoKT8uZ2V0VmlldygpO1xuXHRcdGlmICghdmlldykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgZm9ybUNvbnRhaW5lciA9IHZpZXcuYnlJZCh0aGlzLmZvcm1Db250YWluZXJJZCkgYXMgRm9ybUNvbnRhaW5lciB8IHVuZGVmaW5lZDtcblx0XHRpZiAoZm9ybUNvbnRhaW5lcikge1xuXHRcdFx0dGhpcy5zZXRGb3JtRWxlbWVudHNJbnZpc2libGVUZXh0c1RvU3RhdGljKGZvcm1Db250YWluZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2aWV3LmF0dGFjaEV2ZW50T25jZShcblx0XHRcdFx0XCJhZnRlclJlbmRlcmluZ1wiLFxuXHRcdFx0XHRmdW5jdGlvbiAodGhpczogRm9ybUNvbnRhaW5lckFQSSk6IHZvaWQge1xuXHRcdFx0XHRcdGZvcm1Db250YWluZXIgPSB2aWV3LmJ5SWQodGhpcy5mb3JtQ29udGFpbmVySWQpIGFzIEZvcm1Db250YWluZXIgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0aWYgKGZvcm1Db250YWluZXIpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9ybUVsZW1lbnRzSW52aXNpYmxlVGV4dHNUb1N0YXRpYyhmb3JtQ29udGFpbmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0uYmluZCh0aGlzKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgSW52aXNpYmxlIFRleHRzIHRvIHN0YXRpYy5cblx0ICogQHBhcmFtIGZvcm1Db250YWluZXIgRm9ybUNvbnRhaW5lciBjb250cm9sLlxuXHQgKi9cblx0c2V0Rm9ybUVsZW1lbnRzSW52aXNpYmxlVGV4dHNUb1N0YXRpYyhmb3JtQ29udGFpbmVyOiBGb3JtQ29udGFpbmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgZm9ybUVsZW1lbnRzID0gZm9ybUNvbnRhaW5lci5nZXRGb3JtRWxlbWVudHMoKTtcblx0XHRmb3JtRWxlbWVudHMuZm9yRWFjaCgoZm9ybUVsZW1lbnQ6IEZvcm1FbGVtZW50KSA9PiB7XG5cdFx0XHRjb25zdCBkZXBlbmRlbnRzID0gZm9ybUVsZW1lbnQuZ2V0RGVwZW5kZW50cygpO1xuXHRcdFx0ZGVwZW5kZW50cy5mb3JFYWNoKChkZXBlbmRlbnQpID0+IHtcblx0XHRcdFx0aWYgKGRlcGVuZGVudC5pc0E8SW52aXNpYmxlVGV4dD4oXCJzYXAudWkuY29yZS5JbnZpc2libGVUZXh0XCIpKSB7XG5cdFx0XHRcdFx0ZGVwZW5kZW50LnRvU3RhdGljKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIEludmlzaWJsZVRleHQgd2hlbiB0aGUgVGV4dEFyZWEgTGFiZWwgaXMgaGlkZGVuLlxuXHQgKiBAcGFyYW0gZm9ybUVsZW1lbnQgRm9ybUVsZW1lbnQgY29udHJvbC5cblx0ICogQHBhcmFtIGZpZWxkIEZpZWxkIGNvbnRyb2wuXG5cdCAqL1xuXHRzdGF0aWMgc2V0SW52aXNpYmxlVGV4dFdoZXJlVGV4dEFyZWFMYWJlbElzSGlkZGVuKGZvcm1FbGVtZW50OiBGb3JtRWxlbWVudCwgZmllbGQ6IG1kY0ZpZWxkKTogdm9pZCB7XG5cdFx0Zm9ybUVsZW1lbnQuYWRkRGVwZW5kZW50KG5ldyBJbnZpc2libGVUZXh0KGdlbmVyYXRlKFtmaWVsZC5nZXRJZCgpLCBcIkZvcm1FbGVtZW50QXJpYVRleHRcIl0pLCB7IHRleHQ6IGZvcm1FbGVtZW50LmdldExhYmVsKCkgfSkpO1xuXHRcdGZvcm1FbGVtZW50LnNldExhYmVsKFxuXHRcdFx0bmV3IExhYmVsKGdlbmVyYXRlKFtmaWVsZC5nZXRJZCgpLCBcIkZvcm1FbGVtZW50TGFiZWxcIl0pLCB7XG5cdFx0XHRcdHRleHQ6IGZvcm1FbGVtZW50LmdldExhYmVsKCksXG5cdFx0XHRcdHZpc2libGU6IGZhbHNlLFxuXHRcdFx0XHRsYXlvdXREYXRhOiBuZXcgQ29sdW1uRWxlbWVudERhdGEoeyBjZWxsc0xhcmdlOiAxMiB9KVxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdGZpZWxkLmFkZEFyaWFMYWJlbGxlZEJ5KGdlbmVyYXRlKFtmaWVsZC5nZXRJZCgpLCBcIkZvcm1FbGVtZW50QXJpYVRleHRcIl0pKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBUZXh0QXJlYSBMYWJlbCdzIFZpc2liaWxpdHkuXG5cdCAqIEBwYXJhbSBmb3JtQ29udGFpbmVyIEZvcm1Db250YWluZXIgY29udHJvbC5cblx0ICovXG5cdHN0YXRpYyBzZXRUZXh0QXJlYUxhYmVsVmlzaWJpbGl0eShmb3JtQ29udGFpbmVyOiBGb3JtQ29udGFpbmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgYWxsRm9ybUVsZW1lbnRzID0gZm9ybUNvbnRhaW5lci5nZXRGb3JtRWxlbWVudHMoKTtcblx0XHRjb25zdCBmb3JtRWxlbWVudHMgPSBhbGxGb3JtRWxlbWVudHMuZmlsdGVyKChmb3JtRWxlbWVudCkgPT4gZm9ybUVsZW1lbnQuZ2V0VmlzaWJsZSgpKTtcblx0XHRpZiAoZm9ybUVsZW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0Y29uc3QgZmllbGRzID0gZm9ybUVsZW1lbnRzWzBdLmdldEZpZWxkcygpO1xuXHRcdFx0aWYgKGZpZWxkcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbCA9IEZpZWxkLmdldENvbnRyb2xJbkZpZWxkV3JhcHBlcigoZmllbGRzWzBdIGFzIG1kY0ZpZWxkKS5nZXRDb250ZW50KCkpO1xuXHRcdFx0XHRjb25zdCBpc1RleHRBcmVhID0gY29udHJvbD8uaXNBKFwic2FwLmZlLm1hY3Jvcy5maWVsZC5UZXh0QXJlYUV4XCIpO1xuXHRcdFx0XHRpZiAoaXNUZXh0QXJlYSkge1xuXHRcdFx0XHRcdGNvbnN0IGlzUmVxdWlyZWQgPSAoZmllbGRzWzBdIGFzIG1kY0ZpZWxkKS5nZXRSZXF1aXJlZCgpID09PSB0cnVlO1xuXHRcdFx0XHRcdGNvbnN0IHBhZ2VNb2RlID0gKGNvbnRyb2w/LmdldFBhcmVudCgpIGFzIEZpZWxkV3JhcHBlcikuZWRpdE1vZGU7XG5cdFx0XHRcdFx0aWYgKGlzUmVxdWlyZWQgJiYgcGFnZU1vZGUgIT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRcdFx0XHQoZm9ybUVsZW1lbnRzWzBdLmdldExhYmVsQ29udHJvbCgpIGFzIHVua25vd24gYXMgQ29udHJvbCkuc2V0VmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKHBhZ2VNb2RlID09PSBcIkRpc3BsYXlcIikge1xuXHRcdFx0XHRcdFx0KGZvcm1FbGVtZW50c1swXS5nZXRMYWJlbENvbnRyb2woKSBhcyB1bmtub3duIGFzIENvbnRyb2wpLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCB0ZXh0QXJlYUxhYmVsVmlzaWJpbGl0eSA9IChmb3JtRWxlbWVudHNbMF0uZ2V0TGFiZWxDb250cm9sKCkgYXMgdW5rbm93biBhcyBDb250cm9sKS5nZXRWaXNpYmxlKCk7XG5cdFx0XHRcdFx0Y29uc3QgZGVwZW5kZW50cyA9IGZvcm1FbGVtZW50c1swXS5nZXREZXBlbmRlbnRzKCk7XG5cdFx0XHRcdFx0Y29uc3QgaXNJbnZpc2libGVUZXh0QWRkZWQgPSBkZXBlbmRlbnRzLmZpbmQoKGRlcGVuZGVudCkgPT4gZGVwZW5kZW50LmlzQTxJbnZpc2libGVUZXh0PihcInNhcC51aS5jb3JlLkludmlzaWJsZVRleHRcIikpO1xuXHRcdFx0XHRcdGlmICghdGV4dEFyZWFMYWJlbFZpc2liaWxpdHkgJiYgIWlzSW52aXNpYmxlVGV4dEFkZGVkKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNldEludmlzaWJsZVRleHRXaGVyZVRleHRBcmVhTGFiZWxJc0hpZGRlbihmb3JtRWxlbWVudHNbMF0sIGZpZWxkc1swXSBhcyBtZGNGaWVsZCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0QHhtbEV2ZW50SGFuZGxlcigpXG5cdHRvZ2dsZURldGFpbHMoKTogdm9pZCB7XG5cdFx0dGhpcy5zaG93RGV0YWlscyA9ICF0aGlzLnNob3dEZXRhaWxzO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Db250YWluZXJBUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBZUE7QUFDQTtBQUNBO0FBQ0E7RUFIQSxJQUtNQSxnQkFBZ0IsSUFBQUMsSUFBQSxHQURyQkMsY0FBYyxDQUFDLHFDQUFxQyxDQUFDLEVBQUFDLEtBQUEsR0FNcERDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUc1QkYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFVLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBb0c3QkMsZUFBZSxDQUFDLENBQUMsRUFBQVAsSUFBQSxDQUFBUSxNQUFBLElBQUFDLE9BQUEsSUFBQUMsaUJBQUEsMEJBQUFDLFNBQUE7SUEvRmxCLFNBQUFaLGlCQUFZYSxLQUFzQyxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUNuREEsS0FBQSxHQUFBRixTQUFBLENBQUFHLElBQUEsT0FBTUYsS0FBSyxDQUFDO01BYmI7QUFDRDtBQUNBO0FBQ0E7TUFIQ0csMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFFLDBC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QyxDQUFDLENBQXdCQyxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQzVFO1lBQ0EsTUFBTUMsdUJBQXVCLEdBQUkzQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUN5QyxlQUFlLENBQUMsQ0FBQyxDQUF3QmQsVUFBVSxDQUFDLENBQUM7WUFDdEcsTUFBTXZCLFVBQVUsR0FBR0osWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDSyxhQUFhLENBQUMsQ0FBQztZQUNsRCxNQUFNdUMsb0JBQW9CLEdBQUd4QyxVQUFVLENBQUN5QyxJQUFJLENBQUV2QyxTQUFTLElBQUtBLFNBQVMsQ0FBQ0MsR0FBRyxDQUFnQiwyQkFBMkIsQ0FBQyxDQUFDO1lBQ3RILElBQUksQ0FBQ29DLHVCQUF1QixJQUFJLENBQUNDLG9CQUFvQixFQUFFO2NBQ3RELElBQUksQ0FBQ25DLDBDQUEwQyxDQUFDVCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU2QixNQUFNLENBQUMsQ0FBQyxDQUFhLENBQUM7WUFDeEY7VUFDRDtRQUNEO01BQ0Q7SUFDRCxDQUFDO0lBQUF6QyxNQUFBLENBR0QwRCxhQUFhLEdBRGIsU0FDQUEsYUFBYUEsQ0FBQSxFQUFTO01BQ3JCLElBQUksQ0FBQ0MsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDQSxXQUFXO0lBQ3JDLENBQUM7SUFBQSxPQUFBakYsZ0JBQUE7RUFBQSxFQS9HNkJrRixRQUFRLEdBQUF2RSxpQkFBQSxDQVcvQndFLGdCQUFnQixHQUFHLElBQUksRUFBQXhFLGlCQUFBLEdBQUFNLFdBQUEsR0FBQW1FLHlCQUFBLENBQUExRSxPQUFBLENBQUFhLFNBQUEsc0JBQUFwQixLQUFBO0lBQUFrRixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXRFLFlBQUEsR0FBQWtFLHlCQUFBLENBQUExRSxPQUFBLENBQUFhLFNBQUEsa0JBQUFqQixLQUFBO0lBQUErRSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBLFdBQUFBLENBQUE7TUFBQSxPQUZoQixLQUFLO0lBQUE7RUFBQSxJQUFBSix5QkFBQSxDQUFBMUUsT0FBQSxDQUFBYSxTQUFBLG9CQUFBaEIsS0FBQSxHQUFBa0YsTUFBQSxDQUFBQyx3QkFBQSxDQUFBaEYsT0FBQSxDQUFBYSxTQUFBLG9CQUFBYixPQUFBLENBQUFhLFNBQUEsR0FBQWIsT0FBQSxNQUFBRCxNQUFBO0VBQUEsT0F5R0xULGdCQUFnQjtBQUFBIiwiaWdub3JlTGlzdCI6W119
|
|
147
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGb3JtQ29udGFpbmVyQVBJIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwieG1sRXZlbnRIYW5kbGVyIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Gb3JtQ29udGFpbmVyQVBJIiwiX01hY3JvQVBJIiwicHJvcHMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwic2V0UGFyZW50QmluZGluZ0NvbnRleHQiLCJmb3JtQ29udGFpbmVySWQiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJvd25lckNvbXBvbmVudCIsInZpZXciLCJnZXRSb290Q29udHJvbGxlciIsImdldFZpZXciLCJmb3JtQ29udGFpbmVyIiwiYnlJZCIsInNldEZvcm1FbGVtZW50c0ludmlzaWJsZVRleHRzVG9TdGF0aWMiLCJhdHRhY2hFdmVudE9uY2UiLCJiaW5kIiwiZm9ybUVsZW1lbnRzIiwiZ2V0Rm9ybUVsZW1lbnRzIiwiZm9yRWFjaCIsImZvcm1FbGVtZW50IiwiZGVwZW5kZW50cyIsImdldERlcGVuZGVudHMiLCJkZXBlbmRlbnQiLCJpc0EiLCJ0b1N0YXRpYyIsInNldEludmlzaWJsZVRleHRXaGVyZVRleHRBcmVhTGFiZWxJc0hpZGRlbiIsImZpZWxkIiwiYWRkRGVwZW5kZW50IiwiSW52aXNpYmxlVGV4dCIsImdlbmVyYXRlIiwiZ2V0SWQiLCJ0ZXh0IiwiZ2V0TGFiZWwiLCJzZXRMYWJlbCIsIkxhYmVsIiwidmlzaWJsZSIsImxheW91dERhdGEiLCJDb2x1bW5FbGVtZW50RGF0YSIsImNlbGxzTGFyZ2UiLCJhZGRBcmlhTGFiZWxsZWRCeSIsInNldFRleHRBcmVhTGFiZWxWaXNpYmlsaXR5IiwiYWxsRm9ybUVsZW1lbnRzIiwiZmlsdGVyIiwiZ2V0VmlzaWJsZSIsImxlbmd0aCIsImZpZWxkcyIsImdldEZpZWxkcyIsImNvbnRyb2wiLCJGaWVsZCIsImdldENvbnRyb2xJbkZpZWxkV3JhcHBlciIsImdldENvbnRlbnQiLCJpc1RleHRBcmVhIiwiaXNSZXF1aXJlZCIsImdldFJlcXVpcmVkIiwicGFnZU1vZGUiLCJnZXRQYXJlbnQiLCJlZGl0TW9kZSIsImdldExhYmVsQ29udHJvbCIsInNldFZpc2libGUiLCJ0ZXh0QXJlYUxhYmVsVmlzaWJpbGl0eSIsImlzSW52aXNpYmxlVGV4dEFkZGVkIiwiZmluZCIsInRvZ2dsZURldGFpbHMiLCJzaG93RGV0YWlscyIsIk1hY3JvQVBJIiwiaXNEZXBlbmRlbnRCb3VuZCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRm9ybUNvbnRhaW5lckFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSwgeG1sRXZlbnRIYW5kbGVyIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgRmllbGQgZnJvbSBcInNhcC9mZS9tYWNyb3MvRmllbGRcIjtcbmltcG9ydCB0eXBlIEZpZWxkV3JhcHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWVsZFdyYXBwZXJcIjtcbmltcG9ydCBMYWJlbCBmcm9tIFwic2FwL20vTGFiZWxcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBJbnZpc2libGVUZXh0IGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVUZXh0XCI7XG5pbXBvcnQgQ29sdW1uRWxlbWVudERhdGEgZnJvbSBcInNhcC91aS9sYXlvdXQvZm9ybS9Db2x1bW5FbGVtZW50RGF0YVwiO1xuaW1wb3J0IHR5cGUgRm9ybUNvbnRhaW5lciBmcm9tIFwic2FwL3VpL2xheW91dC9mb3JtL0Zvcm1Db250YWluZXJcIjtcbmltcG9ydCB0eXBlIEZvcm1FbGVtZW50IGZyb20gXCJzYXAvdWkvbGF5b3V0L2Zvcm0vRm9ybUVsZW1lbnRcIjtcbmltcG9ydCB0eXBlIG1kY0ZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgTWFjcm9BUEkgZnJvbSBcIi4uL01hY3JvQVBJXCI7XG5cbi8qKlxuICogQGFsaWFzIHNhcC5mZS5tYWNyb3MuZm9ybS5Gb3JtQ29udGFpbmVyQVBJXG4gKiBAcHJpdmF0ZVxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUubWFjcm9zLmZvcm0uRm9ybUNvbnRhaW5lckFQSVwiKVxuY2xhc3MgRm9ybUNvbnRhaW5lckFQSSBleHRlbmRzIE1hY3JvQVBJIHtcblx0LyoqXG5cdCAqIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBmb3JtIGNvbnRhaW5lciBjb250cm9sLlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZvcm1Db250YWluZXJJZCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiB9KVxuXHRzaG93RGV0YWlscyA9IGZhbHNlO1xuXG5cdHN0YXRpYyBpc0RlcGVuZGVudEJvdW5kID0gdHJ1ZTtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wcz86IFByb3BlcnRpZXNPZjxGb3JtQ29udGFpbmVyQVBJPikge1xuXHRcdHN1cGVyKHByb3BzKTtcblx0XHR0aGlzLnNldFBhcmVudEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIiwgYGNvbnRyb2xzLyR7dGhpcy5mb3JtQ29udGFpbmVySWR9YCk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqIEBwYXJhbSBvd25lckNvbXBvbmVudFxuXHQgKi9cblx0b25NZXRhZGF0YUF2YWlsYWJsZShvd25lckNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gb3duZXJDb21wb25lbnQuZ2V0Um9vdENvbnRyb2xsZXIoKT8uZ2V0VmlldygpO1xuXHRcdGlmICghdmlldykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgZm9ybUNvbnRhaW5lciA9IHZpZXcuYnlJZCh0aGlzLmZvcm1Db250YWluZXJJZCkgYXMgRm9ybUNvbnRhaW5lciB8IHVuZGVmaW5lZDtcblx0XHRpZiAoZm9ybUNvbnRhaW5lcikge1xuXHRcdFx0dGhpcy5zZXRGb3JtRWxlbWVudHNJbnZpc2libGVUZXh0c1RvU3RhdGljKGZvcm1Db250YWluZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR2aWV3LmF0dGFjaEV2ZW50T25jZShcblx0XHRcdFx0XCJhZnRlclJlbmRlcmluZ1wiLFxuXHRcdFx0XHRmdW5jdGlvbiAodGhpczogRm9ybUNvbnRhaW5lckFQSSk6IHZvaWQge1xuXHRcdFx0XHRcdGZvcm1Db250YWluZXIgPSB2aWV3LmJ5SWQodGhpcy5mb3JtQ29udGFpbmVySWQpIGFzIEZvcm1Db250YWluZXIgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0aWYgKGZvcm1Db250YWluZXIpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2V0Rm9ybUVsZW1lbnRzSW52aXNpYmxlVGV4dHNUb1N0YXRpYyhmb3JtQ29udGFpbmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0uYmluZCh0aGlzKVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0cyB0aGUgSW52aXNpYmxlIFRleHRzIHRvIHN0YXRpYy5cblx0ICogQHBhcmFtIGZvcm1Db250YWluZXIgRm9ybUNvbnRhaW5lciBjb250cm9sLlxuXHQgKi9cblx0c2V0Rm9ybUVsZW1lbnRzSW52aXNpYmxlVGV4dHNUb1N0YXRpYyhmb3JtQ29udGFpbmVyOiBGb3JtQ29udGFpbmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgZm9ybUVsZW1lbnRzID0gZm9ybUNvbnRhaW5lci5nZXRGb3JtRWxlbWVudHMoKTtcblx0XHRmb3JtRWxlbWVudHMuZm9yRWFjaCgoZm9ybUVsZW1lbnQ6IEZvcm1FbGVtZW50KSA9PiB7XG5cdFx0XHRjb25zdCBkZXBlbmRlbnRzID0gZm9ybUVsZW1lbnQuZ2V0RGVwZW5kZW50cygpO1xuXHRcdFx0ZGVwZW5kZW50cy5mb3JFYWNoKChkZXBlbmRlbnQpID0+IHtcblx0XHRcdFx0aWYgKGRlcGVuZGVudC5pc0E8SW52aXNpYmxlVGV4dD4oXCJzYXAudWkuY29yZS5JbnZpc2libGVUZXh0XCIpKSB7XG5cdFx0XHRcdFx0ZGVwZW5kZW50LnRvU3RhdGljKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIEludmlzaWJsZVRleHQgd2hlbiB0aGUgVGV4dEFyZWEgTGFiZWwgaXMgaGlkZGVuLlxuXHQgKiBAcGFyYW0gZm9ybUVsZW1lbnQgRm9ybUVsZW1lbnQgY29udHJvbC5cblx0ICogQHBhcmFtIGZpZWxkIEZpZWxkIGNvbnRyb2wuXG5cdCAqL1xuXHRzdGF0aWMgc2V0SW52aXNpYmxlVGV4dFdoZXJlVGV4dEFyZWFMYWJlbElzSGlkZGVuKGZvcm1FbGVtZW50OiBGb3JtRWxlbWVudCwgZmllbGQ6IG1kY0ZpZWxkKTogdm9pZCB7XG5cdFx0Zm9ybUVsZW1lbnQuYWRkRGVwZW5kZW50KG5ldyBJbnZpc2libGVUZXh0KGdlbmVyYXRlKFtmaWVsZC5nZXRJZCgpLCBcIkZvcm1FbGVtZW50QXJpYVRleHRcIl0pLCB7IHRleHQ6IGZvcm1FbGVtZW50LmdldExhYmVsKCkgfSkpO1xuXHRcdGZvcm1FbGVtZW50LnNldExhYmVsKFxuXHRcdFx0bmV3IExhYmVsKGdlbmVyYXRlKFtmaWVsZC5nZXRJZCgpLCBcIkZvcm1FbGVtZW50TGFiZWxcIl0pLCB7XG5cdFx0XHRcdHRleHQ6IGZvcm1FbGVtZW50LmdldExhYmVsKCksXG5cdFx0XHRcdHZpc2libGU6IGZhbHNlLFxuXHRcdFx0XHRsYXlvdXREYXRhOiBuZXcgQ29sdW1uRWxlbWVudERhdGEoeyBjZWxsc0xhcmdlOiAxMiB9KVxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdGZpZWxkLmFkZEFyaWFMYWJlbGxlZEJ5KGdlbmVyYXRlKFtmaWVsZC5nZXRJZCgpLCBcIkZvcm1FbGVtZW50QXJpYVRleHRcIl0pKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBUZXh0QXJlYSBMYWJlbCdzIFZpc2liaWxpdHkuXG5cdCAqIEBwYXJhbSBmb3JtQ29udGFpbmVyIEZvcm1Db250YWluZXIgY29udHJvbC5cblx0ICovXG5cdHN0YXRpYyBzZXRUZXh0QXJlYUxhYmVsVmlzaWJpbGl0eShmb3JtQ29udGFpbmVyOiBGb3JtQ29udGFpbmVyKTogdm9pZCB7XG5cdFx0Y29uc3QgYWxsRm9ybUVsZW1lbnRzID0gZm9ybUNvbnRhaW5lci5nZXRGb3JtRWxlbWVudHMoKTtcblx0XHRjb25zdCBmb3JtRWxlbWVudHMgPSBhbGxGb3JtRWxlbWVudHMuZmlsdGVyKChmb3JtRWxlbWVudCkgPT4gZm9ybUVsZW1lbnQuZ2V0VmlzaWJsZSgpKTtcblx0XHRpZiAoZm9ybUVsZW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0Y29uc3QgZmllbGRzID0gZm9ybUVsZW1lbnRzWzBdLmdldEZpZWxkcygpO1xuXHRcdFx0aWYgKGZpZWxkcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbCA9IEZpZWxkLmdldENvbnRyb2xJbkZpZWxkV3JhcHBlcigoZmllbGRzWzBdIGFzIG1kY0ZpZWxkKS5nZXRDb250ZW50KCkpO1xuXHRcdFx0XHRjb25zdCBpc1RleHRBcmVhID0gY29udHJvbD8uaXNBKFwic2FwLmZlLm1hY3Jvcy5maWVsZC5UZXh0QXJlYUV4XCIpO1xuXHRcdFx0XHRjb25zdCBpc1JlcXVpcmVkID0gKGZpZWxkc1swXSBhcyBtZGNGaWVsZCkuZ2V0UmVxdWlyZWQoKSA9PT0gdHJ1ZTtcblx0XHRcdFx0Y29uc3QgcGFnZU1vZGUgPSAoY29udHJvbD8uZ2V0UGFyZW50KCkgYXMgRmllbGRXcmFwcGVyKS5lZGl0TW9kZTtcblx0XHRcdFx0aWYgKGlzVGV4dEFyZWEgJiYgaXNSZXF1aXJlZCAmJiBwYWdlTW9kZSAhPT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdFx0XHQoZm9ybUVsZW1lbnRzWzBdLmdldExhYmVsQ29udHJvbCgpIGFzIHVua25vd24gYXMgQ29udHJvbCkuc2V0VmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoY29udHJvbD8uaXNBKFwic2FwLm0uRXhwYW5kYWJsZVRleHRcIikgJiYgcGFnZU1vZGUgPT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRcdFx0KGZvcm1FbGVtZW50c1swXS5nZXRMYWJlbENvbnRyb2woKSBhcyB1bmtub3duIGFzIENvbnRyb2wpLnNldFZpc2libGUoZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHRleHRBcmVhTGFiZWxWaXNpYmlsaXR5ID0gKGZvcm1FbGVtZW50c1swXS5nZXRMYWJlbENvbnRyb2woKSBhcyB1bmtub3duIGFzIENvbnRyb2wpLmdldFZpc2libGUoKTtcblx0XHRcdFx0Y29uc3QgZGVwZW5kZW50cyA9IGZvcm1FbGVtZW50c1swXS5nZXREZXBlbmRlbnRzKCk7XG5cdFx0XHRcdGNvbnN0IGlzSW52aXNpYmxlVGV4dEFkZGVkID0gZGVwZW5kZW50cy5maW5kKChkZXBlbmRlbnQpID0+IGRlcGVuZGVudC5pc0E8SW52aXNpYmxlVGV4dD4oXCJzYXAudWkuY29yZS5JbnZpc2libGVUZXh0XCIpKTtcblx0XHRcdFx0aWYgKCF0ZXh0QXJlYUxhYmVsVmlzaWJpbGl0eSAmJiAhaXNJbnZpc2libGVUZXh0QWRkZWQpIHtcblx0XHRcdFx0XHR0aGlzLnNldEludmlzaWJsZVRleHRXaGVyZVRleHRBcmVhTGFiZWxJc0hpZGRlbihmb3JtRWxlbWVudHNbMF0sIGZpZWxkc1swXSBhcyBtZGNGaWVsZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAeG1sRXZlbnRIYW5kbGVyKClcblx0dG9nZ2xlRGV0YWlscygpOiB2b2lkIHtcblx0XHR0aGlzLnNob3dEZXRhaWxzID0gIXRoaXMuc2hvd0RldGFpbHM7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRm9ybUNvbnRhaW5lckFQSTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFlQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS01BLGdCQUFnQixJQUFBQyxJQUFBLEdBRHJCQyxjQUFjLENBQUMscUNBQXFDLENBQUMsRUFBQUMsS0FBQSxHQU1wREMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzVCRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVUsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FrRzdCQyxlQUFlLENBQUMsQ0FBQyxFQUFBUCxJQUFBLENBQUFRLE1BQUEsSUFBQUMsT0FBQSxJQUFBQyxpQkFBQSwwQkFBQUMsU0FBQTtJQTdGbEIsU0FBQVosaUJBQVlhLEtBQXNDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ25EQSxLQUFBLEdBQUFGLFNBQUEsQ0FBQUcsSUFBQSxPQUFNRixLQUFLLENBQUM7TUFiYjtBQUNEO0FBQ0E7QUFDQTtNQUhDRywwQkFBQSxDQUFBRixLQUFBLHFCQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYs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LENBQUMsQ0FBQ3lDLGVBQWUsQ0FBQyxDQUFDLENBQXdCQyxVQUFVLENBQUMsS0FBSyxDQUFDO1VBQzVFO1VBQ0EsTUFBTUMsdUJBQXVCLEdBQUkzQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUN5QyxlQUFlLENBQUMsQ0FBQyxDQUF3QmQsVUFBVSxDQUFDLENBQUM7VUFDdEcsTUFBTXZCLFVBQVUsR0FBR0osWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDSyxhQUFhLENBQUMsQ0FBQztVQUNsRCxNQUFNdUMsb0JBQW9CLEdBQUd4QyxVQUFVLENBQUN5QyxJQUFJLENBQUV2QyxTQUFTLElBQUtBLFNBQVMsQ0FBQ0MsR0FBRyxDQUFnQiwyQkFBMkIsQ0FBQyxDQUFDO1VBQ3RILElBQUksQ0FBQ29DLHVCQUF1QixJQUFJLENBQUNDLG9CQUFvQixFQUFFO1lBQ3RELElBQUksQ0FBQ25DLDBDQUEwQyxDQUFDVCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUU2QixNQUFNLENBQUMsQ0FBQyxDQUFhLENBQUM7VUFDeEY7UUFDRDtNQUNEO0lBQ0QsQ0FBQztJQUFBekMsTUFBQSxDQUdEMEQsYUFBYSxHQURiLFNBQ0FBLGFBQWFBLENBQUEsRUFBUztNQUNyQixJQUFJLENBQUNDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQ0EsV0FBVztJQUNyQyxDQUFDO0lBQUEsT0FBQWpGLGdCQUFBO0VBQUEsRUE3RzZCa0YsUUFBUSxHQUFBdkUsaUJBQUEsQ0FXL0J3RSxnQkFBZ0IsR0FBRyxJQUFJLEVBQUF4RSxpQkFBQSxHQUFBTSxXQUFBLEdBQUFtRSx5QkFBQSxDQUFBMUUsT0FBQSxDQUFBYSxTQUFBLHNCQUFBcEIsS0FBQTtJQUFBa0YsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF0RSxZQUFBLEdBQUFrRSx5QkFBQSxDQUFBMUUsT0FBQSxDQUFBYSxTQUFBLGtCQUFBakIsS0FBQTtJQUFBK0UsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQSxXQUFBQSxDQUFBO01BQUEsT0FGaEIsS0FBSztJQUFBO0VBQUEsSUFBQUoseUJBQUEsQ0FBQTFFLE9BQUEsQ0FBQWEsU0FBQSxvQkFBQWhCLEtBQUEsR0FBQWtGLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQWhGLE9BQUEsQ0FBQWEsU0FBQSxvQkFBQWIsT0FBQSxDQUFBYSxTQUFBLEdBQUFiLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BdUdMVCxnQkFBZ0I7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -106,21 +106,19 @@ class FormContainerAPI extends MacroAPI {
|
|
|
106
106
|
if (fields.length === 1) {
|
|
107
107
|
const control = Field.getControlInFieldWrapper((fields[0] as mdcField).getContent());
|
|
108
108
|
const isTextArea = control?.isA("sap.fe.macros.field.TextAreaEx");
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
this.setInvisibleTextWhereTextAreaLabelIsHidden(formElements[0], fields[0] as mdcField);
|
|
123
|
-
}
|
|
109
|
+
const isRequired = (fields[0] as mdcField).getRequired() === true;
|
|
110
|
+
const pageMode = (control?.getParent() as FieldWrapper).editMode;
|
|
111
|
+
if (isTextArea && isRequired && pageMode !== "Display") {
|
|
112
|
+
(formElements[0].getLabelControl() as unknown as Control).setVisible(true);
|
|
113
|
+
}
|
|
114
|
+
if (control?.isA("sap.m.ExpandableText") && pageMode === "Display") {
|
|
115
|
+
(formElements[0].getLabelControl() as unknown as Control).setVisible(false);
|
|
116
|
+
}
|
|
117
|
+
const textAreaLabelVisibility = (formElements[0].getLabelControl() as unknown as Control).getVisible();
|
|
118
|
+
const dependents = formElements[0].getDependents();
|
|
119
|
+
const isInvisibleTextAdded = dependents.find((dependent) => dependent.isA<InvisibleText>("sap.ui.core.InvisibleText"));
|
|
120
|
+
if (!textAreaLabelVisibility && !isInvisibleTextAdded) {
|
|
121
|
+
this.setInvisibleTextWhereTextAreaLabelIsHidden(formElements[0], fields[0] as mdcField);
|
|
124
122
|
}
|
|
125
123
|
}
|
|
126
124
|
}
|
|
@@ -26,6 +26,25 @@ sap.ui.define(["sap/fe/macros/CommonHelper", "sap/fe/macros/DelegateUtil", "sap/
|
|
|
26
26
|
const oModifier = mPropertyBag.modifier,
|
|
27
27
|
oMetaModel = mPropertyBag.appComponent?.getMetaModel(),
|
|
28
28
|
oForm = mPropertyBag.element;
|
|
29
|
+
|
|
30
|
+
// Check for existing fields with the same _flexId
|
|
31
|
+
if (oModifier.targets === "xmlTree") {
|
|
32
|
+
// at preprocessing time
|
|
33
|
+
const fieldsInView = mPropertyBag.view?.getElementsByTagNameNS("sap.fe.macros", "Field");
|
|
34
|
+
if (fieldsInView) {
|
|
35
|
+
for (const field of Array.from(fieldsInView)) {
|
|
36
|
+
if (field.getAttribute("_flexId") === mPropertyBag.fieldSelector?.id) {
|
|
37
|
+
// Field with same _flexId already exists, reject Promise to avoid duplicates
|
|
38
|
+
return Promise.reject(new Error("FormDelegate.createLayout: field already exists"));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
} else if (oModifier.targets === "jsControlTree") {
|
|
43
|
+
// at runtime
|
|
44
|
+
if (mPropertyBag.fieldSelector?.id && mPropertyBag.view && mPropertyBag.view.byId(mPropertyBag.fieldSelector?.id)) {
|
|
45
|
+
return Promise.reject(new Error("FormDelegate.createLayout: field already exists"));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
29
48
|
let sEntitySet = await DelegateUtil.getCustomDataWithModifier(oForm, "entitySet", oModifier);
|
|
30
49
|
if (!sEntitySet) {
|
|
31
50
|
sEntitySet = await DelegateUtil.getCustomDataWithModifier(oForm, "navigationPath", oModifier);
|
|
@@ -197,4 +216,4 @@ sap.ui.define(["sap/fe/macros/CommonHelper", "sap/fe/macros/DelegateUtil", "sap/
|
|
|
197
216
|
};
|
|
198
217
|
return Delegate;
|
|
199
218
|
}, false);
|
|
200
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWxlZ2F0ZSIsImNyZWF0ZUxheW91dCIsIm1Qcm9wZXJ0eUJhZyIsIm9Nb2RpZmllciIsIm1vZGlmaWVyIiwib01ldGFNb2RlbCIsImFwcENvbXBvbmVudCIsImdldE1ldGFNb2RlbCIsIm9Gb3JtIiwiZWxlbWVudCIsInNFbnRpdHlTZXQiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyIiwic1BhdGgiLCJzdGFydHNXaXRoIiwib0Zvcm1Db250YWluZXIiLCJwYXJlbnRTZWxlY3RvciIsImJ5U2VsZWN0b3IiLCJ2aWV3IiwidW5kZWZpbmVkIiwic05hdmlnYXRpb25QYXRoIiwic0JpbmRpbmdQYXRoIiwib01ldGFNb2RlbENvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsIm9Qcm9wZXJ0eUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImJpbmRpbmdQYXRoIiwiZm5UZW1wbGF0ZUZvcm1FbGVtZW50Iiwic0ZyYWdtZW50TmFtZSIsIm9WaWV3IiwibmF2aWdhdGlvblBhdGgiLCJzT25DaGFuZ2VDdXN0b21EYXRhIiwic0Rpc3BsYXlNb2RlQ3VzdG9tRGF0YSIsIm9UaGlzIiwiSlNPTk1vZGVsIiwiX2ZsZXhJZCIsImZpZWxkU2VsZWN0b3IiLCJpZCIsIm9uQ2hhbmdlIiwiQ29tbW9uIiwicmVtb3ZlRXNjYXBlQ2hhcmFjdGVycyIsImRpc3BsYXlNb2RlIiwib1ByZXByb2Nlc3NvclNldHRpbmdzIiwiYmluZGluZ0NvbnRleHRzIiwiZW50aXR5U2V0IiwiZGF0YUZpZWxkIiwidGhpcyIsIm1vZGVscyIsIm1ldGFNb2RlbCIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50Iiwib0ZpZWxkIiwiY29udHJvbCIsImdldFByb3BlcnR5SW5mbyIsIl9pc0NvbXBsZXhUeXBlIiwibVByb3BlcnR5IiwiJFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImluZGV4T2YiLCJfc3RhcnRzV2l0aE5hdmlnYXRpb25Qcm9wZXJ0eSIsInNQcm9wZXJ0eVBhdGgiLCJhTmF2aWdhdGlvblByb3BlcnRpZXMiLCJzb21lIiwic05hdlByb3AiLCJfZW5yaWNoUHJvcGVydHkiLCJtRWxlbWVudCIsIm1Qcm9wZXJ0eUFubm90YXRpb25zIiwic0VudGl0eVR5cGUiLCJvRWxlbWVudCIsInNBZ2dyZWdhdGlvbk5hbWUiLCJtUHJvcCIsIm5hbWUiLCJlbnRpdHlUeXBlIiwibURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uIiwic0xhYmVsIiwiTGFiZWwiLCJsYWJlbCIsIm1IaWRkZW5Bbm5vdGF0aW9uIiwiaGlkZUZyb21SZXZlYWwiLCIkUGF0aCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJtRmllbGRDb250cm9sQW5ub3RhdGlvbiIsIiRFbnVtTWVtYmVyIiwic0ZpZWxkQ29udHJvbFBhdGgiLCJiTGlzdEJpbmRpbmciLCJnZXRCaW5kaW5nIiwiTGlzdEJpbmRpbmciLCJpRmllbGRDb250cm9sVmFsdWUiLCJ1bnN1cHBvcnRlZCIsIl9jb252ZXJ0TWV0YWRhdGFUb0RlbGVnYXRlRm9ybWF0IiwibU9EYXRhRW50aXR5VHlwZSIsImFQcm9wZXJ0aWVzIiwic0VsZW1lbnROYW1lIiwiJGtpbmQiLCJwdXNoIiwibVByb3BBbm5vdGF0aW9ucyIsImdldE9iamVjdCIsIl9nZXRCaW5kaW5nUGF0aCIsIm1QYXlsb2FkIiwicGF0aCIsInZCaW5kaW5nIiwiZGF0YSIsImdldFBhdGgiLCJfZ2V0T0RhdGFQcm9wZXJ0aWVzT2ZNb2RlbCIsIm9Nb2RlbCIsImdldE1vZGVsIiwibW9kZWxOYW1lIiwiaXNBIiwic0JpbmRpbmdDb250ZXh0UGF0aCIsIm9NZXRhTW9kZWxDb250ZXh0T2JqZWN0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiYWdncmVnYXRpb25OYW1lIiwicGF5bG9hZCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRm9ybURlbGVnYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGF0YUZpZWxkRGVmYXVsdCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvQXBwQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgeyBCYXNlVHJlZU1vZGlmaWVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbFByb3BlcnR5QW5ub3RhdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBDb21tb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IExpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvTGlzdEJpbmRpbmdcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxFbnRpdHlUeXBlLCBNZXRhTW9kZWxQcm9wZXJ0eSwgTWV0YU1vZGVsVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbnR5cGUgRGVsZWdhdGVQcm9wZXJ0eSA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRiaW5kaW5nUGF0aDogc3RyaW5nO1xuXHRlbnRpdHlUeXBlOiBzdHJpbmc7XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRoaWRlRnJvbVJldmVhbD86IGJvb2xlYW47XG5cdHVuc3VwcG9ydGVkPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERlbGVnYXRlID0ge1xuXHQvKipcblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZyBPYmplY3Qgd2l0aCBwYXJhbWV0ZXJzIGFzIHByb3BlcnRpZXNcblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZy5tb2RpZmllciBNb2RpZmllciB0byBoYXJtb25pemUgYWNjZXNzLCBjcmVhdGlvbiBhbmQgbWFuaXB1bGF0aW9uIHRvIGNvbnRyb2xzIGluIFhNTCBWaWV3cyBhbmQgSlMgQ29udHJvbHNcblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcuYXBwQ29tcG9uZW50XSBOZWVkZWQgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IElEIGluIGNhc2UgeW91IHByb3ZpZGUgYSBzZWxlY3RvclxuXHQgKiBAcGFyYW0gW21Qcm9wZXJ0eUJhZy52aWV3XSBYTUwgbm9kZSBvZiB0aGUgdmlldywgcmVxdWlyZWQgZm9yIFhNTCBjYXNlIHRvIGNyZWF0ZSBub2RlcyBhbmQgdG8gZmluZCBlbGVtZW50c1xuXHQgKiBAcGFyYW0gW21Qcm9wZXJ0eUJhZy5maWVsZFNlbGVjdG9yXSBTZWxlY3RvciB0byBjYWxjdWxhdGUgdGhlIElEIGZvciB0aGUgY29udHJvbCB0aGF0IGlzIGNyZWF0ZWRcblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcuZmllbGRTZWxlY3Rvci5pZF1cblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcuZmllbGRTZWxlY3Rvci5pc0xvY2FsSWRdXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcuYmluZGluZ1BhdGggUnVudGltZSBiaW5kaW5nIHBhdGggdGhlIGNvbnRyb2wgc2hvdWxkIGJlIGJvdW5kIHRvXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcucGF5bG9hZCBQYXlsb2FkIHBhcmFtZXRlciBhdHRhY2hlZCB0byB0aGUgZGVsZWdhdGUsIHVuZGVmaW5lZCBpZiBubyBwYXlsb2FkIHdhcyBhc3NpZ25lZFxuXHQgKiBAcGFyYW0gbVByb3BlcnR5QmFnLmNvbnRyb2xUeXBlIENvbnRyb2wgdHlwZSBvZiB0aGUgZWxlbWVudCB0aGUgZGVsZWdhdGUgaXMgYXR0YWNoZWQgdG9cblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZy5hZ2dyZWdhdGlvbk5hbWUgTmFtZSBvZiB0aGUgYWdncmVnYXRpb24gdGhlIGRlbGVnYXRlIHNob3VsZCBwcm92aWRlIGFkZGl0aW9uYWwgZWxlbWVudHNcblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZy5lbGVtZW50XG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcucGFyZW50U2VsZWN0b3Jcblx0ICogQHJldHVybnMgTWFwIGNvbnRhaW5pbmcgdGhlIGNvbnRyb2xzIHRvIGFkZFxuXHQgKi9cblx0Y3JlYXRlTGF5b3V0OiBhc3luYyBmdW5jdGlvbiAobVByb3BlcnR5QmFnOiB7XG5cdFx0bW9kaWZpZXI6IEJhc2VUcmVlTW9kaWZpZXI7XG5cdFx0YXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50O1xuXHRcdHZpZXc/OiBFbGVtZW50O1xuXHRcdGZpZWxkU2VsZWN0b3I/OiB7IGlkPzogc3RyaW5nOyBpc0xvY2FsSWQ/OiBib29sZWFuIH07XG5cdFx0YmluZGluZ1BhdGg6IHN0cmluZztcblx0XHRwYXlsb2FkOiBvYmplY3Q7XG5cdFx0Y29udHJvbFR5cGU6IHN0cmluZztcblx0XHRhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZztcblx0XHRlbGVtZW50OiBVSTVFbGVtZW50IHwgRWxlbWVudDtcblx0XHRwYXJlbnRTZWxlY3Rvcj86IG9iamVjdDtcblx0fSk6IFByb21pc2U8e1xuXHRcdGNvbnRyb2w6IEVsZW1lbnQgfCBVSTVFbGVtZW50IHwgRWxlbWVudFtdIHwgVUk1RWxlbWVudFtdO1xuXHR9PiB7XG5cdFx0Y29uc3Qgb01vZGlmaWVyID0gbVByb3BlcnR5QmFnLm1vZGlmaWVyLFxuXHRcdFx0b01ldGFNb2RlbCA9IG1Qcm9wZXJ0eUJhZy5hcHBDb21wb25lbnQ/LmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0b0Zvcm0gPSBtUHJvcGVydHlCYWcuZWxlbWVudDtcblxuXHRcdGxldCBzRW50aXR5U2V0ID0gYXdhaXQgRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGFXaXRoTW9kaWZpZXI8c3RyaW5nPihvRm9ybSwgXCJlbnRpdHlTZXRcIiwgb01vZGlmaWVyKTtcblx0XHRpZiAoIXNFbnRpdHlTZXQpIHtcblx0XHRcdHNFbnRpdHlTZXQgPSBhd2FpdCBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcjxzdHJpbmc+KG9Gb3JtLCBcIm5hdmlnYXRpb25QYXRoXCIsIG9Nb2RpZmllcik7XG5cdFx0fVxuXHRcdGNvbnN0IHNQYXRoID0gc0VudGl0eVNldCEuc3RhcnRzV2l0aChcIi9cIikgPyBgJHtzRW50aXR5U2V0fWAgOiBgLyR7c0VudGl0eVNldH1gO1xuXHRcdGNvbnN0IG9Gb3JtQ29udGFpbmVyID0gbVByb3BlcnR5QmFnLnBhcmVudFNlbGVjdG9yXG5cdFx0XHQ/IG1Qcm9wZXJ0eUJhZy5tb2RpZmllci5ieVNlbGVjdG9yKG1Qcm9wZXJ0eUJhZy5wYXJlbnRTZWxlY3RvciwgbVByb3BlcnR5QmFnLmFwcENvbXBvbmVudCwgbVByb3BlcnR5QmFnLnZpZXcpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBzTmF2aWdhdGlvblBhdGggPSBvRm9ybUNvbnRhaW5lclxuXHRcdFx0PyBhd2FpdCBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcjxzdHJpbmc+KG9Gb3JtQ29udGFpbmVyIGFzIFVJNUVsZW1lbnQgfCBFbGVtZW50LCBcIm5hdmlnYXRpb25QYXRoXCIsIG9Nb2RpZmllcilcblx0XHRcdDogXCJcIjtcblx0XHRjb25zdCBzQmluZGluZ1BhdGggPSBzTmF2aWdhdGlvblBhdGggPyBgJHtzUGF0aH0vJHtzTmF2aWdhdGlvblBhdGh9YCA6IHNQYXRoO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWxDb250ZXh0ID0gb01ldGFNb2RlbD8uZ2V0TWV0YUNvbnRleHQoc0JpbmRpbmdQYXRoKTtcblx0XHRjb25zdCBvUHJvcGVydHlDb250ZXh0ID0gb01ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQoYCR7c0JpbmRpbmdQYXRofS8ke21Qcm9wZXJ0eUJhZy5iaW5kaW5nUGF0aH1gKTtcblxuXHRcdGFzeW5jIGZ1bmN0aW9uIGZuVGVtcGxhdGVGb3JtRWxlbWVudChcblx0XHRcdHNGcmFnbWVudE5hbWU6IHN0cmluZyxcblx0XHRcdG9WaWV3OiBGRVZpZXcgfCB1bmRlZmluZWQsXG5cdFx0XHRuYXZpZ2F0aW9uUGF0aDogc3RyaW5nXG5cdFx0KTogUHJvbWlzZTxFbGVtZW50IHwgVUk1RWxlbWVudCB8IEVsZW1lbnRbXSB8IFVJNUVsZW1lbnRbXT4ge1xuXHRcdFx0Y29uc3Qgc09uQ2hhbmdlQ3VzdG9tRGF0YSA9IGF3YWl0IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyPHN0cmluZz4ob0Zvcm0sIFwib25DaGFuZ2VcIiwgb01vZGlmaWVyKTtcblx0XHRcdGNvbnN0IHNEaXNwbGF5TW9kZUN1c3RvbURhdGEgPSBhd2FpdCBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcjxzdHJpbmc+KG9Gb3JtLCBcImRpc3BsYXlNb2RlXCIsIG9Nb2RpZmllcik7XG5cdFx0XHRjb25zdCBvVGhpcyA9IG5ldyBKU09OTW9kZWwoe1xuXHRcdFx0XHQvLyBwcm9wZXJ0aWVzIGFuZCBldmVudHMgb2YgRmllbGQgbWFjcm9cblx0XHRcdFx0X2ZsZXhJZDogbVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3I/LmlkLFxuXHRcdFx0XHRvbkNoYW5nZTogQ29tbW9uLnJlbW92ZUVzY2FwZUNoYXJhY3RlcnMoc09uQ2hhbmdlQ3VzdG9tRGF0YSksXG5cdFx0XHRcdGRpc3BsYXlNb2RlOiBDb21tb24ucmVtb3ZlRXNjYXBlQ2hhcmFjdGVycyhzRGlzcGxheU1vZGVDdXN0b21EYXRhKSxcblx0XHRcdFx0bmF2aWdhdGlvblBhdGg6IG5hdmlnYXRpb25QYXRoXG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IHtcblx0XHRcdFx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0XHRcdFx0ZW50aXR5U2V0OiBvTWV0YU1vZGVsQ29udGV4dCxcblx0XHRcdFx0XHRkYXRhRmllbGQ6IG9Qcm9wZXJ0eUNvbnRleHQsXG5cdFx0XHRcdFx0dGhpczogb1RoaXMuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdHRoaXM6IG9UaGlzLFxuXHRcdFx0XHRcdGVudGl0eVNldDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRtZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0ZGF0YUZpZWxkOiBvTWV0YU1vZGVsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFwcENvbXBvbmVudDogbVByb3BlcnR5QmFnLmFwcENvbXBvbmVudFxuXHRcdFx0fTtcblxuXHRcdFx0cmV0dXJuIERlbGVnYXRlVXRpbC50ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudChzRnJhZ21lbnROYW1lLCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MsIHsgdmlldzogb1ZpZXcgfSwgb01vZGlmaWVyKTtcblx0XHR9XG5cblx0XHRjb25zdCBvRmllbGQgPSBhd2FpdCBmblRlbXBsYXRlRm9ybUVsZW1lbnQoXG5cdFx0XHRcInNhcC5mZS5tYWNyb3MuZm9ybS5Gb3JtRWxlbWVudEZsZXhpYmlsaXR5XCIsXG5cdFx0XHRtUHJvcGVydHlCYWcudmlldyBhcyB1bmtub3duIGFzIEZFVmlldyxcblx0XHRcdHNOYXZpZ2F0aW9uUGF0aCFcblx0XHQpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb250cm9sOiBvRmllbGRcblx0XHR9O1xuXHR9LFxuXHQvLyBnZXRQcm9wZXJ0eUluZm8gaXMgYSBwYXRjaGVkIHZlcnNpb24gb2YgT0RhdGFWNFJlYWREZWxlZ2F0ZXMgdG8gZGVsYSB3aXRoIG5hdmlnYXRpb25QYXRoXG5cdGdldFByb3BlcnR5SW5mbzogYXN5bmMgZnVuY3Rpb24gKG1Qcm9wZXJ0eUJhZzoge1xuXHRcdGVsZW1lbnQ6IENvbnRyb2w7XG5cdFx0YWdncmVnYXRpb25OYW1lOiBzdHJpbmc7XG5cdFx0cGF5bG9hZDoge1xuXHRcdFx0bW9kZWxOYW1lPzogc3RyaW5nO1xuXHRcdFx0cGF0aD86IHN0cmluZztcblx0XHR9O1xuXHR9KTogUHJvbWlzZTxEZWxlZ2F0ZVByb3BlcnR5W10+IHtcblx0XHRmdW5jdGlvbiBfaXNDb21wbGV4VHlwZShtUHJvcGVydHk6IE1ldGFNb2RlbFByb3BlcnR5KTogYm9vbGVhbiB7XG5cdFx0XHRpZiAobVByb3BlcnR5ICYmIG1Qcm9wZXJ0eS4kVHlwZSkge1xuXHRcdFx0XHRpZiAobVByb3BlcnR5LiRUeXBlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcImVkbVwiKSAhPT0gMCkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly9DaGVjayBpZiBhIGdpdmVuIHByb3BlcnR5IHBhdGggc3RhcnRzIHdpdGggYSBuYXZpZ2F0aW9uIHByb3BlcnR5LlxuXHRcdGZ1bmN0aW9uIF9zdGFydHNXaXRoTmF2aWdhdGlvblByb3BlcnR5KHNQcm9wZXJ0eVBhdGg6IHN0cmluZywgYU5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIGFOYXZpZ2F0aW9uUHJvcGVydGllcy5zb21lKGZ1bmN0aW9uIChzTmF2UHJvcCkge1xuXHRcdFx0XHRyZXR1cm4gc1Byb3BlcnR5UGF0aC5zdGFydHNXaXRoKHNOYXZQcm9wKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIF9lbnJpY2hQcm9wZXJ0eShcblx0XHRcdHNQcm9wZXJ0eVBhdGg6IHN0cmluZyxcblx0XHRcdG1FbGVtZW50OiBNZXRhTW9kZWxQcm9wZXJ0eSxcblx0XHRcdG1Qcm9wZXJ0eUFubm90YXRpb25zOiBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0c0VudGl0eVR5cGU6IHN0cmluZyxcblx0XHRcdG9FbGVtZW50OiBDb250cm9sLFxuXHRcdFx0c0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLFxuXHRcdFx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBzdHJpbmdbXVxuXHRcdCk6IERlbGVnYXRlUHJvcGVydHkge1xuXHRcdFx0Y29uc3QgbVByb3A6IERlbGVnYXRlUHJvcGVydHkgPSB7XG5cdFx0XHRcdG5hbWU6IHNQcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdGJpbmRpbmdQYXRoOiBzUHJvcGVydHlQYXRoLFxuXHRcdFx0XHRlbnRpdHlUeXBlOiBzRW50aXR5VHlwZVxuXHRcdFx0fTtcblx0XHRcdC8vIGdldCBsYWJlbCBpbmZvcm1hdGlvbiwgZWl0aGVyIHZpYSBEYXRhRmllbGREZWZhdWx0IGFubm90YXRpb24gKGlmIGV4aXN0cykgb3IgTGFiZWwgYW5ub3RhdGlvblxuXHRcdFx0Y29uc3QgbURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXG5cdFx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZERlZmF1bHRcIlxuXHRcdFx0XSBhcyBNZXRhTW9kZWxUeXBlPERhdGFGaWVsZERlZmF1bHQ+O1xuXHRcdFx0Y29uc3Qgc0xhYmVsID1cblx0XHRcdFx0KG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbiAmJiBtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24uTGFiZWwpIHx8XG5cdFx0XHRcdG1Qcm9wZXJ0eUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiXTtcblx0XHRcdG1Qcm9wLmxhYmVsID0gKHNMYWJlbCBhcyBzdHJpbmcpIHx8IFwiW0xBQkVMX01JU1NJTkc6IFwiICsgc1Byb3BlcnR5UGF0aCArIFwiXVwiO1xuXHRcdFx0Ly8gZXZhbHVhdGUgSGlkZGVuIGFubm90YXRpb25cblx0XHRcdGNvbnN0IG1IaWRkZW5Bbm5vdGF0aW9uID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGlkZGVuXCJdO1xuXHRcdFx0bVByb3AuaGlkZUZyb21SZXZlYWwgPSBtSGlkZGVuQW5ub3RhdGlvbiBhcyBib29sZWFuO1xuXHRcdFx0aWYgKG1IaWRkZW5Bbm5vdGF0aW9uICYmIChtSGlkZGVuQW5ub3RhdGlvbiBhcyB7ICRQYXRoPzogc3RyaW5nIH0pLiRQYXRoKSB7XG5cdFx0XHRcdG1Qcm9wLmhpZGVGcm9tUmV2ZWFsID0gb0VsZW1lbnQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UHJvcGVydHkoKG1IaWRkZW5Bbm5vdGF0aW9uIGFzIHsgJFBhdGg/OiBzdHJpbmcgfSkuJFBhdGghKTtcblx0XHRcdH1cblx0XHRcdC8vIGV2YWx1YXRlIEFkYXB0YXRpb25IaWRkZW4gYW5ub3RhdGlvblxuXHRcdFx0aWYgKCFtUHJvcC5oaWRlRnJvbVJldmVhbCkge1xuXHRcdFx0XHRtUHJvcC5oaWRlRnJvbVJldmVhbCA9IG1Qcm9wZXJ0eUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkFkYXB0YXRpb25IaWRkZW5cIl0gYXMgYm9vbGVhbjtcblx0XHRcdH1cblx0XHRcdC8vIGV2YWx1YXRlIEZpZWxkQ29udHJvbCBhbm5vdGF0aW9uXG5cdFx0XHRsZXQgbUZpZWxkQ29udHJvbEFubm90YXRpb247XG5cdFx0XHRpZiAoIW1Qcm9wLmhpZGVGcm9tUmV2ZWFsKSB7XG5cdFx0XHRcdG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFwiXTtcblx0XHRcdFx0aWYgKG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uKSB7XG5cdFx0XHRcdFx0bVByb3AuaGlkZUZyb21SZXZlYWwgPVxuXHRcdFx0XHRcdFx0KG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uIGFzIHsgJEVudW1NZW1iZXI/OiBzdHJpbmcgfSkuJEVudW1NZW1iZXIgPT09XG5cdFx0XHRcdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5GaWVsZENvbnRyb2xUeXBlL0hpZGRlblwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBAcnVudGltZSBoaWRkZW4gYnkgZmllbGQgY29udHJvbCB2YWx1ZSA9IDBcblx0XHRcdG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFwiXTtcblx0XHRcdGNvbnN0IHNGaWVsZENvbnRyb2xQYXRoID0gbUZpZWxkQ29udHJvbEFubm90YXRpb24gJiYgKG1GaWVsZENvbnRyb2xBbm5vdGF0aW9uIGFzIHsgJFBhdGg/OiBzdHJpbmcgfSkuJFBhdGg7XG5cdFx0XHRpZiAoc0ZpZWxkQ29udHJvbFBhdGggJiYgIW1Qcm9wLmhpZGVGcm9tUmV2ZWFsKSB7XG5cdFx0XHRcdC8vIGlmIHRoZSBiaW5kaW5nIGlzIGEgbGlzdCBiaW5kaW5nLCBza2lwIHRoZSBjaGVjayBmb3IgZmllbGQgY29udHJvbFxuXHRcdFx0XHRjb25zdCBiTGlzdEJpbmRpbmcgPSBvRWxlbWVudC5nZXRCaW5kaW5nKHNBZ2dyZWdhdGlvbk5hbWUpIGluc3RhbmNlb2YgTGlzdEJpbmRpbmc7XG5cdFx0XHRcdGlmICghYkxpc3RCaW5kaW5nKSB7XG5cdFx0XHRcdFx0Y29uc3QgaUZpZWxkQ29udHJvbFZhbHVlID0gb0VsZW1lbnQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UHJvcGVydHkoc0ZpZWxkQ29udHJvbFBhdGgpO1xuXHRcdFx0XHRcdG1Qcm9wLmhpZGVGcm9tUmV2ZWFsID0gaUZpZWxkQ29udHJvbFZhbHVlID09PSAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBubyBzdXBwb3J0IGZvciBEYXRhRmllbGRGb3IvV2l0aEFjdGlvbiBhbmQgRGF0YUZpZWxkRm9yL1dpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb24gd2l0aGluIERhdGFGaWVsZERlZmF1bHQgYW5ub3RhdGlvblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24gJiZcblx0XHRcdFx0KG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIiB8fFxuXHRcdFx0XHRcdG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIiB8fFxuXHRcdFx0XHRcdG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoQWN0aW9uXCIgfHxcblx0XHRcdFx0XHRtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24uJFR5cGUgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdG1Qcm9wLnVuc3VwcG9ydGVkID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdC8vIG5vIHN1cHBvcnQgZm9yIG5hdmlnYXRpb24gcHJvcGVydGllcyBhbmQgY29tcGxleCBwcm9wZXJ0aWVzXG5cdFx0XHRpZiAoX3N0YXJ0c1dpdGhOYXZpZ2F0aW9uUHJvcGVydHkoc1Byb3BlcnR5UGF0aCwgYU5hdmlnYXRpb25Qcm9wZXJ0aWVzKSB8fCBfaXNDb21wbGV4VHlwZShtRWxlbWVudCkpIHtcblx0XHRcdFx0bVByb3AudW5zdXBwb3J0ZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1Qcm9wO1xuXHRcdH1cblxuXHRcdC8vIENvbnZlcnQgbWV0YWRhdGEgZm9ybWF0IHRvIGRlbGVnYXRlIGZvcm1hdC5cblx0XHRmdW5jdGlvbiBfY29udmVydE1ldGFkYXRhVG9EZWxlZ2F0ZUZvcm1hdChcblx0XHRcdG1PRGF0YUVudGl0eVR5cGU6IE1ldGFNb2RlbEVudGl0eVR5cGUsXG5cdFx0XHRzRW50aXR5VHlwZTogc3RyaW5nLFxuXHRcdFx0b01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdFx0XHRvRWxlbWVudDogQ29udHJvbCxcblx0XHRcdHNBZ2dyZWdhdGlvbk5hbWU6IHN0cmluZ1xuXHRcdCk6IERlbGVnYXRlUHJvcGVydHlbXSB7XG5cdFx0XHRjb25zdCBhUHJvcGVydGllcyA9IFtdO1xuXHRcdFx0bGV0IHNFbGVtZW50TmFtZSA9IFwiXCI7XG5cdFx0XHRjb25zdCBhTmF2aWdhdGlvblByb3BlcnRpZXMgPSBbXTtcblx0XHRcdGxldCBtRWxlbWVudDtcblx0XHRcdGZvciAoc0VsZW1lbnROYW1lIGluIG1PRGF0YUVudGl0eVR5cGUpIHtcblx0XHRcdFx0bUVsZW1lbnQgPSBtT0RhdGFFbnRpdHlUeXBlW3NFbGVtZW50TmFtZV07XG5cdFx0XHRcdGlmIChtRWxlbWVudC4ka2luZCA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlcIikge1xuXHRcdFx0XHRcdGFOYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKHNFbGVtZW50TmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAoc0VsZW1lbnROYW1lIGluIG1PRGF0YUVudGl0eVR5cGUpIHtcblx0XHRcdFx0bUVsZW1lbnQgPSBtT0RhdGFFbnRpdHlUeXBlW3NFbGVtZW50TmFtZV07XG5cdFx0XHRcdGlmIChtRWxlbWVudC4ka2luZCA9PT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdFx0Y29uc3QgbVByb3BBbm5vdGF0aW9ucyA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KFwiL1wiICsgc0VudGl0eVR5cGUgKyBcIi9cIiArIHNFbGVtZW50TmFtZSArIFwiQFwiKTtcblx0XHRcdFx0XHRjb25zdCBtUHJvcCA9IF9lbnJpY2hQcm9wZXJ0eShcblx0XHRcdFx0XHRcdHNFbGVtZW50TmFtZSxcblx0XHRcdFx0XHRcdG1FbGVtZW50IGFzIE1ldGFNb2RlbFByb3BlcnR5LFxuXHRcdFx0XHRcdFx0bVByb3BBbm5vdGF0aW9ucyxcblx0XHRcdFx0XHRcdHNFbnRpdHlUeXBlLFxuXHRcdFx0XHRcdFx0b0VsZW1lbnQsXG5cdFx0XHRcdFx0XHRzQWdncmVnYXRpb25OYW1lLFxuXHRcdFx0XHRcdFx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRhUHJvcGVydGllcy5wdXNoKG1Qcm9wKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFQcm9wZXJ0aWVzO1xuXHRcdH1cblxuXHRcdC8vR2V0IGJpbmRpbmcgcGF0aCBlaXRoZXIgZnJvbSBwYXlsb2FkIChpZiBhdmFpbGFibGUpIG9yIHRoZSBlbGVtZW50J3MgYmluZGluZyBjb250ZXh0LlxuXHRcdGZ1bmN0aW9uIF9nZXRCaW5kaW5nUGF0aChcblx0XHRcdG9FbGVtZW50OiBDb250cm9sLFxuXHRcdFx0bVBheWxvYWQ6IHtcblx0XHRcdFx0cGF0aD86IHN0cmluZztcblx0XHRcdH1cblx0XHQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdFx0aWYgKG1QYXlsb2FkLnBhdGgpIHtcblx0XHRcdFx0cmV0dXJuIG1QYXlsb2FkLnBhdGg7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCB2QmluZGluZyA9IG9FbGVtZW50LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRpZiAodkJpbmRpbmcpIHtcblx0XHRcdFx0aWYgKG9FbGVtZW50LmRhdGEoXCJuYXZpZ2F0aW9uUGF0aFwiKSkge1xuXHRcdFx0XHRcdHJldHVybiB2QmluZGluZy5nZXRQYXRoKCkgKyBcIi9cIiArIG9FbGVtZW50LmRhdGEoXCJuYXZpZ2F0aW9uUGF0aFwiKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdkJpbmRpbmcuZ2V0UGF0aCgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vR2V0IGFsbCBwcm9wZXJ0aWVzIG9mIHRoZSBlbGVtZW50J3MgbW9kZWwuXG5cdFx0YXN5bmMgZnVuY3Rpb24gX2dldE9EYXRhUHJvcGVydGllc09mTW9kZWwoXG5cdFx0XHRvRWxlbWVudDogQ29udHJvbCxcblx0XHRcdHNBZ2dyZWdhdGlvbk5hbWU6IHN0cmluZyxcblx0XHRcdG1QYXlsb2FkOiB7XG5cdFx0XHRcdG1vZGVsTmFtZT86IHN0cmluZztcblx0XHRcdFx0cGF0aD86IHN0cmluZztcblx0XHRcdH1cblx0XHQpOiBQcm9taXNlPERlbGVnYXRlUHJvcGVydHlbXT4ge1xuXHRcdFx0Y29uc3Qgb01vZGVsID0gb0VsZW1lbnQuZ2V0TW9kZWwobVBheWxvYWQubW9kZWxOYW1lKTtcblx0XHRcdGlmIChvTW9kZWwpIHtcblx0XHRcdFx0aWYgKG9Nb2RlbC5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNb2RlbFwiKSkge1xuXHRcdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCkgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0XHRcdFx0Y29uc3Qgc0JpbmRpbmdDb250ZXh0UGF0aCA9IF9nZXRCaW5kaW5nUGF0aChvRWxlbWVudCwgbVBheWxvYWQpO1xuXHRcdFx0XHRcdGlmIChzQmluZGluZ0NvbnRleHRQYXRoKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsQ29udGV4dCA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQoc0JpbmRpbmdDb250ZXh0UGF0aCk7XG5cdFx0XHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsQ29udGV4dE9iamVjdCA9IG9NZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdCgpO1xuXHRcdFx0XHRcdFx0Y29uc3QgbU9EYXRhRW50aXR5VHlwZSA9IG9NZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChvTWV0YU1vZGVsQ29udGV4dE9iamVjdC4kVHlwZSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gX2NvbnZlcnRNZXRhZGF0YVRvRGVsZWdhdGVGb3JtYXQoXG5cdFx0XHRcdFx0XHRcdG1PRGF0YUVudGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRcdG9NZXRhTW9kZWxDb250ZXh0T2JqZWN0LiRUeXBlLFxuXHRcdFx0XHRcdFx0XHRvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdFx0XHRvRWxlbWVudCxcblx0XHRcdFx0XHRcdFx0c0FnZ3JlZ2F0aW9uTmFtZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuXHRcdH1cblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBfZ2V0T0RhdGFQcm9wZXJ0aWVzT2ZNb2RlbChtUHJvcGVydHlCYWcuZWxlbWVudCwgbVByb3BlcnR5QmFnLmFnZ3JlZ2F0aW9uTmFtZSwgbVByb3BlcnR5QmFnLnBheWxvYWQpO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztFQXNCQSxNQUFNQSxRQUFRLEdBQUc7SUFDaEI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsWUFBWSxFQUFFLGVBQUFBLENBQWdCQyxZQVc3QixFQUVFO01BQ0YsTUFBTUMsU0FBUyxHQUFHRCxZQUFZLENBQUNFLFFBQVE7UUFDdENDLFVBQVUsR0FBR0gsWUFBWSxDQUFDSSxZQUFZLEVBQUVDLFlBQVksQ0FB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
|
|
219
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWxlZ2F0ZSIsImNyZWF0ZUxheW91dCIsIm1Qcm9wZXJ0eUJhZyIsIm9Nb2RpZmllciIsIm1vZGlmaWVyIiwib01ldGFNb2RlbCIsImFwcENvbXBvbmVudCIsImdldE1ldGFNb2RlbCIsIm9Gb3JtIiwiZWxlbWVudCIsInRhcmdldHMiLCJmaWVsZHNJblZpZXciLCJ2aWV3IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyIsImZpZWxkIiwiQXJyYXkiLCJmcm9tIiwiZ2V0QXR0cmlidXRlIiwiZmllbGRTZWxlY3RvciIsImlkIiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIiwiYnlJZCIsInNFbnRpdHlTZXQiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyIiwic1BhdGgiLCJzdGFydHNXaXRoIiwib0Zvcm1Db250YWluZXIiLCJwYXJlbnRTZWxlY3RvciIsImJ5U2VsZWN0b3IiLCJ1bmRlZmluZWQiLCJzTmF2aWdhdGlvblBhdGgiLCJzQmluZGluZ1BhdGgiLCJvTWV0YU1vZGVsQ29udGV4dCIsImdldE1ldGFDb250ZXh0Iiwib1Byb3BlcnR5Q29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiYmluZGluZ1BhdGgiLCJmblRlbXBsYXRlRm9ybUVsZW1lbnQiLCJzRnJhZ21lbnROYW1lIiwib1ZpZXciLCJuYXZpZ2F0aW9uUGF0aCIsInNPbkNoYW5nZUN1c3RvbURhdGEiLCJzRGlzcGxheU1vZGVDdXN0b21EYXRhIiwib1RoaXMiLCJKU09OTW9kZWwiLCJfZmxleElkIiwib25DaGFuZ2UiLCJDb21tb24iLCJyZW1vdmVFc2NhcGVDaGFyYWN0ZXJzIiwiZGlzcGxheU1vZGUiLCJvUHJlcHJvY2Vzc29yU2V0dGluZ3MiLCJiaW5kaW5nQ29udGV4dHMiLCJlbnRpdHlTZXQiLCJkYXRhRmllbGQiLCJ0aGlzIiwibW9kZWxzIiwibWV0YU1vZGVsIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJvRmllbGQiLCJjb250cm9sIiwiZ2V0UHJvcGVydHlJbmZvIiwiX2lzQ29tcGxleFR5cGUiLCJtUHJvcGVydHkiLCIkVHlwZSIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsIl9zdGFydHNXaXRoTmF2aWdhdGlvblByb3BlcnR5Iiwic1Byb3BlcnR5UGF0aCIsImFOYXZpZ2F0aW9uUHJvcGVydGllcyIsInNvbWUiLCJzTmF2UHJvcCIsIl9lbnJpY2hQcm9wZXJ0eSIsIm1FbGVtZW50IiwibVByb3BlcnR5QW5ub3RhdGlvbnMiLCJzRW50aXR5VHlwZSIsIm9FbGVtZW50Iiwic0FnZ3JlZ2F0aW9uTmFtZSIsIm1Qcm9wIiwibmFtZSIsImVudGl0eVR5cGUiLCJtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24iLCJzTGFiZWwiLCJMYWJlbCIsImxhYmVsIiwibUhpZGRlbkFubm90YXRpb24iLCJoaWRlRnJvbVJldmVhbCIsIiRQYXRoIiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm1GaWVsZENvbnRyb2xBbm5vdGF0aW9uIiwiJEVudW1NZW1iZXIiLCJzRmllbGRDb250cm9sUGF0aCIsImJMaXN0QmluZGluZyIsImdldEJpbmRpbmciLCJMaXN0QmluZGluZyIsImlGaWVsZENvbnRyb2xWYWx1ZSIsInVuc3VwcG9ydGVkIiwiX2NvbnZlcnRNZXRhZGF0YVRvRGVsZWdhdGVGb3JtYXQiLCJtT0RhdGFFbnRpdHlUeXBlIiwiYVByb3BlcnRpZXMiLCJzRWxlbWVudE5hbWUiLCIka2luZCIsInB1c2giLCJtUHJvcEFubm90YXRpb25zIiwiZ2V0T2JqZWN0IiwiX2dldEJpbmRpbmdQYXRoIiwibVBheWxvYWQiLCJwYXRoIiwidkJpbmRpbmciLCJkYXRhIiwiZ2V0UGF0aCIsIl9nZXRPRGF0YVByb3BlcnRpZXNPZk1vZGVsIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJtb2RlbE5hbWUiLCJpc0EiLCJzQmluZGluZ0NvbnRleHRQYXRoIiwib01ldGFNb2RlbENvbnRleHRPYmplY3QiLCJyZXNvbHZlIiwidGhlbiIsImFnZ3JlZ2F0aW9uTmFtZSIsInBheWxvYWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZvcm1EZWxlZ2F0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERhdGFGaWVsZERlZmF1bHQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBGRVZpZXcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHsgQmFzZVRyZWVNb2RpZmllciB9IGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgQ29tbW9uIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IERlbGVnYXRlVXRpbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIFhNTFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9YTUxWaWV3XCI7XG5pbXBvcnQgTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9MaXN0QmluZGluZ1wiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IE1ldGFNb2RlbEVudGl0eVR5cGUsIE1ldGFNb2RlbFByb3BlcnR5LCBNZXRhTW9kZWxUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuXG50eXBlIERlbGVnYXRlUHJvcGVydHkgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0YmluZGluZ1BhdGg6IHN0cmluZztcblx0ZW50aXR5VHlwZTogc3RyaW5nO1xuXHRsYWJlbD86IHN0cmluZztcblx0aGlkZUZyb21SZXZlYWw/OiBib29sZWFuO1xuXHR1bnN1cHBvcnRlZD86IGJvb2xlYW47XG59O1xuXG5jb25zdCBEZWxlZ2F0ZSA9IHtcblx0LyoqXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcgT2JqZWN0IHdpdGggcGFyYW1ldGVycyBhcyBwcm9wZXJ0aWVzXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcubW9kaWZpZXIgTW9kaWZpZXIgdG8gaGFybW9uaXplIGFjY2VzcywgY3JlYXRpb24gYW5kIG1hbmlwdWxhdGlvbiB0byBjb250cm9scyBpbiBYTUwgVmlld3MgYW5kIEpTIENvbnRyb2xzXG5cdCAqIEBwYXJhbSBbbVByb3BlcnR5QmFnLmFwcENvbXBvbmVudF0gTmVlZGVkIHRvIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCBJRCBpbiBjYXNlIHlvdSBwcm92aWRlIGEgc2VsZWN0b3Jcblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcudmlld10gWE1MIG5vZGUgb2YgdGhlIHZpZXcsIHJlcXVpcmVkIGZvciBYTUwgY2FzZSB0byBjcmVhdGUgbm9kZXMgYW5kIHRvIGZpbmQgZWxlbWVudHNcblx0ICogQHBhcmFtIFttUHJvcGVydHlCYWcuZmllbGRTZWxlY3Rvcl0gU2VsZWN0b3IgdG8gY2FsY3VsYXRlIHRoZSBJRCBmb3IgdGhlIGNvbnRyb2wgdGhhdCBpcyBjcmVhdGVkXG5cdCAqIEBwYXJhbSBbbVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3IuaWRdXG5cdCAqIEBwYXJhbSBbbVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3IuaXNMb2NhbElkXVxuXHQgKiBAcGFyYW0gbVByb3BlcnR5QmFnLmJpbmRpbmdQYXRoIFJ1bnRpbWUgYmluZGluZyBwYXRoIHRoZSBjb250cm9sIHNob3VsZCBiZSBib3VuZCB0b1xuXHQgKiBAcGFyYW0gbVByb3BlcnR5QmFnLnBheWxvYWQgUGF5bG9hZCBwYXJhbWV0ZXIgYXR0YWNoZWQgdG8gdGhlIGRlbGVnYXRlLCB1bmRlZmluZWQgaWYgbm8gcGF5bG9hZCB3YXMgYXNzaWduZWRcblx0ICogQHBhcmFtIG1Qcm9wZXJ0eUJhZy5jb250cm9sVHlwZSBDb250cm9sIHR5cGUgb2YgdGhlIGVsZW1lbnQgdGhlIGRlbGVnYXRlIGlzIGF0dGFjaGVkIHRvXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcuYWdncmVnYXRpb25OYW1lIE5hbWUgb2YgdGhlIGFnZ3JlZ2F0aW9uIHRoZSBkZWxlZ2F0ZSBzaG91bGQgcHJvdmlkZSBhZGRpdGlvbmFsIGVsZW1lbnRzXG5cdCAqIEBwYXJhbSBtUHJvcGVydHlCYWcuZWxlbWVudFxuXHQgKiBAcGFyYW0gbVByb3BlcnR5QmFnLnBhcmVudFNlbGVjdG9yXG5cdCAqIEByZXR1cm5zIE1hcCBjb250YWluaW5nIHRoZSBjb250cm9scyB0byBhZGRcblx0ICovXG5cdGNyZWF0ZUxheW91dDogYXN5bmMgZnVuY3Rpb24gKG1Qcm9wZXJ0eUJhZzoge1xuXHRcdG1vZGlmaWVyOiBCYXNlVHJlZU1vZGlmaWVyO1xuXHRcdGFwcENvbXBvbmVudD86IEFwcENvbXBvbmVudDtcblx0XHR2aWV3PzogRWxlbWVudDtcblx0XHRmaWVsZFNlbGVjdG9yPzogeyBpZD86IHN0cmluZzsgaXNMb2NhbElkPzogYm9vbGVhbiB9O1xuXHRcdGJpbmRpbmdQYXRoOiBzdHJpbmc7XG5cdFx0cGF5bG9hZDogb2JqZWN0O1xuXHRcdGNvbnRyb2xUeXBlOiBzdHJpbmc7XG5cdFx0YWdncmVnYXRpb25OYW1lOiBzdHJpbmc7XG5cdFx0ZWxlbWVudDogVUk1RWxlbWVudCB8IEVsZW1lbnQ7XG5cdFx0cGFyZW50U2VsZWN0b3I/OiBvYmplY3Q7XG5cdH0pOiBQcm9taXNlPHtcblx0XHRjb250cm9sOiBFbGVtZW50IHwgVUk1RWxlbWVudCB8IEVsZW1lbnRbXSB8IFVJNUVsZW1lbnRbXTtcblx0fT4ge1xuXHRcdGNvbnN0IG9Nb2RpZmllciA9IG1Qcm9wZXJ0eUJhZy5tb2RpZmllcixcblx0XHRcdG9NZXRhTW9kZWwgPSBtUHJvcGVydHlCYWcuYXBwQ29tcG9uZW50Py5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdG9Gb3JtID0gbVByb3BlcnR5QmFnLmVsZW1lbnQ7XG5cblx0XHQvLyBDaGVjayBmb3IgZXhpc3RpbmcgZmllbGRzIHdpdGggdGhlIHNhbWUgX2ZsZXhJZFxuXHRcdGlmIChvTW9kaWZpZXIudGFyZ2V0cyA9PT0gXCJ4bWxUcmVlXCIpIHtcblx0XHRcdC8vIGF0IHByZXByb2Nlc3NpbmcgdGltZVxuXHRcdFx0Y29uc3QgZmllbGRzSW5WaWV3ID0gbVByb3BlcnR5QmFnLnZpZXc/LmdldEVsZW1lbnRzQnlUYWdOYW1lTlMoXCJzYXAuZmUubWFjcm9zXCIsIFwiRmllbGRcIik7XG5cdFx0XHRpZiAoZmllbGRzSW5WaWV3KSB7XG5cdFx0XHRcdGZvciAoY29uc3QgZmllbGQgb2YgQXJyYXkuZnJvbShmaWVsZHNJblZpZXcpKSB7XG5cdFx0XHRcdFx0aWYgKGZpZWxkLmdldEF0dHJpYnV0ZShcIl9mbGV4SWRcIikgPT09IG1Qcm9wZXJ0eUJhZy5maWVsZFNlbGVjdG9yPy5pZCkge1xuXHRcdFx0XHRcdFx0Ly8gRmllbGQgd2l0aCBzYW1lIF9mbGV4SWQgYWxyZWFkeSBleGlzdHMsIHJlamVjdCBQcm9taXNlIHRvIGF2b2lkIGR1cGxpY2F0ZXNcblx0XHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJGb3JtRGVsZWdhdGUuY3JlYXRlTGF5b3V0OiBmaWVsZCBhbHJlYWR5IGV4aXN0c1wiKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChvTW9kaWZpZXIudGFyZ2V0cyA9PT0gXCJqc0NvbnRyb2xUcmVlXCIpIHtcblx0XHRcdC8vIGF0IHJ1bnRpbWVcblx0XHRcdGlmIChcblx0XHRcdFx0bVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3I/LmlkICYmXG5cdFx0XHRcdG1Qcm9wZXJ0eUJhZy52aWV3ICYmXG5cdFx0XHRcdChtUHJvcGVydHlCYWcudmlldyBhcyB1bmtub3duIGFzIFhNTFZpZXcpLmJ5SWQobVByb3BlcnR5QmFnLmZpZWxkU2VsZWN0b3I/LmlkKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJGb3JtRGVsZWdhdGUuY3JlYXRlTGF5b3V0OiBmaWVsZCBhbHJlYWR5IGV4aXN0c1wiKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IHNFbnRpdHlTZXQgPSBhd2FpdCBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcjxzdHJpbmc+KG9Gb3JtLCBcImVudGl0eVNldFwiLCBvTW9kaWZpZXIpO1xuXHRcdGlmICghc0VudGl0eVNldCkge1xuXHRcdFx0c0VudGl0eVNldCA9IGF3YWl0IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyPHN0cmluZz4ob0Zvcm0sIFwibmF2aWdhdGlvblBhdGhcIiwgb01vZGlmaWVyKTtcblx0XHR9XG5cdFx0Y29uc3Qgc1BhdGggPSBzRW50aXR5U2V0IS5zdGFydHNXaXRoKFwiL1wiKSA/IGAke3NFbnRpdHlTZXR9YCA6IGAvJHtzRW50aXR5U2V0fWA7XG5cdFx0Y29uc3Qgb0Zvcm1Db250YWluZXIgPSBtUHJvcGVydHlCYWcucGFyZW50U2VsZWN0b3Jcblx0XHRcdD8gbVByb3BlcnR5QmFnLm1vZGlmaWVyLmJ5U2VsZWN0b3IobVByb3BlcnR5QmFnLnBhcmVudFNlbGVjdG9yLCBtUHJvcGVydHlCYWcuYXBwQ29tcG9uZW50LCBtUHJvcGVydHlCYWcudmlldylcblx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IHNOYXZpZ2F0aW9uUGF0aCA9IG9Gb3JtQ29udGFpbmVyXG5cdFx0XHQ/IGF3YWl0IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyPHN0cmluZz4ob0Zvcm1Db250YWluZXIgYXMgVUk1RWxlbWVudCB8IEVsZW1lbnQsIFwibmF2aWdhdGlvblBhdGhcIiwgb01vZGlmaWVyKVxuXHRcdFx0OiBcIlwiO1xuXHRcdGNvbnN0IHNCaW5kaW5nUGF0aCA9IHNOYXZpZ2F0aW9uUGF0aCA/IGAke3NQYXRofS8ke3NOYXZpZ2F0aW9uUGF0aH1gIDogc1BhdGg7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbENvbnRleHQgPSBvTWV0YU1vZGVsPy5nZXRNZXRhQ29udGV4dChzQmluZGluZ1BhdGgpO1xuXHRcdGNvbnN0IG9Qcm9wZXJ0eUNvbnRleHQgPSBvTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChgJHtzQmluZGluZ1BhdGh9LyR7bVByb3BlcnR5QmFnLmJpbmRpbmdQYXRofWApO1xuXG5cdFx0YXN5bmMgZnVuY3Rpb24gZm5UZW1wbGF0ZUZvcm1FbGVtZW50KFxuXHRcdFx0c0ZyYWdtZW50TmFtZTogc3RyaW5nLFxuXHRcdFx0b1ZpZXc6IEZFVmlldyB8IHVuZGVmaW5lZCxcblx0XHRcdG5hdmlnYXRpb25QYXRoOiBzdHJpbmdcblx0XHQpOiBQcm9taXNlPEVsZW1lbnQgfCBVSTVFbGVtZW50IHwgRWxlbWVudFtdIHwgVUk1RWxlbWVudFtdPiB7XG5cdFx0XHRjb25zdCBzT25DaGFuZ2VDdXN0b21EYXRhID0gYXdhaXQgRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGFXaXRoTW9kaWZpZXI8c3RyaW5nPihvRm9ybSwgXCJvbkNoYW5nZVwiLCBvTW9kaWZpZXIpO1xuXHRcdFx0Y29uc3Qgc0Rpc3BsYXlNb2RlQ3VzdG9tRGF0YSA9IGF3YWl0IERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyPHN0cmluZz4ob0Zvcm0sIFwiZGlzcGxheU1vZGVcIiwgb01vZGlmaWVyKTtcblx0XHRcdGNvbnN0IG9UaGlzID0gbmV3IEpTT05Nb2RlbCh7XG5cdFx0XHRcdC8vIHByb3BlcnRpZXMgYW5kIGV2ZW50cyBvZiBGaWVsZCBtYWNyb1xuXHRcdFx0XHRfZmxleElkOiBtUHJvcGVydHlCYWcuZmllbGRTZWxlY3Rvcj8uaWQsXG5cdFx0XHRcdG9uQ2hhbmdlOiBDb21tb24ucmVtb3ZlRXNjYXBlQ2hhcmFjdGVycyhzT25DaGFuZ2VDdXN0b21EYXRhKSxcblx0XHRcdFx0ZGlzcGxheU1vZGU6IENvbW1vbi5yZW1vdmVFc2NhcGVDaGFyYWN0ZXJzKHNEaXNwbGF5TW9kZUN1c3RvbURhdGEpLFxuXHRcdFx0XHRuYXZpZ2F0aW9uUGF0aDogbmF2aWdhdGlvblBhdGhcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3Qgb1ByZXByb2Nlc3NvclNldHRpbmdzID0ge1xuXHRcdFx0XHRiaW5kaW5nQ29udGV4dHM6IHtcblx0XHRcdFx0XHRlbnRpdHlTZXQ6IG9NZXRhTW9kZWxDb250ZXh0LFxuXHRcdFx0XHRcdGRhdGFGaWVsZDogb1Byb3BlcnR5Q29udGV4dCxcblx0XHRcdFx0XHR0aGlzOiBvVGhpcy5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIilcblx0XHRcdFx0fSxcblx0XHRcdFx0bW9kZWxzOiB7XG5cdFx0XHRcdFx0dGhpczogb1RoaXMsXG5cdFx0XHRcdFx0ZW50aXR5U2V0OiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdFx0XHRkYXRhRmllbGQ6IG9NZXRhTW9kZWxcblx0XHRcdFx0fSxcblx0XHRcdFx0YXBwQ29tcG9uZW50OiBtUHJvcGVydHlCYWcuYXBwQ29tcG9uZW50XG5cdFx0XHR9O1xuXG5cdFx0XHRyZXR1cm4gRGVsZWdhdGVVdGlsLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KHNGcmFnbWVudE5hbWUsIG9QcmVwcm9jZXNzb3JTZXR0aW5ncywgeyB2aWV3OiBvVmlldyB9LCBvTW9kaWZpZXIpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9GaWVsZCA9IGF3YWl0IGZuVGVtcGxhdGVGb3JtRWxlbWVudChcblx0XHRcdFwic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1FbGVtZW50RmxleGliaWxpdHlcIixcblx0XHRcdG1Qcm9wZXJ0eUJhZy52aWV3IGFzIHVua25vd24gYXMgRkVWaWV3LFxuXHRcdFx0c05hdmlnYXRpb25QYXRoIVxuXHRcdCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvbnRyb2w6IG9GaWVsZFxuXHRcdH07XG5cdH0sXG5cdC8vIGdldFByb3BlcnR5SW5mbyBpcyBhIHBhdGNoZWQgdmVyc2lvbiBvZiBPRGF0YVY0UmVhZERlbGVnYXRlcyB0byBkZWxhIHdpdGggbmF2aWdhdGlvblBhdGhcblx0Z2V0UHJvcGVydHlJbmZvOiBhc3luYyBmdW5jdGlvbiAobVByb3BlcnR5QmFnOiB7XG5cdFx0ZWxlbWVudDogQ29udHJvbDtcblx0XHRhZ2dyZWdhdGlvbk5hbWU6IHN0cmluZztcblx0XHRwYXlsb2FkOiB7XG5cdFx0XHRtb2RlbE5hbWU/OiBzdHJpbmc7XG5cdFx0XHRwYXRoPzogc3RyaW5nO1xuXHRcdH07XG5cdH0pOiBQcm9taXNlPERlbGVnYXRlUHJvcGVydHlbXT4ge1xuXHRcdGZ1bmN0aW9uIF9pc0NvbXBsZXhUeXBlKG1Qcm9wZXJ0eTogTWV0YU1vZGVsUHJvcGVydHkpOiBib29sZWFuIHtcblx0XHRcdGlmIChtUHJvcGVydHkgJiYgbVByb3BlcnR5LiRUeXBlKSB7XG5cdFx0XHRcdGlmIChtUHJvcGVydHkuJFR5cGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiZWRtXCIpICE9PSAwKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvL0NoZWNrIGlmIGEgZ2l2ZW4gcHJvcGVydHkgcGF0aCBzdGFydHMgd2l0aCBhIG5hdmlnYXRpb24gcHJvcGVydHkuXG5cdFx0ZnVuY3Rpb24gX3N0YXJ0c1dpdGhOYXZpZ2F0aW9uUHJvcGVydHkoc1Byb3BlcnR5UGF0aDogc3RyaW5nLCBhTmF2aWdhdGlvblByb3BlcnRpZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gYU5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNvbWUoZnVuY3Rpb24gKHNOYXZQcm9wKSB7XG5cdFx0XHRcdHJldHVybiBzUHJvcGVydHlQYXRoLnN0YXJ0c1dpdGgoc05hdlByb3ApO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gX2VucmljaFByb3BlcnR5KFxuXHRcdFx0c1Byb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdFx0bUVsZW1lbnQ6IE1ldGFNb2RlbFByb3BlcnR5LFxuXHRcdFx0bVByb3BlcnR5QW5ub3RhdGlvbnM6IE1ldGFNb2RlbFByb3BlcnR5QW5ub3RhdGlvbnMsXG5cdFx0XHRzRW50aXR5VHlwZTogc3RyaW5nLFxuXHRcdFx0b0VsZW1lbnQ6IENvbnRyb2wsXG5cdFx0XHRzQWdncmVnYXRpb25OYW1lOiBzdHJpbmcsXG5cdFx0XHRhTmF2aWdhdGlvblByb3BlcnRpZXM6IHN0cmluZ1tdXG5cdFx0KTogRGVsZWdhdGVQcm9wZXJ0eSB7XG5cdFx0XHRjb25zdCBtUHJvcDogRGVsZWdhdGVQcm9wZXJ0eSA9IHtcblx0XHRcdFx0bmFtZTogc1Byb3BlcnR5UGF0aCxcblx0XHRcdFx0YmluZGluZ1BhdGg6IHNQcm9wZXJ0eVBhdGgsXG5cdFx0XHRcdGVudGl0eVR5cGU6IHNFbnRpdHlUeXBlXG5cdFx0XHR9O1xuXHRcdFx0Ly8gZ2V0IGxhYmVsIGluZm9ybWF0aW9uLCBlaXRoZXIgdmlhIERhdGFGaWVsZERlZmF1bHQgYW5ub3RhdGlvbiAoaWYgZXhpc3RzKSBvciBMYWJlbCBhbm5vdGF0aW9uXG5cdFx0XHRjb25zdCBtRGF0YUZpZWxkRGVmYXVsdEFubm90YXRpb24gPSBtUHJvcGVydHlBbm5vdGF0aW9uc1tcblx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRGVmYXVsdFwiXG5cdFx0XHRdIGFzIE1ldGFNb2RlbFR5cGU8RGF0YUZpZWxkRGVmYXVsdD47XG5cdFx0XHRjb25zdCBzTGFiZWwgPVxuXHRcdFx0XHQobURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uICYmIG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi5MYWJlbCkgfHxcblx0XHRcdFx0bVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJdO1xuXHRcdFx0bVByb3AubGFiZWwgPSAoc0xhYmVsIGFzIHN0cmluZykgfHwgXCJbTEFCRUxfTUlTU0lORzogXCIgKyBzUHJvcGVydHlQYXRoICsgXCJdXCI7XG5cdFx0XHQvLyBldmFsdWF0ZSBIaWRkZW4gYW5ub3RhdGlvblxuXHRcdFx0Y29uc3QgbUhpZGRlbkFubm90YXRpb24gPSBtUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5cIl07XG5cdFx0XHRtUHJvcC5oaWRlRnJvbVJldmVhbCA9IG1IaWRkZW5Bbm5vdGF0aW9uIGFzIGJvb2xlYW47XG5cdFx0XHRpZiAobUhpZGRlbkFubm90YXRpb24gJiYgKG1IaWRkZW5Bbm5vdGF0aW9uIGFzIHsgJFBhdGg/OiBzdHJpbmcgfSkuJFBhdGgpIHtcblx0XHRcdFx0bVByb3AuaGlkZUZyb21SZXZlYWwgPSBvRWxlbWVudC5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQcm9wZXJ0eSgobUhpZGRlbkFubm90YXRpb24gYXMgeyAkUGF0aD86IHN0cmluZyB9KS4kUGF0aCEpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gZXZhbHVhdGUgQWRhcHRhdGlvbkhpZGRlbiBhbm5vdGF0aW9uXG5cdFx0XHRpZiAoIW1Qcm9wLmhpZGVGcm9tUmV2ZWFsKSB7XG5cdFx0XHRcdG1Qcm9wLmhpZGVGcm9tUmV2ZWFsID0gbVByb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQWRhcHRhdGlvbkhpZGRlblwiXSBhcyBib29sZWFuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gZXZhbHVhdGUgRmllbGRDb250cm9sIGFubm90YXRpb25cblx0XHRcdGxldCBtRmllbGRDb250cm9sQW5ub3RhdGlvbjtcblx0XHRcdGlmICghbVByb3AuaGlkZUZyb21SZXZlYWwpIHtcblx0XHRcdFx0bUZpZWxkQ29udHJvbEFubm90YXRpb24gPSBtUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sXCJdO1xuXHRcdFx0XHRpZiAobUZpZWxkQ29udHJvbEFubm90YXRpb24pIHtcblx0XHRcdFx0XHRtUHJvcC5oaWRlRnJvbVJldmVhbCA9XG5cdFx0XHRcdFx0XHQobUZpZWxkQ29udHJvbEFubm90YXRpb24gYXMgeyAkRW51bU1lbWJlcj86IHN0cmluZyB9KS4kRW51bU1lbWJlciA9PT1cblx0XHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFR5cGUvSGlkZGVuXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIEBydW50aW1lIGhpZGRlbiBieSBmaWVsZCBjb250cm9sIHZhbHVlID0gMFxuXHRcdFx0bUZpZWxkQ29udHJvbEFubm90YXRpb24gPSBtUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRmllbGRDb250cm9sXCJdO1xuXHRcdFx0Y29uc3Qgc0ZpZWxkQ29udHJvbFBhdGggPSBtRmllbGRDb250cm9sQW5ub3RhdGlvbiAmJiAobUZpZWxkQ29udHJvbEFubm90YXRpb24gYXMgeyAkUGF0aD86IHN0cmluZyB9KS4kUGF0aDtcblx0XHRcdGlmIChzRmllbGRDb250cm9sUGF0aCAmJiAhbVByb3AuaGlkZUZyb21SZXZlYWwpIHtcblx0XHRcdFx0Ly8gaWYgdGhlIGJpbmRpbmcgaXMgYSBsaXN0IGJpbmRpbmcsIHNraXAgdGhlIGNoZWNrIGZvciBmaWVsZCBjb250cm9sXG5cdFx0XHRcdGNvbnN0IGJMaXN0QmluZGluZyA9IG9FbGVtZW50LmdldEJpbmRpbmcoc0FnZ3JlZ2F0aW9uTmFtZSkgaW5zdGFuY2VvZiBMaXN0QmluZGluZztcblx0XHRcdFx0aWYgKCFiTGlzdEJpbmRpbmcpIHtcblx0XHRcdFx0XHRjb25zdCBpRmllbGRDb250cm9sVmFsdWUgPSBvRWxlbWVudC5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQcm9wZXJ0eShzRmllbGRDb250cm9sUGF0aCk7XG5cdFx0XHRcdFx0bVByb3AuaGlkZUZyb21SZXZlYWwgPSBpRmllbGRDb250cm9sVmFsdWUgPT09IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC8vIG5vIHN1cHBvcnQgZm9yIERhdGFGaWVsZEZvci9XaXRoQWN0aW9uIGFuZCBEYXRhRmllbGRGb3IvV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbiB3aXRoaW4gRGF0YUZpZWxkRGVmYXVsdCBhbm5vdGF0aW9uXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbiAmJlxuXHRcdFx0XHQobURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiIHx8XG5cdFx0XHRcdFx0bURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiIHx8XG5cdFx0XHRcdFx0bURhdGFGaWVsZERlZmF1bHRBbm5vdGF0aW9uLiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIiB8fFxuXHRcdFx0XHRcdG1EYXRhRmllbGREZWZhdWx0QW5ub3RhdGlvbi4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0bVByb3AudW5zdXBwb3J0ZWQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0Ly8gbm8gc3VwcG9ydCBmb3IgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIGFuZCBjb21wbGV4IHByb3BlcnRpZXNcblx0XHRcdGlmIChfc3RhcnRzV2l0aE5hdmlnYXRpb25Qcm9wZXJ0eShzUHJvcGVydHlQYXRoLCBhTmF2aWdhdGlvblByb3BlcnRpZXMpIHx8IF9pc0NvbXBsZXhUeXBlKG1FbGVtZW50KSkge1xuXHRcdFx0XHRtUHJvcC51bnN1cHBvcnRlZCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbVByb3A7XG5cdFx0fVxuXG5cdFx0Ly8gQ29udmVydCBtZXRhZGF0YSBmb3JtYXQgdG8gZGVsZWdhdGUgZm9ybWF0LlxuXHRcdGZ1bmN0aW9uIF9jb252ZXJ0TWV0YWRhdGFUb0RlbGVnYXRlRm9ybWF0KFxuXHRcdFx0bU9EYXRhRW50aXR5VHlwZTogTWV0YU1vZGVsRW50aXR5VHlwZSxcblx0XHRcdHNFbnRpdHlUeXBlOiBzdHJpbmcsXG5cdFx0XHRvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdG9FbGVtZW50OiBDb250cm9sLFxuXHRcdFx0c0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nXG5cdFx0KTogRGVsZWdhdGVQcm9wZXJ0eVtdIHtcblx0XHRcdGNvbnN0IGFQcm9wZXJ0aWVzID0gW107XG5cdFx0XHRsZXQgc0VsZW1lbnROYW1lID0gXCJcIjtcblx0XHRcdGNvbnN0IGFOYXZpZ2F0aW9uUHJvcGVydGllcyA9IFtdO1xuXHRcdFx0bGV0IG1FbGVtZW50O1xuXHRcdFx0Zm9yIChzRWxlbWVudE5hbWUgaW4gbU9EYXRhRW50aXR5VHlwZSkge1xuXHRcdFx0XHRtRWxlbWVudCA9IG1PRGF0YUVudGl0eVR5cGVbc0VsZW1lbnROYW1lXTtcblx0XHRcdFx0aWYgKG1FbGVtZW50LiRraW5kID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiKSB7XG5cdFx0XHRcdFx0YU5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2goc0VsZW1lbnROYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Zm9yIChzRWxlbWVudE5hbWUgaW4gbU9EYXRhRW50aXR5VHlwZSkge1xuXHRcdFx0XHRtRWxlbWVudCA9IG1PRGF0YUVudGl0eVR5cGVbc0VsZW1lbnROYW1lXTtcblx0XHRcdFx0aWYgKG1FbGVtZW50LiRraW5kID09PSBcIlByb3BlcnR5XCIpIHtcblx0XHRcdFx0XHRjb25zdCBtUHJvcEFubm90YXRpb25zID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvXCIgKyBzRW50aXR5VHlwZSArIFwiL1wiICsgc0VsZW1lbnROYW1lICsgXCJAXCIpO1xuXHRcdFx0XHRcdGNvbnN0IG1Qcm9wID0gX2VucmljaFByb3BlcnR5KFxuXHRcdFx0XHRcdFx0c0VsZW1lbnROYW1lLFxuXHRcdFx0XHRcdFx0bUVsZW1lbnQgYXMgTWV0YU1vZGVsUHJvcGVydHksXG5cdFx0XHRcdFx0XHRtUHJvcEFubm90YXRpb25zLFxuXHRcdFx0XHRcdFx0c0VudGl0eVR5cGUsXG5cdFx0XHRcdFx0XHRvRWxlbWVudCxcblx0XHRcdFx0XHRcdHNBZ2dyZWdhdGlvbk5hbWUsXG5cdFx0XHRcdFx0XHRhTmF2aWdhdGlvblByb3BlcnRpZXNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGFQcm9wZXJ0aWVzLnB1c2gobVByb3ApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYVByb3BlcnRpZXM7XG5cdFx0fVxuXG5cdFx0Ly9HZXQgYmluZGluZyBwYXRoIGVpdGhlciBmcm9tIHBheWxvYWQgKGlmIGF2YWlsYWJsZSkgb3IgdGhlIGVsZW1lbnQncyBiaW5kaW5nIGNvbnRleHQuXG5cdFx0ZnVuY3Rpb24gX2dldEJpbmRpbmdQYXRoKFxuXHRcdFx0b0VsZW1lbnQ6IENvbnRyb2wsXG5cdFx0XHRtUGF5bG9hZDoge1xuXHRcdFx0XHRwYXRoPzogc3RyaW5nO1xuXHRcdFx0fVxuXHRcdCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0XHRpZiAobVBheWxvYWQucGF0aCkge1xuXHRcdFx0XHRyZXR1cm4gbVBheWxvYWQucGF0aDtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHZCaW5kaW5nID0gb0VsZW1lbnQuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRcdGlmICh2QmluZGluZykge1xuXHRcdFx0XHRpZiAob0VsZW1lbnQuZGF0YShcIm5hdmlnYXRpb25QYXRoXCIpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHZCaW5kaW5nLmdldFBhdGgoKSArIFwiL1wiICsgb0VsZW1lbnQuZGF0YShcIm5hdmlnYXRpb25QYXRoXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2QmluZGluZy5nZXRQYXRoKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly9HZXQgYWxsIHByb3BlcnRpZXMgb2YgdGhlIGVsZW1lbnQncyBtb2RlbC5cblx0XHRhc3luYyBmdW5jdGlvbiBfZ2V0T0RhdGFQcm9wZXJ0aWVzT2ZNb2RlbChcblx0XHRcdG9FbGVtZW50OiBDb250cm9sLFxuXHRcdFx0c0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLFxuXHRcdFx0bVBheWxvYWQ6IHtcblx0XHRcdFx0bW9kZWxOYW1lPzogc3RyaW5nO1xuXHRcdFx0XHRwYXRoPzogc3RyaW5nO1xuXHRcdFx0fVxuXHRcdCk6IFByb21pc2U8RGVsZWdhdGVQcm9wZXJ0eVtdPiB7XG5cdFx0XHRjb25zdCBvTW9kZWwgPSBvRWxlbWVudC5nZXRNb2RlbChtUGF5bG9hZC5tb2RlbE5hbWUpO1xuXHRcdFx0aWYgKG9Nb2RlbCkge1xuXHRcdFx0XHRpZiAob01vZGVsLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1vZGVsXCIpKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRcdFx0XHRjb25zdCBzQmluZGluZ0NvbnRleHRQYXRoID0gX2dldEJpbmRpbmdQYXRoKG9FbGVtZW50LCBtUGF5bG9hZCk7XG5cdFx0XHRcdFx0aWYgKHNCaW5kaW5nQ29udGV4dFBhdGgpIHtcblx0XHRcdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWxDb250ZXh0ID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChzQmluZGluZ0NvbnRleHRQYXRoKTtcblx0XHRcdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWxDb250ZXh0T2JqZWN0ID0gb01ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KCk7XG5cdFx0XHRcdFx0XHRjb25zdCBtT0RhdGFFbnRpdHlUeXBlID0gb01ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KG9NZXRhTW9kZWxDb250ZXh0T2JqZWN0LiRUeXBlKTtcblx0XHRcdFx0XHRcdHJldHVybiBfY29udmVydE1ldGFkYXRhVG9EZWxlZ2F0ZUZvcm1hdChcblx0XHRcdFx0XHRcdFx0bU9EYXRhRW50aXR5VHlwZSxcblx0XHRcdFx0XHRcdFx0b01ldGFNb2RlbENvbnRleHRPYmplY3QuJFR5cGUsXG5cdFx0XHRcdFx0XHRcdG9NZXRhTW9kZWwsXG5cdFx0XHRcdFx0XHRcdG9FbGVtZW50LFxuXHRcdFx0XHRcdFx0XHRzQWdncmVnYXRpb25OYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIF9nZXRPRGF0YVByb3BlcnRpZXNPZk1vZGVsKG1Qcm9wZXJ0eUJhZy5lbGVtZW50LCBtUHJvcGVydHlCYWcuYWdncmVnYXRpb25OYW1lLCBtUHJvcGVydHlCYWcucGF5bG9hZCk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlbGVnYXRlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBd0JBLE1BQU1BLFFBQVEsR0FBRztJQUNoQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDQyxZQUFZLEVBQUUsZUFBQUEsQ0FBZ0JDLFlBVzdCLEVBRUU7TUFDRixNQUFNQyxTQUFTLEdBQUdELFlBQVksQ0FBQ0UsUUFBUTtRQUN0Q0MsVUFBVSxHQUFHSCxZQUFZLENBQUNJLFlBQVksRUFBRUMsWUFBWSxDQUFDLENBQUM7UUFDdERDLEtBQUssR0FBR04sWUFBWSxDQUFDTyxPQUFPOztNQUU3QjtNQUNBLElBQUlOLFNBQVMsQ0FBQ08sT0FBTyxLQUFLLFNBQVMsRUFBRTtRQUNwQztRQUNBLE1BQU1DLFlBQVksR0FBR1QsWUFBWSxDQUFDVSxJQUFJLEVBQUVDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUM7UUFDeEYsSUFBSUYsWUFBWSxFQUFFO1VBQ2pCLEtBQUssTUFBTUcsS0FBSyxJQUFJQyxLQUFLLENBQUNDLElBQUksQ0FBQ0wsWUFBWSxDQUFDLEVBQUU7WUFDN0MsSUFBSUcsS0FBSyxDQUFDRyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUtmLFlBQVksQ0FBQ2dCLGFBQWEsRUFBRUMsRUFBRSxFQUFFO2NBQ3JFO2NBQ0EsT0FBT0MsT0FBTyxDQUFDQyxNQUFNLENBQUMsSUFBSUMsS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDcEY7VUFDRDtRQUNEO01BQ0QsQ0FBQyxNQUFNLElBQUluQixTQUFTLENBQUNPLE9BQU8sS0FBSyxlQUFlLEVBQUU7UUFDakQ7UUFDQSxJQUNDUixZQUFZLENBQUNnQixhQUFhLEVBQUVDLEVBQUUsSUFDOUJqQixZQUFZLENBQUNVLElBQUksSUFDaEJWLFlBQVksQ0FBQ1UsSUFBSSxDQUF3QlcsSUFBSSxDQUFDckIsWUFBWSxDQUFDZ0IsYUFBYSxFQUFFQyxFQUFFLENBQUMsRUFDN0U7VUFDRCxPQUFPQyxPQUFPLENBQUNDLE1BQU0sQ0FBQyxJQUFJQyxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUNwRjtNQUNEO01BRUEsSUFBSUUsVUFBVSxHQUFHLE1BQU1DLFlBQVksQ0FBQ0MseUJBQXlCLENBQVNsQixLQUFLLEVBQUUsV0FBVyxFQUFFTCxTQUFTLENBQUM7TUFDcEcsSUFBSSxDQUFDcUIsVUFBVSxFQUFFO1FBQ2hCQSxVQUFVLEdBQUcsTUFBTUMsWUFBWSxDQUFDQyx5QkFBeUIsQ0FBU2xCLEtBQUssRUFBRSxnQkFBZ0IsRUFBRUwsU0FBUyxDQUFDO01BQ3RHO01BQ0EsTUFBTXdCLEtBQUssR0FBR0gsVUFBVSxDQUFFSSxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBR0osVUFBVSxFQUFFLEdBQUcsSUFBSUEsVUFBVSxFQUFFO01BQzlFLE1BQU1LLGNBQWMsR0FBRzNCLFlBQVksQ0FBQzRCLGNBQWMsR0FDL0M1QixZQUFZLENBQUNFLFFBQVEsQ0FBQzJCLFVBQVUsQ0FBQzdCLFlBQVksQ0FBQzRCLGNBQWMsRUFBRTVCLFlBQVksQ0FBQ0ksWUFBWSxFQUFFSixZQUFZLENBQUNVLElBQUksQ0FBQyxHQUMzR29CLFNBQVM7TUFDWixNQUFNQyxlQUFlLEdBQUdKLGNBQWMsR0FDbkMsTUFBTUosWUFBWSxDQUFDQyx5QkFBeUIsQ0FBU0csY0FBYyxFQUEwQixnQkFBZ0IsRUFBRTFCLFNBQVMsQ0FBQyxHQUN6SCxFQUFFO01BQ0wsTUFBTStCLFlBQVksR0FBR0QsZUFBZSxHQUFHLEdBQUdOLEtBQUssSUFBSU0sZUFBZSxFQUFFLEdBQUdOLEtBQUs7TUFDNUUsTUFBTVEsaUJBQWlCLEdBQUc5QixVQUFVLEVBQUUrQixjQUFjLENBQUNGLFlBQVksQ0FBQztNQUNsRSxNQUFNRyxnQkFBZ0IsR0FBR2hDLFVBQVUsRUFBRWlDLG9CQUFvQixDQUFDLEdBQUdKLFlBQVksSUFBSWhDLFlBQVksQ0FBQ3FDLFdBQVcsRUFBRSxDQUFDO01BRXhHLGVBQWVDLHFCQUFxQkEsQ0FDbkNDLGFBQXFCLEVBQ3JCQyxLQUF5QixFQUN6QkMsY0FBc0IsRUFDcUM7UUFDM0QsTUFBTUMsbUJBQW1CLEdBQUcsTUFBTW5CLFlBQVksQ0FBQ0MseUJBQXlCLENBQVNsQixLQUFLLEVBQUUsVUFBVSxFQUFFTCxTQUFTLENBQUM7UUFDOUcsTUFBTTBDLHNCQUFzQixHQUFHLE1BQU1wQixZQUFZLENBQUNDLHlCQUF5QixDQUFTbEIsS0FBSyxFQUFFLGFBQWEsRUFBRUwsU0FBUyxDQUFDO1FBQ3BILE1BQU0yQyxLQUFLLEdBQUcsSUFBSUMsU0FBUyxDQUFDO1VBQzNCO1VBQ0FDLE9BQU8sRUFBRTlDLFlBQVksQ0FBQ2dCLGFBQWEsRUFBRUMsRUFBRTtVQUN2QzhCLFFBQVEsRUFBRUMsTUFBTSxDQUFDQyxzQkFBc0IsQ0FBQ1AsbUJBQW1CLENBQUM7VUFDNURRLFdBQVcsRUFBRUYsTUFBTSxDQUFDQyxzQkFBc0IsQ0FBQ04sc0JBQXNCLENBQUM7VUFDbEVGLGNBQWMsRUFBRUE7UUFDakIsQ0FBQyxDQUFDO1FBQ0YsTUFBTVUscUJBQXFCLEdBQUc7VUFDN0JDLGVBQWUsRUFBRTtZQUNoQkMsU0FBUyxFQUFFcEIsaUJBQWlCO1lBQzVCcUIsU0FBUyxFQUFFbkIsZ0JBQWdCO1lBQzNCb0IsSUFBSSxFQUFFWCxLQUFLLENBQUNSLG9CQUFvQixDQUFDLEdBQUc7VUFDckMsQ0FBQztVQUNEb0IsTUFBTSxFQUFFO1lBQ1BELElBQUksRUFBRVgsS0FBSztZQUNYUyxTQUFTLEVBQUVsRCxVQUFVO1lBQ3JCc0QsU0FBUyxFQUFFdEQsVUFBVTtZQUNyQm1ELFNBQVMsRUFBRW5EO1VBQ1osQ0FBQztVQUNEQyxZQUFZLEVBQUVKLFlBQVksQ0FBQ0k7UUFDNUIsQ0FBQztRQUVELE9BQU9tQixZQUFZLENBQUNtQyx1QkFBdUIsQ0FBQ25CLGFBQWEsRUFBRVkscUJBQXFCLEVBQUU7VUFBRXpDLElBQUksRUFBRThCO1FBQU0sQ0FBQyxFQUFFdkMsU0FBUyxDQUFDO01BQzlHO01BRUEsTUFBTTBELE1BQU0sR0FBRyxNQUFNckIscUJBQXFCLENBQ3pDLDJDQUEyQyxFQUMzQ3RDLFlBQVksQ0FBQ1UsSUFBSSxFQUNqQnFCLGVBQ0QsQ0FBQztNQUNELE9BQU87UUFDTjZCLE9BQU8sRUFBRUQ7TUFDVixDQUFDO0lBQ0YsQ0FBQztJQUNEO0lBQ0FFLGVBQWUsRUFBRSxlQUFBQSxDQUFnQjdELFlBT2hDLEVBQStCO01BQy9CLFNBQVM4RCxjQUFjQSxDQUFDQyxTQUE0QixFQUFXO1FBQzlELElBQUlBLFNBQVMsSUFBSUEsU0FBUyxDQUFDQyxLQUFLLEVBQUU7VUFDakMsSUFBSUQsU0FBUyxDQUFDQyxLQUFLLENBQUNDLFdBQVcsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxJQUFJO1VBQ1o7UUFDRDtRQUNBLE9BQU8sS0FBSztNQUNiOztNQUVBO01BQ0EsU0FBU0MsNkJBQTZCQSxDQUFDQyxhQUFxQixFQUFFQyxxQkFBK0IsRUFBVztRQUN2RyxPQUFPQSxxQkFBcUIsQ0FBQ0MsSUFBSSxDQUFDLFVBQVVDLFFBQVEsRUFBRTtVQUNyRCxPQUFPSCxhQUFhLENBQUMxQyxVQUFVLENBQUM2QyxRQUFRLENBQUM7UUFDMUMsQ0FBQyxDQUFDO01BQ0g7TUFFQSxTQUFTQyxlQUFlQSxDQUN2QkosYUFBcUIsRUFDckJLLFFBQTJCLEVBQzNCQyxvQkFBa0QsRUFDbERDLFdBQW1CLEVBQ25CQyxRQUFpQixFQUNqQkMsZ0JBQXdCLEVBQ3hCUixxQkFBK0IsRUFDWjtRQUNuQixNQUFNUyxLQUF1QixHQUFHO1VBQy9CQyxJQUFJLEVBQUVYLGFBQWE7VUFDbkIvQixXQUFXLEVBQUUrQixhQUFhO1VBQzFCWSxVQUFVLEVBQUVMO1FBQ2IsQ0FBQztRQUNEO1FBQ0EsTUFBTU0sMkJBQTJCLEdBQUdQLG9CQUFvQixDQUN2RCw4Q0FBOEMsQ0FDWDtRQUNwQyxNQUFNUSxNQUFNLEdBQ1ZELDJCQUEyQixJQUFJQSwyQkFBMkIsQ0FBQ0UsS0FBSyxJQUNqRVQsb0JBQW9CLENBQUMsdUNBQXVDLENBQUM7UUFDOURJLEtBQUssQ0FBQ00sS0FBSyxHQUFJRixNQUFNLElBQWUsa0JBQWtCLEdBQUdkLGFBQWEsR0FBRyxHQUFHO1FBQzVFO1FBQ0EsTUFBTWlCLGlCQUFpQixHQUFHWCxvQkFBb0IsQ0FBQyxvQ0FBb0MsQ0FBQztRQUNwRkksS0FBSyxDQUFDUSxjQUFjLEdBQUdELGlCQUE0QjtRQUNuRCxJQUFJQSxpQkFBaUIsSUFBS0EsaUJBQWlCLENBQXdCRSxLQUFLLEVBQUU7VUFDekVULEtBQUssQ0FBQ1EsY0FBYyxHQUFHVixRQUFRLENBQUNZLGlCQUFpQixDQUFDLENBQUMsRUFBRUMsV0FBVyxDQUFFSixpQkFBaUIsQ0FBd0JFLEtBQU0sQ0FBQztRQUNuSDtRQUNBO1FBQ0EsSUFBSSxDQUFDVCxLQUFLLENBQUNRLGNBQWMsRUFBRTtVQUMxQlIsS0FBSyxDQUFDUSxjQUFjLEdBQUdaLG9CQUFvQixDQUFDLDhDQUE4QyxDQUFZO1FBQ3ZHO1FBQ0E7UUFDQSxJQUFJZ0IsdUJBQXVCO1FBQzNCLElBQUksQ0FBQ1osS0FBSyxDQUFDUSxjQUFjLEVBQUU7VUFDMUJJLHVCQUF1QixHQUFHaEIsb0JBQW9CLENBQUMsOENBQThDLENBQUM7VUFDOUYsSUFBSWdCLHVCQUF1QixFQUFFO1lBQzVCWixLQUFLLENBQUNRLGNBQWMsR0FDbEJJLHVCQUF1QixDQUE4QkMsV0FBVyxLQUNqRSx3REFBd0Q7VUFDMUQ7UUFDRDtRQUNBO1FBQ0FELHVCQUF1QixHQUFHaEIsb0JBQW9CLENBQUMsOENBQThDLENBQUM7UUFDOUYsTUFBTWtCLGlCQUFpQixHQUFHRix1QkFBdUIsSUFBS0EsdUJBQXVCLENBQXdCSCxLQUFLO1FBQzFHLElBQUlLLGlCQUFpQixJQUFJLENBQUNkLEtBQUssQ0FBQ1EsY0FBYyxFQUFFO1VBQy9DO1VBQ0EsTUFBTU8sWUFBWSxHQUFHakIsUUFBUSxDQUFDa0IsVUFBVSxDQUFDakIsZ0JBQWdCLENBQUMsWUFBWWtCLFdBQVc7VUFDakYsSUFBSSxDQUFDRixZQUFZLEVBQUU7WUFDbEIsTUFBTUcsa0JBQWtCLEdBQUdwQixRQUFRLENBQUNZLGlCQUFpQixDQUFDLENBQUMsRUFBRUMsV0FBVyxDQUFDRyxpQkFBaUIsQ0FBQztZQUN2RmQsS0FBSyxDQUFDUSxjQUFjLEdBQUdVLGtCQUFrQixLQUFLLENBQUM7VUFDaEQ7UUFDRDtRQUNBO1FBQ0EsSUFDQ2YsMkJBQTJCLEtBQzFCQSwyQkFBMkIsQ0FBQ2pCLEtBQUssS0FBSywrQ0FBK0MsSUFDckZpQiwyQkFBMkIsQ0FBQ2pCLEtBQUssS0FBSyw4REFBOEQsSUFDcEdpQiwyQkFBMkIsQ0FBQ2pCLEtBQUssS0FBSyxnREFBZ0QsSUFDdEZpQiwyQkFBMkIsQ0FBQ2pCLEtBQUssS0FBSywrREFBK0QsQ0FBQyxFQUN0RztVQUNEYyxLQUFLLENBQUNtQixXQUFXLEdBQUcsSUFBSTtRQUN6QjtRQUNBO1FBQ0EsSUFBSTlCLDZCQUE2QixDQUFDQyxhQUFhLEVBQUVDLHFCQUFxQixDQUFDLElBQUlQLGNBQWMsQ0FBQ1csUUFBUSxDQUFDLEVBQUU7VUFDcEdLLEtBQUssQ0FBQ21CLFdBQVcsR0FBRyxJQUFJO1FBQ3pCO1FBQ0EsT0FBT25CLEtBQUs7TUFDYjs7TUFFQTtNQUNBLFNBQVNvQixnQ0FBZ0NBLENBQ3hDQyxnQkFBcUMsRUFDckN4QixXQUFtQixFQUNuQnhFLFVBQTBCLEVBQzFCeUUsUUFBaUIsRUFDakJDLGdCQUF3QixFQUNIO1FBQ3JCLE1BQU11QixXQUFXLEdBQUcsRUFBRTtRQUN0QixJQUFJQyxZQUFZLEdBQUcsRUFBRTtRQUNyQixNQUFNaEMscUJBQXFCLEdBQUcsRUFBRTtRQUNoQyxJQUFJSSxRQUFRO1FBQ1osS0FBSzRCLFlBQVksSUFBSUYsZ0JBQWdCLEVBQUU7VUFDdEMxQixRQUFRLEdBQUcwQixnQkFBZ0IsQ0FBQ0UsWUFBWSxDQUFDO1VBQ3pDLElBQUk1QixRQUFRLENBQUM2QixLQUFLLEtBQUssb0JBQW9CLEVBQUU7WUFDNUNqQyxxQkFBcUIsQ0FBQ2tDLElBQUksQ0FBQ0YsWUFBWSxDQUFDO1VBQ3pDO1FBQ0Q7UUFDQSxLQUFLQSxZQUFZLElBQUlGLGdCQUFnQixFQUFFO1VBQ3RDMUIsUUFBUSxHQUFHMEIsZ0JBQWdCLENBQUNFLFlBQVksQ0FBQztVQUN6QyxJQUFJNUIsUUFBUSxDQUFDNkIsS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUNsQyxNQUFNRSxnQkFBZ0IsR0FBR3JHLFVBQVUsQ0FBQ3NHLFNBQVMsQ0FBQyxHQUFHLEdBQUc5QixXQUFXLEdBQUcsR0FBRyxHQUFHMEIsWUFBWSxHQUFHLEdBQUcsQ0FBQztZQUMzRixNQUFNdkIsS0FBSyxHQUFHTixlQUFlLENBQzVCNkIsWUFBWSxFQUNaNUIsUUFBUSxFQUNSK0IsZ0JBQWdCLEVBQ2hCN0IsV0FBVyxFQUNYQyxRQUFRLEVBQ1JDLGdCQUFnQixFQUNoQlIscUJBQ0QsQ0FBQztZQUNEK0IsV0FBVyxDQUFDRyxJQUFJLENBQUN6QixLQUFLLENBQUM7VUFDeEI7UUFDRDtRQUNBLE9BQU9zQixXQUFXO01BQ25COztNQUVBO01BQ0EsU0FBU00sZUFBZUEsQ0FDdkI5QixRQUFpQixFQUNqQitCLFFBRUMsRUFDb0I7UUFDckIsSUFBSUEsUUFBUSxDQUFDQyxJQUFJLEVBQUU7VUFDbEIsT0FBT0QsUUFBUSxDQUFDQyxJQUFJO1FBQ3JCO1FBQ0EsTUFBTUMsUUFBUSxHQUFHakMsUUFBUSxDQUFDWSxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdDLElBQUlxQixRQUFRLEVBQUU7VUFDYixJQUFJakMsUUFBUSxDQUFDa0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDcEMsT0FBT0QsUUFBUSxDQUFDRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBR25DLFFBQVEsQ0FBQ2tDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztVQUNsRTtVQUNBLE9BQU9ELFFBQVEsQ0FBQ0UsT0FBTyxDQUFDLENBQUM7UUFDMUI7TUFDRDs7TUFFQTtNQUNBLGVBQWVDLDBCQUEwQkEsQ0FDeENwQyxRQUFpQixFQUNqQkMsZ0JBQXdCLEVBQ3hCOEIsUUFHQyxFQUM2QjtRQUM5QixNQUFNTSxNQUFNLEdBQUdyQyxRQUFRLENBQUNzQyxRQUFRLENBQUNQLFFBQVEsQ0FBQ1EsU0FBUyxDQUFDO1FBQ3BELElBQUlGLE1BQU0sRUFBRTtVQUNYLElBQUlBLE1BQU0sQ0FBQ0csR0FBRyxDQUFDLGtDQUFrQyxDQUFDLEVBQUU7WUFDbkQsTUFBTWpILFVBQVUsR0FBRzhHLE1BQU0sQ0FBQzVHLFlBQVksQ0FBQyxDQUFtQjtZQUMxRCxNQUFNZ0gsbUJBQW1CLEdBQUdYLGVBQWUsQ0FBQzlCLFFBQVEsRUFBRStCLFFBQVEsQ0FBQztZQUMvRCxJQUFJVSxtQkFBbUIsRUFBRTtjQUN4QixNQUFNcEYsaUJBQWlCLEdBQUc5QixVQUFVLENBQUMrQixjQUFjLENBQUNtRixtQkFBbUIsQ0FBQztjQUN4RSxNQUFNQyx1QkFBdUIsR0FBR3JGLGlCQUFpQixDQUFDd0UsU0FBUyxDQUFDLENBQUM7Y0FDN0QsTUFBTU4sZ0JBQWdCLEdBQUdsRSxpQkFBaUIsQ0FBQ3dFLFNBQVMsQ0FBQ2EsdUJBQXVCLENBQUN0RCxLQUFLLENBQUM7Y0FDbkYsT0FBT2tDLGdDQUFnQyxDQUN0Q0MsZ0JBQWdCLEVBQ2hCbUIsdUJBQXVCLENBQUN0RCxLQUFLLEVBQzdCN0QsVUFBVSxFQUNWeUUsUUFBUSxFQUNSQyxnQkFDRCxDQUFDO1lBQ0Y7VUFDRDtRQUNEO1FBQ0EsT0FBTzNELE9BQU8sQ0FBQ3FHLE9BQU8sQ0FBQyxFQUFFLENBQUM7TUFDM0I7TUFFQSxPQUFPckcsT0FBTyxDQUFDcUcsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLGtCQUFrQjtRQUMvQyxPQUFPUiwwQkFBMEIsQ0FBQ2hILFlBQVksQ0FBQ08sT0FBTyxFQUFFUCxZQUFZLENBQUN5SCxlQUFlLEVBQUV6SCxZQUFZLENBQUMwSCxPQUFPLENBQUM7TUFDNUcsQ0FBQyxDQUFDO0lBQ0g7RUFDRCxDQUFDO0VBQUMsT0FFYTVILFFBQVE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -7,10 +7,12 @@ import Common from "sap/fe/macros/CommonHelper";
|
|
|
7
7
|
import DelegateUtil from "sap/fe/macros/DelegateUtil";
|
|
8
8
|
import type Control from "sap/ui/core/Control";
|
|
9
9
|
import type UI5Element from "sap/ui/core/Element";
|
|
10
|
+
import type XMLView from "sap/ui/core/mvc/XMLView";
|
|
10
11
|
import ListBinding from "sap/ui/model/ListBinding";
|
|
11
12
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
12
13
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
13
14
|
import type { MetaModelEntityType, MetaModelProperty, MetaModelType } from "../../../../../../../types/metamodel_types";
|
|
15
|
+
|
|
14
16
|
type DelegateProperty = {
|
|
15
17
|
name: string;
|
|
16
18
|
bindingPath: string;
|
|
@@ -55,6 +57,29 @@ const Delegate = {
|
|
|
55
57
|
oMetaModel = mPropertyBag.appComponent?.getMetaModel(),
|
|
56
58
|
oForm = mPropertyBag.element;
|
|
57
59
|
|
|
60
|
+
// Check for existing fields with the same _flexId
|
|
61
|
+
if (oModifier.targets === "xmlTree") {
|
|
62
|
+
// at preprocessing time
|
|
63
|
+
const fieldsInView = mPropertyBag.view?.getElementsByTagNameNS("sap.fe.macros", "Field");
|
|
64
|
+
if (fieldsInView) {
|
|
65
|
+
for (const field of Array.from(fieldsInView)) {
|
|
66
|
+
if (field.getAttribute("_flexId") === mPropertyBag.fieldSelector?.id) {
|
|
67
|
+
// Field with same _flexId already exists, reject Promise to avoid duplicates
|
|
68
|
+
return Promise.reject(new Error("FormDelegate.createLayout: field already exists"));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
} else if (oModifier.targets === "jsControlTree") {
|
|
73
|
+
// at runtime
|
|
74
|
+
if (
|
|
75
|
+
mPropertyBag.fieldSelector?.id &&
|
|
76
|
+
mPropertyBag.view &&
|
|
77
|
+
(mPropertyBag.view as unknown as XMLView).byId(mPropertyBag.fieldSelector?.id)
|
|
78
|
+
) {
|
|
79
|
+
return Promise.reject(new Error("FormDelegate.createLayout: field already exists"));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
58
83
|
let sEntitySet = await DelegateUtil.getCustomDataWithModifier<string>(oForm, "entitySet", oModifier);
|
|
59
84
|
if (!sEntitySet) {
|
|
60
85
|
sEntitySet = await DelegateUtil.getCustomDataWithModifier<string>(oForm, "navigationPath", oModifier);
|
|
@@ -72,6 +72,11 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
72
72
|
const rowHighlighting = function (criticalityValue, aFilteredMessages, hasActiveEntity, isActiveEntity, isDraftMode,
|
|
73
73
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
74
74
|
contextPath, isInactive) {
|
|
75
|
+
// Sanitize string "undefined" values to actual undefined
|
|
76
|
+
aFilteredMessages = aFilteredMessages === "undefined" ? undefined : aFilteredMessages;
|
|
77
|
+
hasActiveEntity = hasActiveEntity === "undefined" ? undefined : hasActiveEntity;
|
|
78
|
+
isActiveEntity = isActiveEntity === "undefined" ? undefined : isActiveEntity;
|
|
79
|
+
isInactive = isInactive === "undefined" ? undefined : isInactive;
|
|
75
80
|
let iHighestCriticalityValue = -1;
|
|
76
81
|
if (aFilteredMessages && aFilteredMessages.length > 0) {
|
|
77
82
|
const sCurrentContextPath = this.getBindingContext()?.getPath();
|
|
@@ -159,6 +164,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
159
164
|
const unitOrTimezone = property.exportSettings?.unit || property.exportSettings?.timezone;
|
|
160
165
|
columnWidth += unitOrTimezone ? SizeHelper.getButtonWidth(unitOrTimezone) : 0;
|
|
161
166
|
if (editMode === FieldEditMode.Editable) {
|
|
167
|
+
const unitOrCurrencyProperty = property.exportSettings?.unitProperty; // the unitProperty attribute is used for currency and unit on the export settings
|
|
168
|
+
if (unitOrCurrencyProperty) {
|
|
169
|
+
columnWidth += 3;
|
|
170
|
+
}
|
|
162
171
|
switch (property.typeConfig?.baseType) {
|
|
163
172
|
case "Date":
|
|
164
173
|
case "Time":
|
|
@@ -268,4 +277,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/ObjectPath", "sap/fe/core/CommonUt
|
|
|
268
277
|
ObjectPath.set("sap.fe.macros.formatters.TableFormatter", tableFormatter);
|
|
269
278
|
return tableFormatter;
|
|
270
279
|
}, false);
|
|
271
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRNZXNzYWdldHlwZU9yZGVyIiwibWVzc2FnZVR5cGUiLCJ2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzIiwiZmllbGRWYWxpZGl0eU9iamVjdCIsImZpZWxkS2V5cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJldmVyeSIsImtleSIsIl9fZnVuY3Rpb25OYW1lIiwiZ2V0RXJyb3JTdGF0dXNUZXh0VmlzaWJpbGl0eUZvcm1hdHRlciIsInNlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3IiLCJhRmlsdGVyZWRNZXNzYWdlcyIsImNvbHVtbk5hbWUiLCJpc1NlbWFudGljS2V5SW5GaWVsZEdyb3VwIiwic3RhdHVzVmlzaWJpbGl0eSIsInNDdXJyZW50Q29udGV4dFBhdGgiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwib01lc3NhZ2UiLCJnZXRUeXBlIiwiZ2V0VGFyZ2V0cyIsImluZGV4T2YiLCJyb3dIaWdobGlnaHRpbmciLCJjcml0aWNhbGl0eVZhbHVlIiwiaGFzQWN0aXZlRW50aXR5IiwiaXNBY3RpdmVFbnRpdHkiLCJpc0RyYWZ0TW9kZSIsImNvbnRleHRQYXRoIiwiaXNJbmFjdGl2ZSIsImlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSIsIm1lc3NhZ2UiLCJNZXNzYWdlVHlwZSIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsIkxvZyIsImVycm9yIiwiaXNOZXdPYmplY3QiLCJuYXZpZ2F0ZWRSb3ciLCJkZWVwZXN0UGF0aCIsInNQYXRoIiwiZ2V0Q29sdW1uV2lkdGgiLCJlZGl0TW9kZSIsImlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlIiwicHJvcGVydHlOYW1lIiwidXNlUmVtVW5pdCIsImFyZ3VtZW50cyIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaXNTb3J0YWJsZUNvbHVtbiIsImlzQ29sdW1uUmVxdWlyZWQiLCJtZGNUYWJsZSIsImdldFBhcmVudCIsInByb3BlcnRpZXMiLCJpc0EiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDYWNoZWRQcm9wZXJ0aWVzIiwiZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsInByb3BlcnR5IiwiZmluZCIsInByb3AiLCJjb2x1bW5XaWR0aCIsIlRhYmxlU2l6ZUhlbHBlciIsImdldE1EQ0NvbHVtbldpZHRoRnJvbVByb3BlcnR5IiwidW5pdE9yVGltZXpvbmUiLCJleHBvcnRTZXR0aW5ncyIsInVuaXQiLCJ0aW1lem9uZSIsIlNpemVIZWxwZXIiLCJnZXRCdXR0b25XaWR0aCIsIkZpZWxkRWRpdE1vZGUiLCJFZGl0YWJsZSIsInR5cGVDb25maWciLCJiYXNlVHlwZSIsImdldENvbHVtbldpZHRoRm9yVmFsdWVIZWxwVGFibGUiLCJpc1RhcmdldFNtYWxsRGV2aWNlIiwiaXNTbWFsbERldmljZSIsIkNvbW1vblV0aWxzIiwid2l0aFVuaXQiLCJ0YWJsZUZvcm1hdHRlciIsImNhbGwiLCJEaXNwbGF5IiwiaXNSYXRpbmdJbmRpY2F0b3IiLCJvQ29udHJvbCIsInZDb250ZW50RGlzcGxheSIsIkFycmF5IiwiaXNBcnJheSIsImdldENvbnRlbnREaXNwbGF5IiwiX3VwZGF0ZVN0eWxlQ2xhc3NGb3JSYXRpbmdJbmRpY2F0b3IiLCJmaWVsZFdyYXBwZXIiLCJsYXN0IiwidkNvbnRlbnRFZGl0IiwiZ2V0Q29udGVudEVkaXQiLCJhZGRTdHlsZUNsYXNzIiwicmVtb3ZlU3R5bGVDbGFzcyIsImdldFZCb3hWaXNpYmlsaXR5IiwiYUl0ZW1zIiwiZ2V0SXRlbXMiLCJiTGFzdEVsZW1lbnRGb3VuZCIsIl9sZW4iLCJhcmdzIiwiX2tleSIsImluZGV4Iiwic05hbWUiLCJoYXNPd25Qcm9wZXJ0eSIsIl9sZW4yIiwib0FyZ3MiLCJfa2V5MiIsImFwcGx5IiwiT2JqZWN0UGF0aCIsInNldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVGFibGVGb3JtYXR0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgT2JqZWN0UGF0aCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9PYmplY3RQYXRoXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgU2l6ZUhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TaXplSGVscGVyXCI7XG5pbXBvcnQgRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvdGFibGUvVGFibGVBUElcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZWRGRVByb3BlcnR5SW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQVBJXCI7XG5pbXBvcnQgVGFibGVTaXplSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlU2l6ZUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC9tL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCBNZXNzYWdlVHlwZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlVHlwZVwiO1xuaW1wb3J0IEZpZWxkRWRpdE1vZGUgZnJvbSBcInNhcC91aS9tZGMvZW51bXMvRmllbGRFZGl0TW9kZVwiO1xuaW1wb3J0IHR5cGUgQ29sdW1uIGZyb20gXCJzYXAvdWkvbWRjL3RhYmxlL0NvbHVtblwiO1xuaW1wb3J0IHR5cGUgTURDVGFibGUgZnJvbSBcInNhcC91aS9tZGMvdmFsdWVoZWxwL2NvbnRlbnQvTURDVGFibGVcIjtcbmltcG9ydCB0eXBlIEZpZWxkV3JhcHBlciBmcm9tIFwiLi4vY29udHJvbHMvRmllbGRXcmFwcGVyXCI7XG5cbmNvbnN0IGdldE1lc3NhZ2V0eXBlT3JkZXIgPSBmdW5jdGlvbiAobWVzc2FnZVR5cGU6IHN0cmluZyk6IG51bWJlciB7XG5cdHN3aXRjaCAobWVzc2FnZVR5cGUpIHtcblx0XHRjYXNlIFwiRXJyb3JcIjpcblx0XHRcdHJldHVybiA0O1xuXHRcdGNhc2UgXCJXYXJuaW5nXCI6XG5cdFx0XHRyZXR1cm4gMztcblx0XHRjYXNlIFwiSW5mb3JtYXRpb25cIjpcblx0XHRcdHJldHVybiAyO1xuXHRcdGNhc2UgXCJOb25lXCI6XG5cdFx0XHRyZXR1cm4gMTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIC0xO1xuXHR9XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHZhbGlkaXR5IG9mIGNyZWF0aW9uIHJvdyBmaWVsZHMuXG4gKiBAcGFyYW0gZmllbGRWYWxpZGl0eU9iamVjdCBPYmplY3QgaG9sZGluZyB0aGUgZmllbGRzXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgYWxsIHRoZSBmaWVsZHMgaW4gdGhlIGNyZWF0aW9uIHJvdyBhcmUgdmFsaWQsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gKi9cbmNvbnN0IHZhbGlkYXRlQ3JlYXRpb25Sb3dGaWVsZHMgPSBmdW5jdGlvbiAoZmllbGRWYWxpZGl0eU9iamVjdD86IFJlY29yZDxzdHJpbmcsIHsgdmFsaWRpdHk6IGJvb2xlYW4gfT4pOiBib29sZWFuIHtcblx0aWYgKCFmaWVsZFZhbGlkaXR5T2JqZWN0KSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGNvbnN0IGZpZWxkS2V5cyA9IE9iamVjdC5rZXlzKGZpZWxkVmFsaWRpdHlPYmplY3QpO1xuXHRyZXR1cm4gKFxuXHRcdGZpZWxkS2V5cy5sZW5ndGggPiAwICYmXG5cdFx0ZmllbGRLZXlzLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcblx0XHRcdHJldHVybiBmaWVsZFZhbGlkaXR5T2JqZWN0W2tleV1bXCJ2YWxpZGl0eVwiXTtcblx0XHR9KVxuXHQpO1xufTtcbnZhbGlkYXRlQ3JlYXRpb25Sb3dGaWVsZHMuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciN2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzXCI7XG5cbi8qKlxuICogQHBhcmFtIHRoaXMgVGhlIG9iamVjdCBzdGF0dXMgY29udHJvbC5cbiAqIEBwYXJhbSBzZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yIFRoZSBwcm9wZXJ0eSBuYW1lIG9mIHRoZSBkcmFmdCBpbmRpY2F0b3IuXG4gKiBAcGFyYW0gYUZpbHRlcmVkTWVzc2FnZXMgQXJyYXkgb2YgbWVzc2FnZXMuXG4gKiBAcGFyYW0gY29sdW1uTmFtZVxuICogQHBhcmFtIGlzU2VtYW50aWNLZXlJbkZpZWxkR3JvdXAgRmxhZyB3aGljaCBzYXlzIGlmIHNlbWFudGljIGtleSBpcyBhIHBhcnQgb2YgZmllbGQgZ3JvdXAuXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgZm9yIHRoZSB2aXNpYmlsaXR5IHByb3BlcnR5IG9mIHRoZSBvYmplY3Qgc3RhdHVzXG4gKi9cbmNvbnN0IGdldEVycm9yU3RhdHVzVGV4dFZpc2liaWxpdHlGb3JtYXR0ZXIgPSBmdW5jdGlvbiAoXG5cdHRoaXM6IE1hbmFnZWRPYmplY3QsXG5cdHNlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3I6IHN0cmluZyxcblx0YUZpbHRlcmVkTWVzc2FnZXM6IE1lc3NhZ2VbXSxcblx0Y29sdW1uTmFtZTogc3RyaW5nLFxuXHRpc1NlbWFudGljS2V5SW5GaWVsZEdyb3VwPzogYm9vbGVhblxuKTogYm9vbGVhbiB7XG5cdGxldCBzdGF0dXNWaXNpYmlsaXR5ID0gZmFsc2U7XG5cdGlmIChhRmlsdGVyZWRNZXNzYWdlcyAmJiBhRmlsdGVyZWRNZXNzYWdlcy5sZW5ndGggPiAwICYmIChpc1NlbWFudGljS2V5SW5GaWVsZEdyb3VwIHx8IGNvbHVtbk5hbWUgPT09IHNlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3IpKSB7XG5cdFx0Y29uc3Qgc0N1cnJlbnRDb250ZXh0UGF0aCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKSA/IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpIDogdW5kZWZpbmVkO1xuXHRcdGFGaWx0ZXJlZE1lc3NhZ2VzLmZvckVhY2goKG9NZXNzYWdlKSA9PiB7XG5cdFx0XHRpZiAob01lc3NhZ2UuZ2V0VHlwZSgpID09PSBcIkVycm9yXCIgJiYgc0N1cnJlbnRDb250ZXh0UGF0aCAmJiBvTWVzc2FnZS5nZXRUYXJnZXRzKClbMF0uaW5kZXhPZihzQ3VycmVudENvbnRleHRQYXRoKSA9PT0gMCkge1xuXHRcdFx0XHRzdGF0dXNWaXNpYmlsaXR5ID0gdHJ1ZTtcblx0XHRcdFx0cmV0dXJuIHN0YXR1c1Zpc2liaWxpdHk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIHN0YXR1c1Zpc2liaWxpdHk7XG59O1xuZ2V0RXJyb3JTdGF0dXNUZXh0VmlzaWJpbGl0eUZvcm1hdHRlci5fX2Z1bmN0aW9uTmFtZSA9IFwic2FwLmZlLm1hY3Jvcy5mb3JtYXR0ZXJzLlRhYmxlRm9ybWF0dGVyI2dldEVycm9yU3RhdHVzVGV4dFZpc2liaWxpdHlGb3JtYXR0ZXJcIjtcblxuLyoqXG4gKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSByb3cgaGlnaGxpZ2h0aW5nIGJhc2VkIG9uIHRoZSBjcml0aWNhbGl0eSB2YWx1ZSBhbmQgdGhlIG1lc3NhZ2VzLlxuICogQHBhcmFtIGNyaXRpY2FsaXR5VmFsdWVcbiAqIEBwYXJhbSBhRmlsdGVyZWRNZXNzYWdlc1xuICogQHBhcmFtIGhhc0FjdGl2ZUVudGl0eVxuICogQHBhcmFtIGlzQWN0aXZlRW50aXR5XG4gKiBAcGFyYW0gaXNEcmFmdE1vZGVcbiAqIEBwYXJhbSBjb250ZXh0UGF0aFxuICogQHBhcmFtIGlzSW5hY3RpdmVcbiAqL1xuY29uc3Qgcm93SGlnaGxpZ2h0aW5nID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBNYW5hZ2VkT2JqZWN0LFxuXHRjcml0aWNhbGl0eVZhbHVlOiBzdHJpbmcgfCBudW1iZXIsXG5cdGFGaWx0ZXJlZE1lc3NhZ2VzOiBNZXNzYWdlW10sXG5cdGhhc0FjdGl2ZUVudGl0eTogYm9vbGVhbixcblx0aXNBY3RpdmVFbnRpdHk6IGJvb2xlYW4sXG5cdGlzRHJhZnRNb2RlOiBzdHJpbmcsXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0Y29udGV4dFBhdGg6IHN0cmluZyxcblx0aXNJbmFjdGl2ZTogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKTogTWVzc2FnZVR5cGUge1xuXHRsZXQgaUhpZ2hlc3RDcml0aWNhbGl0eVZhbHVlID0gLTE7XG5cdGlmIChhRmlsdGVyZWRNZXNzYWdlcyAmJiBhRmlsdGVyZWRNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3Qgc0N1cnJlbnRDb250ZXh0UGF0aCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRcdGFGaWx0ZXJlZE1lc3NhZ2VzLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0c0N1cnJlbnRDb250ZXh0UGF0aCAmJlxuXHRcdFx0XHRtZXNzYWdlLmdldFRhcmdldHMoKVswXS5pbmRleE9mKHNDdXJyZW50Q29udGV4dFBhdGgpID09PSAwICYmXG5cdFx0XHRcdGlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSA8IGdldE1lc3NhZ2V0eXBlT3JkZXIobWVzc2FnZS5nZXRUeXBlKCkpXG5cdFx0XHQpIHtcblx0XHRcdFx0aUhpZ2hlc3RDcml0aWNhbGl0eVZhbHVlID0gZ2V0TWVzc2FnZXR5cGVPcmRlcihtZXNzYWdlLmdldFR5cGUoKSk7XG5cdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBtZXNzYWdlLmdldFR5cGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRpZiAodHlwZW9mIGNyaXRpY2FsaXR5VmFsdWUgIT09IFwic3RyaW5nXCIpIHtcblx0XHRzd2l0Y2ggKGNyaXRpY2FsaXR5VmFsdWUpIHtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IE1lc3NhZ2VUeXBlLkVycm9yO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IE1lc3NhZ2VUeXBlLldhcm5pbmc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuU3VjY2Vzcztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDU6XG5cdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0XHR9XG5cdH1cblxuXHRpZiAoIShPYmplY3QudmFsdWVzKE1lc3NhZ2VUeXBlKSBhcyBzdHJpbmdbXSkuaW5jbHVkZXMoY3JpdGljYWxpdHlWYWx1ZSkpIHtcblx0XHRMb2cuZXJyb3IoYCcke2NyaXRpY2FsaXR5VmFsdWV9JyBpc24ndCBhIHZhbGlkIHZhbHVlIGZvciBhIHJvdyBoaWdobGlnaHQuYCk7XG5cdFx0cmV0dXJuIE1lc3NhZ2VUeXBlLk5vbmU7XG5cdH1cblxuXHQvLyBJZiB3ZSBoYXZlIGNhbGN1bGF0ZWQgYSBjcml0aWNhbGl0eSA8PiBOb25lLCByZXR1cm4gaXRcblx0aWYgKGNyaXRpY2FsaXR5VmFsdWUgIT09IE1lc3NhZ2VUeXBlLk5vbmUpIHtcblx0XHRyZXR1cm4gY3JpdGljYWxpdHlWYWx1ZSBhcyBNZXNzYWdlVHlwZTtcblx0fVxuXG5cdC8vIElmIG5vdCwgd2Ugc2V0IGNyaXRpY2FsaXR5IHRvICdJbmZvcm1hdGlvbicgZm9yIG5ld2x5IGNyZWF0ZWQgcm93cyBpbiBEcmFmdCBtb2RlLCBhbmQga2VlcCAnTm9uZScgb3RoZXJ3aXNlXG5cdGNvbnN0IGlzTmV3T2JqZWN0ID0gIWhhc0FjdGl2ZUVudGl0eSAmJiAhaXNBY3RpdmVFbnRpdHkgJiYgIWlzSW5hY3RpdmU7XG5cdHJldHVybiBpc0RyYWZ0TW9kZSA9PT0gXCJ0cnVlXCIgJiYgaXNOZXdPYmplY3QgPyBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbiA6IE1lc3NhZ2VUeXBlLk5vbmU7XG59O1xucm93SGlnaGxpZ2h0aW5nLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUubWFjcm9zLmZvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIjcm93SGlnaGxpZ2h0aW5nXCI7XG5cbmNvbnN0IG5hdmlnYXRlZFJvdyA9IGZ1bmN0aW9uICh0aGlzOiBNYW5hZ2VkT2JqZWN0LCBkZWVwZXN0UGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGNvbnN0IHNQYXRoID0gdGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdGlmIChzUGF0aCAmJiBkZWVwZXN0UGF0aCkge1xuXHRcdHJldHVybiBkZWVwZXN0UGF0aC5pbmRleE9mKHNQYXRoKSA9PT0gMDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG5uYXZpZ2F0ZWRSb3cuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNuYXZpZ2F0ZWRSb3dcIjtcblxuLyoqXG4gKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBhbiBNRENDb2x1bW4gYmFzZWQgb24gdGhlIHByb3BlcnR5IGRlZmluaXRpb24uXG4gKiBAcGFyYW0gdGhpcyBUaGUgTURDQ29sdW1uIG9iamVjdFxuICogQHBhcmFtIGVkaXRNb2RlIFRoZSBFZGl0TW9kZSBvZiB0aGUgdGFibGVcbiAqIEBwYXJhbSBpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZSBJbmRpY2F0ZXMgaWYgdGhlIHByb3BlcnRpZXMgY2FjaGUgaXMgYXZhaWxhYmxlXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGhcbiAqIEBwYXJhbSB1c2VSZW1Vbml0IEluZGljYXRlcyBpZiB0aGUgcmVtIHVuaXQgbXVzdCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgY29sdW1uIHdpZHRoIHJlc3VsdFxuICogQHBhcmFtIHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cbiAqIEBwYXJhbSBpc1NvcnRhYmxlQ29sdW1uIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGlzIHNvcnRhYmxlXG4gKiBAcGFyYW0gaXNDb2x1bW5SZXF1aXJlZFxuICogQHJldHVybnMgVGhlIHdpZHRoIG9mIHRoZSBjb2x1bW5cbiAqL1xuY29uc3QgZ2V0Q29sdW1uV2lkdGggPSBmdW5jdGlvbiAoXG5cdHRoaXM6IENvbHVtbixcblx0ZWRpdE1vZGU6IEZpZWxkRWRpdE1vZGUsXG5cdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlOiBib29sZWFuLFxuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0dXNlUmVtVW5pdCA9IHRydWUsXG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyID0gZmFsc2UsXG5cdGlzU29ydGFibGVDb2x1bW4gPSBmYWxzZSxcblx0aXNDb2x1bW5SZXF1aXJlZCA9IGZhbHNlXG4pOiBzdHJpbmcgfCBudWxsIHwgbnVtYmVyIHtcblx0aWYgKCFpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZSkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IG1kY1RhYmxlID0gdGhpcy5nZXRQYXJlbnQoKSBhcyBNRENUYWJsZTtcblx0bGV0IHByb3BlcnRpZXM6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXTtcblx0aWYgKG1kY1RhYmxlPy5nZXRQYXJlbnQoKT8uaXNBKFwic2FwLnVpLm1kYy52YWx1ZWhlbHAuY29udGVudC5NRENUYWJsZVwiKSkge1xuXHRcdHByb3BlcnRpZXMgPSBEZWxlZ2F0ZVV0aWwuZ2V0Q2FjaGVkUHJvcGVydGllcyh0aGlzLmdldFBhcmVudCgpIGFzIE1EQ1RhYmxlKSBhcyBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW107XG5cdH0gZWxzZSB7XG5cdFx0cHJvcGVydGllcyA9IChtZGNUYWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpO1xuXHR9XG5cdGlmICghcHJvcGVydGllcykgcmV0dXJuIG51bGw7XG5cdGNvbnN0IHByb3BlcnR5ID0gcHJvcGVydGllcy5maW5kKChwcm9wKSA9PiBwcm9wLmtleSA9PT0gcHJvcGVydHlOYW1lKTtcblx0aWYgKCFwcm9wZXJ0eSkgcmV0dXJuIG51bGw7XG5cblx0bGV0IGNvbHVtbldpZHRoID0gVGFibGVTaXplSGVscGVyLmdldE1EQ0NvbHVtbldpZHRoRnJvbVByb3BlcnR5KFxuXHRcdHByb3BlcnR5LFxuXHRcdHByb3BlcnRpZXMsXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0aXNTb3J0YWJsZUNvbHVtbixcblx0XHRpc0NvbHVtblJlcXVpcmVkXG5cdCk7XG5cdGNvbnN0IHVuaXRPclRpbWV6b25lID0gcHJvcGVydHkuZXhwb3J0U2V0dGluZ3M/LnVuaXQgfHwgcHJvcGVydHkuZXhwb3J0U2V0dGluZ3M/LnRpbWV6b25lO1xuXHRjb2x1bW5XaWR0aCArPSB1bml0T3JUaW1lem9uZSA/IFNpemVIZWxwZXIuZ2V0QnV0dG9uV2lkdGgodW5pdE9yVGltZXpvbmUpIDogMDtcblx0aWYgKGVkaXRNb2RlID09PSBGaWVsZEVkaXRNb2RlLkVkaXRhYmxlKSB7XG5cdFx0c3dpdGNoIChwcm9wZXJ0eS50eXBlQ29uZmlnPy5iYXNlVHlwZSkge1xuXHRcdFx0Y2FzZSBcIkRhdGVcIjpcblx0XHRcdGNhc2UgXCJUaW1lXCI6XG5cdFx0XHRjYXNlIFwiRGF0ZVRpbWVcIjpcblx0XHRcdFx0Y29sdW1uV2lkdGggKz0gMi44O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0fVxuXHR9XG5cdGlmICh1c2VSZW1Vbml0KSB7XG5cdFx0cmV0dXJuIGNvbHVtbldpZHRoICsgXCJyZW1cIjtcblx0fVxuXHRyZXR1cm4gY29sdW1uV2lkdGg7XG59O1xuZ2V0Q29sdW1uV2lkdGguX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNnZXRDb2x1bW5XaWR0aFwiO1xuXG4vKipcbiAqIE1ldGhvZCB0byBjYWxjdWxhdGUgdGhlIHdpZHRoIG9mIGFuIE1EQ0NvbHVtbiBmb3IgdmFsdWVIZWxwIHRoZSB0YWJsZS5cbiAqIEBwYXJhbSB0aGlzIFRoZSBNRENDb2x1bW4gb2JqZWN0XG4gKiBAcGFyYW0gaXNQcm9wZXJ0aWVzQ2FjaGVBdmFpbGFibGUgSW5kaWNhdGVzIGlmIHRoZSBwcm9wZXJ0aWVzIGNhY2hlIGlzIGF2YWlsYWJsZVxuICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2Ugd2FudCB0byBjYWxjdWxhdGUgdGhlIHdpZHRoXG4gKiBAcGFyYW0gaXNUYXJnZXRTbWFsbERldmljZSBJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZGV2aWNlIGhhcyBhIHNtYWxsIGRldmljZVxuICogQHBhcmFtIHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXG4gKiBAcmV0dXJucyBUaGUgd2lkdGggb2YgdGhlIGNvbHVtblxuICovXG5jb25zdCBnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBDb2x1bW4sXG5cdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlOiBib29sZWFuLFxuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0aXNUYXJnZXRTbWFsbERldmljZTogYm9vbGVhbixcblx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIgPSBmYWxzZVxuKTogbnVsbCB8IG51bWJlciB7XG5cdGNvbnN0IGlzU21hbGxEZXZpY2UgPSBDb21tb25VdGlscy5pc1NtYWxsRGV2aWNlKCk7XG5cdGNvbnN0IHdpdGhVbml0ID0gIWlzU21hbGxEZXZpY2U7XG5cblx0cmV0dXJuIChpc1NtYWxsRGV2aWNlICYmIGlzVGFyZ2V0U21hbGxEZXZpY2UpIHx8ICghaXNTbWFsbERldmljZSAmJiAhaXNUYXJnZXRTbWFsbERldmljZSlcblx0XHQ/ICh0YWJsZUZvcm1hdHRlci5nZXRDb2x1bW5XaWR0aC5jYWxsKFxuXHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRGaWVsZEVkaXRNb2RlLkRpc3BsYXksXG5cdFx0XHRcdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlLFxuXHRcdFx0XHRwcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdHdpdGhVbml0LFxuXHRcdFx0XHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclxuXHRcdCAgKSBhcyBudWxsIHwgbnVtYmVyKVxuXHRcdDogbnVsbDtcbn07XG5cbmdldENvbHVtbldpZHRoRm9yVmFsdWVIZWxwVGFibGUuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlXCI7XG5cbnR5cGUgRmllbGRXcmFwcGVyRml4ZWQgPSBGaWVsZFdyYXBwZXIgJiB7IGdldENvbnRlbnREaXNwbGF5OiBGdW5jdGlvbjsgZ2V0Q29udGVudEVkaXQ6IEZ1bmN0aW9uIH07XG5mdW5jdGlvbiBpc1JhdGluZ0luZGljYXRvcihvQ29udHJvbDogRmllbGRXcmFwcGVyRml4ZWQpOiBib29sZWFuIHtcblx0aWYgKG9Db250cm9sLmlzQShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmllbGRXcmFwcGVyXCIpKSB7XG5cdFx0Y29uc3QgdkNvbnRlbnREaXNwbGF5ID0gQXJyYXkuaXNBcnJheShvQ29udHJvbC5nZXRDb250ZW50RGlzcGxheSgpKVxuXHRcdFx0PyBvQ29udHJvbC5nZXRDb250ZW50RGlzcGxheSgpWzBdXG5cdFx0XHQ6IG9Db250cm9sLmdldENvbnRlbnREaXNwbGF5KCk7XG5cdFx0aWYgKHZDb250ZW50RGlzcGxheSAmJiB2Q29udGVudERpc3BsYXkuaXNBKFwic2FwLm0uUmF0aW5nSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBfdXBkYXRlU3R5bGVDbGFzc0ZvclJhdGluZ0luZGljYXRvcihmaWVsZFdyYXBwZXI6IEZpZWxkV3JhcHBlckZpeGVkLCBsYXN0OiBib29sZWFuKTogdm9pZCB7XG5cdGNvbnN0IHZDb250ZW50RGlzcGxheSA9IEFycmF5LmlzQXJyYXkoZmllbGRXcmFwcGVyLmdldENvbnRlbnREaXNwbGF5KCkpXG5cdFx0PyBmaWVsZFdyYXBwZXIuZ2V0Q29udGVudERpc3BsYXkoKVswXVxuXHRcdDogZmllbGRXcmFwcGVyLmdldENvbnRlbnREaXNwbGF5KCk7XG5cdGNvbnN0IHZDb250ZW50RWRpdCA9IEFycmF5LmlzQXJyYXkoZmllbGRXcmFwcGVyLmdldENvbnRlbnRFZGl0KCkpID8gZmllbGRXcmFwcGVyLmdldENvbnRlbnRFZGl0KClbMF0gOiBmaWVsZFdyYXBwZXIuZ2V0Q29udGVudEVkaXQoKTtcblxuXHRpZiAobGFzdCkge1xuXHRcdHZDb250ZW50RGlzcGxheS5hZGRTdHlsZUNsYXNzKFwic2FwVWlOb01hcmdpbkJvdHRvbVwiKTtcblx0XHR2Q29udGVudERpc3BsYXkuYWRkU3R5bGVDbGFzcyhcInNhcFVpTm9NYXJnaW5Ub3BcIik7XG5cdFx0dkNvbnRlbnRFZGl0LnJlbW92ZVN0eWxlQ2xhc3MoXCJzYXBVaVRpbnlNYXJnaW5Cb3R0b21cIik7XG5cdH0gZWxzZSB7XG5cdFx0dkNvbnRlbnREaXNwbGF5LmFkZFN0eWxlQ2xhc3MoXCJzYXBVaU5vTWFyZ2luQm90dG9tXCIpO1xuXHRcdHZDb250ZW50RGlzcGxheS5yZW1vdmVTdHlsZUNsYXNzKFwic2FwVWlOb01hcmdpblRvcFwiKTtcblx0XHR2Q29udGVudEVkaXQuYWRkU3R5bGVDbGFzcyhcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwiKTtcblx0fVxufVxuZnVuY3Rpb24gZ2V0VkJveFZpc2liaWxpdHkodGhpczogVGFibGUsIC4uLmFyZ3M6IHVua25vd25bXSk6IGJvb2xlYW4ge1xuXHRjb25zdCBhSXRlbXMgPSB0aGlzLmdldEl0ZW1zKCkgYXMgdW5rbm93biBhcyBGaWVsZFdyYXBwZXJGaXhlZFtdO1xuXHRsZXQgYkxhc3RFbGVtZW50Rm91bmQgPSBmYWxzZTtcblx0Zm9yIChsZXQgaW5kZXggPSBhSXRlbXMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuXHRcdGlmICghYkxhc3RFbGVtZW50Rm91bmQpIHtcblx0XHRcdGlmIChhcmdzW2luZGV4XSAhPT0gdHJ1ZSkge1xuXHRcdFx0XHRiTGFzdEVsZW1lbnRGb3VuZCA9IHRydWU7XG5cdFx0XHRcdGlmIChpc1JhdGluZ0luZGljYXRvcihhSXRlbXNbaW5kZXhdKSkge1xuXHRcdFx0XHRcdF91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yKGFJdGVtc1tpbmRleF0sIHRydWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFJdGVtc1tpbmRleF0ucmVtb3ZlU3R5bGVDbGFzcyhcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoaXNSYXRpbmdJbmRpY2F0b3IoYUl0ZW1zW2luZGV4XSkpIHtcblx0XHRcdF91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yKGFJdGVtc1tpbmRleF0sIGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YUl0ZW1zW2luZGV4XS5hZGRTdHlsZUNsYXNzKFwic2FwVWlUaW55TWFyZ2luQm90dG9tXCIpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cbmdldFZCb3hWaXNpYmlsaXR5Ll9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUubWFjcm9zLmZvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIjZ2V0VkJveFZpc2liaWxpdHlcIjtcblxuLy8gU2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2Z1bmN0aW9ucy5odG1sI3RoaXMtcGFyYW1ldGVycyBmb3IgbW9yZSBkZXRhaWwgb24gdGhpcyB3ZWlyZCBzeW50YXhcbi8qKlxuICogQ29sbGVjdGlvbiBvZiB0YWJsZSBmb3JtYXR0ZXJzLlxuICogQHBhcmFtIHRoaXMgVGhlIGNvbnRleHRcbiAqIEBwYXJhbSBzTmFtZSBUaGUgaW5uZXIgZnVuY3Rpb24gbmFtZVxuICogQHBhcmFtIG9BcmdzIFRoZSBpbm5lciBmdW5jdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgZnJvbSB0aGUgaW5uZXIgZnVuY3Rpb25cbiAqL1xuY29uc3QgdGFibGVGb3JtYXR0ZXIgPSBmdW5jdGlvbiAodGhpczogb2JqZWN0LCBzTmFtZTogc3RyaW5nLCAuLi5vQXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG5cdGlmICh0YWJsZUZvcm1hdHRlci5oYXNPd25Qcm9wZXJ0eShzTmFtZSkpIHtcblx0XHRyZXR1cm4gKHRhYmxlRm9ybWF0dGVyIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+KVtzTmFtZV0uYXBwbHkodGhpcywgb0FyZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG59O1xuXG50YWJsZUZvcm1hdHRlci52YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzID0gdmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcztcbnRhYmxlRm9ybWF0dGVyLnJvd0hpZ2hsaWdodGluZyA9IHJvd0hpZ2hsaWdodGluZztcbnRhYmxlRm9ybWF0dGVyLm5hdmlnYXRlZFJvdyA9IG5hdmlnYXRlZFJvdztcbnRhYmxlRm9ybWF0dGVyLmdldEVycm9yU3RhdHVzVGV4dFZpc2liaWxpdHlGb3JtYXR0ZXIgPSBnZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyO1xudGFibGVGb3JtYXR0ZXIuZ2V0VkJveFZpc2liaWxpdHkgPSBnZXRWQm94VmlzaWJpbGl0eTtcbnRhYmxlRm9ybWF0dGVyLmlzUmF0aW5nSW5kaWNhdG9yID0gaXNSYXRpbmdJbmRpY2F0b3I7IC8vIGZvciB1bml0IHRlc3RzXG50YWJsZUZvcm1hdHRlci5nZXRDb2x1bW5XaWR0aCA9IGdldENvbHVtbldpZHRoO1xudGFibGVGb3JtYXR0ZXIuZ2V0Q29sdW1uV2lkdGhGb3JWYWx1ZUhlbHBUYWJsZSA9IGdldENvbHVtbldpZHRoRm9yVmFsdWVIZWxwVGFibGU7XG5cbk9iamVjdFBhdGguc2V0KFwic2FwLmZlLm1hY3Jvcy5mb3JtYXR0ZXJzLlRhYmxlRm9ybWF0dGVyXCIsIHRhYmxlRm9ybWF0dGVyKTtcblxuZXhwb3J0IGRlZmF1bHQgdGFibGVGb3JtYXR0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFpQkEsTUFBTUEsbUJBQW1CLEdBQUcsU0FBQUEsQ0FBVUMsV0FBbUIsRUFBVTtJQUNsRSxRQUFRQSxXQUFXO01BQ2xCLEtBQUssT0FBTztRQUNYLE9BQU8sQ0FBQztNQUNULEtBQUssU0FBUztRQUNiLE9BQU8sQ0FBQztNQUNULEtBQUssYUFBYTtRQUNqQixPQUFPLENBQUM7TUFDVCxLQUFLLE1BQU07UUFDVixPQUFPLENBQUM7TUFDVDtRQUNDLE9BQU8sQ0FBQyxDQUFDO0lBQ1g7RUFDRCxDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxTQUFBQSxDQUFVQyxtQkFBMkQsRUFBVztJQUNqSCxJQUFJLENBQUNBLG1CQUFtQixFQUFFO01BQ3pCLE9BQU8sS0FBSztJQUNiO0lBQ0EsTUFBTUMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ0gsbUJB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
|
|
280
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRNZXNzYWdldHlwZU9yZGVyIiwibWVzc2FnZVR5cGUiLCJ2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzIiwiZmllbGRWYWxpZGl0eU9iamVjdCIsImZpZWxkS2V5cyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJldmVyeSIsImtleSIsIl9fZnVuY3Rpb25OYW1lIiwiZ2V0RXJyb3JTdGF0dXNUZXh0VmlzaWJpbGl0eUZvcm1hdHRlciIsInNlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3IiLCJhRmlsdGVyZWRNZXNzYWdlcyIsImNvbHVtbk5hbWUiLCJpc1NlbWFudGljS2V5SW5GaWVsZEdyb3VwIiwic3RhdHVzVmlzaWJpbGl0eSIsInNDdXJyZW50Q29udGV4dFBhdGgiLCJnZXRCaW5kaW5nQ29udGV4dCIsImdldFBhdGgiLCJ1bmRlZmluZWQiLCJmb3JFYWNoIiwib01lc3NhZ2UiLCJnZXRUeXBlIiwiZ2V0VGFyZ2V0cyIsImluZGV4T2YiLCJyb3dIaWdobGlnaHRpbmciLCJjcml0aWNhbGl0eVZhbHVlIiwiaGFzQWN0aXZlRW50aXR5IiwiaXNBY3RpdmVFbnRpdHkiLCJpc0RyYWZ0TW9kZSIsImNvbnRleHRQYXRoIiwiaXNJbmFjdGl2ZSIsImlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSIsIm1lc3NhZ2UiLCJNZXNzYWdlVHlwZSIsIkVycm9yIiwiV2FybmluZyIsIlN1Y2Nlc3MiLCJJbmZvcm1hdGlvbiIsIk5vbmUiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsIkxvZyIsImVycm9yIiwiaXNOZXdPYmplY3QiLCJuYXZpZ2F0ZWRSb3ciLCJkZWVwZXN0UGF0aCIsInNQYXRoIiwiZ2V0Q29sdW1uV2lkdGgiLCJlZGl0TW9kZSIsImlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlIiwicHJvcGVydHlOYW1lIiwidXNlUmVtVW5pdCIsImFyZ3VtZW50cyIsIndpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIiwiaXNTb3J0YWJsZUNvbHVtbiIsImlzQ29sdW1uUmVxdWlyZWQiLCJtZGNUYWJsZSIsImdldFBhcmVudCIsInByb3BlcnRpZXMiLCJpc0EiLCJEZWxlZ2F0ZVV0aWwiLCJnZXRDYWNoZWRQcm9wZXJ0aWVzIiwiZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcyIsInByb3BlcnR5IiwiZmluZCIsInByb3AiLCJjb2x1bW5XaWR0aCIsIlRhYmxlU2l6ZUhlbHBlciIsImdldE1EQ0NvbHVtbldpZHRoRnJvbVByb3BlcnR5IiwidW5pdE9yVGltZXpvbmUiLCJleHBvcnRTZXR0aW5ncyIsInVuaXQiLCJ0aW1lem9uZSIsIlNpemVIZWxwZXIiLCJnZXRCdXR0b25XaWR0aCIsIkZpZWxkRWRpdE1vZGUiLCJFZGl0YWJsZSIsInVuaXRPckN1cnJlbmN5UHJvcGVydHkiLCJ1bml0UHJvcGVydHkiLCJ0eXBlQ29uZmlnIiwiYmFzZVR5cGUiLCJnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlIiwiaXNUYXJnZXRTbWFsbERldmljZSIsImlzU21hbGxEZXZpY2UiLCJDb21tb25VdGlscyIsIndpdGhVbml0IiwidGFibGVGb3JtYXR0ZXIiLCJjYWxsIiwiRGlzcGxheSIsImlzUmF0aW5nSW5kaWNhdG9yIiwib0NvbnRyb2wiLCJ2Q29udGVudERpc3BsYXkiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRDb250ZW50RGlzcGxheSIsIl91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yIiwiZmllbGRXcmFwcGVyIiwibGFzdCIsInZDb250ZW50RWRpdCIsImdldENvbnRlbnRFZGl0IiwiYWRkU3R5bGVDbGFzcyIsInJlbW92ZVN0eWxlQ2xhc3MiLCJnZXRWQm94VmlzaWJpbGl0eSIsImFJdGVtcyIsImdldEl0ZW1zIiwiYkxhc3RFbGVtZW50Rm91bmQiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJpbmRleCIsInNOYW1lIiwiaGFzT3duUHJvcGVydHkiLCJfbGVuMiIsIm9BcmdzIiwiX2tleTIiLCJhcHBseSIsIk9iamVjdFBhdGgiLCJzZXQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlRhYmxlRm9ybWF0dGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IE9iamVjdFBhdGggZnJvbSBcInNhcC9iYXNlL3V0aWwvT2JqZWN0UGF0aFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IFNpemVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU2l6ZUhlbHBlclwiO1xuaW1wb3J0IERlbGVnYXRlVXRpbCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIFRhYmxlQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL3RhYmxlL1RhYmxlQVBJXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZUFQSVwiO1xuaW1wb3J0IFRhYmxlU2l6ZUhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy90YWJsZS9UYWJsZVNpemVIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFRhYmxlIGZyb20gXCJzYXAvbS9UYWJsZVwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCBGaWVsZEVkaXRNb2RlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL0ZpZWxkRWRpdE1vZGVcIjtcbmltcG9ydCB0eXBlIENvbHVtbiBmcm9tIFwic2FwL3VpL21kYy90YWJsZS9Db2x1bW5cIjtcbmltcG9ydCB0eXBlIE1EQ1RhYmxlIGZyb20gXCJzYXAvdWkvbWRjL3ZhbHVlaGVscC9jb250ZW50L01EQ1RhYmxlXCI7XG5pbXBvcnQgdHlwZSBGaWVsZFdyYXBwZXIgZnJvbSBcIi4uL2NvbnRyb2xzL0ZpZWxkV3JhcHBlclwiO1xuXG5jb25zdCBnZXRNZXNzYWdldHlwZU9yZGVyID0gZnVuY3Rpb24gKG1lc3NhZ2VUeXBlOiBzdHJpbmcpOiBudW1iZXIge1xuXHRzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7XG5cdFx0Y2FzZSBcIkVycm9yXCI6XG5cdFx0XHRyZXR1cm4gNDtcblx0XHRjYXNlIFwiV2FybmluZ1wiOlxuXHRcdFx0cmV0dXJuIDM7XG5cdFx0Y2FzZSBcIkluZm9ybWF0aW9uXCI6XG5cdFx0XHRyZXR1cm4gMjtcblx0XHRjYXNlIFwiTm9uZVwiOlxuXHRcdFx0cmV0dXJuIDE7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiAtMTtcblx0fVxufTtcblxuLyoqXG4gKiBHZXRzIHRoZSB2YWxpZGl0eSBvZiBjcmVhdGlvbiByb3cgZmllbGRzLlxuICogQHBhcmFtIGZpZWxkVmFsaWRpdHlPYmplY3QgT2JqZWN0IGhvbGRpbmcgdGhlIGZpZWxkc1xuICogQHJldHVybnMgYHRydWVgIGlmIGFsbCB0aGUgZmllbGRzIGluIHRoZSBjcmVhdGlvbiByb3cgYXJlIHZhbGlkLCBgZmFsc2VgIG90aGVyd2lzZVxuICovXG5jb25zdCB2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzID0gZnVuY3Rpb24gKGZpZWxkVmFsaWRpdHlPYmplY3Q/OiBSZWNvcmQ8c3RyaW5nLCB7IHZhbGlkaXR5OiBib29sZWFuIH0+KTogYm9vbGVhbiB7XG5cdGlmICghZmllbGRWYWxpZGl0eU9iamVjdCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRjb25zdCBmaWVsZEtleXMgPSBPYmplY3Qua2V5cyhmaWVsZFZhbGlkaXR5T2JqZWN0KTtcblx0cmV0dXJuIChcblx0XHRmaWVsZEtleXMubGVuZ3RoID4gMCAmJlxuXHRcdGZpZWxkS2V5cy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG5cdFx0XHRyZXR1cm4gZmllbGRWYWxpZGl0eU9iamVjdFtrZXldW1widmFsaWRpdHlcIl07XG5cdFx0fSlcblx0KTtcbn07XG52YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUubWFjcm9zLmZvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIjdmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkc1wiO1xuXG4vKipcbiAqIEBwYXJhbSB0aGlzIFRoZSBvYmplY3Qgc3RhdHVzIGNvbnRyb2wuXG4gKiBAcGFyYW0gc2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvciBUaGUgcHJvcGVydHkgbmFtZSBvZiB0aGUgZHJhZnQgaW5kaWNhdG9yLlxuICogQHBhcmFtIGFGaWx0ZXJlZE1lc3NhZ2VzIEFycmF5IG9mIG1lc3NhZ2VzLlxuICogQHBhcmFtIGNvbHVtbk5hbWVcbiAqIEBwYXJhbSBpc1NlbWFudGljS2V5SW5GaWVsZEdyb3VwIEZsYWcgd2hpY2ggc2F5cyBpZiBzZW1hbnRpYyBrZXkgaXMgYSBwYXJ0IG9mIGZpZWxkIGdyb3VwLlxuICogQHJldHVybnMgVGhlIHZhbHVlIGZvciB0aGUgdmlzaWJpbGl0eSBwcm9wZXJ0eSBvZiB0aGUgb2JqZWN0IHN0YXR1c1xuICovXG5jb25zdCBnZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBNYW5hZ2VkT2JqZWN0LFxuXHRzZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yOiBzdHJpbmcsXG5cdGFGaWx0ZXJlZE1lc3NhZ2VzOiBNZXNzYWdlW10sXG5cdGNvbHVtbk5hbWU6IHN0cmluZyxcblx0aXNTZW1hbnRpY0tleUluRmllbGRHcm91cD86IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuXHRsZXQgc3RhdHVzVmlzaWJpbGl0eSA9IGZhbHNlO1xuXHRpZiAoYUZpbHRlcmVkTWVzc2FnZXMgJiYgYUZpbHRlcmVkTWVzc2FnZXMubGVuZ3RoID4gMCAmJiAoaXNTZW1hbnRpY0tleUluRmllbGRHcm91cCB8fCBjb2x1bW5OYW1lID09PSBzZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yKSkge1xuXHRcdGNvbnN0IHNDdXJyZW50Q29udGV4dFBhdGggPSB0aGlzLmdldEJpbmRpbmdDb250ZXh0KCkgPyB0aGlzLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKSA6IHVuZGVmaW5lZDtcblx0XHRhRmlsdGVyZWRNZXNzYWdlcy5mb3JFYWNoKChvTWVzc2FnZSkgPT4ge1xuXHRcdFx0aWYgKG9NZXNzYWdlLmdldFR5cGUoKSA9PT0gXCJFcnJvclwiICYmIHNDdXJyZW50Q29udGV4dFBhdGggJiYgb01lc3NhZ2UuZ2V0VGFyZ2V0cygpWzBdLmluZGV4T2Yoc0N1cnJlbnRDb250ZXh0UGF0aCkgPT09IDApIHtcblx0XHRcdFx0c3RhdHVzVmlzaWJpbGl0eSA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBzdGF0dXNWaXNpYmlsaXR5O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBzdGF0dXNWaXNpYmlsaXR5O1xufTtcbmdldEVycm9yU3RhdHVzVGV4dFZpc2liaWxpdHlGb3JtYXR0ZXIuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNnZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyXCI7XG5cbi8qKlxuICogTWV0aG9kIHRvIGNhbGN1bGF0ZSB0aGUgcm93IGhpZ2hsaWdodGluZyBiYXNlZCBvbiB0aGUgY3JpdGljYWxpdHkgdmFsdWUgYW5kIHRoZSBtZXNzYWdlcy5cbiAqIEBwYXJhbSBjcml0aWNhbGl0eVZhbHVlXG4gKiBAcGFyYW0gYUZpbHRlcmVkTWVzc2FnZXNcbiAqIEBwYXJhbSBoYXNBY3RpdmVFbnRpdHlcbiAqIEBwYXJhbSBpc0FjdGl2ZUVudGl0eVxuICogQHBhcmFtIGlzRHJhZnRNb2RlXG4gKiBAcGFyYW0gY29udGV4dFBhdGhcbiAqIEBwYXJhbSBpc0luYWN0aXZlXG4gKi9cbmNvbnN0IHJvd0hpZ2hsaWdodGluZyA9IGZ1bmN0aW9uIChcblx0dGhpczogTWFuYWdlZE9iamVjdCxcblx0Y3JpdGljYWxpdHlWYWx1ZTogc3RyaW5nIHwgbnVtYmVyLFxuXHRhRmlsdGVyZWRNZXNzYWdlczogTWVzc2FnZVtdIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRoYXNBY3RpdmVFbnRpdHk6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdGlzQWN0aXZlRW50aXR5OiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRpc0RyYWZ0TW9kZTogc3RyaW5nLFxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGNvbnRleHRQYXRoOiBzdHJpbmcsXG5cdGlzSW5hY3RpdmU6IGJvb2xlYW4gfCBzdHJpbmcgfCB1bmRlZmluZWRcbik6IE1lc3NhZ2VUeXBlIHtcblx0Ly8gU2FuaXRpemUgc3RyaW5nIFwidW5kZWZpbmVkXCIgdmFsdWVzIHRvIGFjdHVhbCB1bmRlZmluZWRcblx0YUZpbHRlcmVkTWVzc2FnZXMgPSBhRmlsdGVyZWRNZXNzYWdlcyA9PT0gXCJ1bmRlZmluZWRcIiA/IHVuZGVmaW5lZCA6IGFGaWx0ZXJlZE1lc3NhZ2VzO1xuXHRoYXNBY3RpdmVFbnRpdHkgPSBoYXNBY3RpdmVFbnRpdHkgPT09IFwidW5kZWZpbmVkXCIgPyB1bmRlZmluZWQgOiBoYXNBY3RpdmVFbnRpdHk7XG5cdGlzQWN0aXZlRW50aXR5ID0gaXNBY3RpdmVFbnRpdHkgPT09IFwidW5kZWZpbmVkXCIgPyB1bmRlZmluZWQgOiBpc0FjdGl2ZUVudGl0eTtcblx0aXNJbmFjdGl2ZSA9IGlzSW5hY3RpdmUgPT09IFwidW5kZWZpbmVkXCIgPyB1bmRlZmluZWQgOiBpc0luYWN0aXZlO1xuXHRsZXQgaUhpZ2hlc3RDcml0aWNhbGl0eVZhbHVlID0gLTE7XG5cdGlmIChhRmlsdGVyZWRNZXNzYWdlcyAmJiBhRmlsdGVyZWRNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3Qgc0N1cnJlbnRDb250ZXh0UGF0aCA9IHRoaXMuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpO1xuXHRcdChhRmlsdGVyZWRNZXNzYWdlcyBhcyBNZXNzYWdlW10pLmZvckVhY2goKG1lc3NhZ2UpID0+IHtcblx0XHRcdGlmIChcblx0XHRcdFx0c0N1cnJlbnRDb250ZXh0UGF0aCAmJlxuXHRcdFx0XHRtZXNzYWdlLmdldFRhcmdldHMoKVswXS5pbmRleE9mKHNDdXJyZW50Q29udGV4dFBhdGgpID09PSAwICYmXG5cdFx0XHRcdGlIaWdoZXN0Q3JpdGljYWxpdHlWYWx1ZSA8IGdldE1lc3NhZ2V0eXBlT3JkZXIobWVzc2FnZS5nZXRUeXBlKCkpXG5cdFx0XHQpIHtcblx0XHRcdFx0aUhpZ2hlc3RDcml0aWNhbGl0eVZhbHVlID0gZ2V0TWVzc2FnZXR5cGVPcmRlcihtZXNzYWdlLmdldFR5cGUoKSk7XG5cdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBtZXNzYWdlLmdldFR5cGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRpZiAodHlwZW9mIGNyaXRpY2FsaXR5VmFsdWUgIT09IFwic3RyaW5nXCIpIHtcblx0XHRzd2l0Y2ggKGNyaXRpY2FsaXR5VmFsdWUpIHtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IE1lc3NhZ2VUeXBlLkVycm9yO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0Y3JpdGljYWxpdHlWYWx1ZSA9IE1lc3NhZ2VUeXBlLldhcm5pbmc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAzOlxuXHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuU3VjY2Vzcztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDU6XG5cdFx0XHRcdGNyaXRpY2FsaXR5VmFsdWUgPSBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRjcml0aWNhbGl0eVZhbHVlID0gTWVzc2FnZVR5cGUuTm9uZTtcblx0XHR9XG5cdH1cblxuXHRpZiAoIShPYmplY3QudmFsdWVzKE1lc3NhZ2VUeXBlKSBhcyBzdHJpbmdbXSkuaW5jbHVkZXMoY3JpdGljYWxpdHlWYWx1ZSkpIHtcblx0XHRMb2cuZXJyb3IoYCcke2NyaXRpY2FsaXR5VmFsdWV9JyBpc24ndCBhIHZhbGlkIHZhbHVlIGZvciBhIHJvdyBoaWdobGlnaHQuYCk7XG5cdFx0cmV0dXJuIE1lc3NhZ2VUeXBlLk5vbmU7XG5cdH1cblxuXHQvLyBJZiB3ZSBoYXZlIGNhbGN1bGF0ZWQgYSBjcml0aWNhbGl0eSA8PiBOb25lLCByZXR1cm4gaXRcblx0aWYgKGNyaXRpY2FsaXR5VmFsdWUgIT09IE1lc3NhZ2VUeXBlLk5vbmUpIHtcblx0XHRyZXR1cm4gY3JpdGljYWxpdHlWYWx1ZSBhcyBNZXNzYWdlVHlwZTtcblx0fVxuXG5cdC8vIElmIG5vdCwgd2Ugc2V0IGNyaXRpY2FsaXR5IHRvICdJbmZvcm1hdGlvbicgZm9yIG5ld2x5IGNyZWF0ZWQgcm93cyBpbiBEcmFmdCBtb2RlLCBhbmQga2VlcCAnTm9uZScgb3RoZXJ3aXNlXG5cdGNvbnN0IGlzTmV3T2JqZWN0ID0gIWhhc0FjdGl2ZUVudGl0eSAmJiAhaXNBY3RpdmVFbnRpdHkgJiYgIWlzSW5hY3RpdmU7XG5cdHJldHVybiBpc0RyYWZ0TW9kZSA9PT0gXCJ0cnVlXCIgJiYgaXNOZXdPYmplY3QgPyBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbiA6IE1lc3NhZ2VUeXBlLk5vbmU7XG59O1xucm93SGlnaGxpZ2h0aW5nLl9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUubWFjcm9zLmZvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIjcm93SGlnaGxpZ2h0aW5nXCI7XG5cbmNvbnN0IG5hdmlnYXRlZFJvdyA9IGZ1bmN0aW9uICh0aGlzOiBNYW5hZ2VkT2JqZWN0LCBkZWVwZXN0UGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG5cdGNvbnN0IHNQYXRoID0gdGhpcy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdGlmIChzUGF0aCAmJiBkZWVwZXN0UGF0aCkge1xuXHRcdHJldHVybiBkZWVwZXN0UGF0aC5pbmRleE9mKHNQYXRoKSA9PT0gMDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG5uYXZpZ2F0ZWRSb3cuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNuYXZpZ2F0ZWRSb3dcIjtcblxuLyoqXG4gKiBNZXRob2QgdG8gY2FsY3VsYXRlIHRoZSB3aWR0aCBvZiBhbiBNRENDb2x1bW4gYmFzZWQgb24gdGhlIHByb3BlcnR5IGRlZmluaXRpb24uXG4gKiBAcGFyYW0gdGhpcyBUaGUgTURDQ29sdW1uIG9iamVjdFxuICogQHBhcmFtIGVkaXRNb2RlIFRoZSBFZGl0TW9kZSBvZiB0aGUgdGFibGVcbiAqIEBwYXJhbSBpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZSBJbmRpY2F0ZXMgaWYgdGhlIHByb3BlcnRpZXMgY2FjaGUgaXMgYXZhaWxhYmxlXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSB3YW50IHRvIGNhbGN1bGF0ZSB0aGUgd2lkdGhcbiAqIEBwYXJhbSB1c2VSZW1Vbml0IEluZGljYXRlcyBpZiB0aGUgcmVtIHVuaXQgbXVzdCBiZSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgY29sdW1uIHdpZHRoIHJlc3VsdFxuICogQHBhcmFtIHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGhlYWRlciBzaG91bGQgYmUgYSBwYXJ0IG9mIHRoZSB3aWR0aCBjYWxjdWxhdGlvbi5cbiAqIEBwYXJhbSBpc1NvcnRhYmxlQ29sdW1uIEluZGljYXRlcyBpZiB0aGUgY29sdW1uIGlzIHNvcnRhYmxlXG4gKiBAcGFyYW0gaXNDb2x1bW5SZXF1aXJlZFxuICogQHJldHVybnMgVGhlIHdpZHRoIG9mIHRoZSBjb2x1bW5cbiAqL1xuY29uc3QgZ2V0Q29sdW1uV2lkdGggPSBmdW5jdGlvbiAoXG5cdHRoaXM6IENvbHVtbixcblx0ZWRpdE1vZGU6IEZpZWxkRWRpdE1vZGUsXG5cdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlOiBib29sZWFuLFxuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0dXNlUmVtVW5pdCA9IHRydWUsXG5cdHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyID0gZmFsc2UsXG5cdGlzU29ydGFibGVDb2x1bW4gPSBmYWxzZSxcblx0aXNDb2x1bW5SZXF1aXJlZCA9IGZhbHNlXG4pOiBzdHJpbmcgfCBudWxsIHwgbnVtYmVyIHtcblx0aWYgKCFpc1Byb3BlcnRpZXNDYWNoZUF2YWlsYWJsZSkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cdGNvbnN0IG1kY1RhYmxlID0gdGhpcy5nZXRQYXJlbnQoKSBhcyBNRENUYWJsZTtcblx0bGV0IHByb3BlcnRpZXM6IEVuaGFuY2VkRkVQcm9wZXJ0eUluZm9bXTtcblx0aWYgKG1kY1RhYmxlPy5nZXRQYXJlbnQoKT8uaXNBKFwic2FwLnVpLm1kYy52YWx1ZWhlbHAuY29udGVudC5NRENUYWJsZVwiKSkge1xuXHRcdHByb3BlcnRpZXMgPSBEZWxlZ2F0ZVV0aWwuZ2V0Q2FjaGVkUHJvcGVydGllcyh0aGlzLmdldFBhcmVudCgpIGFzIE1EQ1RhYmxlKSBhcyBFbmhhbmNlZEZFUHJvcGVydHlJbmZvW107XG5cdH0gZWxzZSB7XG5cdFx0cHJvcGVydGllcyA9IChtZGNUYWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSkuZ2V0RW5oYW5jZWRGZXRjaGVkUHJvcGVydHlJbmZvcygpO1xuXHR9XG5cdGlmICghcHJvcGVydGllcykgcmV0dXJuIG51bGw7XG5cdGNvbnN0IHByb3BlcnR5ID0gcHJvcGVydGllcy5maW5kKChwcm9wKSA9PiBwcm9wLmtleSA9PT0gcHJvcGVydHlOYW1lKTtcblx0aWYgKCFwcm9wZXJ0eSkgcmV0dXJuIG51bGw7XG5cblx0bGV0IGNvbHVtbldpZHRoID0gVGFibGVTaXplSGVscGVyLmdldE1EQ0NvbHVtbldpZHRoRnJvbVByb3BlcnR5KFxuXHRcdHByb3BlcnR5LFxuXHRcdHByb3BlcnRpZXMsXG5cdFx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIsXG5cdFx0aXNTb3J0YWJsZUNvbHVtbixcblx0XHRpc0NvbHVtblJlcXVpcmVkXG5cdCk7XG5cdGNvbnN0IHVuaXRPclRpbWV6b25lID0gcHJvcGVydHkuZXhwb3J0U2V0dGluZ3M/LnVuaXQgfHwgcHJvcGVydHkuZXhwb3J0U2V0dGluZ3M/LnRpbWV6b25lO1xuXHRjb2x1bW5XaWR0aCArPSB1bml0T3JUaW1lem9uZSA/IFNpemVIZWxwZXIuZ2V0QnV0dG9uV2lkdGgodW5pdE9yVGltZXpvbmUpIDogMDtcblx0aWYgKGVkaXRNb2RlID09PSBGaWVsZEVkaXRNb2RlLkVkaXRhYmxlKSB7XG5cdFx0Y29uc3QgdW5pdE9yQ3VycmVuY3lQcm9wZXJ0eSA9IHByb3BlcnR5LmV4cG9ydFNldHRpbmdzPy51bml0UHJvcGVydHk7IC8vIHRoZSB1bml0UHJvcGVydHkgYXR0cmlidXRlIGlzIHVzZWQgZm9yIGN1cnJlbmN5IGFuZCB1bml0IG9uIHRoZSBleHBvcnQgc2V0dGluZ3Ncblx0XHRpZiAodW5pdE9yQ3VycmVuY3lQcm9wZXJ0eSkge1xuXHRcdFx0Y29sdW1uV2lkdGggKz0gMztcblx0XHR9XG5cdFx0c3dpdGNoIChwcm9wZXJ0eS50eXBlQ29uZmlnPy5iYXNlVHlwZSkge1xuXHRcdFx0Y2FzZSBcIkRhdGVcIjpcblx0XHRcdGNhc2UgXCJUaW1lXCI6XG5cdFx0XHRjYXNlIFwiRGF0ZVRpbWVcIjpcblx0XHRcdFx0Y29sdW1uV2lkdGggKz0gMi44O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0fVxuXHR9XG5cdGlmICh1c2VSZW1Vbml0KSB7XG5cdFx0cmV0dXJuIGNvbHVtbldpZHRoICsgXCJyZW1cIjtcblx0fVxuXHRyZXR1cm4gY29sdW1uV2lkdGg7XG59O1xuZ2V0Q29sdW1uV2lkdGguX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNnZXRDb2x1bW5XaWR0aFwiO1xuXG4vKipcbiAqIE1ldGhvZCB0byBjYWxjdWxhdGUgdGhlIHdpZHRoIG9mIGFuIE1EQ0NvbHVtbiBmb3IgdmFsdWVIZWxwIHRoZSB0YWJsZS5cbiAqIEBwYXJhbSB0aGlzIFRoZSBNRENDb2x1bW4gb2JqZWN0XG4gKiBAcGFyYW0gaXNQcm9wZXJ0aWVzQ2FjaGVBdmFpbGFibGUgSW5kaWNhdGVzIGlmIHRoZSBwcm9wZXJ0aWVzIGNhY2hlIGlzIGF2YWlsYWJsZVxuICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgd2Ugd2FudCB0byBjYWxjdWxhdGUgdGhlIHdpZHRoXG4gKiBAcGFyYW0gaXNUYXJnZXRTbWFsbERldmljZSBJbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZGV2aWNlIGhhcyBhIHNtYWxsIGRldmljZVxuICogQHBhcmFtIHdpZHRoSW5jbHVkaW5nQ29sdW1uSGVhZGVyXG4gKiBAcmV0dXJucyBUaGUgd2lkdGggb2YgdGhlIGNvbHVtblxuICovXG5jb25zdCBnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlID0gZnVuY3Rpb24gKFxuXHR0aGlzOiBDb2x1bW4sXG5cdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlOiBib29sZWFuLFxuXHRwcm9wZXJ0eU5hbWU6IHN0cmluZyxcblx0aXNUYXJnZXRTbWFsbERldmljZTogYm9vbGVhbixcblx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXIgPSBmYWxzZVxuKTogbnVsbCB8IG51bWJlciB7XG5cdGNvbnN0IGlzU21hbGxEZXZpY2UgPSBDb21tb25VdGlscy5pc1NtYWxsRGV2aWNlKCk7XG5cdGNvbnN0IHdpdGhVbml0ID0gIWlzU21hbGxEZXZpY2U7XG5cblx0cmV0dXJuIChpc1NtYWxsRGV2aWNlICYmIGlzVGFyZ2V0U21hbGxEZXZpY2UpIHx8ICghaXNTbWFsbERldmljZSAmJiAhaXNUYXJnZXRTbWFsbERldmljZSlcblx0XHQ/ICh0YWJsZUZvcm1hdHRlci5nZXRDb2x1bW5XaWR0aC5jYWxsKFxuXHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRGaWVsZEVkaXRNb2RlLkRpc3BsYXksXG5cdFx0XHRcdGlzUHJvcGVydGllc0NhY2hlQXZhaWxhYmxlLFxuXHRcdFx0XHRwcm9wZXJ0eU5hbWUsXG5cdFx0XHRcdHdpdGhVbml0LFxuXHRcdFx0XHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlclxuXHRcdCAgKSBhcyBudWxsIHwgbnVtYmVyKVxuXHRcdDogbnVsbDtcbn07XG5cbmdldENvbHVtbldpZHRoRm9yVmFsdWVIZWxwVGFibGUuX19mdW5jdGlvbk5hbWUgPSBcInNhcC5mZS5tYWNyb3MuZm9ybWF0dGVycy5UYWJsZUZvcm1hdHRlciNnZXRDb2x1bW5XaWR0aEZvclZhbHVlSGVscFRhYmxlXCI7XG5cbnR5cGUgRmllbGRXcmFwcGVyRml4ZWQgPSBGaWVsZFdyYXBwZXIgJiB7IGdldENvbnRlbnREaXNwbGF5OiBGdW5jdGlvbjsgZ2V0Q29udGVudEVkaXQ6IEZ1bmN0aW9uIH07XG5mdW5jdGlvbiBpc1JhdGluZ0luZGljYXRvcihvQ29udHJvbDogRmllbGRXcmFwcGVyRml4ZWQpOiBib29sZWFuIHtcblx0aWYgKG9Db250cm9sLmlzQShcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmllbGRXcmFwcGVyXCIpKSB7XG5cdFx0Y29uc3QgdkNvbnRlbnREaXNwbGF5ID0gQXJyYXkuaXNBcnJheShvQ29udHJvbC5nZXRDb250ZW50RGlzcGxheSgpKVxuXHRcdFx0PyBvQ29udHJvbC5nZXRDb250ZW50RGlzcGxheSgpWzBdXG5cdFx0XHQ6IG9Db250cm9sLmdldENvbnRlbnREaXNwbGF5KCk7XG5cdFx0aWYgKHZDb250ZW50RGlzcGxheSAmJiB2Q29udGVudERpc3BsYXkuaXNBKFwic2FwLm0uUmF0aW5nSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBfdXBkYXRlU3R5bGVDbGFzc0ZvclJhdGluZ0luZGljYXRvcihmaWVsZFdyYXBwZXI6IEZpZWxkV3JhcHBlckZpeGVkLCBsYXN0OiBib29sZWFuKTogdm9pZCB7XG5cdGNvbnN0IHZDb250ZW50RGlzcGxheSA9IEFycmF5LmlzQXJyYXkoZmllbGRXcmFwcGVyLmdldENvbnRlbnREaXNwbGF5KCkpXG5cdFx0PyBmaWVsZFdyYXBwZXIuZ2V0Q29udGVudERpc3BsYXkoKVswXVxuXHRcdDogZmllbGRXcmFwcGVyLmdldENvbnRlbnREaXNwbGF5KCk7XG5cdGNvbnN0IHZDb250ZW50RWRpdCA9IEFycmF5LmlzQXJyYXkoZmllbGRXcmFwcGVyLmdldENvbnRlbnRFZGl0KCkpID8gZmllbGRXcmFwcGVyLmdldENvbnRlbnRFZGl0KClbMF0gOiBmaWVsZFdyYXBwZXIuZ2V0Q29udGVudEVkaXQoKTtcblxuXHRpZiAobGFzdCkge1xuXHRcdHZDb250ZW50RGlzcGxheS5hZGRTdHlsZUNsYXNzKFwic2FwVWlOb01hcmdpbkJvdHRvbVwiKTtcblx0XHR2Q29udGVudERpc3BsYXkuYWRkU3R5bGVDbGFzcyhcInNhcFVpTm9NYXJnaW5Ub3BcIik7XG5cdFx0dkNvbnRlbnRFZGl0LnJlbW92ZVN0eWxlQ2xhc3MoXCJzYXBVaVRpbnlNYXJnaW5Cb3R0b21cIik7XG5cdH0gZWxzZSB7XG5cdFx0dkNvbnRlbnREaXNwbGF5LmFkZFN0eWxlQ2xhc3MoXCJzYXBVaU5vTWFyZ2luQm90dG9tXCIpO1xuXHRcdHZDb250ZW50RGlzcGxheS5yZW1vdmVTdHlsZUNsYXNzKFwic2FwVWlOb01hcmdpblRvcFwiKTtcblx0XHR2Q29udGVudEVkaXQuYWRkU3R5bGVDbGFzcyhcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwiKTtcblx0fVxufVxuZnVuY3Rpb24gZ2V0VkJveFZpc2liaWxpdHkodGhpczogVGFibGUsIC4uLmFyZ3M6IHVua25vd25bXSk6IGJvb2xlYW4ge1xuXHRjb25zdCBhSXRlbXMgPSB0aGlzLmdldEl0ZW1zKCkgYXMgdW5rbm93biBhcyBGaWVsZFdyYXBwZXJGaXhlZFtdO1xuXHRsZXQgYkxhc3RFbGVtZW50Rm91bmQgPSBmYWxzZTtcblx0Zm9yIChsZXQgaW5kZXggPSBhSXRlbXMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgaW5kZXgtLSkge1xuXHRcdGlmICghYkxhc3RFbGVtZW50Rm91bmQpIHtcblx0XHRcdGlmIChhcmdzW2luZGV4XSAhPT0gdHJ1ZSkge1xuXHRcdFx0XHRiTGFzdEVsZW1lbnRGb3VuZCA9IHRydWU7XG5cdFx0XHRcdGlmIChpc1JhdGluZ0luZGljYXRvcihhSXRlbXNbaW5kZXhdKSkge1xuXHRcdFx0XHRcdF91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yKGFJdGVtc1tpbmRleF0sIHRydWUpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGFJdGVtc1tpbmRleF0ucmVtb3ZlU3R5bGVDbGFzcyhcInNhcFVpVGlueU1hcmdpbkJvdHRvbVwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoaXNSYXRpbmdJbmRpY2F0b3IoYUl0ZW1zW2luZGV4XSkpIHtcblx0XHRcdF91cGRhdGVTdHlsZUNsYXNzRm9yUmF0aW5nSW5kaWNhdG9yKGFJdGVtc1tpbmRleF0sIGZhbHNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YUl0ZW1zW2luZGV4XS5hZGRTdHlsZUNsYXNzKFwic2FwVWlUaW55TWFyZ2luQm90dG9tXCIpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cbmdldFZCb3hWaXNpYmlsaXR5Ll9fZnVuY3Rpb25OYW1lID0gXCJzYXAuZmUubWFjcm9zLmZvcm1hdHRlcnMuVGFibGVGb3JtYXR0ZXIjZ2V0VkJveFZpc2liaWxpdHlcIjtcblxuLy8gU2VlIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL2Z1bmN0aW9ucy5odG1sI3RoaXMtcGFyYW1ldGVycyBmb3IgbW9yZSBkZXRhaWwgb24gdGhpcyB3ZWlyZCBzeW50YXhcbi8qKlxuICogQ29sbGVjdGlvbiBvZiB0YWJsZSBmb3JtYXR0ZXJzLlxuICogQHBhcmFtIHRoaXMgVGhlIGNvbnRleHRcbiAqIEBwYXJhbSBzTmFtZSBUaGUgaW5uZXIgZnVuY3Rpb24gbmFtZVxuICogQHBhcmFtIG9BcmdzIFRoZSBpbm5lciBmdW5jdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJucyBUaGUgdmFsdWUgZnJvbSB0aGUgaW5uZXIgZnVuY3Rpb25cbiAqL1xuY29uc3QgdGFibGVGb3JtYXR0ZXIgPSBmdW5jdGlvbiAodGhpczogb2JqZWN0LCBzTmFtZTogc3RyaW5nLCAuLi5vQXJnczogdW5rbm93bltdKTogdW5rbm93biB7XG5cdGlmICh0YWJsZUZvcm1hdHRlci5oYXNPd25Qcm9wZXJ0eShzTmFtZSkpIHtcblx0XHRyZXR1cm4gKHRhYmxlRm9ybWF0dGVyIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+KVtzTmFtZV0uYXBwbHkodGhpcywgb0FyZ3MpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIlwiO1xuXHR9XG59O1xuXG50YWJsZUZvcm1hdHRlci52YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzID0gdmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcztcbnRhYmxlRm9ybWF0dGVyLnJvd0hpZ2hsaWdodGluZyA9IHJvd0hpZ2hsaWdodGluZztcbnRhYmxlRm9ybWF0dGVyLm5hdmlnYXRlZFJvdyA9IG5hdmlnYXRlZFJvdztcbnRhYmxlRm9ybWF0dGVyLmdldEVycm9yU3RhdHVzVGV4dFZpc2liaWxpdHlGb3JtYXR0ZXIgPSBnZXRFcnJvclN0YXR1c1RleHRWaXNpYmlsaXR5Rm9ybWF0dGVyO1xudGFibGVGb3JtYXR0ZXIuZ2V0VkJveFZpc2liaWxpdHkgPSBnZXRWQm94VmlzaWJpbGl0eTtcbnRhYmxlRm9ybWF0dGVyLmlzUmF0aW5nSW5kaWNhdG9yID0gaXNSYXRpbmdJbmRpY2F0b3I7IC8vIGZvciB1bml0IHRlc3RzXG50YWJsZUZvcm1hdHRlci5nZXRDb2x1bW5XaWR0aCA9IGdldENvbHVtbldpZHRoO1xudGFibGVGb3JtYXR0ZXIuZ2V0Q29sdW1uV2lkdGhGb3JWYWx1ZUhlbHBUYWJsZSA9IGdldENvbHVtbldpZHRoRm9yVmFsdWVIZWxwVGFibGU7XG5cbk9iamVjdFBhdGguc2V0KFwic2FwLmZlLm1hY3Jvcy5mb3JtYXR0ZXJzLlRhYmxlRm9ybWF0dGVyXCIsIHRhYmxlRm9ybWF0dGVyKTtcblxuZXhwb3J0IGRlZmF1bHQgdGFibGVGb3JtYXR0ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFpQkEsTUFBTUEsbUJBQW1CLEdBQUcsU0FBQUEsQ0FBVUMsV0FBbUIsRUFBVTtJQUNsRSxRQUFRQSxXQUFXO01BQ2xCLEtBQUssT0FBTztRQUNYLE9BQU8sQ0FBQztNQUNULEtBQUssU0FBUztRQUNiLE9BQU8sQ0FBQztNQUNULEtBQUssYUFBYTtRQUNqQixPQUFPLENBQUM7TUFDVCxLQUFLLE1BQU07UUFDVixPQUFPLENBQUM7TUFDVDtRQUNDLE9BQU8sQ0FBQyxDQUFDO0lBQ1g7RUFDRCxDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNQyx5QkFBeUIsR0FBRyxTQUFBQSxDQUFVQyxtQkFBMkQsRUFBVztJQUNqSCxJQUFJLENBQUNBLG1CQUFtQixFQUFFO01BQ3pCLE9BQU8sS0FBSztJQUNiO0lBQ0EsTUFBTUMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ0gsbUJBQW1CLENBQUM7SUFDbEQsT0FDQ0MsU0FBUyxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxJQUNwQkgsU0FBUyxDQUFDSSxLQUFLLENBQUMsVUFBVUMsR0FBRyxFQUFFO01BQzlCLE9BQU9OLG1CQUFtQixDQUFDTSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDNUMsQ0FBQyxD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
|
|
@@ -91,18 +91,23 @@ getErrorStatusTextVisibilityFormatter.__functionName = "sap.fe.macros.formatters
|
|
|
91
91
|
const rowHighlighting = function (
|
|
92
92
|
this: ManagedObject,
|
|
93
93
|
criticalityValue: string | number,
|
|
94
|
-
aFilteredMessages: Message[],
|
|
95
|
-
hasActiveEntity: boolean,
|
|
96
|
-
isActiveEntity: boolean,
|
|
94
|
+
aFilteredMessages: Message[] | string | undefined,
|
|
95
|
+
hasActiveEntity: boolean | string | undefined,
|
|
96
|
+
isActiveEntity: boolean | string | undefined,
|
|
97
97
|
isDraftMode: string,
|
|
98
98
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
99
99
|
contextPath: string,
|
|
100
|
-
isInactive: boolean | undefined
|
|
100
|
+
isInactive: boolean | string | undefined
|
|
101
101
|
): MessageType {
|
|
102
|
+
// Sanitize string "undefined" values to actual undefined
|
|
103
|
+
aFilteredMessages = aFilteredMessages === "undefined" ? undefined : aFilteredMessages;
|
|
104
|
+
hasActiveEntity = hasActiveEntity === "undefined" ? undefined : hasActiveEntity;
|
|
105
|
+
isActiveEntity = isActiveEntity === "undefined" ? undefined : isActiveEntity;
|
|
106
|
+
isInactive = isInactive === "undefined" ? undefined : isInactive;
|
|
102
107
|
let iHighestCriticalityValue = -1;
|
|
103
108
|
if (aFilteredMessages && aFilteredMessages.length > 0) {
|
|
104
109
|
const sCurrentContextPath = this.getBindingContext()?.getPath();
|
|
105
|
-
aFilteredMessages.forEach((message) => {
|
|
110
|
+
(aFilteredMessages as Message[]).forEach((message) => {
|
|
106
111
|
if (
|
|
107
112
|
sCurrentContextPath &&
|
|
108
113
|
message.getTargets()[0].indexOf(sCurrentContextPath) === 0 &&
|
|
@@ -204,6 +209,10 @@ const getColumnWidth = function (
|
|
|
204
209
|
const unitOrTimezone = property.exportSettings?.unit || property.exportSettings?.timezone;
|
|
205
210
|
columnWidth += unitOrTimezone ? SizeHelper.getButtonWidth(unitOrTimezone) : 0;
|
|
206
211
|
if (editMode === FieldEditMode.Editable) {
|
|
212
|
+
const unitOrCurrencyProperty = property.exportSettings?.unitProperty; // the unitProperty attribute is used for currency and unit on the export settings
|
|
213
|
+
if (unitOrCurrencyProperty) {
|
|
214
|
+
columnWidth += 3;
|
|
215
|
+
}
|
|
207
216
|
switch (property.typeConfig?.baseType) {
|
|
208
217
|
case "Date":
|
|
209
218
|
case "Time":
|