@sapui5/sap.fe.macros 1.138.0 → 1.139.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.
Files changed (184) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/macros/.library +1 -1
  3. package/src/sap/fe/macros/Breadcrumbs.js +269 -0
  4. package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
  5. package/src/sap/fe/macros/CommonHelper.js +2 -2
  6. package/src/sap/fe/macros/CommonHelper.ts +1 -1
  7. package/src/sap/fe/macros/Field.js +21 -4
  8. package/src/sap/fe/macros/Field.ts +21 -3
  9. package/src/sap/fe/macros/FooterContent.js +40 -10
  10. package/src/sap/fe/macros/FooterContent.tsx +44 -8
  11. package/src/sap/fe/macros/FormElement.js +2 -2
  12. package/src/sap/fe/macros/FormElement.ts +1 -2
  13. package/src/sap/fe/macros/MultiValueField.js +17 -4
  14. package/src/sap/fe/macros/MultiValueField.tsx +7 -2
  15. package/src/sap/fe/macros/RichTextEditor.js +30 -5
  16. package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
  17. package/src/sap/fe/macros/Share.js +73 -40
  18. package/src/sap/fe/macros/Share.tsx +29 -1
  19. package/src/sap/fe/macros/ValueHelp.js +3 -4
  20. package/src/sap/fe/macros/ValueHelp.tsx +2 -3
  21. package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
  22. package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
  23. package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
  24. package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
  25. package/src/sap/fe/macros/ai/EasyFilterBar.js +30 -30
  26. package/src/sap/fe/macros/ai/EasyFilterBar.tsx +40 -43
  27. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
  28. package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
  29. package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
  30. package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
  31. package/src/sap/fe/macros/chart/MdcChartTemplate.js +19 -3
  32. package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +15 -4
  33. package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
  34. package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
  35. package/src/sap/fe/macros/controls/FilterBar.js +49 -2
  36. package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
  37. package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
  38. package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
  39. package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
  40. package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
  41. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
  42. package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
  43. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
  44. package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
  45. package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
  46. package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
  47. package/src/sap/fe/macros/designtime/Designtime.helper.js +12 -2
  48. package/src/sap/fe/macros/designtime/Designtime.helper.ts +12 -0
  49. package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
  50. package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
  51. package/src/sap/fe/macros/field/FieldBaseDelegate.js +9 -3
  52. package/src/sap/fe/macros/field/FieldBaseDelegate.ts +22 -1
  53. package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
  54. package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
  55. package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
  56. package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
  57. package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
  58. package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
  59. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
  60. package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
  61. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
  62. package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
  63. package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
  64. package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
  65. package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
  66. package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
  67. package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
  68. package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
  69. package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
  70. package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
  71. package/src/sap/fe/macros/internal/DataPoint.js +2 -1
  72. package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
  73. package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
  74. package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
  75. package/src/sap/fe/macros/internal/FilterField.block.js +4 -2
  76. package/src/sap/fe/macros/internal/FilterField.block.ts +3 -1
  77. package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
  78. package/src/sap/fe/macros/internal/field/DisplayStyle.js +49 -11
  79. package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +51 -4
  80. package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
  81. package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
  82. package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
  83. package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +10 -0
  84. package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
  85. package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
  86. package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +1 -0
  87. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +7 -3
  88. package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +8 -7
  89. package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
  90. package/src/sap/fe/macros/library.js +1 -1
  91. package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
  92. package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
  93. package/src/sap/fe/macros/messagebundle.properties +37 -29
  94. package/src/sap/fe/macros/messagebundle_ar.properties +5 -3
  95. package/src/sap/fe/macros/messagebundle_bg.properties +6 -4
  96. package/src/sap/fe/macros/messagebundle_ca.properties +8 -6
  97. package/src/sap/fe/macros/messagebundle_cnr.properties +5 -3
  98. package/src/sap/fe/macros/messagebundle_cs.properties +4 -2
  99. package/src/sap/fe/macros/messagebundle_cy.properties +7 -5
  100. package/src/sap/fe/macros/messagebundle_da.properties +6 -4
  101. package/src/sap/fe/macros/messagebundle_de.properties +11 -9
  102. package/src/sap/fe/macros/messagebundle_el.properties +7 -5
  103. package/src/sap/fe/macros/messagebundle_en.properties +8 -6
  104. package/src/sap/fe/macros/messagebundle_en_GB.properties +8 -6
  105. package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +8 -6
  106. package/src/sap/fe/macros/messagebundle_es.properties +6 -4
  107. package/src/sap/fe/macros/messagebundle_es_MX.properties +6 -4
  108. package/src/sap/fe/macros/messagebundle_et.properties +5 -3
  109. package/src/sap/fe/macros/messagebundle_fi.properties +8 -6
  110. package/src/sap/fe/macros/messagebundle_fr.properties +6 -4
  111. package/src/sap/fe/macros/messagebundle_fr_CA.properties +8 -6
  112. package/src/sap/fe/macros/messagebundle_hi.properties +6 -4
  113. package/src/sap/fe/macros/messagebundle_hr.properties +6 -4
  114. package/src/sap/fe/macros/messagebundle_hu.properties +4 -2
  115. package/src/sap/fe/macros/messagebundle_id.properties +8 -6
  116. package/src/sap/fe/macros/messagebundle_it.properties +4 -2
  117. package/src/sap/fe/macros/messagebundle_iw.properties +5 -3
  118. package/src/sap/fe/macros/messagebundle_ja.properties +5 -3
  119. package/src/sap/fe/macros/messagebundle_kk.properties +5 -3
  120. package/src/sap/fe/macros/messagebundle_ko.properties +4 -2
  121. package/src/sap/fe/macros/messagebundle_lt.properties +6 -4
  122. package/src/sap/fe/macros/messagebundle_lv.properties +5 -3
  123. package/src/sap/fe/macros/messagebundle_mk.properties +5 -3
  124. package/src/sap/fe/macros/messagebundle_ms.properties +8 -6
  125. package/src/sap/fe/macros/messagebundle_nl.properties +7 -5
  126. package/src/sap/fe/macros/messagebundle_no.properties +6 -4
  127. package/src/sap/fe/macros/messagebundle_pl.properties +6 -4
  128. package/src/sap/fe/macros/messagebundle_pt.properties +7 -5
  129. package/src/sap/fe/macros/messagebundle_pt_PT.properties +6 -4
  130. package/src/sap/fe/macros/messagebundle_ro.properties +7 -5
  131. package/src/sap/fe/macros/messagebundle_ru.properties +4 -2
  132. package/src/sap/fe/macros/messagebundle_sh.properties +5 -3
  133. package/src/sap/fe/macros/messagebundle_sk.properties +5 -3
  134. package/src/sap/fe/macros/messagebundle_sl.properties +6 -4
  135. package/src/sap/fe/macros/messagebundle_sr.properties +5 -3
  136. package/src/sap/fe/macros/messagebundle_sv.properties +5 -3
  137. package/src/sap/fe/macros/messagebundle_th.properties +4 -2
  138. package/src/sap/fe/macros/messagebundle_tr.properties +4 -2
  139. package/src/sap/fe/macros/messagebundle_uk.properties +10 -8
  140. package/src/sap/fe/macros/messagebundle_vi.properties +6 -4
  141. package/src/sap/fe/macros/messagebundle_zh_CN.properties +5 -3
  142. package/src/sap/fe/macros/messagebundle_zh_TW.properties +5 -3
  143. package/src/sap/fe/macros/messages/MessageButton.js +17 -19
  144. package/src/sap/fe/macros/messages/MessageButton.ts +24 -22
  145. package/src/sap/fe/macros/table/Action.js +24 -2
  146. package/src/sap/fe/macros/table/Action.ts +13 -0
  147. package/src/sap/fe/macros/table/ActionGroup.js +24 -2
  148. package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
  149. package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
  150. package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
  151. package/src/sap/fe/macros/table/ActionOverride.js +24 -2
  152. package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
  153. package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
  154. package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
  155. package/src/sap/fe/macros/table/Column.js +3 -3
  156. package/src/sap/fe/macros/table/Column.ts +2 -2
  157. package/src/sap/fe/macros/table/MdcTableTemplate.js +18 -8
  158. package/src/sap/fe/macros/table/MdcTableTemplate.tsx +30 -5
  159. package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
  160. package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
  161. package/src/sap/fe/macros/table/Table.block.js +137 -108
  162. package/src/sap/fe/macros/table/Table.block.tsx +29 -2
  163. package/src/sap/fe/macros/table/TableAPI.js +143 -133
  164. package/src/sap/fe/macros/table/TableAPI.ts +5 -1
  165. package/src/sap/fe/macros/table/TableDefinition.js +4 -2
  166. package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
  167. package/src/sap/fe/macros/table/TableRuntime.js +3 -3
  168. package/src/sap/fe/macros/table/TableRuntime.ts +2 -2
  169. package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -19
  170. package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -23
  171. package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
  172. package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
  173. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
  174. package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
  175. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
  176. package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
  177. package/src/sap/fe/macros/table/mixin/TableHierarchy.js +4 -1
  178. package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +3 -0
  179. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +11 -6
  180. package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +19 -14
  181. package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -6
  182. package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -2
  183. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +15 -3
  184. package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +17 -2
@@ -78,6 +78,7 @@ import OverflowToolbarLayoutData from "sap/m/OverflowToolbarLayoutData";
78
78
  import type { SegmentedButton$SelectionChangeEvent } from "sap/m/SegmentedButton";
79
79
  import SegmentedButton from "sap/m/SegmentedButton";
80
80
  import SegmentedButtonItem from "sap/m/SegmentedButtonItem";
81
+ import type { OverflowToolbarPriority } from "sap/m/library";
81
82
  import Device from "sap/ui/Device";
82
83
  import type { CommandExecution$ExecuteEvent } from "sap/ui/core/CommandExecution";
83
84
  import CustomData from "sap/ui/core/CustomData";
@@ -127,6 +128,8 @@ type CustomToolbarMenuAction = {
127
128
  buttonMode?: string;
128
129
  defaultAction?: string;
129
130
  actions?: CustomAction;
131
+ priority?: OverflowToolbarPriority;
132
+ group?: number;
130
133
  };
131
134
 
132
135
  enum personalizationValues {
@@ -1113,7 +1116,9 @@ function getCustomActions(action: CustomAndAction, chartContext: Context, chartB
1113
1116
  useDefaultActionOnly: DefaultActionHandler.getUseDefaultActionOnly(action),
1114
1117
  buttonMode: DefaultActionHandler.getButtonMode(action),
1115
1118
  defaultAction: undefined,
1116
- actions: action
1119
+ actions: action,
1120
+ priority: action.priority,
1121
+ group: action.group
1117
1122
  },
1118
1123
  chartContext,
1119
1124
  chartBlock
@@ -1177,7 +1182,8 @@ function getActionToolbarMenuAction(
1177
1182
  icon={isAIOperation ? aiIcon : undefined}
1178
1183
  >
1179
1184
  {{
1180
- menu: <Menu>{aMenuItems}</Menu>
1185
+ menu: <Menu>{aMenuItems}</Menu>,
1186
+ layoutData: <OverflowToolbarLayoutData priority={props.priority} group={props.group} />
1181
1187
  }}
1182
1188
  </MenuButton>
1183
1189
  </ActionToolbarAction>
@@ -1206,7 +1212,8 @@ function getAction(action: BaseAction | CustomAction, chartContext: Context, isM
1206
1212
  icon={action?.isAIOperation === true ? aiIcon : undefined}
1207
1213
  >
1208
1214
  {{
1209
- menu: <Menu>{menuItems}</Menu>
1215
+ menu: <Menu>{menuItems}</Menu>,
1216
+ layoutData: <OverflowToolbarLayoutData priority={action.priority} group={action.group} />
1210
1217
  }}
1211
1218
  </MenuButton>
1212
1219
  </ActionToolbarAction>
@@ -1358,7 +1365,11 @@ function buildAction(
1358
1365
  enabled={toolbarAction.enabled}
1359
1366
  visible={toolbarAction.visible}
1360
1367
  icon={action.isAIOperation === true ? aiIcon : undefined}
1361
- />
1368
+ >
1369
+ {{
1370
+ layoutData: <OverflowToolbarLayoutData priority={action.priority} group={action.group} />
1371
+ }}
1372
+ </Button>
1362
1373
  </ActionToolbarAction>
1363
1374
  );
1364
1375
  }
@@ -119,10 +119,15 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Control", "sap/ui/core/L
119
119
  * @param value
120
120
  */;
121
121
  _proto.setEditMode = function setEditMode(value) {
122
+ if (this.switchToDisplayTimeOutId) {
123
+ clearTimeout(this.switchToDisplayTimeOutId);
124
+ this.switchToDisplayTimeOutId = undefined;
125
+ }
122
126
  if (this.delaySwitchToDisplay && this.editMode && value === "Display" && this.editMode !== "Display") {
123
- setTimeout(() => {
127
+ this.switchToDisplayTimeOutId = window.setTimeout(() => {
124
128
  this.setProperty("editMode", value);
125
129
  this.invalidate();
130
+ this.switchToDisplayTimeOutId = undefined;
126
131
  }, 100); // workaround to ensure input focusout does not trigger a Patch request
127
132
  // DINC0524872
128
133
  } else {
@@ -154,7 +159,8 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Control", "sap/ui/core/L
154
159
  oRm.style("text-align", oControl.textAlign);
155
160
  if (oControl.editMode === "Display") {
156
161
  oRm.style("width", oControl.width);
157
- if (oControl.getParent().hasInlineEdit) {
162
+ const parentControl = oControl.getParent();
163
+ if (parentControl.hasInlineEdit && parentControl.formatOptions?.reactiveAreaMode !== "Overlay") {
158
164
  // tooltip
159
165
  oRm.attr("title", oControl.resourceBundle.getText("M_INLINE_EDIT_TOOLTIP_DOUBLECLICK_EDIT"));
160
166
  // focus
@@ -229,4 +235,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/ui/core/Control", "sap/ui/core/L
229
235
  }), _class2)) || _class);
230
236
  return FieldWrapper;
231
237
  }, false);
232
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFdyYXBwZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzQiLCJkZWZhdWx0VmFsdWUiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsInNpbmd1bGFyTmFtZSIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwiaXNEZWZhdWx0IiwiX2RlYzExIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwiaWQiLCJzZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSIsIm9FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJnZXRQYXJlbnQiLCJhZGRBZ2dyZWdhdGlvbiIsInNBZ2dyZWdhdGlvbk5hbWUiLCJvT2JqZWN0IiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsImlzQSIsInNldFByZWZlclVzZXJJbnRlcmFjdGlvbiIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwib0NvbnRlbnQiLCJlZGl0TW9kZSIsImNvbnRlbnREaXNwbGF5IiwiY29udGVudEVkaXQiLCJsZW5ndGgiLCJnZXRJZEZvckxhYmVsIiwic2V0RWRpdE1vZGUiLCJ2YWx1ZSIsImRlbGF5U3dpdGNoVG9EaXNwbGF5Iiwic2V0VGltZW91dCIsInNldFByb3BlcnR5IiwiaW52YWxpZGF0ZSIsIl9zZXRBcmlhTGFiZWxsZWRCeSIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiYUFyaWFMYWJlbGxlZEJ5IiwiYXJpYUxhYmVsbGVkQnkiLCJzSWQiLCJhQXJpYUxhYmVsbGVkQnlzIiwiZ2V0QXJpYUxhYmVsbGVkQnkiLCJpbmNsdWRlcyIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiYUNvbnRlbnRFZGl0IiwiaXRlbSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwib3BlblN0YXJ0Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImhhc0lubGluZUVkaXQiLCJhdHRyIiwiZ2V0VGV4dCIsIm9wZW5FbmQiLCJyZW5kZXJDb250cm9sIiwiY2xvc2UiLCJDb250cm9sIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWVsZFdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIElucHV0QmFzZSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NpYmlsaXR5SW5mbywgQ1NTU2l6ZSwgSUZvcm1Db250ZW50LCBUZXh0QWxpZ24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcIi4uL0ZpZWxkXCI7XG5cbnR5cGUgQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5ID0gQ29udHJvbCAmIHsgYWRkQXJpYUxhYmVsbGVkQnk/OiAoaWQ6IHN0cmluZykgPT4gdm9pZDsgZ2V0QXJpYUxhYmVsbGVkQnk6ICgpID0+IHN0cmluZ1tdIH07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmllbGRXcmFwcGVyXCIpXG5jbGFzcyBGaWVsZFdyYXBwZXIgZXh0ZW5kcyBDb250cm9sIGltcGxlbWVudHMgSUZvcm1Db250ZW50IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5UZXh0QWxpZ25cIiB9KVxuXHR0ZXh0QWxpZ24hOiBUZXh0QWxpZ247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5DU1NTaXplXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHR3aWR0aCE6IENTU1NpemU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Zm9ybURvTm90QWRqdXN0V2lkdGghOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJEaXNwbGF5XCIgfSlcblx0ZWRpdE1vZGUhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0cmVxdWlyZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGRlbGF5U3dpdGNoVG9EaXNwbGF5ITogYm9vbGVhbjtcblx0LyoqXG5cdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUsIHNpbmd1bGFyTmFtZTogXCJhcmlhTGFiZWxsZWRCeVwiIH0pXG5cdGFyaWFMYWJlbGxlZEJ5ITogc3RyaW5nW107XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnREaXNwbGF5ITogQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5O1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSB9KVxuXHRjb250ZW50RWRpdCE6IENvbnRyb2xXaXRoQWNjZXNzaWJpbGl0eVtdO1xuXG5cdHByaXZhdGUgcmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdGlkPzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgKFByb3BlcnRpZXNPZjxGaWVsZFdyYXBwZXI+ICYgJENvbnRyb2xTZXR0aW5ncyksXG5cdFx0c2V0dGluZ3M/OiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEZpZWxkV3JhcHBlcj5cblx0KSB7XG5cdFx0c3VwZXIoaWQgYXMgc3RyaW5nLCBzZXR0aW5ncyk7XG5cdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5cdH1cblxuXHRlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKG9FbGVtZW50OiBvYmplY3QsIG1BcmlhUHJvcHM6IG9iamVjdCk6IG9iamVjdCB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCk7XG5cblx0XHRpZiAob1BhcmVudCAmJiAob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlPzogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSkge1xuXHRcdFx0Ly8gZm9yd2FyZCAgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSBjYWxsIHRvIHRoZSBwYXJlbnRcblx0XHRcdChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU6IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUob0VsZW1lbnQsIG1BcmlhUHJvcHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBtQXJpYVByb3BzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZHMgYSBjb250cm9sIHRvIHRoZSBhZ2dyZWdhdGlvbi5cblx0ICogQHBhcmFtIHNBZ2dyZWdhdGlvbk5hbWVcblx0ICogQHBhcmFtIG9PYmplY3Rcblx0ICogQHBhcmFtIGJTdXBwcmVzc0ludmFsaWRhdGVcblx0ICogQHJldHVybnMgVGhlIEZpZWxkV3JhcHBlciBpbnN0YW5jZVxuXHQgKi9cblx0YWRkQWdncmVnYXRpb24oc0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLCBvT2JqZWN0OiBNYW5hZ2VkT2JqZWN0LCBiU3VwcHJlc3NJbnZhbGlkYXRlPzogYm9vbGVhbik6IHRoaXMge1xuXHRcdGlmIChzQWdncmVnYXRpb25OYW1lID09PSBcImNvbnRlbnRFZGl0XCIgJiYgb09iamVjdC5pc0E8SW5wdXRCYXNlPihcInNhcC5tLklucHV0QmFzZVwiKSkge1xuXHRcdFx0b09iamVjdC5zZXRQcmVmZXJVc2VySW50ZXJhY3Rpb24odHJ1ZSk7XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5hZGRBZ2dyZWdhdGlvbihzQWdncmVnYXRpb25OYW1lLCBvT2JqZWN0LCBiU3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdGdldEFjY2Vzc2liaWxpdHlJbmZvKCk6IEFjY2Vzc2liaWxpdHlJbmZvIHtcblx0XHRsZXQgb0NvbnRlbnQ7XG5cdFx0aWYgKHRoaXMuZWRpdE1vZGUgPT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRvQ29udGVudCA9IHRoaXMuY29udGVudERpc3BsYXk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RWRpdC5sZW5ndGggPyB0aGlzLmNvbnRlbnRFZGl0WzBdIDogbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIG9Db250ZW50ICYmIG9Db250ZW50LmdldEFjY2Vzc2liaWxpdHlJbmZvID8gb0NvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKSA6IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0Z2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGxldCBvQ29udGVudDtcblx0XHRpZiAodGhpcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RGlzcGxheTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRFZGl0Lmxlbmd0aCA/IHRoaXMuY29udGVudEVkaXRbMF0gOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gKG9Db250ZW50IGFzIENvbnRyb2wpPy5nZXRJZEZvckxhYmVsKCk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0dGVyIGZvciBlZGl0TW9kZS5cblx0ICogQHBhcmFtIHZhbHVlXG5cdCAqL1xuXHRzZXRFZGl0TW9kZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZGVsYXlTd2l0Y2hUb0Rpc3BsYXkgJiYgdGhpcy5lZGl0TW9kZSAmJiB2YWx1ZSA9PT0gXCJEaXNwbGF5XCIgJiYgdGhpcy5lZGl0TW9kZSAhPT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWRpdE1vZGVcIiwgdmFsdWUpO1xuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKTtcblx0XHRcdH0sIDEwMCk7IC8vIHdvcmthcm91bmQgdG8gZW5zdXJlIGlucHV0IGZvY3Vzb3V0IGRvZXMgbm90IHRyaWdnZXIgYSBQYXRjaCByZXF1ZXN0XG5cdFx0XHQvLyBESU5DMDUyNDg3MlxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWRpdE1vZGVcIiwgdmFsdWUpO1xuXHRcdH1cblx0fVxuXG5cdF9zZXRBcmlhTGFiZWxsZWRCeShvQ29udGVudD86IENvbnRyb2xXaXRoQWNjZXNzaWJpbGl0eSk6IHZvaWQge1xuXHRcdGlmIChvQ29udGVudCAmJiBvQ29udGVudC5hZGRBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5hcmlhTGFiZWxsZWRCeTtcblxuXHRcdFx0Zm9yIChjb25zdCBzSWQgb2YgYUFyaWFMYWJlbGxlZEJ5KSB7XG5cdFx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeXMgPSBvQ29udGVudC5nZXRBcmlhTGFiZWxsZWRCeSgpIHx8IFtdO1xuXHRcdFx0XHRpZiAoIWFBcmlhTGFiZWxsZWRCeXMuaW5jbHVkZXMoc0lkKSkge1xuXHRcdFx0XHRcdG9Db250ZW50LmFkZEFyaWFMYWJlbGxlZEJ5KHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRvbkJlZm9yZVJlbmRlcmluZygpOiB2b2lkIHtcblx0XHQvLyBiZWZvcmUgY2FsbGluZyB0aGUgcmVuZGVyZXIgb2YgdGhlIEZpZWxkV3JhcHBlciBwYXJlbnQgY29udHJvbCBtYXkgaGF2ZSBzZXQgYXJpYUxhYmVsbGVkQnlcblx0XHQvLyB3ZSBlbnN1cmUgaXQgaXMgcGFzc2VkIHRvIGl0cyBpbm5lciBjb250cm9sc1xuXHRcdHRoaXMuX3NldEFyaWFMYWJlbGxlZEJ5KHRoaXMuY29udGVudERpc3BsYXkpO1xuXHRcdGNvbnN0IGFDb250ZW50RWRpdCA9IHRoaXMuY29udGVudEVkaXQ7XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIGFDb250ZW50RWRpdCkge1xuXHRcdFx0dGhpcy5fc2V0QXJpYUxhYmVsbGVkQnkoaXRlbSk7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIHJlbmRlcihvUm06IFJlbmRlck1hbmFnZXIsIG9Db250cm9sOiBGaWVsZFdyYXBwZXIpOiB2b2lkIHtcblx0XHRvUm0ub3BlblN0YXJ0KFwiZGl2XCIsIG9Db250cm9sKTtcblx0XHRvUm0uc3R5bGUoXCJ0ZXh0LWFsaWduXCIsIG9Db250cm9sLnRleHRBbGlnbik7XG5cdFx0aWYgKG9Db250cm9sLmVkaXRNb2RlID09PSBcIkRpc3BsYXlcIikge1xuXHRcdFx0b1JtLnN0eWxlKFwid2lkdGhcIiwgb0NvbnRyb2wud2lkdGgpO1xuXHRcdFx0aWYgKChvQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWVsZCkuaGFzSW5saW5lRWRpdCkge1xuXHRcdFx0XHQvLyB0b29sdGlwXG5cdFx0XHRcdG9SbS5hdHRyKFwidGl0bGVcIiwgb0NvbnRyb2wucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fSU5MSU5FX0VESVRfVE9PTFRJUF9ET1VCTEVDTElDS19FRElUXCIpKTtcblx0XHRcdFx0Ly8gZm9jdXNcblx0XHRcdFx0b1JtLmF0dHIoXCJ0YWJpbmRleFwiLCAwKTtcblx0XHRcdH1cblx0XHRcdG9SbS5vcGVuRW5kKCk7XG5cdFx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50RGlzcGxheSk7IC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCBmb3IgZGlzcGxheVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBhQ29udGVudEVkaXQgPSBvQ29udHJvbC5jb250ZW50RWRpdDtcblxuXHRcdFx0b1JtLnN0eWxlKFwid2lkdGhcIiwgb0NvbnRyb2wud2lkdGgpO1xuXHRcdFx0b1JtLm9wZW5FbmQoKTtcblx0XHRcdGZvciAoY29uc3Qgb0NvbnRlbnQgb2YgYUNvbnRlbnRFZGl0KSB7XG5cdFx0XHRcdC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCAgZm9yIGVkaXRcblx0XHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvUm0uY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkV3JhcHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZU1BLFlBQVksSUFBQUMsSUFBQSxHQURqQkMsY0FBYyxDQUFDLHFDQUFxQyxDQUFDLEVBQUFDLEtBQUEsR0FFcERDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FHOUNDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBd0IsQ0FB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
238
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFdyYXBwZXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzQiLCJkZWZhdWx0VmFsdWUiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsIl9kZWM5IiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsInNpbmd1bGFyTmFtZSIsIl9kZWMxMCIsImFnZ3JlZ2F0aW9uIiwiaXNEZWZhdWx0IiwiX2RlYzExIiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9Db250cm9sIiwiaWQiLCJzZXR0aW5ncyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZGVzY3JpcHRvcjgiLCJfZGVzY3JpcHRvcjkiLCJfZGVzY3JpcHRvcjEwIiwicmVzb3VyY2VCdW5kbGUiLCJMaWIiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSIsIm9FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJnZXRQYXJlbnQiLCJhZGRBZ2dyZWdhdGlvbiIsInNBZ2dyZWdhdGlvbk5hbWUiLCJvT2JqZWN0IiwiYlN1cHByZXNzSW52YWxpZGF0ZSIsImlzQSIsInNldFByZWZlclVzZXJJbnRlcmFjdGlvbiIsImdldEFjY2Vzc2liaWxpdHlJbmZvIiwib0NvbnRlbnQiLCJlZGl0TW9kZSIsImNvbnRlbnREaXNwbGF5IiwiY29udGVudEVkaXQiLCJsZW5ndGgiLCJnZXRJZEZvckxhYmVsIiwic2V0RWRpdE1vZGUiLCJ2YWx1ZSIsInN3aXRjaFRvRGlzcGxheVRpbWVPdXRJZCIsImNsZWFyVGltZW91dCIsInVuZGVmaW5lZCIsImRlbGF5U3dpdGNoVG9EaXNwbGF5Iiwid2luZG93Iiwic2V0VGltZW91dCIsInNldFByb3BlcnR5IiwiaW52YWxpZGF0ZSIsIl9zZXRBcmlhTGFiZWxsZWRCeSIsImFkZEFyaWFMYWJlbGxlZEJ5IiwiYUFyaWFMYWJlbGxlZEJ5IiwiYXJpYUxhYmVsbGVkQnkiLCJzSWQiLCJhQXJpYUxhYmVsbGVkQnlzIiwiZ2V0QXJpYUxhYmVsbGVkQnkiLCJpbmNsdWRlcyIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiYUNvbnRlbnRFZGl0IiwiaXRlbSIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwib3BlblN0YXJ0Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsInBhcmVudENvbnRyb2wiLCJoYXNJbmxpbmVFZGl0IiwiZm9ybWF0T3B0aW9ucyIsInJlYWN0aXZlQXJlYU1vZGUiLCJhdHRyIiwiZ2V0VGV4dCIsIm9wZW5FbmQiLCJyZW5kZXJDb250cm9sIiwiY2xvc2UiLCJDb250cm9sIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWVsZFdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIElucHV0QmFzZSBmcm9tIFwic2FwL20vSW5wdXRCYXNlXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBBY2Nlc3NpYmlsaXR5SW5mbywgQ1NTU2l6ZSwgSUZvcm1Db250ZW50LCBUZXh0QWxpZ24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcIi4uL0ZpZWxkXCI7XG5cbnR5cGUgQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5ID0gQ29udHJvbCAmIHsgYWRkQXJpYUxhYmVsbGVkQnk/OiAoaWQ6IHN0cmluZykgPT4gdm9pZDsgZ2V0QXJpYUxhYmVsbGVkQnk6ICgpID0+IHN0cmluZ1tdIH07XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmllbGRXcmFwcGVyXCIpXG5jbGFzcyBGaWVsZFdyYXBwZXIgZXh0ZW5kcyBDb250cm9sIGltcGxlbWVudHMgSUZvcm1Db250ZW50IHtcblx0QGltcGxlbWVudEludGVyZmFjZShcInNhcC51aS5jb3JlLklGb3JtQ29udGVudFwiKVxuXHRfX2ltcGxlbWVudHNfX3NhcF91aV9jb3JlX0lGb3JtQ29udGVudCA9IHRydWU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5UZXh0QWxpZ25cIiB9KVxuXHR0ZXh0QWxpZ24hOiBUZXh0QWxpZ247XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAudWkuY29yZS5DU1NTaXplXCIsIGRlZmF1bHRWYWx1ZTogbnVsbCB9KVxuXHR3aWR0aCE6IENTU1NpemU7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0Zm9ybURvTm90QWRqdXN0V2lkdGghOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJEaXNwbGF5XCIgfSlcblx0ZWRpdE1vZGUhOiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0cmVxdWlyZWQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGRlbGF5U3dpdGNoVG9EaXNwbGF5ITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogQXNzb2NpYXRpb24gdG8gY29udHJvbHMgLyBJRHMgdGhhdCBsYWJlbCB0aGlzIGNvbnRyb2wgKHNlZSBXQUktQVJJQSBhdHRyaWJ1dGUgYXJpYS1sYWJlbGxlZGJ5KS5cblx0ICovXG5cdEBhc3NvY2lhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogdHJ1ZSwgc2luZ3VsYXJOYW1lOiBcImFyaWFMYWJlbGxlZEJ5XCIgfSlcblx0YXJpYUxhYmVsbGVkQnkhOiBzdHJpbmdbXTtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudERpc3BsYXkhOiBDb250cm9sV2l0aEFjY2Vzc2liaWxpdHk7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGNvbnRlbnRFZGl0ITogQ29udHJvbFdpdGhBY2Nlc3NpYmlsaXR5W107XG5cblx0cHJpdmF0ZSByZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGU7XG5cblx0cHJpdmF0ZSBzd2l0Y2hUb0Rpc3BsYXlUaW1lT3V0SWQ/OiBudW1iZXI7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0aWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQgfCAoUHJvcGVydGllc09mPEZpZWxkV3JhcHBlcj4gJiAkQ29udHJvbFNldHRpbmdzKSxcblx0XHRzZXR0aW5ncz86ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RmllbGRXcmFwcGVyPlxuXHQpIHtcblx0XHRzdXBlcihpZCBhcyBzdHJpbmcsIHNldHRpbmdzKTtcblx0XHR0aGlzLnJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcblx0fVxuXG5cdGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUob0VsZW1lbnQ6IG9iamVjdCwgbUFyaWFQcm9wczogb2JqZWN0KTogb2JqZWN0IHtcblx0XHRjb25zdCBvUGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcblxuXHRcdGlmIChvUGFyZW50ICYmIChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU/OiBGdW5jdGlvbiB9KS5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKSB7XG5cdFx0XHQvLyBmb3J3YXJkICBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIGNhbGwgdG8gdGhlIHBhcmVudFxuXHRcdFx0KG9QYXJlbnQgYXMgTWFuYWdlZE9iamVjdCAmIHsgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZTogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZShvRWxlbWVudCwgbUFyaWFQcm9wcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1BcmlhUHJvcHM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGNvbnRyb2wgdG8gdGhlIGFnZ3JlZ2F0aW9uLlxuXHQgKiBAcGFyYW0gc0FnZ3JlZ2F0aW9uTmFtZVxuXHQgKiBAcGFyYW0gb09iamVjdFxuXHQgKiBAcGFyYW0gYlN1cHByZXNzSW52YWxpZGF0ZVxuXHQgKiBAcmV0dXJucyBUaGUgRmllbGRXcmFwcGVyIGluc3RhbmNlXG5cdCAqL1xuXHRhZGRBZ2dyZWdhdGlvbihzQWdncmVnYXRpb25OYW1lOiBzdHJpbmcsIG9PYmplY3Q6IE1hbmFnZWRPYmplY3QsIGJTdXBwcmVzc0ludmFsaWRhdGU/OiBib29sZWFuKTogdGhpcyB7XG5cdFx0aWYgKHNBZ2dyZWdhdGlvbk5hbWUgPT09IFwiY29udGVudEVkaXRcIiAmJiBvT2JqZWN0LmlzQTxJbnB1dEJhc2U+KFwic2FwLm0uSW5wdXRCYXNlXCIpKSB7XG5cdFx0XHRvT2JqZWN0LnNldFByZWZlclVzZXJJbnRlcmFjdGlvbih0cnVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHN1cGVyLmFkZEFnZ3JlZ2F0aW9uKHNBZ2dyZWdhdGlvbk5hbWUsIG9PYmplY3QsIGJTdXBwcmVzc0ludmFsaWRhdGUpO1xuXHR9XG5cblx0Z2V0QWNjZXNzaWJpbGl0eUluZm8oKTogQWNjZXNzaWJpbGl0eUluZm8ge1xuXHRcdGxldCBvQ29udGVudDtcblx0XHRpZiAodGhpcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RGlzcGxheTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRFZGl0Lmxlbmd0aCA/IHRoaXMuY29udGVudEVkaXRbMF0gOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gb0NvbnRlbnQgJiYgb0NvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8gPyBvQ29udGVudC5nZXRBY2Nlc3NpYmlsaXR5SW5mbygpIDoge307XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgRE9NTm9kZSBJRCB0byBiZSB1c2VkIGZvciB0aGUgXCJsYWJlbEZvclwiIGF0dHJpYnV0ZS5cblx0ICpcblx0ICogV2UgZm9yd2FyZCB0aGUgY2FsbCBvZiB0aGlzIG1ldGhvZCB0byB0aGUgY29udGVudCBjb250cm9sLlxuXHQgKiBAcmV0dXJucyBJRCB0byBiZSB1c2VkIGZvciB0aGUgPGNvZGU+bGFiZWxGb3I8L2NvZGU+XG5cdCAqL1xuXHRnZXRJZEZvckxhYmVsKCk6IHN0cmluZyB7XG5cdFx0bGV0IG9Db250ZW50O1xuXHRcdGlmICh0aGlzLmVkaXRNb2RlID09PSBcIkRpc3BsYXlcIikge1xuXHRcdFx0b0NvbnRlbnQgPSB0aGlzLmNvbnRlbnREaXNwbGF5O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvQ29udGVudCA9IHRoaXMuY29udGVudEVkaXQubGVuZ3RoID8gdGhpcy5jb250ZW50RWRpdFswXSA6IG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiAob0NvbnRlbnQgYXMgQ29udHJvbCk/LmdldElkRm9yTGFiZWwoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXR0ZXIgZm9yIGVkaXRNb2RlLlxuXHQgKiBAcGFyYW0gdmFsdWVcblx0ICovXG5cdHNldEVkaXRNb2RlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5zd2l0Y2hUb0Rpc3BsYXlUaW1lT3V0SWQpIHtcblx0XHRcdGNsZWFyVGltZW91dCh0aGlzLnN3aXRjaFRvRGlzcGxheVRpbWVPdXRJZCk7XG5cdFx0XHR0aGlzLnN3aXRjaFRvRGlzcGxheVRpbWVPdXRJZCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZGVsYXlTd2l0Y2hUb0Rpc3BsYXkgJiYgdGhpcy5lZGl0TW9kZSAmJiB2YWx1ZSA9PT0gXCJEaXNwbGF5XCIgJiYgdGhpcy5lZGl0TW9kZSAhPT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdHRoaXMuc3dpdGNoVG9EaXNwbGF5VGltZU91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWRpdE1vZGVcIiwgdmFsdWUpO1xuXHRcdFx0XHR0aGlzLmludmFsaWRhdGUoKTtcblx0XHRcdFx0dGhpcy5zd2l0Y2hUb0Rpc3BsYXlUaW1lT3V0SWQgPSB1bmRlZmluZWQ7XG5cdFx0XHR9LCAxMDApOyAvLyB3b3JrYXJvdW5kIHRvIGVuc3VyZSBpbnB1dCBmb2N1c291dCBkb2VzIG5vdCB0cmlnZ2VyIGEgUGF0Y2ggcmVxdWVzdFxuXHRcdFx0Ly8gRElOQzA1MjQ4NzJcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXRQcm9wZXJ0eShcImVkaXRNb2RlXCIsIHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRfc2V0QXJpYUxhYmVsbGVkQnkob0NvbnRlbnQ/OiBDb250cm9sV2l0aEFjY2Vzc2liaWxpdHkpOiB2b2lkIHtcblx0XHRpZiAob0NvbnRlbnQgJiYgb0NvbnRlbnQuYWRkQXJpYUxhYmVsbGVkQnkpIHtcblx0XHRcdGNvbnN0IGFBcmlhTGFiZWxsZWRCeSA9IHRoaXMuYXJpYUxhYmVsbGVkQnk7XG5cblx0XHRcdGZvciAoY29uc3Qgc0lkIG9mIGFBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnlzID0gb0NvbnRlbnQuZ2V0QXJpYUxhYmVsbGVkQnkoKSB8fCBbXTtcblx0XHRcdFx0aWYgKCFhQXJpYUxhYmVsbGVkQnlzLmluY2x1ZGVzKHNJZCkpIHtcblx0XHRcdFx0XHRvQ29udGVudC5hZGRBcmlhTGFiZWxsZWRCeShzSWQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0b25CZWZvcmVSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0Ly8gYmVmb3JlIGNhbGxpbmcgdGhlIHJlbmRlcmVyIG9mIHRoZSBGaWVsZFdyYXBwZXIgcGFyZW50IGNvbnRyb2wgbWF5IGhhdmUgc2V0IGFyaWFMYWJlbGxlZEJ5XG5cdFx0Ly8gd2UgZW5zdXJlIGl0IGlzIHBhc3NlZCB0byBpdHMgaW5uZXIgY29udHJvbHNcblx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeSh0aGlzLmNvbnRlbnREaXNwbGF5KTtcblx0XHRjb25zdCBhQ29udGVudEVkaXQgPSB0aGlzLmNvbnRlbnRFZGl0O1xuXHRcdGZvciAoY29uc3QgaXRlbSBvZiBhQ29udGVudEVkaXQpIHtcblx0XHRcdHRoaXMuX3NldEFyaWFMYWJlbGxlZEJ5KGl0ZW0pO1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyByZW5kZXIob1JtOiBSZW5kZXJNYW5hZ2VyLCBvQ29udHJvbDogRmllbGRXcmFwcGVyKTogdm9pZCB7XG5cdFx0b1JtLm9wZW5TdGFydChcImRpdlwiLCBvQ29udHJvbCk7XG5cdFx0b1JtLnN0eWxlKFwidGV4dC1hbGlnblwiLCBvQ29udHJvbC50ZXh0QWxpZ24pO1xuXHRcdGlmIChvQ29udHJvbC5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdG9SbS5zdHlsZShcIndpZHRoXCIsIG9Db250cm9sLndpZHRoKTtcblx0XHRcdGNvbnN0IHBhcmVudENvbnRyb2wgPSBvQ29udHJvbC5nZXRQYXJlbnQoKSBhcyBGaWVsZDtcblx0XHRcdGlmIChwYXJlbnRDb250cm9sLmhhc0lubGluZUVkaXQgJiYgcGFyZW50Q29udHJvbC5mb3JtYXRPcHRpb25zPy5yZWFjdGl2ZUFyZWFNb2RlICE9PSBcIk92ZXJsYXlcIikge1xuXHRcdFx0XHQvLyB0b29sdGlwXG5cdFx0XHRcdG9SbS5hdHRyKFwidGl0bGVcIiwgb0NvbnRyb2wucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fSU5MSU5FX0VESVRfVE9PTFRJUF9ET1VCTEVDTElDS19FRElUXCIpKTtcblx0XHRcdFx0Ly8gZm9jdXNcblx0XHRcdFx0b1JtLmF0dHIoXCJ0YWJpbmRleFwiLCAwKTtcblx0XHRcdH1cblx0XHRcdG9SbS5vcGVuRW5kKCk7XG5cdFx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50RGlzcGxheSk7IC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCBmb3IgZGlzcGxheVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBhQ29udGVudEVkaXQgPSBvQ29udHJvbC5jb250ZW50RWRpdDtcblxuXHRcdFx0b1JtLnN0eWxlKFwid2lkdGhcIiwgb0NvbnRyb2wud2lkdGgpO1xuXHRcdFx0b1JtLm9wZW5FbmQoKTtcblx0XHRcdGZvciAoY29uc3Qgb0NvbnRlbnQgb2YgYUNvbnRlbnRFZGl0KSB7XG5cdFx0XHRcdC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCAgZm9yIGVkaXRcblx0XHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvUm0uY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkV3JhcHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZU1BLFlBQVksSUFBQUMsSUFBQSxHQURqQkMsY0FBYyxDQUFDLHFDQUFxQyxDQUFDLEVBQUFDLEtBQUEsR0FFcERDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLEVBQUFDLEtBQUEsR0FHOUNDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBd0IsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHM0NGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUscUJBQXFCO0lBQUVFLFlBQVksRUFBRTtFQUFLLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzdESixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUUsWUFBWSxFQUFFO0VBQU0sQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHbERMLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsUUFBUTtJQUFFRSxZQUFZLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQUdyRE4sUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFTO0lBQUVFLFlBQVksRUFBRTtFQUFNLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBR2xEUCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUUsWUFB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
@@ -34,6 +34,7 @@ class FieldWrapper extends Control implements IFormContent {
34
34
 
35
35
  @property({ type: "boolean", defaultValue: false })
36
36
  delaySwitchToDisplay!: boolean;
37
+
37
38
  /**
38
39
  * Association to controls / IDs that label this control (see WAI-ARIA attribute aria-labelledby).
39
40
  */
@@ -48,6 +49,8 @@ class FieldWrapper extends Control implements IFormContent {
48
49
 
49
50
  private resourceBundle: ResourceBundle;
50
51
 
52
+ private switchToDisplayTimeOutId?: number;
53
+
51
54
  constructor(
52
55
  id?: string | undefined | (PropertiesOf<FieldWrapper> & $ControlSettings),
53
56
  settings?: $ControlSettings & PropertiesOf<FieldWrapper>
@@ -112,10 +115,15 @@ class FieldWrapper extends Control implements IFormContent {
112
115
  * @param value
113
116
  */
114
117
  setEditMode(value: string): void {
118
+ if (this.switchToDisplayTimeOutId) {
119
+ clearTimeout(this.switchToDisplayTimeOutId);
120
+ this.switchToDisplayTimeOutId = undefined;
121
+ }
115
122
  if (this.delaySwitchToDisplay && this.editMode && value === "Display" && this.editMode !== "Display") {
116
- setTimeout(() => {
123
+ this.switchToDisplayTimeOutId = window.setTimeout(() => {
117
124
  this.setProperty("editMode", value);
118
125
  this.invalidate();
126
+ this.switchToDisplayTimeOutId = undefined;
119
127
  }, 100); // workaround to ensure input focusout does not trigger a Patch request
120
128
  // DINC0524872
121
129
  } else {
@@ -151,7 +159,8 @@ class FieldWrapper extends Control implements IFormContent {
151
159
  oRm.style("text-align", oControl.textAlign);
152
160
  if (oControl.editMode === "Display") {
153
161
  oRm.style("width", oControl.width);
154
- if ((oControl.getParent() as Field).hasInlineEdit) {
162
+ const parentControl = oControl.getParent() as Field;
163
+ if (parentControl.hasInlineEdit && parentControl.formatOptions?.reactiveAreaMode !== "Overlay") {
155
164
  // tooltip
156
165
  oRm.attr("title", oControl.resourceBundle.getText("M_INLINE_EDIT_TOOLTIP_DOUBLECLICK_EDIT"));
157
166
  // focus
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/controls/filterbar/FilterContainer", "sap/fe/macros/controls/filterbar/VisualFilterContainer", "sap/ui/core/Element", "sap/ui/mdc/FilterBar", "sap/ui/mdc/filterbar/aligned/FilterItemLayout"], function (Log, ClassSupport, FilterContainer, VisualFilterContainer, Element, MdcFilterBar, FilterItemLayout) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/controls/filterbar/FilterContainer", "sap/fe/macros/controls/filterbar/VisualFilterContainer", "sap/ui/core/Element", "sap/ui/mdc/FilterBar", "sap/ui/mdc/filterbar/aligned/FilterItemLayout", "./filterbar/utils/VisualFilterUtils"], function (Log, ClassSupport, FilterContainer, VisualFilterContainer, Element, MdcFilterBar, FilterItemLayout, VisualFilterUtils) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _class, _class2, _descriptor, _descriptor2;
@@ -14,6 +14,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
14
14
  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
15
15
  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
16
16
  function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
17
+ const VISUAL_FILTER_CONTAINER = "sap.fe.macros.controls.filterbar.VisualFilterContainer",
18
+ FILTER_CONTAINER = "sap.fe.macros.controls.filterbar.FilterContainer";
17
19
  let FilterBar = (_dec = defineUI5Class("sap.fe.macros.controls.FilterBar"), _dec2 = property({
18
20
  type: "string",
19
21
  defaultValue: "compact"
@@ -168,6 +170,51 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
168
170
  };
169
171
  _proto.getSegmentedButton = function getSegmentedButton() {
170
172
  return this._oSegmentedButton;
173
+ }
174
+
175
+ /**
176
+ * Enable or disable requests that are initiated by the FilterBar.
177
+ *
178
+ * To be used to suspend or resume requests(table or visual filters) when the filter bar is being modified or when the user is programmatically interacting with the filter controls.
179
+ * This method is also used to control whether the visual filter chart binding should be resumed/suspended based on the diff state, and resumed after conditon model update.
180
+ * @param enable Enable or disable requests
181
+ * @param diffState If there is a differnce in the external state that needs to be considered for visual filter in-parameters
182
+ */;
183
+ _proto.enableRequests = function enableRequests(enable, diffState) {
184
+ this.setSuspendSelection(!enable);
185
+ // We need to enable or disable the visual filter chart bindings based on diff state.
186
+ this._enableVisualFilterChartBindings(enable, diffState);
187
+ }
188
+
189
+ /**
190
+ * Get the filter layout by its type.
191
+ * @param layoutClassName The class name of the filter layout to be returned.
192
+ * @template T The type of the filter layout to be returned.
193
+ * @typedef {IFilterContainer} T The type of the filter layout to be returned
194
+ * @returns Corresponding filter layout if it exists, otherwise undefined.
195
+ */;
196
+ _proto._getFilterLayoutByType = function _getFilterLayoutByType(layoutClassName) {
197
+ const retFilterLayout = this._oFilterBarLayout.isA(layoutClassName) ? this._oFilterBarLayout : undefined;
198
+ return !retFilterLayout && this._oSecondaryFilterBarLayout?.isA(layoutClassName) ? this._oSecondaryFilterBarLayout : retFilterLayout;
199
+ };
200
+ _proto._enableVisualFilterChartBindings = function _enableVisualFilterChartBindings(enable, diffState) {
201
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
202
+ // @ts-ignore
203
+ const visualFilterLayout = this._getFilterLayoutByType(VISUAL_FILTER_CONTAINER);
204
+ if (visualFilterLayout) {
205
+ visualFilterLayout.enableChartBinding(enable, diffState);
206
+ return;
207
+ }
208
+
209
+ // If initial layout is compact, we don't have the visual filter layout(container) available yet until the user toggles to visual filter layout.
210
+ // So we need to check if the compact filter layout has visual filters and enable/disable the chart binding for those visual filters.
211
+ const compactFilterLayout = this._getFilterLayoutByType(FILTER_CONTAINER);
212
+ if (compactFilterLayout) {
213
+ const visualFilters = compactFilterLayout.getAllVisualFilterFields();
214
+ if (visualFilters) {
215
+ VisualFilterUtils.enableChartBinding(visualFilters, enable, diffState);
216
+ }
217
+ }
171
218
  };
172
219
  return FilterBar;
173
220
  }(MdcFilterBar), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "initialLayout", [_dec2], {
@@ -183,4 +230,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/macros/contro
183
230
  }), _class2)) || _class);
184
231
  return FilterBar;
185
232
  }, false);
186
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWx0ZXJCYXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIl9kZWMzIiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWRjRmlsdGVyQmFyIiwiaWRPclByb3BzIiwic2V0dGluZ3MiLCJfdGhpcyIsInByb3BlcnR5SW5mbyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2lzSW5pdGlhbGl6ZWQiLCJfaW5pdGlhbGl6ZVN0YXR1cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiaXNJbml0aWFsaXplZCIsInNldFRvZ2dsZUNvbnRyb2wiLCJ2VG9nZ2xlIiwiX29TZWdtZW50ZWRCdXR0b24iLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0b2dnbGVDb250cm9sIiwiZGV0YWNoRXZlbnQiLCJfdG9nZ2xlTGF5b3V0IiwiYmluZCIsImF0dGFjaEV2ZW50Iiwic2V0QXNzb2NpYXRpb24iLCJ0aGVuIiwidGFyZ2V0S2V5IiwiZ2V0U2VsZWN0ZWRLZXkiLCJfb0ZpbHRlckJhckxheW91dCIsImlzQSIsIl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0IiwiVmlzdWFsRmlsdGVyQ29udGFpbmVyIiwic2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsIm9DdXJyZW50RmlsdGVyQmFyTGF5b3V0Iiwib0ZpbHRlckl0ZW1zIiwiZ2V0RmlsdGVySXRlbXMiLCJhRmlsdGVyRmllbGRzIiwiZ2V0QWxsRmlsdGVyRmllbGRzIiwiYVNvcnRlZEZpbHRlckZpZWxkcyIsImdldFNvcnRlZEZpbHRlckZpZWxkcyIsImFCdXR0b25zIiwiZ2V0QWxsQnV0dG9ucyIsImFWaXN1YWxGaWx0ZXJGaWVsZHMiLCJnZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMiLCJzZXRBbGxGaWx0ZXJGaWVsZHMiLCJmb3JFYWNoIiwib0ZpbHRlckZpZWxkIiwiaUluZGV4IiwicmVtb3ZlRmlsdGVyRmllbGQiLCJpbnNlcnRGaWx0ZXJGaWVsZCIsIm9CdXR0b24iLCJyZW1vdmVCdXR0b24iLCJhZGRCdXR0b24iLCJzZXRBZ2dyZWdhdGlvbiIsImludmFsaWRhdGUiLCJjYXRjaCIsImVycm9yIiwiTG9nIiwiYUZpbHRlckl0ZW1zIiwiYUZpbHRlcklkcyIsIm9GaWx0ZXJJdGVtIiwicHVzaCIsImdldElkIiwic29ydCIsImFGaXJzdEl0ZW0iLCJhU2Vjb25kSXRlbSIsInNGaXJzdEl0ZW1WRklkIiwic1NlY29uZEl0ZW1WRklkIiwiZ2V0Q29udGVudCIsIm9Jbm5lckNvbnRyb2wiLCJpbmRleE9mIiwiX2NyZWF0ZUlubmVyTGF5b3V0IiwiRmlsdGVyQ29udGFpbmVyIiwiX2NMYXlvdXRJdGVtIiwiRmlsdGVySXRlbUxheW91dCIsImdldElubmVyIiwiYWRkU3R5bGVDbGFzcyIsIl9hZGRCdXR0b25zIiwib0lubmVyTGF5b3V0Iiwib0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiaW5pdGlhbExheW91dCIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwiZXhpdCIsImdldFNlZ21lbnRlZEJ1dHRvbiIsIk1kY0ZpbHRlckJhciIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyQmFyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhc3NvY2lhdGlvbiwgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEZpbHRlckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBWaXN1YWxGaWx0ZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvZmlsdGVyYmFyL1Zpc3VhbEZpbHRlclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvVmlzdWFsRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUgU2VnbWVudGVkQnV0dG9uIGZyb20gXCJzYXAvbS9TZWdtZW50ZWRCdXR0b25cIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB7IGRlZmF1bHQgYXMgRWxlbWVudCB9IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRGaWx0ZXJCYXJTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IE1kY0ZpbHRlckJhciBmcm9tIFwic2FwL3VpL21kYy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlckZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckZpZWxkXCI7XG5pbXBvcnQgdHlwZSBJRmlsdGVyQ29udGFpbmVyIGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9JRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgRmlsdGVySXRlbUxheW91dCBmcm9tIFwic2FwL3VpL21kYy9maWx0ZXJiYXIvYWxpZ25lZC9GaWx0ZXJJdGVtTGF5b3V0XCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIpXG5jbGFzcyBGaWx0ZXJCYXIgZXh0ZW5kcyBNZGNGaWx0ZXJCYXIge1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiLCBkZWZhdWx0VmFsdWU6IFwiY29tcGFjdFwiIH0pXG5cdGluaXRpYWxMYXlvdXQhOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRyb2wgd2hpY2ggYWxsb3dzIGZvciBzd2l0Y2hpbmcgYmV0d2VlbiB2aXN1YWwgYW5kIG5vcm1hbCBmaWx0ZXIgbGF5b3V0c1xuXHQgKi9cblx0QGFzc29jaWF0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5tLlNlZ21lbnRlZEJ1dHRvblwiLFxuXHRcdG11bHRpcGxlOiBmYWxzZVxuXHR9KVxuXHR0b2dnbGVDb250cm9sITogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKGlkT3JQcm9wcz86IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXI+ICYgJEZpbHRlckJhclNldHRpbmdzLCBzZXR0aW5ncz86IFByb3BlcnRpZXNPZjxGaWx0ZXJCYXI+ICYgJEZpbHRlckJhclNldHRpbmdzKSB7XG5cdFx0ZGVsZXRlIGlkT3JQcm9wcz8ucHJvcGVydHlJbmZvO1xuXHRcdGRlbGV0ZSBzZXR0aW5ncz8ucHJvcGVydHlJbmZvO1xuXHRcdHN1cGVyKGlkT3JQcm9wcyBhcyB1bmtub3duIGFzIHN0cmluZywgc2V0dGluZ3MpO1xuXHRcdHRoaXMuX2luaXRpYWxpemVTdGF0dXMoKTtcblx0fVxuXG5cdHByaXZhdGUgYXN5bmMgX2luaXRpYWxpemVTdGF0dXMoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0YXdhaXQgdGhpcy53YWl0Rm9ySW5pdGlhbGl6YXRpb24oKTtcblx0XHR0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcblx0fVxuXG5cdGlzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICEhdGhpcy5faXNJbml0aWFsaXplZDtcblx0fVxuXG5cdHByaXZhdGUgX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuXHRwcml2YXRlIF9vU2VnbWVudGVkQnV0dG9uPzogU2VnbWVudGVkQnV0dG9uO1xuXG5cdHByaXZhdGUgX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/OiBJRmlsdGVyQ29udGFpbmVyO1xuXG5cdHByaXZhdGUgX29GaWx0ZXJCYXJMYXlvdXQhOiBJRmlsdGVyQ29udGFpbmVyO1xuXG5cdHByaXZhdGUgX2NMYXlvdXRJdGVtOiB0eXBlb2YgRmlsdGVySXRlbUxheW91dDtcblxuXHRzZXRUb2dnbGVDb250cm9sKHZUb2dnbGU6IHN0cmluZyB8IFNlZ21lbnRlZEJ1dHRvbik6IHZvaWQge1xuXHRcdGlmICh0eXBlb2YgdlRvZ2dsZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbiA9IEVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodlRvZ2dsZSkgYXMgU2VnbWVudGVkQnV0dG9uO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9vU2VnbWVudGVkQnV0dG9uID0gdlRvZ2dsZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50b2dnbGVDb250cm9sICYmIHRoaXMuX29TZWdtZW50ZWRCdXR0b24pIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24uZGV0YWNoRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgdGhpcy5fdG9nZ2xlTGF5b3V0LmJpbmQodGhpcykpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5fb1NlZ21lbnRlZEJ1dHRvbikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbi5hdHRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB0aGlzLl90b2dnbGVMYXlvdXQuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHRcdHRoaXMuc2V0QXNzb2NpYXRpb24oXCJ0b2dnbGVDb250cm9sXCIsIHZUb2dnbGUsIHRydWUpO1xuXHR9XG5cblx0X3RvZ2dsZUxheW91dCgpOiB2b2lkIHtcblx0XHQvLyBTaW5jZSBwcmltYXJ5IGxheW91dCBpcyBhbHdheXMgY29tcGFjdFxuXHRcdC8vIGhlbmNlIHNldCB0aGUgc2Vjb25kYXJ5IGxheW91dCBhcyB2aXN1YWwgZmlsdGVyIG9ubHkgZm9yIHRoZSBmaXJzdCB0aW1lIG9ubHlcblx0XHR0aGlzLndhaXRGb3JJbml0aWFsaXphdGlvbigpXG5cdFx0XHQudGhlbigoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHRhcmdldEtleSA9IHRoaXMuX29TZWdtZW50ZWRCdXR0b24/LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHQodGFyZ2V0S2V5ID09PSBcInZpc3VhbFwiICYmXG5cdFx0XHRcdFx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0Py5pc0E8VmlzdWFsRmlsdGVyQ29udGFpbmVyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlckNvbnRhaW5lclwiKSkgfHxcblx0XHRcdFx0XHQodGFyZ2V0S2V5ID09PSBcImNvbXBhY3RcIiAmJlxuXHRcdFx0XHRcdFx0IXRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCF0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0KSB7XG5cdFx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dCA9IG5ldyBWaXN1YWxGaWx0ZXJDb250YWluZXIoKSBhcyB1bmtub3duIGFzIElGaWx0ZXJDb250YWluZXI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBkbyBub3Qgc2hvdyBBZGFwdCBGaWx0ZXJzIEJ1dHRvbiBmb3IgdmlzdWFsIGxheW91dFxuXHRcdFx0XHRpZiAodGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dD8uaXNBPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIikpIHtcblx0XHRcdFx0XHR0aGlzLnNldFNob3dBZGFwdEZpbHRlcnNCdXR0b24oZmFsc2UpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuc2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbih0cnVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGdldCBhbGwgZmlsdGVyIGZpZWxkcyBhbmQgYnV0dG9uIG9mIHRoZSBjdXJyZW50IGxheW91dFxuXHRcdFx0XHRjb25zdCBvQ3VycmVudEZpbHRlckJhckxheW91dCA9IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ7XG5cdFx0XHRcdGNvbnN0IG9GaWx0ZXJJdGVtcyA9IHRoaXMuZ2V0RmlsdGVySXRlbXMoKTtcblx0XHRcdFx0Y29uc3QgYUZpbHRlckZpZWxkcyA9IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbEZpbHRlckZpZWxkcygpO1xuXHRcdFx0XHRjb25zdCBhU29ydGVkRmlsdGVyRmllbGRzID0gdGhpcy5nZXRTb3J0ZWRGaWx0ZXJGaWVsZHMob0ZpbHRlckl0ZW1zLCBhRmlsdGVyRmllbGRzKTtcblx0XHRcdFx0Y29uc3QgYUJ1dHRvbnMgPSBvQ3VycmVudEZpbHRlckJhckxheW91dC5nZXRBbGxCdXR0b25zKCk7XG5cdFx0XHRcdGNvbnN0IGFWaXN1YWxGaWx0ZXJGaWVsZHMgPVxuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbFZpc3VhbEZpbHRlckZpZWxkcyAmJlxuXHRcdFx0XHRcdChvQ3VycmVudEZpbHRlckJhckxheW91dC5nZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMoKSBhcyBSZWNvcmQ8c3RyaW5nLCBWaXN1YWxGaWx0ZXI+IHwgdW5kZWZpbmVkKTtcblx0XHRcdFx0aWYgKHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKSB7XG5cdFx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dC5zZXRBbGxGaWx0ZXJGaWVsZHMoYVNvcnRlZEZpbHRlckZpZWxkcywgYVZpc3VhbEZpbHRlckZpZWxkcyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gdXNlIHNlY29uZGFyeSBmaWx0ZXIgYmFyIGxheW91dCBhcyBuZXcgbGF5b3V0XG5cdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQgPSB0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0ITtcblxuXHRcdFx0XHQvLyBpbnNlcnQgYWxsIGZpbHRlciBmaWVsZHMgZnJvbSBjdXJyZW50IGxheW91dCB0byBuZXcgbGF5b3V0XG5cdFx0XHRcdGFGaWx0ZXJGaWVsZHMuZm9yRWFjaCgob0ZpbHRlckZpZWxkOiBGaWx0ZXJGaWVsZCwgaUluZGV4OiBudW1iZXIpID0+IHtcblx0XHRcdFx0XHRvQ3VycmVudEZpbHRlckJhckxheW91dC5yZW1vdmVGaWx0ZXJGaWVsZChvRmlsdGVyRmllbGQpO1xuXHRcdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaW5zZXJ0RmlsdGVyRmllbGQob0ZpbHRlckZpZWxkLCBpSW5kZXgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8gaW5zZXJ0IGFsbCBidXR0b25zIGZyb20gdGhlIGN1cnJlbnQgbGF5b3V0IHRvIHRoZSBuZXcgbGF5b3V0XG5cdFx0XHRcdGFCdXR0b25zLmZvckVhY2goKG9CdXR0b246IEJ1dHRvbikgPT4ge1xuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LnJlbW92ZUJ1dHRvbihvQnV0dG9uKTtcblx0XHRcdFx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmFkZEJ1dHRvbihvQnV0dG9uKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gc2V0IHRoZSBjdXJyZW50IGZpbHRlciBiYXIgbGF5b3V0IHRvIHRoZSBzZWNvbmRhcnkgb25lXG5cdFx0XHRcdHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQgPSBvQ3VycmVudEZpbHRlckJhckxheW91dDtcblxuXHRcdFx0XHQvLyB1cGRhdGUgdGhlIGxheW91dCBhZ2dyZWdhdGlvbiBvZiB0aGUgZmlsdGVyIGJhciBhbmQgcmVyZW5kZXIgdGhlIHNhbWUuXG5cdFx0XHRcdHRoaXMuc2V0QWdncmVnYXRpb24oXCJsYXlvdXRcIiwgdGhpcy5fb0ZpbHRlckJhckxheW91dCwgdHJ1ZSk7XG5cdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuaW52YWxpZGF0ZSgpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdFx0XHRMb2cuZXJyb3IoZXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRnZXRTb3J0ZWRGaWx0ZXJGaWVsZHMoYUZpbHRlckl0ZW1zOiBGaWx0ZXJGaWVsZFtdLCBhRmlsdGVyRmllbGRzOiBGaWx0ZXJGaWVsZFtdKTogRmlsdGVyRmllbGRbXSB7XG5cdFx0Y29uc3QgYUZpbHRlcklkczogc3RyaW5nW10gPSBbXTtcblx0XHRhRmlsdGVySXRlbXMuZm9yRWFjaChmdW5jdGlvbiAob0ZpbHRlckl0ZW06IEZpbHRlckZpZWxkKSB7XG5cdFx0XHRhRmlsdGVySWRzLnB1c2gob0ZpbHRlckl0ZW0uZ2V0SWQoKSk7XG5cdFx0fSk7XG5cdFx0YUZpbHRlckZpZWxkcy5zb3J0KGZ1bmN0aW9uIChhRmlyc3RJdGVtOiBGaWx0ZXJGaWVsZCwgYVNlY29uZEl0ZW06IEZpbHRlckZpZWxkKSB7XG5cdFx0XHRsZXQgc0ZpcnN0SXRlbVZGSWQsIHNTZWNvbmRJdGVtVkZJZDtcblx0XHRcdChhRmlyc3RJdGVtLmdldENvbnRlbnQoKSBhcyB1bmtub3duIGFzIENvbnRyb2xbXSkuZm9yRWFjaChmdW5jdGlvbiAob0lubmVyQ29udHJvbDogQ29udHJvbCkge1xuXHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0E8RmlsdGVyRmllbGQ+KFwic2FwLnVpLm1kYy5GaWx0ZXJGaWVsZFwiKSkge1xuXHRcdFx0XHRcdHNGaXJzdEl0ZW1WRklkID0gb0lubmVyQ29udHJvbC5nZXRJZCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdChhU2Vjb25kSXRlbS5nZXRDb250ZW50KCkgYXMgdW5rbm93biBhcyBDb250cm9sW10pLmZvckVhY2goZnVuY3Rpb24gKG9Jbm5lckNvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRcdFx0aWYgKG9Jbm5lckNvbnRyb2wuaXNBPEZpbHRlckZpZWxkPihcInNhcC51aS5tZGMuRmlsdGVyRmllbGRcIikpIHtcblx0XHRcdFx0XHRzU2Vjb25kSXRlbVZGSWQgPSBvSW5uZXJDb250cm9sLmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGFGaWx0ZXJJZHMuaW5kZXhPZihzRmlyc3RJdGVtVkZJZCA/PyBcIlwiKSAtIGFGaWx0ZXJJZHMuaW5kZXhPZihzU2Vjb25kSXRlbVZGSWQgPz8gXCJcIik7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFGaWx0ZXJGaWVsZHM7XG5cdH1cblxuXHRfY3JlYXRlSW5uZXJMYXlvdXQoKTogdm9pZCB7XG5cdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dCA9IG5ldyBGaWx0ZXJDb250YWluZXIoKTtcblx0XHR0aGlzLl9jTGF5b3V0SXRlbSA9IEZpbHRlckl0ZW1MYXlvdXQ7XG5cdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dC5nZXRJbm5lcigpLmFkZFN0eWxlQ2xhc3MoXCJzYXBVaU1kY0ZpbHRlckJhckJhc2VBRkxheW91dFwiKTtcblx0XHR0aGlzLl9hZGRCdXR0b25zKCk7XG5cblx0XHQvLyBUT0RPOiBDaGVjayB3aXRoIE1EQyBpZiB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gbG9hZCB2aXN1YWwgZmlsdGVyIG9uIHRoZSBiYXNpcyBvZiBjb250cm9sIHByb3BlcnR5XG5cdFx0Ly8gX2NyZWF0ZUlubmVyTGF5b3V0IGlzIGNhbGxlZCBvbiBJbml0IGJ5IHRoZSBmaWx0ZXIgYmFyIGJhc2UuXG5cdFx0Ly8gVGhpcyBtZWFuIHRoYXQgd2UgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjb250cm9sIHByb3BlcnRpZXMgeWV0XG5cdFx0Ly8gYW5kIGhlbmNlIHdlIGNhbm5vdCBkZWNpZGUgb24gdGhlIGJhc2lzIG9mIGNvbnRyb2wgcHJvcGVydGllcyB3aGV0aGVyIGluaXRpYWwgbGF5b3V0IHNob3VsZCBiZSBjb21wYWN0IG9yIHZpc3VhbFxuXHRcdC8vIEFzIGEgcmVzdWx0IHdlIGhhdmUgdG8gZG8gdGhpcyB3b3JrYXJvdW5kIHRvIGFsd2F5cyBsb2FkIHRoZSBjb21wYWN0IGxheW91dCBieSBkZWZhdWx0XG5cdFx0Ly8gQW5kIHRvb2dsZSB0aGUgc2FtZSBpbiBjYXNlIHRoZSBpbml0aWFsTGF5b3V0IHdhcyBzdXBwb3NlZCB0byBiZSB2aXN1YWwgZmlsdGVycy5cblx0XHRjb25zdCBvSW5uZXJMYXlvdXQgPSB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmdldElubmVyKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlUmVuZGVyaW5nOiAoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmluaXRpYWxMYXlvdXQgPT09IFwidmlzdWFsXCIpIHtcblx0XHRcdFx0XHR0aGlzLl90b2dnbGVMYXlvdXQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvSW5uZXJMYXlvdXQucmVtb3ZlRXZlbnREZWxlZ2F0ZShvRmlsdGVyQ29udGFpbmVySW5uZXJMYXlvdXRFdmVudERlbGVnYXRlKTtcblx0XHRcdH1cblx0XHR9O1xuXHRcdG9Jbm5lckxheW91dC5hZGRFdmVudERlbGVnYXRlKG9GaWx0ZXJDb250YWluZXJJbm5lckxheW91dEV2ZW50RGVsZWdhdGUpO1xuXG5cdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcImxheW91dFwiLCB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LCB0cnVlKTtcblx0fVxuXG5cdGV4aXQoKTogdm9pZCB7XG5cdFx0c3VwZXIuZXhpdCgpO1xuXHRcdC8vIFNvbWV0aW1lcyB1cG9uIGV4dGVybmFsIG5hdmlnYXRpb24gdGhpcy5fU2VnbWVudGVkQnV0dG9uIGlzIGFscmVhZHkgZGVzdHJveWVkXG5cdFx0Ly8gc28gY2hlY2sgaWYgaXQgZXhpc3RzIGFuZCB0aGVuIG9ubHkgcmVtb3ZlIHN0dWZmXG5cdFx0aWYgKHRoaXMuX29TZWdtZW50ZWRCdXR0b24pIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24uZGV0YWNoRXZlbnQoXCJzZWxlY3Rpb25DaGFuZ2VcIiwgdGhpcy5fdG9nZ2xlTGF5b3V0KTtcblx0XHRcdGRlbGV0ZSB0aGlzLl9vU2VnbWVudGVkQnV0dG9uO1xuXHRcdH1cblx0fVxuXG5cdGdldFNlZ21lbnRlZEJ1dHRvbigpOiBTZWdtZW50ZWRCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9vU2VnbWVudGVkQnV0dG9uO1xuXHR9XG59XG5pbnRlcmZhY2UgRmlsdGVyQmFyIHtcblx0X2FkZEJ1dHRvbnMoKTogdm9pZDtcbn1cbmV4cG9ydCBkZWZhdWx0IEZpbHRlckJhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztNQWlCTUEsU0FBUyxJQUFBQyxJQUFBLEdBRGRDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFBQyxLQUFBLEdBRWpEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsWUFBWSxFQUFFO0VBQVUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNckRDLFdBQVcsQ0FBQztJQUNaSCxJQUFJLEVBQUUsdUJBQXVCO0lBQzdCSSxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQVIsSUFBQSxDQUFBUyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGFBQUE7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
233
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWSVNVQUxfRklMVEVSX0NPTlRBSU5FUiIsIkZJTFRFUl9DT05UQUlORVIiLCJGaWx0ZXJCYXIiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIl9kZWMzIiwiYXNzb2NpYXRpb24iLCJtdWx0aXBsZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfTWRjRmlsdGVyQmFyIiwiaWRPclByb3BzIiwic2V0dGluZ3MiLCJfdGhpcyIsInByb3BlcnR5SW5mbyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2lzSW5pdGlhbGl6ZWQiLCJfaW5pdGlhbGl6ZVN0YXR1cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwid2FpdEZvckluaXRpYWxpemF0aW9uIiwiaXNJbml0aWFsaXplZCIsInNldFRvZ2dsZUNvbnRyb2wiLCJ2VG9nZ2xlIiwiX29TZWdtZW50ZWRCdXR0b24iLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0b2dnbGVDb250cm9sIiwiZGV0YWNoRXZlbnQiLCJfdG9nZ2xlTGF5b3V0IiwiYmluZCIsImF0dGFjaEV2ZW50Iiwic2V0QXNzb2NpYXRpb24iLCJ0aGVuIiwidGFyZ2V0S2V5IiwiZ2V0U2VsZWN0ZWRLZXkiLCJfb0ZpbHRlckJhckxheW91dCIsImlzQSIsIl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0IiwiVmlzdWFsRmlsdGVyQ29udGFpbmVyIiwic2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsIm9DdXJyZW50RmlsdGVyQmFyTGF5b3V0Iiwib0ZpbHRlckl0ZW1zIiwiZ2V0RmlsdGVySXRlbXMiLCJhRmlsdGVyRmllbGRzIiwiZ2V0QWxsRmlsdGVyRmllbGRzIiwiYVNvcnRlZEZpbHRlckZpZWxkcyIsImdldFNvcnRlZEZpbHRlckZpZWxkcyIsImFCdXR0b25zIiwiZ2V0QWxsQnV0dG9ucyIsImFWaXN1YWxGaWx0ZXJGaWVsZHMiLCJnZXRBbGxWaXN1YWxGaWx0ZXJGaWVsZHMiLCJzZXRBbGxGaWx0ZXJGaWVsZHMiLCJmb3JFYWNoIiwib0ZpbHRlckZpZWxkIiwiaUluZGV4IiwicmVtb3ZlRmlsdGVyRmllbGQiLCJpbnNlcnRGaWx0ZXJGaWVsZCIsIm9CdXR0b24iLCJyZW1vdmVCdXR0b24iLCJhZGRCdXR0b24iLCJzZXRBZ2dyZWdhdGlvbiIsImludmFsaWRhdGUiLCJjYXRjaCIsImVycm9yIiwiTG9nIiwiYUZpbHRlckl0ZW1zIiwiYUZpbHRlcklkcyIsIm9GaWx0ZXJJdGVtIiwicHVzaCIsImdldElkIiwic29ydCIsImFGaXJzdEl0ZW0iLCJhU2Vjb25kSXRlbSIsInNGaXJzdEl0ZW1WRklkIiwic1NlY29uZEl0ZW1WRklkIiwiZ2V0Q29udGVudCIsIm9Jbm5lckNvbnRyb2wiLCJpbmRleE9mIiwiX2NyZWF0ZUlubmVyTGF5b3V0IiwiRmlsdGVyQ29udGFpbmVyIiwiX2NMYXlvdXRJdGVtIiwiRmlsdGVySXRlbUxheW91dCIsImdldElubmVyIiwiYWRkU3R5bGVDbGFzcyIsIl9hZGRCdXR0b25zIiwib0lubmVyTGF5b3V0Iiwib0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwiaW5pdGlhbExheW91dCIsInJlbW92ZUV2ZW50RGVsZWdhdGUiLCJhZGRFdmVudERlbGVnYXRlIiwiZXhpdCIsImdldFNlZ21lbnRlZEJ1dHRvbiIsImVuYWJsZVJlcXVlc3RzIiwiZW5hYmxlIiwiZGlmZlN0YXRlIiwic2V0U3VzcGVuZFNlbGVjdGlvbiIsIl9lbmFibGVWaXN1YWxGaWx0ZXJDaGFydEJpbmRpbmdzIiwiX2dldEZpbHRlckxheW91dEJ5VHlwZSIsImxheW91dENsYXNzTmFtZSIsInJldEZpbHRlckxheW91dCIsInVuZGVmaW5lZCIsInZpc3VhbEZpbHRlckxheW91dCIsImVuYWJsZUNoYXJ0QmluZGluZyIsImNvbXBhY3RGaWx0ZXJMYXlvdXQiLCJ2aXN1YWxGaWx0ZXJzIiwiVmlzdWFsRmlsdGVyVXRpbHMiLCJNZGNGaWx0ZXJCYXIiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckJhci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBGaWx0ZXJDb250YWluZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvZmlsdGVyYmFyL0ZpbHRlckNvbnRhaW5lclwiO1xuaW1wb3J0IFZpc3VhbEZpbHRlckNvbnRhaW5lciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9maWx0ZXJiYXIvVmlzdWFsRmlsdGVyQ29udGFpbmVyXCI7XG5pbXBvcnQgdHlwZSBWaXN1YWxGaWx0ZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvdmlzdWFsZmlsdGVycy9WaXN1YWxGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIEJ1dHRvbiBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgdHlwZSBTZWdtZW50ZWRCdXR0b24gZnJvbSBcInNhcC9tL1NlZ21lbnRlZEJ1dHRvblwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBFbGVtZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgJEZpbHRlckJhclNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyQmFyXCI7XG5pbXBvcnQgTWRjRmlsdGVyQmFyIGZyb20gXCJzYXAvdWkvbWRjL0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgRmlsdGVyRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmlsdGVyRmllbGRcIjtcbmltcG9ydCB0eXBlIElGaWx0ZXJDb250YWluZXIgZnJvbSBcInNhcC91aS9tZGMvZmlsdGVyYmFyL0lGaWx0ZXJDb250YWluZXJcIjtcbmltcG9ydCBGaWx0ZXJJdGVtTGF5b3V0IGZyb20gXCJzYXAvdWkvbWRjL2ZpbHRlcmJhci9hbGlnbmVkL0ZpbHRlckl0ZW1MYXlvdXRcIjtcbmltcG9ydCB7IHR5cGUgRXh0ZXJuYWxTdGF0ZVR5cGUgfSBmcm9tIFwiLi4vdmFsdWVoZWxwL1ZhbHVlSGVscERlbGVnYXRlXCI7XG5pbXBvcnQgVmlzdWFsRmlsdGVyVXRpbHMgZnJvbSBcIi4vZmlsdGVyYmFyL3V0aWxzL1Zpc3VhbEZpbHRlclV0aWxzXCI7XG5cbmNvbnN0IFZJU1VBTF9GSUxURVJfQ09OVEFJTkVSID0gXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIixcblx0RklMVEVSX0NPTlRBSU5FUiA9IFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuRmlsdGVyQ29udGFpbmVyXCI7XG50eXBlIENvbnRhaW5lclR5cGUgPSB0eXBlb2YgVklTVUFMX0ZJTFRFUl9DT05UQUlORVIgfCB0eXBlb2YgRklMVEVSX0NPTlRBSU5FUjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5GaWx0ZXJCYXJcIilcbmNsYXNzIEZpbHRlckJhciBleHRlbmRzIE1kY0ZpbHRlckJhciB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGRlZmF1bHRWYWx1ZTogXCJjb21wYWN0XCIgfSlcblx0aW5pdGlhbExheW91dCE6IHN0cmluZztcblxuXHQvKipcblx0ICogQ29udHJvbCB3aGljaCBhbGxvd3MgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIHZpc3VhbCBhbmQgbm9ybWFsIGZpbHRlciBsYXlvdXRzXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLm0uU2VnbWVudGVkQnV0dG9uXCIsXG5cdFx0bXVsdGlwbGU6IGZhbHNlXG5cdH0pXG5cdHRvZ2dsZUNvbnRyb2whOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IoaWRPclByb3BzPzogUHJvcGVydGllc09mPEZpbHRlckJhcj4gJiAkRmlsdGVyQmFyU2V0dGluZ3MsIHNldHRpbmdzPzogUHJvcGVydGllc09mPEZpbHRlckJhcj4gJiAkRmlsdGVyQmFyU2V0dGluZ3MpIHtcblx0XHRkZWxldGUgaWRPclByb3BzPy5wcm9wZXJ0eUluZm87XG5cdFx0ZGVsZXRlIHNldHRpbmdzPy5wcm9wZXJ0eUluZm87XG5cdFx0c3VwZXIoaWRPclByb3BzIGFzIHVua25vd24gYXMgc3RyaW5nLCBzZXR0aW5ncyk7XG5cdFx0dGhpcy5faW5pdGlhbGl6ZVN0YXR1cygpO1xuXHR9XG5cblx0cHJpdmF0ZSBhc3luYyBfaW5pdGlhbGl6ZVN0YXR1cygpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRhd2FpdCB0aGlzLndhaXRGb3JJbml0aWFsaXphdGlvbigpO1xuXHRcdHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXHR9XG5cblx0aXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gISF0aGlzLl9pc0luaXRpYWxpemVkO1xuXHR9XG5cblx0cHJpdmF0ZSBfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuXG5cdHByaXZhdGUgX29TZWdtZW50ZWRCdXR0b24/OiBTZWdtZW50ZWRCdXR0b247XG5cblx0cHJpdmF0ZSBfb1NlY29uZGFyeUZpbHRlckJhckxheW91dD86IElGaWx0ZXJDb250YWluZXI7XG5cblx0cHJpdmF0ZSBfb0ZpbHRlckJhckxheW91dCE6IElGaWx0ZXJDb250YWluZXI7XG5cblx0cHJpdmF0ZSBfY0xheW91dEl0ZW06IHR5cGVvZiBGaWx0ZXJJdGVtTGF5b3V0O1xuXG5cdHNldFRvZ2dsZUNvbnRyb2wodlRvZ2dsZTogc3RyaW5nIHwgU2VnbWVudGVkQnV0dG9uKTogdm9pZCB7XG5cdFx0aWYgKHR5cGVvZiB2VG9nZ2xlID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHR0aGlzLl9vU2VnbWVudGVkQnV0dG9uID0gRWxlbWVudC5nZXRFbGVtZW50QnlJZCh2VG9nZ2xlKSBhcyBTZWdtZW50ZWRCdXR0b247XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX29TZWdtZW50ZWRCdXR0b24gPSB2VG9nZ2xlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnRvZ2dsZUNvbnRyb2wgJiYgdGhpcy5fb1NlZ21lbnRlZEJ1dHRvbikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbi5kZXRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB0aGlzLl90b2dnbGVMYXlvdXQuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl9vU2VnbWVudGVkQnV0dG9uKSB7XG5cdFx0XHR0aGlzLl9vU2VnbWVudGVkQnV0dG9uLmF0dGFjaEV2ZW50KFwic2VsZWN0aW9uQ2hhbmdlXCIsIHRoaXMuX3RvZ2dsZUxheW91dC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cdFx0dGhpcy5zZXRBc3NvY2lhdGlvbihcInRvZ2dsZUNvbnRyb2xcIiwgdlRvZ2dsZSwgdHJ1ZSk7XG5cdH1cblxuXHRfdG9nZ2xlTGF5b3V0KCk6IHZvaWQge1xuXHRcdC8vIFNpbmNlIHByaW1hcnkgbGF5b3V0IGlzIGFsd2F5cyBjb21wYWN0XG5cdFx0Ly8gaGVuY2Ugc2V0IHRoZSBzZWNvbmRhcnkgbGF5b3V0IGFzIHZpc3VhbCBmaWx0ZXIgb25seSBmb3IgdGhlIGZpcnN0IHRpbWUgb25seVxuXHRcdHRoaXMud2FpdEZvckluaXRpYWxpemF0aW9uKClcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0Y29uc3QgdGFyZ2V0S2V5ID0gdGhpcy5fb1NlZ21lbnRlZEJ1dHRvbj8uZ2V0U2VsZWN0ZWRLZXkoKTtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCh0YXJnZXRLZXkgPT09IFwidmlzdWFsXCIgJiZcblx0XHRcdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQ/LmlzQTxWaXN1YWxGaWx0ZXJDb250YWluZXI+KFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5maWx0ZXJiYXIuVmlzdWFsRmlsdGVyQ29udGFpbmVyXCIpKSB8fFxuXHRcdFx0XHRcdCh0YXJnZXRLZXkgPT09IFwiY29tcGFjdFwiICYmXG5cdFx0XHRcdFx0XHQhdGhpcy5fb0ZpbHRlckJhckxheW91dD8uaXNBPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIikpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIXRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQpIHtcblx0XHRcdFx0XHR0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0ID0gbmV3IFZpc3VhbEZpbHRlckNvbnRhaW5lcigpIGFzIHVua25vd24gYXMgSUZpbHRlckNvbnRhaW5lcjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGRvIG5vdCBzaG93IEFkYXB0IEZpbHRlcnMgQnV0dG9uIGZvciB2aXN1YWwgbGF5b3V0XG5cdFx0XHRcdGlmICh0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0Py5pc0E8VmlzdWFsRmlsdGVyQ29udGFpbmVyPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuZmlsdGVyYmFyLlZpc3VhbEZpbHRlckNvbnRhaW5lclwiKSkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U2hvd0FkYXB0RmlsdGVyc0J1dHRvbihmYWxzZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTaG93QWRhcHRGaWx0ZXJzQnV0dG9uKHRydWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gZ2V0IGFsbCBmaWx0ZXIgZmllbGRzIGFuZCBidXR0b24gb2YgdGhlIGN1cnJlbnQgbGF5b3V0XG5cdFx0XHRcdGNvbnN0IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0ID0gdGhpcy5fb0ZpbHRlckJhckxheW91dDtcblx0XHRcdFx0Y29uc3Qgb0ZpbHRlckl0ZW1zID0gdGhpcy5nZXRGaWx0ZXJJdGVtcygpO1xuXHRcdFx0XHRjb25zdCBhRmlsdGVyRmllbGRzID0gb0N1cnJlbnRGaWx0ZXJCYXJMYXlvdXQuZ2V0QWxsRmlsdGVyRmllbGRzKCk7XG5cdFx0XHRcdGNvbnN0IGFTb3J0ZWRGaWx0ZXJGaWVsZHMgPSB0aGlzLmdldFNvcnRlZEZpbHRlckZpZWxkcyhvRmlsdGVySXRlbXMsIGFGaWx0ZXJGaWVsZHMpO1xuXHRcdFx0XHRjb25zdCBhQnV0dG9ucyA9IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbEJ1dHRvbnMoKTtcblx0XHRcdFx0Y29uc3QgYVZpc3VhbEZpbHRlckZpZWxkcyA9XG5cdFx0XHRcdFx0b0N1cnJlbnRGaWx0ZXJCYXJMYXlvdXQuZ2V0QWxsVmlzdWFsRmlsdGVyRmllbGRzICYmXG5cdFx0XHRcdFx0KG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LmdldEFsbFZpc3VhbEZpbHRlckZpZWxkcygpIGFzIFJlY29yZDxzdHJpbmcsIFZpc3VhbEZpbHRlcj4gfCB1bmRlZmluZWQpO1xuXHRcdFx0XHRpZiAodGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dD8uaXNBPFZpc3VhbEZpbHRlckNvbnRhaW5lcj4oXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLmZpbHRlcmJhci5WaXN1YWxGaWx0ZXJDb250YWluZXJcIikpIHtcblx0XHRcdFx0XHR0aGlzLl9vU2Vjb25kYXJ5RmlsdGVyQmFyTGF5b3V0LnNldEFsbEZpbHRlckZpZWxkcyhhU29ydGVkRmlsdGVyRmllbGRzLCBhVmlzdWFsRmlsdGVyRmllbGRzKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyB1c2Ugc2Vjb25kYXJ5IGZpbHRlciBiYXIgbGF5b3V0IGFzIG5ldyBsYXlvdXRcblx0XHRcdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dCA9IHRoaXMuX29TZWNvbmRhcnlGaWx0ZXJCYXJMYXlvdXQhO1xuXG5cdFx0XHRcdC8vIGluc2VydCBhbGwgZmlsdGVyIGZpZWxkcyBmcm9tIGN1cnJlbnQgbGF5b3V0IHRvIG5ldyBsYXlvdXRcblx0XHRcdFx0YUZpbHRlckZpZWxkcy5mb3JFYWNoKChvRmlsdGVyRmllbGQ6IEZpbHRlckZpZWxkLCBpSW5kZXg6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRcdG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0LnJlbW92ZUZpbHRlckZpZWxkKG9GaWx0ZXJGaWVsZCk7XG5cdFx0XHRcdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dC5pbnNlcnRGaWx0ZXJGaWVsZChvRmlsdGVyRmllbGQsIGlJbmRleCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHQvLyBpbnNlcnQgYWxsIGJ1dHRvbnMgZnJvbSB0aGUgY3VycmVudCBsYXlvdXQgdG8gdGhlIG5ldyBsYXlvdXRcblx0XHRcdFx0YUJ1dHRvbnMuZm9yRWFjaCgob0J1dHRvbjogQnV0dG9uKSA9PiB7XG5cdFx0XHRcdFx0b0N1cnJlbnRGaWx0ZXJCYXJMYXlvdXQucmVtb3ZlQnV0dG9uKG9CdXR0b24pO1xuXHRcdFx0XHRcdHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuYWRkQnV0dG9uKG9CdXR0b24pO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHQvLyBzZXQgdGhlIGN1cnJlbnQgZmlsdGVyIGJhciBsYXlvdXQgdG8gdGhlIHNlY29uZGFyeSBvbmVcblx0XHRcdFx0dGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dCA9IG9DdXJyZW50RmlsdGVyQmFyTGF5b3V0O1xuXG5cdFx0XHRcdC8vIHVwZGF0ZSB0aGUgbGF5b3V0IGFnZ3JlZ2F0aW9uIG9mIHRoZSBmaWx0ZXIgYmFyIGFuZCByZXJlbmRlciB0aGUgc2FtZS5cblx0XHRcdFx0dGhpcy5zZXRBZ2dyZWdhdGlvbihcImxheW91dFwiLCB0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LCB0cnVlKTtcblx0XHRcdFx0dGhpcy5fb0ZpbHRlckJhckxheW91dC5pbnZhbGlkYXRlKCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdExvZy5lcnJvcihlcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGdldFNvcnRlZEZpbHRlckZpZWxkcyhhRmlsdGVySXRlbXM6IEZpbHRlckZpZWxkW10sIGFGaWx0ZXJGaWVsZHM6IEZpbHRlckZpZWxkW10pOiBGaWx0ZXJGaWVsZFtdIHtcblx0XHRjb25zdCBhRmlsdGVySWRzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGFGaWx0ZXJJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChvRmlsdGVySXRlbTogRmlsdGVyRmllbGQpIHtcblx0XHRcdGFGaWx0ZXJJZHMucHVzaChvRmlsdGVySXRlbS5nZXRJZCgpKTtcblx0XHR9KTtcblx0XHRhRmlsdGVyRmllbGRzLnNvcnQoZnVuY3Rpb24gKGFGaXJzdEl0ZW06IEZpbHRlckZpZWxkLCBhU2Vjb25kSXRlbTogRmlsdGVyRmllbGQpIHtcblx0XHRcdGxldCBzRmlyc3RJdGVtVkZJZCwgc1NlY29uZEl0ZW1WRklkO1xuXHRcdFx0KGFGaXJzdEl0ZW0uZ2V0Q29udGVudCgpIGFzIHVua25vd24gYXMgQ29udHJvbFtdKS5mb3JFYWNoKGZ1bmN0aW9uIChvSW5uZXJDb250cm9sOiBDb250cm9sKSB7XG5cdFx0XHRcdGlmIChvSW5uZXJDb250cm9sLmlzQTxGaWx0ZXJGaWVsZD4oXCJzYXAudWkubWRjLkZpbHRlckZpZWxkXCIpKSB7XG5cdFx0XHRcdFx0c0ZpcnN0SXRlbVZGSWQgPSBvSW5uZXJDb250cm9sLmdldElkKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0KGFTZWNvbmRJdGVtLmdldENvbnRlbnQoKSBhcyB1bmtub3duIGFzIENvbnRyb2xbXSkuZm9yRWFjaChmdW5jdGlvbiAob0lubmVyQ29udHJvbDogQ29udHJvbCkge1xuXHRcdFx0XHRpZiAob0lubmVyQ29udHJvbC5pc0E8RmlsdGVyRmllbGQ+KFwic2FwLnVpLm1kYy5GaWx0ZXJGaWVsZFwiKSkge1xuXHRcdFx0XHRcdHNTZWNvbmRJdGVtVkZJZCA9IG9Jbm5lckNvbnRyb2wuZ2V0SWQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gYUZpbHRlcklkcy5pbmRleE9mKHNGaXJzdEl0ZW1WRklkID8/IFwiXCIpIC0gYUZpbHRlcklkcy5pbmRleE9mKHNTZWNvbmRJdGVtVkZJZCA/PyBcIlwiKTtcblx0XHR9KTtcblx0XHRyZXR1cm4gYUZpbHRlckZpZWxkcztcblx0fVxuXG5cdF9jcmVhdGVJbm5lckxheW91dCgpOiB2b2lkIHtcblx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0ID0gbmV3IEZpbHRlckNvbnRhaW5lcigpO1xuXHRcdHRoaXMuX2NMYXlvdXRJdGVtID0gRmlsdGVySXRlbUxheW91dDtcblx0XHR0aGlzLl9vRmlsdGVyQmFyTGF5b3V0LmdldElubmVyKCkuYWRkU3R5bGVDbGFzcyhcInNhcFVpTWRjRmlsdGVyQmFyQmFzZUFGTGF5b3V0XCIpO1xuXHRcdHRoaXMuX2FkZEJ1dHRvbnMoKTtcblxuXHRcdC8vIFRPRE86IENoZWNrIHdpdGggTURDIGlmIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBsb2FkIHZpc3VhbCBmaWx0ZXIgb24gdGhlIGJhc2lzIG9mIGNvbnRyb2wgcHJvcGVydHlcblx0XHQvLyBfY3JlYXRlSW5uZXJMYXlvdXQgaXMgY2FsbGVkIG9uIEluaXQgYnkgdGhlIGZpbHRlciBiYXIgYmFzZS5cblx0XHQvLyBUaGlzIG1lYW4gdGhhdCB3ZSBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGNvbnRyb2wgcHJvcGVydGllcyB5ZXRcblx0XHQvLyBhbmQgaGVuY2Ugd2UgY2Fubm90IGRlY2lkZSBvbiB0aGUgYmFzaXMgb2YgY29udHJvbCBwcm9wZXJ0aWVzIHdoZXRoZXIgaW5pdGlhbCBsYXlvdXQgc2hvdWxkIGJlIGNvbXBhY3Qgb3IgdmlzdWFsXG5cdFx0Ly8gQXMgYSByZXN1bHQgd2UgaGF2ZSB0byBkbyB0aGlzIHdvcmthcm91bmQgdG8gYWx3YXlzIGxvYWQgdGhlIGNvbXBhY3QgbGF5b3V0IGJ5IGRlZmF1bHRcblx0XHQvLyBBbmQgdG9vZ2xlIHRoZSBzYW1lIGluIGNhc2UgdGhlIGluaXRpYWxMYXlvdXQgd2FzIHN1cHBvc2VkIHRvIGJlIHZpc3VhbCBmaWx0ZXJzLlxuXHRcdGNvbnN0IG9Jbm5lckxheW91dCA9IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQuZ2V0SW5uZXIoKTtcblx0XHRjb25zdCBvRmlsdGVyQ29udGFpbmVySW5uZXJMYXlvdXRFdmVudERlbGVnYXRlID0ge1xuXHRcdFx0b25CZWZvcmVSZW5kZXJpbmc6ICgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKHRoaXMuaW5pdGlhbExheW91dCA9PT0gXCJ2aXN1YWxcIikge1xuXHRcdFx0XHRcdHRoaXMuX3RvZ2dsZUxheW91dCgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9Jbm5lckxheW91dC5yZW1vdmVFdmVudERlbGVnYXRlKG9GaWx0ZXJDb250YWluZXJJbm5lckxheW91dEV2ZW50RGVsZWdhdGUpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0b0lubmVyTGF5b3V0LmFkZEV2ZW50RGVsZWdhdGUob0ZpbHRlckNvbnRhaW5lcklubmVyTGF5b3V0RXZlbnREZWxlZ2F0ZSk7XG5cblx0XHR0aGlzLnNldEFnZ3JlZ2F0aW9uKFwibGF5b3V0XCIsIHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQsIHRydWUpO1xuXHR9XG5cblx0ZXhpdCgpOiB2b2lkIHtcblx0XHRzdXBlci5leGl0KCk7XG5cdFx0Ly8gU29tZXRpbWVzIHVwb24gZXh0ZXJuYWwgbmF2aWdhdGlvbiB0aGlzLl9TZWdtZW50ZWRCdXR0b24gaXMgYWxyZWFkeSBkZXN0cm95ZWRcblx0XHQvLyBzbyBjaGVjayBpZiBpdCBleGlzdHMgYW5kIHRoZW4gb25seSByZW1vdmUgc3R1ZmZcblx0XHRpZiAodGhpcy5fb1NlZ21lbnRlZEJ1dHRvbikge1xuXHRcdFx0dGhpcy5fb1NlZ21lbnRlZEJ1dHRvbi5kZXRhY2hFdmVudChcInNlbGVjdGlvbkNoYW5nZVwiLCB0aGlzLl90b2dnbGVMYXlvdXQpO1xuXHRcdFx0ZGVsZXRlIHRoaXMuX29TZWdtZW50ZWRCdXR0b247XG5cdFx0fVxuXHR9XG5cblx0Z2V0U2VnbWVudGVkQnV0dG9uKCk6IFNlZ21lbnRlZEJ1dHRvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuX29TZWdtZW50ZWRCdXR0b247XG5cdH1cblxuXHQvKipcblx0ICogRW5hYmxlIG9yIGRpc2FibGUgcmVxdWVzdHMgdGhhdCBhcmUgaW5pdGlhdGVkIGJ5IHRoZSBGaWx0ZXJCYXIuXG5cdCAqXG5cdCAqIFRvIGJlIHVzZWQgdG8gc3VzcGVuZCBvciByZXN1bWUgcmVxdWVzdHModGFibGUgb3IgdmlzdWFsIGZpbHRlcnMpIHdoZW4gdGhlIGZpbHRlciBiYXIgaXMgYmVpbmcgbW9kaWZpZWQgb3Igd2hlbiB0aGUgdXNlciBpcyBwcm9ncmFtbWF0aWNhbGx5IGludGVyYWN0aW5nIHdpdGggdGhlIGZpbHRlciBjb250cm9scy5cblx0ICogVGhpcyBtZXRob2QgaXMgYWxzbyB1c2VkIHRvIGNvbnRyb2wgd2hldGhlciB0aGUgdmlzdWFsIGZpbHRlciBjaGFydCBiaW5kaW5nIHNob3VsZCBiZSByZXN1bWVkL3N1c3BlbmRlZCBiYXNlZCBvbiB0aGUgZGlmZiBzdGF0ZSwgYW5kIHJlc3VtZWQgYWZ0ZXIgY29uZGl0b24gbW9kZWwgdXBkYXRlLlxuXHQgKiBAcGFyYW0gZW5hYmxlIEVuYWJsZSBvciBkaXNhYmxlIHJlcXVlc3RzXG5cdCAqIEBwYXJhbSBkaWZmU3RhdGUgSWYgdGhlcmUgaXMgYSBkaWZmZXJuY2UgaW4gdGhlIGV4dGVybmFsIHN0YXRlIHRoYXQgbmVlZHMgdG8gYmUgY29uc2lkZXJlZCBmb3IgdmlzdWFsIGZpbHRlciBpbi1wYXJhbWV0ZXJzXG5cdCAqL1xuXHRlbmFibGVSZXF1ZXN0cyhlbmFibGU6IGJvb2xlYW4sIGRpZmZTdGF0ZT86IEV4dGVybmFsU3RhdGVUeXBlKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRTdXNwZW5kU2VsZWN0aW9uKCFlbmFibGUpO1xuXHRcdC8vIFdlIG5lZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHZpc3VhbCBmaWx0ZXIgY2hhcnQgYmluZGluZ3MgYmFzZWQgb24gZGlmZiBzdGF0ZS5cblx0XHR0aGlzLl9lbmFibGVWaXN1YWxGaWx0ZXJDaGFydEJpbmRpbmdzKGVuYWJsZSwgZGlmZlN0YXRlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpbHRlciBsYXlvdXQgYnkgaXRzIHR5cGUuXG5cdCAqIEBwYXJhbSBsYXlvdXRDbGFzc05hbWUgVGhlIGNsYXNzIG5hbWUgb2YgdGhlIGZpbHRlciBsYXlvdXQgdG8gYmUgcmV0dXJuZWQuXG5cdCAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBmaWx0ZXIgbGF5b3V0IHRvIGJlIHJldHVybmVkLlxuXHQgKiBAdHlwZWRlZiB7SUZpbHRlckNvbnRhaW5lcn0gVCBUaGUgdHlwZSBvZiB0aGUgZmlsdGVyIGxheW91dCB0byBiZSByZXR1cm5lZFxuXHQgKiBAcmV0dXJucyBDb3JyZXNwb25kaW5nIGZpbHRlciBsYXlvdXQgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuXHQgKi9cblx0X2dldEZpbHRlckxheW91dEJ5VHlwZTxUIGV4dGVuZHMgSUZpbHRlckNvbnRhaW5lcj4obGF5b3V0Q2xhc3NOYW1lOiBDb250YWluZXJUeXBlKTogVCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmV0RmlsdGVyTGF5b3V0ID0gdGhpcy5fb0ZpbHRlckJhckxheW91dC5pc0E8VD4obGF5b3V0Q2xhc3NOYW1lKSA/IHRoaXMuX29GaWx0ZXJCYXJMYXlvdXQgOiB1bmRlZmluZWQ7XG5cdFx0cmV0dXJuICFyZXRGaWx0ZXJMYXlvdXQgJiYgdGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dD8uaXNBPFQ+KGxheW91dENsYXNzTmFtZSlcblx0XHRcdD8gdGhpcy5fb1NlY29uZGFyeUZpbHRlckJhckxheW91dFxuXHRcdFx0OiByZXRGaWx0ZXJMYXlvdXQ7XG5cdH1cblxuXHRfZW5hYmxlVmlzdWFsRmlsdGVyQ2hhcnRCaW5kaW5ncyhlbmFibGU6IGJvb2xlYW4sIGRpZmZTdGF0ZT86IEV4dGVybmFsU3RhdGVUeXBlKTogdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjb25zdCB2aXN1YWxGaWx0ZXJMYXlvdXQgPSB0aGlzLl9nZXRGaWx0ZXJMYXlvdXRCeVR5cGU8VmlzdWFsRmlsdGVyQ29udGFpbmVyPihWSVNVQUxfRklMVEVSX0NPTlRBSU5FUik7XG5cdFx0aWYgKHZpc3VhbEZpbHRlckxheW91dCkge1xuXHRcdFx0dmlzdWFsRmlsdGVyTGF5b3V0LmVuYWJsZUNoYXJ0QmluZGluZyhlbmFibGUsIGRpZmZTdGF0ZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgaW5pdGlhbCBsYXlvdXQgaXMgY29tcGFjdCwgd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzdWFsIGZpbHRlciBsYXlvdXQoY29udGFpbmVyKSBhdmFpbGFibGUgeWV0IHVudGlsIHRoZSB1c2VyIHRvZ2dsZXMgdG8gdmlzdWFsIGZpbHRlciBsYXlvdXQuXG5cdFx0Ly8gU28gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgY29tcGFjdCBmaWx0ZXIgbGF5b3V0IGhhcyB2aXN1YWwgZmlsdGVycyBhbmQgZW5hYmxlL2Rpc2FibGUgdGhlIGNoYXJ0IGJpbmRpbmcgZm9yIHRob3NlIHZpc3VhbCBmaWx0ZXJzLlxuXHRcdGNvbnN0IGNvbXBhY3RGaWx0ZXJMYXlvdXQgPSB0aGlzLl9nZXRGaWx0ZXJMYXlvdXRCeVR5cGU8RmlsdGVyQ29udGFpbmVyPihGSUxURVJfQ09OVEFJTkVSKTtcblx0XHRpZiAoY29tcGFjdEZpbHRlckxheW91dCkge1xuXHRcdFx0Y29uc3QgdmlzdWFsRmlsdGVycyA9IGNvbXBhY3RGaWx0ZXJMYXlvdXQuZ2V0QWxsVmlzdWFsRmlsdGVyRmllbGRzKCk7XG5cdFx0XHRpZiAodmlzdWFsRmlsdGVycykge1xuXHRcdFx0XHRWaXN1YWxGaWx0ZXJVdGlscy5lbmFibGVDaGFydEJpbmRpbmcodmlzdWFsRmlsdGVycywgZW5hYmxlLCBkaWZmU3RhdGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuaW50ZXJmYWNlIEZpbHRlckJhciB7XG5cdF9hZGRCdXR0b25zKCk6IHZvaWQ7XG59XG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJCYXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7RUFrQkEsTUFBTUEsdUJBQXVCLEdBQUcsd0RBQXdEO0lBQ3ZGQyxnQkFBZ0IsR0FBRyxrREFBa0Q7RUFBQyxJQUlqRUMsU0FBUyxJQUFBQyxJQUFBLEdBRGRDLGNBQWMsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUFBQyxLQUFBLEdBRWpEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsWUFBWSxFQUFFO0VBQVUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FNckRDLFdBQVcsQ0FBQztJQUNaSCxJQUFJLEVBQUUsdUJBQXVCO0lBQzdCSSxRQUFRLEVBQUU7RUFDWCxDQUFDLENBQUMsRUFBQVIsSUFBQSxDQUFBUyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLGFBQUE7SUFHRixTQUFBWixVQUFZYSxTQUF3RCxFQUFFQyxRQUF1RCxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUM5SCxPQUFPRixTQUFTLEVBQUVHLFlBQVk7TUFDOUIsT0FBT0YsUUFBUSxFQUFFRSxZQUFZO01BQzdCRCxLQUFBLEdBQUFILGFBQUEsQ0FBQUssSUFBQSxPQUFNSixTQUFT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
@@ -2,8 +2,8 @@ import Log from "sap/base/Log";
2
2
  import type { PropertiesOf } from "sap/fe/base/ClassSupport";
3
3
  import { association, defineUI5Class, property } from "sap/fe/base/ClassSupport";
4
4
  import FilterContainer from "sap/fe/macros/controls/filterbar/FilterContainer";
5
- import type VisualFilter from "sap/fe/macros/controls/filterbar/VisualFilter";
6
5
  import VisualFilterContainer from "sap/fe/macros/controls/filterbar/VisualFilterContainer";
6
+ import type VisualFilter from "sap/fe/macros/visualfilters/VisualFilter";
7
7
  import type Button from "sap/m/Button";
8
8
  import type SegmentedButton from "sap/m/SegmentedButton";
9
9
  import type Control from "sap/ui/core/Control";
@@ -13,6 +13,12 @@ import MdcFilterBar from "sap/ui/mdc/FilterBar";
13
13
  import type FilterField from "sap/ui/mdc/FilterField";
14
14
  import type IFilterContainer from "sap/ui/mdc/filterbar/IFilterContainer";
15
15
  import FilterItemLayout from "sap/ui/mdc/filterbar/aligned/FilterItemLayout";
16
+ import { type ExternalStateType } from "../valuehelp/ValueHelpDelegate";
17
+ import VisualFilterUtils from "./filterbar/utils/VisualFilterUtils";
18
+
19
+ const VISUAL_FILTER_CONTAINER = "sap.fe.macros.controls.filterbar.VisualFilterContainer",
20
+ FILTER_CONTAINER = "sap.fe.macros.controls.filterbar.FilterContainer";
21
+ type ContainerType = typeof VISUAL_FILTER_CONTAINER | typeof FILTER_CONTAINER;
16
22
 
17
23
  @defineUI5Class("sap.fe.macros.controls.FilterBar")
18
24
  class FilterBar extends MdcFilterBar {
@@ -195,6 +201,54 @@ class FilterBar extends MdcFilterBar {
195
201
  getSegmentedButton(): SegmentedButton | undefined {
196
202
  return this._oSegmentedButton;
197
203
  }
204
+
205
+ /**
206
+ * Enable or disable requests that are initiated by the FilterBar.
207
+ *
208
+ * To be used to suspend or resume requests(table or visual filters) when the filter bar is being modified or when the user is programmatically interacting with the filter controls.
209
+ * This method is also used to control whether the visual filter chart binding should be resumed/suspended based on the diff state, and resumed after conditon model update.
210
+ * @param enable Enable or disable requests
211
+ * @param diffState If there is a differnce in the external state that needs to be considered for visual filter in-parameters
212
+ */
213
+ enableRequests(enable: boolean, diffState?: ExternalStateType): void {
214
+ this.setSuspendSelection(!enable);
215
+ // We need to enable or disable the visual filter chart bindings based on diff state.
216
+ this._enableVisualFilterChartBindings(enable, diffState);
217
+ }
218
+
219
+ /**
220
+ * Get the filter layout by its type.
221
+ * @param layoutClassName The class name of the filter layout to be returned.
222
+ * @template T The type of the filter layout to be returned.
223
+ * @typedef {IFilterContainer} T The type of the filter layout to be returned
224
+ * @returns Corresponding filter layout if it exists, otherwise undefined.
225
+ */
226
+ _getFilterLayoutByType<T extends IFilterContainer>(layoutClassName: ContainerType): T | undefined {
227
+ const retFilterLayout = this._oFilterBarLayout.isA<T>(layoutClassName) ? this._oFilterBarLayout : undefined;
228
+ return !retFilterLayout && this._oSecondaryFilterBarLayout?.isA<T>(layoutClassName)
229
+ ? this._oSecondaryFilterBarLayout
230
+ : retFilterLayout;
231
+ }
232
+
233
+ _enableVisualFilterChartBindings(enable: boolean, diffState?: ExternalStateType): void {
234
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
235
+ // @ts-ignore
236
+ const visualFilterLayout = this._getFilterLayoutByType<VisualFilterContainer>(VISUAL_FILTER_CONTAINER);
237
+ if (visualFilterLayout) {
238
+ visualFilterLayout.enableChartBinding(enable, diffState);
239
+ return;
240
+ }
241
+
242
+ // If initial layout is compact, we don't have the visual filter layout(container) available yet until the user toggles to visual filter layout.
243
+ // So we need to check if the compact filter layout has visual filters and enable/disable the chart binding for those visual filters.
244
+ const compactFilterLayout = this._getFilterLayoutByType<FilterContainer>(FILTER_CONTAINER);
245
+ if (compactFilterLayout) {
246
+ const visualFilters = compactFilterLayout.getAllVisualFilterFields();
247
+ if (visualFilters) {
248
+ VisualFilterUtils.enableChartBinding(visualFilters, enable, diffState);
249
+ }
250
+ }
251
+ }
198
252
  }
199
253
  interface FilterBar {
200
254
  _addButtons(): void;
@@ -0,0 +1,62 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/base/BuildingBlockBase", "sap/fe/base/ClassSupport"], function (BuildingBlockBase, ClassSupport) {
6
+ "use strict";
7
+
8
+ var _dec, _dec2, _dec3, _dec4, _class, _class2, _descriptor, _descriptor2, _descriptor3;
9
+ var _exports = {};
10
+ var property = ClassSupport.property;
11
+ var implementInterface = ClassSupport.implementInterface;
12
+ var defineUI5Class = ClassSupport.defineUI5Class;
13
+ function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
14
+ function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
15
+ function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
16
+ function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
17
+ function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
18
+ /**
19
+ * Building block to wrap a FlexBox and expose a required property.
20
+ * @private
21
+ */
22
+ let RequiredFlexBox = (_dec = defineUI5Class("sap.fe.macros.controls.RequiredFlexBox"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
23
+ type: "string"
24
+ }), _dec4 = property({
25
+ type: "boolean"
26
+ }), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlockBase) {
27
+ function RequiredFlexBox() {
28
+ var _this;
29
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30
+ args[_key] = arguments[_key];
31
+ }
32
+ _this = _BuildingBlockBase.call(this, ...args) || this;
33
+ _initializerDefineProperty(_this, "__implements__sap_ui_core_IFormContent", _descriptor, _this);
34
+ _initializerDefineProperty(_this, "id", _descriptor2, _this);
35
+ _initializerDefineProperty(_this, "required", _descriptor3, _this);
36
+ return _this;
37
+ }
38
+ _exports = RequiredFlexBox;
39
+ _inheritsLoose(RequiredFlexBox, _BuildingBlockBase);
40
+ return RequiredFlexBox;
41
+ }(BuildingBlockBase), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "__implements__sap_ui_core_IFormContent", [_dec2], {
42
+ configurable: true,
43
+ enumerable: true,
44
+ writable: true,
45
+ initializer: function () {
46
+ return true;
47
+ }
48
+ }), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "id", [_dec3], {
49
+ configurable: true,
50
+ enumerable: true,
51
+ writable: true,
52
+ initializer: null
53
+ }), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "required", [_dec4], {
54
+ configurable: true,
55
+ enumerable: true,
56
+ writable: true,
57
+ initializer: null
58
+ }), _class2)) || _class);
59
+ _exports = RequiredFlexBox;
60
+ return _exports;
61
+ }, false);
62
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZXF1aXJlZEZsZXhCb3giLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2tCYXNlIiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2V4cG9ydHMiLCJfaW5oZXJpdHNMb29zZSIsIkJ1aWxkaW5nQmxvY2tCYXNlIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsInByb3RvdHlwZSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJSZXF1aXJlZEZsZXhCb3gudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBpbXBsZW1lbnRJbnRlcmZhY2UsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIHRvIHdyYXAgYSBGbGV4Qm94IGFuZCBleHBvc2UgYSByZXF1aXJlZCBwcm9wZXJ0eS5cbiAqIEBwcml2YXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuUmVxdWlyZWRGbGV4Qm94XCIpXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXF1aXJlZEZsZXhCb3ggZXh0ZW5kcyBCdWlsZGluZ0Jsb2NrQmFzZTxDb250cm9sPiB7XG5cdEBpbXBsZW1lbnRJbnRlcmZhY2UoXCJzYXAudWkuY29yZS5JRm9ybUNvbnRlbnRcIilcblx0X19pbXBsZW1lbnRzX19zYXBfdWlfY29yZV9JRm9ybUNvbnRlbnQgPSB0cnVlO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0aWQ/OiBzdHJpbmc7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cmVxdWlyZWQ/OiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBS0E7QUFDQTtBQUNBO0FBQ0E7RUFIQSxJQUtxQkEsZUFBZSxJQUFBQyxJQUFBLEdBRG5DQyxjQUFjLENBQUMsd0NBQXdDLENBQUMsRUFBQUMsS0FBQSxHQUV2REMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsRUFBQUMsS0FBQSxHQUc5Q0MsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzVCRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVUsQ0FBQyxDQUFDLEVBQUFOLElBQUEsQ0FBQVEsTUFBQSxJQUFBQyxPQUFBLDBCQUFBQyxrQkFBQTtJQUFBLFNBQUFYLGdCQUFBO01BQUEsSUFBQVksS0FBQTtNQUFBLFNBQUFDLElBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFDLElBQUEsT0FBQUMsS0FBQSxDQUFBSixJQUFBLEdBQUFLLElBQUEsTUFBQUEsSUFBQSxHQUFBTCxJQUFBLEVBQUFLLElBQUE7UUFBQUYsSUFBQSxDQUFBRSxJQUFBLElBQUFKLFNBQUEsQ0FBQUksSUFBQTtNQUFBO01BQUFOLEtBQUEsR0FBQUQsa0JBQUEsQ0FBQVEsSUFBQSxVQUFBSCxJQUFBO01BQUFJLDBCQUFBLENBQUFSLEtBQUEsNENBQUFTLFdBQUEsRUFBQVQsS0FBQTtNQUFBUSwwQkFBQSxDQUFBUixLQUFBLFFBQUFVLFlBQUEsRUFBQVYsS0FBQTtNQUFBUSwwQkFBQSxDQUFBUixLQUFBLGNBQUFXLFlBQUEsRUFBQVgsS0FBQTtNQUFBLE9BQUFBLEtBQUE7SUFBQTtJQUFBWSxRQUFBLEdBQUF4QixlQUFBO0lBQUF5QixjQUFBLENBQUF6QixlQUFBLEVBQUFXLGtCQUFBO0lBQUEsT0FBQVgsZUFBQTtFQUFBLEVBUGMwQixpQkFBaUIsR0FBQUwsV0FBQSxHQUFBTSx5QkFBQSxDQUFBakIsT0FBQSxDQUFBa0IsU0FBQSw2Q0FBQXpCLEtBQUE7SUFBQTBCLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BRXBCLElBQUk7SUFBQTtFQUFBLElBQUFWLFlBQUEsR0FBQUsseUJBQUEsQ0FBQWpCLE9BQUEsQ0FBQWtCLFNBQUEsU0FBQXZCLEtBQUE7SUFBQXdCLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBVCxZQUFBLEdBQUFJLHlCQUFBLENBQUFqQixPQUFBLENBQUFrQixTQUFBLGVBQUFwQixLQUFBO0lBQUFxQixZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXRCLE9BQUEsTUFBQUQsTUFBQTtFQUFBZSxRQUFBLEdBQUF4QixlQUFBO0VBQUEsT0FBQXdCLFFBQUE7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,20 @@
1
+ import type { CompiledBindingToolkitExpression } from "sap/fe/base/BindingToolkit";
2
+ import BuildingBlockBase from "sap/fe/base/BuildingBlockBase";
3
+ import { defineUI5Class, implementInterface, property } from "sap/fe/base/ClassSupport";
4
+ import type Control from "sap/ui/core/Control";
5
+
6
+ /**
7
+ * Building block to wrap a FlexBox and expose a required property.
8
+ * @private
9
+ */
10
+ @defineUI5Class("sap.fe.macros.controls.RequiredFlexBox")
11
+ export default class RequiredFlexBox extends BuildingBlockBase<Control> {
12
+ @implementInterface("sap.ui.core.IFormContent")
13
+ __implements__sap_ui_core_IFormContent = true;
14
+
15
+ @property({ type: "string" })
16
+ id?: string;
17
+
18
+ @property({ type: "boolean" })
19
+ required?: boolean | CompiledBindingToolkitExpression;
20
+ }