@sapui5/sap.fe.controls 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 (57) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/controls/.library +1 -1
  3. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.js +31 -4
  4. package/src/sap/fe/controls/easyFilter/EasyFilterBarContainer.tsx +49 -3
  5. package/src/sap/fe/controls/easyFilter/utils.js +47 -2
  6. package/src/sap/fe/controls/easyFilter/utils.ts +49 -1
  7. package/src/sap/fe/controls/library.js +1 -1
  8. package/src/sap/fe/controls/messagebundle.properties +16 -10
  9. package/src/sap/fe/controls/messagebundle_ar.properties +5 -5
  10. package/src/sap/fe/controls/messagebundle_bg.properties +4 -4
  11. package/src/sap/fe/controls/messagebundle_ca.properties +2 -2
  12. package/src/sap/fe/controls/messagebundle_cnr.properties +2 -2
  13. package/src/sap/fe/controls/messagebundle_cs.properties +4 -4
  14. package/src/sap/fe/controls/messagebundle_cy.properties +5 -5
  15. package/src/sap/fe/controls/messagebundle_da.properties +4 -4
  16. package/src/sap/fe/controls/messagebundle_de.properties +5 -5
  17. package/src/sap/fe/controls/messagebundle_el.properties +4 -4
  18. package/src/sap/fe/controls/messagebundle_en.properties +5 -5
  19. package/src/sap/fe/controls/messagebundle_en_GB.properties +5 -5
  20. package/src/sap/fe/controls/messagebundle_en_US_saprigi.properties +6 -6
  21. package/src/sap/fe/controls/messagebundle_es.properties +4 -4
  22. package/src/sap/fe/controls/messagebundle_es_MX.properties +4 -4
  23. package/src/sap/fe/controls/messagebundle_et.properties +2 -2
  24. package/src/sap/fe/controls/messagebundle_fi.properties +4 -4
  25. package/src/sap/fe/controls/messagebundle_fr.properties +3 -3
  26. package/src/sap/fe/controls/messagebundle_fr_CA.properties +2 -2
  27. package/src/sap/fe/controls/messagebundle_hi.properties +4 -4
  28. package/src/sap/fe/controls/messagebundle_hr.properties +5 -5
  29. package/src/sap/fe/controls/messagebundle_hu.properties +4 -4
  30. package/src/sap/fe/controls/messagebundle_id.properties +4 -4
  31. package/src/sap/fe/controls/messagebundle_it.properties +6 -6
  32. package/src/sap/fe/controls/messagebundle_iw.properties +3 -3
  33. package/src/sap/fe/controls/messagebundle_ja.properties +4 -4
  34. package/src/sap/fe/controls/messagebundle_kk.properties +3 -3
  35. package/src/sap/fe/controls/messagebundle_ko.properties +3 -3
  36. package/src/sap/fe/controls/messagebundle_lt.properties +4 -4
  37. package/src/sap/fe/controls/messagebundle_lv.properties +5 -5
  38. package/src/sap/fe/controls/messagebundle_mk.properties +4 -4
  39. package/src/sap/fe/controls/messagebundle_ms.properties +5 -5
  40. package/src/sap/fe/controls/messagebundle_nl.properties +4 -4
  41. package/src/sap/fe/controls/messagebundle_no.properties +3 -3
  42. package/src/sap/fe/controls/messagebundle_pl.properties +4 -4
  43. package/src/sap/fe/controls/messagebundle_pt.properties +4 -4
  44. package/src/sap/fe/controls/messagebundle_pt_PT.properties +4 -4
  45. package/src/sap/fe/controls/messagebundle_ro.properties +4 -4
  46. package/src/sap/fe/controls/messagebundle_ru.properties +3 -3
  47. package/src/sap/fe/controls/messagebundle_sh.properties +2 -2
  48. package/src/sap/fe/controls/messagebundle_sk.properties +3 -3
  49. package/src/sap/fe/controls/messagebundle_sl.properties +5 -5
  50. package/src/sap/fe/controls/messagebundle_sr.properties +2 -2
  51. package/src/sap/fe/controls/messagebundle_sv.properties +3 -3
  52. package/src/sap/fe/controls/messagebundle_th.properties +2 -2
  53. package/src/sap/fe/controls/messagebundle_tr.properties +3 -3
  54. package/src/sap/fe/controls/messagebundle_uk.properties +3 -3
  55. package/src/sap/fe/controls/messagebundle_vi.properties +5 -5
  56. package/src/sap/fe/controls/messagebundle_zh_CN.properties +2 -2
  57. package/src/sap/fe/controls/messagebundle_zh_TW.properties +3 -3
@@ -149,12 +149,41 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
149
149
  function convertBoolToString(value) {
150
150
  return value ? resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_TRUE") : resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_FALSE");
151
151
  }
152
- function formatData(tokens, filterValues, filterBarMetadata) {
152
+
153
+ //This function returns true if the filter is not a valid "SingleRange" (e.g., wrong operator or too many values), and false if it is valid.
154
+ function isInvalidSingleRange(filterValue) {
155
+ const allowed = [FilterOperator.EQ, FilterOperator.LE, FilterOperator.LT, FilterOperator.GE, FilterOperator.GT, FilterOperator.BT];
156
+
157
+ // filterValue.operator !== FilterOperator.BT ensures BT is always valid.
158
+ // !allowed.includes() blocks unsupported operators.
159
+ // filterValue.values.length >= 2 blocks multiple values for single-range filters.
160
+ // Together, this returns true when the filter is not a valid single-range.
161
+ return filterValue.operator !== FilterOperator.BT && (!allowed.includes(filterValue.operator) || filterValue.values.length >= 2);
162
+ }
163
+ function formatData(tokens, filterValues, filterBarMetadata, setMessageStripForValidatedFilters) {
153
164
  if (filterValues) {
154
165
  const visitedMapForMandatoryTokens = {};
166
+ const nonFilterableTokenLabels = [];
167
+ const singleRangeTokenLabels = [];
168
+ const hiddenFilterTokenLabels = [];
155
169
  for (const filterValue of filterValues) {
156
170
  const filterCriteria = filterBarMetadata.find(field => field.name === filterValue.name);
157
171
  if (filterCriteria) {
172
+ // Only block if filterable is false
173
+ if (Object.prototype.hasOwnProperty.call(filterCriteria, "filterable") && !filterCriteria?.filterable) {
174
+ nonFilterableTokenLabels.push(filterCriteria.label || filterCriteria.name);
175
+ continue;
176
+ }
177
+ // Only block if hiddenFilter is true
178
+ if (Object.prototype.hasOwnProperty.call(filterCriteria, "hiddenFilter") && filterCriteria?.hiddenFilter) {
179
+ hiddenFilterTokenLabels.push(filterCriteria.label || filterCriteria.name);
180
+ continue;
181
+ }
182
+ // Only apply SingleRange logic if filterRestriction is set to SingleRange
183
+ if (filterCriteria?.filterRestriction === "SingleRange" && isInvalidSingleRange(filterValue)) {
184
+ singleRangeTokenLabels.push(filterCriteria.label || filterCriteria.name);
185
+ filterValue.values = []; // Reset values to avoid adding invalid token values
186
+ }
158
187
  const {
159
188
  type
160
189
  } = filterCriteria;
@@ -198,6 +227,22 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
198
227
  }
199
228
  }
200
229
  }
230
+ if (nonFilterableTokenLabels.length > 0 || singleRangeTokenLabels.length > 0 || hiddenFilterTokenLabels.length > 0) {
231
+ const messages = [];
232
+ if (nonFilterableTokenLabels.length > 0) {
233
+ const nonFilterableTokenLabel = `<strong>${nonFilterableTokenLabels.join(", ")}</strong>`;
234
+ messages.push(resourceBundle.getText("M_EASY_FILTER_NON_FILTERABLE", [nonFilterableTokenLabel]));
235
+ }
236
+ if (hiddenFilterTokenLabels.length > 0) {
237
+ const label = `<strong>${hiddenFilterTokenLabels.join(", ")}</strong>`;
238
+ messages.push(resourceBundle.getText("M_EASY_FILTER_HIDDEN_FILTER", [label]));
239
+ }
240
+ if (singleRangeTokenLabels.length > 0) {
241
+ const label = `<strong>${singleRangeTokenLabels.join(", ")}</strong>`;
242
+ messages.push(resourceBundle.getText("M_EASY_FILTER_SINGLE_RANGE", [label]));
243
+ }
244
+ setMessageStripForValidatedFilters(messages.join("<br>"));
245
+ }
201
246
  }
202
247
  }
203
248
  const EasyFilterUtils = {
@@ -213,4 +258,4 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
213
258
  };
214
259
  return EasyFilterUtils;
215
260
  }, false);
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsInZhbHVlIiwiaW5kZXgiLCJkZWVwRXF1YWwiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRGF0ZSIsIkZpbHRlck9wZXJhdG9yIiwiR1QiLCJMVCIsIkdFIiwiTEUiLCJFUSIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJTdGFydHNXaXRoIiwiTkUiLCJOb3RDb250YWlucyIsIk5vdEVuZHNXaXRoIiwiTm90U3RhcnRzV2l0aCIsInRvU3RyaW5nIiwibWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAiLCJtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvciIsInZhbHVlcyIsIm5ld1ZhbHVlMSIsIm5ld1ZhbHVlMiIsIkJUIiwiaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMiLCJOQiIsImdldFRleHQiLCJmb3JtYXREYXRhIiwidG9rZW5zIiwiZmlsdGVyVmFsdWVzIiwiZmlsdGVyQmFyTWV0YWRhdGEiLCJ2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zIiwiZmlsdGVyVmFsdWUiLCJmaWx0ZXJDcml0ZXJpYSIsImZpbmQiLCJmaWVsZCIsIm5hbWUiLCJ0eXBlIiwidG9rZW5JbmRleCIsImZpbmRJbmRleCIsInRva2VuIiwia2V5Iiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsIkVhc3lGaWx0ZXJVdGlscyIsIm5ld1Rva2VuIiwibGFiZWwiLCJidXN5IiwicHVzaCIsImN1cnJlbnRUb2tlbiIsImlzUmVxdWlyZWQiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbInV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCBkZWVwRXF1YWwgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcEVxdWFsXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCBEYXRlRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvRGF0ZUZvcm1hdFwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBEYXRlVGltZU9mZnNldCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3R5cGUvRGF0ZVRpbWVPZmZzZXRcIjtcbmltcG9ydCB0eXBlIHsgRWFzeUZpbHRlclJlc3VsdCwgUHJvcGVydHlNZXRhZGF0YSB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0QmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRDb2RlTGlzdFR5cGUsXG5cdEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhLFxuXHRUb2tlbkRlZmluaXRpb24sXG5cdFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uLFxuXHRUb2tlblR5cGUsXG5cdFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0VmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uXG59IGZyb20gXCIuL0Vhc3lGaWx0ZXJCYXJDb250YWluZXJcIjtcblxudHlwZSBjb2RlTGlzdFR5cGUgPSBQcm9wZXJ0eU1ldGFkYXRhW1wiY29kZUxpc3RcIl07XG50eXBlIGZpbmFsQ29kZUxpc3RUeXBlID0geyB2YWx1ZTogUHJpbWl0aXZlVHlwZTsgZGVzY3JpcHRpb24/OiBzdHJpbmcgfVtdO1xuY29uc3QgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuY29uc3QgZGF0ZVRpbWVPZmZzZXQgPSBuZXcgRGF0ZVRpbWVPZmZzZXQoKTtcblxuZnVuY3Rpb24gYXJlSXRlbXNTYW1lKFxuXHRhcnIxOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdGFycjI6IHJlYWRvbmx5IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10gfCBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXVxuKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeShcblx0XHRcdFx0KHZhbHVlLCBpbmRleCkgPT5cblx0XHRcdFx0XHR2YWx1ZSA9PT0gYXJyMltpXS5zZWxlY3RlZFZhbHVlc1tpbmRleF0gfHxcblx0XHRcdFx0XHQodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG5cdFx0XHRcdFx0XHRkZWVwRXF1YWwoKHZhbHVlIGFzIENvZGVMaXN0VHlwZSkudmFsdWUsIChhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSBhcyBDb2RlTGlzdFR5cGUpLnZhbHVlKSAmJlxuXHRcdFx0XHRcdFx0KHZhbHVlIGFzIENvZGVMaXN0VHlwZSkuZGVzY3JpcHRpb24gPT09IChhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSBhcyBDb2RlTGlzdFR5cGUpLmRlc2NyaXB0aW9uKVxuXHRcdFx0KVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5mdW5jdGlvbiBhcmVBcnJheVNhbWUoYXJyMTogcmVhZG9ubHkgdW5rbm93bltdLCBhcnIyOiByZWFkb25seSB1bmtub3duW10pOiBib29sZWFuIHtcblx0aWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHQvLyBDb21wYXJlIGVsZW1lbnRzIG9mIGJvdGggYXJyYXlzXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuXHRcdGlmIChhcnIxW2ldICE9PSBhcnIyW2ldKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cnVlOyAvLyBBcnJheXMgYXJlIHRoZSBzYW1lXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFyZUNvZGVMaXN0c1NhbWUoYXJyMTogY29kZUxpc3RUeXBlLCBhcnIyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Y29uc3QgYXJyTmV3MTogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjEpO1xuXHRjb25zdCBhcnJOZXcyOiBmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGdldENvZGVMaXN0QXJyYXkoYXJyMik7XG5cdGNvbnN0IGRlc2NyaXB0aW9uTmV3MSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS5kZXNjcmlwdGlvbik7XG5cdGNvbnN0IGRlc2NyaXB0aW9uTmV3MiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS5kZXNjcmlwdGlvbik7XG5cblx0Y29uc3QgdmFsdWUxID0gYXJyTmV3MT8ubWFwKChkYXRhKSA9PiBkYXRhLnZhbHVlKTtcblx0Y29uc3QgdmFsdWUyID0gYXJyTmV3Mj8ubWFwKChkYXRhKSA9PiBkYXRhLnZhbHVlKTtcblx0aWYgKCFkZXNjcmlwdGlvbk5ldzEgfHwgIWRlc2NyaXB0aW9uTmV3Mikge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gYXJlQXJyYXlTYW1lKGRlc2NyaXB0aW9uTmV3MSwgZGVzY3JpcHRpb25OZXcyKSAmJiBhcmVBcnJheVNhbWUodmFsdWUxIGFzIFByaW1pdGl2ZVR5cGUsIHZhbHVlMiBhcyBQcmltaXRpdmVUeXBlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q29kZUxpc3RBcnJheShhcnI6IGNvZGVMaXN0VHlwZSk6IFByb21pc2U8ZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQ+IHtcblx0aWYgKHR5cGVvZiBhcnIgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdHJldHVybiBhcnIoKTtcblx0fVxuXHRyZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlOiBEYXRlLCB0b2tlblR5cGU6IFRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldDogYm9vbGVhbik6IHN0cmluZyB7XG5cdGxldCBmb3JtYXR0ZWREYXRlVGltZSA9IFwiXCI7XG5cdGlmIChpc0RhdGVUaW1lT2Zmc2V0KSB7XG5cdFx0cmV0dXJuIGRhdGVUaW1lT2Zmc2V0LmZvcm1hdFZhbHVlKHZhbHVlLCBcInN0cmluZ1wiKSBhcyBzdHJpbmc7XG5cdH1cblx0c3dpdGNoICh0b2tlblR5cGUpIHtcblx0XHRjYXNlIFwiQ2FsZW5kYXJcIjpcblx0XHRcdGZvcm1hdHRlZERhdGVUaW1lID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKS5mb3JtYXQodmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBcIlRpbWVcIjpcblx0XHRcdGZvcm1hdHRlZERhdGVUaW1lID0gRGF0ZUZvcm1hdC5nZXRUaW1lSW5zdGFuY2UoKS5mb3JtYXQodmFsdWUpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiBmb3JtYXR0ZWREYXRlVGltZTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZS5cbiAqIEBwYXJhbSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgdG8gcmVwcmVzZW50XG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHRva2VuVHlwZSBUaGUgdG9rZW4ncyB0eXBlXG4gKiBAcGFyYW0gaXNEYXRlVGltZU9mZnNldCBDaGVja3MgaWYgdGhlIGRhdGEgdHlwZSBpcyBvZiBEYXRlVGltZU9mZnNldFxuICogQHJldHVybnMgVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgYW5kIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgRGF0ZSxcblx0dG9rZW5UeXBlOiBUb2tlblR5cGUsXG5cdGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW5cbik6IHN0cmluZyB7XG5cdGxldCBuZXdWYWx1ZTogbnVtYmVyIHwgc3RyaW5nID0gXCJcIjtcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWUpO1xuXHR9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZSA9IHZhbHVlO1xuXHR9XG5cblx0c3dpdGNoIChvcGVyYXRvcikge1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuR1Q6XG5cdFx0XHRyZXR1cm4gYD4gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTFQ6XG5cdFx0XHRyZXR1cm4gYDwgJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuR0U6XG5cdFx0XHRyZXR1cm4gYD49ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxFOlxuXHRcdFx0cmV0dXJuIGA8PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5FUTpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuQ29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCoke25ld1ZhbHVlfSpgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCoke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5TdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAke25ld1ZhbHVlfSpgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTkU6XG5cdFx0XHRyZXR1cm4gYCE9KCR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWluczpcblx0XHRcdHJldHVybiBgISgqJHtuZXdWYWx1ZX0qKWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RFbmRzV2l0aDpcblx0XHRcdHJldHVybiBgISgqJHtuZXdWYWx1ZX0pYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdFN0YXJ0c1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoJHtuZXdWYWx1ZX0qKWA7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBuZXdWYWx1ZT8udG9TdHJpbmcoKTtcblx0fVxufVxuXG5mdW5jdGlvbiBtYXBPcGVyYXRvckZvclZhbHVlSGVscChvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsIHZhbHVlOiBDb2RlTGlzdFR5cGUsIHRva2VuVHlwZTogVG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuKTogc3RyaW5nIHtcblx0cmV0dXJuIG1hcE9wZXJhdG9yKG9wZXJhdG9yLCB2YWx1ZS5kZXNjcmlwdGlvbiwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IoXG5cdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcixcblx0dmFsdWVzOiBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMgfCBWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWUxOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gXCJcIjtcblx0bGV0IG5ld1ZhbHVlMjogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzBdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMF0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUxID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMF0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUxID0gdmFsdWVzWzBdO1xuXHR9XG5cblx0aWYgKHR5cGVvZiB2YWx1ZXNbMV0gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZXNbMV0pO1xuXHR9IGVsc2UgaWYgKHZhbHVlc1sxXSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZTIgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlc1sxXSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZTIgPSB2YWx1ZXNbMV07XG5cdH1cblx0aWYgKG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCkge1xuXHRcdHJldHVybiBgJHtuZXdWYWx1ZTF9Li4uJHtuZXdWYWx1ZTJ9YDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gYCEoJHtuZXdWYWx1ZTF9Li4uJHtuZXdWYWx1ZTJ9KWA7XG5cdH1cbn1cblxuZnVuY3Rpb24gaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yKTogYm9vbGVhbiB7XG5cdHJldHVybiBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQgfHwgb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLk5CO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlOiBib29sZWFuKTogc3RyaW5nIHtcblx0cmV0dXJuIHZhbHVlXG5cdFx0PyByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TRUxFQ1RFRF9WQUxVRVNfVFJVRVwiKVxuXHRcdDogcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX0ZBTFNFXCIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRhKFxuXHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdLFxuXHRmaWx0ZXJWYWx1ZXM6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl0sXG5cdGZpbHRlckJhck1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdXG4pOiB2b2lkIHtcblx0aWYgKGZpbHRlclZhbHVlcykge1xuXHRcdGNvbnN0IHZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cdFx0Zm9yIChjb25zdCBmaWx0ZXJWYWx1ZSBvZiBmaWx0ZXJWYWx1ZXMpIHtcblx0XHRcdGNvbnN0IGZpbHRlckNyaXRlcmlhID0gZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdFx0aWYgKGZpbHRlckNyaXRlcmlhKSB7XG5cdFx0XHRcdGNvbnN0IHsgdHlwZSB9ID0gZmlsdGVyQ3JpdGVyaWE7XG5cdFx0XHRcdGNvbnN0IHRva2VuSW5kZXggPSB0b2tlbnMuZmluZEluZGV4KCh0b2tlbikgPT4gdG9rZW4ua2V5ID09PSBmaWx0ZXJWYWx1ZS5uYW1lKTtcblx0XHRcdFx0Y29uc3QgeyBvcGVyYXRvciwgdmFsdWVzIH0gPSBmaWx0ZXJWYWx1ZTtcblx0XHRcdFx0bGV0IGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uO1xuXHRcdFx0XHRpZiAoRWFzeUZpbHRlclV0aWxzLmlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yKSkge1xuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSB7XG5cdFx0XHRcdFx0XHRvcGVyYXRvcixcblx0XHRcdFx0XHRcdHNlbGVjdGVkVmFsdWVzOiB2YWx1ZXMgYXMgQmV0d2VlblNlbGVjdGVkVmFsdWVzXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0ge1xuXHRcdFx0XHRcdFx0b3BlcmF0b3I6IG9wZXJhdG9yIGFzIEV4Y2x1ZGU8RmlsdGVyT3BlcmF0b3IsIEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI+LFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBzdHJpbmdbXSB8IERhdGVbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAodG9rZW5JbmRleCA9PT0gLTEpIHtcblx0XHRcdFx0XHQvLyBBZGQgbmV3IHRva2VuIGlmIGl0IGRvZXNuJ3QgZXhpc3Rcblx0XHRcdFx0XHRjb25zdCBuZXdUb2tlbjogVG9rZW5EZWZpbml0aW9uID0ge1xuXHRcdFx0XHRcdFx0a2V5OiBmaWx0ZXJWYWx1ZS5uYW1lLFxuXHRcdFx0XHRcdFx0bGFiZWw6IGZpbHRlckNyaXRlcmlhLmxhYmVsIGFzIHN0cmluZyxcblx0XHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFtrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSxcblx0XHRcdFx0XHRcdHR5cGU6IHR5cGUgYXMgRXhjbHVkZTxUb2tlblR5cGUsIFwiVmFsdWVIZWxwXCI+LFxuXHRcdFx0XHRcdFx0YnVzeTogdHlwZSA9PT0gXCJWYWx1ZUhlbHBcIiA/IHRydWUgOiBmYWxzZVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0dG9rZW5zLnB1c2gobmV3VG9rZW4pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIFVwZGF0ZSBleGlzdGluZyB0b2tlblxuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRUb2tlbiA9IHRva2Vuc1t0b2tlbkluZGV4XTtcblx0XHRcdFx0XHQvL0lmIGl0cyBkZWZhdWx0IHZhbHVlICwgb3ZlcnJpZGUgaXRcblx0XHRcdFx0XHRpZiAoKGN1cnJlbnRUb2tlbi5pc1JlcXVpcmVkID8/IGZhbHNlKSAmJiAhdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSkge1xuXHRcdFx0XHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBba2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc107XG5cdFx0XHRcdFx0XHR2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zW2N1cnJlbnRUb2tlbi5rZXldID0gdHJ1ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0KGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIGFzIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10pLnB1c2goa2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmNvbnN0IEVhc3lGaWx0ZXJVdGlscyA9IHtcblx0YXJlSXRlbXNTYW1lLFxuXHRhcmVDb2RlTGlzdHNTYW1lLFxuXHRnZXRDb2RlTGlzdEFycmF5LFxuXHRhcmVBcnJheVNhbWUsXG5cdG1hcE9wZXJhdG9yLFxuXHRtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcixcblx0aXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdGZvcm1hdERhdGEsXG5cdG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFYXN5RmlsdGVyVXRpbHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFvQkEsTUFBTUEsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFFO0VBQ25FLE1BQU1DLGNBQWMsR0FBRyxJQUFJ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QUFJVSx5QkFBd0Q7VUFDNUQsSUFBSUMsZUFBZSxDQUFDbkIsdUJBQXVCLENBQUNwRCxRQUFRLENBQUMsRUFBRTtZQUN0RHNFLHlCQUF5QixHQUFHO2NBQzNCdEUsUUFBUTtjQUNSQyxjQUFjLEVBQUUrQztZQUNqQixDQUFDO1VBQ0YsQ0FBQyxNQUFNO1lBQ05zQix5QkFBeUIsR0FBRztjQUMzQnRFLFFBQVEsRUFBRUEsUUFBMEU7Y0FDcEZDLGNBQWMsRUFBRStDO1lBQ2pCLENBQUM7VUFDRjtVQUNBLElBQUlrQixVQUFVLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDdEI7WUFDQSxNQUFNTSxRQUF5QixHQUFHO2NBQ2pDSCxHQUFHLEVBQUVULFdBQVcsQ0FBQ0ksSUFBSTtjQUNyQlMsS0FBSyxFQUFFWixjQUFjLENBQUNZLEtBQWU7Y0FDckNILHlCQUF5QixFQUFFLENBQUNBLHlCQUF5QixDQUFDO2NBQ3RETCxJQUFJLEVBQUVBLElBQXVDO2NBQzdDUyxJQUFJLEVBQUVULElBQUksS0FBSyxXQUFXLEdBQUcsSUFBSSxHQUFHO1lBQ3JDLENBQUM7WUFDRFQsTUFBTSxDQUFDbUIsSUFBSSxDQUFDSCxRQUFRLENBQUM7VUFDdEIsQ0FBQyxNQUFNO1lBQ047WUFDQSxNQUFNSSxZQUFZLEdBQUdwQixNQUFNLENBQUNVLFVBQVUsQ0FBQztZQUN2QztZQUNBLElBQUksQ0FBQ1UsWUFBWSxDQUFDQyxVQUFVLElBQUksS0FBSyxLQUFLLENBQUNsQiw0QkFBNEIsQ0FBQ2lCLFlBQVksQ0FBQ1AsR0FBRyxDQUFDLEVBQUU7Y0FDMUZPLFlBQVksQ0FBQ04seUJBQXlCLEdBQUcsQ0FBQ0EseUJBQXlCLENBQUM7Y0FDcEVYLDRCQUE0QixDQUFDaUIsWUFBWSxDQUFDUCxHQUFHLENBQUMsR0FBRyxJQUFJO1lBQ3RELENBQUMsTUFBTTtjQUNMTyxZQUFZLENBQUNOLHlCQUF5QixDQUFxQ0ssSUFBSSxDQUFDTCx5QkFBeUIsQ0FBQztZQUM1RztVQUNEO1FBQ0Q7TUFDRDtJQUNEO0VBQ0Q7RUFFQSxNQUFNQyxlQUFlLEdBQUc7SUFDdkI1RSxZQUFZO0lBQ1phLGdCQUFnQjtJQUNoQkUsZ0JBQWdCO0lBQ2hCSCxZQUFZO0lBQ1pxQixXQUFXO0lBQ1htQiw2QkFBNkI7SUFDN0JLLHVCQUF1QjtJQUN2QkcsVUFBVTtJQUNWVDtFQUNELENBQUM7RUFBQyxPQUVheUIsZUFBZTtBQUFBIiwiaWdub3JlTGlzdCI6W119
261
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsInZhbHVlIiwiaW5kZXgiLCJkZWVwRXF1YWwiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRGF0ZSIsIkZpbHRlck9wZXJhdG9yIiwiR1QiLCJMVCIsIkdFIiwiTEUiLCJFUSIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJTdGFydHNXaXRoIiwiTkUiLCJOb3RDb250YWlucyIsIk5vdEVuZHNXaXRoIiwiTm90U3RhcnRzV2l0aCIsInRvU3RyaW5nIiwibWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAiLCJtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvciIsInZhbHVlcyIsIm5ld1ZhbHVlMSIsIm5ld1ZhbHVlMiIsIkJUIiwiaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMiLCJOQiIsImdldFRleHQiLCJpc0ludmFsaWRTaW5nbGVSYW5nZSIsImZpbHRlclZhbHVlIiwiYWxsb3dlZCIsImluY2x1ZGVzIiwiZm9ybWF0RGF0YSIsInRva2VucyIsImZpbHRlclZhbHVlcyIsImZpbHRlckJhck1ldGFkYXRhIiwic2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVycyIsInZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnMiLCJub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMiLCJzaW5nbGVSYW5nZVRva2VuTGFiZWxzIiwiaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMiLCJmaWx0ZXJDcml0ZXJpYSIsImZpbmQiLCJmaWVsZCIsIm5hbWUiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJmaWx0ZXJhYmxlIiwicHVzaCIsImxhYmVsIiwiaGlkZGVuRmlsdGVyIiwiZmlsdGVyUmVzdHJpY3Rpb24iLCJ0eXBlIiwidG9rZW5JbmRleCIsImZpbmRJbmRleCIsInRva2VuIiwia2V5Iiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsIkVhc3lGaWx0ZXJVdGlscyIsIm5ld1Rva2VuIiwiYnVzeSIsImN1cnJlbnRUb2tlbiIsImlzUmVxdWlyZWQiLCJtZXNzYWdlcyIsIm5vbkZpbHRlcmFibGVUb2tlbkxhYmVsIiwiam9pbiJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsidXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcmltaXRpdmVUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCBMaWIgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IERhdGVGb3JtYXQgZnJvbSBcInNhcC91aS9jb3JlL2Zvcm1hdC9EYXRlRm9ybWF0XCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IERhdGVUaW1lT2Zmc2V0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9EYXRlVGltZU9mZnNldFwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyUmVzdWx0LCBQcm9wZXJ0eU1ldGFkYXRhIH0gZnJvbSBcInV4L2VuZy9maW9yaWFpL3JldXNlL2Vhc3lmaWx0ZXIvRWFzeUZpbHRlclwiO1xuaW1wb3J0IHR5cGUge1xuXHRCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdENvZGVMaXN0VHlwZSxcblx0RWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEsXG5cdFRva2VuRGVmaW5pdGlvbixcblx0VG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24sXG5cdFRva2VuVHlwZSxcblx0VmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25cbn0gZnJvbSBcIi4vRWFzeUZpbHRlckJhckNvbnRhaW5lclwiO1xuXG50eXBlIGNvZGVMaXN0VHlwZSA9IFByb3BlcnR5TWV0YWRhdGFbXCJjb2RlTGlzdFwiXTtcbnR5cGUgZmluYWxDb2RlTGlzdFR5cGUgPSB7IHZhbHVlOiBQcmltaXRpdmVUeXBlOyBkZXNjcmlwdGlvbj86IHN0cmluZyB9W107XG5jb25zdCByZXNvdXJjZUJ1bmRsZSA9IExpYi5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb250cm9sc1wiKSE7XG5jb25zdCBkYXRlVGltZU9mZnNldCA9IG5ldyBEYXRlVGltZU9mZnNldCgpO1xuXG5mdW5jdGlvbiBhcmVJdGVtc1NhbWUoXG5cdGFycjE6IHJlYWRvbmx5IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10gfCBWYWx1ZUhlbHBTZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSxcblx0YXJyMjogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdXG4pOiBib29sZWFuIHtcblx0aWYgKGFycjEubGVuZ3RoICE9PSBhcnIyLmxlbmd0aCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHQvLyBDb21wYXJlIGVsZW1lbnRzIG9mIGJvdGggYXJyYXlzXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyMS5sZW5ndGg7IGkrKykge1xuXHRcdGlmIChcblx0XHRcdGFycjFbaV0ub3BlcmF0b3IgIT09IGFycjJbaV0ub3BlcmF0b3IgfHxcblx0XHRcdCFhcnIxW2ldLnNlbGVjdGVkVmFsdWVzLmV2ZXJ5KFxuXHRcdFx0XHQodmFsdWUsIGluZGV4KSA9PlxuXHRcdFx0XHRcdHZhbHVlID09PSBhcnIyW2ldLnNlbGVjdGVkVmFsdWVzW2luZGV4XSB8fFxuXHRcdFx0XHRcdCh0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcblx0XHRcdFx0XHRcdGRlZXBFcXVhbCgodmFsdWUgYXMgQ29kZUxpc3RUeXBlKS52YWx1ZSwgKGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdIGFzIENvZGVMaXN0VHlwZSkudmFsdWUpICYmXG5cdFx0XHRcdFx0XHQodmFsdWUgYXMgQ29kZUxpc3RUeXBlKS5kZXNjcmlwdGlvbiA9PT0gKGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdIGFzIENvZGVMaXN0VHlwZSkuZGVzY3JpcHRpb24pXG5cdFx0XHQpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0cnVlOyAvLyBBcnJheXMgYXJlIHRoZSBzYW1lXG59XG5cbmZ1bmN0aW9uIGFyZUFycmF5U2FtZShhcnIxOiByZWFkb25seSB1bmtub3duW10sIGFycjI6IHJlYWRvbmx5IHVua25vd25bXSk6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdC8vIENvbXBhcmUgZWxlbWVudHMgb2YgYm90aCBhcnJheXNcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnIxLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKGFycjFbaV0gIT09IGFycjJbaV0pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuYXN5bmMgZnVuY3Rpb24gYXJlQ29kZUxpc3RzU2FtZShhcnIxOiBjb2RlTGlzdFR5cGUsIGFycjI6IGNvZGVMaXN0VHlwZSk6IFByb21pc2U8Ym9vbGVhbj4ge1xuXHRjb25zdCBhcnJOZXcxOiBmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZCA9IGF3YWl0IGdldENvZGVMaXN0QXJyYXkoYXJyMSk7XG5cdGNvbnN0IGFyck5ldzI6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIyKTtcblx0Y29uc3QgZGVzY3JpcHRpb25OZXcxID0gYXJyTmV3MT8ubWFwKChkYXRhKSA9PiBkYXRhLmRlc2NyaXB0aW9uKTtcblx0Y29uc3QgZGVzY3JpcHRpb25OZXcyID0gYXJyTmV3Mj8ubWFwKChkYXRhKSA9PiBkYXRhLmRlc2NyaXB0aW9uKTtcblxuXHRjb25zdCB2YWx1ZTEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEudmFsdWUpO1xuXHRjb25zdCB2YWx1ZTIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEudmFsdWUpO1xuXHRpZiAoIWRlc2NyaXB0aW9uTmV3MSB8fCAhZGVzY3JpcHRpb25OZXcyKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHJldHVybiBhcmVBcnJheVNhbWUoZGVzY3JpcHRpb25OZXcxLCBkZXNjcmlwdGlvbk5ldzIpICYmIGFyZUFycmF5U2FtZSh2YWx1ZTEgYXMgUHJpbWl0aXZlVHlwZSwgdmFsdWUyIGFzIFByaW1pdGl2ZVR5cGUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb2RlTGlzdEFycmF5KGFycjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxmaW5hbENvZGVMaXN0VHlwZSB8IHVuZGVmaW5lZD4ge1xuXHRpZiAodHlwZW9mIGFyciA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0cmV0dXJuIGFycigpO1xuXHR9XG5cdHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWU6IERhdGUsIHRva2VuVHlwZTogVG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuKTogc3RyaW5nIHtcblx0bGV0IGZvcm1hdHRlZERhdGVUaW1lID0gXCJcIjtcblx0aWYgKGlzRGF0ZVRpbWVPZmZzZXQpIHtcblx0XHRyZXR1cm4gZGF0ZVRpbWVPZmZzZXQuZm9ybWF0VmFsdWUodmFsdWUsIFwic3RyaW5nXCIpIGFzIHN0cmluZztcblx0fVxuXHRzd2l0Y2ggKHRva2VuVHlwZSkge1xuXHRcdGNhc2UgXCJDYWxlbmRhclwiOlxuXHRcdFx0Zm9ybWF0dGVkRGF0ZVRpbWUgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSgpLmZvcm1hdCh2YWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFwiVGltZVwiOlxuXHRcdFx0Zm9ybWF0dGVkRGF0ZVRpbWUgPSBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZSgpLmZvcm1hdCh2YWx1ZSk7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0cmV0dXJuIGZvcm1hdHRlZERhdGVUaW1lO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IgYW5kIHZhbHVlLlxuICogQHBhcmFtIG9wZXJhdG9yIFRoZSBvcGVyYXRvciB0byByZXByZXNlbnRcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVwcmVzZW50XG4gKiBAcGFyYW0gdG9rZW5UeXBlIFRoZSB0b2tlbidzIHR5cGVcbiAqIEBwYXJhbSBpc0RhdGVUaW1lT2Zmc2V0IENoZWNrcyBpZiB0aGUgZGF0YSB0eXBlIGlzIG9mIERhdGVUaW1lT2Zmc2V0XG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvcGVyYXRvciBhbmQgdmFsdWVcbiAqL1xuZnVuY3Rpb24gbWFwT3BlcmF0b3IoXG5cdG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcixcblx0dmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlLFxuXHR0b2tlblR5cGU6IFRva2VuVHlwZSxcblx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuKTogc3RyaW5nIHtcblx0bGV0IG5ld1ZhbHVlOiBudW1iZXIgfCBzdHJpbmcgPSBcIlwiO1xuXHRpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZSk7XG5cdH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlID0gdmFsdWU7XG5cdH1cblxuXHRzd2l0Y2ggKG9wZXJhdG9yKSB7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5HVDpcblx0XHRcdHJldHVybiBgPiAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5MVDpcblx0XHRcdHJldHVybiBgPCAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5HRTpcblx0XHRcdHJldHVybiBgPj0gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTEU6XG5cdFx0XHRyZXR1cm4gYDw9ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkVROlxuXHRcdFx0cmV0dXJuIGAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Db250YWluczpcblx0XHRcdHJldHVybiBgKiR7bmV3VmFsdWV9KmA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5FbmRzV2l0aDpcblx0XHRcdHJldHVybiBgKiR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLlN0YXJ0c1dpdGg6XG5cdFx0XHRyZXR1cm4gYCR7bmV3VmFsdWV9KmA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5ORTpcblx0XHRcdHJldHVybiBgIT0oJHtuZXdWYWx1ZX0pYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdENvbnRhaW5zOlxuXHRcdFx0cmV0dXJuIGAhKCoke25ld1ZhbHVlfSopYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5vdEVuZHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAhKCoke25ld1ZhbHVlfSlgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90U3RhcnRzV2l0aDpcblx0XHRcdHJldHVybiBgISgke25ld1ZhbHVlfSopYDtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIG5ld1ZhbHVlPy50b1N0cmluZygpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvciwgdmFsdWU6IENvZGVMaXN0VHlwZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRyZXR1cm4gbWFwT3BlcmF0b3Iob3BlcmF0b3IsIHZhbHVlLmRlc2NyaXB0aW9uLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xufVxuXG5mdW5jdGlvbiBtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcihcblx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuXHR2YWx1ZXM6IEJldHdlZW5TZWxlY3RlZFZhbHVlcyB8IFZhbHVlSGVscEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0dG9rZW5UeXBlOiBUb2tlblR5cGUsXG5cdGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW5cbik6IHN0cmluZyB7XG5cdGxldCBuZXdWYWx1ZTE6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBcIlwiO1xuXHRsZXQgbmV3VmFsdWUyOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gXCJcIjtcblx0aWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUxID0gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZXNbMF0pO1xuXHR9IGVsc2UgaWYgKHZhbHVlc1swXSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZTEgPSBjb252ZXJ0RGF0ZVRvU3RyaW5nKHZhbHVlc1swXSwgdG9rZW5UeXBlLCBpc0RhdGVUaW1lT2Zmc2V0KTtcblx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWVzWzBdID09PSBcIm9iamVjdFwiKSB7XG5cdFx0bmV3VmFsdWUxID0gdmFsdWVzWzBdLmRlc2NyaXB0aW9uIGFzIHN0cmluZztcblx0fSBlbHNlIHtcblx0XHRuZXdWYWx1ZTEgPSB2YWx1ZXNbMF07XG5cdH1cblxuXHRpZiAodHlwZW9mIHZhbHVlc1sxXSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZTIgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlc1sxXSk7XG5cdH0gZWxzZSBpZiAodmFsdWVzWzFdIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlMiA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWVzWzFdLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRuZXdWYWx1ZTIgPSB2YWx1ZXNbMV0uZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlMiA9IHZhbHVlc1sxXTtcblx0fVxuXHRpZiAob3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUKSB7XG5cdFx0cmV0dXJuIGAke25ld1ZhbHVlMX0uLi4ke25ld1ZhbHVlMn1gO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBgISgke25ld1ZhbHVlMX0uLi4ke25ld1ZhbHVlMn0pYDtcblx0fVxufVxuXG5mdW5jdGlvbiBpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyhvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IpOiBib29sZWFuIHtcblx0cmV0dXJuIG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCB8fCBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuTkI7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWU6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRyZXR1cm4gdmFsdWVcblx0XHQ/IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NFTEVDVEVEX1ZBTFVFU19UUlVFXCIpXG5cdFx0OiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TRUxFQ1RFRF9WQUxVRVNfRkFMU0VcIik7XG59XG5cbi8vVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIGZpbHRlciBpcyBub3QgYSB2YWxpZCBcIlNpbmdsZVJhbmdlXCIgKGUuZy4sIHdyb25nIG9wZXJhdG9yIG9yIHRvbyBtYW55IHZhbHVlcyksIGFuZCBmYWxzZSBpZiBpdCBpcyB2YWxpZC5cbmZ1bmN0aW9uIGlzSW52YWxpZFNpbmdsZVJhbmdlKGZpbHRlclZhbHVlOiB7IG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcjsgdmFsdWVzOiAoc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IGJvb2xlYW4pW10gfSk6IGJvb2xlYW4ge1xuXHRjb25zdCBhbGxvd2VkID0gW0ZpbHRlck9wZXJhdG9yLkVRLCBGaWx0ZXJPcGVyYXRvci5MRSwgRmlsdGVyT3BlcmF0b3IuTFQsIEZpbHRlck9wZXJhdG9yLkdFLCBGaWx0ZXJPcGVyYXRvci5HVCwgRmlsdGVyT3BlcmF0b3IuQlRdO1xuXG5cdC8vIFx0ZmlsdGVyVmFsdWUub3BlcmF0b3IgIT09IEZpbHRlck9wZXJhdG9yLkJUIGVuc3VyZXMgQlQgaXMgYWx3YXlzIHZhbGlkLlxuXHQvLyAhYWxsb3dlZC5pbmNsdWRlcygpIGJsb2NrcyB1bnN1cHBvcnRlZCBvcGVyYXRvcnMuXG5cdC8vIGZpbHRlclZhbHVlLnZhbHVlcy5sZW5ndGggPj0gMiBibG9ja3MgbXVsdGlwbGUgdmFsdWVzIGZvciBzaW5nbGUtcmFuZ2UgZmlsdGVycy5cblx0Ly8gVG9nZXRoZXIsIHRoaXMgcmV0dXJucyB0cnVlIHdoZW4gdGhlIGZpbHRlciBpcyBub3QgYSB2YWxpZCBzaW5nbGUtcmFuZ2UuXG5cdHJldHVybiBmaWx0ZXJWYWx1ZS5vcGVyYXRvciAhPT0gRmlsdGVyT3BlcmF0b3IuQlQgJiYgKCFhbGxvd2VkLmluY2x1ZGVzKGZpbHRlclZhbHVlLm9wZXJhdG9yKSB8fCBmaWx0ZXJWYWx1ZS52YWx1ZXMubGVuZ3RoID49IDIpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXREYXRhKFxuXHR0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdLFxuXHRmaWx0ZXJWYWx1ZXM6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl0sXG5cdGZpbHRlckJhck1ldGFkYXRhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdLFxuXHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzOiAobXNnOiBzdHJpbmcpID0+IHZvaWRcbik6IHZvaWQge1xuXHRpZiAoZmlsdGVyVmFsdWVzKSB7XG5cdFx0Y29uc3QgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblx0XHRjb25zdCBub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3Qgc2luZ2xlUmFuZ2VUb2tlbkxhYmVsczogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCBoaWRkZW5GaWx0ZXJUb2tlbkxhYmVsczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGZvciAoY29uc3QgZmlsdGVyVmFsdWUgb2YgZmlsdGVyVmFsdWVzKSB7XG5cdFx0XHRjb25zdCBmaWx0ZXJDcml0ZXJpYSA9IGZpbHRlckJhck1ldGFkYXRhLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBmaWx0ZXJWYWx1ZS5uYW1lKTtcblx0XHRcdGlmIChmaWx0ZXJDcml0ZXJpYSkge1xuXHRcdFx0XHQvLyBPbmx5IGJsb2NrIGlmIGZpbHRlcmFibGUgaXMgZmFsc2Vcblx0XHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJDcml0ZXJpYSwgXCJmaWx0ZXJhYmxlXCIpICYmICFmaWx0ZXJDcml0ZXJpYT8uZmlsdGVyYWJsZSkge1xuXHRcdFx0XHRcdG5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5wdXNoKGZpbHRlckNyaXRlcmlhLmxhYmVsIHx8IGZpbHRlckNyaXRlcmlhLm5hbWUpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIE9ubHkgYmxvY2sgaWYgaGlkZGVuRmlsdGVyIGlzIHRydWVcblx0XHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChmaWx0ZXJDcml0ZXJpYSwgXCJoaWRkZW5GaWx0ZXJcIikgJiYgZmlsdGVyQ3JpdGVyaWE/LmhpZGRlbkZpbHRlcikge1xuXHRcdFx0XHRcdGhpZGRlbkZpbHRlclRva2VuTGFiZWxzLnB1c2goZmlsdGVyQ3JpdGVyaWEubGFiZWwgfHwgZmlsdGVyQ3JpdGVyaWEubmFtZSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gT25seSBhcHBseSBTaW5nbGVSYW5nZSBsb2dpYyBpZiBmaWx0ZXJSZXN0cmljdGlvbiBpcyBzZXQgdG8gU2luZ2xlUmFuZ2Vcblx0XHRcdFx0aWYgKGZpbHRlckNyaXRlcmlhPy5maWx0ZXJSZXN0cmljdGlvbiA9PT0gXCJTaW5nbGVSYW5nZVwiICYmIGlzSW52YWxpZFNpbmdsZVJhbmdlKGZpbHRlclZhbHVlKSkge1xuXHRcdFx0XHRcdHNpbmdsZVJhbmdlVG9rZW5MYWJlbHMucHVzaChmaWx0ZXJDcml0ZXJpYS5sYWJlbCB8fCBmaWx0ZXJDcml0ZXJpYS5uYW1lKTtcblx0XHRcdFx0XHRmaWx0ZXJWYWx1ZS52YWx1ZXMgPSBbXTsgLy8gUmVzZXQgdmFsdWVzIHRvIGF2b2lkIGFkZGluZyBpbnZhbGlkIHRva2VuIHZhbHVlc1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgeyB0eXBlIH0gPSBmaWx0ZXJDcml0ZXJpYTtcblx0XHRcdFx0Y29uc3QgdG9rZW5JbmRleCA9IHRva2Vucy5maW5kSW5kZXgoKHRva2VuKSA9PiB0b2tlbi5rZXkgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdFx0XHRjb25zdCB7IG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGZpbHRlclZhbHVlO1xuXHRcdFx0XHRsZXQga2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb247XG5cdFx0XHRcdGlmIChFYXN5RmlsdGVyVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IHtcblx0XHRcdFx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0XHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSB7XG5cdFx0XHRcdFx0XHRvcGVyYXRvcjogb3BlcmF0b3IgYXMgRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj4sXG5cdFx0XHRcdFx0XHRzZWxlY3RlZFZhbHVlczogdmFsdWVzIGFzIHN0cmluZ1tdIHwgRGF0ZVtdIHwgbnVtYmVyW10gfCBib29sZWFuW11cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICh0b2tlbkluZGV4ID09PSAtMSkge1xuXHRcdFx0XHRcdC8vIEFkZCBuZXcgdG9rZW4gaWYgaXQgZG9lc24ndCBleGlzdFxuXHRcdFx0XHRcdGNvbnN0IG5ld1Rva2VuOiBUb2tlbkRlZmluaXRpb24gPSB7XG5cdFx0XHRcdFx0XHRrZXk6IGZpbHRlclZhbHVlLm5hbWUsXG5cdFx0XHRcdFx0XHRsYWJlbDogZmlsdGVyQ3JpdGVyaWEubGFiZWwgYXMgc3RyaW5nLFxuXHRcdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdLFxuXHRcdFx0XHRcdFx0dHlwZTogdHlwZSBhcyBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj4sXG5cdFx0XHRcdFx0XHRidXN5OiB0eXBlID09PSBcIlZhbHVlSGVscFwiID8gdHJ1ZSA6IGZhbHNlXG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0XHR0b2tlbnMucHVzaChuZXdUb2tlbik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gVXBkYXRlIGV4aXN0aW5nIHRva2VuXG5cdFx0XHRcdFx0Y29uc3QgY3VycmVudFRva2VuID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdFx0XHRcdC8vSWYgaXRzIGRlZmF1bHQgdmFsdWUgLCBvdmVycmlkZSBpdFxuXHRcdFx0XHRcdGlmICgoY3VycmVudFRva2VuLmlzUmVxdWlyZWQgPz8gZmFsc2UpICYmICF2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zW2N1cnJlbnRUb2tlbi5rZXldKSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IFtrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXTtcblx0XHRcdFx0XHRcdHZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnNbY3VycmVudFRva2VuLmtleV0gPSB0cnVlO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHQoY3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgYXMgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSkucHVzaChrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5sZW5ndGggPiAwIHx8IHNpbmdsZVJhbmdlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCB8fCBoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblx0XHRcdGlmIChub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRjb25zdCBub25GaWx0ZXJhYmxlVG9rZW5MYWJlbCA9IGA8c3Ryb25nPiR7bm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gO1xuXHRcdFx0XHRtZXNzYWdlcy5wdXNoKHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX05PTl9GSUxURVJBQkxFXCIsIFtub25GaWx0ZXJhYmxlVG9rZW5MYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdGlmIChoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNvbnN0IGxhYmVsID0gYDxzdHJvbmc+JHtoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5qb2luKFwiLCBcIil9PC9zdHJvbmc+YDtcblx0XHRcdFx0bWVzc2FnZXMucHVzaChyZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9ISURERU5fRklMVEVSXCIsIFtsYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdGlmIChzaW5nbGVSYW5nZVRva2VuTGFiZWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Y29uc3QgbGFiZWwgPSBgPHN0cm9uZz4ke3NpbmdsZVJhbmdlVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmA7XG5cdFx0XHRcdG1lc3NhZ2VzLnB1c2gocmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0lOR0xFX1JBTkdFXCIsIFtsYWJlbF0pKTtcblx0XHRcdH1cblx0XHRcdHNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMobWVzc2FnZXMuam9pbihcIjxicj5cIikpO1xuXHRcdH1cblx0fVxufVxuXG5jb25zdCBFYXN5RmlsdGVyVXRpbHMgPSB7XG5cdGFyZUl0ZW1zU2FtZSxcblx0YXJlQ29kZUxpc3RzU2FtZSxcblx0Z2V0Q29kZUxpc3RBcnJheSxcblx0YXJlQXJyYXlTYW1lLFxuXHRtYXBPcGVyYXRvcixcblx0bWFwT3BlcmF0b3JGb3JCZXR3ZWVuT3BlcmF0b3IsXG5cdGlzQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHRmb3JtYXREYXRhLFxuXHRtYXBPcGVyYXRvckZvclZhbHVlSGVscFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRWFzeUZpbHRlclV0aWxzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0VBb0JBLE1BQU1BLGNBQWMsR0FBR0MsR0FBRyxDQUFDQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBRTtFQUNuRSxNQUFNQyxjQUFjLEdBQUcsSUFBSUMsY0FBYyxDQUFDLENBQUM7RUFFM0MsU0FBU0MsWUFBWUEsQ0FDcEJDLElBQW9GLEVBQ3BGQyxJQUFvRixFQUMxRTtJQUNWLElBQUlELElBQUksQ0FBQ0UsTUFBTSxLQUFLRCxJQUFJLENBQUNDLE1BQU0sRUFBRTtNQUNoQyxPQUFPLEtBQUs7SUFDYjtJQUNBO0lBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILElBQUksQ0FBQ0UsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRTtNQUNyQyxJQUNDSCxJQUFJLENBQUNHLENBQUMsQ0FBQyxDQUFDQyxRQUFRLEtBQUtILElBQUksQ0FBQ0UsQ0FBQyxDQUFDLENBQUNDLFFBQVEsSUFDckMsQ0FBQ0osSUFB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
@@ -199,16 +199,48 @@ function convertBoolToString(value: boolean): string {
199
199
  : resourceBundle.getText("M_EASY_FILTER_SELECTED_VALUES_FALSE");
200
200
  }
201
201
 
202
+ //This function returns true if the filter is not a valid "SingleRange" (e.g., wrong operator or too many values), and false if it is valid.
203
+ function isInvalidSingleRange(filterValue: { operator: FilterOperator; values: (string | number | Date | boolean)[] }): boolean {
204
+ const allowed = [FilterOperator.EQ, FilterOperator.LE, FilterOperator.LT, FilterOperator.GE, FilterOperator.GT, FilterOperator.BT];
205
+
206
+ // filterValue.operator !== FilterOperator.BT ensures BT is always valid.
207
+ // !allowed.includes() blocks unsupported operators.
208
+ // filterValue.values.length >= 2 blocks multiple values for single-range filters.
209
+ // Together, this returns true when the filter is not a valid single-range.
210
+ return filterValue.operator !== FilterOperator.BT && (!allowed.includes(filterValue.operator) || filterValue.values.length >= 2);
211
+ }
212
+
202
213
  function formatData(
203
214
  tokens: TokenDefinition[],
204
215
  filterValues: EasyFilterResult["filter"],
205
- filterBarMetadata: EasyFilterPropertyMetadata[]
216
+ filterBarMetadata: EasyFilterPropertyMetadata[],
217
+ setMessageStripForValidatedFilters: (msg: string) => void
206
218
  ): void {
207
219
  if (filterValues) {
208
220
  const visitedMapForMandatoryTokens: Record<string, boolean> = {};
221
+ const nonFilterableTokenLabels: string[] = [];
222
+ const singleRangeTokenLabels: string[] = [];
223
+ const hiddenFilterTokenLabels: string[] = [];
224
+
209
225
  for (const filterValue of filterValues) {
210
226
  const filterCriteria = filterBarMetadata.find((field) => field.name === filterValue.name);
211
227
  if (filterCriteria) {
228
+ // Only block if filterable is false
229
+ if (Object.prototype.hasOwnProperty.call(filterCriteria, "filterable") && !filterCriteria?.filterable) {
230
+ nonFilterableTokenLabels.push(filterCriteria.label || filterCriteria.name);
231
+ continue;
232
+ }
233
+ // Only block if hiddenFilter is true
234
+ if (Object.prototype.hasOwnProperty.call(filterCriteria, "hiddenFilter") && filterCriteria?.hiddenFilter) {
235
+ hiddenFilterTokenLabels.push(filterCriteria.label || filterCriteria.name);
236
+ continue;
237
+ }
238
+ // Only apply SingleRange logic if filterRestriction is set to SingleRange
239
+ if (filterCriteria?.filterRestriction === "SingleRange" && isInvalidSingleRange(filterValue)) {
240
+ singleRangeTokenLabels.push(filterCriteria.label || filterCriteria.name);
241
+ filterValue.values = []; // Reset values to avoid adding invalid token values
242
+ }
243
+
212
244
  const { type } = filterCriteria;
213
245
  const tokenIndex = tokens.findIndex((token) => token.key === filterValue.name);
214
246
  const { operator, values } = filterValue;
@@ -247,6 +279,22 @@ function formatData(
247
279
  }
248
280
  }
249
281
  }
282
+ if (nonFilterableTokenLabels.length > 0 || singleRangeTokenLabels.length > 0 || hiddenFilterTokenLabels.length > 0) {
283
+ const messages: string[] = [];
284
+ if (nonFilterableTokenLabels.length > 0) {
285
+ const nonFilterableTokenLabel = `<strong>${nonFilterableTokenLabels.join(", ")}</strong>`;
286
+ messages.push(resourceBundle.getText("M_EASY_FILTER_NON_FILTERABLE", [nonFilterableTokenLabel]));
287
+ }
288
+ if (hiddenFilterTokenLabels.length > 0) {
289
+ const label = `<strong>${hiddenFilterTokenLabels.join(", ")}</strong>`;
290
+ messages.push(resourceBundle.getText("M_EASY_FILTER_HIDDEN_FILTER", [label]));
291
+ }
292
+ if (singleRangeTokenLabels.length > 0) {
293
+ const label = `<strong>${singleRangeTokenLabels.join(", ")}</strong>`;
294
+ messages.push(resourceBundle.getText("M_EASY_FILTER_SINGLE_RANGE", [label]));
295
+ }
296
+ setMessageStripForValidatedFilters(messages.join("<br>"));
297
+ }
250
298
  }
251
299
  }
252
300
 
@@ -22,7 +22,7 @@ sap.ui.define(["sap/fe/base/library", "sap/fe/controls/shortcuts/ShortcutExplana
22
22
  controls: [],
23
23
  elements: [],
24
24
  // eslint-disable-next-line no-template-curly-in-string
25
- version: "1.138.0",
25
+ version: "1.139.0",
26
26
  noLibraryCSS: false
27
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
28
  });
@@ -12,7 +12,7 @@ M_EASY_FILTER_PLACEHOLDER=Enter your query using natural language to filter the
12
12
  # XBUT,15: Button validating the easy filter token popover
13
13
  M_EASY_FILTER_POPOVER_OK=OK
14
14
  # XBUT,30: Button to show all items in the easy filter token popover
15
- M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=Show all items
15
+ M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=Show All Items
16
16
  # XMSG
17
17
  M_EASY_FILTER_MANDATORY_TOKEN_ITEMS={0} values
18
18
  # XBUT
@@ -21,7 +21,7 @@ M_EASY_FILTER_RESET=Reset Filters
21
21
  M_EASY_FILTER_SELECTED_VALUES_TRUE=Yes
22
22
  # XFLD
23
23
  M_EASY_FILTER_SELECTED_VALUES_FALSE=No
24
- # XMSG
24
+ # XMSG: Showed in the easy filter when the backend deems the input unclear and couldn't provide suggestion
25
25
  M_EASY_FILTER_UNCLEAR_INPUT=Unclear input: {0}
26
26
  # XTIT,20: Title in the shell user settings dialog to configure the easy filter (and other AI related features)
27
27
  M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
@@ -29,12 +29,12 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
29
29
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Easy Filter
30
30
  # XFLD
31
31
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=Make the easy filter the default filtering option.
32
- # XFLD
32
+ # XFLD: It appears in the User Menu under Settings --> User Activities --> SAP Business AI tab
33
33
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Keep my recent queries in the easy filter under Last used queries.
34
34
  # XMSG
35
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Maintain Value for the filter criteria
35
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Select a value for this mandatory filter.
36
36
  # XMSG
37
- M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Select Value)
37
+ M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Select a Value)
38
38
  # XBUT
39
39
  M_EASY_FILTER_FILTER_SET_AI=Filters:
40
40
  # XGRP:
@@ -46,19 +46,19 @@ M_EASY_FILTER_POPOVER_LAST_USED=Last Used Queries
46
46
  # XTIT
47
47
  M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=No favorite queries
48
48
  # XSMG
49
- M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Add queries to your favorites
49
+ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Add queries to your favorites.
50
50
  # XSMG
51
51
  M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=Your last used queries will be displayed here.
52
52
  # XTIT
53
53
  M_EASY_FILTER_POPOVER_AI_TITLE=Created with AI
54
54
  # XMSG
55
- M_EASY_FILTER_POPOVER_AI_TEXT_1=The content was partially or fully generated by artificial intelligence(AI) technologies.
55
+ M_EASY_FILTER_POPOVER_AI_TEXT_1=The content was partially or fully generated by artificial intelligence (AI) technologies.
56
56
  # XMSG
57
- M_EASY_FILTER_POPOVER_AI_TEXT_2=The AI-generated content may contain inaccuracies due to using multiple information sources.Verify results before use.
57
+ M_EASY_FILTER_POPOVER_AI_TEXT_2=The AI-generated content may contain inaccuracies due to using multiple information sources. Verify results before use.
58
58
  # XBUT
59
59
  M_EASY_FILTER_POPOVER_CLOSE=Close
60
60
  # XMSG
61
- M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=No Last Used Queries
61
+ M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=No last used queries
62
62
  # XMSG
63
63
  M_EASY_FILTER_FILLED_STAR=Remove from Favorites
64
64
  # XMSG
@@ -66,7 +66,13 @@ M_EASY_FILTER_EMPTY_START=Add to Favorites
66
66
  # XMSG: Text read out by the screenreader, telling users how to move to the list under the search field containing favorite queries and last used queries, if available
67
67
  T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=To move to the list of favorite queries and last used queries, press the ArrowDown key
68
68
  # XMSG
69
- M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Note that only one single value can be applied to the following: {0}
69
+ M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Only one single value can be applied to the following: {0}
70
+ # XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
71
+ M_EASY_FILTER_NON_FILTERABLE=You can''t filter for the following property in this app: {0}
72
+ # XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
73
+ M_EASY_FILTER_SINGLE_RANGE=Note that only one single condition can be applied to the following: {0}
74
+ # XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
75
+ M_EASY_FILTER_HIDDEN_FILTER=You can''t filter for the following property in this app: {0}
70
76
  # XTIT: Title in the shell user menu to open the shortcut dialog and the dialog title
71
77
  C_SHORTCUT_TITLE=Keyboard Shortcuts
72
78
  # XMSG,30: Placeholder message for the keyboard interaction input field
@@ -4,7 +4,7 @@ C_HISTORY_CLOSE=\u0625\u063A\u0644\u0627\u0642
4
4
  M_EASY_FILTER_GO=\u0627\u0646\u062A\u0642\u0627\u0644
5
5
  M_EASY_FILTER_PLACEHOLDER=\u0623\u062F\u062E\u0644 \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0643 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0637\u0628\u064A\u0639\u064A\u0629 \u0644\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0642\u0627\u0626\u0645\u0629
6
6
  M_EASY_FILTER_POPOVER_OK=\u0645\u0648\u0627\u0641\u0642
7
- M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=\u0625\u0638\u0647\u0627\u0631 \u0643\u0644 \u0627\u0644\u0623\u0635\u0646\u0627\u0641
7
+ M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=\u0625\u0638\u0647\u0627\u0631 \u0643\u0644 \u0627\u0644\u0628\u0646\u0648\u062F
8
8
  M_EASY_FILTER_MANDATORY_TOKEN_ITEMS={0} \u0645\u0646 \u0627\u0644\u0642\u064A\u0645
9
9
  M_EASY_FILTER_RESET=\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629
10
10
  M_EASY_FILTER_SELECTED_VALUES_TRUE=\u0646\u0639\u0645
@@ -14,14 +14,14 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=\u062A\u0635\u0641\u064A\u0629 \u0633\u0647\u0644\u0629
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=\u062C\u0639\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0633\u0647\u0644\u0629 \u0644\u062E\u064A\u0627\u0631 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0627\u0641\u062A\u0631\u0627\u0636\u064A.
16
16
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=\u0627\u0644\u0627\u062D\u062A\u0641\u0627\u0638 \u0628\u0627\u0644\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062D\u062F\u064A\u062B\u0629 \u0641\u064A \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0633\u0647\u0644\u0629 \u0636\u0645\u0646 \u0622\u062E\u0631 \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0645\u0633\u062A\u062E\u062F\u0645\u0629.
17
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=\u0642\u0645 \u0628\u0645\u0639\u0627\u0644\u062C\u0629 \u0642\u064A\u0645\u0629 \u0644\u0645\u0639\u0627\u064A\u064A\u0631 \u0627\u0644\u062A\u0635\u0641\u064A\u0629
18
- M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(\u062D\u062F\u062F \u0642\u064A\u0645\u0629)
17
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=\u062D\u062F\u062F \u0642\u064A\u0645\u0629 \u0644\u0639\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629 \u0627\u0644\u0625\u0644\u0632\u0627\u0645\u064A \u0647\u0630\u0627.
18
+ M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(\u062A\u062D\u062F\u064A\u062F \u0642\u064A\u0645\u0629)
19
19
  M_EASY_FILTER_FILTER_SET_AI=\u0639\u0648\u0627\u0645\u0644 \u0627\u0644\u062A\u0635\u0641\u064A\u0629\:
20
20
  M_EASY_FILTER_POPOVER_SUGGESTIONS_TITLE=\u0627\u0642\u062A\u0631\u0627\u062D\u0627\u062A \u0644\u0628\u062F\u0621 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645
21
21
  M_EASY_FILTER_POPOVER_FAVORITE_TITLE=\u0627\u0644\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0645\u0641\u0636\u0644\u0629
22
22
  M_EASY_FILTER_POPOVER_LAST_USED=\u0622\u062E\u0631 \u0627\u0644\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0629
23
23
  M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=\u0644\u0627 \u062A\u0648\u062C\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0645\u0641\u0636\u0644\u0629
24
- M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=\u0642\u0645 \u0628\u0625\u0636\u0627\u0641\u0629 \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0625\u0644\u0649 \u0645\u0641\u0636\u0644\u062A\u0643
24
+ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=\u0642\u0645 \u0628\u0625\u0636\u0627\u0641\u0629 \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0625\u0644\u0649 \u0645\u0641\u0636\u0644\u062A\u0643.
25
25
  M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=\u0633\u064A\u062A\u0645 \u0639\u0631\u0636 \u0622\u062E\u0631 \u0627\u0644\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0629 \u0647\u0646\u0627.
26
26
  M_EASY_FILTER_POPOVER_AI_TITLE=\u062A\u0645 \u0627\u0644\u0625\u0646\u0634\u0627\u0621 \u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A
27
27
  M_EASY_FILTER_POPOVER_AI_TEXT_1=\u062A\u0645 \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u062D\u062A\u0648\u0649 \u062C\u0632\u0626\u064A\u064B\u0627 \u0623\u0648 \u0643\u0644\u064A\u064B\u0627 \u0628\u0648\u0627\u0633\u0637\u0629 \u062A\u0642\u0646\u064A\u0627\u062A \u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A (AI).
@@ -30,7 +30,7 @@ M_EASY_FILTER_POPOVER_CLOSE=\u0625\u063A\u0644\u0627\u0642
30
30
  M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=\u0644\u0627 \u062A\u0648\u062C\u062F \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0645\u0633\u062A\u062E\u062F\u0645\u0629 \u0645\u0624\u062E\u0631\u064B\u0627
31
31
  M_EASY_FILTER_FILLED_STAR=\u0625\u0632\u0627\u0644\u0629 \u0645\u0646 \u0627\u0644\u0645\u0641\u0636\u0644\u0629
32
32
  M_EASY_FILTER_EMPTY_START=\u0625\u0636\u0627\u0641\u0629 \u0625\u0644\u0649 \u0627\u0644\u0645\u0641\u0636\u0644\u0629
33
- T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u0644\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0627\u0644\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0648\u0622\u062E\u0631 \u0627\u0644\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u0629\u060C \u0627\u0636\u063A\u0637 \u0639\u0644\u0649 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0633\u0647\u0645 \u0644\u0623\u0633\u0641\u0644
33
+ T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u0644\u0644\u0627\u0646\u062A\u0642\u0627\u0644 \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0648\u0622\u062E\u0631 \u0627\u0633\u062A\u0639\u0644\u0627\u0645\u0627\u062A \u0645\u0633\u062A\u062E\u062F\u0645\u0629\u060C \u0627\u0636\u063A\u0637 \u0639\u0644\u0649 \u0627\u0644\u0645\u0641\u062A\u0627\u062D \u0633\u0647\u0645 \u0644\u0623\u0633\u0641\u0644
34
34
  M_EASY_FILTER_SINGLE_VALUE_MESSAGE=\u064A\u0645\u0643\u0646 \u062A\u0637\u0628\u064A\u0642 \u0642\u064A\u0645\u0629 \u0648\u0627\u062D\u062F\u0629 \u0641\u0642\u0637 \u0639\u0644\u0649 \u0627\u0644\u062A\u0627\u0644\u064A\: {0}
35
35
  C_SHORTCUT_TITLE=\u0627\u062E\u062A\u0635\u0627\u0631\u0627\u062A \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D
36
36
  C_SHORTCUT_PLACEHOLDER=\u0627\u0644\u0628\u062D\u062B \u0639\u0646 \u0627\u062E\u062A\u0635\u0627\u0631 \u0644\u0648\u062D\u0629 \u0645\u0641\u0627\u062A\u064A\u062D
@@ -14,14 +14,14 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Easy Filter
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=\u041D\u0430\u043F\u0440\u0430\u0432\u0435\u0442\u0435 easy filter \u043E\u043F\u0446\u0438\u044F\u0442\u0430 \u0437\u0430 \u0444\u0438\u043B\u0442\u0440\u0438\u0440\u0430\u043D\u0435 \u043F\u043E \u043F\u043E\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043D\u0435.
16
16
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=\u0421\u044A\u0445\u0440\u0430\u043D\u044F\u0432\u0430\u0439\u0442\u0435 \u201E\u041C\u043E\u0438\u0442\u0435 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F\u201C \u0432 easy filter \u0432 \u201E\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u043E \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u0438 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F\u201C
17
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=\u0412\u044A\u0432\u0435\u0434\u0435\u0442\u0435 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0437\u0430 \u043A\u0440\u0438\u0442\u0435\u0440\u0438\u0438\u0442\u0435 \u0437\u0430 \u0444\u0438\u043B\u0442\u0440\u0438\u0440\u0430\u043D\u0435
18
- M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(\u0418\u0437\u0431\u043E\u0440 \u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442)
17
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0437\u0430 \u0442\u043E\u0437\u0438 \u0437\u0430\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u0435\u043D \u0444\u0438\u043B\u0442\u044A\u0440.
18
+ M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442)
19
19
  M_EASY_FILTER_FILTER_SET_AI=\u0424\u0438\u043B\u0442\u0440\u0438\:
20
20
  M_EASY_FILTER_POPOVER_SUGGESTIONS_TITLE=\u041F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u0438\u044F, \u0441 \u043A\u043E\u0438\u0442\u043E \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0435\u0442\u0435
21
21
  M_EASY_FILTER_POPOVER_FAVORITE_TITLE=\u0417\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F \u0432\u044A\u0432 \u0424\u0430\u0432\u043E\u0440\u0438\u0442\u0438
22
22
  M_EASY_FILTER_POPOVER_LAST_USED=\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u043E \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u0438 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F
23
23
  M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=\u041D\u044F\u043C\u0430 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F \u0432\u044A\u0432 \u0424\u0430\u0432\u043E\u0440\u0438\u0442\u0438
24
- M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=\u0414\u043E\u0431\u0430\u0432\u0435\u0442\u0435 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F\u0442\u0430 \u0441\u0438 \u0432\u044A\u0432 \u0424\u0430\u0432\u043E\u0440\u0438\u0442\u0438
24
+ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=\u0414\u043E\u0431\u0430\u0432\u0435\u0442\u0435 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F\u0442\u0430 \u043A\u044A\u043C \u0432\u0430\u0448\u0438\u0442\u0435 \u0444\u0430\u0432\u043E\u0440\u0438\u0442\u0438.
25
25
  M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0442\u0435 \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u0438 \u043E\u0442 \u0432\u0430\u0441 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F \u0449\u0435 \u0431\u044A\u0434\u0430\u0442 \u043F\u043E\u043A\u0430\u0437\u0430\u043D\u0438 \u0442\u0443\u043A.
26
26
  M_EASY_FILTER_POPOVER_AI_TITLE=\u0421\u044A\u0437\u0434\u0430\u0434\u0435\u043D\u043E \u0441 AI
27
27
  M_EASY_FILTER_POPOVER_AI_TEXT_1=\u0422\u043E\u0432\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\u043D\u0438\u0435 \u0435 \u0447\u0430\u0441\u0442\u0438\u0447\u043D\u043E \u0438\u043B\u0438 \u0438\u0437\u0446\u044F\u043B\u043E \u0433\u0435\u043D\u0435\u0440\u0438\u0440\u0430\u043D\u043E \u0441 \u043F\u043E\u043C\u043E\u0449\u0442\u0430 \u043D\u0430 \u0438\u0437\u043A\u0443\u0441\u0442\u0432\u0435\u043D \u0438\u043D\u0442\u0435\u043B\u0435\u043A\u0442 (AI).
@@ -30,7 +30,7 @@ M_EASY_FILTER_POPOVER_CLOSE=\u0417\u0430\u0442\u0432\u0430\u0440\u044F\u043D\u04
30
30
  M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=\u041D\u044F\u043C\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u043E \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u0438 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F
31
31
  M_EASY_FILTER_FILLED_STAR=\u041F\u0440\u0435\u043C\u0430\u0445\u0432\u0430\u043D\u0435 \u043E\u0442 \u0444\u0430\u0432\u043E\u0440\u0438\u0442\u0438\u0442\u0435
32
32
  M_EASY_FILTER_EMPTY_START=\u0414\u043E\u0431\u0430\u0432\u044F\u043D\u0435 \u043A\u044A\u043C \u0444\u0430\u0432\u043E\u0440\u0438\u0442\u0438\u0442\u0435
33
- T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u0417\u0430 \u043F\u0440\u0435\u043C\u0438\u043D\u0430\u0432\u0430\u043D\u0435 \u043A\u044A\u043C \u0441\u043F\u0438\u0441\u044A\u043A\u0430 \u0441 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u043D\u0438 \u0438 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u043E \u043D\u0430\u043F\u0440\u0430\u0432\u0435\u043D\u0438 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F \u043D\u0430\u0442\u0438\u0441\u043D\u0435\u0442\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0430 \u0441\u044A\u0441 \u0441\u0442\u0440\u0435\u043B\u043A\u0430 \u043D\u0430\u0434\u043E\u043B\u0443
33
+ T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=\u0417\u0430 \u043F\u0440\u0435\u043C\u0438\u043D\u0430\u0432\u0430\u043D\u0435 \u043A\u044A\u043C \u0441\u043F\u0438\u0441\u044A\u043A\u0430 \u0441 \u043F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u043D\u0438 \u0438 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u043E \u0438\u0437\u043F\u043E\u043B\u0437\u0432\u0430\u043D\u0438 \u0437\u0430\u043F\u0438\u0442\u0432\u0430\u043D\u0438\u044F \u043D\u0430\u0442\u0438\u0441\u043D\u0435\u0442\u0435 \u043A\u043B\u0430\u0432\u0438\u0448\u0430 \u0441\u044A\u0441 \u0441\u0442\u0440\u0435\u043B\u043A\u0430 \u043D\u0430\u0434\u043E\u043B\u0443
34
34
  M_EASY_FILTER_SINGLE_VALUE_MESSAGE=\u0421\u0430\u043C\u043E \u0435\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u043C\u043E\u0436\u0435 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0430 \u043A\u044A\u043C \u0441\u043B\u0435\u0434\u043D\u043E\u0442\u043E\: {0}
35
35
  C_SHORTCUT_TITLE=\u041A\u043B\u0430\u0432\u0438\u0448\u043D\u0438 \u043A\u043E\u043C\u0431\u0438\u043D\u0430\u0446\u0438\u0438
36
36
  C_SHORTCUT_PLACEHOLDER=\u0422\u044A\u0440\u0441\u0435\u043D\u0435 \u043D\u0430 \u043A\u043B\u0430\u0432\u0438\u0448\u043D\u0430 \u043A\u043E\u043C\u0431\u0438\u043D\u0430\u0446\u0438\u044F
@@ -14,8 +14,8 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Filtre senzill
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=Fa que el filtre senzill sigui l'opci\u00F3 predeterminada de filtratge.
16
16
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Conserva les meves consultes recents al filtre senzill a "\u00DAltimes consultes utilitzades".
17
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Actualitzeu un valor per als criteris de filtre
18
- M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Seleccionar valor)
17
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Seleccioneu un valor per a aquest camp obligatori.
18
+ M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Seleccionar un valor)
19
19
  M_EASY_FILTER_FILTER_SET_AI=Filtres\:
20
20
  M_EASY_FILTER_POPOVER_SUGGESTIONS_TITLE=Suggeriments per comen\u00E7ar
21
21
  M_EASY_FILTER_POPOVER_FAVORITE_TITLE=Consultes preferides
@@ -14,14 +14,14 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Jednostavni filter
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=Postavite jednostavni filter kao podrazumijevanu opciju za filtriranje.
16
16
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Sa\u010Duvaj moje nedavne upite u jednostavnom filteru u dijelu Posljednje kori\u0161\u0107eni upiti.
17
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Odr\u017Eavajte vrijednost kriterijuma filtera
17
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Odaberite vrijednost za ovaj obavezni filter.
18
18
  M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Odaberi vrijednost)
19
19
  M_EASY_FILTER_FILTER_SET_AI=Filteri\:
20
20
  M_EASY_FILTER_POPOVER_SUGGESTIONS_TITLE=Predlozi za po\u010Detak
21
21
  M_EASY_FILTER_POPOVER_FAVORITE_TITLE=Omiljeni upiti
22
22
  M_EASY_FILTER_POPOVER_LAST_USED=Posljednje kori\u0161\u0107eni upiti
23
23
  M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=Nema omiljenih upita
24
- M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Dodajte upite u omiljene stavke
24
+ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Dodajte upite u omiljene stavke.
25
25
  M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=Posljednji upiti koje ste koristili bi\u0107e prikazani ovdje.
26
26
  M_EASY_FILTER_POPOVER_AI_TITLE=Kreirano pomo\u0107u vje\u0161ta\u010Dke inteligencije
27
27
  M_EASY_FILTER_POPOVER_AI_TEXT_1=Sadr\u017Eaj je djelimi\u010Dno ili u potpunosti generisan pomo\u0107u tehnologija vje\u0161ta\u010Dke inteligencije.
@@ -14,14 +14,14 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Snadn\u00FD filtr
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=Nastavte snadn\u00FD filtr jako standardn\u00ED mo\u017Enost filtrov\u00E1n\u00ED.
16
16
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Uchov\u00E1vejte m\u00E9 ned\u00E1vn\u00E9 dotazy ve snadn\u00E9m filtru pod Posledn\u00ED pou\u017Eit\u00E9 dotazy.
17
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Prove\u010Fte \u00FAdr\u017Ebu hodnoty pro krit\u00E9ria filtru
18
- M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Vybrat hodnotu)
17
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Vyberte hodnotu pro tento povinn\u00FD filtr.
18
+ M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Vyberte hodnotu)
19
19
  M_EASY_FILTER_FILTER_SET_AI=Filtry\:
20
20
  M_EASY_FILTER_POPOVER_SUGGESTIONS_TITLE=N\u00E1vrhy, jak za\u010D\u00EDt
21
21
  M_EASY_FILTER_POPOVER_FAVORITE_TITLE=Obl\u00EDben\u00E9 dotazy
22
22
  M_EASY_FILTER_POPOVER_LAST_USED=Posledn\u00ED pou\u017Eit\u00E9 dotazy
23
23
  M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=\u017D\u00E1dn\u00E9 obl\u00EDben\u00E9 dotazy
24
- M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=P\u0159idejte dotazy k va\u0161im obl\u00EDben\u00FDm
24
+ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=P\u0159idejte dotazy k va\u0161im obl\u00EDben\u00FDm.
25
25
  M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=Va\u0161e posledn\u00ED pou\u017Eit\u00E9 dotazy se zobraz\u00ED zde.
26
26
  M_EASY_FILTER_POPOVER_AI_TITLE=Vytvo\u0159eno pomoc\u00ED AI
27
27
  M_EASY_FILTER_POPOVER_AI_TEXT_1=Obsah byl \u010D\u00E1ste\u010Dn\u011B nebo zcela vytvo\u0159en pomoc\u00ED um\u011Bl\u00E9 inteligence (AI).
@@ -30,7 +30,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Zav\u0159\u00EDt
30
30
  M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Ne naposledy pou\u017Eit\u00E9 dotazy
31
31
  M_EASY_FILTER_FILLED_STAR=Odebrat z obl\u00EDben\u00FDch
32
32
  M_EASY_FILTER_EMPTY_START=P\u0159idat k obl\u00EDben\u00FDm
33
- T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Pro p\u0159echod k seznamu obl\u00EDben\u00FDch dotaz\u016F a k naposledy pou\u017Eit\u00FDm dotaz\u016Fm stiskn\u011Bte \u0161ipku dol\u016F
33
+ T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Pro p\u0159echod k seznamu obl\u00EDben\u00FDch dotaz\u016F a naposledy pou\u017Eit\u00FDch dotaz\u016F stiskn\u011Bte \u0161ipku dol\u016F
34
34
  M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Jen jednu jednotlivou hodnotu lze pou\u017E\u00EDt pro toto\: {0}
35
35
  C_SHORTCUT_TITLE=Kl\u00E1vesov\u00E9 zkratky
36
36
  C_SHORTCUT_PLACEHOLDER=Najd\u011Bte kl\u00E1vesovou zkratku
@@ -4,7 +4,7 @@ C_HISTORY_CLOSE=Cau
4
4
  M_EASY_FILTER_GO=Mynd
5
5
  M_EASY_FILTER_PLACEHOLDER=Rhowch eich ymholiad gan ddefnyddio iaith naturiol er mwyn hidlo'r rhestr
6
6
  M_EASY_FILTER_POPOVER_OK=Iawn
7
- M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=Dangos pob eitem
7
+ M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=Dangos Pob Eitem
8
8
  M_EASY_FILTER_MANDATORY_TOKEN_ITEMS={0} gwerth
9
9
  M_EASY_FILTER_RESET=Ailosod Hidlyddion
10
10
  M_EASY_FILTER_SELECTED_VALUES_TRUE=Iawn
@@ -14,20 +14,20 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=AI SAP Business
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Hidlydd syml
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=Gosod yr hidlydd syml fel yr opsiwn hidlo diofyn.
16
16
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Cadw fy ymholiadau diweddar yn yr hidlydd syml o dan yr Ymholiadau a Ddefnyddiwyd Ddiwethaf
17
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Cynnal gwerth ar gyfer y meini prawf hidlo
18
- M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Dewiswch Werth)
17
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Dewiswch werth ar gyfer yr hidlydd gorfodol hwn.
18
+ M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Dewis Gwerth)
19
19
  M_EASY_FILTER_FILTER_SET_AI=Hidlyddion\:
20
20
  M_EASY_FILTER_POPOVER_SUGGESTIONS_TITLE=Awgrymiadau i'ch helpu i ddechrau arni
21
21
  M_EASY_FILTER_POPOVER_FAVORITE_TITLE=Ychwanegu ymholiadau at Ffefrynnau
22
22
  M_EASY_FILTER_POPOVER_LAST_USED=Ymholiadau a ddefnyddiwyd ddiwethaf
23
23
  M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=Dim ymholiad wedi'i ychwanegu at Ffefrynnau
24
- M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Ychwanegu ymholiadau at Ffefrynnau
24
+ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Ychwanegu ymholiadau at eich Ffefrynnau.
25
25
  M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=Bydd yr ymholiad a ddefnyddiwyd ddiwethaf gennych yn ymddangos yma.
26
26
  M_EASY_FILTER_POPOVER_AI_TITLE=Wedi'i greu gydag AI.
27
27
  M_EASY_FILTER_POPOVER_AI_TEXT_1=Cafodd y cynnwys ei greu yn rhannol neu'n llawn gan dechnoleg deallusrwydd artiffisial (AI).
28
28
  M_EASY_FILTER_POPOVER_AI_TEXT_2=Gall y cynnwys a gr\u00EBwyd gan AI gynnwys anghywirdeb am ei fod wedi defnyddio mwy nag un ffynhonnell wybodaeth. Ewch ati i ddilysu'r canlyniadau cyn ei ddefnyddio.
29
29
  M_EASY_FILTER_POPOVER_CLOSE=Cau
30
- M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Dim Ymholiadau a Ddefnyddiwyd Ddiwethaf
30
+ M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Dim ymholiadau a ddefnyddiwyd ddiwethaf
31
31
  M_EASY_FILTER_FILLED_STAR=Tynnu o'r Ffefrynnau
32
32
  M_EASY_FILTER_EMPTY_START=Ychwanegu at y Ffefrynnau
33
33
  T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Er mwyn symud i'r rhestr o ymholiadau ffefryn ac ymholiadau a ddefnyddiwyd ddiwethaf, pwyswch yr allwedd SaethLawr
@@ -14,14 +14,14 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Nem filtrering
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=G\u00F8r den nemme filtrering til standardfiltreringsmuligheden.
16
16
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Behold mine seneste foresp\u00F8rgsler i den nemme filtrering under Senest brugte foresp\u00F8rgsler.
17
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Vedligehold en v\u00E6rdi for filterkriterierne
18
- M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(V\u00E6lg v\u00E6rdi)
17
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=V\u00E6lg en v\u00E6rdi for dette obligatoriske filter.
18
+ M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(V\u00E6lg en v\u00E6rdi)
19
19
  M_EASY_FILTER_FILTER_SET_AI=Filtre\:
20
20
  M_EASY_FILTER_POPOVER_SUGGESTIONS_TITLE=Forslag til at f\u00E5 dig godt i gang
21
21
  M_EASY_FILTER_POPOVER_FAVORITE_TITLE=Foretrukne foresp\u00F8rgsler
22
22
  M_EASY_FILTER_POPOVER_LAST_USED=Seneste brugte foresp\u00F8rgsler
23
23
  M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=Ingen foretrukne foresp\u00F8rgsler
24
- M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=F\u00F8j foresp\u00F8rgsler til dine foretrukne
24
+ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=F\u00F8j foresp\u00F8rgsler til dine foretrukne.
25
25
  M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=Dine senest brugte foresp\u00F8rgsler vises her.
26
26
  M_EASY_FILTER_POPOVER_AI_TITLE=Oprettet med AI
27
27
  M_EASY_FILTER_POPOVER_AI_TEXT_1=Indholdet blev delvist eller fuldst\u00E6ndigt genereret af teknologier med kunstig intelligens (AI).
@@ -30,7 +30,7 @@ M_EASY_FILTER_POPOVER_CLOSE=Luk
30
30
  M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Ingen senest brugte foresp\u00F8rgsler
31
31
  M_EASY_FILTER_FILLED_STAR=Fjern fra foretrukne
32
32
  M_EASY_FILTER_EMPTY_START=F\u00F8j til foretrukne
33
- T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Flyt til listen over foretrukne foresp\u00F8rgsler og sidst anvendte foresp\u00F8rgsler, og tryk p\u00E5 Pil ned
33
+ T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Tryk p\u00E5 Pil ned for at flytte til listen over foretrukne foresp\u00F8rgsler og sidst anvendte foresp\u00F8rgsler
34
34
  M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Kun en enkelt v\u00E6rdi kan anvendes p\u00E5 f\u00F8lgende\: {0}
35
35
  C_SHORTCUT_TITLE=Tastaturgenveje
36
36
  C_SHORTCUT_PLACEHOLDER=Find en tastaturgenvej
@@ -14,23 +14,23 @@ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=SAP Business AI
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Einfacher Filter
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=Stellen Sie den einfachen Filter als die Standard-Filteroption ein.
16
16
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Meine zuletzt verwendeten Anfragen im einfachen Filter unter 'Zuletzt verwendete Anfragen' beibehalten.
17
- M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Einen Wert f\u00FCr die Filterkriterien pflegen
18
- M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Wert ausw\u00E4hlen)
17
+ M_EASY_FILTER_MANDATORY_TOKEN_ERROR=Select a value for this mandatory filter.
18
+ M_EASY_FILTER_MANDATORY_TOKEN_SELECT_VALUE=(Select a Value)
19
19
  M_EASY_FILTER_FILTER_SET_AI=Filter\:
20
20
  M_EASY_FILTER_POPOVER_SUGGESTIONS_TITLE=Vorschl\u00E4ge f\u00FCr den Einstieg
21
21
  M_EASY_FILTER_POPOVER_FAVORITE_TITLE=Favoriten
22
22
  M_EASY_FILTER_POPOVER_LAST_USED=Zuletzt verwendete Anfragen
23
23
  M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_TITLE=Keine Favoriten
24
- M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Anfragen zu Favoriten hinzuf\u00FCgen
24
+ M_EASY_FILTER_POPOVER_EMPTY_FAVORITE_DESCRIPTION=Add queries to your favorites.
25
25
  M_EASY_FILTER_POPOVER_EMPTY_RECENT_DESCRIPTION=Ihre zuletzt verwendeten Anfragen werden hier angezeigt.
26
26
  M_EASY_FILTER_POPOVER_AI_TITLE=Mit KI erstellt
27
27
  M_EASY_FILTER_POPOVER_AI_TEXT_1=Dieser Inhalt wurde zum Teil oder vollst\u00E4ndig mit k\u00FCnstlicher Intelligenz (KI) generiert.
28
28
  M_EASY_FILTER_POPOVER_AI_TEXT_2=Die KI-generierten Inhalte k\u00F6nnen aufgrund der Verwendung mehrerer Informationsquellen Ungenauigkeiten enthalten. \u00DCberpr\u00FCfen Sie die Ergebnisse vor der Verwendung.
29
29
  M_EASY_FILTER_POPOVER_CLOSE=Schlie\u00DFen
30
- M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=Keine zuletzt verwendeten Anfragen
30
+ M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=No last used queries
31
31
  M_EASY_FILTER_FILLED_STAR=Aus Favoriten entfernen
32
32
  M_EASY_FILTER_EMPTY_START=Zu Favoriten hinzuf\u00FCgen
33
- T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=To move to the list of favorite queries and last used queries and press the ArrowDown key
33
+ T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=Um zu der Liste der Favoriten und zuletzt verwendeten Anfragen zu gelangen, dr\u00FCcken Sie die Taste "Pfeil nach unten".
34
34
  M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Es kann nur ein Einzelwert auf Folgendes angewandt werden\: {0}
35
35
  C_SHORTCUT_TITLE=Tastaturk\u00FCrzel
36
36
  C_SHORTCUT_PLACEHOLDER=Tastaturk\u00FCrzel suchen