@sapui5/sap.fe.core 1.114.1 → 1.114.2

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 (32) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/ActionRuntime-dbg.js +3 -2
  4. package/src/sap/fe/core/ActionRuntime.js +1 -1
  5. package/src/sap/fe/core/ActionRuntime.js.map +1 -1
  6. package/src/sap/fe/core/ActionRuntime.ts +2 -3
  7. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +5 -3
  8. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
  9. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
  10. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +4 -2
  11. package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +9 -4
  12. package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
  13. package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
  14. package/src/sap/fe/core/converters/controls/Common/Chart.ts +18 -7
  15. package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +26 -24
  16. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
  17. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
  18. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -27
  19. package/src/sap/fe/core/converters/helpers/InsightsHelpers-dbg.js +5 -1
  20. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +1 -1
  21. package/src/sap/fe/core/converters/helpers/InsightsHelpers.js.map +1 -1
  22. package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +4 -0
  23. package/src/sap/fe/core/fpm/manifest.json +1 -1
  24. package/src/sap/fe/core/helpers/RecommendationHelper-dbg.js +16 -1
  25. package/src/sap/fe/core/helpers/RecommendationHelper.js +1 -1
  26. package/src/sap/fe/core/helpers/RecommendationHelper.js.map +1 -1
  27. package/src/sap/fe/core/helpers/RecommendationHelper.ts +20 -0
  28. package/src/sap/fe/core/library-dbg.js +1 -1
  29. package/src/sap/fe/core/library-preload.js +9 -9
  30. package/src/sap/fe/core/library-preload.js.map +1 -1
  31. package/src/sap/fe/core/library.js +1 -1
  32. package/src/sap/fe/core/manifest.json +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.114.1",
3
+ "version": "1.114.2",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.114.1</version>
9
+ <version>1.114.2</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -53,7 +53,8 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/he
53
53
  } else if (requiredParameterInfo.isMultiValue) {
54
54
  return requiredParameterInfo.value === undefined || !requiredParameterInfo.value.length;
55
55
  } else {
56
- return requiredParameterInfo.value === undefined || requiredParameterInfo.value === null || requiredParameterInfo.value === "";
56
+ const fieldValue = requiredParameterInfo.field.getValue();
57
+ return fieldValue === undefined || fieldValue === null || fieldValue === "";
57
58
  }
58
59
  });
59
60
  /* Message for missing mandatory value of the action parameter */
@@ -243,4 +244,4 @@ sap.ui.define(["sap/base/util/merge", "sap/fe/core/CommonUtils", "sap/fe/core/he
243
244
  };
244
245
  return ActionRuntime;
245
246
  }, false);
246
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25SdW50aW1lIiwiX2FkZE1lc3NhZ2VGb3JBY3Rpb25QYXJhbWV0ZXIiLCJtZXNzYWdlTWFuYWdlciIsIm1lc3NhZ2VQYXJhbWV0ZXJzIiwiYWRkTWVzc2FnZXMiLCJtYXAiLCJtZXNzYWdlUGFyYW1ldGVyIiwiYmluZGluZyIsImFjdGlvblBhcmFtZXRlckluZm8iLCJmaWVsZCIsImdldEJpbmRpbmciLCJpc011bHRpVmFsdWUiLCJNZXNzYWdlIiwibWVzc2FnZSIsInR5cGUiLCJwcm9jZXNzb3IiLCJnZXRNb2RlbCIsInBlcnNpc3RlbnQiLCJ0YXJnZXQiLCJnZXRSZXNvbHZlZFBhdGgiLCJ2YWxpZGF0ZVByb3BlcnRpZXMiLCJhY3Rpb25QYXJhbWV0ZXJJbmZvcyIsInJlc291cmNlTW9kZWwiLCJQcm9taXNlIiwiYWxsU2V0dGxlZCIsInZhbGlkYXRpb25Qcm9taXNlIiwicmVxdWlyZWRQYXJhbWV0ZXJJbmZvcyIsImZpbHRlciIsInBhcmFtZXRlckluZm8iLCJnZXRSZXF1aXJlZCIsImFsbE1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsImVtcHR5UmVxdWlyZWRGaWVsZHMiLCJyZXF1aXJlZFBhcmFtZXRlckluZm8iLCJmaWVsZElkIiwiZ2V0SWQiLCJyZWxldmFudE1lc3NhZ2VzIiwibXNnIiwiZ2V0Q29udHJvbElkcyIsInNvbWUiLCJjb250cm9sSWQiLCJpbmNsdWRlcyIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiZ2V0VGV4dCIsImdldFBhcmVudCIsImdldEFnZ3JlZ2F0aW9uIiwiZmlyc3RJbnZhbGlkUGFyYW1ldGVyIiwiZmluZCIsImhhc0Vycm9yIiwiZ2V0VmFsdWVTdGF0ZSIsImZvY3VzIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJhU2VsZWN0ZWRDb250ZXh0cyIsInNDb250cm9sIiwiYVByb21pc2VzIiwic0FjdGlvbiIsImFSZXF1ZXN0UHJvbWlzZXMiLCJzZXRQcm9wZXJ0eSIsInNQcm9wZXJ0eSIsImkiLCJvU2VsZWN0ZWRDb250ZXh0Iiwib0NvbnRleHREYXRhIiwiZ2V0T2JqZWN0IiwiX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZSIsImJFbmFibGVkIiwiYUFwcGxpY2FibGUiLCJhTm90QXBwbGljYWJsZSIsInB1c2giLCJDb21tb25VdGlscyIsInNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZSIsImFsbCIsInNldEFjdGlvbkVuYWJsZW1lbnRBZnRlclBhdGNoIiwib1ZpZXciLCJvTGlzdEJpbmRpbmciLCJvSW50ZXJuYWxNb2RlbENvbnRleHREYXRhIiwib0NvbnRyb2xzIiwiY29udHJvbHMiLCJzS2V5Iiwib1RhYmxlIiwiYnlJZCIsImlzQSIsIm9Sb3dCaW5kaW5nIiwiZ2V0Um93QmluZGluZyIsImdldEJpbmRpbmdDb250ZXh0IiwiSlNPTiIsInBhcnNlIiwiZGF0YSIsImN1c3RvbURhdGEiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwidXBkYXRlRWRpdEJ1dHRvblZpc2liaWxpdHlBbmRFbmFibGVtZW50IiwiaVZpZXdMZXZlbCIsImdldFZpZXdEYXRhIiwidmlld0xldmVsIiwiaXNFZGl0YWJsZSIsImdldFByb3BlcnR5Iiwib0NvbnRleHQiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50Iiwic01ldGFQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRNZXRhUGF0aEZvckNvbnRleHQiLCJzRW50aXR5U2V0IiwiZ2V0Um9vdEVudGl0eVNldFBhdGgiLCJtZXRhQ29udGV4dCIsImdldE1ldGFNb2RlbCIsImdldENvbnRleHQiLCJnZXRQYXRoIiwiY29udmVydGVyQ29udGV4dCIsIkNvbnZlcnRlckNvbnRleHQiLCJjcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8iLCJnZXREaWFnbm9zdGljcyIsIm1lcmdlIiwiZW50aXR5U2V0IiwiZ2V0RW50aXR5U2V0IiwiZW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJ1cGRhdGVIaWRkZW4iLCJiVXBkYXRlSGlkZGVuIiwiaXNFbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIlVJIiwiVXBkYXRlSGlkZGVuIiwidmFsdWVPZiIsImlzVXBkYXRlSGlkZGVuIiwic0VkaXRFbmFibGVCaW5kaW5nIiwiZ2V0RWRpdEJ1dHRvbkVuYWJsZWQiLCJkcmFmdFJvb3RQYXRoIiwiZ2V0RHJhZnRSb290UGF0aCIsInNTdGlja3lSb290UGF0aCIsImdldFN0aWNreVJvb3RQYXRoIiwic1BhdGgiLCJvUm9vdENvbnRleHQiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNIaWRkZW5FeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJlcXVhbCIsImdldEhpZGRlbkV4cHJlc3Npb24iLCJ1cGRhdGVFZGl0TW9kZWxDb250ZXh0Iiwic0JpbmRpbmdFeHByZXNzaW9uIiwib0hpZGRlbkVsZW1lbnQiLCJBbnlFbGVtZW50IiwiYW55VGV4dCIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRGVwZW5kZW50IiwiJCRncm91cElkIiwiYXR0YWNoQ2hhbmdlIiwib0V2ZW50Iiwib05ld1ZhbHVlIiwiZ2V0U291cmNlIiwiZ2V0RXh0ZXJuYWxWYWx1ZSIsInNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgiLCJvVHJhbnNmb3JtZWRCaW5kaW5nIiwidHJhbnNmb3JtUmVjdXJzaXZlbHkiLCJvQmluZGluZ0V4cHJlc3Npb24iLCJjb25zdGFudCIsInBhdGgiLCJzUmVzdWx0Iiwic2V0RHluYW1pY0FjdGlvbkNvbnRleHRzIiwicmVxdWVzdFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb25SdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgdHlwZSB7IF9SZXF1ZXN0ZWRQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgdHJhbnNmb3JtUmVjdXJzaXZlbHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGlzRW50aXR5U2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCB0eXBlIE11bHRpVmFsdWVGaWVsZEl0ZW0gZnJvbSBcInNhcC91aS9tZGMvZmllbGQvTXVsdGlWYWx1ZUZpZWxkSXRlbVwiO1xuaW1wb3J0IHR5cGUgTXVsdGlWYWx1ZUZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL011bHRpVmFsdWVGaWVsZFwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvUHJvcGVydHlCaW5kaW5nXCI7XG5pbXBvcnQgQW55RWxlbWVudCBmcm9tIFwiLi9jb250cm9scy9BbnlFbGVtZW50XCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQmFzZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwiLi9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEVkaXRCdXR0b25FbmFibGVkLCBnZXRIaWRkZW5FeHByZXNzaW9uIH0gZnJvbSBcIi4vY29udmVydGVycy9vYmplY3RQYWdlL0hlYWRlckFuZEZvb3RlckFjdGlvblwiO1xuXG50eXBlIEFjdGlvblBhcmFtZXRlciA9IHtcblx0JE5hbWU6IHN0cmluZztcblx0JGlzQ29sbGVjdGlvbjogYm9vbGVhbjtcblx0Ly8gY3VycmVudGx5IHJ1bnRpbWUgaW5mb3JtYXRpb24gaXMgd3JpdHRlbiBpbnRvIHRoZSBtZXRhbW9kZWw6XG5cdC8vIC0gaW4gdGhlIHByZXNzIGhhbmRsZXIgb2YgdGhlIGFjdGlvbiBidXR0b24gb24gdGhlIHBhcmFtZXRlciBkaWFsb2csIHRoZSB2YWx1ZSBvZiBlYWNoIHBhcmFtZXRlciBpcyBhZGRlZFxuXHQvLyAtIGluIHNldEFjdGlvblBhcmFtZXRlckRlZmF1bHRWYWx1ZSwgdGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGFuZCB0cmFuc2ZlcnJlZCB0byB0aGUgY29udGV4dCAoaW4gT0RhdGFNb2RlbCkgY3JlYXRlZCBmb3IgdGhlIGFjdGlvbiBleGVjdXRpb25cblx0Ly8gdGhpcyBpcyBxdWl0ZSBvZGQsIGFuZCBpdCB3b3VsZCBtYWtlIG11Y2ggbW9yZSBzZW5zZSB0byB0YWtlIHRoZSB2YWx1ZSBmcm9tIGFjdGlvblBhcmFtZXRlckluZm9zXG5cdC8vIC0gaG93ZXZlciwgc2V0QWN0aW9uUGFyYW1ldGVyRGVmYXVsdFZhbHVlIChvciByYXRoZXIgdGhlIHN1cnJvdW5kaW5nIF9leGVjdXRlQWN0aW9uKSBpcyBhbHNvIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlc1xuXHQvLyA9PiBmb3IgdGhlIHRpbWUgYmVpbmcsIGFkZGluZyB2YWx1ZSBoZXJlIHRvIGF2b2lkIHRzIGVycm9ycywgc3ViamVjdCB0byByZWZhY3RvcmluZ1xuXHQvLyBpbiBjYXNlIG9mIEZpZWxkLCB0aGUgdmFsdWUgaXMgc3RyaW5nLCBpbiBjYXNlIG9mIE11bHRpVmFsdWVGaWVsZCwgaXQncyBNdWx0aVZhbHVlRmllbGRJdGVtW11cblx0dmFsdWU6IHN0cmluZyB8IE11bHRpVmFsdWVGaWVsZEl0ZW1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvblBhcmFtZXRlckluZm8gPSB7XG5cdHBhcmFtZXRlcjogQWN0aW9uUGFyYW1ldGVyO1xuXHRmaWVsZDogRmllbGQgfCBNdWx0aVZhbHVlRmllbGQ7XG5cdGlzTXVsdGlWYWx1ZTogYm9vbGVhbjtcblx0dmFsdWU/OiBzdHJpbmcgfCBNdWx0aVZhbHVlRmllbGRJdGVtW107XG5cdHZhbGlkYXRpb25Qcm9taXNlPzogUHJvbWlzZTxzdHJpbmcgfCBNdWx0aVZhbHVlRmllbGRJdGVtW10+O1xuXHRoYXNFcnJvcjogYm9vbGVhbjtcbn07XG5cbmNvbnN0IEFjdGlvblJ1bnRpbWUgPSB7XG5cdC8qKlxuXHQgKiBBZGRzIGVycm9yIG1lc3NhZ2VzIGZvciBhbiBhY3Rpb24gcGFyYW1ldGVyIGZpZWxkIHRvIHRoZSBtZXNzYWdlIG1hbmFnZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlTWFuYWdlciBUaGUgYWN0aXZlIE1lc3NhZ2VNYW5hZ2VyIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBtZXNzYWdlUGFyYW1ldGVycyBJbmZvcm1hdGlvbiBpZGVudGlmeWluZyBhbiBhY3Rpb24gcGFyYW1ldGVyIGFuZCBtZXNzYWdlcyByZWZlcnJpbmcgdG8gdGhpcyBwYXJhbWV0ZXJcblx0ICovXG5cdF9hZGRNZXNzYWdlRm9yQWN0aW9uUGFyYW1ldGVyOiBmdW5jdGlvbiAoXG5cdFx0bWVzc2FnZU1hbmFnZXI6IE1lc3NhZ2VNYW5hZ2VyLFxuXHRcdG1lc3NhZ2VQYXJhbWV0ZXJzOiB7IGFjdGlvblBhcmFtZXRlckluZm86IEFjdGlvblBhcmFtZXRlckluZm87IG1lc3NhZ2U6IHN0cmluZyB9W11cblx0KSB7XG5cdFx0bWVzc2FnZU1hbmFnZXIuYWRkTWVzc2FnZXMoXG5cdFx0XHRtZXNzYWdlUGFyYW1ldGVycy5tYXAoKG1lc3NhZ2VQYXJhbWV0ZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgYmluZGluZyA9IG1lc3NhZ2VQYXJhbWV0ZXIuYWN0aW9uUGFyYW1ldGVySW5mby5maWVsZC5nZXRCaW5kaW5nKFxuXHRcdFx0XHRcdG1lc3NhZ2VQYXJhbWV0ZXIuYWN0aW9uUGFyYW1ldGVySW5mby5pc011bHRpVmFsdWUgPyBcIml0ZW1zXCIgOiBcInZhbHVlXCJcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIG5ldyBNZXNzYWdlKHtcblx0XHRcdFx0XHRtZXNzYWdlOiBtZXNzYWdlUGFyYW1ldGVyLm1lc3NhZ2UsXG5cdFx0XHRcdFx0dHlwZTogXCJFcnJvclwiLFxuXHRcdFx0XHRcdHByb2Nlc3NvcjogYmluZGluZz8uZ2V0TW9kZWwoKSxcblx0XHRcdFx0XHRwZXJzaXN0ZW50OiB0cnVlLFxuXHRcdFx0XHRcdHRhcmdldDogYmluZGluZz8uZ2V0UmVzb2x2ZWRQYXRoKClcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhbGwgcmVxdWlyZWQgYWN0aW9uIHBhcmFtZXRlcnMgY29udGFpbiBkYXRhIGFuZCBjaGVja3MgZm9yIGFsbCBhY3Rpb24gcGFyYW1ldGVycyBpZiB0aGVcblx0ICogY29udGFpbmVkIGRhdGEgaXMgdmFsaWQuXG5cdCAqXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlTWFuYWdlciBUaGUgYWN0aXZlIE1lc3NhZ2VNYW5hZ2VyIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBhY3Rpb25QYXJhbWV0ZXJJbmZvcyBJbmZvcm1hdGlvbiBpZGVudGlmeWluZyBhbiBhY3Rpb24gcGFyYW1ldGVyXG5cdCAqIEBwYXJhbSByZXNvdXJjZU1vZGVsIFRoZSBtb2RlbCB0byBsb2FkIHRleHQgcmVzb3VyY2VzXG5cdCAqIEByZXR1cm5zIFRoZSB2YWxpZGF0aW9uIHJlc3VsdCBjYW4gYmUgdHJ1ZSBvciBmYWxzZVxuXHQgKi9cblx0dmFsaWRhdGVQcm9wZXJ0aWVzOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0bWVzc2FnZU1hbmFnZXI6IE1lc3NhZ2VNYW5hZ2VyLFxuXHRcdGFjdGlvblBhcmFtZXRlckluZm9zOiBBY3Rpb25QYXJhbWV0ZXJJbmZvW10sXG5cdFx0cmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbFxuXHQpOlByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChhY3Rpb25QYXJhbWV0ZXJJbmZvcy5tYXAoKGFjdGlvblBhcmFtZXRlckluZm8pID0+IGFjdGlvblBhcmFtZXRlckluZm8udmFsaWRhdGlvblByb21pc2UpKTtcblxuXHRcdGNvbnN0IHJlcXVpcmVkUGFyYW1ldGVySW5mb3MgPSBhY3Rpb25QYXJhbWV0ZXJJbmZvcy5maWx0ZXIoKHBhcmFtZXRlckluZm8pID0+IHBhcmFtZXRlckluZm8uZmllbGQuZ2V0UmVxdWlyZWQoKSk7XG5cdFx0Y29uc3QgYWxsTWVzc2FnZXMgPSBtZXNzYWdlTWFuYWdlci5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCk7XG5cdFx0Y29uc3QgZW1wdHlSZXF1aXJlZEZpZWxkcyA9IHJlcXVpcmVkUGFyYW1ldGVySW5mb3MuZmlsdGVyKChyZXF1aXJlZFBhcmFtZXRlckluZm8pID0+IHtcblx0XHRcdGNvbnN0IGZpZWxkSWQgPSByZXF1aXJlZFBhcmFtZXRlckluZm8uZmllbGQuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IHJlbGV2YW50TWVzc2FnZXMgPSBhbGxNZXNzYWdlcy5maWx0ZXIoKG1zZzogTWVzc2FnZSkgPT5cblx0XHRcdFx0bXNnLmdldENvbnRyb2xJZHMoKS5zb21lKChjb250cm9sSWQ6IHN0cmluZykgPT4gY29udHJvbElkLmluY2x1ZGVzKGZpZWxkSWQpKVxuXHRcdFx0KTtcblx0XHRcdGlmIChyZWxldmFudE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmIChyZXF1aXJlZFBhcmFtZXRlckluZm8uaXNNdWx0aVZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiByZXF1aXJlZFBhcmFtZXRlckluZm8udmFsdWUgPT09IHVuZGVmaW5lZCB8fCAhcmVxdWlyZWRQYXJhbWV0ZXJJbmZvLnZhbHVlLmxlbmd0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0cmVxdWlyZWRQYXJhbWV0ZXJJbmZvLnZhbHVlID09PSB1bmRlZmluZWQgfHwgcmVxdWlyZWRQYXJhbWV0ZXJJbmZvLnZhbHVlID09PSBudWxsIHx8IHJlcXVpcmVkUGFyYW1ldGVySW5mby52YWx1ZSA9PT0gXCJcIlxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdC8qIE1lc3NhZ2UgZm9yIG1pc3NpbmcgbWFuZGF0b3J5IHZhbHVlIG9mIHRoZSBhY3Rpb24gcGFyYW1ldGVyICovXG5cdFx0aWYgKGVtcHR5UmVxdWlyZWRGaWVsZHMubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLl9hZGRNZXNzYWdlRm9yQWN0aW9uUGFyYW1ldGVyKFxuXHRcdFx0XHRtZXNzYWdlTWFuYWdlcixcblx0XHRcdFx0ZW1wdHlSZXF1aXJlZEZpZWxkcy5tYXAoKGFjdGlvblBhcmFtZXRlckluZm8pID0+ICh7XG5cdFx0XHRcdFx0YWN0aW9uUGFyYW1ldGVySW5mbzogYWN0aW9uUGFyYW1ldGVySW5mbyxcblx0XHRcdFx0XHRtZXNzYWdlOiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX09QRVJBVElPTlNfQUNUSU9OX1BBUkFNRVRFUl9ESUFMT0dfTUlTU0lOR19NQU5EQVRPUllfTVNHXCIsIFtcblx0XHRcdFx0XHRcdChhY3Rpb25QYXJhbWV0ZXJJbmZvLmZpZWxkLmdldFBhcmVudCgpPy5nZXRBZ2dyZWdhdGlvbihcImxhYmVsXCIpIGFzIExhYmVsKS5nZXRUZXh0KClcblx0XHRcdFx0XHRdKVxuXHRcdFx0XHR9KSlcblx0XHRcdCk7XG5cdFx0fVxuXHRcdC8qIENoZWNrIHZhbHVlIHN0YXRlIG9mIGFsbCBwYXJhbWV0ZXJzICovXG5cdFx0Y29uc3QgZmlyc3RJbnZhbGlkUGFyYW1ldGVyID0gYWN0aW9uUGFyYW1ldGVySW5mb3MuZmluZChcblx0XHRcdChwYXJhbWV0ZXJJbmZvKSA9PiBwYXJhbWV0ZXJJbmZvLmhhc0Vycm9yIHx8IHBhcmFtZXRlckluZm8uZmllbGQuZ2V0VmFsdWVTdGF0ZSgpID09PSBcIkVycm9yXCIgfHwgZW1wdHlSZXF1aXJlZEZpZWxkcy5pbmNsdWRlcyhwYXJhbWV0ZXJJbmZvKVxuXHRcdCk7XG5cdFx0aWYgKGZpcnN0SW52YWxpZFBhcmFtZXRlcikge1xuXHRcdFx0Zmlyc3RJbnZhbGlkUGFyYW1ldGVyLmZpZWxkLmZvY3VzKCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogU2V0cyB0aGUgYWN0aW9uIGVuYWJsZW1lbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzZXRBY3Rpb25FbmFibGVtZW50XG5cdCAqIEBwYXJhbSBvSW50ZXJuYWxNb2RlbENvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgbW9kZWxcblx0ICogQHBhcmFtIG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAgTWFwIGNvbnRhaW5pbmcgdGhlIG9wZXJhdGlvbiBhdmFpbGFiaWxpdHkgb2YgYWN0aW9uc1xuXHQgKiBAcGFyYW0gYVNlbGVjdGVkQ29udGV4dHMgQXJyYXkgY29udGFpbmluZyBzZWxlY3RlZCBjb250ZXh0cyBvZiB0aGUgY2hhcnRcblx0ICogQHBhcmFtIHNDb250cm9sIENvbnRyb2wgbmFtZVxuXHQgKiBAcmV0dXJucyBUaGUgYWN0aW9uIGVuYWJsZW1lbnQgcHJvbWlzZXNcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqL1xuXHRzZXRBY3Rpb25FbmFibGVtZW50OiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0OiBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuXHRcdGFTZWxlY3RlZENvbnRleHRzOiBDb250ZXh0W10sXG5cdFx0c0NvbnRyb2w6IHN0cmluZ1xuXHQpIHtcblx0XHRjb25zdCBhUHJvbWlzZXMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IHNBY3Rpb24gaW4gb0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcCkge1xuXHRcdFx0bGV0IGFSZXF1ZXN0UHJvbWlzZXM6IFByb21pc2U8X1JlcXVlc3RlZFByb3BlcnR5PltdID0gW107XG5cdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0FjdGlvbiwgZmFsc2UpO1xuXHRcdFx0Y29uc3Qgc1Byb3BlcnR5ID0gb0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcFtzQWN0aW9uXTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgb1NlbGVjdGVkQ29udGV4dCA9IGFTZWxlY3RlZENvbnRleHRzW2ldO1xuXHRcdFx0XHRpZiAob1NlbGVjdGVkQ29udGV4dCkge1xuXHRcdFx0XHRcdGNvbnN0IG9Db250ZXh0RGF0YSA9IG9TZWxlY3RlZENvbnRleHQuZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0XHRcdFx0aWYgKHNDb250cm9sID09PSBcImNoYXJ0XCIpIHtcblx0XHRcdFx0XHRcdGlmICgoc1Byb3BlcnR5ID09PSBudWxsICYmICEhb0NvbnRleHREYXRhW2AjJHtzQWN0aW9ufWBdKSB8fCBvU2VsZWN0ZWRDb250ZXh0LmdldE9iamVjdChzUHJvcGVydHkpKSB7XG5cdFx0XHRcdFx0XHRcdC8vbG9vayBmb3IgYWN0aW9uIGFkdmVydGlzZW1lbnQgaWYgcHJlc2VudCBhbmQgaXRzIHZhbHVlIGlzIG5vdCBudWxsXG5cdFx0XHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzQWN0aW9uLCB0cnVlKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChzQ29udHJvbCA9PT0gXCJ0YWJsZVwiKSB7XG5cdFx0XHRcdFx0XHRhUmVxdWVzdFByb21pc2VzID0gdGhpcy5fc2V0QWN0aW9uRW5hYmxlbWVudEZvclRhYmxlKFxuXHRcdFx0XHRcdFx0XHRvU2VsZWN0ZWRDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdFx0XHRcdHNBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0YVJlcXVlc3RQcm9taXNlc1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChzQ29udHJvbCA9PT0gXCJ0YWJsZVwiKSB7XG5cdFx0XHRcdGlmICghYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBkeW5hbWljQWN0aW9ucy8ke3NBY3Rpb259YCwge1xuXHRcdFx0XHRcdFx0YkVuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0YUFwcGxpY2FibGU6IFtdLFxuXHRcdFx0XHRcdFx0YU5vdEFwcGxpY2FibGU6IFtdXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0YVByb21pc2VzLnB1c2goQ29tbW9uVXRpbHMuc2V0Q29udGV4dHNCYXNlZE9uT3BlcmF0aW9uQXZhaWxhYmxlKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgW10pKTtcblx0XHRcdFx0fSBlbHNlIGlmIChhU2VsZWN0ZWRDb250ZXh0cy5sZW5ndGggJiYgdHlwZW9mIHNQcm9wZXJ0eSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdC8vIFdoZW4gYWxsIHByb3BlcnR5IHZhbHVlcyBoYXZlIGJlZW4gcmV0cmlldmVkLCBzZXRcblx0XHRcdFx0XHQvLyBUaGUgYXBwbGljYWJsZSBhbmQgbm90LWFwcGxpY2FibGUgc2VsZWN0ZWQgY29udGV4dHMgZm9yIGVhY2ggYWN0aW9uIGFuZFxuXHRcdFx0XHRcdC8vIFRoZSBlbmFibGVkIHByb3BlcnR5IG9mIHRoZSBkeW5hbWljIGFjdGlvbiBpbiBpbnRlcm5hbCBtb2RlbCBjb250ZXh0LlxuXHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZShvSW50ZXJuYWxNb2RlbENvbnRleHQsIGFSZXF1ZXN0UHJvbWlzZXMpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoYVByb21pc2VzKTtcblx0fSxcblx0c2V0QWN0aW9uRW5hYmxlbWVudEFmdGVyUGF0Y2g6IGZ1bmN0aW9uIChvVmlldzogVmlldywgb0xpc3RCaW5kaW5nOiBPRGF0YUxpc3RCaW5kaW5nLCBvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0KSB7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0RGF0YSA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dD8uZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cdFx0Y29uc3Qgb0NvbnRyb2xzID0gKG9JbnRlcm5hbE1vZGVsQ29udGV4dERhdGE/LmNvbnRyb2xzIHx8IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB7IGNvbnRyb2xJZD86IHN0cmluZyB9Pjtcblx0XHRmb3IgKGNvbnN0IHNLZXkgaW4gb0NvbnRyb2xzKSB7XG5cdFx0XHRpZiAob0NvbnRyb2xzW3NLZXldICYmIG9Db250cm9sc1tzS2V5XS5jb250cm9sSWQpIHtcblx0XHRcdFx0Y29uc3Qgb1RhYmxlID0gb1ZpZXcuYnlJZChzS2V5KTtcblx0XHRcdFx0aWYgKG9UYWJsZSAmJiBvVGFibGUuaXNBPFRhYmxlPihcInNhcC51aS5tZGMuVGFibGVcIikpIHtcblx0XHRcdFx0XHRjb25zdCBvUm93QmluZGluZyA9IG9UYWJsZS5nZXRSb3dCaW5kaW5nKCk7XG5cdFx0XHRcdFx0aWYgKG9Sb3dCaW5kaW5nID09IG9MaXN0QmluZGluZykge1xuXHRcdFx0XHRcdFx0QWN0aW9uUnVudGltZS5zZXRBY3Rpb25FbmFibGVtZW50KFxuXHRcdFx0XHRcdFx0XHRvVGFibGUuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0SlNPTi5wYXJzZShvVGFibGUuZGF0YShcIm9wZXJhdGlvbkF2YWlsYWJsZU1hcFwiKS5jdXN0b21EYXRhKSxcblx0XHRcdFx0XHRcdFx0b1RhYmxlLmdldFNlbGVjdGVkQ29udGV4dHMoKSBhcyBDb250ZXh0W10sXG5cdFx0XHRcdFx0XHRcdFwidGFibGVcIlxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0dXBkYXRlRWRpdEJ1dHRvblZpc2liaWxpdHlBbmRFbmFibGVtZW50KG9WaWV3OiBWaWV3KSB7XG5cdFx0Y29uc3QgaVZpZXdMZXZlbCA9IChvVmlldy5nZXRWaWV3RGF0YSgpIGFzIEJhc2VNYW5pZmVzdFNldHRpbmdzKT8udmlld0xldmVsLFxuXHRcdCAgICAgIGlzRWRpdGFibGUgPSBvVmlldy5nZXRNb2RlbChcInVpXCIpPy5nZXRQcm9wZXJ0eShcIi9pc0VkaXRhYmxlXCIpO1xuXHRcdGlmICgoaVZpZXdMZXZlbCBhcyBudW1iZXIpID4gMSAmJiAgaXNFZGl0YWJsZSAhPT0gdHJ1ZSkge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRcdGNvbnN0IHNNZXRhUGF0aCA9IE1vZGVsSGVscGVyLmdldE1ldGFQYXRoRm9yQ29udGV4dChvQ29udGV4dCk7XG5cdFx0XHRjb25zdCBzRW50aXR5U2V0ID0gTW9kZWxIZWxwZXIuZ2V0Um9vdEVudGl0eVNldFBhdGgoc01ldGFQYXRoKTtcblx0XHRcdGNvbnN0IG1ldGFDb250ZXh0ID0gb0NvbnRleHQ/LmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpPy5nZXRDb250ZXh0KG9Db250ZXh0Py5nZXRQYXRoKCkpO1xuXHRcdFx0Y29uc3QgY29udmVydGVyQ29udGV4dCA9IENvbnZlcnRlckNvbnRleHQ/LmNyZWF0ZUNvbnZlcnRlckNvbnRleHRGb3JNYWNybyhcblx0XHRcdFx0c0VudGl0eVNldCxcblx0XHRcdFx0bWV0YUNvbnRleHQsXG5cdFx0XHRcdG9BcHBDb21wb25lbnQuZ2V0RGlhZ25vc3RpY3MoKSxcblx0XHRcdFx0bWVyZ2UsXG5cdFx0XHRcdHVuZGVmaW5lZFxuXHRcdFx0KTtcblx0XHRcdGNvbnN0IGVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0XHRsZXQgdXBkYXRlSGlkZGVuO1xuXHRcdFx0Ly9GaW5kIHRoZSBVcGRhdGUgSGlkZGVuIG9mIHRoZSByb290IGVudGl0eSBzZXQgYW5kIGJpbmQgdGhlIHByb3BlcnR5IHRvIEFueUVsZW1lbnQsIGFueSBjaGFuZ2VzIGluIHRoZSBwYXRoIG9mIHRoZSByb290IFVwZGF0ZUhpZGRlbiB3aWxsIGJlIHVwZGF0ZWQgdmlhIHRoZSBwcm9wZXJ0eSwgaW50ZXJuYWwgbW9kZWwgY29udGV4dCBpcyB1cGRhdGVkIGJhc2VkIG9uIHRoZSBwcm9wZXJ0eVxuXHRcdFx0Y29uc3QgYlVwZGF0ZUhpZGRlbiA9IGlzRW50aXR5U2V0KGVudGl0eVNldCkgJiYgZW50aXR5U2V0LmFubm90YXRpb25zLlVJPy5VcGRhdGVIaWRkZW4/LnZhbHVlT2YoKTtcblx0XHRcdGlmIChiVXBkYXRlSGlkZGVuICE9PSB0cnVlKSB7XG5cdFx0XHRcdHVwZGF0ZUhpZGRlbiA9IE1vZGVsSGVscGVyLmlzVXBkYXRlSGlkZGVuKGVudGl0eVNldCwgZW50aXR5VHlwZSk7XG5cdFx0XHR9XG5cdFx0XHQvL0ZpbmQgdGhlIG9wZXJhdGlvbiBhdmFpbGFibGUgcHJvcGVydHkgb2YgdGhlIHJvb3QgZWRpdCBjb25maWd1cmF0aW9uIGFuZCBmZXRjaCB0aGUgcHJvcGVydHkgdXNpbmcgQW55RWxlbWVudFxuXHRcdFx0Y29uc3Qgc0VkaXRFbmFibGVCaW5kaW5nID0gZ2V0RWRpdEJ1dHRvbkVuYWJsZWQoY29udmVydGVyQ29udGV4dCwgdW5kZWZpbmVkKTtcblx0XHRcdGNvbnN0IGRyYWZ0Um9vdFBhdGggPSBNb2RlbEhlbHBlci5nZXREcmFmdFJvb3RQYXRoKG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IHNTdGlja3lSb290UGF0aCA9IE1vZGVsSGVscGVyLmdldFN0aWNreVJvb3RQYXRoKG9Db250ZXh0KTtcblx0XHRcdGNvbnN0IHNQYXRoID0gZHJhZnRSb290UGF0aCB8fCBzU3RpY2t5Um9vdFBhdGg7XG5cdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXHRcdFx0aWYgKHNQYXRoKSB7XG5cdFx0XHRcdGNvbnN0IG9Sb290Q29udGV4dCA9IG9WaWV3LmdldE1vZGVsKCkuYmluZENvbnRleHQoc1BhdGgpLmdldEJvdW5kQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRcdGlmICh1cGRhdGVIaWRkZW4gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGNvbnN0IHNIaWRkZW5FeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oZXF1YWwoZ2V0SGlkZGVuRXhwcmVzc2lvbihjb252ZXJ0ZXJDb250ZXh0LCB1cGRhdGVIaWRkZW4pLCBmYWxzZSkpO1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlRWRpdE1vZGVsQ29udGV4dChzSGlkZGVuRXhwcmVzc2lvbiwgb1ZpZXcsIG9Sb290Q29udGV4dCwgXCJyb290RWRpdFZpc2libGVcIiwgb0ludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc0VkaXRFbmFibGVCaW5kaW5nKSB7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVFZGl0TW9kZWxDb250ZXh0KHNFZGl0RW5hYmxlQmluZGluZywgb1ZpZXcsIG9Sb290Q29udGV4dCwgXCJyb290RWRpdEVuYWJsZWRcIiwgb0ludGVybmFsTW9kZWxDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblxuXHR1cGRhdGVFZGl0TW9kZWxDb250ZXh0OiBmdW5jdGlvbiAoXG5cdFx0c0JpbmRpbmdFeHByZXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdFx0b1ZpZXc6IFZpZXcsXG5cdFx0b1Jvb3RDb250ZXh0OiBDb250ZXh0LFxuXHRcdHNQcm9wZXJ0eTogc3RyaW5nLFxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHRcblx0KSB7XG5cdFx0aWYgKHNCaW5kaW5nRXhwcmVzc2lvbikge1xuXHRcdFx0Y29uc3Qgb0hpZGRlbkVsZW1lbnQgPSBuZXcgQW55RWxlbWVudCh7IGFueVRleHQ6IHNCaW5kaW5nRXhwcmVzc2lvbiB9KTtcblx0XHRcdG9IaWRkZW5FbGVtZW50LnNldEJpbmRpbmdDb250ZXh0KG51bGwpO1xuXHRcdFx0b1ZpZXcuYWRkRGVwZW5kZW50KG9IaWRkZW5FbGVtZW50KTtcblx0XHRcdG9IaWRkZW5FbGVtZW50LmdldEJpbmRpbmcoXCJhbnlUZXh0XCIpO1xuXHRcdFx0Y29uc3Qgb0NvbnRleHQgPSBvSGlkZGVuRWxlbWVudFxuXHRcdFx0XHQuZ2V0TW9kZWwoKVxuXHRcdFx0XHQ/LmJpbmRDb250ZXh0KG9Sb290Q29udGV4dC5nZXRQYXRoKCksIG9Sb290Q29udGV4dCwgeyAkJGdyb3VwSWQ6IFwiJGF1dG8uSGVyb2VzXCIgfSlcblx0XHRcdFx0Py5nZXRCb3VuZENvbnRleHQoKTtcblx0XHRcdG9IaWRkZW5FbGVtZW50LnNldEJpbmRpbmdDb250ZXh0KG9Db250ZXh0KTtcblx0XHRcdG9IaWRkZW5FbGVtZW50Py5nZXRCaW5kaW5nKFwiYW55VGV4dFwiKT8uYXR0YWNoQ2hhbmdlKChvRXZlbnQ6IEV2ZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9OZXdWYWx1ZSA9IChvRXZlbnQuZ2V0U291cmNlKCkgYXMgUHJvcGVydHlCaW5kaW5nKS5nZXRFeHRlcm5hbFZhbHVlKCk7XG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShzUHJvcGVydHksIG9OZXdWYWx1ZSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0X3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZTogZnVuY3Rpb24gKFxuXHRcdG9TZWxlY3RlZENvbnRleHQ6IENvbnRleHQgfCB1bmRlZmluZWQsXG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0OiBJbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRzQWN0aW9uOiBzdHJpbmcsXG5cdFx0c1Byb3BlcnR5OiBzdHJpbmcsXG5cdFx0YVJlcXVlc3RQcm9taXNlczogUHJvbWlzZTxfUmVxdWVzdGVkUHJvcGVydHk+W11cblx0KSB7XG5cdFx0Ly8gUmVzZXQgYWxsIHByb3BlcnRpZXMgYmVmb3JlIGNvbXB1dGF0aW9uXG5cdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBkeW5hbWljQWN0aW9ucy8ke3NBY3Rpb259YCwge1xuXHRcdFx0YkVuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YUFwcGxpY2FibGU6IFtdLFxuXHRcdFx0YU5vdEFwcGxpY2FibGU6IFtdXG5cdFx0fSk7XG5cdFx0Ly8gTm90ZSB0aGF0IG5vbiBkeW5hbWljIGFjdGlvbnMgYXJlIG5vdCBwcm9jZXNzZWQgaGVyZS4gVGhleSBhcmUgZW5hYmxlZCBiZWNhdXNlXG5cdFx0Ly8gb25lIG9yIG1vcmUgYXJlIHNlbGVjdGVkIGFuZCB0aGUgc2Vjb25kIHBhcnQgb2YgdGhlIGNvbmRpdGlvbiBpbiB0aGUgdGVtcGxhdGluZ1xuXHRcdC8vIGlzIHRoZW4gdW5kZWZpbmVkIGFuZCB0aHVzIHRoZSBidXR0b24gdGFrZXMgdGhlIGRlZmF1bHQgZW5hYmxpbmcsIHdoaWNoIGlzIHRydWUhXG5cdFx0Y29uc3QgYUFwcGxpY2FibGUgPSBbXSxcblx0XHRcdGFOb3RBcHBsaWNhYmxlID0gW10sXG5cdFx0XHRzRHluYW1pY0FjdGlvbkVuYWJsZWRQYXRoID0gYCR7b0ludGVybmFsTW9kZWxDb250ZXh0LmdldFBhdGgoKX0vZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufS9iRW5hYmxlZGA7XG5cdFx0aWYgKHR5cGVvZiBzUHJvcGVydHkgPT09IFwib2JqZWN0XCIgJiYgc1Byb3BlcnR5ICE9PSBudWxsICYmIHNQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRpZiAob1NlbGVjdGVkQ29udGV4dCkge1xuXHRcdFx0XHRjb25zdCBvQ29udGV4dERhdGEgPSBvU2VsZWN0ZWRDb250ZXh0LmdldE9iamVjdCgpIGFzIFJlY29yZDxzdHJpbmcsIFByaW1pdGl2ZVR5cGU+O1xuXHRcdFx0XHRjb25zdCBvVHJhbnNmb3JtZWRCaW5kaW5nID0gdHJhbnNmb3JtUmVjdXJzaXZlbHkoXG5cdFx0XHRcdFx0c1Byb3BlcnR5LFxuXHRcdFx0XHRcdFwiUGF0aEluTW9kZWxcIixcblx0XHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9vcC1mdW5jXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKG9CaW5kaW5nRXhwcmVzc2lvbjogUGF0aEluTW9kZWxFeHByZXNzaW9uPFByaW1pdGl2ZVR5cGU+KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb0NvbnRleHREYXRhID8gY29uc3RhbnQob0NvbnRleHREYXRhW29CaW5kaW5nRXhwcmVzc2lvbi5wYXRoXSkgOiBjb25zdGFudChmYWxzZSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGNvbnN0IHNSZXN1bHQgPSBjb21waWxlRXhwcmVzc2lvbihvVHJhbnNmb3JtZWRCaW5kaW5nKTtcblx0XHRcdFx0aWYgKHNSZXN1bHQgPT09IFwidHJ1ZVwiKSB7XG5cdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LmdldE1vZGVsKCkuc2V0UHJvcGVydHkoc0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCwgdHJ1ZSk7XG5cdFx0XHRcdFx0YUFwcGxpY2FibGUucHVzaChvU2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhTm90QXBwbGljYWJsZS5wdXNoKG9TZWxlY3RlZENvbnRleHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRDb21tb25VdGlscy5zZXREeW5hbWljQWN0aW9uQ29udGV4dHMob0ludGVybmFsTW9kZWxDb250ZXh0LCBzQWN0aW9uLCBhQXBwbGljYWJsZSwgYU5vdEFwcGxpY2FibGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBvQ29udGV4dERhdGEgPSBvU2VsZWN0ZWRDb250ZXh0Py5nZXRPYmplY3QoKSBhcyBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPjtcblx0XHRcdGlmIChzUHJvcGVydHkgPT09IG51bGwgJiYgISFvQ29udGV4dERhdGFbYCMke3NBY3Rpb259YF0pIHtcblx0XHRcdFx0Ly9sb29rIGZvciBhY3Rpb24gYWR2ZXJ0aXNlbWVudCBpZiBwcmVzZW50IGFuZCBpdHMgdmFsdWUgaXMgbm90IG51bGxcblx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LmdldE1vZGVsKCkuc2V0UHJvcGVydHkoc0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCwgdHJ1ZSk7XG5cdFx0XHR9IGVsc2UgaWYgKG9TZWxlY3RlZENvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHQvLyBDb2xsZWN0IHByb21pc2VzIHRvIHJldHJpZXZlIHNpbmdsZXRvbiBvciBub3JtYWwgcHJvcGVydHkgdmFsdWUgYXN5bmNocm9ub3VzbHlcblx0XHRcdFx0YVJlcXVlc3RQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnJlcXVlc3RQcm9wZXJ0eShvU2VsZWN0ZWRDb250ZXh0LCBzQWN0aW9uLCBzUHJvcGVydHksIHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFSZXF1ZXN0UHJvbWlzZXM7XG5cdH1cbn07XG5leHBvcnQgZGVmYXVsdCBBY3Rpb25SdW50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
247
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBY3Rpb25SdW50aW1lIiwiX2FkZE1lc3NhZ2VGb3JBY3Rpb25QYXJhbWV0ZXIiLCJtZXNzYWdlTWFuYWdlciIsIm1lc3NhZ2VQYXJhbWV0ZXJzIiwiYWRkTWVzc2FnZXMiLCJtYXAiLCJtZXNzYWdlUGFyYW1ldGVyIiwiYmluZGluZyIsImFjdGlvblBhcmFtZXRlckluZm8iLCJmaWVsZCIsImdldEJpbmRpbmciLCJpc011bHRpVmFsdWUiLCJNZXNzYWdlIiwibWVzc2FnZSIsInR5cGUiLCJwcm9jZXNzb3IiLCJnZXRNb2RlbCIsInBlcnNpc3RlbnQiLCJ0YXJnZXQiLCJnZXRSZXNvbHZlZFBhdGgiLCJ2YWxpZGF0ZVByb3BlcnRpZXMiLCJhY3Rpb25QYXJhbWV0ZXJJbmZvcyIsInJlc291cmNlTW9kZWwiLCJQcm9taXNlIiwiYWxsU2V0dGxlZCIsInZhbGlkYXRpb25Qcm9taXNlIiwicmVxdWlyZWRQYXJhbWV0ZXJJbmZvcyIsImZpbHRlciIsInBhcmFtZXRlckluZm8iLCJnZXRSZXF1aXJlZCIsImFsbE1lc3NhZ2VzIiwiZ2V0TWVzc2FnZU1vZGVsIiwiZ2V0RGF0YSIsImVtcHR5UmVxdWlyZWRGaWVsZHMiLCJyZXF1aXJlZFBhcmFtZXRlckluZm8iLCJmaWVsZElkIiwiZ2V0SWQiLCJyZWxldmFudE1lc3NhZ2VzIiwibXNnIiwiZ2V0Q29udHJvbElkcyIsInNvbWUiLCJjb250cm9sSWQiLCJpbmNsdWRlcyIsImxlbmd0aCIsInZhbHVlIiwidW5kZWZpbmVkIiwiZmllbGRWYWx1ZSIsImdldFZhbHVlIiwiZ2V0VGV4dCIsImdldFBhcmVudCIsImdldEFnZ3JlZ2F0aW9uIiwiZmlyc3RJbnZhbGlkUGFyYW1ldGVyIiwiZmluZCIsImhhc0Vycm9yIiwiZ2V0VmFsdWVTdGF0ZSIsImZvY3VzIiwic2V0QWN0aW9uRW5hYmxlbWVudCIsIm9JbnRlcm5hbE1vZGVsQ29udGV4dCIsIm9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXAiLCJhU2VsZWN0ZWRDb250ZXh0cyIsInNDb250cm9sIiwiYVByb21pc2VzIiwic0FjdGlvbiIsImFSZXF1ZXN0UHJvbWlzZXMiLCJzZXRQcm9wZXJ0eSIsInNQcm9wZXJ0eSIsImkiLCJvU2VsZWN0ZWRDb250ZXh0Iiwib0NvbnRleHREYXRhIiwiZ2V0T2JqZWN0IiwiX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZSIsImJFbmFibGVkIiwiYUFwcGxpY2FibGUiLCJhTm90QXBwbGljYWJsZSIsInB1c2giLCJDb21tb25VdGlscyIsInNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZSIsImFsbCIsInNldEFjdGlvbkVuYWJsZW1lbnRBZnRlclBhdGNoIiwib1ZpZXciLCJvTGlzdEJpbmRpbmciLCJvSW50ZXJuYWxNb2RlbENvbnRleHREYXRhIiwib0NvbnRyb2xzIiwiY29udHJvbHMiLCJzS2V5Iiwib1RhYmxlIiwiYnlJZCIsImlzQSIsIm9Sb3dCaW5kaW5nIiwiZ2V0Um93QmluZGluZyIsImdldEJpbmRpbmdDb250ZXh0IiwiSlNPTiIsInBhcnNlIiwiZGF0YSIsImN1c3RvbURhdGEiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwidXBkYXRlRWRpdEJ1dHRvblZpc2liaWxpdHlBbmRFbmFibGVtZW50IiwiaVZpZXdMZXZlbCIsImdldFZpZXdEYXRhIiwidmlld0xldmVsIiwiaXNFZGl0YWJsZSIsImdldFByb3BlcnR5Iiwib0NvbnRleHQiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50Iiwic01ldGFQYXRoIiwiTW9kZWxIZWxwZXIiLCJnZXRNZXRhUGF0aEZvckNvbnRleHQiLCJzRW50aXR5U2V0IiwiZ2V0Um9vdEVudGl0eVNldFBhdGgiLCJtZXRhQ29udGV4dCIsImdldE1ldGFNb2RlbCIsImdldENvbnRleHQiLCJnZXRQYXRoIiwiY29udmVydGVyQ29udGV4dCIsIkNvbnZlcnRlckNvbnRleHQiLCJjcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8iLCJnZXREaWFnbm9zdGljcyIsIm1lcmdlIiwiZW50aXR5U2V0IiwiZ2V0RW50aXR5U2V0IiwiZW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJ1cGRhdGVIaWRkZW4iLCJiVXBkYXRlSGlkZGVuIiwiaXNFbnRpdHlTZXQiLCJhbm5vdGF0aW9ucyIsIlVJIiwiVXBkYXRlSGlkZGVuIiwidmFsdWVPZiIsImlzVXBkYXRlSGlkZGVuIiwic0VkaXRFbmFibGVCaW5kaW5nIiwiZ2V0RWRpdEJ1dHRvbkVuYWJsZWQiLCJkcmFmdFJvb3RQYXRoIiwiZ2V0RHJhZnRSb290UGF0aCIsInNTdGlja3lSb290UGF0aCIsImdldFN0aWNreVJvb3RQYXRoIiwic1BhdGgiLCJvUm9vdENvbnRleHQiLCJiaW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInNIaWRkZW5FeHByZXNzaW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJlcXVhbCIsImdldEhpZGRlbkV4cHJlc3Npb24iLCJ1cGRhdGVFZGl0TW9kZWxDb250ZXh0Iiwic0JpbmRpbmdFeHByZXNzaW9uIiwib0hpZGRlbkVsZW1lbnQiLCJBbnlFbGVtZW50IiwiYW55VGV4dCIsInNldEJpbmRpbmdDb250ZXh0IiwiYWRkRGVwZW5kZW50IiwiJCRncm91cElkIiwiYXR0YWNoQ2hhbmdlIiwib0V2ZW50Iiwib05ld1ZhbHVlIiwiZ2V0U291cmNlIiwiZ2V0RXh0ZXJuYWxWYWx1ZSIsInNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgiLCJvVHJhbnNmb3JtZWRCaW5kaW5nIiwidHJhbnNmb3JtUmVjdXJzaXZlbHkiLCJvQmluZGluZ0V4cHJlc3Npb24iLCJjb25zdGFudCIsInBhdGgiLCJzUmVzdWx0Iiwic2V0RHluYW1pY0FjdGlvbkNvbnRleHRzIiwicmVxdWVzdFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBY3Rpb25SdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJpbWl0aXZlVHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgdHlwZSB7IF9SZXF1ZXN0ZWRQcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBQYXRoSW5Nb2RlbEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgdHJhbnNmb3JtUmVjdXJzaXZlbHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGlzRW50aXR5U2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2VNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCB0eXBlIE11bHRpVmFsdWVGaWVsZEl0ZW0gZnJvbSBcInNhcC91aS9tZGMvZmllbGQvTXVsdGlWYWx1ZUZpZWxkSXRlbVwiO1xuaW1wb3J0IHR5cGUgTXVsdGlWYWx1ZUZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL011bHRpVmFsdWVGaWVsZFwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvUHJvcGVydHlCaW5kaW5nXCI7XG5pbXBvcnQgQW55RWxlbWVudCBmcm9tIFwiLi9jb250cm9scy9BbnlFbGVtZW50XCI7XG5pbXBvcnQgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQmFzZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwiLi9jb252ZXJ0ZXJzL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEVkaXRCdXR0b25FbmFibGVkLCBnZXRIaWRkZW5FeHByZXNzaW9uIH0gZnJvbSBcIi4vY29udmVydGVycy9vYmplY3RQYWdlL0hlYWRlckFuZEZvb3RlckFjdGlvblwiO1xuXG50eXBlIEFjdGlvblBhcmFtZXRlciA9IHtcblx0JE5hbWU6IHN0cmluZztcblx0JGlzQ29sbGVjdGlvbjogYm9vbGVhbjtcblx0Ly8gY3VycmVudGx5IHJ1bnRpbWUgaW5mb3JtYXRpb24gaXMgd3JpdHRlbiBpbnRvIHRoZSBtZXRhbW9kZWw6XG5cdC8vIC0gaW4gdGhlIHByZXNzIGhhbmRsZXIgb2YgdGhlIGFjdGlvbiBidXR0b24gb24gdGhlIHBhcmFtZXRlciBkaWFsb2csIHRoZSB2YWx1ZSBvZiBlYWNoIHBhcmFtZXRlciBpcyBhZGRlZFxuXHQvLyAtIGluIHNldEFjdGlvblBhcmFtZXRlckRlZmF1bHRWYWx1ZSwgdGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VkIGFuZCB0cmFuc2ZlcnJlZCB0byB0aGUgY29udGV4dCAoaW4gT0RhdGFNb2RlbCkgY3JlYXRlZCBmb3IgdGhlIGFjdGlvbiBleGVjdXRpb25cblx0Ly8gdGhpcyBpcyBxdWl0ZSBvZGQsIGFuZCBpdCB3b3VsZCBtYWtlIG11Y2ggbW9yZSBzZW5zZSB0byB0YWtlIHRoZSB2YWx1ZSBmcm9tIGFjdGlvblBhcmFtZXRlckluZm9zXG5cdC8vIC0gaG93ZXZlciwgc2V0QWN0aW9uUGFyYW1ldGVyRGVmYXVsdFZhbHVlIChvciByYXRoZXIgdGhlIHN1cnJvdW5kaW5nIF9leGVjdXRlQWN0aW9uKSBpcyBhbHNvIGNhbGxlZCBmcm9tIG90aGVyIHBsYWNlc1xuXHQvLyA9PiBmb3IgdGhlIHRpbWUgYmVpbmcsIGFkZGluZyB2YWx1ZSBoZXJlIHRvIGF2b2lkIHRzIGVycm9ycywgc3ViamVjdCB0byByZWZhY3RvcmluZ1xuXHQvLyBpbiBjYXNlIG9mIEZpZWxkLCB0aGUgdmFsdWUgaXMgc3RyaW5nLCBpbiBjYXNlIG9mIE11bHRpVmFsdWVGaWVsZCwgaXQncyBNdWx0aVZhbHVlRmllbGRJdGVtW11cblx0dmFsdWU6IHN0cmluZyB8IE11bHRpVmFsdWVGaWVsZEl0ZW1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvblBhcmFtZXRlckluZm8gPSB7XG5cdHBhcmFtZXRlcjogQWN0aW9uUGFyYW1ldGVyO1xuXHRmaWVsZDogRmllbGQgfCBNdWx0aVZhbHVlRmllbGQ7XG5cdGlzTXVsdGlWYWx1ZTogYm9vbGVhbjtcblx0dmFsdWU/OiBzdHJpbmcgfCBNdWx0aVZhbHVlRmllbGRJdGVtW107XG5cdHZhbGlkYXRpb25Qcm9taXNlPzogUHJvbWlzZTxzdHJpbmcgfCBNdWx0aVZhbHVlRmllbGRJdGVtW10+O1xuXHRoYXNFcnJvcjogYm9vbGVhbjtcbn07XG5cbmNvbnN0IEFjdGlvblJ1bnRpbWUgPSB7XG5cdC8qKlxuXHQgKiBBZGRzIGVycm9yIG1lc3NhZ2VzIGZvciBhbiBhY3Rpb24gcGFyYW1ldGVyIGZpZWxkIHRvIHRoZSBtZXNzYWdlIG1hbmFnZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlTWFuYWdlciBUaGUgYWN0aXZlIE1lc3NhZ2VNYW5hZ2VyIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBtZXNzYWdlUGFyYW1ldGVycyBJbmZvcm1hdGlvbiBpZGVudGlmeWluZyBhbiBhY3Rpb24gcGFyYW1ldGVyIGFuZCBtZXNzYWdlcyByZWZlcnJpbmcgdG8gdGhpcyBwYXJhbWV0ZXJcblx0ICovXG5cdF9hZGRNZXNzYWdlRm9yQWN0aW9uUGFyYW1ldGVyOiBmdW5jdGlvbiAoXG5cdFx0bWVzc2FnZU1hbmFnZXI6IE1lc3NhZ2VNYW5hZ2VyLFxuXHRcdG1lc3NhZ2VQYXJhbWV0ZXJzOiB7IGFjdGlvblBhcmFtZXRlckluZm86IEFjdGlvblBhcmFtZXRlckluZm87IG1lc3NhZ2U6IHN0cmluZyB9W11cblx0KSB7XG5cdFx0bWVzc2FnZU1hbmFnZXIuYWRkTWVzc2FnZXMoXG5cdFx0XHRtZXNzYWdlUGFyYW1ldGVycy5tYXAoKG1lc3NhZ2VQYXJhbWV0ZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgYmluZGluZyA9IG1lc3NhZ2VQYXJhbWV0ZXIuYWN0aW9uUGFyYW1ldGVySW5mby5maWVsZC5nZXRCaW5kaW5nKFxuXHRcdFx0XHRcdG1lc3NhZ2VQYXJhbWV0ZXIuYWN0aW9uUGFyYW1ldGVySW5mby5pc011bHRpVmFsdWUgPyBcIml0ZW1zXCIgOiBcInZhbHVlXCJcblx0XHRcdFx0KTtcblx0XHRcdFx0cmV0dXJuIG5ldyBNZXNzYWdlKHtcblx0XHRcdFx0XHRtZXNzYWdlOiBtZXNzYWdlUGFyYW1ldGVyLm1lc3NhZ2UsXG5cdFx0XHRcdFx0dHlwZTogXCJFcnJvclwiLFxuXHRcdFx0XHRcdHByb2Nlc3NvcjogYmluZGluZz8uZ2V0TW9kZWwoKSxcblx0XHRcdFx0XHRwZXJzaXN0ZW50OiB0cnVlLFxuXHRcdFx0XHRcdHRhcmdldDogYmluZGluZz8uZ2V0UmVzb2x2ZWRQYXRoKClcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBhbGwgcmVxdWlyZWQgYWN0aW9uIHBhcmFtZXRlcnMgY29udGFpbiBkYXRhIGFuZCBjaGVja3MgZm9yIGFsbCBhY3Rpb24gcGFyYW1ldGVycyBpZiB0aGVcblx0ICogY29udGFpbmVkIGRhdGEgaXMgdmFsaWQuXG5cdCAqXG5cdCAqXG5cdCAqIEBwYXJhbSBtZXNzYWdlTWFuYWdlciBUaGUgYWN0aXZlIE1lc3NhZ2VNYW5hZ2VyIGluc3RhbmNlXG5cdCAqIEBwYXJhbSBhY3Rpb25QYXJhbWV0ZXJJbmZvcyBJbmZvcm1hdGlvbiBpZGVudGlmeWluZyBhbiBhY3Rpb24gcGFyYW1ldGVyXG5cdCAqIEBwYXJhbSByZXNvdXJjZU1vZGVsIFRoZSBtb2RlbCB0byBsb2FkIHRleHQgcmVzb3VyY2VzXG5cdCAqIEByZXR1cm5zIFRoZSB2YWxpZGF0aW9uIHJlc3VsdCBjYW4gYmUgdHJ1ZSBvciBmYWxzZVxuXHQgKi9cblx0dmFsaWRhdGVQcm9wZXJ0aWVzOiBhc3luYyBmdW5jdGlvbiAoXG5cdFx0bWVzc2FnZU1hbmFnZXI6IE1lc3NhZ2VNYW5hZ2VyLFxuXHRcdGFjdGlvblBhcmFtZXRlckluZm9zOiBBY3Rpb25QYXJhbWV0ZXJJbmZvW10sXG5cdFx0cmVzb3VyY2VNb2RlbDogUmVzb3VyY2VNb2RlbFxuXHQpOlByb21pc2U8Ym9vbGVhbj4ge1xuXHRcdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChhY3Rpb25QYXJhbWV0ZXJJbmZvcy5tYXAoKGFjdGlvblBhcmFtZXRlckluZm8pID0+IGFjdGlvblBhcmFtZXRlckluZm8udmFsaWRhdGlvblByb21pc2UpKTtcblxuXHRcdGNvbnN0IHJlcXVpcmVkUGFyYW1ldGVySW5mb3MgPSBhY3Rpb25QYXJhbWV0ZXJJbmZvcy5maWx0ZXIoKHBhcmFtZXRlckluZm8pID0+IHBhcmFtZXRlckluZm8uZmllbGQuZ2V0UmVxdWlyZWQoKSk7XG5cdFx0Y29uc3QgYWxsTWVzc2FnZXMgPSBtZXNzYWdlTWFuYWdlci5nZXRNZXNzYWdlTW9kZWwoKS5nZXREYXRhKCk7XG5cdFx0Y29uc3QgZW1wdHlSZXF1aXJlZEZpZWxkcyA9IHJlcXVpcmVkUGFyYW1ldGVySW5mb3MuZmlsdGVyKChyZXF1aXJlZFBhcmFtZXRlckluZm8pID0+IHtcblx0XHRcdGNvbnN0IGZpZWxkSWQgPSByZXF1aXJlZFBhcmFtZXRlckluZm8uZmllbGQuZ2V0SWQoKTtcblx0XHRcdGNvbnN0IHJlbGV2YW50TWVzc2FnZXMgPSBhbGxNZXNzYWdlcy5maWx0ZXIoKG1zZzogTWVzc2FnZSkgPT5cblx0XHRcdFx0bXNnLmdldENvbnRyb2xJZHMoKS5zb21lKChjb250cm9sSWQ6IHN0cmluZykgPT4gY29udHJvbElkLmluY2x1ZGVzKGZpZWxkSWQpKVxuXHRcdFx0KTtcblx0XHRcdGlmIChyZWxldmFudE1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmIChyZXF1aXJlZFBhcmFtZXRlckluZm8uaXNNdWx0aVZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiByZXF1aXJlZFBhcmFtZXRlckluZm8udmFsdWUgPT09IHVuZGVmaW5lZCB8fCAhcmVxdWlyZWRQYXJhbWV0ZXJJbmZvLnZhbHVlLmxlbmd0aDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGZpZWxkVmFsdWUgPSAocmVxdWlyZWRQYXJhbWV0ZXJJbmZvLmZpZWxkIGFzIEZpZWxkKS5nZXRWYWx1ZSgpO1xuXHRcdFx0XHRyZXR1cm4gZmllbGRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGZpZWxkVmFsdWUgPT09IG51bGwgfHwgZmllbGRWYWx1ZSA9PT0gXCJcIjtcblx0XHRcdH1cblx0XHR9KTtcblx0XHQvKiBNZXNzYWdlIGZvciBtaXNzaW5nIG1hbmRhdG9yeSB2YWx1ZSBvZiB0aGUgYWN0aW9uIHBhcmFtZXRlciAqL1xuXHRcdGlmIChlbXB0eVJlcXVpcmVkRmllbGRzLmxlbmd0aCkge1xuXHRcdFx0dGhpcy5fYWRkTWVzc2FnZUZvckFjdGlvblBhcmFtZXRlcihcblx0XHRcdFx0bWVzc2FnZU1hbmFnZXIsXG5cdFx0XHRcdGVtcHR5UmVxdWlyZWRGaWVsZHMubWFwKChhY3Rpb25QYXJhbWV0ZXJJbmZvKSA9PiAoe1xuXHRcdFx0XHRcdGFjdGlvblBhcmFtZXRlckluZm86IGFjdGlvblBhcmFtZXRlckluZm8sXG5cdFx0XHRcdFx0bWVzc2FnZTogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19PUEVSQVRJT05TX0FDVElPTl9QQVJBTUVURVJfRElBTE9HX01JU1NJTkdfTUFOREFUT1JZX01TR1wiLCBbXG5cdFx0XHRcdFx0XHQoYWN0aW9uUGFyYW1ldGVySW5mby5maWVsZC5nZXRQYXJlbnQoKT8uZ2V0QWdncmVnYXRpb24oXCJsYWJlbFwiKSBhcyBMYWJlbCkuZ2V0VGV4dCgpXG5cdFx0XHRcdFx0XSlcblx0XHRcdFx0fSkpXG5cdFx0XHQpO1xuXHRcdH1cblx0XHQvKiBDaGVjayB2YWx1ZSBzdGF0ZSBvZiBhbGwgcGFyYW1ldGVycyAqL1xuXHRcdGNvbnN0IGZpcnN0SW52YWxpZFBhcmFtZXRlciA9IGFjdGlvblBhcmFtZXRlckluZm9zLmZpbmQoXG5cdFx0XHQocGFyYW1ldGVySW5mbykgPT4gcGFyYW1ldGVySW5mby5oYXNFcnJvciB8fCBwYXJhbWV0ZXJJbmZvLmZpZWxkLmdldFZhbHVlU3RhdGUoKSA9PT0gXCJFcnJvclwiIHx8IGVtcHR5UmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMocGFyYW1ldGVySW5mbylcblx0XHQpO1xuXHRcdGlmIChmaXJzdEludmFsaWRQYXJhbWV0ZXIpIHtcblx0XHRcdGZpcnN0SW52YWxpZFBhcmFtZXRlci5maWVsZC5mb2N1cygpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGFjdGlvbiBlbmFibGVtZW50LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2V0QWN0aW9uRW5hYmxlbWVudFxuXHQgKiBAcGFyYW0gb0ludGVybmFsTW9kZWxDb250ZXh0IE9iamVjdCBjb250YWluaW5nIHRoZSBjb250ZXh0IG1vZGVsXG5cdCAqIEBwYXJhbSBvQWN0aW9uT3BlcmF0aW9uQXZhaWxhYmxlTWFwIE1hcCBjb250YWluaW5nIHRoZSBvcGVyYXRpb24gYXZhaWxhYmlsaXR5IG9mIGFjdGlvbnNcblx0ICogQHBhcmFtIGFTZWxlY3RlZENvbnRleHRzIEFycmF5IGNvbnRhaW5pbmcgc2VsZWN0ZWQgY29udGV4dHMgb2YgdGhlIGNoYXJ0XG5cdCAqIEBwYXJhbSBzQ29udHJvbCBDb250cm9sIG5hbWVcblx0ICogQHJldHVybnMgVGhlIGFjdGlvbiBlbmFibGVtZW50IHByb21pc2VzXG5cdCAqIEB1aTUtcmVzdHJpY3RlZFxuXHQgKi9cblx0c2V0QWN0aW9uRW5hYmxlbWVudDogYXN5bmMgZnVuY3Rpb24gKFxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0b0FjdGlvbk9wZXJhdGlvbkF2YWlsYWJsZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcblx0XHRhU2VsZWN0ZWRDb250ZXh0czogQ29udGV4dFtdLFxuXHRcdHNDb250cm9sOiBzdHJpbmdcblx0KSB7XG5cdFx0Y29uc3QgYVByb21pc2VzID0gW107XG5cdFx0Zm9yIChjb25zdCBzQWN0aW9uIGluIG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXApIHtcblx0XHRcdGxldCBhUmVxdWVzdFByb21pc2VzOiBQcm9taXNlPF9SZXF1ZXN0ZWRQcm9wZXJ0eT5bXSA9IFtdO1xuXHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KHNBY3Rpb24sIGZhbHNlKTtcblx0XHRcdGNvbnN0IHNQcm9wZXJ0eSA9IG9BY3Rpb25PcGVyYXRpb25BdmFpbGFibGVNYXBbc0FjdGlvbl07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFTZWxlY3RlZENvbnRleHRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IG9TZWxlY3RlZENvbnRleHQgPSBhU2VsZWN0ZWRDb250ZXh0c1tpXTtcblx0XHRcdFx0aWYgKG9TZWxlY3RlZENvbnRleHQpIHtcblx0XHRcdFx0XHRjb25zdCBvQ29udGV4dERhdGEgPSBvU2VsZWN0ZWRDb250ZXh0LmdldE9iamVjdCgpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRcdFx0XHRcdGlmIChzQ29udHJvbCA9PT0gXCJjaGFydFwiKSB7XG5cdFx0XHRcdFx0XHRpZiAoKHNQcm9wZXJ0eSA9PT0gbnVsbCAmJiAhIW9Db250ZXh0RGF0YVtgIyR7c0FjdGlvbn1gXSkgfHwgb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3Qoc1Byb3BlcnR5KSkge1xuXHRcdFx0XHRcdFx0XHQvL2xvb2sgZm9yIGFjdGlvbiBhZHZlcnRpc2VtZW50IGlmIHByZXNlbnQgYW5kIGl0cyB2YWx1ZSBpcyBub3QgbnVsbFxuXHRcdFx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc0FjdGlvbiwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoc0NvbnRyb2wgPT09IFwidGFibGVcIikge1xuXHRcdFx0XHRcdFx0YVJlcXVlc3RQcm9taXNlcyA9IHRoaXMuX3NldEFjdGlvbkVuYWJsZW1lbnRGb3JUYWJsZShcblx0XHRcdFx0XHRcdFx0b1NlbGVjdGVkQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0b0ludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRzQWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRzUHJvcGVydHksXG5cdFx0XHRcdFx0XHRcdGFSZXF1ZXN0UHJvbWlzZXNcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoc0NvbnRyb2wgPT09IFwidGFibGVcIikge1xuXHRcdFx0XHRpZiAoIWFTZWxlY3RlZENvbnRleHRzLmxlbmd0aCkge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufWAsIHtcblx0XHRcdFx0XHRcdGJFbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdGFBcHBsaWNhYmxlOiBbXSxcblx0XHRcdFx0XHRcdGFOb3RBcHBsaWNhYmxlOiBbXVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGFQcm9taXNlcy5wdXNoKENvbW1vblV0aWxzLnNldENvbnRleHRzQmFzZWRPbk9wZXJhdGlvbkF2YWlsYWJsZShvSW50ZXJuYWxNb2RlbENvbnRleHQsIFtdKSk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoYVNlbGVjdGVkQ29udGV4dHMubGVuZ3RoICYmIHR5cGVvZiBzUHJvcGVydHkgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0XHQvLyBXaGVuIGFsbCBwcm9wZXJ0eSB2YWx1ZXMgaGF2ZSBiZWVuIHJldHJpZXZlZCwgc2V0XG5cdFx0XHRcdFx0Ly8gVGhlIGFwcGxpY2FibGUgYW5kIG5vdC1hcHBsaWNhYmxlIHNlbGVjdGVkIGNvbnRleHRzIGZvciBlYWNoIGFjdGlvbiBhbmRcblx0XHRcdFx0XHQvLyBUaGUgZW5hYmxlZCBwcm9wZXJ0eSBvZiB0aGUgZHluYW1pYyBhY3Rpb24gaW4gaW50ZXJuYWwgbW9kZWwgY29udGV4dC5cblx0XHRcdFx0XHRhUHJvbWlzZXMucHVzaChDb21tb25VdGlscy5zZXRDb250ZXh0c0Jhc2VkT25PcGVyYXRpb25BdmFpbGFibGUob0ludGVybmFsTW9kZWxDb250ZXh0LCBhUmVxdWVzdFByb21pc2VzKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UuYWxsKGFQcm9taXNlcyk7XG5cdH0sXG5cdHNldEFjdGlvbkVuYWJsZW1lbnRBZnRlclBhdGNoOiBmdW5jdGlvbiAob1ZpZXc6IFZpZXcsIG9MaXN0QmluZGluZzogT0RhdGFMaXN0QmluZGluZywgb0ludGVybmFsTW9kZWxDb250ZXh0OiBJbnRlcm5hbE1vZGVsQ29udGV4dCkge1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dERhdGEgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQ/LmdldE9iamVjdCgpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRcdGNvbnN0IG9Db250cm9scyA9IChvSW50ZXJuYWxNb2RlbENvbnRleHREYXRhPy5jb250cm9scyB8fCB7fSkgYXMgUmVjb3JkPHN0cmluZywgeyBjb250cm9sSWQ/OiBzdHJpbmcgfT47XG5cdFx0Zm9yIChjb25zdCBzS2V5IGluIG9Db250cm9scykge1xuXHRcdFx0aWYgKG9Db250cm9sc1tzS2V5XSAmJiBvQ29udHJvbHNbc0tleV0uY29udHJvbElkKSB7XG5cdFx0XHRcdGNvbnN0IG9UYWJsZSA9IG9WaWV3LmJ5SWQoc0tleSk7XG5cdFx0XHRcdGlmIChvVGFibGUgJiYgb1RhYmxlLmlzQTxUYWJsZT4oXCJzYXAudWkubWRjLlRhYmxlXCIpKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1Jvd0JpbmRpbmcgPSBvVGFibGUuZ2V0Um93QmluZGluZygpO1xuXHRcdFx0XHRcdGlmIChvUm93QmluZGluZyA9PSBvTGlzdEJpbmRpbmcpIHtcblx0XHRcdFx0XHRcdEFjdGlvblJ1bnRpbWUuc2V0QWN0aW9uRW5hYmxlbWVudChcblx0XHRcdFx0XHRcdFx0b1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdFx0XHRcdEpTT04ucGFyc2Uob1RhYmxlLmRhdGEoXCJvcGVyYXRpb25BdmFpbGFibGVNYXBcIikuY3VzdG9tRGF0YSksXG5cdFx0XHRcdFx0XHRcdG9UYWJsZS5nZXRTZWxlY3RlZENvbnRleHRzKCkgYXMgQ29udGV4dFtdLFxuXHRcdFx0XHRcdFx0XHRcInRhYmxlXCJcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdHVwZGF0ZUVkaXRCdXR0b25WaXNpYmlsaXR5QW5kRW5hYmxlbWVudChvVmlldzogVmlldykge1xuXHRcdGNvbnN0IGlWaWV3TGV2ZWwgPSAob1ZpZXcuZ2V0Vmlld0RhdGEoKSBhcyBCYXNlTWFuaWZlc3RTZXR0aW5ncyk/LnZpZXdMZXZlbCxcblx0XHQgICAgICBpc0VkaXRhYmxlID0gb1ZpZXcuZ2V0TW9kZWwoXCJ1aVwiKT8uZ2V0UHJvcGVydHkoXCIvaXNFZGl0YWJsZVwiKTtcblx0XHRpZiAoKGlWaWV3TGV2ZWwgYXMgbnVtYmVyKSA+IDEgJiYgIGlzRWRpdGFibGUgIT09IHRydWUpIHtcblx0XHRcdGNvbnN0IG9Db250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvVmlldyk7XG5cdFx0XHRjb25zdCBzTWV0YVBhdGggPSBNb2RlbEhlbHBlci5nZXRNZXRhUGF0aEZvckNvbnRleHQob0NvbnRleHQpO1xuXHRcdFx0Y29uc3Qgc0VudGl0eVNldCA9IE1vZGVsSGVscGVyLmdldFJvb3RFbnRpdHlTZXRQYXRoKHNNZXRhUGF0aCk7XG5cdFx0XHRjb25zdCBtZXRhQ29udGV4dCA9IG9Db250ZXh0Py5nZXRNb2RlbCgpPy5nZXRNZXRhTW9kZWwoKT8uZ2V0Q29udGV4dChvQ29udGV4dD8uZ2V0UGF0aCgpKTtcblx0XHRcdGNvbnN0IGNvbnZlcnRlckNvbnRleHQgPSBDb252ZXJ0ZXJDb250ZXh0Py5jcmVhdGVDb252ZXJ0ZXJDb250ZXh0Rm9yTWFjcm8oXG5cdFx0XHRcdHNFbnRpdHlTZXQsXG5cdFx0XHRcdG1ldGFDb250ZXh0LFxuXHRcdFx0XHRvQXBwQ29tcG9uZW50LmdldERpYWdub3N0aWNzKCksXG5cdFx0XHRcdG1lcmdlLFxuXHRcdFx0XHR1bmRlZmluZWRcblx0XHRcdCk7XG5cdFx0XHRjb25zdCBlbnRpdHlTZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpO1xuXHRcdFx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRcdFx0bGV0IHVwZGF0ZUhpZGRlbjtcblx0XHRcdC8vRmluZCB0aGUgVXBkYXRlIEhpZGRlbiBvZiB0aGUgcm9vdCBlbnRpdHkgc2V0IGFuZCBiaW5kIHRoZSBwcm9wZXJ0eSB0byBBbnlFbGVtZW50LCBhbnkgY2hhbmdlcyBpbiB0aGUgcGF0aCBvZiB0aGUgcm9vdCBVcGRhdGVIaWRkZW4gd2lsbCBiZSB1cGRhdGVkIHZpYSB0aGUgcHJvcGVydHksIGludGVybmFsIG1vZGVsIGNvbnRleHQgaXMgdXBkYXRlZCBiYXNlZCBvbiB0aGUgcHJvcGVydHlcblx0XHRcdGNvbnN0IGJVcGRhdGVIaWRkZW4gPSBpc0VudGl0eVNldChlbnRpdHlTZXQpICYmIGVudGl0eVNldC5hbm5vdGF0aW9ucy5VST8uVXBkYXRlSGlkZGVuPy52YWx1ZU9mKCk7XG5cdFx0XHRpZiAoYlVwZGF0ZUhpZGRlbiAhPT0gdHJ1ZSkge1xuXHRcdFx0XHR1cGRhdGVIaWRkZW4gPSBNb2RlbEhlbHBlci5pc1VwZGF0ZUhpZGRlbihlbnRpdHlTZXQsIGVudGl0eVR5cGUpO1xuXHRcdFx0fVxuXHRcdFx0Ly9GaW5kIHRoZSBvcGVyYXRpb24gYXZhaWxhYmxlIHByb3BlcnR5IG9mIHRoZSByb290IGVkaXQgY29uZmlndXJhdGlvbiBhbmQgZmV0Y2ggdGhlIHByb3BlcnR5IHVzaW5nIEFueUVsZW1lbnRcblx0XHRcdGNvbnN0IHNFZGl0RW5hYmxlQmluZGluZyA9IGdldEVkaXRCdXR0b25FbmFibGVkKGNvbnZlcnRlckNvbnRleHQsIHVuZGVmaW5lZCk7XG5cdFx0XHRjb25zdCBkcmFmdFJvb3RQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RHJhZnRSb290UGF0aChvQ29udGV4dCk7XG5cdFx0XHRjb25zdCBzU3RpY2t5Um9vdFBhdGggPSBNb2RlbEhlbHBlci5nZXRTdGlja3lSb290UGF0aChvQ29udGV4dCk7XG5cdFx0XHRjb25zdCBzUGF0aCA9IGRyYWZ0Um9vdFBhdGggfHwgc1N0aWNreVJvb3RQYXRoO1xuXHRcdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRcdGlmIChzUGF0aCkge1xuXHRcdFx0XHRjb25zdCBvUm9vdENvbnRleHQgPSBvVmlldy5nZXRNb2RlbCgpLmJpbmRDb250ZXh0KHNQYXRoKS5nZXRCb3VuZENvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0XHRpZiAodXBkYXRlSGlkZGVuICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRjb25zdCBzSGlkZGVuRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGVxdWFsKGdldEhpZGRlbkV4cHJlc3Npb24oY29udmVydGVyQ29udGV4dCwgdXBkYXRlSGlkZGVuKSwgZmFsc2UpKTtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUVkaXRNb2RlbENvbnRleHQoc0hpZGRlbkV4cHJlc3Npb24sIG9WaWV3LCBvUm9vdENvbnRleHQsIFwicm9vdEVkaXRWaXNpYmxlXCIsIG9JbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNFZGl0RW5hYmxlQmluZGluZykge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlRWRpdE1vZGVsQ29udGV4dChzRWRpdEVuYWJsZUJpbmRpbmcsIG9WaWV3LCBvUm9vdENvbnRleHQsIFwicm9vdEVkaXRFbmFibGVkXCIsIG9JbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0dXBkYXRlRWRpdE1vZGVsQ29udGV4dDogZnVuY3Rpb24gKFxuXHRcdHNCaW5kaW5nRXhwcmVzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRcdG9WaWV3OiBWaWV3LFxuXHRcdG9Sb290Q29udGV4dDogQ29udGV4dCxcblx0XHRzUHJvcGVydHk6IHN0cmluZyxcblx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQ6IEludGVybmFsTW9kZWxDb250ZXh0XG5cdCkge1xuXHRcdGlmIChzQmluZGluZ0V4cHJlc3Npb24pIHtcblx0XHRcdGNvbnN0IG9IaWRkZW5FbGVtZW50ID0gbmV3IEFueUVsZW1lbnQoeyBhbnlUZXh0OiBzQmluZGluZ0V4cHJlc3Npb24gfSk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5zZXRCaW5kaW5nQ29udGV4dChudWxsKTtcblx0XHRcdG9WaWV3LmFkZERlcGVuZGVudChvSGlkZGVuRWxlbWVudCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5nZXRCaW5kaW5nKFwiYW55VGV4dFwiKTtcblx0XHRcdGNvbnN0IG9Db250ZXh0ID0gb0hpZGRlbkVsZW1lbnRcblx0XHRcdFx0LmdldE1vZGVsKClcblx0XHRcdFx0Py5iaW5kQ29udGV4dChvUm9vdENvbnRleHQuZ2V0UGF0aCgpLCBvUm9vdENvbnRleHQsIHsgJCRncm91cElkOiBcIiRhdXRvLkhlcm9lc1wiIH0pXG5cdFx0XHRcdD8uZ2V0Qm91bmRDb250ZXh0KCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudC5zZXRCaW5kaW5nQ29udGV4dChvQ29udGV4dCk7XG5cdFx0XHRvSGlkZGVuRWxlbWVudD8uZ2V0QmluZGluZyhcImFueVRleHRcIik/LmF0dGFjaENoYW5nZSgob0V2ZW50OiBFdmVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvTmV3VmFsdWUgPSAob0V2ZW50LmdldFNvdXJjZSgpIGFzIFByb3BlcnR5QmluZGluZykuZ2V0RXh0ZXJuYWxWYWx1ZSgpO1xuXHRcdFx0XHRvSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoc1Byb3BlcnR5LCBvTmV3VmFsdWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9zZXRBY3Rpb25FbmFibGVtZW50Rm9yVGFibGU6IGZ1bmN0aW9uIChcblx0XHRvU2VsZWN0ZWRDb250ZXh0OiBDb250ZXh0IHwgdW5kZWZpbmVkLFxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dDogSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0c0FjdGlvbjogc3RyaW5nLFxuXHRcdHNQcm9wZXJ0eTogc3RyaW5nLFxuXHRcdGFSZXF1ZXN0UHJvbWlzZXM6IFByb21pc2U8X1JlcXVlc3RlZFByb3BlcnR5PltdXG5cdCkge1xuXHRcdC8vIFJlc2V0IGFsbCBwcm9wZXJ0aWVzIGJlZm9yZSBjb21wdXRhdGlvblxuXHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgZHluYW1pY0FjdGlvbnMvJHtzQWN0aW9ufWAsIHtcblx0XHRcdGJFbmFibGVkOiBmYWxzZSxcblx0XHRcdGFBcHBsaWNhYmxlOiBbXSxcblx0XHRcdGFOb3RBcHBsaWNhYmxlOiBbXVxuXHRcdH0pO1xuXHRcdC8vIE5vdGUgdGhhdCBub24gZHluYW1pYyBhY3Rpb25zIGFyZSBub3QgcHJvY2Vzc2VkIGhlcmUuIFRoZXkgYXJlIGVuYWJsZWQgYmVjYXVzZVxuXHRcdC8vIG9uZSBvciBtb3JlIGFyZSBzZWxlY3RlZCBhbmQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBjb25kaXRpb24gaW4gdGhlIHRlbXBsYXRpbmdcblx0XHQvLyBpcyB0aGVuIHVuZGVmaW5lZCBhbmQgdGh1cyB0aGUgYnV0dG9uIHRha2VzIHRoZSBkZWZhdWx0IGVuYWJsaW5nLCB3aGljaCBpcyB0cnVlIVxuXHRcdGNvbnN0IGFBcHBsaWNhYmxlID0gW10sXG5cdFx0XHRhTm90QXBwbGljYWJsZSA9IFtdLFxuXHRcdFx0c0R5bmFtaWNBY3Rpb25FbmFibGVkUGF0aCA9IGAke29JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQYXRoKCl9L2R5bmFtaWNBY3Rpb25zLyR7c0FjdGlvbn0vYkVuYWJsZWRgO1xuXHRcdGlmICh0eXBlb2Ygc1Byb3BlcnR5ID09PSBcIm9iamVjdFwiICYmIHNQcm9wZXJ0eSAhPT0gbnVsbCAmJiBzUHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKG9TZWxlY3RlZENvbnRleHQpIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dC5nZXRPYmplY3QoKSBhcyBSZWNvcmQ8c3RyaW5nLCBQcmltaXRpdmVUeXBlPjtcblx0XHRcdFx0Y29uc3Qgb1RyYW5zZm9ybWVkQmluZGluZyA9IHRyYW5zZm9ybVJlY3Vyc2l2ZWx5KFxuXHRcdFx0XHRcdHNQcm9wZXJ0eSxcblx0XHRcdFx0XHRcIlBhdGhJbk1vZGVsXCIsXG5cdFx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuXHRcdFx0XHRcdGZ1bmN0aW9uIChvQmluZGluZ0V4cHJlc3Npb246IFBhdGhJbk1vZGVsRXhwcmVzc2lvbjxQcmltaXRpdmVUeXBlPikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9Db250ZXh0RGF0YSA/IGNvbnN0YW50KG9Db250ZXh0RGF0YVtvQmluZGluZ0V4cHJlc3Npb24ucGF0aF0pIDogY29uc3RhbnQoZmFsc2UpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjb25zdCBzUmVzdWx0ID0gY29tcGlsZUV4cHJlc3Npb24ob1RyYW5zZm9ybWVkQmluZGluZyk7XG5cdFx0XHRcdGlmIChzUmVzdWx0ID09PSBcInRydWVcIikge1xuXHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgsIHRydWUpO1xuXHRcdFx0XHRcdGFBcHBsaWNhYmxlLnB1c2gob1NlbGVjdGVkQ29udGV4dCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0YU5vdEFwcGxpY2FibGUucHVzaChvU2VsZWN0ZWRDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Q29tbW9uVXRpbHMuc2V0RHluYW1pY0FjdGlvbkNvbnRleHRzKG9JbnRlcm5hbE1vZGVsQ29udGV4dCwgc0FjdGlvbiwgYUFwcGxpY2FibGUsIGFOb3RBcHBsaWNhYmxlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgb0NvbnRleHREYXRhID0gb1NlbGVjdGVkQ29udGV4dD8uZ2V0T2JqZWN0KCkgYXMgUmVjb3JkPHN0cmluZywgUHJpbWl0aXZlVHlwZT47XG5cdFx0XHRpZiAoc1Byb3BlcnR5ID09PSBudWxsICYmICEhb0NvbnRleHREYXRhW2AjJHtzQWN0aW9ufWBdKSB7XG5cdFx0XHRcdC8vbG9vayBmb3IgYWN0aW9uIGFkdmVydGlzZW1lbnQgaWYgcHJlc2VudCBhbmQgaXRzIHZhbHVlIGlzIG5vdCBudWxsXG5cdFx0XHRcdG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRNb2RlbCgpLnNldFByb3BlcnR5KHNEeW5hbWljQWN0aW9uRW5hYmxlZFBhdGgsIHRydWUpO1xuXHRcdFx0fSBlbHNlIGlmIChvU2VsZWN0ZWRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0Ly8gQ29sbGVjdCBwcm9taXNlcyB0byByZXRyaWV2ZSBzaW5nbGV0b24gb3Igbm9ybWFsIHByb3BlcnR5IHZhbHVlIGFzeW5jaHJvbm91c2x5XG5cdFx0XHRcdGFSZXF1ZXN0UHJvbWlzZXMucHVzaChDb21tb25VdGlscy5yZXF1ZXN0UHJvcGVydHkob1NlbGVjdGVkQ29udGV4dCwgc0FjdGlvbiwgc1Byb3BlcnR5LCBzRHluYW1pY0FjdGlvbkVuYWJsZWRQYXRoKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhUmVxdWVzdFByb21pc2VzO1xuXHR9XG59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
@@ -2,5 +2,5 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/util/merge","sap/fe/core/CommonUtils","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/helpers/TypeGuards","sap/ui/core/message/Message","./controls/AnyElement","./converters/ConverterContext","./converters/objectPage/HeaderAndFooterAction"],function(e,t,n,o,i,a,l,s,r){"use strict";var d=r.getHiddenExpression;var c=r.getEditButtonEnabled;var u=i.isEntitySet;var g=n.transformRecursively;var f=n.equal;var v=n.constant;var p=n.compileExpression;const b={_addMessageForActionParameter:function(e,t){e.addMessages(t.map(e=>{const t=e.actionParameterInfo.field.getBinding(e.actionParameterInfo.isMultiValue?"items":"value");return new a({message:e.message,type:"Error",processor:t===null||t===void 0?void 0:t.getModel(),persistent:true,target:t===null||t===void 0?void 0:t.getResolvedPath()})}))},validateProperties:async function(e,t,n){await Promise.allSettled(t.map(e=>e.validationPromise));const o=t.filter(e=>e.field.getRequired());const i=e.getMessageModel().getData();const a=o.filter(e=>{const t=e.field.getId();const n=i.filter(e=>e.getControlIds().some(e=>e.includes(t)));if(n.length>0){return false}else if(e.isMultiValue){return e.value===undefined||!e.value.length}else{return e.value===undefined||e.value===null||e.value===""}});if(a.length){this._addMessageForActionParameter(e,a.map(e=>{var t;return{actionParameterInfo:e,message:n.getText("C_OPERATIONS_ACTION_PARAMETER_DIALOG_MISSING_MANDATORY_MSG",[((t=e.field.getParent())===null||t===void 0?void 0:t.getAggregation("label")).getText()])}}))}const l=t.find(e=>e.hasError||e.field.getValueState()==="Error"||a.includes(e));if(l){l.field.focus();return false}else{return true}},setActionEnablement:async function(e,n,o,i){const a=[];for(const l in n){let s=[];e.setProperty(l,false);const r=n[l];for(let t=0;t<o.length;t++){const n=o[t];if(n){const t=n.getObject();if(i==="chart"){if(r===null&&!!t[`#${l}`]||n.getObject(r)){e.setProperty(l,true);break}}else if(i==="table"){s=this._setActionEnablementForTable(n,e,l,r,s)}}}if(i==="table"){if(!o.length){e.setProperty(`dynamicActions/${l}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});a.push(t.setContextsBasedOnOperationAvailable(e,[]))}else if(o.length&&typeof r==="string"){a.push(t.setContextsBasedOnOperationAvailable(e,s))}}}return Promise.all(a)},setActionEnablementAfterPatch:function(e,t,n){const o=n===null||n===void 0?void 0:n.getObject();const i=(o===null||o===void 0?void 0:o.controls)||{};for(const n in i){if(i[n]&&i[n].controlId){const o=e.byId(n);if(o&&o.isA("sap.ui.mdc.Table")){const e=o.getRowBinding();if(e==t){b.setActionEnablement(o.getBindingContext("internal"),JSON.parse(o.data("operationAvailableMap").customData),o.getSelectedContexts(),"table")}}}}},updateEditButtonVisibilityAndEnablement(n){var i,a;const l=(i=n.getViewData())===null||i===void 0?void 0:i.viewLevel,r=(a=n.getModel("ui"))===null||a===void 0?void 0:a.getProperty("/isEditable");if(l>1&&r!==true){var g,v,b,m;const i=n.getBindingContext();const a=t.getAppComponent(n);const l=o.getMetaPathForContext(i);const r=o.getRootEntitySetPath(l);const h=i===null||i===void 0?void 0:(g=i.getModel())===null||g===void 0?void 0:(v=g.getMetaModel())===null||v===void 0?void 0:v.getContext(i===null||i===void 0?void 0:i.getPath());const A=s===null||s===void 0?void 0:s.createConverterContextForMacro(r,h,a.getDiagnostics(),e,undefined);const E=A.getEntitySet();const y=A.getEntityType();let P;const M=u(E)&&((b=E.annotations.UI)===null||b===void 0?void 0:(m=b.UpdateHidden)===null||m===void 0?void 0:m.valueOf());if(M!==true){P=o.isUpdateHidden(E,y)}const x=c(A,undefined);const C=o.getDraftRootPath(i);const B=o.getStickyRootPath(i);const O=C||B;const I=n.getBindingContext("internal");if(O){const e=n.getModel().bindContext(O).getBoundContext();if(P!==undefined){const t=p(f(d(A,P),false));this.updateEditModelContext(t,n,e,"rootEditVisible",I)}if(x){this.updateEditModelContext(x,n,e,"rootEditEnabled",I)}}}},updateEditModelContext:function(e,t,n,o,i){if(e){var a,s,r;const d=new l({anyText:e});d.setBindingContext(null);t.addDependent(d);d.getBinding("anyText");const c=(a=d.getModel())===null||a===void 0?void 0:(s=a.bindContext(n.getPath(),n,{$$groupId:"$auto.Heroes"}))===null||s===void 0?void 0:s.getBoundContext();d.setBindingContext(c);d===null||d===void 0?void 0:(r=d.getBinding("anyText"))===null||r===void 0?void 0:r.attachChange(e=>{const t=e.getSource().getExternalValue();i.setProperty(o,t)})}},_setActionEnablementForTable:function(e,n,o,i,a){n.setProperty(`dynamicActions/${o}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});const l=[],s=[],r=`${n.getPath()}/dynamicActions/${o}/bEnabled`;if(typeof i==="object"&&i!==null&&i!==undefined){if(e){const t=e.getObject();const o=g(i,"PathInModel",function(e){return t?v(t[e.path]):v(false)},true);const a=p(o);if(a==="true"){n.getModel().setProperty(r,true);l.push(e)}else{s.push(e)}}t.setDynamicActionContexts(n,o,l,s)}else{const l=e===null||e===void 0?void 0:e.getObject();if(i===null&&!!l[`#${o}`]){n.getModel().setProperty(r,true)}else if(e!==undefined){a.push(t.requestProperty(e,o,i,r))}}return a}};return b},false);
5
+ sap.ui.define(["sap/base/util/merge","sap/fe/core/CommonUtils","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/helpers/TypeGuards","sap/ui/core/message/Message","./controls/AnyElement","./converters/ConverterContext","./converters/objectPage/HeaderAndFooterAction"],function(e,t,n,o,i,a,s,l,r){"use strict";var d=r.getHiddenExpression;var c=r.getEditButtonEnabled;var u=i.isEntitySet;var g=n.transformRecursively;var f=n.equal;var v=n.constant;var p=n.compileExpression;const b={_addMessageForActionParameter:function(e,t){e.addMessages(t.map(e=>{const t=e.actionParameterInfo.field.getBinding(e.actionParameterInfo.isMultiValue?"items":"value");return new a({message:e.message,type:"Error",processor:t===null||t===void 0?void 0:t.getModel(),persistent:true,target:t===null||t===void 0?void 0:t.getResolvedPath()})}))},validateProperties:async function(e,t,n){await Promise.allSettled(t.map(e=>e.validationPromise));const o=t.filter(e=>e.field.getRequired());const i=e.getMessageModel().getData();const a=o.filter(e=>{const t=e.field.getId();const n=i.filter(e=>e.getControlIds().some(e=>e.includes(t)));if(n.length>0){return false}else if(e.isMultiValue){return e.value===undefined||!e.value.length}else{const t=e.field.getValue();return t===undefined||t===null||t===""}});if(a.length){this._addMessageForActionParameter(e,a.map(e=>{var t;return{actionParameterInfo:e,message:n.getText("C_OPERATIONS_ACTION_PARAMETER_DIALOG_MISSING_MANDATORY_MSG",[((t=e.field.getParent())===null||t===void 0?void 0:t.getAggregation("label")).getText()])}}))}const s=t.find(e=>e.hasError||e.field.getValueState()==="Error"||a.includes(e));if(s){s.field.focus();return false}else{return true}},setActionEnablement:async function(e,n,o,i){const a=[];for(const s in n){let l=[];e.setProperty(s,false);const r=n[s];for(let t=0;t<o.length;t++){const n=o[t];if(n){const t=n.getObject();if(i==="chart"){if(r===null&&!!t[`#${s}`]||n.getObject(r)){e.setProperty(s,true);break}}else if(i==="table"){l=this._setActionEnablementForTable(n,e,s,r,l)}}}if(i==="table"){if(!o.length){e.setProperty(`dynamicActions/${s}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});a.push(t.setContextsBasedOnOperationAvailable(e,[]))}else if(o.length&&typeof r==="string"){a.push(t.setContextsBasedOnOperationAvailable(e,l))}}}return Promise.all(a)},setActionEnablementAfterPatch:function(e,t,n){const o=n===null||n===void 0?void 0:n.getObject();const i=(o===null||o===void 0?void 0:o.controls)||{};for(const n in i){if(i[n]&&i[n].controlId){const o=e.byId(n);if(o&&o.isA("sap.ui.mdc.Table")){const e=o.getRowBinding();if(e==t){b.setActionEnablement(o.getBindingContext("internal"),JSON.parse(o.data("operationAvailableMap").customData),o.getSelectedContexts(),"table")}}}}},updateEditButtonVisibilityAndEnablement(n){var i,a;const s=(i=n.getViewData())===null||i===void 0?void 0:i.viewLevel,r=(a=n.getModel("ui"))===null||a===void 0?void 0:a.getProperty("/isEditable");if(s>1&&r!==true){var g,v,b,m;const i=n.getBindingContext();const a=t.getAppComponent(n);const s=o.getMetaPathForContext(i);const r=o.getRootEntitySetPath(s);const h=i===null||i===void 0?void 0:(g=i.getModel())===null||g===void 0?void 0:(v=g.getMetaModel())===null||v===void 0?void 0:v.getContext(i===null||i===void 0?void 0:i.getPath());const A=l===null||l===void 0?void 0:l.createConverterContextForMacro(r,h,a.getDiagnostics(),e,undefined);const E=A.getEntitySet();const y=A.getEntityType();let P;const M=u(E)&&((b=E.annotations.UI)===null||b===void 0?void 0:(m=b.UpdateHidden)===null||m===void 0?void 0:m.valueOf());if(M!==true){P=o.isUpdateHidden(E,y)}const x=c(A,undefined);const C=o.getDraftRootPath(i);const B=o.getStickyRootPath(i);const O=C||B;const I=n.getBindingContext("internal");if(O){const e=n.getModel().bindContext(O).getBoundContext();if(P!==undefined){const t=p(f(d(A,P),false));this.updateEditModelContext(t,n,e,"rootEditVisible",I)}if(x){this.updateEditModelContext(x,n,e,"rootEditEnabled",I)}}}},updateEditModelContext:function(e,t,n,o,i){if(e){var a,l,r;const d=new s({anyText:e});d.setBindingContext(null);t.addDependent(d);d.getBinding("anyText");const c=(a=d.getModel())===null||a===void 0?void 0:(l=a.bindContext(n.getPath(),n,{$$groupId:"$auto.Heroes"}))===null||l===void 0?void 0:l.getBoundContext();d.setBindingContext(c);d===null||d===void 0?void 0:(r=d.getBinding("anyText"))===null||r===void 0?void 0:r.attachChange(e=>{const t=e.getSource().getExternalValue();i.setProperty(o,t)})}},_setActionEnablementForTable:function(e,n,o,i,a){n.setProperty(`dynamicActions/${o}`,{bEnabled:false,aApplicable:[],aNotApplicable:[]});const s=[],l=[],r=`${n.getPath()}/dynamicActions/${o}/bEnabled`;if(typeof i==="object"&&i!==null&&i!==undefined){if(e){const t=e.getObject();const o=g(i,"PathInModel",function(e){return t?v(t[e.path]):v(false)},true);const a=p(o);if(a==="true"){n.getModel().setProperty(r,true);s.push(e)}else{l.push(e)}}t.setDynamicActionContexts(n,o,s,l)}else{const s=e===null||e===void 0?void 0:e.getObject();if(i===null&&!!s[`#${o}`]){n.getModel().setProperty(r,true)}else if(e!==undefined){a.push(t.requestProperty(e,o,i,r))}}return a}};return b},false);
6
6
  //# sourceMappingURL=ActionRuntime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRuntime.js","names":["sap","ui","define","merge","CommonUtils","BindingToolkit","ModelHelper","TypeGuards","Message","AnyElement","ConverterContext","HeaderAndFooterAction","getHiddenExpression","getEditButtonEnabled","isEntitySet","transformRecursively","equal","constant","compileExpression","ActionRuntime","_addMessageForActionParameter","messageManager","messageParameters","addMessages","map","messageParameter","binding","actionParameterInfo","field","getBinding","isMultiValue","message","type","processor","getModel","persistent","target","getResolvedPath","validateProperties","async","actionParameterInfos","resourceModel","Promise","allSettled","validationPromise","requiredParameterInfos","filter","parameterInfo","getRequired","allMessages","getMessageModel","getData","emptyRequiredFields","requiredParameterInfo","fieldId","getId","relevantMessages","msg","getControlIds","some","controlId","includes","length","value","undefined","this","_actionParameterInfo$","getText","getParent","getAggregation","firstInvalidParameter","find","hasError","getValueState","focus","setActionEnablement","oInternalModelContext","oActionOperationAvailableMap","aSelectedContexts","sControl","aPromises","sAction","aRequestPromises","setProperty","sProperty","i","oSelectedContext","oContextData","getObject","_setActionEnablementForTable","bEnabled","aApplicable","aNotApplicable","push","setContextsBasedOnOperationAvailable","all","setActionEnablementAfterPatch","oView","oListBinding","oInternalModelContextData","oControls","controls","sKey","oTable","byId","isA","oRowBinding","getRowBinding","getBindingContext","JSON","parse","data","customData","getSelectedContexts","updateEditButtonVisibilityAndEnablement","_oView$getViewData","_oView$getModel","iViewLevel","getViewData","viewLevel","isEditable","getProperty","_oContext$getModel","_oContext$getModel$ge","_entitySet$annotation","_entitySet$annotation2","oContext","oAppComponent","getAppComponent","sMetaPath","getMetaPathForContext","sEntitySet","getRootEntitySetPath","metaContext","getMetaModel","getContext","getPath","converterContext","createConverterContextForMacro","getDiagnostics","entitySet","getEntitySet","entityType","getEntityType","updateHidden","bUpdateHidden","annotations","UI","UpdateHidden","valueOf","isUpdateHidden","sEditEnableBinding","draftRootPath","getDraftRootPath","sStickyRootPath","getStickyRootPath","sPath","oRootContext","bindContext","getBoundContext","sHiddenExpression","updateEditModelContext","sBindingExpression","_oHiddenElement$getMo","_oHiddenElement$getMo2","_oHiddenElement$getBi","oHiddenElement","anyText","setBindingContext","addDependent","$$groupId","attachChange","oEvent","oNewValue","getSource","getExternalValue","sDynamicActionEnabledPath","oTransformedBinding","oBindingExpression","path","sResult","setDynamicActionContexts","requestProperty"],"sources":["ActionRuntime-dbg.js"],"mappings":"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"}
1
+ {"version":3,"file":"ActionRuntime.js","names":["sap","ui","define","merge","CommonUtils","BindingToolkit","ModelHelper","TypeGuards","Message","AnyElement","ConverterContext","HeaderAndFooterAction","getHiddenExpression","getEditButtonEnabled","isEntitySet","transformRecursively","equal","constant","compileExpression","ActionRuntime","_addMessageForActionParameter","messageManager","messageParameters","addMessages","map","messageParameter","binding","actionParameterInfo","field","getBinding","isMultiValue","message","type","processor","getModel","persistent","target","getResolvedPath","validateProperties","async","actionParameterInfos","resourceModel","Promise","allSettled","validationPromise","requiredParameterInfos","filter","parameterInfo","getRequired","allMessages","getMessageModel","getData","emptyRequiredFields","requiredParameterInfo","fieldId","getId","relevantMessages","msg","getControlIds","some","controlId","includes","length","value","undefined","fieldValue","getValue","this","_actionParameterInfo$","getText","getParent","getAggregation","firstInvalidParameter","find","hasError","getValueState","focus","setActionEnablement","oInternalModelContext","oActionOperationAvailableMap","aSelectedContexts","sControl","aPromises","sAction","aRequestPromises","setProperty","sProperty","i","oSelectedContext","oContextData","getObject","_setActionEnablementForTable","bEnabled","aApplicable","aNotApplicable","push","setContextsBasedOnOperationAvailable","all","setActionEnablementAfterPatch","oView","oListBinding","oInternalModelContextData","oControls","controls","sKey","oTable","byId","isA","oRowBinding","getRowBinding","getBindingContext","JSON","parse","data","customData","getSelectedContexts","updateEditButtonVisibilityAndEnablement","_oView$getViewData","_oView$getModel","iViewLevel","getViewData","viewLevel","isEditable","getProperty","_oContext$getModel","_oContext$getModel$ge","_entitySet$annotation","_entitySet$annotation2","oContext","oAppComponent","getAppComponent","sMetaPath","getMetaPathForContext","sEntitySet","getRootEntitySetPath","metaContext","getMetaModel","getContext","getPath","converterContext","createConverterContextForMacro","getDiagnostics","entitySet","getEntitySet","entityType","getEntityType","updateHidden","bUpdateHidden","annotations","UI","UpdateHidden","valueOf","isUpdateHidden","sEditEnableBinding","draftRootPath","getDraftRootPath","sStickyRootPath","getStickyRootPath","sPath","oRootContext","bindContext","getBoundContext","sHiddenExpression","updateEditModelContext","sBindingExpression","_oHiddenElement$getMo","_oHiddenElement$getMo2","_oHiddenElement$getBi","oHiddenElement","anyText","setBindingContext","addDependent","$$groupId","attachChange","oEvent","oNewValue","getSource","getExternalValue","sDynamicActionEnabledPath","oTransformedBinding","oBindingExpression","path","sResult","setDynamicActionContexts","requestProperty"],"sources":["ActionRuntime-dbg.js"],"mappings":"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"}
@@ -103,9 +103,8 @@ const ActionRuntime = {
103
103
  } else if (requiredParameterInfo.isMultiValue) {
104
104
  return requiredParameterInfo.value === undefined || !requiredParameterInfo.value.length;
105
105
  } else {
106
- return (
107
- requiredParameterInfo.value === undefined || requiredParameterInfo.value === null || requiredParameterInfo.value === ""
108
- );
106
+ const fieldValue = (requiredParameterInfo.field as Field).getValue();
107
+ return fieldValue === undefined || fieldValue === null || fieldValue === "";
109
108
  }
110
109
  });
111
110
  /* Message for missing mandatory value of the action parameter */