@sapui5/sap.fe.core 1.124.0 → 1.124.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 (34) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +15 -4
  4. package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +10 -0
  5. package/src/sap/fe/core/controllerextensions/EditFlow.js +2 -1
  6. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1 -0
  7. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -2
  8. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +1 -1
  9. package/src/sap/fe/core/controllerextensions/Routing.js +5 -3
  10. package/src/sap/fe/core/controllerextensions/Routing.ts +4 -2
  11. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  12. package/src/sap/fe/core/controllerextensions/SideEffects.ts +5 -5
  13. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +54 -40
  14. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +62 -38
  15. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +2 -2
  16. package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1 -1
  17. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
  18. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +4 -0
  19. package/src/sap/fe/core/fpm/manifest.json +1 -1
  20. package/src/sap/fe/core/helpers/BindingToolkit.js +17 -5
  21. package/src/sap/fe/core/helpers/BindingToolkit.ts +8 -1
  22. package/src/sap/fe/core/helpers/ModelHelper.js +9 -1
  23. package/src/sap/fe/core/helpers/ModelHelper.ts +7 -0
  24. package/src/sap/fe/core/library.js +1 -1
  25. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +10 -6
  26. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +20 -5
  27. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
  28. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  29. package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
  30. package/src/sap/fe/core/services/RoutingServiceFactory.ts +8 -1
  31. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +3 -3
  32. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +7 -2
  33. package/src/sap/fe/core/templating/UIFormatters.js +17 -9
  34. package/src/sap/fe/core/templating/UIFormatters.ts +26 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.124.0",
3
+ "version": "1.124.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.124.0</version>
9
+ <version>1.124.2</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -119,6 +119,17 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
119
119
  return getInvolvedDataModelObjectsForTargetPath(targetPath ?? ((_owner$preprocessorCo = owner.preprocessorContext) === null || _owner$preprocessorCo === void 0 ? void 0 : _owner$preprocessorCo.fullContextPath), (_owner$preprocessorCo2 = owner.preprocessorContext) === null || _owner$preprocessorCo2 === void 0 ? void 0 : _owner$preprocessorCo2.models.metaModel);
120
120
  }
121
121
 
122
+ /**
123
+ * Retrieves the context path from the owner component.
124
+ *
125
+ * @returns The context path
126
+ */;
127
+ _proto.getOwnerContextPath = function getOwnerContextPath() {
128
+ var _owner$preprocessorCo3;
129
+ const owner = this._getOwner();
130
+ return (_owner$preprocessorCo3 = owner.preprocessorContext) === null || _owner$preprocessorCo3 === void 0 ? void 0 : _owner$preprocessorCo3.fullContextPath;
131
+ }
132
+
122
133
  /**
123
134
  * Get the data model object for the given metapath and optional contextPath.
124
135
  * @param metapath
@@ -127,10 +138,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
127
138
  * @returns The data model object path
128
139
  */;
129
140
  _proto.getDataModelObjectForMetaPath = function getDataModelObjectForMetaPath(metapath, contextPath) {
130
- var _owner$preprocessorCo3, _owner$preprocessorCo4, _contextPathToUse;
141
+ var _owner$preprocessorCo4, _owner$preprocessorCo5, _contextPathToUse;
131
142
  const owner = this._getOwner();
132
- const metaModel = (_owner$preprocessorCo3 = owner.preprocessorContext) === null || _owner$preprocessorCo3 === void 0 ? void 0 : _owner$preprocessorCo3.models.metaModel;
133
- let contextPathToUse = contextPath ?? ((_owner$preprocessorCo4 = owner.preprocessorContext) === null || _owner$preprocessorCo4 === void 0 ? void 0 : _owner$preprocessorCo4.fullContextPath);
143
+ const metaModel = (_owner$preprocessorCo4 = owner.preprocessorContext) === null || _owner$preprocessorCo4 === void 0 ? void 0 : _owner$preprocessorCo4.models.metaModel;
144
+ let contextPathToUse = contextPath ?? ((_owner$preprocessorCo5 = owner.preprocessorContext) === null || _owner$preprocessorCo5 === void 0 ? void 0 : _owner$preprocessorCo5.fullContextPath);
134
145
  contextPathToUse = (_contextPathToUse = contextPathToUse) !== null && _contextPathToUse !== void 0 && _contextPathToUse.startsWith("/") ? contextPathToUse : undefined;
135
146
  if (!metaModel || !(contextPathToUse || metapath.charAt(0) === "/")) {
136
147
  throw new Error("No metamodel or metapath is not reachable with contextPath");
@@ -216,4 +227,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/MetaModelConverter", "sap
216
227
  const BuildingBlockBase = _BuildingBlockBase;
217
228
  return BuildingBlockBase;
218
229
  }, false);
219
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJkZWZpbmVVSTVDbGFzcyIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0Iiwic2V0dGluZ3MiLCJvdGhlcnMiLCJpZCIsIl9vbGREb21SZWYiLCJfYXBwbHlpbmdTZXR0aW5ncyIsImFwcGx5U2V0dGluZ3MiLCJtU2V0dGluZ3MiLCJvU2NvcGUiLCJfY2hlY2tJZk1ldGFkYXRhUmVhZHkiLCJfZ2V0T3duZXIiLCJjb250cm9sIiwib3duZXIiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsImlzQSIsImdldFBhcmVudCIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJkZXN0cm95Iiwic3VwcHJlc3NJbnZhbGlkYXRlIiwidmlld1N0YXRlIiwiZGVyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJfbW9kZWxDb250ZXh0Q2hhbmdlRXZlbnRIYW5kbGVyIiwiZGV0YWNoRXZlbnQiLCJMb2ciLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnQiLCJfb3duZXJDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRQcmVwcm9jZXNzb3JDb250ZXh0IiwiYXBwQ29tcG9uZW50IiwidW5kZWZpbmVkIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm1vZGVscyIsIm1ldGFNb2RlbCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJzdGFydHNXaXRoIiwiY2hhckF0IiwiRXJyb3IiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwicmVuZGVyIiwib1JtIiwib0NvbnRyb2wiLCJjb250ZW50IiwiZ2V0VmlzaWJsZSIsIkludmlzaWJsZVJlbmRlcmVyIiwicmVuZGVyQ29udHJvbCIsIm9uQWZ0ZXJSZW5kZXJpbmciLCJkb21SZWYiLCJnZXREb21SZWYiLCJXZWFrUmVmIiwiYmluZFByb3BlcnR5IiwibmFtZSIsImJpbmRpbmdJbmZvIiwicHJvcGVydHlNZXRhZGF0YSIsImdldE1ldGFkYXRhIiwiZ2V0UHJvcGVydHkiLCJiaW5kYWJsZSIsImdyb3VwIiwib0NvbnRlbnQiLCJkZXJlZiIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRGb2N1c0RvbVJlZiIsImVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUiLCJfb0VsZW1lbnQiLCJtQXJpYVByb3BzIiwib1BhcmVudCIsImNyZWF0ZUlkIiwiZ2V0SWQiLCJzdHJpbmdQYXJ0cyIsImdlbmVyYXRlIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJ0ZXh0SUQiLCJwYXJhbWV0ZXJzIiwibWV0YVBhdGgiLCJnZXRNb2RlbCIsImdldFRleHQiLCJDb250cm9sIiwiQnVpbGRpbmdCbG9ja0Jhc2UiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkJ1aWxkaW5nQmxvY2tCYXNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBGRVZpZXcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL2ZlL2NvcmUvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBJVmlld1N0YXRlQ29udHJpYnV0b3IgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL3ZpZXdTdGF0ZS9JVmlld1N0YXRlQ29udHJpYnV0b3JcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUsIFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgYWdncmVnYXRpb24sIGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSB7ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIFByb3BlcnR5QmluZGluZ0luZm8gfSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBJbnZpc2libGVSZW5kZXJlciBmcm9tIFwic2FwL3VpL2NvcmUvSW52aXNpYmxlUmVuZGVyZXJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5cbi8qKlxuICogRGVmaW5lcyBhIGNvbnRyb2wgdGhhdCB3aWxsIG5vdCBleGlzdCBpbiB0aGUgRE9NLlxuICogSW5zdGVhZCwgb25seSBpdHMgY2hpbGQgd2lsbCBiZSB0aGVyZSBhbmQgdGhpcyBjb250cm9sIHdpbGwgZm9yd2FyZCBhbGwgRE9NIHJlbGF0ZWQgaW5zdHJ1Y3Rpb24gdG8gaXQuXG4gKlxuICogQGV4cGVyaW1lbnRhbFxuICogQHNpbmNlIDEuMTIxLjBcbiAqIEBwdWJsaWNcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MuQnVpbGRpbmdCbG9ja0Jhc2VcIilcbmNsYXNzIF9CdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudD4gZXh0ZW5kcyBDb250cm9sIHtcblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5FbGVtZW50XCIsIG11bHRpcGxlOiBmYWxzZSwgaXNEZWZhdWx0OiB0cnVlIH0pXG5cdGNvbnRlbnQ/OiBUO1xuXG5cdF9vbGREb21SZWY6IFdlYWtSZWY8RWxlbWVudD4gfCBudWxsID0gbnVsbDtcblxuXHRwcm90ZWN0ZWQgX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIF9tb2RlbENvbnRleHRDaGFuZ2VFdmVudEhhbmRsZXI/OiBGdW5jdGlvbjtcblxuXHRjb25zdHJ1Y3RvcihzZXR0aW5nczogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxfQnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0aWYgKHR5cGVvZiBzZXR0aW5ncyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0b3RoZXJzID8/PSB7fTtcblx0XHRcdG90aGVycy5pZCA9IHNldHRpbmdzO1xuXHRcdH1cblx0XHRzdXBlcihzZXR0aW5ncyBhcyB1bmtub3duIGFzIHN0cmluZywgb3RoZXJzKTtcblx0fVxuXG5cdGFwcGx5U2V0dGluZ3MobVNldHRpbmdzOiAkTWFuYWdlZE9iamVjdFNldHRpbmdzLCBvU2NvcGU/OiBvYmplY3QpOiB0aGlzIHtcblx0XHR0aGlzLl9hcHBseWluZ1NldHRpbmdzID0gdHJ1ZTtcblx0XHRzdXBlci5hcHBseVNldHRpbmdzKG1TZXR0aW5ncywgb1Njb3BlKTtcblx0XHR0aGlzLl9hcHBseWluZ1NldHRpbmdzID0gZmFsc2U7XG5cdFx0dGhpcy5fY2hlY2tJZk1ldGFkYXRhUmVhZHkodHJ1ZSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRfZ2V0T3duZXIoKTogVGVtcGxhdGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0bGV0IGNvbnRyb2w6IENvbnRyb2wgfCB1bmRlZmluZWQgPSB0aGlzO1xuXHRcdGxldCBvd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihjb250cm9sKTtcblx0XHR3aGlsZSAoIW93bmVyICYmIGNvbnRyb2wgJiYgIWNvbnRyb2wuaXNBPEZFVmlldz4oXCJzYXAudWkuY29yZS5tdmMuVmlld1wiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0cmV0dXJuIG93bmVyO1xuXHRcdH1cblx0fVxuXG5cdGdldFBhZ2VDb250cm9sbGVyKCk6IFBhZ2VDb250cm9sbGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0Um9vdENvbnRyb2xsZXIoKTtcblx0fVxuXG5cdGRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlOiBib29sZWFuIHwgdW5kZWZpbmVkKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuaXNBPElWaWV3U3RhdGVDb250cmlidXRvcjx1bmtub3duPiAmIE1hbmFnZWRPYmplY3Q+KFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMudmlld1N0YXRlLklWaWV3U3RhdGVDb250cmlidXRvclwiKSkge1xuXHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGU/LmRlcmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdH1cblx0XHRzdXBlci5kZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZSk7XG5cdH1cblxuXHRfY2hlY2tJZk1ldGFkYXRhUmVhZHkoZnJvbUFwcGx5U2V0dGluZ3MgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAob3duZXIpIHtcblx0XHRcdHRoaXMub25NZXRhZGF0YUF2YWlsYWJsZShvd25lcik7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMuaXNBPElWaWV3U3RhdGVDb250cmlidXRvcjx1bmtub3duPiAmIE1hbmFnZWRPYmplY3Q+KFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMudmlld1N0YXRlLklWaWV3U3RhdGVDb250cmlidXRvclwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8udmlld1N0YXRlLnJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHRcdH1cblx0XHRcdGlmICh0aGlzLl9tb2RlbENvbnRleHRDaGFuZ2VFdmVudEhhbmRsZXIpIHtcblx0XHRcdFx0dGhpcy5kZXRhY2hFdmVudChcIm1vZGVsQ29udGV4dENoYW5nZVwiLCB0aGlzLl9tb2RlbENvbnRleHRDaGFuZ2VFdmVudEhhbmRsZXIpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoZnJvbUFwcGx5U2V0dGluZ3MpIHtcblx0XHRcdFx0Ly8gSW4gY2FzZSBjb3VsZG4ndCBjcmVhdGUgdGhlIGNvbnRlbnQgZHVyaW5nIHRoZSBhcHBseVNldHRpbmdzLCB0cnkgYWdhaW5cblx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XCJUaGUgYnVpbGRpbmcgYmxvY2sgd2FzIG5vdCBjcmVhdGVkIHdpdGhpbiBhbiBFeHRlbnNpb25BUEkucnVuV2l0aEZQTUNvbnRleHQgY2FsbCwgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbiBpdCdzIHJlY29tbWVuZGVkIHRvIGRvIHNvLlwiLFxuXHRcdFx0XHRcdHRoaXMgYXMgdW5rbm93biBhcyBzdHJpbmdcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGlmICghdGhpcy5fbW9kZWxDb250ZXh0Q2hhbmdlRXZlbnRIYW5kbGVyKSB7XG5cdFx0XHRcdHRoaXMuX21vZGVsQ29udGV4dENoYW5nZUV2ZW50SGFuZGxlciA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0XHR0aGlzLl9jaGVja0lmTWV0YWRhdGFSZWFkeSgpO1xuXHRcdFx0XHR9O1xuXHRcdFx0XHR0aGlzLmF0dGFjaEV2ZW50KFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIHRoaXMuX21vZGVsQ29udGV4dENoYW5nZUV2ZW50SGFuZGxlcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjaGlsZCBjbGFzc1xuXHR9XG5cblx0Z2V0QXBwQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcj8uaXNBPEVuaGFuY2VXaXRoVUk1PFRlbXBsYXRlQ29tcG9uZW50Pj4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0cmV0dXJuIG93bmVyLmdldFByZXByb2Nlc3NvckNvbnRleHQoKT8uYXBwQ29tcG9uZW50O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXG5cdGdldERhdGFNb2RlbE9iamVjdFBhdGg8Tj4odGFyZ2V0UGF0aDogc3RyaW5nKTogRGF0YU1vZGVsT2JqZWN0UGF0aDxOPiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpITtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aChcblx0XHRcdHRhcmdldFBhdGggPz8gb3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoLFxuXHRcdFx0b3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8ubW9kZWxzLm1ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbFxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBkYXRhIG1vZGVsIG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGFwYXRoIGFuZCBvcHRpb25hbCBjb250ZXh0UGF0aC5cblx0ICogQHBhcmFtIG1ldGFwYXRoXG5cdCAqIEBwYXJhbSBjb250ZXh0UGF0aFxuXHQgKlxuXHQgKiBAcmV0dXJucyBUaGUgZGF0YSBtb2RlbCBvYmplY3QgcGF0aFxuXHQgKi9cblx0Z2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihcblx0XHRtZXRhcGF0aDogc3RyaW5nLFxuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nXG5cdCk6IERhdGFNb2RlbE9iamVjdFBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpITtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSBvd25lci5wcmVwcm9jZXNzb3JDb250ZXh0Py5tb2RlbHMubWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsO1xuXHRcdGxldCBjb250ZXh0UGF0aFRvVXNlID0gY29udGV4dFBhdGggPz8gb3duZXIucHJlcHJvY2Vzc29yQ29udGV4dD8uZnVsbENvbnRleHRQYXRoO1xuXHRcdGNvbnRleHRQYXRoVG9Vc2UgPSBjb250ZXh0UGF0aFRvVXNlPy5zdGFydHNXaXRoKFwiL1wiKSA/IGNvbnRleHRQYXRoVG9Vc2UgOiB1bmRlZmluZWQ7XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShjb250ZXh0UGF0aFRvVXNlIHx8IG1ldGFwYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyBtZXRhbW9kZWwgb3IgbWV0YXBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoIGNvbnRleHRQYXRoXCIpO1xuXHRcdH1cblx0XHRsZXQgbWV0YUNvbnRleHQgPSBjb250ZXh0UGF0aFRvVXNlID8gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGNvbnRleHRQYXRoVG9Vc2UpIDogdW5kZWZpbmVkO1xuXHRcdG1ldGFDb250ZXh0ID0gbWV0YUNvbnRleHQgPyBtZXRhQ29udGV4dCA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YXBhdGgsIG1ldGFDb250ZXh0KTtcblx0XHRyZXR1cm4gbWV0YVBhdGhDb250ZXh0XG5cdFx0XHQ/IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihtZXRhUGF0aENvbnRleHQsIG1ldGFDb250ZXh0KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyPFQgZXh0ZW5kcyBDb250cm9sPihvUm06IFJlbmRlck1hbmFnZXIsIG9Db250cm9sOiBCdWlsZGluZ0Jsb2NrQmFzZTxUPik6IHZvaWQge1xuXHRcdGlmICghb0NvbnRyb2wuY29udGVudCB8fCBvQ29udHJvbC5nZXRWaXNpYmxlKCkgPT09IGZhbHNlKSB7XG5cdFx0XHRJbnZpc2libGVSZW5kZXJlci5yZW5kZXIob1JtLCBvQ29udHJvbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHRcdH1cblx0fVxuXG5cdC8vc2V0IHRoZSBvbGQgZG9tIHJlZlxuXHRvbkFmdGVyUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdGNvbnN0IGRvbVJlZiA9IHRoaXMuZ2V0RG9tUmVmKCk7XG5cdFx0aWYgKGRvbVJlZikge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbmV3IFdlYWtSZWYoZG9tUmVmKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fb2xkRG9tUmVmID0gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRiaW5kUHJvcGVydHkobmFtZTogc3RyaW5nLCBiaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHRoaXMge1xuXHRcdGNvbnN0IHByb3BlcnR5TWV0YWRhdGEgPSB0aGlzLmdldE1ldGFkYXRhKCkuZ2V0UHJvcGVydHkobmFtZSk7XG5cdFx0aWYgKHByb3BlcnR5TWV0YWRhdGE/LmJpbmRhYmxlID09PSBmYWxzZSAmJiBwcm9wZXJ0eU1ldGFkYXRhLmdyb3VwID09PSBcIkRhdGFcIikge1xuXHRcdFx0KHRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW25hbWVdID0gYmluZGluZ0luZm87XG5cdFx0fSBlbHNlIHtcblx0XHRcdHN1cGVyLmJpbmRQcm9wZXJ0eShuYW1lLCBiaW5kaW5nSW5mbyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0Z2V0RG9tUmVmKCk6IEVsZW1lbnQgfCBudWxsIHtcblx0XHRjb25zdCBvQ29udGVudCA9IHRoaXMuY29udGVudDtcblx0XHRsZXQgZG9tUmVmOiBFbGVtZW50IHwgbnVsbCA9IG9Db250ZW50Py5nZXREb21SZWYoKSA/PyBzdXBlci5nZXREb21SZWYoKTtcblx0XHRpZiAoIWRvbVJlZikge1xuXHRcdFx0ZG9tUmVmID0gdGhpcy5fb2xkRG9tUmVmPy5kZXJlZigpID8/IG51bGw7XG5cdFx0XHRpZiAoZG9tUmVmKSB7XG5cdFx0XHRcdHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkb21SZWYuaWQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZG9tUmVmO1xuXHR9XG5cblx0Z2V0Rm9jdXNEb21SZWYoKTogRWxlbWVudCB8IG51bGwge1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdHJldHVybiBvQ29udGVudCA/IG9Db250ZW50LmdldEZvY3VzRG9tUmVmKCkgOiBzdXBlci5nZXRGb2N1c0RvbVJlZigpO1xuXHR9XG5cblx0ZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZShfb0VsZW1lbnQ6IG9iamVjdCwgbUFyaWFQcm9wczogb2JqZWN0KTogb2JqZWN0IHtcblx0XHRjb25zdCBvUGFyZW50ID0gdGhpcy5nZXRQYXJlbnQoKTtcblxuXHRcdGlmIChvUGFyZW50ICYmIChvUGFyZW50IGFzIE1hbmFnZWRPYmplY3QgJiB7IGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGU/OiBGdW5jdGlvbiB9KS5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKSB7XG5cdFx0XHQvLyBmb3J3YXJkICBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIGNhbGwgdG8gdGhlIHBhcmVudFxuXHRcdFx0KG9QYXJlbnQgYXMgTWFuYWdlZE9iamVjdCAmIHsgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZTogRnVuY3Rpb24gfSkuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZShfb0VsZW1lbnQsIG1BcmlhUHJvcHMpO1xuXHRcdH1cblxuXHRcdHJldHVybiBtQXJpYVByb3BzO1xuXHR9XG5cblx0cHJvdGVjdGVkIGNyZWF0ZUlkKC4uLnN0cmluZ1BhcnRzOiBzdHJpbmdbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gSWYgdGhlIGNoaWxkIGluc3RhbmNlIGhhcyBhbiBJRCBwcm9wZXJ0eSB1c2UgaXQgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcblx0XHRpZiAodGhpcy5nZXRJZCgpKSB7XG5cdFx0XHRyZXR1cm4gZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgLi4uc3RyaW5nUGFydHNdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldFRyYW5zbGF0ZWRUZXh0KHRleHRJRDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogdW5rbm93bltdLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuICh0aGlzLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCk/LmdldFRleHQodGV4dElELCBwYXJhbWV0ZXJzLCBtZXRhUGF0aCkgfHwgdGV4dElEO1xuXHR9XG59XG5cbnR5cGUgQnVpbGRpbmdCbG9ja0Jhc2U8VCBleHRlbmRzIFVJNUVsZW1lbnQ+ID0gX0J1aWxkaW5nQmxvY2tCYXNlPFQ+ICYgVDtcbi8vIE5vdCBwcmV0dHkgYnV0IHRoZSBhcyBhbnkgaW4gdGhlIGVuZCBjYW5ub3QgYmUgcmVtb3ZlZFxuY29uc3QgQnVpbGRpbmdCbG9ja0Jhc2U6IG5ldyA8VCBleHRlbmRzIFVJNUVsZW1lbnQgPSBDb250cm9sPihcblx0c2V0dGluZ3M/OiAkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEJ1aWxkaW5nQmxvY2tCYXNlPFQ+Pixcblx0b3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncyxcblx0c2tpcFByb3h5PzogYm9vbGVhblxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuKSA9PiBFbmhhbmNlV2l0aFVJNTxCdWlsZGluZ0Jsb2NrQmFzZTxUPj4gPSBfQnVpbGRpbmdCbG9ja0Jhc2UgYXMgYW55O1xuZXhwb3J0IGRlZmF1bHQgQnVpbGRpbmdCbG9ja0Jhc2U7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztFQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEEsSUFTTUEsa0JBQWtCLFdBRHZCQyxjQUFjLENBQUMsOENBQThDLENBQUMsVUFFN0RDLFdBQVcsQ0FBQztJQUFFQyxJQUFJLEVBQUUscUJBQXFCO0lBQUVDLFFBQVEsRUFBRSxLQUFLO0lBQUVDLFNBQVMsRUFBRTtFQUFLLENBQUMsQ0FBQztJQUFBO0lBUy9FLDRCQUFZQyxRQUFnRSxFQUFFQyxNQUF5QixFQUFFO01BQUE7TUFDeEcsSUFBSSxPQUFPRCxRQUFRLEtBQUssUUFBUSxFQUFFO1FBQ2pDQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ2JBLE1BQU0sQ0FBQ0MsRUFBRSxHQUFHRixRQUFRO01BQ3JCO01BQ0EsNEJBQU1BLFFBQVEsRUFBdUJDLE1BQU0sQ0FBQztNQUFDO01BQUEsTUFY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
230
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJkZWZpbmVVSTVDbGFzcyIsImFnZ3JlZ2F0aW9uIiwidHlwZSIsIm11bHRpcGxlIiwiaXNEZWZhdWx0Iiwic2V0dGluZ3MiLCJvdGhlcnMiLCJpZCIsIl9vbGREb21SZWYiLCJfYXBwbHlpbmdTZXR0aW5ncyIsImFwcGx5U2V0dGluZ3MiLCJtU2V0dGluZ3MiLCJvU2NvcGUiLCJfY2hlY2tJZk1ldGFkYXRhUmVhZHkiLCJfZ2V0T3duZXIiLCJjb250cm9sIiwib3duZXIiLCJDb21wb25lbnQiLCJnZXRPd25lckNvbXBvbmVudEZvciIsImlzQSIsImdldFBhcmVudCIsImdldFBhZ2VDb250cm9sbGVyIiwiZ2V0Um9vdENvbnRyb2xsZXIiLCJkZXN0cm95Iiwic3VwcHJlc3NJbnZhbGlkYXRlIiwidmlld1N0YXRlIiwiZGVyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJfbW9kZWxDb250ZXh0Q2hhbmdlRXZlbnRIYW5kbGVyIiwiZGV0YWNoRXZlbnQiLCJMb2ciLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnQiLCJfb3duZXJDb21wb25lbnQiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRQcmVwcm9jZXNzb3JDb250ZXh0IiwiYXBwQ29tcG9uZW50IiwidW5kZWZpbmVkIiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoIiwicHJlcHJvY2Vzc29yQ29udGV4dCIsImZ1bGxDb250ZXh0UGF0aCIsIm1vZGVscyIsIm1ldGFNb2RlbCIsImdldE93bmVyQ29udGV4dFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aCIsIm1ldGFwYXRoIiwiY29udGV4dFBhdGgiLCJjb250ZXh0UGF0aFRvVXNlIiwic3RhcnRzV2l0aCIsImNoYXJBdCIsIkVycm9yIiwibWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsIm1ldGFQYXRoQ29udGV4dCIsIk1ldGFNb2RlbENvbnZlcnRlciIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwiY29udGVudCIsImdldFZpc2libGUiLCJJbnZpc2libGVSZW5kZXJlciIsInJlbmRlckNvbnRyb2wiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZG9tUmVmIiwiZ2V0RG9tUmVmIiwiV2Vha1JlZiIsImJpbmRQcm9wZXJ0eSIsIm5hbWUiLCJiaW5kaW5nSW5mbyIsInByb3BlcnR5TWV0YWRhdGEiLCJnZXRNZXRhZGF0YSIsImdldFByb3BlcnR5IiwiYmluZGFibGUiLCJncm91cCIsIm9Db250ZW50IiwiZGVyZWYiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0Rm9jdXNEb21SZWYiLCJlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlIiwiX29FbGVtZW50IiwibUFyaWFQcm9wcyIsIm9QYXJlbnQiLCJjcmVhdGVJZCIsImdldElkIiwic3RyaW5nUGFydHMiLCJnZW5lcmF0ZSIsImdldFRyYW5zbGF0ZWRUZXh0IiwidGV4dElEIiwicGFyYW1ldGVycyIsIm1ldGFQYXRoIiwiZ2V0TW9kZWwiLCJnZXRUZXh0IiwiQ29udHJvbCIsIkJ1aWxkaW5nQmxvY2tCYXNlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJCdWlsZGluZ0Jsb2NrQmFzZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHNGb3JUYXJnZXRQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1LCBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzLCBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgSW52aXNpYmxlUmVuZGVyZXIgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVJlbmRlcmVyXCI7XG5pbXBvcnQgdHlwZSBSZW5kZXJNYW5hZ2VyIGZyb20gXCJzYXAvdWkvY29yZS9SZW5kZXJNYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcIi4uL0FwcENvbXBvbmVudFwiO1xuXG4vKipcbiAqIERlZmluZXMgYSBjb250cm9sIHRoYXQgd2lsbCBub3QgZXhpc3QgaW4gdGhlIERPTS5cbiAqIEluc3RlYWQsIG9ubHkgaXRzIGNoaWxkIHdpbGwgYmUgdGhlcmUgYW5kIHRoaXMgY29udHJvbCB3aWxsIGZvcndhcmQgYWxsIERPTSByZWxhdGVkIGluc3RydWN0aW9uIHRvIGl0LlxuICpcbiAqIEBleHBlcmltZW50YWxcbiAqIEBzaW5jZSAxLjEyMS4wXG4gKiBAcHVibGljXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLkJ1aWxkaW5nQmxvY2tCYXNlXCIpXG5jbGFzcyBfQnVpbGRpbmdCbG9ja0Jhc2U8VCBleHRlbmRzIFVJNUVsZW1lbnQ+IGV4dGVuZHMgQ29udHJvbCB7XG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuRWxlbWVudFwiLCBtdWx0aXBsZTogZmFsc2UsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRjb250ZW50PzogVDtcblxuXHRfb2xkRG9tUmVmOiBXZWFrUmVmPEVsZW1lbnQ+IHwgbnVsbCA9IG51bGw7XG5cblx0cHJvdGVjdGVkIF9hcHBseWluZ1NldHRpbmdzID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBfbW9kZWxDb250ZXh0Q2hhbmdlRXZlbnRIYW5kbGVyPzogRnVuY3Rpb247XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8X0J1aWxkaW5nQmxvY2tCYXNlPFQ+Piwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdGlmICh0eXBlb2Ygc2V0dGluZ3MgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdG90aGVycyA/Pz0ge307XG5cdFx0XHRvdGhlcnMuaWQgPSBzZXR0aW5ncztcblx0XHR9XG5cdFx0c3VwZXIoc2V0dGluZ3MgYXMgdW5rbm93biBhcyBzdHJpbmcsIG90aGVycyk7XG5cdH1cblxuXHRhcHBseVNldHRpbmdzKG1TZXR0aW5nczogJE1hbmFnZWRPYmplY3RTZXR0aW5ncywgb1Njb3BlPzogb2JqZWN0KTogdGhpcyB7XG5cdFx0dGhpcy5fYXBwbHlpbmdTZXR0aW5ncyA9IHRydWU7XG5cdFx0c3VwZXIuYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3MsIG9TY29wZSk7XG5cdFx0dGhpcy5fYXBwbHlpbmdTZXR0aW5ncyA9IGZhbHNlO1xuXHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KHRydWUpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0X2dldE93bmVyKCk6IFRlbXBsYXRlQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcblx0XHQvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhc1xuXHRcdGxldCBjb250cm9sOiBDb250cm9sIHwgdW5kZWZpbmVkID0gdGhpcztcblx0XHRsZXQgb3duZXIgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IoY29udHJvbCk7XG5cdFx0d2hpbGUgKCFvd25lciAmJiBjb250cm9sICYmICFjb250cm9sLmlzQTxGRVZpZXc+KFwic2FwLnVpLmNvcmUubXZjLlZpZXdcIikpIHtcblx0XHRcdGNvbnRyb2wgPSBjb250cm9sLmdldFBhcmVudCgpIGFzIENvbnRyb2wgfCB1bmRlZmluZWQ7XG5cdFx0XHRpZiAoY29udHJvbCkge1xuXHRcdFx0XHRvd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihjb250cm9sKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG93bmVyPy5pc0E8VGVtcGxhdGVDb21wb25lbnQ+KFwic2FwLmZlLmNvcmUuVGVtcGxhdGVDb21wb25lbnRcIikpIHtcblx0XHRcdHJldHVybiBvd25lcjtcblx0XHR9XG5cdH1cblxuXHRnZXRQYWdlQ29udHJvbGxlcigpOiBQYWdlQ29udHJvbGxlciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyKCk7XG5cdH1cblxuXHRkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmlzQTxJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4gJiBNYW5hZ2VkT2JqZWN0PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIikpIHtcblx0XHRcdHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKT8udmlld1N0YXRlPy5kZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHR9XG5cdFx0c3VwZXIuZGVzdHJveShzdXBwcmVzc0ludmFsaWRhdGUpO1xuXHR9XG5cblx0X2NoZWNrSWZNZXRhZGF0YVJlYWR5KGZyb21BcHBseVNldHRpbmdzID0gZmFsc2UpOiB2b2lkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCk7XG5cdFx0aWYgKG93bmVyKSB7XG5cdFx0XHR0aGlzLm9uTWV0YWRhdGFBdmFpbGFibGUob3duZXIpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHR0aGlzLmlzQTxJVmlld1N0YXRlQ29udHJpYnV0b3I8dW5rbm93bj4gJiBNYW5hZ2VkT2JqZWN0PihcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLnZpZXdTdGF0ZS5JVmlld1N0YXRlQ29udHJpYnV0b3JcIilcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKCk/LnZpZXdTdGF0ZS5yZWdpc3RlclN0YXRlQ29udHJpYnV0b3IodGhpcyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy5fbW9kZWxDb250ZXh0Q2hhbmdlRXZlbnRIYW5kbGVyKSB7XG5cdFx0XHRcdHRoaXMuZGV0YWNoRXZlbnQoXCJtb2RlbENvbnRleHRDaGFuZ2VcIiwgdGhpcy5fbW9kZWxDb250ZXh0Q2hhbmdlRXZlbnRIYW5kbGVyKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKGZyb21BcHBseVNldHRpbmdzKSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgY291bGRuJ3QgY3JlYXRlIHRoZSBjb250ZW50IGR1cmluZyB0aGUgYXBwbHlTZXR0aW5ncywgdHJ5IGFnYWluXG5cdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFwiVGhlIGJ1aWxkaW5nIGJsb2NrIHdhcyBub3QgY3JlYXRlZCB3aXRoaW4gYW4gRXh0ZW5zaW9uQVBJLnJ1bldpdGhGUE1Db250ZXh0IGNhbGwsIGZvciBwZXJmb3JtYW5jZSByZWFzb24gaXQncyByZWNvbW1lbmRlZCB0byBkbyBzby5cIixcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24gYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRoaXMuX21vZGVsQ29udGV4dENoYW5nZUV2ZW50SGFuZGxlcikge1xuXHRcdFx0XHR0aGlzLl9tb2RlbENvbnRleHRDaGFuZ2VFdmVudEhhbmRsZXIgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRcdFx0dGhpcy5fY2hlY2tJZk1ldGFkYXRhUmVhZHkoKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0dGhpcy5hdHRhY2hFdmVudChcIm1vZGVsQ29udGV4dENoYW5nZVwiLCB0aGlzLl9tb2RlbENvbnRleHRDaGFuZ2VFdmVudEhhbmRsZXIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdG9uTWV0YWRhdGFBdmFpbGFibGUoX293bmVyQ29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCk6IHZvaWQge1xuXHRcdC8vIFRvIGJlIG92ZXJyaWRlbiBieSB0aGUgY2hpbGQgY2xhc3Ncblx0fVxuXG5cdGdldEFwcENvbXBvbmVudCgpOiBBcHBDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKTtcblx0XHRpZiAob3duZXI/LmlzQTxFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD4+KFwic2FwLmZlLmNvcmUuVGVtcGxhdGVDb21wb25lbnRcIikpIHtcblx0XHRcdHJldHVybiBvd25lci5nZXRQcmVwcm9jZXNzb3JDb250ZXh0KCk/LmFwcENvbXBvbmVudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblxuXHRnZXREYXRhTW9kZWxPYmplY3RQYXRoPE4+KHRhcmdldFBhdGg6IHN0cmluZyk6IERhdGFNb2RlbE9iamVjdFBhdGg8Tj4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKSE7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgoXG5cdFx0XHR0YXJnZXRQYXRoID8/IG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aCxcblx0XHRcdG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVscy5tZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWxcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgY29udGV4dCBwYXRoIGZyb20gdGhlIG93bmVyIGNvbXBvbmVudC5cblx0ICpcblx0ICogQHJldHVybnMgVGhlIGNvbnRleHQgcGF0aFxuXHQgKi9cblx0Z2V0T3duZXJDb250ZXh0UGF0aCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG93bmVyID0gdGhpcy5fZ2V0T3duZXIoKSE7XG5cdFx0cmV0dXJuIG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/LmZ1bGxDb250ZXh0UGF0aDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGRhdGEgbW9kZWwgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gbWV0YXBhdGggYW5kIG9wdGlvbmFsIGNvbnRleHRQYXRoLlxuXHQgKiBAcGFyYW0gbWV0YXBhdGhcblx0ICogQHBhcmFtIGNvbnRleHRQYXRoXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBkYXRhIG1vZGVsIG9iamVjdCBwYXRoXG5cdCAqL1xuXHRnZXREYXRhTW9kZWxPYmplY3RGb3JNZXRhUGF0aDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KFxuXHRcdG1ldGFwYXRoOiBzdHJpbmcsXG5cdFx0Y29udGV4dFBhdGg/OiBzdHJpbmdcblx0KTogRGF0YU1vZGVsT2JqZWN0UGF0aDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IG93bmVyLnByZXByb2Nlc3NvckNvbnRleHQ/Lm1vZGVscy5tZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWw7XG5cdFx0bGV0IGNvbnRleHRQYXRoVG9Vc2UgPSBjb250ZXh0UGF0aCA/PyBvd25lci5wcmVwcm9jZXNzb3JDb250ZXh0Py5mdWxsQ29udGV4dFBhdGg7XG5cdFx0Y29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoVG9Vc2U/LnN0YXJ0c1dpdGgoXCIvXCIpID8gY29udGV4dFBhdGhUb1VzZSA6IHVuZGVmaW5lZDtcblx0XHRpZiAoIW1ldGFNb2RlbCB8fCAhKGNvbnRleHRQYXRoVG9Vc2UgfHwgbWV0YXBhdGguY2hhckF0KDApID09PSBcIi9cIikpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIk5vIG1ldGFtb2RlbCBvciBtZXRhcGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggY29udGV4dFBhdGhcIik7XG5cdFx0fVxuXHRcdGxldCBtZXRhQ29udGV4dCA9IGNvbnRleHRQYXRoVG9Vc2UgPyBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoY29udGV4dFBhdGhUb1VzZSkgOiB1bmRlZmluZWQ7XG5cdFx0bWV0YUNvbnRleHQgPSBtZXRhQ29udGV4dCA/IG1ldGFDb250ZXh0IDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IG1ldGFQYXRoQ29udGV4dCA9IG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtZXRhcGF0aCwgbWV0YUNvbnRleHQpO1xuXHRcdHJldHVybiBtZXRhUGF0aENvbnRleHRcblx0XHRcdD8gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0czxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoQ29udGV4dCwgbWV0YUNvbnRleHQpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXI8VCBleHRlbmRzIENvbnRyb2w+KG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IEJ1aWxkaW5nQmxvY2tCYXNlPFQ+KTogdm9pZCB7XG5cdFx0aWYgKCFvQ29udHJvbC5jb250ZW50IHx8IG9Db250cm9sLmdldFZpc2libGUoKSA9PT0gZmFsc2UpIHtcblx0XHRcdEludmlzaWJsZVJlbmRlcmVyLnJlbmRlcihvUm0sIG9Db250cm9sKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRyb2wuY29udGVudCk7XG5cdFx0fVxuXHR9XG5cblx0Ly9zZXQgdGhlIG9sZCBkb20gcmVmXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0Y29uc3QgZG9tUmVmID0gdGhpcy5nZXREb21SZWYoKTtcblx0XHRpZiAoZG9tUmVmKSB7XG5cdFx0XHR0aGlzLl9vbGREb21SZWYgPSBuZXcgV2Vha1JlZihkb21SZWYpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9vbGREb21SZWYgPSBudWxsO1xuXHRcdH1cblx0fVxuXG5cdGJpbmRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIGJpbmRpbmdJbmZvOiBQcm9wZXJ0eUJpbmRpbmdJbmZvKTogdGhpcyB7XG5cdFx0Y29uc3QgcHJvcGVydHlNZXRhZGF0YSA9IHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRQcm9wZXJ0eShuYW1lKTtcblx0XHRpZiAocHJvcGVydHlNZXRhZGF0YT8uYmluZGFibGUgPT09IGZhbHNlICYmIHByb3BlcnR5TWV0YWRhdGEuZ3JvdXAgPT09IFwiRGF0YVwiKSB7XG5cdFx0XHQodGhpcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbbmFtZV0gPSBiaW5kaW5nSW5mbztcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuYmluZFByb3BlcnR5KG5hbWUsIGJpbmRpbmdJbmZvKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRnZXREb21SZWYoKTogRWxlbWVudCB8IG51bGwge1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdGxldCBkb21SZWY6IEVsZW1lbnQgfCBudWxsID0gb0NvbnRlbnQ/LmdldERvbVJlZigpID8/IHN1cGVyLmdldERvbVJlZigpO1xuXHRcdGlmICghZG9tUmVmKSB7XG5cdFx0XHRkb21SZWYgPSB0aGlzLl9vbGREb21SZWY/LmRlcmVmKCkgPz8gbnVsbDtcblx0XHRcdGlmIChkb21SZWYpIHtcblx0XHRcdFx0cmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRvbVJlZi5pZCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBkb21SZWY7XG5cdH1cblxuXHRnZXRGb2N1c0RvbVJlZigpOiBFbGVtZW50IHwgbnVsbCB7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0cmV0dXJuIG9Db250ZW50ID8gb0NvbnRlbnQuZ2V0Rm9jdXNEb21SZWYoKSA6IHN1cGVyLmdldEZvY3VzRG9tUmVmKCk7XG5cdH1cblxuXHRlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKF9vRWxlbWVudDogb2JqZWN0LCBtQXJpYVByb3BzOiBvYmplY3QpOiBvYmplY3Qge1xuXHRcdGNvbnN0IG9QYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuXG5cdFx0aWYgKG9QYXJlbnQgJiYgKG9QYXJlbnQgYXMgTWFuYWdlZE9iamVjdCAmIHsgZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZT86IEZ1bmN0aW9uIH0pLmVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUpIHtcblx0XHRcdC8vIGZvcndhcmQgIGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUgY2FsbCB0byB0aGUgcGFyZW50XG5cdFx0XHQob1BhcmVudCBhcyBNYW5hZ2VkT2JqZWN0ICYgeyBlbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlOiBGdW5jdGlvbiB9KS5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKF9vRWxlbWVudCwgbUFyaWFQcm9wcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1BcmlhUHJvcHM7XG5cdH1cblxuXHRwcm90ZWN0ZWQgY3JlYXRlSWQoLi4uc3RyaW5nUGFydHM6IHN0cmluZ1tdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHQvLyBJZiB0aGUgY2hpbGQgaW5zdGFuY2UgaGFzIGFuIElEIHByb3BlcnR5IHVzZSBpdCBvdGhlcndpc2UgcmV0dXJuIHVuZGVmaW5lZFxuXHRcdGlmICh0aGlzLmdldElkKCkpIHtcblx0XHRcdHJldHVybiBnZW5lcmF0ZShbdGhpcy5nZXRJZCgpLCAuLi5zdHJpbmdQYXJ0c10pO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0Z2V0VHJhbnNsYXRlZFRleHQodGV4dElEOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiB1bmtub3duW10sIG1ldGFQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gKHRoaXMuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsKT8uZ2V0VGV4dCh0ZXh0SUQsIHBhcmFtZXRlcnMsIG1ldGFQYXRoKSB8fCB0ZXh0SUQ7XG5cdH1cbn1cblxudHlwZSBCdWlsZGluZ0Jsb2NrQmFzZTxUIGV4dGVuZHMgVUk1RWxlbWVudD4gPSBfQnVpbGRpbmdCbG9ja0Jhc2U8VD4gJiBUO1xuLy8gTm90IHByZXR0eSBidXQgdGhlIGFzIGFueSBpbiB0aGUgZW5kIGNhbm5vdCBiZSByZW1vdmVkXG5jb25zdCBCdWlsZGluZ0Jsb2NrQmFzZTogbmV3IDxUIGV4dGVuZHMgVUk1RWxlbWVudCA9IENvbnRyb2w+KFxuXHRzZXR0aW5ncz86ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LFxuXHRvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzLFxuXHRza2lwUHJveHk/OiBib29sZWFuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4pID0+IEVuaGFuY2VXaXRoVUk1PEJ1aWxkaW5nQmxvY2tCYXNlPFQ+PiA9IF9CdWlsZGluZ0Jsb2NrQmFzZSBhcyBhbnk7XG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrQmFzZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7O0VBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQSxJQVNNQSxrQkFBa0IsV0FEdkJDLGNBQWMsQ0FBQyw4Q0FBOEMsQ0FBQyxVQUU3REMs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
@@ -132,6 +132,16 @@ class _BuildingBlockBase<T extends UI5Element> extends Control {
132
132
  );
133
133
  }
134
134
 
135
+ /**
136
+ * Retrieves the context path from the owner component.
137
+ *
138
+ * @returns The context path
139
+ */
140
+ getOwnerContextPath(): string | undefined {
141
+ const owner = this._getOwner()!;
142
+ return owner.preprocessorContext?.fullContextPath;
143
+ }
144
+
135
145
  /**
136
146
  * Get the data model object for the given metapath and optional contextPath.
137
147
  * @param metapath