@sapui5/sap.fe.controls 1.147.0 → 1.148.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -69,6 +69,7 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib,
69
69
  this.invalidOperatorTokenLabels = {};
70
70
  this.invalidProperty = {};
71
71
  this.hiddenFilterTokenLabels = [];
72
+ this.nonGroupableTokenLabels = [];
72
73
  this.propertyMapFreq = {};
73
74
  }
74
75
 
@@ -86,6 +87,9 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib,
86
87
  if (this.hiddenFilterTokenLabels.length > 0) {
87
88
  messages.push(this.resourceBundle.getText("M_EASY_FILTER_HIDDEN_FILTER", [`<strong>${this.hiddenFilterTokenLabels.join(", ")}</strong>`]));
88
89
  }
90
+ if (this.nonGroupableTokenLabels.length > 0) {
91
+ messages.push(this.resourceBundle.getText("M_EASY_FILTER_NON_GROUPABLE", [`${this.nonGroupableTokenLabels.join(", ")}`]));
92
+ }
89
93
  if (this.getInvalidOperatorLength() > 0) {
90
94
  Object.keys(this.invalidOperatorTokenLabels).forEach(operator => {
91
95
  if ((this.invalidOperatorTokenLabels[operator]?.length ?? 0) > 0) {
@@ -127,6 +131,20 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib,
127
131
  return true;
128
132
  }
129
133
 
134
+ /**
135
+ * This method checks if the filter property is groupable or not.
136
+ * @param filterCriteria Metadata of the filter property.
137
+ * @returns Whether the filter property is groupable or not.
138
+ */;
139
+ _proto.isGroupableProperty = function isGroupableProperty(filterCriteria) {
140
+ if (filterCriteria.groupable === false) {
141
+ const label = filterCriteria.label ?? filterCriteria.name;
142
+ this.nonGroupableTokenLabels.push(label);
143
+ return false;
144
+ }
145
+ return true;
146
+ }
147
+
130
148
  /**
131
149
  * This method validates the filter property and its value against the defined restrictions
132
150
  * @param filterCriteria it has metadata of the filter property
@@ -170,11 +188,11 @@ sap.ui.define(["sap/ui/core/Lib", "sap/ui/model/FilterOperator"], function (Lib,
170
188
  * @returns if there are any validation errors
171
189
  */;
172
190
  _proto.hasErrors = function hasErrors() {
173
- return this.getInvalidOperatorLength() > 0 || this.nonFilterableTokenLabels.length > 0 || this.hiddenFilterTokenLabels.length > 0 || this.invalidSingleItemTokenLabels.length > 0;
191
+ return this.getInvalidOperatorLength() > 0 || this.nonFilterableTokenLabels.length > 0 || this.hiddenFilterTokenLabels.length > 0 || this.nonGroupableTokenLabels.length > 0 || this.invalidSingleItemTokenLabels.length > 0;
174
192
  };
175
193
  return ErrorMessageHandler;
176
194
  }();
177
195
  _exports = ErrorMessageHandler;
178
196
  return _exports;
179
197
  }, false);
180
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvck1lc3NhZ2VIYW5kbGVyIiwiRklMVEVSUkVTVFJJQ1RJT05TIiwiU2luZ2xlVmFsdWUiLCJtdWx0aXBsZSIsIm9wZXJhdG9ycyIsIkZpbHRlck9wZXJhdG9yIiwiRVEiLCJNdWx0aVZhbHVlIiwiU2luZ2xlUmFuZ2UiLCJORSIsIkxFIiwiTFQiLCJHRSIsIkdUIiwiQlQiLCJOQiIsIk11bHRpUmFuZ2UiLCJTZWFyY2hFeHByZXNzaW9uIiwiU3RhcnRzV2l0aCIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwiTm90Q29udGFpbnMiLCJOb3RFbmRzV2l0aCIsIk11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb24iLCJTaW5nbGVJbnRlcnZhbCIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMiLCJpbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzIiwiaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHMiLCJpbnZhbGlkUHJvcGVydHkiLCJoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscyIsInByb3BlcnR5TWFwRnJlcSIsIl9leHBvcnRzIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0RXJyb3JNZXNzYWdlIiwibWVzc2FnZXMiLCJsZW5ndGgiLCJwdXNoIiwiZ2V0VGV4dCIsImpvaW4iLCJnZXRJbnZhbGlkT3BlcmF0b3JMZW5ndGgiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsIm9wZXJhdG9yIiwidG9VcHBlckNhc2UiLCJyZWR1Y2UiLCJhY2MiLCJrZXkiLCJpc0ZpbHRlcmFibGVQcm9wZXJ0eSIsImZpbHRlckNyaXRlcmlhIiwibmFtZSIsImxhYmVsIiwiZmlsdGVyYWJsZSIsImhpZGRlbkZpbHRlciIsInZhbGlkYXRlIiwiZmlsdGVyVmFsdWUiLCJmaWx0ZXJSZXN0cmljdGlvbiIsInJlc3RyaWN0aW9uIiwiaW5jbHVkZXMiLCJ2YWx1ZXMiLCJoYXNFcnJvcnMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVycm9yTWVzc2FnZUhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyRXhwcmVzc2lvbiB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5cbi8qKlxuICogVGhlIGBFcnJvck1lc3NhZ2VIYW5kbGVyYCBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYW5kIHZhbGlkYXRpbmcgZmlsdGVyLXJlbGF0ZWQgZXJyb3JzXG4gKiBpbiB0aGUgY29udGV4dCBvZiB0aGUgRWFzeSBGaWx0ZXIgY29udHJvbC4gSXQgcHJvdmlkZXMgbWVjaGFuaXNtcyB0byB2YWxpZGF0ZSBmaWx0ZXIgcHJvcGVydGllc1xuICogYW5kIHZhbHVlcywgY29uc3RydWN0IGVycm9yIG1lc3NhZ2VzLCBhbmQgdHJhY2sgaW52YWxpZCB0b2tlbnMgb3Igb3BlcmF0b3JzLlxuICpcbiAqIFRoaXMgY2xhc3MgZW5zdXJlcyB0aGF0IGZpbHRlciBjcml0ZXJpYSBhZGhlcmUgdG8gc3BlY2lmaWVkIHJlc3RyaWN0aW9ucywgc3VjaCBhcyBhbGxvd2VkIG9wZXJhdG9yc1xuICogYW5kIHNpbmdsZS9tdWx0aXBsZSB2YWx1ZSBjb25zdHJhaW50cy4gSXQgYWxzbyBpZGVudGlmaWVzIG5vbi1maWx0ZXJhYmxlIG9yIGhpZGRlbiBmaWx0ZXIgcHJvcGVydGllc1xuICogYW5kIGdlbmVyYXRlcyB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2VzIGZvciBpbnZhbGlkIGZpbHRlciBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBLZXkgRmVhdHVyZXM6XG4gKiAtIFZhbGlkYXRlcyBmaWx0ZXIgcHJvcGVydGllcyBhbmQgdmFsdWVzIGFnYWluc3QgZGVmaW5lZCByZXN0cmljdGlvbnMuXG4gKiAtIFRyYWNrcyBpbnZhbGlkIHRva2Vucywgb3BlcmF0b3JzLCBhbmQgcHJvcGVydGllcy5cbiAqIC0gQ29uc3RydWN0cyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcyBmb3IgaW52YWxpZCBmaWx0ZXIgY29uZmlndXJhdGlvbnMuXG4gKiAtIFByb3ZpZGVzIHV0aWxpdHkgbWV0aG9kcyB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIGZpbHRlcmFibGUgYW5kIGlmIHRoZXJlIGFyZSBhbnkgZXJyb3JzLlxuICpcbiAqIFVzYWdlOlxuICogLSBVc2UgYGlzRmlsdGVyYWJsZVByb3BlcnR5YCB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIGZpbHRlcmFibGUuXG4gKiAtIFVzZSBgdmFsaWRhdGVgIHRvIHZhbGlkYXRlIGEgZmlsdGVyIHByb3BlcnR5IGFuZCBpdHMgdmFsdWUuXG4gKiAtIFVzZSBgZ2V0RXJyb3JNZXNzYWdlYCB0byByZXRyaWV2ZSBhIGNvbnN0cnVjdGVkIGVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgdG9rZW5zLlxuICogLSBVc2UgYGhhc0Vycm9yc2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSB2YWxpZGF0aW9uIGVycm9ycy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXJyb3JNZXNzYWdlSGFuZGxlciB7XG5cdHByaXZhdGUgbm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHRwcml2YXRlIGhpZGRlbkZpbHRlclRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHQvL0NvbnRhaW5zIGxhYmVscyBvZiB0b2tlbnMgd2hpY2ggaGF2ZSBzaW5nbGUgaXRlbSByZXN0cmljdGlvbiB2aW9sYXRlZFxuXHRwcml2YXRlIGludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHM6IHN0cmluZ1tdO1xuXG5cdC8vQ29udGFpbnMgbGFiZWxzIG9mIHRva2VucyB3aGljaCBoYXZlIGludmFsaWQgb3BlcmF0b3IgdXNlZCBhcyBhIG1hcFxuXHRwcml2YXRlIGludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXSB8IHVuZGVmaW5lZD47IC8ve0dUOltTb2xkVG9QYXJ0eSwgUHVyY2hhc2VPcmRlcl0sIExUOlsuLi5dLCAuLi59XG5cblx0cHJpdmF0ZSBpbnZhbGlkUHJvcGVydHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyAvL3tzb2xkVG9QYXJ0eTogdHJ1ZX1cblxuXHRwcml2YXRlIHByb3BlcnR5TWFwRnJlcTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcblxuXHRwcml2YXRlIEZJTFRFUlJFU1RSSUNUSU9OUyA9IHtcblx0XHRTaW5nbGVWYWx1ZToge1xuXHRcdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdFx0b3BlcmF0b3JzOiBbRmlsdGVyT3BlcmF0b3IuRVFdXG5cdFx0fSxcblx0XHRNdWx0aVZhbHVlOiB7XG5cdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdG9wZXJhdG9yczogW0ZpbHRlck9wZXJhdG9yLkVRXVxuXHRcdH0sXG5cdFx0U2luZ2xlUmFuZ2U6IHtcblx0XHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHRcdG9wZXJhdG9yczogW1xuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5FUSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTkUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxFLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5MVCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR0UsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkdULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5CVCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTkJcblx0XHRcdF1cblx0XHR9LFxuXHRcdE11bHRpUmFuZ2U6IHtcblx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0b3BlcmF0b3JzOiBbXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTEUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5HRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkJULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5OQlxuXHRcdFx0XVxuXHRcdH0sXG5cdFx0U2VhcmNoRXhwcmVzc2lvbjoge1xuXHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRvcGVyYXRvcnM6IFtcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGhcblx0XHRcdF1cblx0XHR9LFxuXHRcdE11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb246IHtcblx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0b3BlcmF0b3JzOiBbXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTEUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5HRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkJULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5OQixcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGhcblx0XHRcdF1cblx0XHR9LFxuXHRcdFNpbmdsZUludGVydmFsOiB7XG5cdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdG9wZXJhdG9yczogW1xuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Db250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQlQsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLk5CLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5TdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5FbmRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGgsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5MRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkdFXG5cdFx0XHRdXG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzID0gW107XG5cdFx0dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzID0gW107XG5cdFx0dGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVscyA9IHt9O1xuXHRcdHRoaXMuaW52YWxpZFByb3BlcnR5ID0ge307XG5cdFx0dGhpcy5oaWRkZW5GaWx0ZXJUb2tlbkxhYmVscyA9IFtdO1xuXHRcdHRoaXMucHJvcGVydHlNYXBGcmVxID0ge307XG5cdH1cblxuXHQvKipcblx0ICogdGhpcyBtZXRob2QgY29uc3RydWN0cyB0aGUgZXJyb3IgbWVzc2FnZSBiYXNlZCBvbiB0aGUgaW52YWxpZCB0b2tlbnMgcHJlc2VudFxuXHQgKiBAcmV0dXJucyBUaGUgY29uc3RydWN0ZWQgZXJyb3IgbWVzc2FnZSBzdHJpbmdcblx0ICovXG5cblx0cHVibGljIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xuXHRcdGNvbnN0IG1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdFx0aWYgKHRoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdG1lc3NhZ2VzLnB1c2goXG5cdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfTk9OX0ZJTFRFUkFCTEVcIiwgW1xuXHRcdFx0XHRcdGA8c3Ryb25nPiR7dGhpcy5ub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9ISURERU5fRklMVEVSXCIsIFtgPHN0cm9uZz4ke3RoaXMuaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBdKVxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5nZXRJbnZhbGlkT3BlcmF0b3JMZW5ndGgoKSA+IDApIHtcblx0XHRcdE9iamVjdC5rZXlzKHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHMpLmZvckVhY2goKG9wZXJhdG9yKSA9PiB7XG5cdFx0XHRcdGlmICgodGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1tvcGVyYXRvcl0/Lmxlbmd0aCA/PyAwKSA+IDApIHtcblx0XHRcdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9PUEVSQVRPUlwiLCBbXG5cdFx0XHRcdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkZJTFRFUl9PUEVSQVRPUl9cIiArIG9wZXJhdG9yLnRvVXBwZXJDYXNlKCkpLFxuXHRcdFx0XHRcdFx0XHRgPHN0cm9uZz4keyh0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzW29wZXJhdG9yXSBhcyBzdHJpbmdbXSkuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBcblx0XHRcdFx0XHRcdF0pXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaW52YWxpZFNpbmdsZUl0ZW1Ub2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHR0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NJTkdMRV9SQU5HRVwiLCBbXG5cdFx0XHRcdFx0YDxzdHJvbmc+JHt0aGlzLmludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfTwvc3Ryb25nPmBcblx0XHRcdFx0XSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1lc3NhZ2VzLmpvaW4oXCI8YnI+XCIpO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRJbnZhbGlkT3BlcmF0b3JMZW5ndGgoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXModGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVscykucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuXHRcdFx0cmV0dXJuIGFjYyArICh0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzW2tleV0/Lmxlbmd0aCA/PyAwKTtcblx0XHR9LCAwKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCBjaGVja3MgaWYgdGhlIGZpbHRlciBwcm9wZXJ0eSBpcyBmaWx0ZXJhYmxlIG9yIG5vdFxuXHQgKiBAcGFyYW0gZmlsdGVyQ3JpdGVyaWEgaXQgaGFzIG1ldGFkYXRhIG9mIHRoZSBmaWx0ZXIgcHJvcGVydHlcblx0ICogQHJldHVybnMgaWYgdGhlIGZpbHRlciBwcm9wZXJ0eSBpcyBmaWx0ZXJhYmxlIG9yIG5vdFxuXHQgKi9cblxuXHRwdWJsaWMgaXNGaWx0ZXJhYmxlUHJvcGVydHkoZmlsdGVyQ3JpdGVyaWE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhKTogYm9vbGVhbiB7XG5cdFx0aWYgKHRoaXMuaW52YWxpZFByb3BlcnR5W2ZpbHRlckNyaXRlcmlhLm5hbWVdKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IGxhYmVsID0gZmlsdGVyQ3JpdGVyaWEubGFiZWwgfHwgZmlsdGVyQ3JpdGVyaWEubmFtZTtcblx0XHRpZiAoZmlsdGVyQ3JpdGVyaWEuZmlsdGVyYWJsZSA9PT0gZmFsc2UpIHtcblx0XHRcdHRoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLnB1c2gobGFiZWwpO1xuXHRcdFx0dGhpcy5pbnZhbGlkUHJvcGVydHlbZmlsdGVyQ3JpdGVyaWEubmFtZV0gPSB0cnVlO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmIChmaWx0ZXJDcml0ZXJpYS5oaWRkZW5GaWx0ZXIgPT09IHRydWUpIHtcblx0XHRcdHRoaXMuaW52YWxpZFByb3BlcnR5W2ZpbHRlckNyaXRlcmlhLm5hbWVdID0gdHJ1ZTtcblx0XHRcdHRoaXMuaGlkZGVuRmlsdGVyVG9rZW5MYWJlbHMucHVzaChsYWJlbCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgdmFsaWRhdGVzIHRoZSBmaWx0ZXIgcHJvcGVydHkgYW5kIGl0cyB2YWx1ZSBhZ2FpbnN0IHRoZSBkZWZpbmVkIHJlc3RyaWN0aW9uc1xuXHQgKiBAcGFyYW0gZmlsdGVyQ3JpdGVyaWEgaXQgaGFzIG1ldGFkYXRhIG9mIHRoZSBmaWx0ZXIgcHJvcGVydHlcblx0ICogQHBhcmFtIGZpbHRlclZhbHVlIGl0IGhhcyB0aGUgZmlsdGVyIHZhbHVlIGFuZCBvcGVyYXRvclxuXHQgKiBAcmV0dXJucyBpZiB0aGUgZmlsdGVyIHByb3BlcnR5IGFuZCBpdHMgdmFsdWUgYXJlIHZhbGlkIG9yIG5vdFxuXHQgKi9cblxuXHRwdWJsaWMgdmFsaWRhdGUoZmlsdGVyQ3JpdGVyaWE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhLCBmaWx0ZXJWYWx1ZTogRWFzeUZpbHRlckV4cHJlc3Npb24pOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy5pbnZhbGlkUHJvcGVydHlbZmlsdGVyQ3JpdGVyaWEubmFtZV0pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoZmlsdGVyQ3JpdGVyaWEuZmlsdGVyUmVzdHJpY3Rpb24pIHtcblx0XHRcdGNvbnN0IHJlc3RyaWN0aW9uID0gdGhpcy5GSUxURVJSRVNUUklDVElPTlNbZmlsdGVyQ3JpdGVyaWEuZmlsdGVyUmVzdHJpY3Rpb25dO1xuXHRcdFx0Y29uc3QgbmFtZSA9IGZpbHRlclZhbHVlLm5hbWU7XG5cdFx0XHRjb25zdCBsYWJlbCA9IGZpbHRlckNyaXRlcmlhLmxhYmVsIHx8IG5hbWU7XG5cdFx0XHRjb25zdCBvcGVyYXRvciA9IGZpbHRlclZhbHVlLm9wZXJhdG9yO1xuXG5cdFx0XHQvL0NoZWNrIGlmIGludmFsaWQgb3BlcmF0b3IgaGFzIGJlZW4gdXNlZFxuXHRcdFx0aWYgKCFyZXN0cmljdGlvbi5vcGVyYXRvcnMuaW5jbHVkZXMob3BlcmF0b3IpKSB7XG5cdFx0XHRcdGlmICghdGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1tvcGVyYXRvcl0pIHtcblx0XHRcdFx0XHR0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzW29wZXJhdG9yXSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHNbb3BlcmF0b3JdLnB1c2gobGFiZWwpO1xuXHRcdFx0XHR0aGlzLmludmFsaWRQcm9wZXJ0eVtuYW1lXSA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0Ly9DaGVjayBpZiBvbmx5IHNpbmdsZSB2YWx1ZSByZXN0cmljdGlvbiBpcyBwcmVzZW50XG5cdFx0XHQvL0lmIHRoZSBvcGVyYXRvciBpcyBvZiBCVCBvciBOQiB0eXBlLCB0aGVuIHdlIGNvbnNpZGVyIGl0IGFzIDEgdmFsdWVcblx0XHRcdHRoaXMucHJvcGVydHlNYXBGcmVxW25hbWVdID1cblx0XHRcdFx0KHRoaXMucHJvcGVydHlNYXBGcmVxW25hbWVdID8/IDApICtcblx0XHRcdFx0KG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5CVCB8fCBvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuTkIgPyAxIDogZmlsdGVyVmFsdWUudmFsdWVzLmxlbmd0aCk7XG5cblx0XHRcdGlmICghcmVzdHJpY3Rpb24ubXVsdGlwbGUgJiYgdGhpcy5wcm9wZXJ0eU1hcEZyZXFbZmlsdGVyVmFsdWUubmFtZV0gPiAxKSB7XG5cdFx0XHRcdHRoaXMuaW52YWxpZFNpbmdsZUl0ZW1Ub2tlbkxhYmVscy5wdXNoKGxhYmVsKTtcblx0XHRcdFx0dGhpcy5pbnZhbGlkUHJvcGVydHlbbmFtZV0gPSB0cnVlO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGVyZSBhcmUgYW55IHZhbGlkYXRpb24gZXJyb3JzIHByZXNlbnRcblx0ICogQHJldHVybnMgaWYgdGhlcmUgYXJlIGFueSB2YWxpZGF0aW9uIGVycm9yc1xuXHQgKi9cblxuXHRwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmdldEludmFsaWRPcGVyYXRvckxlbmd0aCgpID4gMCB8fFxuXHRcdFx0dGhpcy5ub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCB8fFxuXHRcdFx0dGhpcy5oaWRkZW5GaWx0ZXJUb2tlbkxhYmVscy5sZW5ndGggPiAwIHx8XG5cdFx0XHR0aGlzLmludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHMubGVuZ3RoID4gMFxuXHRcdCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7RUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFwQkEsSUFxQnFCQSxtQkFBbUI7SUF1R3ZDLFNBQUFBLG9CQUFBLEVBQWM7TUFsR2Q7TUFHQTtNQUMwRTtNQUV4QjtNQUFBLEtBSTFDQyxrQkFBa0IsR0FBRztRQUM1QkMsV0FBVyxFQUFFO1VBQ1pDLFFBQVEsRUFBRSxLQUFLO1VBQ2ZDLFNBQVMsRUFBRSxDQUFDQyxjQUFjLENBQUNDLEVBQUU7UUFDOUIsQ0FBQztRQUNEQyxVQUFVLEVBQUU7VUFDWEosUUFBUSxFQUFFLElBQUk7VUFDZEMsU0FBUyxFQUFFLENBQUNDLGNBQWMsQ0FBQ0MsRUFBRTtRQUM5QixDQUFDO1FBQ0RFLFdBQVcsRUFBRTtVQUNaTCxRQUFRLEVBQUUsS0FBSztVQUNmQyxTQUFTLEVBQUUsQ0FDVkMsY0FB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
198
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFcnJvck1lc3NhZ2VIYW5kbGVyIiwiRklMVEVSUkVTVFJJQ1RJT05TIiwiU2luZ2xlVmFsdWUiLCJtdWx0aXBsZSIsIm9wZXJhdG9ycyIsIkZpbHRlck9wZXJhdG9yIiwiRVEiLCJNdWx0aVZhbHVlIiwiU2luZ2xlUmFuZ2UiLCJORSIsIkxFIiwiTFQiLCJHRSIsIkdUIiwiQlQiLCJOQiIsIk11bHRpUmFuZ2UiLCJTZWFyY2hFeHByZXNzaW9uIiwiU3RhcnRzV2l0aCIsIkNvbnRhaW5zIiwiRW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwiTm90Q29udGFpbnMiLCJOb3RFbmRzV2l0aCIsIk11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb24iLCJTaW5nbGVJbnRlcnZhbCIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJub25GaWx0ZXJhYmxlVG9rZW5MYWJlbHMiLCJpbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzIiwiaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHMiLCJpbnZhbGlkUHJvcGVydHkiLCJoaWRkZW5GaWx0ZXJUb2tlbkxhYmVscyIsIm5vbkdyb3VwYWJsZVRva2VuTGFiZWxzIiwicHJvcGVydHlNYXBGcmVxIiwiX2V4cG9ydHMiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRFcnJvck1lc3NhZ2UiLCJtZXNzYWdlcyIsImxlbmd0aCIsInB1c2giLCJnZXRUZXh0Iiwiam9pbiIsImdldEludmFsaWRPcGVyYXRvckxlbmd0aCIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwib3BlcmF0b3IiLCJ0b1VwcGVyQ2FzZSIsInJlZHVjZSIsImFjYyIsImtleSIsImlzRmlsdGVyYWJsZVByb3BlcnR5IiwiZmlsdGVyQ3JpdGVyaWEiLCJuYW1lIiwibGFiZWwiLCJmaWx0ZXJhYmxlIiwiaGlkZGVuRmlsdGVyIiwiaXNHcm91cGFibGVQcm9wZXJ0eSIsImdyb3VwYWJsZSIsInZhbGlkYXRlIiwiZmlsdGVyVmFsdWUiLCJmaWx0ZXJSZXN0cmljdGlvbiIsInJlc3RyaWN0aW9uIiwiaW5jbHVkZXMiLCJ2YWx1ZXMiLCJoYXNFcnJvcnMiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVycm9yTWVzc2FnZUhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IHR5cGUgeyBFYXN5RmlsdGVyRXhwcmVzc2lvbiB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5cbi8qKlxuICogVGhlIGBFcnJvck1lc3NhZ2VIYW5kbGVyYCBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYW5kIHZhbGlkYXRpbmcgZmlsdGVyLXJlbGF0ZWQgZXJyb3JzXG4gKiBpbiB0aGUgY29udGV4dCBvZiB0aGUgRWFzeSBGaWx0ZXIgY29udHJvbC4gSXQgcHJvdmlkZXMgbWVjaGFuaXNtcyB0byB2YWxpZGF0ZSBmaWx0ZXIgcHJvcGVydGllc1xuICogYW5kIHZhbHVlcywgY29uc3RydWN0IGVycm9yIG1lc3NhZ2VzLCBhbmQgdHJhY2sgaW52YWxpZCB0b2tlbnMgb3Igb3BlcmF0b3JzLlxuICpcbiAqIFRoaXMgY2xhc3MgZW5zdXJlcyB0aGF0IGZpbHRlciBjcml0ZXJpYSBhZGhlcmUgdG8gc3BlY2lmaWVkIHJlc3RyaWN0aW9ucywgc3VjaCBhcyBhbGxvd2VkIG9wZXJhdG9yc1xuICogYW5kIHNpbmdsZS9tdWx0aXBsZSB2YWx1ZSBjb25zdHJhaW50cy4gSXQgYWxzbyBpZGVudGlmaWVzIG5vbi1maWx0ZXJhYmxlIG9yIGhpZGRlbiBmaWx0ZXIgcHJvcGVydGllc1xuICogYW5kIGdlbmVyYXRlcyB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2VzIGZvciBpbnZhbGlkIGZpbHRlciBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBLZXkgRmVhdHVyZXM6XG4gKiAtIFZhbGlkYXRlcyBmaWx0ZXIgcHJvcGVydGllcyBhbmQgdmFsdWVzIGFnYWluc3QgZGVmaW5lZCByZXN0cmljdGlvbnMuXG4gKiAtIFRyYWNrcyBpbnZhbGlkIHRva2Vucywgb3BlcmF0b3JzLCBhbmQgcHJvcGVydGllcy5cbiAqIC0gQ29uc3RydWN0cyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcyBmb3IgaW52YWxpZCBmaWx0ZXIgY29uZmlndXJhdGlvbnMuXG4gKiAtIFByb3ZpZGVzIHV0aWxpdHkgbWV0aG9kcyB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIGZpbHRlcmFibGUgYW5kIGlmIHRoZXJlIGFyZSBhbnkgZXJyb3JzLlxuICpcbiAqIFVzYWdlOlxuICogLSBVc2UgYGlzRmlsdGVyYWJsZVByb3BlcnR5YCB0byBjaGVjayBpZiBhIHByb3BlcnR5IGlzIGZpbHRlcmFibGUuXG4gKiAtIFVzZSBgdmFsaWRhdGVgIHRvIHZhbGlkYXRlIGEgZmlsdGVyIHByb3BlcnR5IGFuZCBpdHMgdmFsdWUuXG4gKiAtIFVzZSBgZ2V0RXJyb3JNZXNzYWdlYCB0byByZXRyaWV2ZSBhIGNvbnN0cnVjdGVkIGVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgdG9rZW5zLlxuICogLSBVc2UgYGhhc0Vycm9yc2AgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSB2YWxpZGF0aW9uIGVycm9ycy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXJyb3JNZXNzYWdlSGFuZGxlciB7XG5cdHByaXZhdGUgbm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHRwcml2YXRlIGhpZGRlbkZpbHRlclRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHRwcml2YXRlIG5vbkdyb3VwYWJsZVRva2VuTGFiZWxzOiBzdHJpbmdbXTtcblxuXHQvL0NvbnRhaW5zIGxhYmVscyBvZiB0b2tlbnMgd2hpY2ggaGF2ZSBzaW5nbGUgaXRlbSByZXN0cmljdGlvbiB2aW9sYXRlZFxuXHRwcml2YXRlIGludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHM6IHN0cmluZ1tdO1xuXG5cdC8vQ29udGFpbnMgbGFiZWxzIG9mIHRva2VucyB3aGljaCBoYXZlIGludmFsaWQgb3BlcmF0b3IgdXNlZCBhcyBhIG1hcFxuXHRwcml2YXRlIGludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXSB8IHVuZGVmaW5lZD47IC8ve0dUOltTb2xkVG9QYXJ0eSwgUHVyY2hhc2VPcmRlcl0sIExUOlsuLi5dLCAuLi59XG5cblx0cHJpdmF0ZSBpbnZhbGlkUHJvcGVydHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+OyAvL3tzb2xkVG9QYXJ0eTogdHJ1ZX1cblxuXHRwcml2YXRlIHByb3BlcnR5TWFwRnJlcTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcblxuXHRwcml2YXRlIEZJTFRFUlJFU1RSSUNUSU9OUyA9IHtcblx0XHRTaW5nbGVWYWx1ZToge1xuXHRcdFx0bXVsdGlwbGU6IGZhbHNlLFxuXHRcdFx0b3BlcmF0b3JzOiBbRmlsdGVyT3BlcmF0b3IuRVFdXG5cdFx0fSxcblx0XHRNdWx0aVZhbHVlOiB7XG5cdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdG9wZXJhdG9yczogW0ZpbHRlck9wZXJhdG9yLkVRXVxuXHRcdH0sXG5cdFx0U2luZ2xlUmFuZ2U6IHtcblx0XHRcdG11bHRpcGxlOiBmYWxzZSxcblx0XHRcdG9wZXJhdG9yczogW1xuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5FUSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTkUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxFLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5MVCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR0UsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkdULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5CVCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTkJcblx0XHRcdF1cblx0XHR9LFxuXHRcdE11bHRpUmFuZ2U6IHtcblx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0b3BlcmF0b3JzOiBbXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTEUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5HRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkJULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5OQlxuXHRcdFx0XVxuXHRcdH0sXG5cdFx0U2VhcmNoRXhwcmVzc2lvbjoge1xuXHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRvcGVyYXRvcnM6IFtcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGhcblx0XHRcdF1cblx0XHR9LFxuXHRcdE11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb246IHtcblx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0b3BlcmF0b3JzOiBbXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTEUsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5HRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkJULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5OQixcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQ29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RDb250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGhcblx0XHRcdF1cblx0XHR9LFxuXHRcdFNpbmdsZUludGVydmFsOiB7XG5cdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdG9wZXJhdG9yczogW1xuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Db250YWlucyxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnMsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkVRLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5ORSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuQlQsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLk5CLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5TdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoLFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5FbmRzV2l0aCxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGgsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkxULFxuXHRcdFx0XHRGaWx0ZXJPcGVyYXRvci5MRSxcblx0XHRcdFx0RmlsdGVyT3BlcmF0b3IuR1QsXG5cdFx0XHRcdEZpbHRlck9wZXJhdG9yLkdFXG5cdFx0XHRdXG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgcmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzID0gW107XG5cdFx0dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzID0gW107XG5cdFx0dGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVscyA9IHt9O1xuXHRcdHRoaXMuaW52YWxpZFByb3BlcnR5ID0ge307XG5cdFx0dGhpcy5oaWRkZW5GaWx0ZXJUb2tlbkxhYmVscyA9IFtdO1xuXHRcdHRoaXMubm9uR3JvdXBhYmxlVG9rZW5MYWJlbHMgPSBbXTtcblx0XHR0aGlzLnByb3BlcnR5TWFwRnJlcSA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIHRoaXMgbWV0aG9kIGNvbnN0cnVjdHMgdGhlIGVycm9yIG1lc3NhZ2UgYmFzZWQgb24gdGhlIGludmFsaWQgdG9rZW5zIHByZXNlbnRcblx0ICogQHJldHVybnMgVGhlIGNvbnN0cnVjdGVkIGVycm9yIG1lc3NhZ2Ugc3RyaW5nXG5cdCAqL1xuXG5cdHB1YmxpYyBnZXRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHtcblx0XHRjb25zdCBtZXNzYWdlczogc3RyaW5nW10gPSBbXTtcblxuXHRcdGlmICh0aGlzLm5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5sZW5ndGggPiAwKSB7XG5cdFx0XHRtZXNzYWdlcy5wdXNoKFxuXHRcdFx0XHR0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX05PTl9GSUxURVJBQkxFXCIsIFtcblx0XHRcdFx0XHRgPHN0cm9uZz4ke3RoaXMubm9uRmlsdGVyYWJsZVRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmhpZGRlbkZpbHRlclRva2VuTGFiZWxzLmxlbmd0aCA+IDApIHtcblx0XHRcdG1lc3NhZ2VzLnB1c2goXG5cdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfSElEREVOX0ZJTFRFUlwiLCBbYDxzdHJvbmc+JHt0aGlzLmhpZGRlbkZpbHRlclRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXSlcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMubm9uR3JvdXBhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0bWVzc2FnZXMucHVzaCh0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX05PTl9HUk9VUEFCTEVcIiwgW2Ake3RoaXMubm9uR3JvdXBhYmxlVG9rZW5MYWJlbHMuam9pbihcIiwgXCIpfWBdKSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZ2V0SW52YWxpZE9wZXJhdG9yTGVuZ3RoKCkgPiAwKSB7XG5cdFx0XHRPYmplY3Qua2V5cyh0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzKS5mb3JFYWNoKChvcGVyYXRvcikgPT4ge1xuXHRcdFx0XHRpZiAoKHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHNbb3BlcmF0b3JdPy5sZW5ndGggPz8gMCkgPiAwKSB7XG5cdFx0XHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfT1BFUkFUT1JcIiwgW1xuXHRcdFx0XHRcdFx0XHR0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJGSUxURVJfT1BFUkFUT1JfXCIgKyBvcGVyYXRvci50b1VwcGVyQ2FzZSgpKSxcblx0XHRcdFx0XHRcdFx0YDxzdHJvbmc+JHsodGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1tvcGVyYXRvcl0gYXMgc3RyaW5nW10pLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmludmFsaWRTaW5nbGVJdGVtVG9rZW5MYWJlbHMubGVuZ3RoID4gMCkge1xuXHRcdFx0bWVzc2FnZXMucHVzaChcblx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9TSU5HTEVfUkFOR0VcIiwgW1xuXHRcdFx0XHRcdGA8c3Ryb25nPiR7dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzLmpvaW4oXCIsIFwiKX08L3N0cm9uZz5gXG5cdFx0XHRcdF0pXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBtZXNzYWdlcy5qb2luKFwiPGJyPlwiKTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0SW52YWxpZE9wZXJhdG9yTGVuZ3RoKCk6IG51bWJlciB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHMpLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcblx0XHRcdHJldHVybiBhY2MgKyAodGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1trZXldPy5sZW5ndGggPz8gMCk7XG5cdFx0fSwgMCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZSBmaWx0ZXIgcHJvcGVydHkgaXMgZmlsdGVyYWJsZSBvciBub3Rcblx0ICogQHBhcmFtIGZpbHRlckNyaXRlcmlhIGl0IGhhcyBtZXRhZGF0YSBvZiB0aGUgZmlsdGVyIHByb3BlcnR5XG5cdCAqIEByZXR1cm5zIGlmIHRoZSBmaWx0ZXIgcHJvcGVydHkgaXMgZmlsdGVyYWJsZSBvciBub3Rcblx0ICovXG5cblx0cHVibGljIGlzRmlsdGVyYWJsZVByb3BlcnR5KGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmludmFsaWRQcm9wZXJ0eVtmaWx0ZXJDcml0ZXJpYS5uYW1lXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRjb25zdCBsYWJlbCA9IGZpbHRlckNyaXRlcmlhLmxhYmVsIHx8IGZpbHRlckNyaXRlcmlhLm5hbWU7XG5cdFx0aWYgKGZpbHRlckNyaXRlcmlhLmZpbHRlcmFibGUgPT09IGZhbHNlKSB7XG5cdFx0XHR0aGlzLm5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5wdXNoKGxhYmVsKTtcblx0XHRcdHRoaXMuaW52YWxpZFByb3BlcnR5W2ZpbHRlckNyaXRlcmlhLm5hbWVdID0gdHJ1ZTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoZmlsdGVyQ3JpdGVyaWEuaGlkZGVuRmlsdGVyID09PSB0cnVlKSB7XG5cdFx0XHR0aGlzLmludmFsaWRQcm9wZXJ0eVtmaWx0ZXJDcml0ZXJpYS5uYW1lXSA9IHRydWU7XG5cdFx0XHR0aGlzLmhpZGRlbkZpbHRlclRva2VuTGFiZWxzLnB1c2gobGFiZWwpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgZmlsdGVyIHByb3BlcnR5IGlzIGdyb3VwYWJsZSBvciBub3QuXG5cdCAqIEBwYXJhbSBmaWx0ZXJDcml0ZXJpYSBNZXRhZGF0YSBvZiB0aGUgZmlsdGVyIHByb3BlcnR5LlxuXHQgKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBmaWx0ZXIgcHJvcGVydHkgaXMgZ3JvdXBhYmxlIG9yIG5vdC5cblx0ICovXG5cdHB1YmxpYyBpc0dyb3VwYWJsZVByb3BlcnR5KGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSk6IGJvb2xlYW4ge1xuXHRcdGlmIChmaWx0ZXJDcml0ZXJpYS5ncm91cGFibGUgPT09IGZhbHNlKSB7XG5cdFx0XHRjb25zdCBsYWJlbCA9IGZpbHRlckNyaXRlcmlhLmxhYmVsID8/IGZpbHRlckNyaXRlcmlhLm5hbWU7XG5cdFx0XHR0aGlzLm5vbkdyb3VwYWJsZVRva2VuTGFiZWxzLnB1c2gobGFiZWwpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIG1ldGhvZCB2YWxpZGF0ZXMgdGhlIGZpbHRlciBwcm9wZXJ0eSBhbmQgaXRzIHZhbHVlIGFnYWluc3QgdGhlIGRlZmluZWQgcmVzdHJpY3Rpb25zXG5cdCAqIEBwYXJhbSBmaWx0ZXJDcml0ZXJpYSBpdCBoYXMgbWV0YWRhdGEgb2YgdGhlIGZpbHRlciBwcm9wZXJ0eVxuXHQgKiBAcGFyYW0gZmlsdGVyVmFsdWUgaXQgaGFzIHRoZSBmaWx0ZXIgdmFsdWUgYW5kIG9wZXJhdG9yXG5cdCAqIEByZXR1cm5zIGlmIHRoZSBmaWx0ZXIgcHJvcGVydHkgYW5kIGl0cyB2YWx1ZSBhcmUgdmFsaWQgb3Igbm90XG5cdCAqL1xuXG5cdHB1YmxpYyB2YWxpZGF0ZShmaWx0ZXJDcml0ZXJpYTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGEsIGZpbHRlclZhbHVlOiBFYXN5RmlsdGVyRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLmludmFsaWRQcm9wZXJ0eVtmaWx0ZXJDcml0ZXJpYS5uYW1lXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmIChmaWx0ZXJDcml0ZXJpYS5maWx0ZXJSZXN0cmljdGlvbikge1xuXHRcdFx0Y29uc3QgcmVzdHJpY3Rpb24gPSB0aGlzLkZJTFRFUlJFU1RSSUNUSU9OU1tmaWx0ZXJDcml0ZXJpYS5maWx0ZXJSZXN0cmljdGlvbl07XG5cdFx0XHRjb25zdCBuYW1lID0gZmlsdGVyVmFsdWUubmFtZTtcblx0XHRcdGNvbnN0IGxhYmVsID0gZmlsdGVyQ3JpdGVyaWEubGFiZWwgfHwgbmFtZTtcblx0XHRcdGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyVmFsdWUub3BlcmF0b3I7XG5cblx0XHRcdC8vQ2hlY2sgaWYgaW52YWxpZCBvcGVyYXRvciBoYXMgYmVlbiB1c2VkXG5cdFx0XHRpZiAoIXJlc3RyaWN0aW9uLm9wZXJhdG9ycy5pbmNsdWRlcyhvcGVyYXRvcikpIHtcblx0XHRcdFx0aWYgKCF0aGlzLmludmFsaWRPcGVyYXRvclRva2VuTGFiZWxzW29wZXJhdG9yXSkge1xuXHRcdFx0XHRcdHRoaXMuaW52YWxpZE9wZXJhdG9yVG9rZW5MYWJlbHNbb3BlcmF0b3JdID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5pbnZhbGlkT3BlcmF0b3JUb2tlbkxhYmVsc1tvcGVyYXRvcl0ucHVzaChsYWJlbCk7XG5cdFx0XHRcdHRoaXMuaW52YWxpZFByb3BlcnR5W25hbWVdID0gdHJ1ZTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHQvL0NoZWNrIGlmIG9ubHkgc2luZ2xlIHZhbHVlIHJlc3RyaWN0aW9uIGlzIHByZXNlbnRcblx0XHRcdC8vSWYgdGhlIG9wZXJhdG9yIGlzIG9mIEJUIG9yIE5CIHR5cGUsIHRoZW4gd2UgY29uc2lkZXIgaXQgYXMgMSB2YWx1ZVxuXHRcdFx0dGhpcy5wcm9wZXJ0eU1hcEZyZXFbbmFtZV0gPVxuXHRcdFx0XHQodGhpcy5wcm9wZXJ0eU1hcEZyZXFbbmFtZV0gPz8gMCkgK1xuXHRcdFx0XHQob3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQiA/IDEgOiBmaWx0ZXJWYWx1ZS52YWx1ZXMubGVuZ3RoKTtcblxuXHRcdFx0aWYgKCFyZXN0cmljdGlvbi5tdWx0aXBsZSAmJiB0aGlzLnByb3BlcnR5TWFwRnJlcVtmaWx0ZXJWYWx1ZS5uYW1lXSA+IDEpIHtcblx0XHRcdFx0dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzLnB1c2gobGFiZWwpO1xuXHRcdFx0XHR0aGlzLmludmFsaWRQcm9wZXJ0eVtuYW1lXSA9IHRydWU7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZXJlIGFyZSBhbnkgdmFsaWRhdGlvbiBlcnJvcnMgcHJlc2VudFxuXHQgKiBAcmV0dXJucyBpZiB0aGVyZSBhcmUgYW55IHZhbGlkYXRpb24gZXJyb3JzXG5cdCAqL1xuXG5cdHB1YmxpYyBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIChcblx0XHRcdHRoaXMuZ2V0SW52YWxpZE9wZXJhdG9yTGVuZ3RoKCkgPiAwIHx8XG5cdFx0XHR0aGlzLm5vbkZpbHRlcmFibGVUb2tlbkxhYmVscy5sZW5ndGggPiAwIHx8XG5cdFx0XHR0aGlzLmhpZGRlbkZpbHRlclRva2VuTGFiZWxzLmxlbmd0aCA+IDAgfHxcblx0XHRcdHRoaXMubm9uR3JvdXBhYmxlVG9rZW5MYWJlbHMubGVuZ3RoID4gMCB8fFxuXHRcdFx0dGhpcy5pbnZhbGlkU2luZ2xlSXRlbVRva2VuTGFiZWxzLmxlbmd0aCA+IDBcblx0XHQpO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0VBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBcEJBLElBcUJxQkEsbUJBQW1CO0lBeUd2QyxTQUFBQSxvQkFBQSxFQUFjO01BbEdkO01BR0E7TUFDMEU7TUFFeEI7TUFBQSxLQUkxQ0Msa0JBQWtCLEdBQUc7UUFDNUJDLFdBQVcsRUFBRTtVQUNaQyxRQUFRLEVBQUUsS0FBSztVQUNmQyxTQUFTLEVBQUUsQ0FBQ0MsY0FBYyxDQUFDQyxFQUFFO1FBQzlCLENBQUM7UUFDREMsVUFBVSxFQUFFO1VBQ1hKLFFBQVEsRUFBRSxJQUFJO1VBQ2RDLFNBQVMsRUFBRSxDQUFDQyxjQUFjLENBQUNDLEVBQUU7UUFDOUIsQ0FBQztRQUNERSxXQUFXLEVBQUU7VUFDWkwsUUFBUSxFQUFFLEtBQUs7VUFDZkMsU0FBUyxFQUFFLENBQ1ZDLGNB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
@@ -29,6 +29,8 @@ export default class ErrorMessageHandler {
29
29
 
30
30
  private hiddenFilterTokenLabels: string[];
31
31
 
32
+ private nonGroupableTokenLabels: string[];
33
+
32
34
  //Contains labels of tokens which have single item restriction violated
33
35
  private invalidSingleItemTokenLabels: string[];
34
36
 
@@ -133,6 +135,7 @@ export default class ErrorMessageHandler {
133
135
  this.invalidOperatorTokenLabels = {};
134
136
  this.invalidProperty = {};
135
137
  this.hiddenFilterTokenLabels = [];
138
+ this.nonGroupableTokenLabels = [];
136
139
  this.propertyMapFreq = {};
137
140
  }
138
141
 
@@ -158,6 +161,10 @@ export default class ErrorMessageHandler {
158
161
  );
159
162
  }
160
163
 
164
+ if (this.nonGroupableTokenLabels.length > 0) {
165
+ messages.push(this.resourceBundle.getText("M_EASY_FILTER_NON_GROUPABLE", [`${this.nonGroupableTokenLabels.join(", ")}`]));
166
+ }
167
+
161
168
  if (this.getInvalidOperatorLength() > 0) {
162
169
  Object.keys(this.invalidOperatorTokenLabels).forEach((operator) => {
163
170
  if ((this.invalidOperatorTokenLabels[operator]?.length ?? 0) > 0) {
@@ -214,6 +221,20 @@ export default class ErrorMessageHandler {
214
221
  return true;
215
222
  }
216
223
 
224
+ /**
225
+ * This method checks if the filter property is groupable or not.
226
+ * @param filterCriteria Metadata of the filter property.
227
+ * @returns Whether the filter property is groupable or not.
228
+ */
229
+ public isGroupableProperty(filterCriteria: EasyFilterPropertyMetadata): boolean {
230
+ if (filterCriteria.groupable === false) {
231
+ const label = filterCriteria.label ?? filterCriteria.name;
232
+ this.nonGroupableTokenLabels.push(label);
233
+ return false;
234
+ }
235
+ return true;
236
+ }
237
+
217
238
  /**
218
239
  * This method validates the filter property and its value against the defined restrictions
219
240
  * @param filterCriteria it has metadata of the filter property
@@ -267,6 +288,7 @@ export default class ErrorMessageHandler {
267
288
  this.getInvalidOperatorLength() > 0 ||
268
289
  this.nonFilterableTokenLabels.length > 0 ||
269
290
  this.hiddenFilterTokenLabels.length > 0 ||
291
+ this.nonGroupableTokenLabels.length > 0 ||
270
292
  this.invalidSingleItemTokenLabels.length > 0
271
293
  );
272
294
  }
@@ -5,6 +5,7 @@
5
5
  sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format/DateFormat", "sap/ui/model/FilterOperator", "sap/ui/model/odata/type/DateTimeOffset", "./ErrorMessageHandler"], function (deepEqual, Lib, DateFormat, FilterOperator, DateTimeOffset, ErrorMessageHandler) {
6
6
  "use strict";
7
7
 
8
+ var _exports = {};
8
9
  const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
9
10
  const dateTimeOffset = new DateTimeOffset();
10
11
  function areItemsSame(arr1, arr2) {
@@ -235,6 +236,16 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
235
236
  selectedValues: values
236
237
  };
237
238
  }
239
+
240
+ /**
241
+ * Extracts the plain property name from an OData-style path (e.g. "/SalesOrderManage/SoldToParty" → "SoldToParty").
242
+ * @param path The OData-style path or plain property name to resolve.
243
+ * @returns The last path segment, or the original string if no "/" is present.
244
+ */
245
+ function resolvePropertyName(path) {
246
+ return path.includes("/") ? path.split("/").filter(Boolean).pop() ?? path : path;
247
+ }
248
+ _exports.resolvePropertyName = resolvePropertyName;
238
249
  const EasyFilterUtils = {
239
250
  areItemsSame,
240
251
  areCodeListsSame,
@@ -244,8 +255,9 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
244
255
  mapOperatorForBetweenOperator,
245
256
  isBetweenSelectedValues,
246
257
  formatData,
247
- mapOperatorForValueHelp
258
+ mapOperatorForValueHelp,
259
+ resolvePropertyName
248
260
  };
249
261
  return EasyFilterUtils;
250
262
  }, false);
251
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsImZpcnN0VmFsdWUiLCJpbmRleCIsIm90aGVyVmFsdWUiLCJEYXRlIiwiZGVlcEVxdWFsIiwidmFsdWUiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRmlsdGVyT3BlcmF0b3IiLCJHVCIsIkxUIiwiR0UiLCJMRSIsIkVRIiwiQ29udGFpbnMiLCJFbmRzV2l0aCIsIlN0YXJ0c1dpdGgiLCJORSIsIk5vdENvbnRhaW5zIiwiTm90RW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwidG9TdHJpbmciLCJtYXBPcGVyYXRvckZvclZhbHVlSGVscCIsIm1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yIiwidmFsdWVzIiwibmV3VmFsdWUxIiwibmV3VmFsdWUyIiwiQlQiLCJpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyIsIk5CIiwiZ2V0VGV4dCIsImZvcm1hdERhdGEiLCJ0b2tlbnMiLCJmaWx0ZXJWYWx1ZXMiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsInNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMiLCJ2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zIiwiZXJyb3JNZXNzYWdlSGFuZGxlciIsIkVycm9yTWVzc2FnZUhhbmRsZXIiLCJmaWx0ZXJWYWx1ZSIsImZpbHRlckNyaXRlcmlhIiwiZmluZCIsImZpZWxkIiwibmFtZSIsImlzRmlsdGVyYWJsZVByb3BlcnR5IiwiaXNJblZhbGlkVG9rZW4iLCJ2YWxpZGF0ZSIsInVwZGF0ZVRva2VucyIsImhhc0Vycm9ycyIsImdldEVycm9yTWVzc2FnZSIsInRva2VuSW5kZXgiLCJmaW5kSW5kZXgiLCJ0b2tlbiIsImtleSIsImtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMiLCJjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwicHVzaCIsImxhYmVsIiwidHlwZSIsImJ1c3kiLCJjdXJyZW50VG9rZW4iLCJpc1JlcXVpcmVkIiwiRWFzeUZpbHRlclV0aWxzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgZGVlcEVxdWFsIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBFcXVhbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRGF0ZUZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L0RhdGVGb3JtYXRcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgRGF0ZVRpbWVPZmZzZXQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lT2Zmc2V0XCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJSZXN1bHQsIFByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Q29kZUxpc3RUeXBlLFxuXHRFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0VG9rZW5EZWZpbml0aW9uLFxuXHRUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbixcblx0VG9rZW5UeXBlLFxuXHRWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvblxufSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgRXJyb3JNZXNzYWdlSGFuZGxlciBmcm9tIFwiLi9FcnJvck1lc3NhZ2VIYW5kbGVyXCI7XG5cbnR5cGUgY29kZUxpc3RUeXBlID0gUHJvcGVydHlNZXRhZGF0YVtcImNvZGVMaXN0XCJdO1xudHlwZSBmaW5hbENvZGVMaXN0VHlwZSA9IHsgdmFsdWU6IFByaW1pdGl2ZVR5cGU7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH1bXTtcbmNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcbmNvbnN0IGRhdGVUaW1lT2Zmc2V0ID0gbmV3IERhdGVUaW1lT2Zmc2V0KCk7XG5cbmZ1bmN0aW9uIGFyZUl0ZW1zU2FtZShcblx0YXJyMTogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRhcnIyOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW11cbik6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeSgoZmlyc3RWYWx1ZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3RoZXJWYWx1ZSA9IGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBEYXRlIG9iamVjdHNcblx0XHRcdFx0aWYgKGZpcnN0VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IG90aGVyVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRlZXBFcXVhbChmaXJzdFZhbHVlLCBvdGhlclZhbHVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEhhbmRsZSBvYmplY3RzIHdpdGggZGVlcCBlcXVhbGl0eVxuXHRcdFx0XHRpZiAodHlwZW9mIGZpcnN0VmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG90aGVyVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGVlcEVxdWFsKGZpcnN0VmFsdWUudmFsdWUsIG90aGVyVmFsdWUudmFsdWUpICYmIGZpcnN0VmFsdWUuZGVzY3JpcHRpb24gPT09IG90aGVyVmFsdWUuZGVzY3JpcHRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGYWxsYmFjayB0byBkaXJlY3QgY29tcGFyaXNvblxuXHRcdFx0XHRyZXR1cm4gZmlyc3RWYWx1ZSA9PT0gb3RoZXJWYWx1ZTtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuZnVuY3Rpb24gYXJlQXJyYXlTYW1lKGFycjE6IHJlYWRvbmx5IHVua25vd25bXSwgYXJyMjogcmVhZG9ubHkgdW5rbm93bltdKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoYXJyMVtpXSAhPT0gYXJyMltpXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmVDb2RlTGlzdHNTYW1lKGFycjE6IGNvZGVMaXN0VHlwZSwgYXJyMjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IGFyck5ldzE6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIxKTtcblx0Y29uc3QgYXJyTmV3MjogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjIpO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXG5cdGNvbnN0IHZhbHVlMSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGNvbnN0IHZhbHVlMiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGlmICghZGVzY3JpcHRpb25OZXcxIHx8ICFkZXNjcmlwdGlvbk5ldzIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGFyZUFycmF5U2FtZShkZXNjcmlwdGlvbk5ldzEsIGRlc2NyaXB0aW9uTmV3MikgJiYgYXJlQXJyYXlTYW1lKHZhbHVlMSBhcyBQcmltaXRpdmVUeXBlLCB2YWx1ZTIgYXMgUHJpbWl0aXZlVHlwZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvZGVMaXN0QXJyYXkoYXJyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkPiB7XG5cdGlmICh0eXBlb2YgYXJyID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gYXJyKCk7XG5cdH1cblx0cmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZTogRGF0ZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRsZXQgZm9ybWF0dGVkRGF0ZVRpbWUgPSBcIlwiO1xuXHRpZiAoaXNEYXRlVGltZU9mZnNldCkge1xuXHRcdHJldHVybiBkYXRlVGltZU9mZnNldC5mb3JtYXRWYWx1ZSh2YWx1ZSwgXCJzdHJpbmdcIikgYXMgc3RyaW5nO1xuXHR9XG5cdHN3aXRjaCAodG9rZW5UeXBlKSB7XG5cdFx0Y2FzZSBcIkNhbGVuZGFyXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJUaW1lXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHRyZXR1cm4gZm9ybWF0dGVkRGF0ZVRpbWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvcGVyYXRvciBhbmQgdmFsdWUuXG4gKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByZXByZXNlbnRcbiAqIEBwYXJhbSB0b2tlblR5cGUgVGhlIHRva2VuJ3MgdHlwZVxuICogQHBhcmFtIGlzRGF0ZVRpbWVPZmZzZXQgQ2hlY2tzIGlmIHRoZSBkYXRhIHR5cGUgaXMgb2YgRGF0ZVRpbWVPZmZzZXRcbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBtYXBPcGVyYXRvcihcblx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuXHR2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWU6IG51bWJlciB8IHN0cmluZyA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlKTtcblx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWUsIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUgPSB2YWx1ZTtcblx0fVxuXG5cdHN3aXRjaCAob3BlcmF0b3IpIHtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdUOlxuXHRcdFx0cmV0dXJuIGA+ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxUOlxuXHRcdFx0cmV0dXJuIGA8ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdFOlxuXHRcdFx0cmV0dXJuIGA+PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5MRTpcblx0XHRcdHJldHVybiBgPD0gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRVE6XG5cdFx0XHRyZXR1cm4gYCR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkNvbnRhaW5zOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aDpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5FOlxuXHRcdFx0cmV0dXJuIGAhPSgke25ld1ZhbHVlfSlgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KilgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWV9KilgO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gbmV3VmFsdWU/LnRvU3RyaW5nKCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogQ29kZUxpc3RUeXBlLCB0b2tlblR5cGU6IFRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldDogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiBtYXBPcGVyYXRvcihvcGVyYXRvciwgdmFsdWUuZGVzY3JpcHRpb24sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzIHwgVmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHR0b2tlblR5cGU6IFRva2VuVHlwZSxcblx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuKTogc3RyaW5nIHtcblx0bGV0IG5ld1ZhbHVlMTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGxldCBuZXdWYWx1ZTI6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBcIlwiO1xuXHRpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZTEgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlc1swXSk7XG5cdH0gZWxzZSBpZiAodmFsdWVzWzBdIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWVzWzBdLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRuZXdWYWx1ZTEgPSB2YWx1ZXNbMF0uZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXTtcblx0fVxuXG5cdGlmICh0eXBlb2YgdmFsdWVzWzFdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMiA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzFdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMV0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMV0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMiA9IHZhbHVlc1sxXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdO1xuXHR9XG5cdGlmIChvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQpIHtcblx0XHRyZXR1cm4gYCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfWA7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfSlgO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQjtcbn1cblxuZnVuY3Rpb24gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiB2YWx1ZVxuXHRcdD8gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX1RSVUVcIilcblx0XHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NFTEVDVEVEX1ZBTFVFU19GQUxTRVwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGF0YShcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWVzOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdLFxuXHRmaWx0ZXJCYXJNZXRhZGF0YTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGFbXSxcblx0c2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVyczogKG1zZzogc3RyaW5nKSA9PiB2b2lkXG4pOiB2b2lkIHtcblx0aWYgKCFmaWx0ZXJWYWx1ZXMpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXHRjb25zdCBlcnJvck1lc3NhZ2VIYW5kbGVyID0gbmV3IEVycm9yTWVzc2FnZUhhbmRsZXIoKTtcblxuXHRmb3IgKGNvbnN0IGZpbHRlclZhbHVlIG9mIGZpbHRlclZhbHVlcykge1xuXHRcdGNvbnN0IGZpbHRlckNyaXRlcmlhID0gZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdGlmICghZmlsdGVyQ3JpdGVyaWEpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBub24tZmlsdGVyYWJsZSBhbmQgaGlkZGVuIGZpbHRlcnNcblx0XHRpZiAoIWVycm9yTWVzc2FnZUhhbmRsZXIuaXNGaWx0ZXJhYmxlUHJvcGVydHkoZmlsdGVyQ3JpdGVyaWEpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBWYWxpZGF0ZSBmb3IgZmlsdGVyIHZhbHVlIHJlc3RyaWN0aW9uXG5cdFx0Y29uc3QgaXNJblZhbGlkVG9rZW4gPSAhZXJyb3JNZXNzYWdlSGFuZGxlci52YWxpZGF0ZShmaWx0ZXJDcml0ZXJpYSwgZmlsdGVyVmFsdWUpO1xuXG5cdFx0Ly8gVXBkYXRlIHRva2Vuc1xuXHRcdHVwZGF0ZVRva2Vucyh0b2tlbnMsIGZpbHRlclZhbHVlLCBmaWx0ZXJDcml0ZXJpYSwgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VucywgaXNJblZhbGlkVG9rZW4pO1xuXHR9XG5cblx0Ly8gSGFuZGxlIHZhbGlkYXRpb24gbWVzc2FnZXNcblx0aWYgKGVycm9yTWVzc2FnZUhhbmRsZXIuaGFzRXJyb3JzKCkpIHtcblx0XHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKGVycm9yTWVzc2FnZUhhbmRsZXIuZ2V0RXJyb3JNZXNzYWdlKCkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRva2Vucyhcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWU6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl1bMF0sXG5cdGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sXG5cdGlzSW5WYWxpZFRva2VuOiBib29sZWFuXG4pOiB2b2lkIHtcblx0Y29uc3QgdG9rZW5JbmRleCA9IHRva2Vucy5maW5kSW5kZXgoKHRva2VuKSA9PiB0b2tlbi5rZXkgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRjb25zdCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gY3JlYXRlS2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyhmaWx0ZXJWYWx1ZSk7XG5cblx0aWYgKHRva2VuSW5kZXggPT09IC0xKSB7XG5cdFx0Ly8gQWRkIG5ldyB0b2tlblxuXHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdGtleTogZmlsdGVyVmFsdWUubmFtZSxcblx0XHRcdGxhYmVsOiBmaWx0ZXJDcml0ZXJpYS5sYWJlbCBhcyBzdHJpbmcsXG5cdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBpc0luVmFsaWRUb2tlbiA/IFtdIDogW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdLFxuXHRcdFx0dHlwZTogZmlsdGVyQ3JpdGVyaWEudHlwZSBhcyBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj4sXG5cdFx0XHRidXN5OiBmaWx0ZXJDcml0ZXJpYS50eXBlID09PSBcIlZhbHVlSGVscFwiXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gVXBkYXRlIGV4aXN0aW5nIHRva2VuXG5cdFx0Y29uc3QgY3VycmVudFRva2VuID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdGlmIChpc0luVmFsaWRUb2tlbikge1xuXHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBbXTtcblx0XHR9IGVsc2UgaWYgKChjdXJyZW50VG9rZW4uaXNSZXF1aXJlZCA/PyBmYWxzZSkgJiYgIXZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnNbY3VycmVudFRva2VuLmtleV0pIHtcblx0XHRcdGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdO1xuXHRcdFx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdChjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKS5wdXNoKGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKGZpbHRlclZhbHVlOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdWzBdKTogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24ge1xuXHRjb25zdCB7IG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGZpbHRlclZhbHVlO1xuXG5cdGlmIChFYXN5RmlsdGVyVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXNcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRvcGVyYXRvcjogb3BlcmF0b3IgYXMgRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj4sXG5cdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBzdHJpbmdbXSB8IERhdGVbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdH07XG59XG5cbmNvbnN0IEVhc3lGaWx0ZXJVdGlscyA9IHtcblx0YXJlSXRlbXNTYW1lLFxuXHRhcmVDb2RlTGlzdHNTYW1lLFxuXHRnZXRDb2RlTGlzdEFycmF5LFxuXHRhcmVBcnJheVNhbWUsXG5cdG1hcE9wZXJhdG9yLFxuXHRtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcixcblx0aXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdGZvcm1hdERhdGEsXG5cdG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFYXN5RmlsdGVyVXRpbHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFxQkEsTUFBTUEsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFFO0VBQ25FLE1BQU1DLGNBQWMsR0FBRyxJQUFJQyxjQUFjLENBQUMsQ0FBQztFQUUzQyxTQUFTQyxZQUFZQSxDQUNwQkMsSUFBb0YsRUFDcEZDLElBQW9GLEVBQzFFO0lBQ1YsSUFBSUQsSUFBSSxDQUFDRSxNQUFNLEtBQUtELElBQUksQ0FBQ0MsTUFBTSxFQUFFO01BQ2hDLE9BQU8sS0FBSztJQUNiOztJQUVBO0lBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILElBQUksQ0FBQ0UsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRTtNQUNyQyxJQUNDSCxJQUFJLENBQUNHLENBQUMsQ0FBQyxDQUFDQyxRQUFRLEtBQUtILElBQUksQ0FBQ0UsQ0FBQyxDQUFDLENBQUNDLFFBQVEsSUFDckMsQ0FBQ0osSUFBSSxDQUFDRyxDQUFDLENBQUMsQ0FBQ0UsY0FBYyxDQUFDQyxLQUFLLENBQUMsQ0FBQ0MsVUFBVSxFQUFFQyxLQUFLLEtBQUs7UUFDcEQsTUFBTUMsVUFBVSxHQUFHUixJQUFJLENBQUNFLENBQUMsQ0FB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
263
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsImZpcnN0VmFsdWUiLCJpbmRleCIsIm90aGVyVmFsdWUiLCJEYXRlIiwiZGVlcEVxdWFsIiwidmFsdWUiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRmlsdGVyT3BlcmF0b3IiLCJHVCIsIkxUIiwiR0UiLCJMRSIsIkVRIiwiQ29udGFpbnMiLCJFbmRzV2l0aCIsIlN0YXJ0c1dpdGgiLCJORSIsIk5vdENvbnRhaW5zIiwiTm90RW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwidG9TdHJpbmciLCJtYXBPcGVyYXRvckZvclZhbHVlSGVscCIsIm1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yIiwidmFsdWVzIiwibmV3VmFsdWUxIiwibmV3VmFsdWUyIiwiQlQiLCJpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyIsIk5CIiwiZ2V0VGV4dCIsImZvcm1hdERhdGEiLCJ0b2tlbnMiLCJmaWx0ZXJWYWx1ZXMiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsInNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMiLCJ2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zIiwiZXJyb3JNZXNzYWdlSGFuZGxlciIsIkVycm9yTWVzc2FnZUhhbmRsZXIiLCJmaWx0ZXJWYWx1ZSIsImZpbHRlckNyaXRlcmlhIiwiZmluZCIsImZpZWxkIiwibmFtZSIsImlzRmlsdGVyYWJsZVByb3BlcnR5IiwiaXNJblZhbGlkVG9rZW4iLCJ2YWxpZGF0ZSIsInVwZGF0ZVRva2VucyIsImhhc0Vycm9ycyIsImdldEVycm9yTWVzc2FnZSIsInRva2VuSW5kZXgiLCJmaW5kSW5kZXgiLCJ0b2tlbiIsImtleSIsImtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMiLCJjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwicHVzaCIsImxhYmVsIiwidHlwZSIsImJ1c3kiLCJjdXJyZW50VG9rZW4iLCJpc1JlcXVpcmVkIiwiRWFzeUZpbHRlclV0aWxzIiwicmVzb2x2ZVByb3BlcnR5TmFtZSIsInBhdGgiLCJpbmNsdWRlcyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsInBvcCIsIl9leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgZGVlcEVxdWFsIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBFcXVhbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRGF0ZUZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L0RhdGVGb3JtYXRcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgRGF0ZVRpbWVPZmZzZXQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lT2Zmc2V0XCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJSZXN1bHQsIFByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Q29kZUxpc3RUeXBlLFxuXHRFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0VG9rZW5EZWZpbml0aW9uLFxuXHRUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbixcblx0VG9rZW5UeXBlLFxuXHRWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvblxufSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgRXJyb3JNZXNzYWdlSGFuZGxlciBmcm9tIFwiLi9FcnJvck1lc3NhZ2VIYW5kbGVyXCI7XG5cbnR5cGUgY29kZUxpc3RUeXBlID0gUHJvcGVydHlNZXRhZGF0YVtcImNvZGVMaXN0XCJdO1xudHlwZSBmaW5hbENvZGVMaXN0VHlwZSA9IHsgdmFsdWU6IFByaW1pdGl2ZVR5cGU7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH1bXTtcbmNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcbmNvbnN0IGRhdGVUaW1lT2Zmc2V0ID0gbmV3IERhdGVUaW1lT2Zmc2V0KCk7XG5cbmZ1bmN0aW9uIGFyZUl0ZW1zU2FtZShcblx0YXJyMTogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRhcnIyOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW11cbik6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeSgoZmlyc3RWYWx1ZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3RoZXJWYWx1ZSA9IGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBEYXRlIG9iamVjdHNcblx0XHRcdFx0aWYgKGZpcnN0VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IG90aGVyVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRlZXBFcXVhbChmaXJzdFZhbHVlLCBvdGhlclZhbHVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEhhbmRsZSBvYmplY3RzIHdpdGggZGVlcCBlcXVhbGl0eVxuXHRcdFx0XHRpZiAodHlwZW9mIGZpcnN0VmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG90aGVyVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGVlcEVxdWFsKGZpcnN0VmFsdWUudmFsdWUsIG90aGVyVmFsdWUudmFsdWUpICYmIGZpcnN0VmFsdWUuZGVzY3JpcHRpb24gPT09IG90aGVyVmFsdWUuZGVzY3JpcHRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGYWxsYmFjayB0byBkaXJlY3QgY29tcGFyaXNvblxuXHRcdFx0XHRyZXR1cm4gZmlyc3RWYWx1ZSA9PT0gb3RoZXJWYWx1ZTtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuZnVuY3Rpb24gYXJlQXJyYXlTYW1lKGFycjE6IHJlYWRvbmx5IHVua25vd25bXSwgYXJyMjogcmVhZG9ubHkgdW5rbm93bltdKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoYXJyMVtpXSAhPT0gYXJyMltpXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmVDb2RlTGlzdHNTYW1lKGFycjE6IGNvZGVMaXN0VHlwZSwgYXJyMjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IGFyck5ldzE6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIxKTtcblx0Y29uc3QgYXJyTmV3MjogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjIpO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXG5cdGNvbnN0IHZhbHVlMSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGNvbnN0IHZhbHVlMiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGlmICghZGVzY3JpcHRpb25OZXcxIHx8ICFkZXNjcmlwdGlvbk5ldzIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGFyZUFycmF5U2FtZShkZXNjcmlwdGlvbk5ldzEsIGRlc2NyaXB0aW9uTmV3MikgJiYgYXJlQXJyYXlTYW1lKHZhbHVlMSBhcyBQcmltaXRpdmVUeXBlLCB2YWx1ZTIgYXMgUHJpbWl0aXZlVHlwZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvZGVMaXN0QXJyYXkoYXJyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkPiB7XG5cdGlmICh0eXBlb2YgYXJyID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gYXJyKCk7XG5cdH1cblx0cmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZTogRGF0ZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRsZXQgZm9ybWF0dGVkRGF0ZVRpbWUgPSBcIlwiO1xuXHRpZiAoaXNEYXRlVGltZU9mZnNldCkge1xuXHRcdHJldHVybiBkYXRlVGltZU9mZnNldC5mb3JtYXRWYWx1ZSh2YWx1ZSwgXCJzdHJpbmdcIikgYXMgc3RyaW5nO1xuXHR9XG5cdHN3aXRjaCAodG9rZW5UeXBlKSB7XG5cdFx0Y2FzZSBcIkNhbGVuZGFyXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJUaW1lXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHRyZXR1cm4gZm9ybWF0dGVkRGF0ZVRpbWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvcGVyYXRvciBhbmQgdmFsdWUuXG4gKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByZXByZXNlbnRcbiAqIEBwYXJhbSB0b2tlblR5cGUgVGhlIHRva2VuJ3MgdHlwZVxuICogQHBhcmFtIGlzRGF0ZVRpbWVPZmZzZXQgQ2hlY2tzIGlmIHRoZSBkYXRhIHR5cGUgaXMgb2YgRGF0ZVRpbWVPZmZzZXRcbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBtYXBPcGVyYXRvcihcblx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuXHR2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWU6IG51bWJlciB8IHN0cmluZyA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlKTtcblx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWUsIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUgPSB2YWx1ZTtcblx0fVxuXG5cdHN3aXRjaCAob3BlcmF0b3IpIHtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdUOlxuXHRcdFx0cmV0dXJuIGA+ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxUOlxuXHRcdFx0cmV0dXJuIGA8ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdFOlxuXHRcdFx0cmV0dXJuIGA+PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5MRTpcblx0XHRcdHJldHVybiBgPD0gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRVE6XG5cdFx0XHRyZXR1cm4gYCR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkNvbnRhaW5zOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aDpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5FOlxuXHRcdFx0cmV0dXJuIGAhPSgke25ld1ZhbHVlfSlgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KilgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWV9KilgO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gbmV3VmFsdWU/LnRvU3RyaW5nKCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogQ29kZUxpc3RUeXBlLCB0b2tlblR5cGU6IFRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldDogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiBtYXBPcGVyYXRvcihvcGVyYXRvciwgdmFsdWUuZGVzY3JpcHRpb24sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzIHwgVmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHR0b2tlblR5cGU6IFRva2VuVHlwZSxcblx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuKTogc3RyaW5nIHtcblx0bGV0IG5ld1ZhbHVlMTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGxldCBuZXdWYWx1ZTI6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBcIlwiO1xuXHRpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZTEgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlc1swXSk7XG5cdH0gZWxzZSBpZiAodmFsdWVzWzBdIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWVzWzBdLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRuZXdWYWx1ZTEgPSB2YWx1ZXNbMF0uZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXTtcblx0fVxuXG5cdGlmICh0eXBlb2YgdmFsdWVzWzFdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMiA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzFdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMV0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMV0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMiA9IHZhbHVlc1sxXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdO1xuXHR9XG5cdGlmIChvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQpIHtcblx0XHRyZXR1cm4gYCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfWA7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfSlgO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQjtcbn1cblxuZnVuY3Rpb24gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiB2YWx1ZVxuXHRcdD8gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX1RSVUVcIilcblx0XHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NFTEVDVEVEX1ZBTFVFU19GQUxTRVwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGF0YShcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWVzOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdLFxuXHRmaWx0ZXJCYXJNZXRhZGF0YTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGFbXSxcblx0c2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVyczogKG1zZzogc3RyaW5nKSA9PiB2b2lkXG4pOiB2b2lkIHtcblx0aWYgKCFmaWx0ZXJWYWx1ZXMpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXHRjb25zdCBlcnJvck1lc3NhZ2VIYW5kbGVyID0gbmV3IEVycm9yTWVzc2FnZUhhbmRsZXIoKTtcblxuXHRmb3IgKGNvbnN0IGZpbHRlclZhbHVlIG9mIGZpbHRlclZhbHVlcykge1xuXHRcdGNvbnN0IGZpbHRlckNyaXRlcmlhID0gZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdGlmICghZmlsdGVyQ3JpdGVyaWEpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBub24tZmlsdGVyYWJsZSBhbmQgaGlkZGVuIGZpbHRlcnNcblx0XHRpZiAoIWVycm9yTWVzc2FnZUhhbmRsZXIuaXNGaWx0ZXJhYmxlUHJvcGVydHkoZmlsdGVyQ3JpdGVyaWEpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBWYWxpZGF0ZSBmb3IgZmlsdGVyIHZhbHVlIHJlc3RyaWN0aW9uXG5cdFx0Y29uc3QgaXNJblZhbGlkVG9rZW4gPSAhZXJyb3JNZXNzYWdlSGFuZGxlci52YWxpZGF0ZShmaWx0ZXJDcml0ZXJpYSwgZmlsdGVyVmFsdWUpO1xuXG5cdFx0Ly8gVXBkYXRlIHRva2Vuc1xuXHRcdHVwZGF0ZVRva2Vucyh0b2tlbnMsIGZpbHRlclZhbHVlLCBmaWx0ZXJDcml0ZXJpYSwgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VucywgaXNJblZhbGlkVG9rZW4pO1xuXHR9XG5cblx0Ly8gSGFuZGxlIHZhbGlkYXRpb24gbWVzc2FnZXNcblx0aWYgKGVycm9yTWVzc2FnZUhhbmRsZXIuaGFzRXJyb3JzKCkpIHtcblx0XHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKGVycm9yTWVzc2FnZUhhbmRsZXIuZ2V0RXJyb3JNZXNzYWdlKCkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRva2Vucyhcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWU6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl1bMF0sXG5cdGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sXG5cdGlzSW5WYWxpZFRva2VuOiBib29sZWFuXG4pOiB2b2lkIHtcblx0Y29uc3QgdG9rZW5JbmRleCA9IHRva2Vucy5maW5kSW5kZXgoKHRva2VuKSA9PiB0b2tlbi5rZXkgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRjb25zdCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gY3JlYXRlS2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyhmaWx0ZXJWYWx1ZSk7XG5cblx0aWYgKHRva2VuSW5kZXggPT09IC0xKSB7XG5cdFx0Ly8gQWRkIG5ldyB0b2tlblxuXHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdGtleTogZmlsdGVyVmFsdWUubmFtZSxcblx0XHRcdGxhYmVsOiBmaWx0ZXJDcml0ZXJpYS5sYWJlbCBhcyBzdHJpbmcsXG5cdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBpc0luVmFsaWRUb2tlbiA/IFtdIDogW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdLFxuXHRcdFx0dHlwZTogZmlsdGVyQ3JpdGVyaWEudHlwZSBhcyBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj4sXG5cdFx0XHRidXN5OiBmaWx0ZXJDcml0ZXJpYS50eXBlID09PSBcIlZhbHVlSGVscFwiXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gVXBkYXRlIGV4aXN0aW5nIHRva2VuXG5cdFx0Y29uc3QgY3VycmVudFRva2VuID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdGlmIChpc0luVmFsaWRUb2tlbikge1xuXHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBbXTtcblx0XHR9IGVsc2UgaWYgKChjdXJyZW50VG9rZW4uaXNSZXF1aXJlZCA/PyBmYWxzZSkgJiYgIXZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnNbY3VycmVudFRva2VuLmtleV0pIHtcblx0XHRcdGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdO1xuXHRcdFx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdChjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKS5wdXNoKGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKGZpbHRlclZhbHVlOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdWzBdKTogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24ge1xuXHRjb25zdCB7IG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGZpbHRlclZhbHVlO1xuXG5cdGlmIChFYXN5RmlsdGVyVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXNcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRvcGVyYXRvcjogb3BlcmF0b3IgYXMgRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj4sXG5cdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBzdHJpbmdbXSB8IERhdGVbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdH07XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHBsYWluIHByb3BlcnR5IG5hbWUgZnJvbSBhbiBPRGF0YS1zdHlsZSBwYXRoIChlLmcuIFwiL1NhbGVzT3JkZXJNYW5hZ2UvU29sZFRvUGFydHlcIiDihpIgXCJTb2xkVG9QYXJ0eVwiKS5cbiAqIEBwYXJhbSBwYXRoIFRoZSBPRGF0YS1zdHlsZSBwYXRoIG9yIHBsYWluIHByb3BlcnR5IG5hbWUgdG8gcmVzb2x2ZS5cbiAqIEByZXR1cm5zIFRoZSBsYXN0IHBhdGggc2VnbWVudCwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyBpZiBubyBcIi9cIiBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVByb3BlcnR5TmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gcGF0aC5pbmNsdWRlcyhcIi9cIikgPyBwYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbikucG9wKCkgPz8gcGF0aCA6IHBhdGg7XG59XG5cbmNvbnN0IEVhc3lGaWx0ZXJVdGlscyA9IHtcblx0YXJlSXRlbXNTYW1lLFxuXHRhcmVDb2RlTGlzdHNTYW1lLFxuXHRnZXRDb2RlTGlzdEFycmF5LFxuXHRhcmVBcnJheVNhbWUsXG5cdG1hcE9wZXJhdG9yLFxuXHRtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcixcblx0aXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdGZvcm1hdERhdGEsXG5cdG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwLFxuXHRyZXNvbHZlUHJvcGVydHlOYW1lXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFYXN5RmlsdGVyVXRpbHM7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
@@ -297,6 +297,15 @@ function createKeySpecificSelectedValues(filterValue: EasyFilterResult["filter"]
297
297
  };
298
298
  }
299
299
 
300
+ /**
301
+ * Extracts the plain property name from an OData-style path (e.g. "/SalesOrderManage/SoldToParty" → "SoldToParty").
302
+ * @param path The OData-style path or plain property name to resolve.
303
+ * @returns The last path segment, or the original string if no "/" is present.
304
+ */
305
+ export function resolvePropertyName(path: string): string {
306
+ return path.includes("/") ? path.split("/").filter(Boolean).pop() ?? path : path;
307
+ }
308
+
300
309
  const EasyFilterUtils = {
301
310
  areItemsSame,
302
311
  areCodeListsSame,
@@ -306,7 +315,8 @@ const EasyFilterUtils = {
306
315
  mapOperatorForBetweenOperator,
307
316
  isBetweenSelectedValues,
308
317
  formatData,
309
- mapOperatorForValueHelp
318
+ mapOperatorForValueHelp,
319
+ resolvePropertyName
310
320
  };
311
321
 
312
322
  export default EasyFilterUtils;
@@ -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.147.0",
25
+ version: "1.148.1",
26
26
  noLibraryCSS: false
27
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
28
  });
@@ -17,6 +17,8 @@ M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=Show All Items
17
17
  M_EASY_FILTER_MANDATORY_TOKEN_ITEMS={0} values
18
18
  # XBUT
19
19
  M_EASY_FILTER_RESET=Reset Filters
20
+ # XMSG: Warning message when user tries to sort on non-sortable properties. Parameters: {0}= list of field names
21
+ M_EASY_FILTER_NON_SORTABLE=You can''t sort by {0}.
20
22
  # XFLD
21
23
  M_EASY_FILTER_SELECTED_VALUES_TRUE=Yes
22
24
  # XFLD
@@ -60,18 +62,30 @@ M_EASY_FILTER_POPOVER_EMPTY_LAST_USED_TITLE=No last used queries
60
62
  M_EASY_FILTER_FILLED_STAR=Remove from Favorites
61
63
  # XMSG
62
64
  M_EASY_FILTER_EMPTY_START=Add to Favorites
65
+ # XMSG: Tooltip shown on the add-favorite icon when the maximum number of favorite queries has been reached
66
+ M_EASY_FILTER_MAX_FAVORITE_REACHED=Favorite limit reached.
63
67
  # 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
64
68
  T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=To move to the list of favorite queries and last used queries, press the Arrow Down key
65
69
  # XMSG
66
70
  M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Only one single value can be applied to the following: {0}
67
71
  # 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
68
- M_EASY_FILTER_NON_FILTERABLE=This specific app doesn''t support filtering on {0}.
72
+ M_EASY_FILTER_NON_FILTERABLE=This app doesn''t support filtering by {0}.
69
73
  # 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
70
- M_EASY_FILTER_SINGLE_RANGE=Only one single condition can be applied to {0}.
74
+ M_EASY_FILTER_SINGLE_RANGE=You can apply only one condition to {0}.
71
75
  # 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
72
- M_EASY_FILTER_HIDDEN_FILTER=This specific app doesn''t support filtering on {0}.
76
+ M_EASY_FILTER_HIDDEN_FILTER=This app doesn''t support filtering by {0}.
73
77
  # 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
74
78
  M_EASY_FILTER_OPERATOR={0} is not a valid condition for: {1}
79
+ # XMSG: Warn the user that grouping is not supported for the given fields in this app
80
+ M_EASY_FILTER_NON_GROUPABLE=You can''t group by {0}.
81
+ # XMSG: Warn the user that only the first groupable field is applied when multiple group levels are requested
82
+ M_EASY_FILTER_MULTIPLE_GROUP_WARNING=Filters applied, but results grouped by {0} only. You can''t group by multiple properties.
83
+ # XMSG: Warn the user that this app does not support sorting
84
+ M_EASY_FILTER_SORTING_NOT_SUPPORTED=Filters applied, but this app doesn't support sorting.
85
+ # XMSG: Warn the user that this app does not support grouping
86
+ M_EASY_FILTER_GROUPING_NOT_SUPPORTED=Filters applied, but this app doesn't support grouping.
87
+ # XMSG: Warn the user that this app does not support sorting or grouping
88
+ M_EASY_FILTER_SORTING_AND_GROUPING_NOT_SUPPORTED=Filters applied, but this app doesn't support sorting or grouping.
75
89
  # XTIT: Title in the shell user menu to open the shortcut dialog and the dialog title
76
90
  C_SHORTCUT_TITLE=Keyboard Shortcuts
77
91
  # XMSG,30: Placeholder message for the keyboard interaction input field
@@ -9,7 +9,7 @@ M_EASY_FILTER_MANDATORY_TOKEN_ITEMS={0} Werte
9
9
  M_EASY_FILTER_RESET=Filter zur\u00FCcksetzen
10
10
  M_EASY_FILTER_SELECTED_VALUES_TRUE=Ja
11
11
  M_EASY_FILTER_SELECTED_VALUES_FALSE=Nein
12
- M_BUSINESS_AI_SHELL_SETTINGS_TITLE=AI Settings
12
+ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=KI-Einstellungen
13
13
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Einfacher Filter
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=Stellen Sie den einfachen Filter als die Standard-Filteroption ein.
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Meine zuletzt verwendeten Anfragen im einfachen Filter unter 'Zuletzt verwendete Anfragen' beibehalten.
@@ -7,6 +7,7 @@ M_EASY_FILTER_POPOVER_OK=\u206A\u206A\u206A\u200D\u200D\u200B\u200B\u200C\u200C\
7
7
  M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200D\u200B\u200B\u200C\u200C\u200B\u200B\u200D\u200B\u200D\u200D\u200C\u200B\u200C\u200B\u200B\u200D\u200C\u200D\u200B\u200D\u200D\u200D\u200B\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200B\u200C\u200C\u200D\u200C\u200B\u206AShow All Items\u206A\u206A
8
8
  M_EASY_FILTER_MANDATORY_TOKEN_ITEMS=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200C\u200B\u200D\u200C\u200C\u200B\u200C\u200D\u200D\u200B\u200B\u200D\u200C\u200B\u200D\u200D\u200B\u200B\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200B\u206A\u200B\u200B\u200B{0}\u200C\u200C\u200C values\u206A\u206A
9
9
  M_EASY_FILTER_RESET=\u206A\u206A\u206A\u200D\u200B\u200C\u200D\u200D\u200B\u200B\u200B\u200D\u200B\u200C\u200D\u200C\u200D\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200B\u200C\u200B\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200D\u200D\u200B\u200B\u200B\u200B\u200B\u200C\u200D\u206AReset Filters\u206A\u206A
10
+ M_EASY_FILTER_NON_SORTABLE=\u206A\u206A\u206A\u200C\u200B\u200D\u200B\u200D\u200D\u200B\u200C\u200C\u200D\u200B\u200D\u200C\u200D\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200C\u200B\u200D\u200D\u200D\u200D\u200B\u200D\u200C\u200D\u200B\u200D\u200B\u200C\u200D\u200C\u200B\u200C\u206AYou can''t sort by \u200B\u200B\u200B{0}\u200C\u200C\u200C.\u206A\u206A
10
11
  M_EASY_FILTER_SELECTED_VALUES_TRUE=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u200B\u200C\u200B\u200D\u200D\u200C\u200C\u200B\u200D\u200D\u200C\u200C\u200B\u200D\u200B\u200C\u200C\u200B\u200B\u200C\u200C\u200C\u200D\u200D\u200D\u200D\u200C\u200B\u200C\u200D\u206AYes\u206A\u206A
11
12
  M_EASY_FILTER_SELECTED_VALUES_FALSE=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200B\u200D\u200B\u200C\u200D\u200C\u200D\u200D\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200C\u200D\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200C\u200D\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200D\u200D\u200B\u206ANo\u206A\u206A
12
13
  M_BUSINESS_AI_SHELL_SETTINGS_TITLE=\u206A\u206A\u206A\u200C\u200D\u200D\u200D\u200D\u200B\u200B\u200D\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u200B\u200C\u200C\u200C\u200D\u200C\u200D\u200C\u200D\u200D\u200D\u200B\u200C\u200D\u200D\u200B\u200B\u200D\u200B\u200B\u200D\u200B\u200C\u200D\u200B\u206AAI Settings\u206A\u206A
@@ -35,6 +36,8 @@ M_EASY_FILTER_NON_FILTERABLE=\u206A\u206A\u206A\u200C\u200B\u200C\u200C\u200D\u2
35
36
  M_EASY_FILTER_SINGLE_RANGE=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200C\u200B\u200D\u200B\u200D\u200C\u200B\u200D\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200B\u200C\u200D\u200C\u200B\u200B\u200B\u200B\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200B\u200D\u200D\u206AOnly one single condition can be applied to \u200B\u200B\u200B{0}\u200C\u200C\u200C.\u206A\u206A
36
37
  M_EASY_FILTER_HIDDEN_FILTER=\u206A\u206A\u206A\u200C\u200C\u200C\u200B\u200D\u200D\u200C\u200B\u200D\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200C\u200D\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200D\u200D\u200C\u200C\u206AThis specific app doesn''t support filtering on \u200B\u200B\u200B{0}\u200C\u200C\u200C.\u206A\u206A
37
38
  M_EASY_FILTER_OPERATOR=\u206A\u206A\u206A\u200C\u200D\u200B\u200B\u200C\u200B\u200C\u200D\u200D\u200C\u200B\u200B\u200B\u200B\u200D\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200D\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u200C\u200D\u200C\u200B\u200D\u200B\u200C\u200D\u200D\u200D\u206A\u200B\u200B\u200B{0}\u200C\u200C\u200C is not a valid condition for\: \u200B\u200B\u200B{1}\u200C\u200C\u200C\u206A\u206A
39
+ M_EASY_FILTER_NON_GROUPABLE=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200C\u200B\u200B\u200C\u200B\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200C\u200D\u200D\u200D\u200D\u200C\u200C\u200D\u200C\u206AYou can''t group by \u200B\u200B\u200B{0}\u200C\u200C\u200C.\u206A\u206A
40
+ M_EASY_FILTER_MULTIPLE_GROUP_WARNING=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200B\u200C\u200D\u200C\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200D\u200D\u200B\u200B\u200C\u200B\u200D\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200C\u200D\u200B\u200B\u200B\u200D\u200C\u206AFilters applied, but results grouped by \u200B\u200B\u200B{0}\u200C\u200C\u200C only. You can''t group by multiple properties.\u206A\u206A
38
41
  C_SHORTCUT_TITLE=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200B\u200C\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200B\u200B\u200B\u200C\u200D\u200D\u200D\u200B\u200B\u200C\u200C\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u206AKeyboard Shortcuts\u206A\u206A
39
42
  C_SHORTCUT_PLACEHOLDER=\u206A\u206A\u206A\u200C\u200D\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200C\u200B\u200B\u200D\u200B\u200C\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200B\u200D\u200B\u200D\u200C\u200D\u200B\u200B\u200B\u200B\u200B\u200B\u200B\u200B\u200D\u200B\u200D\u206AFind a keyboard shortcut\u206A\u206A
40
43
 
@@ -18,7 +18,11 @@
18
18
 
19
19
  .sapFeEasyFillPreviousValue {
20
20
  padding: 0 !important;
21
- color: var(--sapContent_LabelColor) !important;
21
+ }
22
+
23
+ .sapFeEasyFillPreviousValue::before {
24
+ content: attr(data-label);
25
+ color: var(--sapContent_LabelColor);
22
26
  }
23
27
 
24
28
  .sapFeEasyFillDialog .sapUiFormCLContainer {
@@ -28,3 +32,23 @@
28
32
  .sapFeEasyFillDialog .sapUiFormCL.sapUiFormCLSmallColumns .sapUiFormCLElement > .sapUiFormCLCellsS6 {
29
33
  width: 100% !important;
30
34
  }
35
+
36
+ #easyFillObjectPageLayout {
37
+ min-width: 20rem;
38
+ }
39
+
40
+ #easyFillObjectPageLayout-spacer {
41
+ display: none !important;
42
+ }
43
+
44
+ .sapUiEasyFillPreviewTable {
45
+ border-radius: 0.5rem;
46
+ border: 1px solid var(--sapList_BorderColor, #e5e5e5);
47
+ }
48
+ .sapUiEasyFillPreviewTable .sapMListTblRow:first-child {
49
+ border-top: none;
50
+ }
51
+ .sapUiEasyFillWarningCell .sapMInputBaseContentWrapper {
52
+ background-color: var(--sapField_WarningBackground, #fff3b0) !important;
53
+ border-color: var(--sapField_WarningColor, #e9730c) !important;
54
+ }
@@ -24,7 +24,6 @@
24
24
  }
25
25
 
26
26
  .sapFEControlsSuggestionsContainer {
27
-
28
27
  .sapMFlexItem {
29
28
  white-space: nowrap;
30
29
  overflow: hidden;
@@ -42,6 +41,7 @@
42
41
  }
43
42
  }
44
43
  }
44
+
45
45
  .sapUiMedia-DeviceSet-small .sapFEControlsPopover {
46
46
  margin-right: 1rem;
47
47
  left: 1rem !important;
@@ -57,7 +57,6 @@
57
57
  }
58
58
 
59
59
  @media (min-width: 600px) and (max-width: 1439px) {
60
-
61
60
  .sapFEControlsPopover {
62
61
  left: 2rem !important;
63
62
  }
@@ -74,7 +73,6 @@
74
73
  }
75
74
 
76
75
  html.sap-desktop .sapMTokenizer.sapFeControlsTokenizer {
77
-
78
76
  &:focus {
79
77
  outline: none;
80
78
  }
@@ -98,4 +96,10 @@ html.sap-desktop .sapMTokenizer.sapFeControlsTokenizer {
98
96
 
99
97
  .sapFEEasyFilterInput {
100
98
  width: 100%;
101
- }
99
+ }
100
+
101
+ .sapFEFavoriteIconDisabled {
102
+ [aria-label="Show Value Help"] {
103
+ opacity: 0.4;
104
+ }
105
+ }