@sapui5/sap.fe.macros 1.141.0 → 1.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +4 -10
- package/src/sap/fe/macros/Breadcrumbs.tsx +2 -8
- package/src/sap/fe/macros/Chart.js +34 -23
- package/src/sap/fe/macros/Chart.tsx +25 -11
- package/src/sap/fe/macros/CollaborativeDraftHandler.js +48 -31
- package/src/sap/fe/macros/CollaborativeDraftHandler.tsx +51 -26
- package/src/sap/fe/macros/CollectionBindingInfo.js +8 -2
- package/src/sap/fe/macros/CollectionBindingInfo.ts +11 -6
- package/src/sap/fe/macros/CommonHelper.js +14 -24
- package/src/sap/fe/macros/CommonHelper.ts +18 -25
- package/src/sap/fe/macros/Field.js +30 -13
- package/src/sap/fe/macros/Field.ts +60 -30
- package/src/sap/fe/macros/FooterContent.js +5 -2
- package/src/sap/fe/macros/FooterContent.tsx +6 -3
- package/src/sap/fe/macros/KPITag.js +1 -1
- package/src/sap/fe/macros/KPITag.tsx +3 -1
- package/src/sap/fe/macros/MacroAPI.js +3 -2
- package/src/sap/fe/macros/MacroAPI.ts +2 -2
- package/src/sap/fe/macros/MessageButton.js +3 -2
- package/src/sap/fe/macros/MessageButton.tsx +5 -2
- package/src/sap/fe/macros/MicroChart.js +10 -6
- package/src/sap/fe/macros/MicroChart.tsx +8 -2
- package/src/sap/fe/macros/MultiValueField.js +22 -36
- package/src/sap/fe/macros/MultiValueField.tsx +34 -66
- package/src/sap/fe/macros/RichTextEditor.js +3 -4
- package/src/sap/fe/macros/RichTextEditor.tsx +2 -3
- package/src/sap/fe/macros/Status.js +35 -8
- package/src/sap/fe/macros/Status.tsx +23 -2
- package/src/sap/fe/macros/ValueHelp.js +5 -2
- package/src/sap/fe/macros/ValueHelp.tsx +5 -0
- package/src/sap/fe/macros/ai/EasyFilterBar.js +7 -34
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +6 -35
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +31 -7
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +33 -6
- package/src/sap/fe/macros/chart/Action.js +25 -2
- package/src/sap/fe/macros/chart/Action.ts +13 -0
- package/src/sap/fe/macros/chart/ActionGroup.js +25 -2
- package/src/sap/fe/macros/chart/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/chart/ChartDelegate.js +8 -8
- package/src/sap/fe/macros/chart/ChartDelegate.ts +17 -12
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +54 -11
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +70 -11
- package/src/sap/fe/macros/chart/OverflowGroup.js +62 -0
- package/src/sap/fe/macros/chart/OverflowGroup.ts +22 -0
- package/src/sap/fe/macros/controls/FilterBar.js +39 -3
- package/src/sap/fe/macros/controls/FilterBar.ts +42 -1
- package/src/sap/fe/macros/controls/RadioButtons.js +18 -5
- package/src/sap/fe/macros/controls/RadioButtons.tsx +10 -1
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +37 -9
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +45 -6
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +4 -2
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +3 -1
- package/src/sap/fe/macros/field/FieldFormatOptions.js +3 -3
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +1 -1
- package/src/sap/fe/macros/field/FieldHelper.js +4 -3
- package/src/sap/fe/macros/field/FieldHelper.ts +7 -1
- 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/field/FieldRuntimeHelper.js +3 -34
- package/src/sap/fe/macros/field/FieldRuntimeHelper.ts +28 -53
- package/src/sap/fe/macros/field/FieldTemplating.js +5 -4
- package/src/sap/fe/macros/field/FieldTemplating.ts +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.js +6 -4
- package/src/sap/fe/macros/filter/FilterFieldHelper.ts +7 -2
- package/src/sap/fe/macros/filter/FilterUtils.js +100 -36
- package/src/sap/fe/macros/filter/FilterUtils.ts +127 -39
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.js +2 -2
- package/src/sap/fe/macros/filterBar/ExtendedSemanticDateOperators.ts +1 -1
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +19 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +10 -7
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +31 -16
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.js +4 -3
- package/src/sap/fe/macros/filterBar/FilterBarDelegate.ts +5 -2
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +4 -3
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +3 -2
- package/src/sap/fe/macros/form/Form.block.js +27 -2
- package/src/sap/fe/macros/form/Form.block.ts +31 -11
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -3
- package/src/sap/fe/macros/form/FormContainer.block.js +96 -65
- package/src/sap/fe/macros/form/FormContainer.block.ts +104 -65
- package/src/sap/fe/macros/formatters/TableFormatter.js +13 -10
- package/src/sap/fe/macros/formatters/TableFormatter.ts +11 -9
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.js +6 -4
- package/src/sap/fe/macros/formatters/VisualFilterFormatter.ts +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +5 -5
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +4 -4
- package/src/sap/fe/macros/insights/InsightsService.js +3 -2
- package/src/sap/fe/macros/insights/InsightsService.ts +2 -1
- package/src/sap/fe/macros/internal/DataPoint.js +7 -8
- package/src/sap/fe/macros/internal/DataPoint.tsx +6 -9
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +8 -6
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +7 -8
- package/src/sap/fe/macros/internal/field/EditStyle.js +9 -20
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +17 -41
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.js +2 -2
- package/src/sap/fe/macros/internal/field/FieldBlockStructure.tsx +1 -1
- package/src/sap/fe/macros/internal/field/FieldStructure.js +1 -2
- package/src/sap/fe/macros/internal/field/FieldStructure.tsx +0 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +7 -7
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +17 -11
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +6 -2
- package/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +5 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.js +9 -6
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueFormatter.ts +7 -5
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +4 -4
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +6 -6
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +5 -2
- package/src/sap/fe/macros/library.js +3 -3
- package/src/sap/fe/macros/library.ts +2 -0
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +15 -5
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +21 -5
- package/src/sap/fe/macros/messagebundle.properties +7 -5
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -3
- package/src/sap/fe/macros/messagebundle_bg.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ca.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_cs.properties +11 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -3
- package/src/sap/fe/macros/messagebundle_da.properties +12 -3
- package/src/sap/fe/macros/messagebundle_de.properties +16 -7
- package/src/sap/fe/macros/messagebundle_el.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_GB.properties +13 -4
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es.properties +12 -3
- package/src/sap/fe/macros/messagebundle_es_MX.properties +12 -3
- package/src/sap/fe/macros/messagebundle_et.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hi.properties +12 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +13 -4
- package/src/sap/fe/macros/messagebundle_hu.properties +12 -3
- package/src/sap/fe/macros/messagebundle_id.properties +18 -9
- package/src/sap/fe/macros/messagebundle_it.properties +12 -3
- package/src/sap/fe/macros/messagebundle_iw.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ja.properties +12 -3
- package/src/sap/fe/macros/messagebundle_kk.properties +11 -2
- package/src/sap/fe/macros/messagebundle_ko.properties +13 -4
- package/src/sap/fe/macros/messagebundle_lt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ms.properties +12 -3
- package/src/sap/fe/macros/messagebundle_nl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_no.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt.properties +12 -3
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -3
- package/src/sap/fe/macros/messagebundle_ro.properties +13 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +13 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_sv.properties +12 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -2
- package/src/sap/fe/macros/messagebundle_tr.properties +12 -3
- package/src/sap/fe/macros/messagebundle_uk.properties +12 -3
- package/src/sap/fe/macros/messagebundle_vi.properties +13 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +12 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -3
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.js +2 -2
- package/src/sap/fe/macros/richtexteditor/ButtonGroup.ts +2 -2
- package/src/sap/fe/macros/table/Action.js +15 -2
- package/src/sap/fe/macros/table/Action.ts +11 -1
- package/src/sap/fe/macros/table/ActionGroup.js +15 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +8 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionOverride.js +14 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +7 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +16 -2
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +15 -0
- package/src/sap/fe/macros/table/MdcTableTemplate.js +91 -10
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +131 -10
- package/src/sap/fe/macros/table/OverflowGroups.js +59 -0
- package/src/sap/fe/macros/table/OverflowGroups.ts +27 -0
- package/src/sap/fe/macros/table/Table.block.js +70 -29
- package/src/sap/fe/macros/table/Table.block.tsx +65 -12
- package/src/sap/fe/macros/table/TableAPI.js +169 -131
- package/src/sap/fe/macros/table/TableAPI.ts +58 -28
- package/src/sap/fe/macros/table/TableDefinition.js +19 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +17 -1
- package/src/sap/fe/macros/table/TableEventHandlerProvider.js +4 -3
- package/src/sap/fe/macros/table/TableEventHandlerProvider.ts +8 -9
- package/src/sap/fe/macros/table/TableHelper.js +5 -2
- package/src/sap/fe/macros/table/TableHelper.ts +5 -2
- package/src/sap/fe/macros/table/TableRuntime.js +2 -2
- package/src/sap/fe/macros/table/TableRuntime.ts +4 -6
- package/src/sap/fe/macros/table/TableSizeHelper.js +4 -4
- package/src/sap/fe/macros/table/TableSizeHelper.ts +6 -11
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +67 -26
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +108 -118
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.js +2 -2
- package/src/sap/fe/macros/table/massEdit/MassEditDialogHelper.tsx +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.js +1 -1
- package/src/sap/fe/macros/table/massEdit/MassEditField.tsx +3 -6
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.js +6 -5
- package/src/sap/fe/macros/table/mixin/EmptyRowsHandler.ts +10 -4
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.js +7 -9
- package/src/sap/fe/macros/table/mixin/TableAPIStateHandler.ts +7 -8
- package/src/sap/fe/macros/table/mixin/TableExport.js +1 -1
- package/src/sap/fe/macros/table/mixin/TableExport.ts +3 -3
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.js +4 -4
- package/src/sap/fe/macros/visualfilters/InteractiveChartHelper.ts +3 -3
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +20 -2
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +28 -6
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +6 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +4 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.js +3 -3
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveCharts.tsx +10 -4
- package/src/sap/fe/macros/visualfilters/fragments/InteractiveDonutChart.fragment.xml +1 -1
|
@@ -180,7 +180,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
180
180
|
id: this.idPrefix ? generate([this.idPrefix, "RatingIndicator-Field-display"]) : undefined,
|
|
181
181
|
maxValue: targetValue,
|
|
182
182
|
value: this.value ?? compileExpression(value),
|
|
183
|
-
tooltip: this.getTooltipValue(
|
|
183
|
+
tooltip: this.getTooltipValue(),
|
|
184
184
|
iconSize: this.formatOptions?.iconSize,
|
|
185
185
|
class: this.formatOptions?.showLabels ?? false ? "sapUiTinyMarginTopBottom" : undefined,
|
|
186
186
|
editable: "false",
|
|
@@ -202,7 +202,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
202
202
|
displayValue: displayValue,
|
|
203
203
|
percentValue: percentValue,
|
|
204
204
|
state: criticalityColorExpression,
|
|
205
|
-
tooltip: this.getTooltipValue(
|
|
205
|
+
tooltip: this.getTooltipValue(),
|
|
206
206
|
ariaLabelledBy: this.ariaLabelledBy
|
|
207
207
|
});
|
|
208
208
|
}
|
|
@@ -227,7 +227,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
227
227
|
visible: this.visible,
|
|
228
228
|
emphasized: "false",
|
|
229
229
|
class: this.formatOptions?.dataPointStyle === "large" ? "sapMObjectNumberLarge" : undefined,
|
|
230
|
-
tooltip: this.getTooltipValue(
|
|
230
|
+
tooltip: this.getTooltipValue(),
|
|
231
231
|
emptyIndicatorMode: emptyIndicatorMode
|
|
232
232
|
});
|
|
233
233
|
}
|
|
@@ -260,7 +260,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
260
260
|
id: this.idPrefix ? generate([this.idPrefix, "ObjectStatus-Field-display"]) : undefined,
|
|
261
261
|
class: this.formatOptions?.dataPointStyle === "large" ? "sapMObjectStatusLarge sapMObjectStatusLongText" : undefined,
|
|
262
262
|
icon: iconExpression,
|
|
263
|
-
tooltip: this.getTooltipValue(
|
|
263
|
+
tooltip: this.getTooltipValue(),
|
|
264
264
|
state: criticalityColorExpression,
|
|
265
265
|
text: this.value ?? objectStatusText,
|
|
266
266
|
emptyIndicatorMode: emptyIndicatorMode,
|
|
@@ -276,11 +276,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
276
276
|
|
|
277
277
|
/**
|
|
278
278
|
* The helper method to get a possible tooltip text.
|
|
279
|
-
* @param dataModelPath
|
|
280
279
|
* @returns BindingToolkitExpression
|
|
281
280
|
*/;
|
|
282
|
-
_proto.getTooltipValue = function getTooltipValue(
|
|
283
|
-
return
|
|
281
|
+
_proto.getTooltipValue = function getTooltipValue() {
|
|
282
|
+
return UIFormatters.getTooltipValue(this.dataModelPath, this.valueDataModelPath);
|
|
284
283
|
}
|
|
285
284
|
|
|
286
285
|
/**
|
|
@@ -382,4 +381,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
|
|
|
382
381
|
_exports = DataPoint;
|
|
383
382
|
return _exports;
|
|
384
383
|
}, false);
|
|
385
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhUG9pbnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFzc29jaWF0aW9uIiwidHlwZSIsIl9kZWMzIiwicHJvcGVydHkiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiZGVmYXVsdENsYXNzIiwiRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyIsIl9kZWM2IiwiaXNCaW5kaW5nSW5mbyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiaGFzUXVpY2tWaWV3IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJnZXRUZW1wbGF0aW5nT2JqZWN0cyIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaW50ZXJuYWxEYXRhTW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwiaW50ZXJuYWxWYWx1ZURhdGFNb2RlbFBhdGgiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJ0YXJnZXRPYmplY3QiLCJWYWx1ZSIsInBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsImRhdGFNb2RlbFBhdGgiLCJ2YWx1ZURhdGFNb2RlbFBhdGgiLCJnZXREYXRhUG9pbnRWaXN1YWxpemF0aW9uIiwiVmlzdWFsaXphdGlvbiIsInZpc3VhbGl6YXRpb24iLCJ2YWx1ZVByb3BlcnR5IiwiaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsImdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IiwiaXNQcm9wZXJ0eSIsImhhc1VuaXQiLCJoYXNDdXJyZW5jeSIsImdldEVuYWJsZWQiLCJpc0EiLCJnZXRBY3RpdmUiLCJzZXRFbmFibGVkIiwiZW5hYmxlZCIsInNldFByb3BlcnR5IiwiY3JlYXRlUmF0aW5nSW5kaWNhdG9yIiwiZGF0YVBvaW50VGFyZ2V0IiwidGFyZ2V0VmFsdWUiLCJnZXRUYXJnZXRWYWx1ZUJpbmRpbmciLCJkYXRhUG9pbnRWYWx1ZSIsInByb3BlcnR5VHlwZSIsIiR0YXJnZXQiLCJudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJWYWx1ZUZvcm1hdCIsIk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyIsInZhbHVlIiwiZ2V0VmFsdWVGb3JtYXR0ZWQiLCJfanN4IiwiUmF0aW5nSW5kaWNhdG9yIiwiaWQiLCJpZFByZWZpeCIsImdlbmVyYXRlIiwidW5kZWZpbmVkIiwibWF4VmFsdWUiLCJjb21waWxlRXhwcmVzc2lvbiIsInRvb2x0aXAiLCJnZXRUb29sdGlwVmFsdWUiLCJpY29uU2l6ZSIsImZvcm1hdE9wdGlvbnMiLCJjbGFzcyIsInNob3dMYWJlbHMiLCJlZGl0YWJsZSIsImFyaWFMYWJlbGxlZEJ5IiwiY3JlYXRlUHJvZ3Jlc3NJbmRpY2F0b3IiLCJjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IiLCJkaXNwbGF5VmFsdWUiLCJidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZSIsInBlcmNlbnRWYWx1ZSIsImJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yUGVyY2VudFZhbHVlIiwiUHJvZ3Jlc3NJbmRpY2F0b3IiLCJzdGF0ZSIsImNyZWF0ZU9iamVjdE51bWJlciIsImVtcHR5SW5kaWNhdG9yTW9kZSIsInNob3dFbXB0eUluZGljYXRvciIsIm9iamVjdFN0YXR1c051bWJlciIsImJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbiIsImxpbWl0U2hvd0RlY2ltYWxzIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiZ2V0U2FwRmVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJhcHAiLCJzaG93T25seVVuaXREZWNpbWFscyIsInByZXNlcnZlRGVjaW1hbHNGb3JDdXJyZW5jeSIsInVuaXQiLCJtZWFzdXJlRGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kiLCJPYmplY3ROdW1iZXIiLCJudW1iZXIiLCJlbXBoYXNpemVkIiwiZGF0YVBvaW50U3R5bGUiLCJjcmVhdGVEZXBlbmRlbnRzIiwiUXVpY2tWaWV3IiwiY3JlYXRlT2JqZWN0U3RhdHVzIiwib2JqZWN0U3RhdHVzVGV4dCIsImljb25FeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIiwiT2JqZWN0U3RhdHVzIiwiaWNvbiIsInRleHQiLCJhY3RpdmUiLCJwcmVzcyIsIkZpZWxkUnVudGltZUhlbHBlciIsInByZXNzTGluayIsInJlYWN0aXZlQXJlYU1vZGUiLCJjaGlsZHJlbiIsImRlcGVuZGVudHMiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlF1aWNrSW5mbyIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldFJlbGF0aXZlUGF0aHMiLCJUYXJnZXRWYWx1ZSIsImdldFZhbHVlIiwiZ2V0VGV4dCIsImdldE51bWJlciIsImdldERpc3BsYXlWYWx1ZSIsInRvU3RyaW5nIiwiZ2V0UHJvcGVydHkiLCJzZXRWYWx1ZSIsInNldFRleHQiLCJzZXROdW1iZXIiLCJMb2ciLCJlcnJvciIsIkJ1aWxkaW5nQmxvY2siLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRhdGFQb2ludC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgVmlzdWFsaXphdGlvblR5cGUsIHR5cGUgRGF0YVBvaW50VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgdHlwZSBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5LCB0eXBlIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrIGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHsgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvciwgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBlbmhhbmNlRGF0YU1vZGVsUGF0aCwgZ2V0UmVsYXRpdmVQYXRocyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGhhc0N1cnJlbmN5LCBoYXNVbml0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7IGdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvU2VtYW50aWNPYmplY3RIZWxwZXJcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGdldFZpc2libGVFeHByZXNzaW9uLCBpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQge1xuXHRidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZSxcblx0YnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JQZXJjZW50VmFsdWUsXG5cdGJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbixcblx0Z2V0VmFsdWVGb3JtYXR0ZWRcbn0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvaGVscGVycy9EYXRhUG9pbnRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgUXVpY2tWaWV3IGZyb20gXCJzYXAvZmUvbWFjcm9zL3F1aWNrVmlldy9RdWlja1ZpZXdcIjtcbmltcG9ydCBPYmplY3ROdW1iZXIgZnJvbSBcInNhcC9tL09iamVjdE51bWJlclwiO1xuaW1wb3J0IHR5cGUgeyBPYmplY3RTdGF0dXMkUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBPYmplY3RTdGF0dXMgZnJvbSBcInNhcC9tL09iamVjdFN0YXR1c1wiO1xuaW1wb3J0IFByb2dyZXNzSW5kaWNhdG9yIGZyb20gXCJzYXAvbS9Qcm9ncmVzc0luZGljYXRvclwiO1xuaW1wb3J0IFJhdGluZ0luZGljYXRvciBmcm9tIFwic2FwL20vUmF0aW5nSW5kaWNhdG9yXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgTWRjTGluayBmcm9tIFwic2FwL3VpL21kYy9MaW5rXCI7XG5pbXBvcnQgRmllbGRSdW50aW1lSGVscGVyIGZyb20gXCIuLi9maWVsZC9GaWVsZFJ1bnRpbWVIZWxwZXJcIjtcbmltcG9ydCBEYXRhUG9pbnRGb3JtYXRPcHRpb25zIGZyb20gXCIuL0RhdGFQb2ludEZvcm1hdE9wdGlvbnNcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbC5EYXRhUG9pbnRcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFQb2ludCBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8Q29udHJvbD4ge1xuXHQvKipcblx0ICogUHJlZml4IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIGZpZWxkXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGlkUHJlZml4Pzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSBkYXRhUG9pbnQuXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0cmVxdWlyZWQ6IHRydWVcblx0fSlcblx0cHVibGljIG1ldGFQYXRoITogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwdWJsaWMgY29udGV4dFBhdGg/OiBzdHJpbmc7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAuZmUubWFjcm9zLmludGVybmFsLkRhdGFQb2ludEZvcm1hdE9wdGlvbnNcIiwgbXVsdGlwbGU6IGZhbHNlLCBkZWZhdWx0Q2xhc3M6IERhdGFQb2ludEZvcm1hdE9wdGlvbnMgfSlcblx0Zm9ybWF0T3B0aW9ucyE6IERhdGFQb2ludEZvcm1hdE9wdGlvbnM7XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHRvIHNldCBhbiBleHRlcm5hbCB2YWx1ZSB0aGF0IGNvbWVzIGZyb20gYSBkaWZmZXJlbnQgbW9kZWwgdGhhbiB0aGUgb0RhdGEgbW9kZWxcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc0JpbmRpbmdJbmZvOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyB2YWx1ZT86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gc2V0IHRoZSB2aXN1YWxpemF0aW9uIHR5cGVcblx0ICovXG5cdHByaXZhdGUgdmlzdWFsaXphdGlvbj86IHN0cmluZztcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gc2V0IHRoZSB2aXNpYmlsaXR5XG5cdCAqL1xuXHRwcml2YXRlIHZpc2libGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBzZXQgcHJvcGVydHkgaWYgdGhlIHByb3BlcnR5IGhhcyBhIFF1aWNrdmlld1xuXHQgKi9cblx0cHJpdmF0ZSBoYXNRdWlja1ZpZXcgPSBmYWxzZTtcblxuXHRwcml2YXRlIGRhdGFNb2RlbFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+O1xuXG5cdHByaXZhdGUgdmFsdWVEYXRhTW9kZWxQYXRoPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT47XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxEYXRhUG9pbnQ+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcywgb3RoZXJzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgb25NZXRhZGF0YUF2YWlsYWJsZSBldmVudC5cblx0ICovXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRUZW1wbGF0aW5nT2JqZWN0cygpO1xuXHRcdGlmICghdGhpcy5jb250ZW50KSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQgPSB0aGlzLmNyZWF0ZUNvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogRnVuY3Rpb24gdG8gZ2V0IHRoZSB0ZW1wbGF0aW5nIG9iamVjdHMuXG5cdCAqL1xuXHRwcml2YXRlIGdldFRlbXBsYXRpbmdPYmplY3RzKCk6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsRGF0YU1vZGVsUGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8RGF0YVBvaW50VHlwZT4odGhpcy5tZXRhUGF0aCwgdGhpcy5jb250ZXh0UGF0aCk7XG5cdFx0aWYgKCFpbnRlcm5hbERhdGFNb2RlbFBhdGgpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IGludGVybmFsVmFsdWVEYXRhTW9kZWxQYXRoO1xuXHRcdHRoaXMudmlzaWJsZSA9IGdldFZpc2libGVFeHByZXNzaW9uKGludGVybmFsRGF0YU1vZGVsUGF0aCk7XG5cdFx0aWYgKGludGVybmFsRGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0Py5WYWx1ZT8ucGF0aCkge1xuXHRcdFx0aW50ZXJuYWxWYWx1ZURhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aDxQcm9wZXJ0eT4oXG5cdFx0XHRcdGludGVybmFsRGF0YU1vZGVsUGF0aCxcblx0XHRcdFx0aW50ZXJuYWxEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC5WYWx1ZS5wYXRoXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IGludGVybmFsRGF0YU1vZGVsUGF0aDtcblx0XHR0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCA9IGludGVybmFsVmFsdWVEYXRhTW9kZWxQYXRoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRlcyB0aGUgdmlzdWFsaXphdGlvbiB0eXBlIGZvciB0aGlzIERhdGFQb2ludC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICovXG5cdHByaXZhdGUgZ2V0RGF0YVBvaW50VmlzdWFsaXphdGlvbihkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogdm9pZCB7XG5cdFx0aWYgKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5WaXN1YWxpemF0aW9uID09PSBWaXN1YWxpemF0aW9uVHlwZS5SYXRpbmcpIHtcblx0XHRcdHRoaXMudmlzdWFsaXphdGlvbiA9IFwiUmF0aW5nXCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uVmlzdWFsaXphdGlvbiA9PT0gVmlzdWFsaXphdGlvblR5cGUuUHJvZ3Jlc3MpIHtcblx0XHRcdHRoaXMudmlzdWFsaXphdGlvbiA9IFwiUHJvZ3Jlc3NcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdmFsdWVQcm9wZXJ0eSA9IHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoICYmIHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdDtcblx0XHQvL2NoZWNrIHdoZXRoZXIgdGhlIHZpc3VhbGl6YXRpb24gdHlwZSBzaG91bGQgYmUgYW4gb2JqZWN0IG51bWJlciBpbiBjYXNlIG9uZSBvZiB0aGUgaWYgY29uZGl0aW9ucyBtZXRcblx0XHR0aGlzLmhhc1F1aWNrVmlldyA9ICh2YWx1ZVByb3BlcnR5ICYmIGlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMoZGF0YU1vZGVsUGF0aCwgdmFsdWVQcm9wZXJ0eSkpID8/IGZhbHNlO1xuXHRcdGlmICh0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCAmJiBnZXRQcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdCh0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCkpIHtcblx0XHRcdHRoaXMuaGFzUXVpY2tWaWV3ID0gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuaGFzUXVpY2tWaWV3ICE9PSB0cnVlKSB7XG5cdFx0XHRpZiAoaXNQcm9wZXJ0eSh2YWx1ZVByb3BlcnR5KSAmJiAoaGFzVW5pdCh2YWx1ZVByb3BlcnR5KSB8fCBoYXNDdXJyZW5jeSh2YWx1ZVByb3BlcnR5KSkpIHtcblx0XHRcdFx0Ly8gd2Ugb25seSBzaG93IGFuIG9iamVjdE51bWJlciBpZiB0aGVyZSBpcyBubyBxdWlja3ZpZXcgYW5kIGEgdW5pdCBvciBhIGN1cnJlbmN5XG5cdFx0XHRcdHRoaXMudmlzdWFsaXphdGlvbiA9IFwiT2JqZWN0TnVtYmVyXCI7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvL2RlZmF1bHQgY2FzZSB0byBoYW5kbGUgdGhpcyBhcyBvYmplY3RTdGF0dXMgdHlwZVxuXHRcdHRoaXMudmlzdWFsaXphdGlvbiA9IFwiT2JqZWN0U3RhdHVzXCI7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY3VycmVudCBlbmFibGVtZW50IHN0YXRlIG9mIHRoZSBkYXRhUG9pbnQuXG5cdCAqIEByZXR1cm5zIEJvb2xlYW4gdmFsdWUgd2l0aCB0aGUgZW5hYmxlbWVudCBzdGF0ZVxuXHQgKi9cblx0Z2V0RW5hYmxlZCgpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXRBY3RpdmUoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGN1cnJlbnQgZW5hYmxlbWVudCBzdGF0ZSBvZiB0aGUgZGF0YXBvaW50LlxuXHQgKiBAcGFyYW0gZW5hYmxlZFxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCBkYXRhcG9pbnQgcmVmZXJlbmNlXG5cdCAqL1xuXHRzZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pOiBDb250cm9sIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50LnNldFByb3BlcnR5KFwiYWN0aXZlXCIsIGVuYWJsZWQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBcInNldEVuYWJsZWQgaXNuJ3QgaW1wbGVtZW50ZWQgZm9yIHRoaXMgZmllbGQgdHlwZVwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgUmF0aW5nSW5kaWNhdG9yIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBkYXRhTW9kZWxQYXRoXG5cdCAqIEByZXR1cm5zIFJhdGluZ0luZGljYXRvclxuXHQgKi9cblx0Y3JlYXRlUmF0aW5nSW5kaWNhdG9yKGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pOiBSYXRpbmdJbmRpY2F0b3Ige1xuXHRcdGNvbnN0IGRhdGFQb2ludFRhcmdldCA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRcdGNvbnN0IHRhcmdldFZhbHVlID0gdGhpcy5nZXRUYXJnZXRWYWx1ZUJpbmRpbmcoZGF0YU1vZGVsUGF0aCk7XG5cblx0XHRjb25zdCBkYXRhUG9pbnRWYWx1ZSA9IGRhdGFQb2ludFRhcmdldD8uVmFsdWUgfHwgXCJcIjtcblx0XHRjb25zdCBwcm9wZXJ0eVR5cGUgPSBkYXRhUG9pbnRWYWx1ZT8uJHRhcmdldD8udHlwZTtcblxuXHRcdGxldCBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM7XG5cdFx0aWYgKHByb3BlcnR5VHlwZSA9PT0gXCJFZG0uRGVjaW1hbFwiICYmIGRhdGFQb2ludFRhcmdldD8uVmFsdWVGb3JtYXQpIHtcblx0XHRcdGlmIChkYXRhUG9pbnRUYXJnZXQuVmFsdWVGb3JtYXQuTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzKSB7XG5cdFx0XHRcdG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyA9IGRhdGFQb2ludFRhcmdldC5WYWx1ZUZvcm1hdC5OdW1iZXJPZkZyYWN0aW9uYWxEaWdpdHM7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlID0gZ2V0VmFsdWVGb3JtYXR0ZWQodGhpcy52YWx1ZURhdGFNb2RlbFBhdGgsIGRhdGFQb2ludFZhbHVlLCBwcm9wZXJ0eVR5cGUsIG51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJhdGluZ0luZGljYXRvclxuXHRcdFx0XHRpZD17dGhpcy5pZFByZWZpeCA/IGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBcIlJhdGluZ0luZGljYXRvci1GaWVsZC1kaXNwbGF5XCJdKSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0bWF4VmFsdWU9e3RhcmdldFZhbHVlfVxuXHRcdFx0XHR2YWx1ZT17dGhpcy52YWx1ZSA/PyBjb21waWxlRXhwcmVzc2lvbih2YWx1ZSl9XG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMuZ2V0VG9vbHRpcFZhbHVlKGRhdGFNb2RlbFBhdGgpfVxuXHRcdFx0XHRpY29uU2l6ZT17dGhpcy5mb3JtYXRPcHRpb25zPy5pY29uU2l6ZX1cblx0XHRcdFx0Y2xhc3M9e3RoaXMuZm9ybWF0T3B0aW9ucz8uc2hvd0xhYmVscyA/PyBmYWxzZSA/IFwic2FwVWlUaW55TWFyZ2luVG9wQm90dG9tXCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGVkaXRhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgUHJvZ3Jlc3NJbmRpY2F0b3IgY29udHJvbC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgUHJvZ3Jlc3NJbmRpY2F0b3Jcblx0ICovXG5cdGNyZWF0ZVByb2dyZXNzSW5kaWNhdG9yKGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pOiBQcm9ncmVzc0luZGljYXRvciB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdFxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgZGlzcGxheVZhbHVlID0gYnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JEaXNwbGF5VmFsdWUoZGF0YU1vZGVsUGF0aCk7XG5cdFx0Y29uc3QgcGVyY2VudFZhbHVlID0gYnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JQZXJjZW50VmFsdWUoZGF0YU1vZGVsUGF0aCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFByb2dyZXNzSW5kaWNhdG9yXG5cdFx0XHRcdGlkPXt0aGlzLmlkUHJlZml4ID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIFwiUHJvZ3Jlc3NJbmRpY2F0b3ItRmllbGQtZGlzcGxheVwiXSkgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGRpc3BsYXlWYWx1ZT17ZGlzcGxheVZhbHVlfVxuXHRcdFx0XHRwZXJjZW50VmFsdWU9e3BlcmNlbnRWYWx1ZX1cblx0XHRcdFx0c3RhdGU9e2NyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRvb2x0aXBWYWx1ZShkYXRhTW9kZWxQYXRoKX1cblx0XHRcdFx0YXJpYUxhYmVsbGVkQnk9e3RoaXMuYXJpYUxhYmVsbGVkQnl9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBPYmplY3ROdW1iZXIgY29udHJvbC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgT2JqZWN0TnVtYmVyXG5cdCAqL1xuXHRjcmVhdGVPYmplY3ROdW1iZXIoZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPik6IE9iamVjdE51bWJlciB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdFxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgZW1wdHlJbmRpY2F0b3JNb2RlID0gdGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3IgPz8gZmFsc2UgPyBcIk9uXCIgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3Qgb2JqZWN0U3RhdHVzTnVtYmVyID0gYnVpbGRGaWVsZEJpbmRpbmdFeHByZXNzaW9uKGRhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucywgdHJ1ZSk7XG5cdFx0Y29uc3QgbGltaXRTaG93RGVjaW1hbHMgPSB0aGlzLmdldE1hbmlmZXN0V3JhcHBlcigpPy5nZXRTYXBGZU1hbmlmZXN0Q29uZmlndXJhdGlvbigpPy5hcHA/LnNob3dPbmx5VW5pdERlY2ltYWxzID09PSB0cnVlO1xuXHRcdGNvbnN0IHByZXNlcnZlRGVjaW1hbHNGb3JDdXJyZW5jeSA9XG5cdFx0XHR0aGlzLmdldE1hbmlmZXN0V3JhcHBlcigpPy5nZXRTYXBGZU1hbmlmZXN0Q29uZmlndXJhdGlvbigpPy5hcHA/LnByZXNlcnZlRGVjaW1hbHNGb3JDdXJyZW5jeSA9PT0gdHJ1ZTtcblx0XHRjb25zdCB1bml0ID1cblx0XHRcdHRoaXMuZm9ybWF0T3B0aW9ucz8ubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiXG5cdFx0XHRcdD8gdW5kZWZpbmVkXG5cdFx0XHRcdDogY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0XHRVSUZvcm1hdHRlcnMuZ2V0QmluZGluZ0ZvclVuaXRPckN1cnJlbmN5KFxuXHRcdFx0XHRcdFx0XHR0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCxcblx0XHRcdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRcdFx0bGltaXRTaG93RGVjaW1hbHMsXG5cdFx0XHRcdFx0XHRcdHByZXNlcnZlRGVjaW1hbHNGb3JDdXJyZW5jeVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHQgICk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE9iamVjdE51bWJlclxuXHRcdFx0XHRpZD17dGhpcy5pZFByZWZpeCA/IGdlbmVyYXRlKFt0aGlzLmlkUHJlZml4LCBcIk9iamVjdE51bWJlci1GaWVsZC1kaXNwbGF5XCJdKSA6IHVuZGVmaW5lZH1cblx0XHRcdFx0c3RhdGU9e2NyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHRudW1iZXI9e3RoaXMudmFsdWUgPz8gb2JqZWN0U3RhdHVzTnVtYmVyfVxuXHRcdFx0XHR1bml0PXt1bml0fVxuXHRcdFx0XHR2aXNpYmxlPXt0aGlzLnZpc2libGV9XG5cdFx0XHRcdGVtcGhhc2l6ZWQ9XCJmYWxzZVwiXG5cdFx0XHRcdGNsYXNzPXt0aGlzLmZvcm1hdE9wdGlvbnM/LmRhdGFQb2ludFN0eWxlID09PSBcImxhcmdlXCIgPyBcInNhcE1PYmplY3ROdW1iZXJMYXJnZVwiIDogdW5kZWZpbmVkfVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRvb2x0aXBWYWx1ZShkYXRhTW9kZWxQYXRoKX1cblx0XHRcdFx0ZW1wdHlJbmRpY2F0b3JNb2RlPXtlbXB0eUluZGljYXRvck1vZGV9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgZGVwZW5kZW50LlxuXHQgKiBAcmV0dXJucyBEZXBlbmRlbnQgZWl0aGVyIHdpdGggdGhlIFF1aWNrVmlldyBvciBhbiBlbXB0eSBzdHJpbmcuXG5cdCAqL1xuXHRwcml2YXRlIGNyZWF0ZURlcGVuZGVudHMoKTogTWRjTGluayB8IHVuZGVmaW5lZCB7XG5cdFx0aWYgKHRoaXMuaGFzUXVpY2tWaWV3KSB7XG5cdFx0XHRyZXR1cm4gbmV3IFF1aWNrVmlldyhcblx0XHRcdFx0dGhpcy52YWx1ZURhdGFNb2RlbFBhdGggYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxQcm9wZXJ0eT4sXG5cdFx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHRcdHRoaXMuY29udGV4dFBhdGggPz8gXCJcIlxuXHRcdFx0KS5jcmVhdGVDb250ZW50KCkgYXMgTWRjTGluaztcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIE9iamVjdFN0YXR1cyBjb250cm9sLlxuXHQgKiBAcGFyYW0gZGF0YU1vZGVsUGF0aFxuXHQgKiBAcmV0dXJucyBPYmplY3RTdGF0dXNcblx0ICovXG5cdGNyZWF0ZU9iamVjdFN0YXR1cyhkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogT2JqZWN0U3RhdHVzIHtcblx0XHRsZXQgY3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdFxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0aWYgKGNyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9uID09PSBcIk5vbmVcIiAmJiB0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCkge1xuXHRcdFx0Y3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSB0aGlzLmhhc1F1aWNrVmlldyA/IFwiSW5mb3JtYXRpb25cIiA6IFwiTm9uZVwiO1xuXHRcdH1cblx0XHRjb25zdCBlbXB0eUluZGljYXRvck1vZGUgPSB0aGlzLmZvcm1hdE9wdGlvbnM/LnNob3dFbXB0eUluZGljYXRvciA/PyBmYWxzZSA/IFwiT25cIiA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBvYmplY3RTdGF0dXNUZXh0ID0gYnVpbGRGaWVsZEJpbmRpbmdFeHByZXNzaW9uKGRhdGFNb2RlbFBhdGgsIHRoaXMuZm9ybWF0T3B0aW9ucywgZmFsc2UpO1xuXHRcdGNvbnN0IGljb25FeHByZXNzaW9uID1cblx0XHRcdHRoaXMuZm9ybWF0T3B0aW9ucz8uZGF0YVBvaW50U3R5bGUgPT09IFwibGFyZ2VcIiB8fCAhZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdFx0OiBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb24oZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QsIGRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxPYmplY3RTdGF0dXNcblx0XHRcdFx0aWQ9e3RoaXMuaWRQcmVmaXggPyBnZW5lcmF0ZShbdGhpcy5pZFByZWZpeCwgXCJPYmplY3RTdGF0dXMtRmllbGQtZGlzcGxheVwiXSkgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGNsYXNzPXt0aGlzLmZvcm1hdE9wdGlvbnM/LmRhdGFQb2ludFN0eWxlID09PSBcImxhcmdlXCIgPyBcInNhcE1PYmplY3RTdGF0dXNMYXJnZSBzYXBNT2JqZWN0U3RhdHVzTG9uZ1RleHRcIiA6IHVuZGVmaW5lZH1cblx0XHRcdFx0aWNvbj17aWNvbkV4cHJlc3Npb259XG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMuZ2V0VG9vbHRpcFZhbHVlKGRhdGFNb2RlbFBhdGgpfVxuXHRcdFx0XHRzdGF0ZT17Y3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHRleHQ9e3RoaXMudmFsdWUgPz8gb2JqZWN0U3RhdHVzVGV4dH1cblx0XHRcdFx0ZW1wdHlJbmRpY2F0b3JNb2RlPXtlbXB0eUluZGljYXRvck1vZGV9XG5cdFx0XHRcdGFjdGl2ZT17dGhpcy5oYXNRdWlja1ZpZXd9XG5cdFx0XHRcdHByZXNzPXtGaWVsZFJ1bnRpbWVIZWxwZXIucHJlc3NMaW5rIGFzIHVua25vd24gYXMgKG9FdmVudDogT2JqZWN0U3RhdHVzJFByZXNzRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5fVxuXHRcdFx0XHRyZWFjdGl2ZUFyZWFNb2RlPXt0aGlzLmZvcm1hdE9wdGlvbnM/LnJlYWN0aXZlQXJlYU1vZGV9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0ZGVwZW5kZW50czogdGhpcy5jcmVhdGVEZXBlbmRlbnRzKClcblx0XHRcdFx0fX1cblx0XHRcdDwvT2JqZWN0U3RhdHVzPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGhlbHBlciBtZXRob2QgdG8gZ2V0IGEgcG9zc2libGUgdG9vbHRpcCB0ZXh0LlxuXHQgKiBAcGFyYW0gZGF0YU1vZGVsUGF0aFxuXHQgKiBAcmV0dXJucyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cblx0ICovXG5cdHByaXZhdGUgZ2V0VG9vbHRpcFZhbHVlKGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5RdWlja0luZm9cblx0XHRcdD8gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5RdWlja0luZm8sIGdldFJlbGF0aXZlUGF0aHMoZGF0YU1vZGVsUGF0aCkpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgaGVscGVyIG1ldGhvZCB0byBnZXQgYSBwb3NzaWJsZSB0YXJnZXQgdmFsdWUgYmluZGluZy5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG5cdCAqL1xuXHRwcml2YXRlIGdldFRhcmdldFZhbHVlQmluZGluZyhcblx0XHRkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+XG5cdCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmcgfCBudW1iZXI+IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LlRhcmdldFZhbHVlXG5cdFx0XHQ/IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uVGFyZ2V0VmFsdWUsIGdldFJlbGF0aXZlUGF0aHMoZGF0YU1vZGVsUGF0aCkpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogT2JqZWN0U3RhdHVzIHwgT2JqZWN0TnVtYmVyIHwgUmF0aW5nSW5kaWNhdG9yIHwgUHJvZ3Jlc3NJbmRpY2F0b3IgfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5kYXRhTW9kZWxQYXRoKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHR0aGlzLmdldERhdGFQb2ludFZpc3VhbGl6YXRpb24odGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRzd2l0Y2ggKHRoaXMudmlzdWFsaXphdGlvbikge1xuXHRcdFx0Y2FzZSBcIlJhdGluZ1wiOiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZVJhdGluZ0luZGljYXRvcih0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIlByb2dyZXNzXCI6IHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlUHJvZ3Jlc3NJbmRpY2F0b3IodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJPYmplY3ROdW1iZXJcIjoge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVPYmplY3ROdW1iZXIodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlT2JqZWN0U3RhdHVzKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZGF0YXBvaW50LlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZGF0YXBvaW50XG5cdCAqL1xuXHRnZXRWYWx1ZSgpOiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXRUZXh0KCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxPYmplY3ROdW1iZXI+KFwic2FwLm0uT2JqZWN0TnVtYmVyXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldE51bWJlcigpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8UHJvZ3Jlc3NJbmRpY2F0b3I+KFwic2FwLm0uUHJvZ3Jlc3NJbmRpY2F0b3JcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0RGlzcGxheVZhbHVlKCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxSYXRpbmdJbmRpY2F0b3I+KFwic2FwLm0uUmF0aW5nSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldFZhbHVlKCkudG9TdHJpbmcoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nZXRQcm9wZXJ0eShcInZhbHVlXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICogQHBhcmFtIHZhbHVlXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGZpZWxkIHJlZmVyZW5jZVxuXHQgKi9cblx0c2V0VmFsdWUodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpOiBDb250cm9sIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwidmFsdWVcIiwgdmFsdWUpO1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxPYmplY3RTdGF0dXM+KFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0VGV4dCh2YWx1ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0TnVtYmVyPihcInNhcC5tLk9iamVjdE51bWJlclwiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50LnNldE51bWJlcih2YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8UHJvZ3Jlc3NJbmRpY2F0b3I+KFwic2FwLm0uUHJvZ3Jlc3NJbmRpY2F0b3JcIikpIHtcblx0XHRcdExvZy5lcnJvcihcInNldFZhbHVlIGlzbid0IGltcGxlbWVudGVkIGZvciB0aGlzIGZpZWxkIHR5cGUgeWV0XCIpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8UmF0aW5nSW5kaWNhdG9yPihcInNhcC5tLlJhdGluZ0luZGljYXRvclwiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50LnNldFZhbHVlKHZhbHVlIGFzIG51bWJlcik7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUNxQkEsU0FBUyxJQUFBQyxJQUFBLEdBRDdCQyxjQUFjLENBQUMsa0NBQWtDLENBQUMsRUFBQUMsS0FBQSxHQUtqREMsV0FBVyxDQUFDO0lBQ1pDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTURDLFFBQVEsQ0FBQztJQUNURixJQUFJLEVBQUUsUUFBUTtJQUNkRyxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUdERixRQUFRLENBQUM7SUFDVEYsSUFBSSxFQUFFO0VBQ1AsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHREMsV0FBVyxDQUFDO0lBQUVOLElBQUksRUFBRSwrQ0FBK0M7SUFBRU8sUUFBUSxFQUFFLEtBQUs7SUFBRUMsWUFBWSxFQUFFQztFQUF1QixDQUFDLENBQUMsRUFBQUMsS0FBQSxHQU03SFIsUUFBUSxDQUFDO0lBQ1RGLElBQUksRUFBRSxRQUFRO0lBQ2RXLGFBQWEsRUFBRTtFQUNoQixDQUFDLENBQUMsRUFBQWYsSUFBQSxDQUFBZ0IsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxjQUFBO0lBc0JGLFNBQUFuQixVQUFZb0IsVUFBc0QsRUFBRUMsTUFBeUIsRUFBRTtNQUFBLElBQUFDLEtBQUE7TUFDOUZBLEtBQUEsR0FBQUgsY0FBQSxDQUFBSSxJQUFBLE9BQU1ILFVBQVUsRUFBRUMsTUFBTSxDQUFDO01BdEQxQjtBQUNEO0FBQ0E7TUFGQ0csMEJBQUEsQ0FBQUYsS0FBQSxjQUFBRyxXQUFBLEVBQUFILEtBQUE7TUFRQTtBQUNEO0FBQ0E7TUFGQ0UsMEJBQUEsQ0FBQUYsS0FBQSxjQUFBSSxZQUFBLEVBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FB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
|
|
384
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRhUG9pbnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImFzc29jaWF0aW9uIiwidHlwZSIsIl9kZWMzIiwicHJvcGVydHkiLCJyZXF1aXJlZCIsIl9kZWM0IiwiX2RlYzUiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiZGVmYXVsdENsYXNzIiwiRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyIsIl9kZWM2IiwiaXNCaW5kaW5nSW5mbyIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQnVpbGRpbmdCbG9jayIsInByb3BlcnRpZXMiLCJvdGhlcnMiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiaGFzUXVpY2tWaWV3IiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJnZXRUZW1wbGF0aW5nT2JqZWN0cyIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaW50ZXJuYWxEYXRhTW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwiaW50ZXJuYWxWYWx1ZURhdGFNb2RlbFBhdGgiLCJ2aXNpYmxlIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJ0YXJnZXRPYmplY3QiLCJWYWx1ZSIsInBhdGgiLCJlbmhhbmNlRGF0YU1vZGVsUGF0aCIsImRhdGFNb2RlbFBhdGgiLCJ2YWx1ZURhdGFNb2RlbFBhdGgiLCJnZXREYXRhUG9pbnRWaXN1YWxpemF0aW9uIiwiVmlzdWFsaXphdGlvbiIsInZpc3VhbGl6YXRpb24iLCJ2YWx1ZVByb3BlcnR5IiwiaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsImdldFByb3BlcnR5V2l0aFNlbWFudGljT2JqZWN0IiwiaXNQcm9wZXJ0eSIsImhhc1VuaXQiLCJoYXNDdXJyZW5jeSIsImdldEVuYWJsZWQiLCJpc0EiLCJnZXRBY3RpdmUiLCJzZXRFbmFibGVkIiwiZW5hYmxlZCIsInNldFByb3BlcnR5IiwiY3JlYXRlUmF0aW5nSW5kaWNhdG9yIiwiZGF0YVBvaW50VGFyZ2V0IiwidGFyZ2V0VmFsdWUiLCJnZXRUYXJnZXRWYWx1ZUJpbmRpbmciLCJkYXRhUG9pbnRWYWx1ZSIsInByb3BlcnR5VHlwZSIsIiR0YXJnZXQiLCJudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMiLCJWYWx1ZUZvcm1hdCIsIk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cyIsInZhbHVlIiwiZ2V0VmFsdWVGb3JtYXR0ZWQiLCJfanN4IiwiUmF0aW5nSW5kaWNhdG9yIiwiaWQiLCJpZFByZWZpeCIsImdlbmVyYXRlIiwidW5kZWZpbmVkIiwibWF4VmFsdWUiLCJjb21waWxlRXhwcmVzc2lvbiIsInRvb2x0aXAiLCJnZXRUb29sdGlwVmFsdWUiLCJpY29uU2l6ZSIsImZvcm1hdE9wdGlvbnMiLCJjbGFzcyIsInNob3dMYWJlbHMiLCJlZGl0YWJsZSIsImFyaWFMYWJlbGxlZEJ5IiwiY3JlYXRlUHJvZ3Jlc3NJbmRpY2F0b3IiLCJjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IiLCJkaXNwbGF5VmFsdWUiLCJidWlsZEV4cHJlc3Npb25Gb3JQcm9ncmVzc0luZGljYXRvckRpc3BsYXlWYWx1ZSIsInBlcmNlbnRWYWx1ZSIsImJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yUGVyY2VudFZhbHVlIiwiUHJvZ3Jlc3NJbmRpY2F0b3IiLCJzdGF0ZSIsImNyZWF0ZU9iamVjdE51bWJlciIsImVtcHR5SW5kaWNhdG9yTW9kZSIsInNob3dFbXB0eUluZGljYXRvciIsIm9iamVjdFN0YXR1c051bWJlciIsImJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbiIsImxpbWl0U2hvd0RlY2ltYWxzIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiZ2V0U2FwRmVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJhcHAiLCJzaG93T25seVVuaXREZWNpbWFscyIsInByZXNlcnZlRGVjaW1hbHNGb3JDdXJyZW5jeSIsInVuaXQiLCJtZWFzdXJlRGlzcGxheU1vZGUiLCJVSUZvcm1hdHRlcnMiLCJnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kiLCJPYmplY3ROdW1iZXIiLCJudW1iZXIiLCJlbXBoYXNpemVkIiwiZGF0YVBvaW50U3R5bGUiLCJjcmVhdGVEZXBlbmRlbnRzIiwiUXVpY2tWaWV3IiwiY3JlYXRlT2JqZWN0U3RhdHVzIiwib2JqZWN0U3RhdHVzVGV4dCIsImljb25FeHByZXNzaW9uIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIiwiT2JqZWN0U3RhdHVzIiwiaWNvbiIsInRleHQiLCJhY3RpdmUiLCJwcmVzcyIsIkZpZWxkUnVudGltZUhlbHBlciIsInByZXNzTGluayIsInJlYWN0aXZlQXJlYU1vZGUiLCJjaGlsZHJlbiIsImRlcGVuZGVudHMiLCJUYXJnZXRWYWx1ZSIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImdldFJlbGF0aXZlUGF0aHMiLCJnZXRWYWx1ZSIsImdldFRleHQiLCJnZXROdW1iZXIiLCJnZXREaXNwbGF5VmFsdWUiLCJ0b1N0cmluZyIsImdldFByb3BlcnR5Iiwic2V0VmFsdWUiLCJzZXRUZXh0Iiwic2V0TnVtYmVyIiwiTG9nIiwiZXJyb3IiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJEYXRhUG9pbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IFZpc3VhbGl6YXRpb25UeXBlLCB0eXBlIERhdGFQb2ludFR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbXBpbGVFeHByZXNzaW9uLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIHR5cGUgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSwgdHlwZSBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9jayBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgaXNQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1R5cGVHdWFyZHNcIjtcbmltcG9ydCB7IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IsIGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0NyaXRpY2FsaXR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZW5oYW5jZURhdGFNb2RlbFBhdGgsIGdldFJlbGF0aXZlUGF0aHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBoYXNDdXJyZW5jeSwgaGFzVW5pdCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eVdpdGhTZW1hbnRpY09iamVjdCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1NlbWFudGljT2JqZWN0SGVscGVyXCI7XG5pbXBvcnQgKiBhcyBVSUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgeyBnZXRWaXNpYmxlRXhwcmVzc2lvbiwgaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkVGVtcGxhdGluZ1wiO1xuaW1wb3J0IHtcblx0YnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JEaXNwbGF5VmFsdWUsXG5cdGJ1aWxkRXhwcmVzc2lvbkZvclByb2dyZXNzSW5kaWNhdG9yUGVyY2VudFZhbHVlLFxuXHRidWlsZEZpZWxkQmluZGluZ0V4cHJlc3Npb24sXG5cdGdldFZhbHVlRm9ybWF0dGVkXG59IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL2hlbHBlcnMvRGF0YVBvaW50VGVtcGxhdGluZ1wiO1xuaW1wb3J0IFF1aWNrVmlldyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9xdWlja1ZpZXcvUXVpY2tWaWV3XCI7XG5pbXBvcnQgT2JqZWN0TnVtYmVyIGZyb20gXCJzYXAvbS9PYmplY3ROdW1iZXJcIjtcbmltcG9ydCB0eXBlIHsgT2JqZWN0U3RhdHVzJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vT2JqZWN0U3RhdHVzXCI7XG5pbXBvcnQgT2JqZWN0U3RhdHVzIGZyb20gXCJzYXAvbS9PYmplY3RTdGF0dXNcIjtcbmltcG9ydCBQcm9ncmVzc0luZGljYXRvciBmcm9tIFwic2FwL20vUHJvZ3Jlc3NJbmRpY2F0b3JcIjtcbmltcG9ydCBSYXRpbmdJbmRpY2F0b3IgZnJvbSBcInNhcC9tL1JhdGluZ0luZGljYXRvclwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIE1kY0xpbmsgZnJvbSBcInNhcC91aS9tZGMvTGlua1wiO1xuaW1wb3J0IEZpZWxkUnVudGltZUhlbHBlciBmcm9tIFwiLi4vZmllbGQvRmllbGRSdW50aW1lSGVscGVyXCI7XG5pbXBvcnQgRGF0YVBvaW50Rm9ybWF0T3B0aW9ucyBmcm9tIFwiLi9EYXRhUG9pbnRGb3JtYXRPcHRpb25zXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWwuRGF0YVBvaW50XCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEYXRhUG9pbnQgZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrPENvbnRyb2w+IHtcblx0LyoqXG5cdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSBmaWVsZFxuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBpZFByZWZpeD86IHN0cmluZztcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgZGF0YVBvaW50LlxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiB0cnVlXG5cdH0pXG5cdHB1YmxpYyBtZXRhUGF0aCE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHVibGljIGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbC5EYXRhUG9pbnRGb3JtYXRPcHRpb25zXCIsIG11bHRpcGxlOiBmYWxzZSwgZGVmYXVsdENsYXNzOiBEYXRhUG9pbnRGb3JtYXRPcHRpb25zIH0pXG5cdGZvcm1hdE9wdGlvbnMhOiBEYXRhUG9pbnRGb3JtYXRPcHRpb25zO1xuXG5cdC8qKlxuXHQgKiBQcm9wZXJ0eSB0byBzZXQgYW4gZXh0ZXJuYWwgdmFsdWUgdGhhdCBjb21lcyBmcm9tIGEgZGlmZmVyZW50IG1vZGVsIHRoYW4gdGhlIG9EYXRhIG1vZGVsXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0aXNCaW5kaW5nSW5mbzogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgdmFsdWU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHRvIHNldCB0aGUgdmlzdWFsaXphdGlvbiB0eXBlXG5cdCAqL1xuXHRwcml2YXRlIHZpc3VhbGl6YXRpb24/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFByb3BlcnR5IHRvIHNldCB0aGUgdmlzaWJpbGl0eVxuXHQgKi9cblx0cHJpdmF0ZSB2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblxuXHQvKipcblx0ICogUHJvcGVydHkgdG8gc2V0IHByb3BlcnR5IGlmIHRoZSBwcm9wZXJ0eSBoYXMgYSBRdWlja3ZpZXdcblx0ICovXG5cdHByaXZhdGUgaGFzUXVpY2tWaWV3ID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBkYXRhTW9kZWxQYXRoPzogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPjtcblxuXHRwcml2YXRlIHZhbHVlRGF0YU1vZGVsUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RGF0YVBvaW50Piwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0VGVtcGxhdGluZ09iamVjdHMoKTtcblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgdGVtcGxhdGluZyBvYmplY3RzLlxuXHQgKi9cblx0cHJpdmF0ZSBnZXRUZW1wbGF0aW5nT2JqZWN0cygpOiB2b2lkIHtcblx0XHRjb25zdCBpbnRlcm5hbERhdGFNb2RlbFBhdGggPSB0aGlzLmdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPERhdGFQb2ludFR5cGU+KHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpO1xuXHRcdGlmICghaW50ZXJuYWxEYXRhTW9kZWxQYXRoKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGxldCBpbnRlcm5hbFZhbHVlRGF0YU1vZGVsUGF0aDtcblx0XHR0aGlzLnZpc2libGUgPSBnZXRWaXNpYmxlRXhwcmVzc2lvbihpbnRlcm5hbERhdGFNb2RlbFBhdGgpO1xuXHRcdGlmIChpbnRlcm5hbERhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdD8uVmFsdWU/LnBhdGgpIHtcblx0XHRcdGludGVybmFsVmFsdWVEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KFxuXHRcdFx0XHRpbnRlcm5hbERhdGFNb2RlbFBhdGgsXG5cdFx0XHRcdGludGVybmFsRGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QuVmFsdWUucGF0aFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHR0aGlzLmRhdGFNb2RlbFBhdGggPSBpbnRlcm5hbERhdGFNb2RlbFBhdGg7XG5cdFx0dGhpcy52YWx1ZURhdGFNb2RlbFBhdGggPSBpbnRlcm5hbFZhbHVlRGF0YU1vZGVsUGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBGdW5jdGlvbiB0aGF0IGNhbGN1bGF0ZXMgdGhlIHZpc3VhbGl6YXRpb24gdHlwZSBmb3IgdGhpcyBEYXRhUG9pbnQuXG5cdCAqIEBwYXJhbSBkYXRhTW9kZWxQYXRoXG5cdCAqL1xuXHRwcml2YXRlIGdldERhdGFQb2ludFZpc3VhbGl6YXRpb24oZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPik6IHZvaWQge1xuXHRcdGlmIChkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uVmlzdWFsaXphdGlvbiA9PT0gVmlzdWFsaXphdGlvblR5cGUuUmF0aW5nKSB7XG5cdFx0XHR0aGlzLnZpc3VhbGl6YXRpb24gPSBcIlJhdGluZ1wiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LlZpc3VhbGl6YXRpb24gPT09IFZpc3VhbGl6YXRpb25UeXBlLlByb2dyZXNzKSB7XG5cdFx0XHR0aGlzLnZpc3VhbGl6YXRpb24gPSBcIlByb2dyZXNzXCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHZhbHVlUHJvcGVydHkgPSB0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCAmJiB0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0Ly9jaGVjayB3aGV0aGVyIHRoZSB2aXN1YWxpemF0aW9uIHR5cGUgc2hvdWxkIGJlIGFuIG9iamVjdCBudW1iZXIgaW4gY2FzZSBvbmUgb2YgdGhlIGlmIGNvbmRpdGlvbnMgbWV0XG5cdFx0dGhpcy5oYXNRdWlja1ZpZXcgPSAodmFsdWVQcm9wZXJ0eSAmJiBpc1VzZWRJbk5hdmlnYXRpb25XaXRoUXVpY2tWaWV3RmFjZXRzKGRhdGFNb2RlbFBhdGgsIHZhbHVlUHJvcGVydHkpKSA/PyBmYWxzZTtcblx0XHRpZiAodGhpcy52YWx1ZURhdGFNb2RlbFBhdGggJiYgZ2V0UHJvcGVydHlXaXRoU2VtYW50aWNPYmplY3QodGhpcy52YWx1ZURhdGFNb2RlbFBhdGgpKSB7XG5cdFx0XHR0aGlzLmhhc1F1aWNrVmlldyA9IHRydWU7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmhhc1F1aWNrVmlldyAhPT0gdHJ1ZSkge1xuXHRcdFx0aWYgKGlzUHJvcGVydHkodmFsdWVQcm9wZXJ0eSkgJiYgKGhhc1VuaXQodmFsdWVQcm9wZXJ0eSkgfHwgaGFzQ3VycmVuY3kodmFsdWVQcm9wZXJ0eSkpKSB7XG5cdFx0XHRcdC8vIHdlIG9ubHkgc2hvdyBhbiBvYmplY3ROdW1iZXIgaWYgdGhlcmUgaXMgbm8gcXVpY2t2aWV3IGFuZCBhIHVuaXQgb3IgYSBjdXJyZW5jeVxuXHRcdFx0XHR0aGlzLnZpc3VhbGl6YXRpb24gPSBcIk9iamVjdE51bWJlclwiO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly9kZWZhdWx0IGNhc2UgdG8gaGFuZGxlIHRoaXMgYXMgb2JqZWN0U3RhdHVzIHR5cGVcblx0XHR0aGlzLnZpc3VhbGl6YXRpb24gPSBcIk9iamVjdFN0YXR1c1wiO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGN1cnJlbnQgZW5hYmxlbWVudCBzdGF0ZSBvZiB0aGUgZGF0YVBvaW50LlxuXHQgKiBAcmV0dXJucyBCb29sZWFuIHZhbHVlIHdpdGggdGhlIGVuYWJsZW1lbnQgc3RhdGVcblx0ICovXG5cdGdldEVuYWJsZWQoKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPE9iamVjdFN0YXR1cz4oXCJzYXAubS5PYmplY3RTdGF0dXNcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0QWN0aXZlKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjdXJyZW50IGVuYWJsZW1lbnQgc3RhdGUgb2YgdGhlIGRhdGFwb2ludC5cblx0ICogQHBhcmFtIGVuYWJsZWRcblx0ICogQHJldHVybnMgVGhlIGN1cnJlbnQgZGF0YXBvaW50IHJlZmVyZW5jZVxuXHQgKi9cblx0c2V0RW5hYmxlZChlbmFibGVkOiBib29sZWFuKTogQ29udHJvbCB7XG5cdFx0aWYgKHRoaXMuY29udGVudD8uaXNBPE9iamVjdFN0YXR1cz4oXCJzYXAubS5PYmplY3RTdGF0dXNcIikpIHtcblx0XHRcdHRoaXMuY29udGVudC5zZXRQcm9wZXJ0eShcImFjdGl2ZVwiLCBlbmFibGVkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgXCJzZXRFbmFibGVkIGlzbid0IGltcGxlbWVudGVkIGZvciB0aGlzIGZpZWxkIHR5cGVcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIFJhdGluZ0luZGljYXRvciBjb250cm9sLlxuXHQgKiBAcGFyYW0gZGF0YU1vZGVsUGF0aFxuXHQgKiBAcmV0dXJucyBSYXRpbmdJbmRpY2F0b3Jcblx0ICovXG5cdGNyZWF0ZVJhdGluZ0luZGljYXRvcihkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogUmF0aW5nSW5kaWNhdG9yIHtcblx0XHRjb25zdCBkYXRhUG9pbnRUYXJnZXQgPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdDtcblx0XHRjb25zdCB0YXJnZXRWYWx1ZSA9IHRoaXMuZ2V0VGFyZ2V0VmFsdWVCaW5kaW5nKGRhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Y29uc3QgZGF0YVBvaW50VmFsdWUgPSBkYXRhUG9pbnRUYXJnZXQ/LlZhbHVlIHx8IFwiXCI7XG5cdFx0Y29uc3QgcHJvcGVydHlUeXBlID0gZGF0YVBvaW50VmFsdWU/LiR0YXJnZXQ/LnR5cGU7XG5cblx0XHRsZXQgbnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzO1xuXHRcdGlmIChwcm9wZXJ0eVR5cGUgPT09IFwiRWRtLkRlY2ltYWxcIiAmJiBkYXRhUG9pbnRUYXJnZXQ/LlZhbHVlRm9ybWF0KSB7XG5cdFx0XHRpZiAoZGF0YVBvaW50VGFyZ2V0LlZhbHVlRm9ybWF0Lk51bWJlck9mRnJhY3Rpb25hbERpZ2l0cykge1xuXHRcdFx0XHRudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMgPSBkYXRhUG9pbnRUYXJnZXQuVmFsdWVGb3JtYXQuTnVtYmVyT2ZGcmFjdGlvbmFsRGlnaXRzO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCB2YWx1ZSA9IGdldFZhbHVlRm9ybWF0dGVkKHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoLCBkYXRhUG9pbnRWYWx1ZSwgcHJvcGVydHlUeXBlLCBudW1iZXJPZkZyYWN0aW9uYWxEaWdpdHMpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxSYXRpbmdJbmRpY2F0b3Jcblx0XHRcdFx0aWQ9e3RoaXMuaWRQcmVmaXggPyBnZW5lcmF0ZShbdGhpcy5pZFByZWZpeCwgXCJSYXRpbmdJbmRpY2F0b3ItRmllbGQtZGlzcGxheVwiXSkgOiB1bmRlZmluZWR9XG5cdFx0XHRcdG1heFZhbHVlPXt0YXJnZXRWYWx1ZX1cblx0XHRcdFx0dmFsdWU9e3RoaXMudmFsdWUgPz8gY29tcGlsZUV4cHJlc3Npb24odmFsdWUpfVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRvb2x0aXBWYWx1ZSgpfVxuXHRcdFx0XHRpY29uU2l6ZT17dGhpcy5mb3JtYXRPcHRpb25zPy5pY29uU2l6ZX1cblx0XHRcdFx0Y2xhc3M9e3RoaXMuZm9ybWF0T3B0aW9ucz8uc2hvd0xhYmVscyA/PyBmYWxzZSA/IFwic2FwVWlUaW55TWFyZ2luVG9wQm90dG9tXCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGVkaXRhYmxlPVwiZmFsc2VcIlxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgUHJvZ3Jlc3NJbmRpY2F0b3IgY29udHJvbC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgUHJvZ3Jlc3NJbmRpY2F0b3Jcblx0ICovXG5cdGNyZWF0ZVByb2dyZXNzSW5kaWNhdG9yKGRhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YVBvaW50VHlwZT4pOiBQcm9ncmVzc0luZGljYXRvciB7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb24gPSBkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdFxuXHRcdFx0PyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgZGlzcGxheVZhbHVlID0gYnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JEaXNwbGF5VmFsdWUoZGF0YU1vZGVsUGF0aCk7XG5cdFx0Y29uc3QgcGVyY2VudFZhbHVlID0gYnVpbGRFeHByZXNzaW9uRm9yUHJvZ3Jlc3NJbmRpY2F0b3JQZXJjZW50VmFsdWUoZGF0YU1vZGVsUGF0aCk7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PFByb2dyZXNzSW5kaWNhdG9yXG5cdFx0XHRcdGlkPXt0aGlzLmlkUHJlZml4ID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIFwiUHJvZ3Jlc3NJbmRpY2F0b3ItRmllbGQtZGlzcGxheVwiXSkgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGRpc3BsYXlWYWx1ZT17ZGlzcGxheVZhbHVlfVxuXHRcdFx0XHRwZXJjZW50VmFsdWU9e3BlcmNlbnRWYWx1ZX1cblx0XHRcdFx0c3RhdGU9e2NyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9ufVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRvb2x0aXBWYWx1ZSgpfVxuXHRcdFx0XHRhcmlhTGFiZWxsZWRCeT17dGhpcy5hcmlhTGFiZWxsZWRCeX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIE9iamVjdE51bWJlciBjb250cm9sLlxuXHQgKiBAcGFyYW0gZGF0YU1vZGVsUGF0aFxuXHQgKiBAcmV0dXJucyBPYmplY3ROdW1iZXJcblx0ICovXG5cdGNyZWF0ZU9iamVjdE51bWJlcihkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+KTogT2JqZWN0TnVtYmVyIHtcblx0XHRjb25zdCBjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0XG5cdFx0XHQ/IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IoZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QsIGRhdGFNb2RlbFBhdGgpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBlbXB0eUluZGljYXRvck1vZGUgPSB0aGlzLmZvcm1hdE9wdGlvbnM/LnNob3dFbXB0eUluZGljYXRvciA/PyBmYWxzZSA/IFwiT25cIiA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBvYmplY3RTdGF0dXNOdW1iZXIgPSBidWlsZEZpZWxkQmluZGluZ0V4cHJlc3Npb24oZGF0YU1vZGVsUGF0aCwgdGhpcy5mb3JtYXRPcHRpb25zLCB0cnVlKTtcblx0XHRjb25zdCBsaW1pdFNob3dEZWNpbWFscyA9IHRoaXMuZ2V0TWFuaWZlc3RXcmFwcGVyKCk/LmdldFNhcEZlTWFuaWZlc3RDb25maWd1cmF0aW9uKCk/LmFwcD8uc2hvd09ubHlVbml0RGVjaW1hbHMgPT09IHRydWU7XG5cdFx0Y29uc3QgcHJlc2VydmVEZWNpbWFsc0ZvckN1cnJlbmN5ID1cblx0XHRcdHRoaXMuZ2V0TWFuaWZlc3RXcmFwcGVyKCk/LmdldFNhcEZlTWFuaWZlc3RDb25maWd1cmF0aW9uKCk/LmFwcD8ucHJlc2VydmVEZWNpbWFsc0ZvckN1cnJlbmN5ID09PSB0cnVlO1xuXHRcdGNvbnN0IHVuaXQgPVxuXHRcdFx0dGhpcy5mb3JtYXRPcHRpb25zPy5tZWFzdXJlRGlzcGxheU1vZGUgPT09IFwiSGlkZGVuXCJcblx0XHRcdFx0PyB1bmRlZmluZWRcblx0XHRcdFx0OiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdFVJRm9ybWF0dGVycy5nZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3koXG5cdFx0XHRcdFx0XHRcdHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoLFxuXHRcdFx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdFx0XHRsaW1pdFNob3dEZWNpbWFscyxcblx0XHRcdFx0XHRcdFx0cHJlc2VydmVEZWNpbWFsc0ZvckN1cnJlbmN5XG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdCAgKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8T2JqZWN0TnVtYmVyXG5cdFx0XHRcdGlkPXt0aGlzLmlkUHJlZml4ID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIFwiT2JqZWN0TnVtYmVyLUZpZWxkLWRpc3BsYXlcIl0pIDogdW5kZWZpbmVkfVxuXHRcdFx0XHRzdGF0ZT17Y3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb259XG5cdFx0XHRcdG51bWJlcj17dGhpcy52YWx1ZSA/PyBvYmplY3RTdGF0dXNOdW1iZXJ9XG5cdFx0XHRcdHVuaXQ9e3VuaXR9XG5cdFx0XHRcdHZpc2libGU9e3RoaXMudmlzaWJsZX1cblx0XHRcdFx0ZW1waGFzaXplZD1cImZhbHNlXCJcblx0XHRcdFx0Y2xhc3M9e3RoaXMuZm9ybWF0T3B0aW9ucz8uZGF0YVBvaW50U3R5bGUgPT09IFwibGFyZ2VcIiA/IFwic2FwTU9iamVjdE51bWJlckxhcmdlXCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHRvb2x0aXA9e3RoaXMuZ2V0VG9vbHRpcFZhbHVlKCl9XG5cdFx0XHRcdGVtcHR5SW5kaWNhdG9yTW9kZT17ZW1wdHlJbmRpY2F0b3JNb2RlfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGRlcGVuZGVudC5cblx0ICogQHJldHVybnMgRGVwZW5kZW50IGVpdGhlciB3aXRoIHRoZSBRdWlja1ZpZXcgb3IgYW4gZW1wdHkgc3RyaW5nLlxuXHQgKi9cblx0cHJpdmF0ZSBjcmVhdGVEZXBlbmRlbnRzKCk6IE1kY0xpbmsgfCB1bmRlZmluZWQge1xuXHRcdGlmICh0aGlzLmhhc1F1aWNrVmlldykge1xuXHRcdFx0cmV0dXJuIG5ldyBRdWlja1ZpZXcoXG5cdFx0XHRcdHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8UHJvcGVydHk+LFxuXHRcdFx0XHR0aGlzLm1ldGFQYXRoLFxuXHRcdFx0XHR0aGlzLmNvbnRleHRQYXRoID8/IFwiXCJcblx0XHRcdCkuY3JlYXRlQ29udGVudCgpIGFzIE1kY0xpbms7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBPYmplY3RTdGF0dXMgY29udHJvbC5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgT2JqZWN0U3RhdHVzXG5cdCAqL1xuXHRjcmVhdGVPYmplY3RTdGF0dXMoZGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDxEYXRhUG9pbnRUeXBlPik6IE9iamVjdFN0YXR1cyB7XG5cdFx0bGV0IGNyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9uID0gZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Rcblx0XHRcdD8gYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvcihkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCwgZGF0YU1vZGVsUGF0aClcblx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdGlmIChjcml0aWNhbGl0eUNvbG9yRXhwcmVzc2lvbiA9PT0gXCJOb25lXCIgJiYgdGhpcy52YWx1ZURhdGFNb2RlbFBhdGgpIHtcblx0XHRcdGNyaXRpY2FsaXR5Q29sb3JFeHByZXNzaW9uID0gdGhpcy5oYXNRdWlja1ZpZXcgPyBcIkluZm9ybWF0aW9uXCIgOiBcIk5vbmVcIjtcblx0XHR9XG5cdFx0Y29uc3QgZW1wdHlJbmRpY2F0b3JNb2RlID0gdGhpcy5mb3JtYXRPcHRpb25zPy5zaG93RW1wdHlJbmRpY2F0b3IgPz8gZmFsc2UgPyBcIk9uXCIgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3Qgb2JqZWN0U3RhdHVzVGV4dCA9IGJ1aWxkRmllbGRCaW5kaW5nRXhwcmVzc2lvbihkYXRhTW9kZWxQYXRoLCB0aGlzLmZvcm1hdE9wdGlvbnMsIGZhbHNlKTtcblx0XHRjb25zdCBpY29uRXhwcmVzc2lvbiA9XG5cdFx0XHR0aGlzLmZvcm1hdE9wdGlvbnM/LmRhdGFQb2ludFN0eWxlID09PSBcImxhcmdlXCIgfHwgIWRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0XG5cdFx0XHRcdD8gdW5kZWZpbmVkXG5cdFx0XHRcdDogYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uKGRhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LCBkYXRhTW9kZWxQYXRoKTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8T2JqZWN0U3RhdHVzXG5cdFx0XHRcdGlkPXt0aGlzLmlkUHJlZml4ID8gZ2VuZXJhdGUoW3RoaXMuaWRQcmVmaXgsIFwiT2JqZWN0U3RhdHVzLUZpZWxkLWRpc3BsYXlcIl0pIDogdW5kZWZpbmVkfVxuXHRcdFx0XHRjbGFzcz17dGhpcy5mb3JtYXRPcHRpb25zPy5kYXRhUG9pbnRTdHlsZSA9PT0gXCJsYXJnZVwiID8gXCJzYXBNT2JqZWN0U3RhdHVzTGFyZ2Ugc2FwTU9iamVjdFN0YXR1c0xvbmdUZXh0XCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdGljb249e2ljb25FeHByZXNzaW9ufVxuXHRcdFx0XHR0b29sdGlwPXt0aGlzLmdldFRvb2x0aXBWYWx1ZSgpfVxuXHRcdFx0XHRzdGF0ZT17Y3JpdGljYWxpdHlDb2xvckV4cHJlc3Npb259XG5cdFx0XHRcdHRleHQ9e3RoaXMudmFsdWUgPz8gb2JqZWN0U3RhdHVzVGV4dH1cblx0XHRcdFx0ZW1wdHlJbmRpY2F0b3JNb2RlPXtlbXB0eUluZGljYXRvck1vZGV9XG5cdFx0XHRcdGFjdGl2ZT17dGhpcy5oYXNRdWlja1ZpZXd9XG5cdFx0XHRcdHByZXNzPXtGaWVsZFJ1bnRpbWVIZWxwZXIucHJlc3NMaW5rIGFzIHVua25vd24gYXMgKG9FdmVudDogT2JqZWN0U3RhdHVzJFByZXNzRXZlbnQpID0+IHZvaWR9XG5cdFx0XHRcdGFyaWFMYWJlbGxlZEJ5PXt0aGlzLmFyaWFMYWJlbGxlZEJ5fVxuXHRcdFx0XHRyZWFjdGl2ZUFyZWFNb2RlPXt0aGlzLmZvcm1hdE9wdGlvbnM/LnJlYWN0aXZlQXJlYU1vZGV9XG5cdFx0XHQ+XG5cdFx0XHRcdHt7XG5cdFx0XHRcdFx0ZGVwZW5kZW50czogdGhpcy5jcmVhdGVEZXBlbmRlbnRzKClcblx0XHRcdFx0fX1cblx0XHRcdDwvT2JqZWN0U3RhdHVzPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGhlbHBlciBtZXRob2QgdG8gZ2V0IGEgcG9zc2libGUgdG9vbHRpcCB0ZXh0LlxuXHQgKiBAcmV0dXJucyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb25cblx0ICovXG5cdHByaXZhdGUgZ2V0VG9vbHRpcFZhbHVlKCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gVUlGb3JtYXR0ZXJzLmdldFRvb2x0aXBWYWx1ZSh0aGlzLmRhdGFNb2RlbFBhdGgsIHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgaGVscGVyIG1ldGhvZCB0byBnZXQgYSBwb3NzaWJsZSB0YXJnZXQgdmFsdWUgYmluZGluZy5cblx0ICogQHBhcmFtIGRhdGFNb2RlbFBhdGhcblx0ICogQHJldHVybnMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uXG5cdCAqL1xuXHRwcml2YXRlIGdldFRhcmdldFZhbHVlQmluZGluZyhcblx0XHRkYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPERhdGFQb2ludFR5cGU+XG5cdCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmcgfCBudW1iZXI+IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gZGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3Q/LlRhcmdldFZhbHVlXG5cdFx0XHQ/IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdD8uVGFyZ2V0VmFsdWUsIGdldFJlbGF0aXZlUGF0aHMoZGF0YU1vZGVsUGF0aCkpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdGNyZWF0ZUNvbnRlbnQoKTogT2JqZWN0U3RhdHVzIHwgT2JqZWN0TnVtYmVyIHwgUmF0aW5nSW5kaWNhdG9yIHwgUHJvZ3Jlc3NJbmRpY2F0b3IgfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5kYXRhTW9kZWxQYXRoKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHR0aGlzLmdldERhdGFQb2ludFZpc3VhbGl6YXRpb24odGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRzd2l0Y2ggKHRoaXMudmlzdWFsaXphdGlvbikge1xuXHRcdFx0Y2FzZSBcIlJhdGluZ1wiOiB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNyZWF0ZVJhdGluZ0luZGljYXRvcih0aGlzLmRhdGFNb2RlbFBhdGgpO1xuXHRcdFx0fVxuXHRcdFx0Y2FzZSBcIlByb2dyZXNzXCI6IHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlUHJvZ3Jlc3NJbmRpY2F0b3IodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRcdH1cblx0XHRcdGNhc2UgXCJPYmplY3ROdW1iZXJcIjoge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5jcmVhdGVPYmplY3ROdW1iZXIodGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0XHRcdH1cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuY3JlYXRlT2JqZWN0U3RhdHVzKHRoaXMuZGF0YU1vZGVsUGF0aCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZGF0YXBvaW50LlxuXHQgKiBAcmV0dXJucyBUaGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZGF0YXBvaW50XG5cdCAqL1xuXHRnZXRWYWx1ZSgpOiBib29sZWFuIHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0U3RhdHVzPihcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuY29udGVudC5nZXRUZXh0KCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxPYmplY3ROdW1iZXI+KFwic2FwLm0uT2JqZWN0TnVtYmVyXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldE51bWJlcigpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8UHJvZ3Jlc3NJbmRpY2F0b3I+KFwic2FwLm0uUHJvZ3Jlc3NJbmRpY2F0b3JcIikpIHtcblx0XHRcdHJldHVybiB0aGlzLmNvbnRlbnQuZ2V0RGlzcGxheVZhbHVlKCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxSYXRpbmdJbmRpY2F0b3I+KFwic2FwLm0uUmF0aW5nSW5kaWNhdG9yXCIpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5jb250ZW50LmdldFZhbHVlKCkudG9TdHJpbmcoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5nZXRQcm9wZXJ0eShcInZhbHVlXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICogQHBhcmFtIHZhbHVlXG5cdCAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGZpZWxkIHJlZmVyZW5jZVxuXHQgKi9cblx0c2V0VmFsdWUodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpOiBDb250cm9sIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwidmFsdWVcIiwgdmFsdWUpO1xuXHRcdGlmICh0aGlzLmNvbnRlbnQ/LmlzQTxPYmplY3RTdGF0dXM+KFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHR0aGlzLmNvbnRlbnQuc2V0VGV4dCh2YWx1ZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8T2JqZWN0TnVtYmVyPihcInNhcC5tLk9iamVjdE51bWJlclwiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50LnNldE51bWJlcih2YWx1ZSBhcyBzdHJpbmcpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8UHJvZ3Jlc3NJbmRpY2F0b3I+KFwic2FwLm0uUHJvZ3Jlc3NJbmRpY2F0b3JcIikpIHtcblx0XHRcdExvZy5lcnJvcihcInNldFZhbHVlIGlzbid0IGltcGxlbWVudGVkIGZvciB0aGlzIGZpZWxkIHR5cGUgeWV0XCIpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy5jb250ZW50Py5pc0E8UmF0aW5nSW5kaWNhdG9yPihcInNhcC5tLlJhdGluZ0luZGljYXRvclwiKSkge1xuXHRcdFx0dGhpcy5jb250ZW50LnNldFZhbHVlKHZhbHVlIGFzIG51bWJlcik7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BbUNxQkEsU0FBUyxJQUFBQyxJQUFBLEdBRDdCQyxjQUFjLENBQUMsa0NBQWtDLENBQUMsRUFBQUMsS0FBQSxHQUtqREMsV0FBVyxDQUFDO0lBQ1pDLElBQUksRUFBRTtFQUNQLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBTURDLFFBQVEsQ0FBQztJ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
|
|
@@ -204,7 +204,7 @@ export default class DataPoint extends BuildingBlock<Control> {
|
|
|
204
204
|
id={this.idPrefix ? generate([this.idPrefix, "RatingIndicator-Field-display"]) : undefined}
|
|
205
205
|
maxValue={targetValue}
|
|
206
206
|
value={this.value ?? compileExpression(value)}
|
|
207
|
-
tooltip={this.getTooltipValue(
|
|
207
|
+
tooltip={this.getTooltipValue()}
|
|
208
208
|
iconSize={this.formatOptions?.iconSize}
|
|
209
209
|
class={this.formatOptions?.showLabels ?? false ? "sapUiTinyMarginTopBottom" : undefined}
|
|
210
210
|
editable="false"
|
|
@@ -231,7 +231,7 @@ export default class DataPoint extends BuildingBlock<Control> {
|
|
|
231
231
|
displayValue={displayValue}
|
|
232
232
|
percentValue={percentValue}
|
|
233
233
|
state={criticalityColorExpression}
|
|
234
|
-
tooltip={this.getTooltipValue(
|
|
234
|
+
tooltip={this.getTooltipValue()}
|
|
235
235
|
ariaLabelledBy={this.ariaLabelledBy}
|
|
236
236
|
/>
|
|
237
237
|
);
|
|
@@ -272,7 +272,7 @@ export default class DataPoint extends BuildingBlock<Control> {
|
|
|
272
272
|
visible={this.visible}
|
|
273
273
|
emphasized="false"
|
|
274
274
|
class={this.formatOptions?.dataPointStyle === "large" ? "sapMObjectNumberLarge" : undefined}
|
|
275
|
-
tooltip={this.getTooltipValue(
|
|
275
|
+
tooltip={this.getTooltipValue()}
|
|
276
276
|
emptyIndicatorMode={emptyIndicatorMode}
|
|
277
277
|
/>
|
|
278
278
|
);
|
|
@@ -317,7 +317,7 @@ export default class DataPoint extends BuildingBlock<Control> {
|
|
|
317
317
|
id={this.idPrefix ? generate([this.idPrefix, "ObjectStatus-Field-display"]) : undefined}
|
|
318
318
|
class={this.formatOptions?.dataPointStyle === "large" ? "sapMObjectStatusLarge sapMObjectStatusLongText" : undefined}
|
|
319
319
|
icon={iconExpression}
|
|
320
|
-
tooltip={this.getTooltipValue(
|
|
320
|
+
tooltip={this.getTooltipValue()}
|
|
321
321
|
state={criticalityColorExpression}
|
|
322
322
|
text={this.value ?? objectStatusText}
|
|
323
323
|
emptyIndicatorMode={emptyIndicatorMode}
|
|
@@ -335,13 +335,10 @@ export default class DataPoint extends BuildingBlock<Control> {
|
|
|
335
335
|
|
|
336
336
|
/**
|
|
337
337
|
* The helper method to get a possible tooltip text.
|
|
338
|
-
* @param dataModelPath
|
|
339
338
|
* @returns BindingToolkitExpression
|
|
340
339
|
*/
|
|
341
|
-
private getTooltipValue(
|
|
342
|
-
return dataModelPath.
|
|
343
|
-
? getExpressionFromAnnotation(dataModelPath.targetObject?.annotations?.Common?.QuickInfo, getRelativePaths(dataModelPath))
|
|
344
|
-
: undefined;
|
|
340
|
+
private getTooltipValue(): BindingToolkitExpression<string> | undefined {
|
|
341
|
+
return UIFormatters.getTooltipValue(this.dataModelPath, this.valueDataModelPath);
|
|
345
342
|
}
|
|
346
343
|
|
|
347
344
|
/**
|