@sapui5/sap.fe.core 1.133.1 → 1.133.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.133.1",
3
+ "version": "1.133.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.133.1</version>
9
+ <version>1.133.2</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -285,6 +285,18 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/conver
285
285
  const isInsightsVisible = getInsightsVisibility("Analytical", converterContext, visualizationPath);
286
286
  const isParameterizedEntitySet = converterContext.getParameterEntityType() ? true : false;
287
287
  const isInsightsEnabled = and(getInsightsEnablement(), isInsightsVisible);
288
+ const chartDimensionKeyAndRole = [];
289
+ chartAnnotation?.DimensionAttributes?.forEach(dimensionAttribute => {
290
+ const obj = {};
291
+ obj[dimensionAttribute?.Dimension?.value] = dimensionAttribute?.Role;
292
+ chartDimensionKeyAndRole.push(obj);
293
+ });
294
+ const chartMeasureKeyAndRole = [];
295
+ chartAnnotation?.MeasureAttributes?.forEach(measureAttribute => {
296
+ const obj = {};
297
+ obj[measureAttribute?.Measure?.value] = measureAttribute?.Role;
298
+ chartMeasureKeyAndRole.push({});
299
+ });
288
300
  return {
289
301
  type: VisualizationType.Chart,
290
302
  id: qualifier ? getChartID(isEntitySet ? entityName : navigationPropertyPath, qualifier, VisualizationType.Chart) : getChartID(isEntitySet ? entityName : navigationPropertyPath, VisualizationType.Chart),
@@ -309,7 +321,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/conver
309
321
  variantManagement: findVariantManagement(p13nMode, variantManagement),
310
322
  isInsightsEnabled: isInsightsEnabled,
311
323
  isInsightsVisible: isInsightsVisible,
312
- isParameterizedEntitySet: isParameterizedEntitySet
324
+ isParameterizedEntitySet: isParameterizedEntitySet,
325
+ chartDimensionKeyAndRole: chartDimensionKeyAndRole,
326
+ chartMeasureKeyAndRole: chartMeasureKeyAndRole
313
327
  };
314
328
  }
315
329
  /**
@@ -406,4 +420,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/core/conver
406
420
  _exports.createBlankChartVisualization = createBlankChartVisualization;
407
421
  return _exports;
408
422
  }, false);
409
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMiLCJjaGFydEFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJjaGFydEFjdGlvbnMiLCJBY3Rpb25zIiwiZm9yRWFjaCIsImRhdGFGaWVsZCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsImlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QiLCJJbmxpbmUiLCJEZXRlcm1pbmluZyIsIiRUeXBlIiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInB1c2giLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInZpc2libGUiLCJnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbiIsIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiIsImlzTmF2aWdhYmxlIiwiaXNBbm5vdGF0aW9uQWN0aW9uR3JvdXAiLCJNZW51IiwidGV4dCIsIkxhYmVsIiwidG9TdHJpbmciLCJtZW51IiwibWFwIiwiYWN0aW9uIiwiZ2V0RGF0YUZpZWxkQW5ub3RhdGlvbkFjdGlvbiIsImdldENoYXJ0QWN0aW9ucyIsImFBbm5vdGF0aW9uQWN0aW9ucyIsIm1hbmlmZXN0QWN0aW9ucyIsImdldEFjdGlvbnNGcm9tTWFuaWZlc3QiLCJnZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uIiwiYWN0aW9ucyIsImFjdGlvbk92ZXJ3cml0ZUNvbmZpZyIsImVuYWJsZWQiLCJPdmVycmlkZVR5cGUiLCJvdmVyd3JpdGUiLCJlbmFibGVPblNlbGVjdCIsImNvbW1hbmQiLCJwb3NpdGlvbiIsImluc2VydEN1c3RvbUVsZW1lbnRzIiwiY29tbWFuZEFjdGlvbnMiLCJfZXhwb3J0cyIsImdldFAxM25Nb2RlIiwibWFuaWZlc3RXcmFwcGVyIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiY2hhcnRNYW5pZmVzdFNldHRpbmdzIiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZXRWYXJpYW50TWFuYWdlbWVudCIsImFQZXJzb25hbGl6YXRpb24iLCJwZXJzb25hbGl6YXRpb24iLCJjaGFydFNldHRpbmdzIiwiaXNDb250cm9sVmFyaWFudCIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvbnRyb2wiLCJ1bmRlZmluZWQiLCJpdGVtIiwic29ydCIsImZpbHRlciIsImpvaW4iLCJnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzT2JqZWN0IiwiYWdnUHJvcCIsIm9iaiIsIlByb3BlcnR5IiwiJFByb3BlcnR5UGF0aCIsInZhbHVlIiwibmFtZSIsImNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbiIsImRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZCIsInNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoIiwiYWdncmVnYXRpb25IZWxwZXIiLCJBZ2dyZWdhdGlvbkhlbHBlciIsImdldEVudGl0eVR5cGUiLCJpc0FuYWx5dGljc1N1cHBvcnRlZCIsIkVycm9yIiwiYVRyYW5zQWdncmVnYXRpb25zIiwiZ2V0VHJhbnNBZ2dyZWdhdGlvbnMiLCJhQ3VzdG9tQWdncmVnYXRlcyIsImdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zIiwicGFnZU1hbmlmZXN0U2V0dGluZ3MiLCJwMTNuTW9kZSIsIkxvZyIsIndhcm5pbmciLCJtQ3VzdG9tQWdncmVnYXRlcyIsImVudGl0eVR5cGUiLCJjdXN0b21BZ2dyZWdhdGUiLCJhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyIsImFubm90YXRpb25zIiwiQWdncmVnYXRpb24iLCJDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzIiwicXVhbGlmaWVyIiwicmVsYXRlZEN1c3RvbUFnZ3JlZ2F0ZVByb3BlcnR5IiwiZW50aXR5UHJvcGVydGllcyIsImZpbmQiLCJwcm9wZXJ0eSIsImxhYmVsIiwiQ29tbW9uIiwic29ydGFibGUiLCJzb3J0T3JkZXIiLCJjb250ZXh0RGVmaW5pbmdQcm9wZXJ0eSIsIm9DdHhEZWZQcm9wZXJ0eSIsIm1UcmFuc0FnZ3JlZ2F0aW9ucyIsIm9SZXNvdXJjZUJ1bmRsZUNvcmUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJlbGVtZW50IiwiTmFtZSIsInByb3BlcnR5UGF0aCIsIkFnZ3JlZ2F0YWJsZVByb3BlcnR5IiwiYWdncmVnYXRpb25NZXRob2QiLCJBZ2dyZWdhdGlvbk1ldGhvZCIsImdldFRleHQiLCJjdXN0b20iLCJhQWdnUHJvcHMiLCJnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzIiwiYUdycFByb3BzIiwiZ2V0R3JvdXBhYmxlUHJvcGVydGllcyIsIm1BcHBseVN1cHBvcnRlZCIsIkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJHcm91cGFibGVQcm9wZXJ0aWVzIiwicHJvcCIsIm5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJzcGxpdCIsImxhc3RJbmRleE9mIiwibGVuZ3RoIiwic3Vic3RyaW5nIiwidGl0bGUiLCJUaXRsZSIsImRhdGFNb2RlbFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiaXNFbnRpdHlTZXQiLCJlbnRpdHlOYW1lIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJzRmlsdGVyYmFySWQiLCJnZXRGaWx0ZXJCYXJJRCIsImdldENvbnRleHRQYXRoIiwib1ZpelByb3BlcnRpZXMiLCJwbG90QXJlYSIsIndpbmRvdyIsInN0YXJ0IiwiZW5kIiwibGVnZW5kR3JvdXAiLCJsYXlvdXQiLCJhdXRvQmluZE9uSW5pdCIsImdldFRlbXBsYXRlVHlwZSIsIlRlbXBsYXRlVHlwZSIsIk9iamVjdFBhZ2UiLCJMaXN0UmVwb3J0IiwiQW5hbHl0aWNhbExpc3RQYWdlIiwiaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsIm9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCIsImFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMiLCJnZXRBbGxvd2VkVHJhbnNmb3JtYXRpb25zIiwiZW5hYmxlU2VhcmNoIiwiaW5jbHVkZXMiLCJpc0luc2lnaHRzVmlzaWJsZSIsImdldEluc2lnaHRzVmlzaWJpbGl0eSIsImlzUGFyYW1ldGVyaXplZEVudGl0eVNldCIsImdldFBhcmFtZXRlckVudGl0eVR5cGUiLCJpc0luc2lnaHRzRW5hYmxlZCIsImFuZCIsImdldEluc2lnaHRzRW5hYmxlbWVudCIsIlZpc3VhbGl6YXRpb25UeXBlIiwiQ2hhcnQiLCJpZCIsImdldENoYXJ0SUQiLCJjb2xsZWN0aW9uIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImFwaUlkIiwiZ2VuZXJhdGUiLCJuYXZpZ2F0aW9uUGF0aCIsImdldEFic29sdXRlQW5ub3RhdGlvblBhdGgiLCJmaWx0ZXJJZCIsInZpelByb3BlcnRpZXMiLCJKU09OIiwic3RyaW5naWZ5IiwiY3VzdG9tQWdnIiwidHJhbnNBZ2ciLCJhcHBseVN1cHBvcnRlZCIsImZpbmRWYXJpYW50TWFuYWdlbWVudCIsIk5vbmUiLCJjcmVhdGVDaGFydFZpc3VhbGl6YXRpb25Gb3JUZW1wbGF0aW5nIiwidmlzdWFsaXphdGlvbiIsImNvbXBpbGVFeHByZXNzaW9uIiwibm90IiwiZXF1YWwiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJVSSIsIkhpZGRlbiIsImdldFJlbGF0aXZlTW9kZWxQYXRoRnVuY3Rpb24iLCJjcmVhdGVCbGFua0NoYXJ0VmlzdWFsaXphdGlvbiIsIm11bHRpVmlld3MiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNoYXJ0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHksIFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBBZ2dyZWdhdGFibGVQcm9wZXJ0eVR5cGUsIEFnZ3JlZ2F0aW9uTWV0aG9kIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25Bbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENoYXJ0LFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHREYXRhRmllbGRGb3JBY3Rpb25Hcm91cCxcblx0RGF0YUZpZWxkRm9yQWN0aW9uR3JvdXBUeXBlcyxcblx0RGF0YUZpZWxkRm9yQWN0aW9uVHlwZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGFuZCwgY29tcGlsZUV4cHJlc3Npb24sIGVxdWFsLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIG5vdCwgdHlwZSBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB0eXBlIHtcblx0QW5ub3RhdGlvbkFjdGlvbixcblx0QW5ub3RhdGlvbkFjdGlvbkFjdGlvbkdyb3VwLFxuXHRCYXNlQWN0aW9uLFxuXHRDb21iaW5lZEFjdGlvbixcblx0Q3VzdG9tQWN0aW9uLFxuXHRPdmVycmlkZVR5cGVBY3Rpb25cbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0FjdGlvblwiO1xuaW1wb3J0IHsgZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7IE92ZXJyaWRlVHlwZSwgaW5zZXJ0Q3VzdG9tRWxlbWVudHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgS2V5SGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9LZXlcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGdldFRhcmdldE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSB7IEV4cGFuZFBhdGhUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBDaGFydE1hbmlmZXN0Q29uZmlndXJhdGlvbiwgTWFuaWZlc3RBY3Rpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSwgVGVtcGxhdGVUeXBlLCBWYXJpYW50TWFuYWdlbWVudFR5cGUsIFZpc3VhbGl6YXRpb25UeXBlIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIE1hbmlmZXN0V3JhcHBlciBmcm9tIFwiLi4vLi4vTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbkhlbHBlciB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0FnZ3JlZ2F0aW9uXCI7XG5pbXBvcnQgeyBnZXRDaGFydElELCBnZXRGaWx0ZXJCYXJJRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgeyBnZXRJbnNpZ2h0c0VuYWJsZW1lbnQsIGdldEluc2lnaHRzVmlzaWJpbGl0eSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0luc2lnaHRzSGVscGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMgfSBmcm9tIFwiLi9EYXRhVmlzdWFsaXphdGlvblwiO1xuXG5leHBvcnQgdHlwZSBDaGFydEFwcGx5U3VwcG9ydGVkID0ge1xuXHQkVHlwZTogc3RyaW5nO1xuXHRlbmFibGVTZWFyY2g/OiBib29sZWFuO1xuXHRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzPzogKEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gJiB7IFByb3BlcnR5OiBFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+IH0pW107XG5cdEdyb3VwYWJsZVByb3BlcnRpZXM/OiAoRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiAmIHsgUHJvcGVydHk6IEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gfSlbXTtcbn07XG5leHBvcnQgdHlwZSBDaGFydFRlbXBsYXRlVmlzdWFsaXphdGlvbiA9IHtcblx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQ7XG5cdGlkOiBzdHJpbmc7XG5cdGFwaUlkOiBzdHJpbmc7XG5cdGVudGl0eU5hbWU6IHN0cmluZztcblx0Y29sbGVjdGlvbjogc3RyaW5nO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRhcHBseVN1cHBvcnRlZDogQ2hhcnRBcHBseVN1cHBvcnRlZDtcblx0aXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0PzogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgQ2hhcnRWaXN1YWxpemF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIENoYXJ0VmlzdWFsaXphdGlvbiA9IENoYXJ0VGVtcGxhdGVWaXN1YWxpemF0aW9uICYge1xuXHRlbnRpdHlOYW1lOiBzdHJpbmc7XG5cdHBlcnNvbmFsaXphdGlvbj86IHN0cmluZztcblx0bmF2aWdhdGlvblBhdGg6IHN0cmluZztcblx0ZmlsdGVySWQ/OiBzdHJpbmc7XG5cdHZpelByb3BlcnRpZXM6IHN0cmluZztcblx0YWN0aW9uczogQmFzZUFjdGlvbltdO1xuXHRjb21tYW5kQWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcblx0dGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0YXV0b0JpbmRPbkluaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogc3RyaW5nO1xuXHR2aXNpYmxlOiBzdHJpbmc7XG5cdGN1c3RvbUFnZzogb2JqZWN0O1xuXHR0cmFuc0FnZzogb2JqZWN0O1xuXHRtdWx0aVZpZXdzPzogYm9vbGVhbjtcblx0dmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZTtcblx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmc7XG5cdGlzSW5zaWdodHNFbmFibGVkPzogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRpc0luc2lnaHRzVmlzaWJsZT86IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcbn07XG5cbi8qKlxuICogTWV0aG9kIHRvIHJldHJpZXZlIGFsbCBjaGFydCBhY3Rpb25zIGZyb20gYW5ub3RhdGlvbnMuXG4gKiBAcGFyYW0gY2hhcnRBbm5vdGF0aW9uXG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvblBhdGhcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgY2hhcnQgYWN0aW9ucyBmcm9tIHRoZSBhbm5vdGF0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydCxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBBcnJheTxBbm5vdGF0aW9uQWN0aW9uIHwgQW5ub3RhdGlvbkFjdGlvbkFjdGlvbkdyb3VwPiB7XG5cdGNvbnN0IGNoYXJ0QWN0aW9uczogQXJyYXk8QW5ub3RhdGlvbkFjdGlvbiB8IEFubm90YXRpb25BY3Rpb25BY3Rpb25Hcm91cD4gPSBbXTtcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbj8uQWN0aW9ucykge1xuXHRcdGNoYXJ0QW5ub3RhdGlvbi5BY3Rpb25zLmZvckVhY2goKGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFGaWVsZEZvckFjdGlvbkdyb3VwVHlwZXMpID0+IHtcblx0XHRcdGNvbnN0IGtleSA9IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKTtcblx0XHRcdGlmIChpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0KGRhdGFGaWVsZCkgJiYgIWRhdGFGaWVsZC5JbmxpbmUgJiYgIWRhdGFGaWVsZC5EZXRlcm1pbmluZykge1xuXHRcdFx0XHRzd2l0Y2ggKGRhdGFGaWVsZC4kVHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0XHRcdFx0aWYgKGRhdGFGaWVsZC5BY3Rpb25UYXJnZXQgJiYgIWRhdGFGaWVsZC5BY3Rpb25UYXJnZXQuaXNCb3VuZCkge1xuXHRcdFx0XHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhRmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRcdFx0dmlzaWJsZTogZ2V0Q29tcGlsZUV4cHJlc3Npb25Gb3JBY3Rpb24oZGF0YUZpZWxkLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc0Fubm90YXRpb25BY3Rpb25Hcm91cChkYXRhRmllbGQpKSB7XG5cdFx0XHRcdGNoYXJ0QWN0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLk1lbnUsXG5cdFx0XHRcdFx0dGV4dDogZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0bWVudTogZGF0YUZpZWxkLkFjdGlvbnMubWFwKChhY3Rpb24pID0+XG5cdFx0XHRcdFx0XHRnZXREYXRhRmllbGRBbm5vdGF0aW9uQWN0aW9uKGFjdGlvbiBhcyBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcywgY29udmVydGVyQ29udGV4dClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpXG5cdFx0XHRcdH0gYXMgQW5ub3RhdGlvbkFjdGlvbkFjdGlvbkdyb3VwKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gY2hhcnRBY3Rpb25zO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGRhdGFGaWVsZCBpcyBhIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwLlxuICogQHBhcmFtIGRhdGFGaWVsZCBUaGUgZGF0YUZpZWxkIHRvIGNoZWNrLlxuICogQHJldHVybnMgVGhlIGRhdGFGaWVsZCBpZiBpdCBtYXRjaGVzIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwLlxuICovXG5mdW5jdGlvbiBpc0Fubm90YXRpb25BY3Rpb25Hcm91cChkYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMpOiBkYXRhRmllbGQgaXMgRGF0YUZpZWxkRm9yQWN0aW9uR3JvdXAge1xuXHRyZXR1cm4gZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb25Hcm91cDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIERhdGFGaWVsZEZvckFjdGlvbiBmb3IgbWVudSBvZiBEYXRhRmllbGRGb3JBY3Rpb25Hcm91cC5cbiAqIEBwYXJhbSBkYXRhRmllbGQgVGhlIGRhdGFmaWVsZCB0byBnZXQgdGhlIGFubm90YXRpb24gYWN0aW9uIGZyb20uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQuXG4gKiBAcmV0dXJucyBBbiBhbm5vdGF0aW9uIGFjdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0RGF0YUZpZWxkQW5ub3RhdGlvbkFjdGlvbihcblx0ZGF0YUZpZWxkOiBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBBbm5vdGF0aW9uQWN0aW9uIHtcblx0cmV0dXJuIHtcblx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dClcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0QWN0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydCxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBDb21iaW5lZEFjdGlvbiB7XG5cdGNvbnN0IGFBbm5vdGF0aW9uQWN0aW9ucyA9IGdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyhjaGFydEFubm90YXRpb24sIHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3QgbWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb248Q2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24+KHZpc3VhbGl6YXRpb25QYXRoKS5hY3Rpb25zIGFzIFJlY29yZDxcblx0XHRcdHN0cmluZyxcblx0XHRcdE1hbmlmZXN0QWN0aW9uXG5cdFx0Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdGFBbm5vdGF0aW9uQWN0aW9uc1xuXHQpO1xuXHRjb25zdCBhY3Rpb25PdmVyd3JpdGVDb25maWc6IE92ZXJyaWRlVHlwZUFjdGlvbiA9IHtcblx0XHRlbmFibGVkOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdHZpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0Y29tbWFuZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRwb3NpdGlvbjogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZVxuXHR9O1xuXHRjb25zdCBjaGFydEFjdGlvbnMgPSBpbnNlcnRDdXN0b21FbGVtZW50czxCYXNlQWN0aW9uPihhQW5ub3RhdGlvbkFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLCBhY3Rpb25PdmVyd3JpdGVDb25maWcpO1xuXHRyZXR1cm4ge1xuXHRcdGFjdGlvbnM6IGNoYXJ0QWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogbWFuaWZlc3RBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQMTNuTW9kZSh2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXI6IE1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IGNoYXJ0TWFuaWZlc3RTZXR0aW5nczogQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24odmlzdWFsaXphdGlvblBhdGgpO1xuXHRjb25zdCB2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlID0gbWFuaWZlc3RXcmFwcGVyLmdldFZhcmlhbnRNYW5hZ2VtZW50KCk7XG5cdGNvbnN0IGFQZXJzb25hbGl6YXRpb246IHN0cmluZ1tdID0gW107XG5cdC8vIFBlcnNvbmFsaXphdGlvbiBjb25maWd1cmVkIGluIG1hbmlmZXN0LlxuXHRjb25zdCBwZXJzb25hbGl6YXRpb24gPSBjaGFydE1hbmlmZXN0U2V0dGluZ3M/LmNoYXJ0U2V0dGluZ3M/LnBlcnNvbmFsaXphdGlvbjtcblx0Y29uc3QgaXNDb250cm9sVmFyaWFudCA9IHZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbCA/IHRydWUgOiBmYWxzZTtcblx0Ly8gaWYgcGVyc29uYWxpemF0aW9uIGlzIHNldCB0byBmYWxzZSBkbyBub3Qgc2hvdyBhbnkgb3B0aW9uXG5cdGlmICgocGVyc29uYWxpemF0aW9uICE9PSB1bmRlZmluZWQgJiYgIXBlcnNvbmFsaXphdGlvbikgfHwgcGVyc29uYWxpemF0aW9uID09IFwiZmFsc2VcIikge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0aWYgKHR5cGVvZiBwZXJzb25hbGl6YXRpb24gPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBTcGVjaWZpYyBwZXJzb25hbGl6YXRpb24gb3B0aW9ucyBlbmFibGVkIGluIG1hbmlmZXN0LiBVc2UgdGhlbSBhcyBpcy5cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLnR5cGUpIHtcblx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIlR5cGVcIik7XG5cdFx0fVxuXHRcdGlmIChwZXJzb25hbGl6YXRpb24uaXRlbSkge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiSXRlbVwiKTtcblx0XHR9XG5cdFx0aWYgKHBlcnNvbmFsaXphdGlvbi5zb3J0KSB7XG5cdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJTb3J0XCIpO1xuXHRcdH1cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLmZpbHRlcikge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiRmlsdGVyXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gYVBlcnNvbmFsaXphdGlvbi5qb2luKFwiLFwiKTtcblx0fSBlbHNlIGlmIChpc0NvbnRyb2xWYXJpYW50IHx8ICEhcGVyc29uYWxpemF0aW9uKSB7XG5cdFx0Ly8gbWFuaWZlc3QgaGFzIHBlcnNvbmFsaXphdGlvbiBjb25maWd1cmVkLCBjaGVjayBpZiBpdCdzIHRydWVcblx0XHQvLyBpZiBtYW5pZmVzdCBkb2Vzbid0IGhhdmUgcGVyc29uYWxpemF0aW9uLCBjaGVjayBmb3IgdmFyaWFudCBtYW5hZ2VtZW50IGlzIHNldCB0byBjb250cm9sXG5cdFx0cmV0dXJuIFwiU29ydCxUeXBlLEl0ZW0sRmlsdGVyXCI7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gaWYgbWFuaWZlc3QgZG9lc24ndCBoYXZlIHBlcnNvbmFsaXphdGlvbiwgc2hvdyBkZWZhdWx0IG9wdGlvbnMgd2l0aG91dCBmaWx0ZXJcblx0XHRyZXR1cm4gXCJTb3J0LFR5cGUsSXRlbVwiO1xuXHR9XG59XG5leHBvcnQgdHlwZSBDaGFydEN1c3RvbUFnZ3JlZ2F0ZSA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRzb3J0YWJsZTogYm9vbGVhbjtcblx0c29ydE9yZGVyOiBcImJvdGhcIjtcblx0Y29udGV4dERlZmluaW5nUHJvcGVydHk6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgVHJhbnNBZ2cgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0cHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdGFnZ3JlZ2F0aW9uTWV0aG9kOiBBZ2dyZWdhdGlvbk1ldGhvZDtcblx0bGFiZWw6IHN0cmluZztcblx0c29ydGFibGU6IGJvb2xlYW47XG5cdHNvcnRPcmRlcjogXCJib3RoXCI7XG5cdGN1c3RvbTogYm9vbGVhbjtcbn07XG5mdW5jdGlvbiBnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzT2JqZWN0KGFnZ1Byb3A6IEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSB8IFByb3BlcnR5KTogeyBQcm9wZXJ0eTogeyAkUHJvcGVydHlQYXRoOiBzdHJpbmcgfSB9IHtcblx0bGV0IG9iajtcblx0aWYgKChhZ2dQcm9wIGFzIEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSk/LlByb3BlcnR5KSB7XG5cdFx0b2JqID0ge1xuXHRcdFx0UHJvcGVydHk6IHtcblx0XHRcdFx0JFByb3BlcnR5UGF0aDogKGFnZ1Byb3AgYXMgQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlKT8uUHJvcGVydHk/LnZhbHVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRvYmogPSB7XG5cdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHQkUHJvcGVydHlQYXRoOiAoYWdnUHJvcCBhcyBQcm9wZXJ0eSk/Lm5hbWVcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG4vKipcbiAqIENyZWF0ZSB0aGUgQ2hhcnRWaXN1YWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSBhIGNoYXJ0IHVzaW5nIHRoZSBDaGFydCBidWlsZGluZyBibG9jay5cbiAqIEBwYXJhbSBjaGFydEFubm90YXRpb24gVGhlIHRhcmdldGVkIGNoYXJ0IGFubm90YXRpb25cbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uUGF0aCBUaGUgcGF0aCBvZiB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQgRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIEFwcGx5U3VwcG9ydGVkIG5lZWRzIHRvIGJlIGNoZWNrZWQgb3Igbm90XG4gKiBAcGFyYW0gc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGhcbiAqIEByZXR1cm5zIFRoZSBjaGFydCB2aXN1YWxpemF0aW9uIGJhc2VkIG9uIHRoZSBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGFydFZpc3VhbGl6YXRpb24oXG5cdGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkPzogYm9vbGVhbixcblx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmdcbik6IENoYXJ0VmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBjb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTsgLy8gcGFzc2luZyB0aGUgbGFzdCBwYXJhbWV0ZXIgYXMgdHJ1ZSB0byBjb25zaWRlciB0aGUgb2xkIGFubm90YXRpb25zIGkuZS4gQWdncmVnYXRpb24uQWdncmVnYXRhYmxlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGluIGNhc2Ugb2YgY2hhcnRcblx0aWYgKCFkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQgJiYgIWFnZ3JlZ2F0aW9uSGVscGVyLmlzQW5hbHl0aWNzU3VwcG9ydGVkKCkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJBcHBseVN1cHBvcnRlZCBpcyBub3QgYWRkZWQgdG8gdGhlIGFubm90YXRpb25zXCIpO1xuXHR9XG5cdGNvbnN0IGFUcmFuc0FnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldFRyYW5zQWdncmVnYXRpb25zKCk7XG5cdGNvbnN0IGFDdXN0b21BZ2dyZWdhdGVzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTtcblx0Y29uc3QgcGFnZU1hbmlmZXN0U2V0dGluZ3M6IE1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGUgPSBwYWdlTWFuaWZlc3RTZXR0aW5ncy5nZXRWYXJpYW50TWFuYWdlbWVudCgpO1xuXHRjb25zdCBwMTNuTW9kZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRpZiAocDEzbk1vZGUgPT09IHVuZGVmaW5lZCAmJiB2YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRMb2cud2FybmluZyhcIlZhcmlhbnQgTWFuYWdlbWVudCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZFwiKTtcblx0fVxuXHRjb25zdCBtQ3VzdG9tQWdncmVnYXRlczogUmVjb3JkPHN0cmluZywgb2JqZWN0PiA9IHt9O1xuXHRpZiAoYUN1c3RvbUFnZ3JlZ2F0ZXMpIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGZvciAoY29uc3QgY3VzdG9tQWdncmVnYXRlIG9mIGFDdXN0b21BZ2dyZWdhdGVzKSB7XG5cdFx0XHRjb25zdCBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyA9IGN1c3RvbUFnZ3JlZ2F0ZT8uYW5ub3RhdGlvbnM/LkFnZ3JlZ2F0aW9uPy5Db250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgcXVhbGlmaWVyID0gY3VzdG9tQWdncmVnYXRlPy5xdWFsaWZpZXI7XG5cdFx0XHRjb25zdCByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkgPSBxdWFsaWZpZXIgJiYgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5uYW1lID09PSBxdWFsaWZpZXIpO1xuXHRcdFx0Y29uc3QgbGFiZWwgPSByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkgJiYgcmVsYXRlZEN1c3RvbUFnZ3JlZ2F0ZVByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKTtcblx0XHRcdG1DdXN0b21BZ2dyZWdhdGVzW3F1YWxpZmllcl0gPSB7XG5cdFx0XHRcdG5hbWU6IHF1YWxpZmllcixcblx0XHRcdFx0bGFiZWw6IGxhYmVsIHx8IGBDdXN0b20gQWdncmVnYXRlICgke3F1YWxpZmllcn0pYCxcblx0XHRcdFx0c29ydGFibGU6IHRydWUsXG5cdFx0XHRcdHNvcnRPcmRlcjogXCJib3RoXCIsXG5cdFx0XHRcdGNvbnRleHREZWZpbmluZ1Byb3BlcnR5OiBhQ29udGV4dERlZmluaW5nUHJvcGVydGllc1xuXHRcdFx0XHRcdD8gYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMubWFwKChvQ3R4RGVmUHJvcGVydHkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9DdHhEZWZQcm9wZXJ0eS52YWx1ZTtcblx0XHRcdFx0XHQgIH0pXG5cdFx0XHRcdFx0OiBbXVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBtVHJhbnNBZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zQWdnPiA9IHt9O1xuXHRjb25zdCBvUmVzb3VyY2VCdW5kbGVDb3JlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblx0aWYgKGFUcmFuc0FnZ3JlZ2F0aW9ucykge1xuXHRcdGZvciAoY29uc3QgZWxlbWVudCBvZiBhVHJhbnNBZ2dyZWdhdGlvbnMpIHtcblx0XHRcdG1UcmFuc0FnZ3JlZ2F0aW9uc1tlbGVtZW50Lk5hbWUgYXMgc3RyaW5nXSA9IHtcblx0XHRcdFx0bmFtZTogZWxlbWVudC5OYW1lIGFzIHN0cmluZyxcblx0XHRcdFx0cHJvcGVydHlQYXRoOiBlbGVtZW50LkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlLFxuXHRcdFx0XHRhZ2dyZWdhdGlvbk1ldGhvZDogZWxlbWVudC5BZ2dyZWdhdGlvbk1ldGhvZCxcblx0XHRcdFx0bGFiZWw6IGVsZW1lbnQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsXG5cdFx0XHRcdFx0PyBlbGVtZW50Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKVxuXHRcdFx0XHRcdDogYCR7b1Jlc291cmNlQnVuZGxlQ29yZS5nZXRUZXh0KFwiQUdHUkVHQVRBQkxFX1BST1BFUlRZXCIpfSAoJHtlbGVtZW50Lk5hbWV9KWAsXG5cdFx0XHRcdHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0XHRzb3J0T3JkZXI6IFwiYm90aFwiLFxuXHRcdFx0XHRjdXN0b206IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFBZ2dQcm9wcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMoKTtcblx0Y29uc3QgYUdycFByb3BzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0R3JvdXBhYmxlUHJvcGVydGllcygpO1xuXHRjb25zdCBtQXBwbHlTdXBwb3J0ZWQgPSB7fSBhcyBDaGFydEFwcGx5U3VwcG9ydGVkO1xuXHRtQXBwbHlTdXBwb3J0ZWQuJFR5cGUgPSBBZ2dyZWdhdGlvbkFubm90YXRpb25UeXBlcy5BcHBseVN1cHBvcnRlZFR5cGU7XG5cdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gW107XG5cdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzID0gW107XG5cblx0aWYgKGFBZ2dQcm9wcykge1xuXHRcdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gYUFnZ1Byb3BzLm1hcCgocHJvcCkgPT5cblx0XHRcdGdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXNPYmplY3QocHJvcClcblx0XHQpIGFzIChFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+ICYgeyBQcm9wZXJ0eTogRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiB9KVtdO1xuXHR9XG5cblx0aWYgKGFHcnBQcm9wcykge1xuXHRcdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzID0gYUdycFByb3BzLm1hcCgocHJvcCkgPT4gKHtcblx0XHRcdFtcIiRQcm9wZXJ0eVBhdGhcIl06IHByb3AudmFsdWVcblx0XHR9KSkgYXMgKEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gJiB7IFByb3BlcnR5OiBFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+IH0pW107XG5cdH1cblxuXHRjb25zdCBjaGFydEFjdGlvbnMgPSBnZXRDaGFydEFjdGlvbnMoY2hhcnRBbm5vdGF0aW9uLCB2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCk7XG5cdGxldCBbbmF2aWdhdGlvblByb3BlcnR5UGF0aCAvKiwgYW5ub3RhdGlvblBhdGgqL10gPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIik7XG5cdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSA9PT0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKSB7XG5cdFx0Ly8gRHJvcCB0cmFpbGluZyBzbGFzaFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLnN1YnN0cmluZygwLCBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpO1xuXHR9XG5cdGNvbnN0IHRpdGxlID0gY2hhcnRBbm5vdGF0aW9uLlRpdGxlPy50b1N0cmluZygpIHx8IFwiXCI7IC8vIHJlYWQgdGl0bGUgZnJvbSBjaGFydCBhbm5vdGF0aW9uXG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgaXNFbnRpdHlTZXQ6IGJvb2xlYW4gPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCA9PT0gMDtcblx0Y29uc3QgZW50aXR5TmFtZTogc3RyaW5nID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgPyBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldC5uYW1lIDogZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXHRjb25zdCBzRmlsdGVyYmFySWQgPSBpc0VudGl0eVNldCA/IGdldEZpbHRlckJhcklEKGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSkgOiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9WaXpQcm9wZXJ0aWVzID0ge1xuXHRcdHBsb3RBcmVhOiB7XG5cdFx0XHR3aW5kb3c6IHtcblx0XHRcdFx0c3RhcnQ6IFwiZmlyc3REYXRhUG9pbnRcIixcblx0XHRcdFx0ZW5kOiBcImxhc3REYXRhUG9pbnRcIlxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bGVnZW5kR3JvdXA6IHtcblx0XHRcdGxheW91dDoge1xuXHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIlxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0bGV0IGF1dG9CaW5kT25Jbml0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpZiAoY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2UpIHtcblx0XHRhdXRvQmluZE9uSW5pdCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoXG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQgfHxcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlXG5cdCkge1xuXHRcdGF1dG9CaW5kT25Jbml0ID0gZmFsc2U7XG5cdH1cblx0Y29uc3QgaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA9XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKCkgfHxcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlO1xuXHRjb25zdCBvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQgPSBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID8gXCIuaGFuZGxlcnMub25TZWdtZW50ZWRCdXR0b25QcmVzc2VkXCIgOiBcIlwiO1xuXHRjb25zdCB2aXNpYmxlID0gaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA/IFwiez0gJHtwYWdlSW50ZXJuYWw+YWxwQ29udGVudFZpZXd9ICE9PSAnVGFibGUnfVwiIDogXCJ0cnVlXCI7XG5cdGNvbnN0IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBbGxvd2VkVHJhbnNmb3JtYXRpb25zKCk7XG5cdG1BcHBseVN1cHBvcnRlZC5lbmFibGVTZWFyY2ggPSBhbGxvd2VkVHJhbnNmb3JtYXRpb25zID8gYWxsb3dlZFRyYW5zZm9ybWF0aW9ucy5pbmNsdWRlcyhcInNlYXJjaFwiKSA6IHRydWU7XG5cdGxldCBxdWFsaWZpZXIgPSBcIlwiO1xuXHRpZiAoY2hhcnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIikubGVuZ3RoID4gMSkge1xuXHRcdHF1YWxpZmllciA9IGNoYXJ0QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpWzFdO1xuXHR9XG5cdGNvbnN0IGlzSW5zaWdodHNWaXNpYmxlID0gZ2V0SW5zaWdodHNWaXNpYmlsaXR5KFwiQW5hbHl0aWNhbFwiLCBjb252ZXJ0ZXJDb250ZXh0LCB2aXN1YWxpemF0aW9uUGF0aCk7XG5cdGNvbnN0IGlzUGFyYW1ldGVyaXplZEVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0UGFyYW1ldGVyRW50aXR5VHlwZSgpID8gdHJ1ZSA6IGZhbHNlO1xuXHRjb25zdCBpc0luc2lnaHRzRW5hYmxlZCA9IGFuZChnZXRJbnNpZ2h0c0VuYWJsZW1lbnQoKSwgaXNJbnNpZ2h0c1Zpc2libGUpO1xuXHRyZXR1cm4ge1xuXHRcdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0LFxuXHRcdGlkOiBxdWFsaWZpZXJcblx0XHRcdD8gZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBxdWFsaWZpZXIsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KVxuXHRcdFx0OiBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRjb2xsZWN0aW9uOiBnZXRUYXJnZXRPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKSxcblx0XHRhcGlJZDogZ2VuZXJhdGUoW1xuXHRcdFx0cXVhbGlmaWVyXG5cdFx0XHRcdD8gZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBxdWFsaWZpZXIsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KVxuXHRcdFx0XHQ6IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdFx0XCJDaGFydFwiXG5cdFx0XSksXG5cdFx0ZW50aXR5TmFtZTogZW50aXR5TmFtZSxcblx0XHRwZXJzb25hbGl6YXRpb246IGdldFAxM25Nb2RlKHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRuYXZpZ2F0aW9uUGF0aDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCxcblx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHZpc3VhbGl6YXRpb25QYXRoKSxcblx0XHRmaWx0ZXJJZDogc0ZpbHRlcmJhcklkLFxuXHRcdHZpelByb3BlcnRpZXM6IEpTT04uc3RyaW5naWZ5KG9WaXpQcm9wZXJ0aWVzKSxcblx0XHRhY3Rpb25zOiBjaGFydEFjdGlvbnMuYWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogY2hhcnRBY3Rpb25zLmNvbW1hbmRBY3Rpb25zLFxuXHRcdHRpdGxlOiB0aXRsZSxcblx0XHRhdXRvQmluZE9uSW5pdDogYXV0b0JpbmRPbkluaXQsXG5cdFx0b25TZWdtZW50ZWRCdXR0b25QcmVzc2VkOiBvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQsXG5cdFx0dmlzaWJsZTogdmlzaWJsZSxcblx0XHRjdXN0b21BZ2c6IG1DdXN0b21BZ2dyZWdhdGVzLFxuXHRcdHRyYW5zQWdnOiBtVHJhbnNBZ2dyZWdhdGlvbnMsXG5cdFx0YXBwbHlTdXBwb3J0ZWQ6IG1BcHBseVN1cHBvcnRlZCxcblx0XHRzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50UGF0aCxcblx0XHR2YXJpYW50TWFuYWdlbWVudDogZmluZFZhcmlhbnRNYW5hZ2VtZW50KHAxM25Nb2RlLCB2YXJpYW50TWFuYWdlbWVudCksXG5cdFx0aXNJbnNpZ2h0c0VuYWJsZWQ6IGlzSW5zaWdodHNFbmFibGVkLFxuXHRcdGlzSW5zaWdodHNWaXNpYmxlOiBpc0luc2lnaHRzVmlzaWJsZSxcblx0XHRpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXQ6IGlzUGFyYW1ldGVyaXplZEVudGl0eVNldFxuXHR9O1xufVxuLyoqXG4gKiBNZXRob2QgdG8gZGV0ZXJtaW5lIHRoZSB2YXJpYW50IG1hbmFnZW1lbnQuXG4gKiBAcGFyYW0gcDEzbk1vZGVcbiAqIEBwYXJhbSB2YXJpYW50TWFuYWdlbWVudFxuICogQHJldHVybnMgVGhlIHZhcmlhbnQgbWFuYWdlbWVudCBmb3IgdGhlIGNoYXJ0XG4gKi9cbmZ1bmN0aW9uIGZpbmRWYXJpYW50TWFuYWdlbWVudChwMTNuTW9kZTogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlKTogVmFyaWFudE1hbmFnZW1lbnRUeXBlIHtcblx0cmV0dXJuIHZhcmlhbnRNYW5hZ2VtZW50ID09PSBcIkNvbnRyb2xcIiAmJiAhcDEzbk1vZGUgPyBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZSA6IHZhcmlhbnRNYW5hZ2VtZW50O1xufVxuXG4vKipcbiAqIENyZWF0ZSB0aGUgQ2hhcnRWaXN1YWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gZHVyaW5nIHRlbXBsYXRpbmcuXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uUGF0aCBUaGUgcGF0aCBvZiB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvbiBUaGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uXG4gKiBAcmV0dXJucyBUaGUgY2hhcnQgdmlzdWFsaXphdGlvbiBiYXNlZCBvbiB0aGUgYW5ub3RhdGlvbiB1c2VkIGZvciB0ZW1wbGF0aW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGFydFZpc3VhbGl6YXRpb25Gb3JUZW1wbGF0aW5nKFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4sXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdHZpc3VhbGl6YXRpb246IEFjdHVhbFZpc3VhbGl6YXRpb25Bbm5vdGF0aW9uc1xuKTogQ2hhcnRUZW1wbGF0ZVZpc3VhbGl6YXRpb24ge1xuXHRjb25zdCBxdWFsaWZpZXIgPSB2aXN1YWxpemF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIikubGVuZ3RoID4gMSA/IHZpc3VhbGl6YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLnNwbGl0KFwiI1wiKVsxXSA6IFwiXCI7XG5cdGNvbnN0IFtuYXZpZ2F0aW9uUHJvcGVydHlQYXRoXSA9IHZpc3VhbGl6YXRpb25QYXRoLnNwbGl0KFwiQFwiKTtcblxuXHRjb25zdCBkYXRhTW9kZWxQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdGNvbnN0IGlzRW50aXR5U2V0OiBib29sZWFuID0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggPT09IDA7XG5cdGNvbnN0IGVudGl0eU5hbWU6IHN0cmluZyA9IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0Py5uYW1lID8/IGRhdGFNb2RlbFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZTtcblx0Y29uc3QgYWdncmVnYXRpb25IZWxwZXIgPSBuZXcgQWdncmVnYXRpb25IZWxwZXIoY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksIGNvbnZlcnRlckNvbnRleHQsIHRydWUpO1xuXHRjb25zdCBhbGxvd2VkVHJhbnNmb3JtYXRpb25zID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0QWxsb3dlZFRyYW5zZm9ybWF0aW9ucygpO1xuXHRjb25zdCBpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXQgPSAhIWNvbnZlcnRlckNvbnRleHQuZ2V0UGFyYW1ldGVyRW50aXR5VHlwZSgpO1xuXHRyZXR1cm4ge1xuXHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgodmlzdWFsaXphdGlvblBhdGgpLFxuXHRcdGlzUGFyYW1ldGVyaXplZEVudGl0eVNldCxcblx0XHRjb2xsZWN0aW9uOiBnZXRUYXJnZXRPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKSxcblx0XHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCxcblx0XHRlbnRpdHlOYW1lLFxuXHRcdGlkOiBxdWFsaWZpZXJcblx0XHRcdD8gZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBxdWFsaWZpZXIsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KVxuXHRcdFx0OiBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRhcGlJZDogZ2VuZXJhdGUoW1xuXHRcdFx0cXVhbGlmaWVyXG5cdFx0XHRcdD8gZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBxdWFsaWZpZXIsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KVxuXHRcdFx0XHQ6IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdFx0XCJDaGFydFwiXG5cdFx0XSksXG5cdFx0YXBwbHlTdXBwb3J0ZWQ6IHtcblx0XHRcdCRUeXBlOiBcIk9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BcHBseVN1cHBvcnRlZFR5cGVcIixcblx0XHRcdGVuYWJsZVNlYXJjaDogYWxsb3dlZFRyYW5zZm9ybWF0aW9ucz8uaW5jbHVkZXMoXCJzZWFyY2hcIikgPz8gdHJ1ZVxuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZ2V0IGNvbXBpbGUgZXhwcmVzc2lvbiBmb3IgRGF0YUZpZWxkRm9yQWN0aW9uIGFuZCBEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24uXG4gKiBAcGFyYW0gZGF0YUZpZWxkXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgQ29tcGlsZSBleHByZXNzaW9uIGZvciBEYXRhRmllbGRGb3JBY3Rpb24gYW5kIERhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblxuICovXG5mdW5jdGlvbiBnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbihcblx0ZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdG5vdChcblx0XHRcdGVxdWFsKFxuXHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oXG5cdFx0XHRcdFx0ZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuLFxuXHRcdFx0XHRcdFtdLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlTW9kZWxQYXRoRnVuY3Rpb24oKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpXG5cdFx0KVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmxhbmtDaGFydFZpc3VhbGl6YXRpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+KTogQ2hhcnRWaXN1YWxpemF0aW9uIHtcblx0Y29uc3QgaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA9XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKCkgfHxcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlO1xuXHRjb25zdCBkYXRhTW9kZWxQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdGNvbnN0IGVudGl0eU5hbWUgPSBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCA/IGRhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5U2V0Lm5hbWUgOiBkYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWU7XG5cblx0Y29uc3QgdmlzdWFsaXphdGlvbjogQ2hhcnRWaXN1YWxpemF0aW9uID0ge1xuXHRcdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0LFxuXHRcdGlkOiBnZXRDaGFydElEKGVudGl0eU5hbWUsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRhcGlJZDogZ2VuZXJhdGUoW2dldENoYXJ0SUQoZW50aXR5TmFtZSwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLCBcIkNoYXJ0XCJdKSxcblx0XHRlbnRpdHlOYW1lOiBlbnRpdHlOYW1lLFxuXHRcdHRpdGxlOiBcIlwiLFxuXHRcdGNvbGxlY3Rpb246IFwiXCIsXG5cdFx0cGVyc29uYWxpemF0aW9uOiB1bmRlZmluZWQsXG5cdFx0bmF2aWdhdGlvblBhdGg6IFwiXCIsXG5cdFx0YW5ub3RhdGlvblBhdGg6IFwiXCIsXG5cdFx0dml6UHJvcGVydGllczogSlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0bGVnZW5kR3JvdXA6IHtcblx0XHRcdFx0bGF5b3V0OiB7XG5cdFx0XHRcdFx0cG9zaXRpb246IFwiYm90dG9tXCJcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pLFxuXHRcdGFjdGlvbnM6IFtdLFxuXHRcdGNvbW1hbmRBY3Rpb25zOiB7fSxcblx0XHRhdXRvQmluZE9uSW5pdDogZmFsc2UsXG5cdFx0b25TZWdtZW50ZWRCdXR0b25QcmVzc2VkOiBcIlwiLFxuXHRcdHZpc2libGU6IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPyBcIns9ICR7cGFnZUludGVybmFsPmFscENvbnRlbnRWaWV3fSAhPT0gJ1RhYmxlJ31cIiA6IFwidHJ1ZVwiLFxuXHRcdGN1c3RvbUFnZzoge30sXG5cdFx0dHJhbnNBZ2c6IHt9LFxuXHRcdGFwcGx5U3VwcG9ydGVkOiB7XG5cdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXBwbHlTdXBwb3J0ZWRUeXBlXCIsXG5cdFx0XHRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzOiBbXSxcblx0XHRcdEdyb3VwYWJsZVByb3BlcnRpZXM6IFtdLFxuXHRcdFx0ZW5hYmxlU2VhcmNoOiBmYWxzZVxuXHRcdH0sXG5cdFx0bXVsdGlWaWV3czogZmFsc2UsXG5cdFx0dmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZS5Ob25lXG5cdH07XG5cblx0cmV0dXJuIHZpc3VhbGl6YXRpb247XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBeURBO0FBQ0E7QUFDQTs7RUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQSw4QkFBOEJBLENBQ3RDQyxlQUFzQixFQUN0QkMsaUJBQXlCLEVBQ3pCQyxnQkFBeUQsRUFDRDtJQUN4RCxNQUFNQyxZQUFtRSxHQUFHLEVBQUU7SUFDOUUsSUFBSUgsZUFBZSxFQUFFSSxPQUFPLEVBQUU7TUFDN0JKLGVBQWUsQ0FBQ0ksT0FBTyxDQUFDQyxPQUFPLENBQUVDLFNBQWdFLElBQUs7UUFDckcsTUFBTUMsR0FBRyxHQUFH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Z0IsQ0FBQ3dJLHNCQUFzQixDQUFDLENBQUM7SUFDL0QsTUFBTUUsVUFBVSxHQUFHSCxhQUFhLENBQUNJLGVBQWUsR0FBR0osYUFBYSxDQUFDSSxlQUFlLENBQUNsRSxJQUFJLEdBQUc4RCxhQUFhLENBQUNLLGlCQUFpQixDQUFDbkUsSUFBSTtJQUU1SCxNQUFNcUgsYUFBaUMsR0FBRztNQUN6Qy9LLElBQUksRUFBRTJKLGlCQUFpQixDQUFDQyxLQUFLO01BQzdCQyxFQUFFLEVBQUVDLFVBQVUsQ0FBQ25DLFVBQVUsRUFBRWdDLGlCQUFpQixDQUFDQyxLQUFLLENBQUM7TUFDbkRLLEtBQUssRUFBRUMsUUFBUSxDQUFDLENBQUNKLFVBQVUsQ0FBQ25DLFVBQVUsRUFBRWdDLGlCQUFpQixDQUFDQyxLQUFLLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztNQUMzRWpDLFVBQVUsRUFBRUEsVUFBVTtNQUN0QkwsS0FBSyxFQUFFLEVBQUU7TUFDVHlDLFVBQVUsRUFBRSxFQUFFO01BQ2RySCxlQUFlLEVBQUVLLFNBQVM7TUFDMUJvSCxjQUFjLEVBQUUsRUFBRTtNQUNsQmhLLGNBQWMsRUFBRSxFQUFFO01BQ2xCbUssYUFBYSxFQUFFQyxJQUFJLENBQUNDLFNBQVMsQ0FBQztRQUM3QmxDLFdBQVcsRUFBRTtVQUNaQyxNQUFNLEVBQUU7WUFDUHhHLFFBQVEsRUFBRTtVQUNYO1FBQ0Q7TUFDRCxDQUFDLENBQUM7TUFDRlAsT0FBTyxFQUFFLEVBQUU7TUFDWFMsY0FBYyxFQUFFLENBQUMsQ0FBQztNQUNsQnVHLGNBQWMsRUFBRSxLQUFLO01BQ3JCTyx3QkFBd0IsRUFBRSxFQUFFO01BQzVCekksT0FBTyxFQUFFd0kseUJBQXlCLEdBQUcsZ0RBQWdELEdBQUcsTUFBTTtNQUM5RjJCLFNBQVMsRUFBRSxDQUFDLENBQUM7TUFDYkMsUUFBUSxFQUFFLENBQUMsQ0FBQztNQUNaQyxjQUFjLEVBQUU7UUFDZi9LLEtBQUssRUFBRSw2Q0FBNkM7UUFDcERrSCxzQkFBc0IsRUFBRSxFQUFFO1FBQzFCQyxtQkFBbUIsRUFBRSxFQUFFO1FBQ3ZCbUMsWUFBWSxFQUFFO01BQ2YsQ0FBQztNQUNEc0MsVUFBVSxFQUFFLEtBQUs7TUFDakJqSixpQkFBaUIsRUFBRU0scUJBQXFCLENBQUNnSTtJQUMxQyxDQUFDO0lBRUQsT0FBT0UsYUFBYTtFQUNyQjtFQUFDN0ksUUFBQSxDQUFBcUosNkJBQUEsR0FBQUEsNkJBQUE7RUFBQSxPQUFBckosUUFBQTtBQUFBIiwiaWdub3JlTGlzdCI6W119
423
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDaGFydEFjdGlvbnNGcm9tQW5ub3RhdGlvbnMiLCJjaGFydEFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJjaGFydEFjdGlvbnMiLCJBY3Rpb25zIiwiZm9yRWFjaCIsImRhdGFGaWVsZCIsImtleSIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsImlzRGF0YUZpZWxkRm9yQWN0aW9uQWJzdHJhY3QiLCJJbmxpbmUiLCJEZXRlcm1pbmluZyIsIiRUeXBlIiwiQWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInB1c2giLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImFubm90YXRpb25QYXRoIiwiZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInZpc2libGUiLCJnZXRDb21waWxlRXhwcmVzc2lvbkZvckFjdGlvbiIsIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiIsImlzTmF2aWdhYmxlIiwiaXNBbm5vdGF0aW9uQWN0aW9uR3JvdXAiLCJNZW51IiwidGV4dCIsIkxhYmVsIiwidG9TdHJpbmciLCJtZW51IiwibWFwIiwiYWN0aW9uIiwiZ2V0RGF0YUZpZWxkQW5ub3RhdGlvbkFjdGlvbiIsImdldENoYXJ0QWN0aW9ucyIsImFBbm5vdGF0aW9uQWN0aW9ucyIsIm1hbmlmZXN0QWN0aW9ucyIsImdldEFjdGlvbnNGcm9tTWFuaWZlc3QiLCJnZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uIiwiYWN0aW9ucyIsImFjdGlvbk92ZXJ3cml0ZUNvbmZpZyIsImVuYWJsZWQiLCJPdmVycmlkZVR5cGUiLCJvdmVyd3JpdGUiLCJlbmFibGVPblNlbGVjdCIsImNvbW1hbmQiLCJwb3NpdGlvbiIsImluc2VydEN1c3RvbUVsZW1lbnRzIiwiY29tbWFuZEFjdGlvbnMiLCJfZXhwb3J0cyIsImdldFAxM25Nb2RlIiwibWFuaWZlc3RXcmFwcGVyIiwiZ2V0TWFuaWZlc3RXcmFwcGVyIiwiY2hhcnRNYW5pZmVzdFNldHRpbmdzIiwidmFyaWFudE1hbmFnZW1lbnQiLCJnZXRWYXJpYW50TWFuYWdlbWVudCIsImFQZXJzb25hbGl6YXRpb24iLCJwZXJzb25hbGl6YXRpb24iLCJjaGFydFNldHRpbmdzIiwiaXNDb250cm9sVmFyaWFudCIsIlZhcmlhbnRNYW5hZ2VtZW50VHlwZSIsIkNvbnRyb2wiLCJ1bmRlZmluZWQiLCJpdGVtIiwic29ydCIsImZpbHRlciIsImpvaW4iLCJnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzT2JqZWN0IiwiYWdnUHJvcCIsIm9iaiIsIlByb3BlcnR5IiwiJFByb3BlcnR5UGF0aCIsInZhbHVlIiwibmFtZSIsImNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbiIsImRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZCIsInNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoIiwiYWdncmVnYXRpb25IZWxwZXIiLCJBZ2dyZWdhdGlvbkhlbHBlciIsImdldEVudGl0eVR5cGUiLCJpc0FuYWx5dGljc1N1cHBvcnRlZCIsIkVycm9yIiwiYVRyYW5zQWdncmVnYXRpb25zIiwiZ2V0VHJhbnNBZ2dyZWdhdGlvbnMiLCJhQ3VzdG9tQWdncmVnYXRlcyIsImdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zIiwicGFnZU1hbmlmZXN0U2V0dGluZ3MiLCJwMTNuTW9kZSIsIkxvZyIsIndhcm5pbmciLCJtQ3VzdG9tQWdncmVnYXRlcyIsImVudGl0eVR5cGUiLCJjdXN0b21BZ2dyZWdhdGUiLCJhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyIsImFubm90YXRpb25zIiwiQWdncmVnYXRpb24iLCJDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzIiwicXVhbGlmaWVyIiwicmVsYXRlZEN1c3RvbUFnZ3JlZ2F0ZVByb3BlcnR5IiwiZW50aXR5UHJvcGVydGllcyIsImZpbmQiLCJwcm9wZXJ0eSIsImxhYmVsIiwiQ29tbW9uIiwic29ydGFibGUiLCJzb3J0T3JkZXIiLCJjb250ZXh0RGVmaW5pbmdQcm9wZXJ0eSIsIm9DdHhEZWZQcm9wZXJ0eSIsIm1UcmFuc0FnZ3JlZ2F0aW9ucyIsIm9SZXNvdXJjZUJ1bmRsZUNvcmUiLCJMaWJyYXJ5IiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJlbGVtZW50IiwiTmFtZSIsInByb3BlcnR5UGF0aCIsIkFnZ3JlZ2F0YWJsZVByb3BlcnR5IiwiYWdncmVnYXRpb25NZXRob2QiLCJBZ2dyZWdhdGlvbk1ldGhvZCIsImdldFRleHQiLCJjdXN0b20iLCJhQWdnUHJvcHMiLCJnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzIiwiYUdycFByb3BzIiwiZ2V0R3JvdXBhYmxlUHJvcGVydGllcyIsIm1BcHBseVN1cHBvcnRlZCIsIkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJHcm91cGFibGVQcm9wZXJ0aWVzIiwicHJvcCIsIm5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJzcGxpdCIsImxhc3RJbmRleE9mIiwibGVuZ3RoIiwic3Vic3RyaW5nIiwidGl0bGUiLCJUaXRsZSIsImRhdGFNb2RlbFBhdGgiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiaXNFbnRpdHlTZXQiLCJlbnRpdHlOYW1lIiwidGFyZ2V0RW50aXR5U2V0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJzRmlsdGVyYmFySWQiLCJnZXRGaWx0ZXJCYXJJRCIsImdldENvbnRleHRQYXRoIiwib1ZpelByb3BlcnRpZXMiLCJwbG90QXJlYSIsIndpbmRvdyIsInN0YXJ0IiwiZW5kIiwibGVnZW5kR3JvdXAiLCJsYXlvdXQiLCJhdXRvQmluZE9uSW5pdCIsImdldFRlbXBsYXRlVHlwZSIsIlRlbXBsYXRlVHlwZSIsIk9iamVjdFBhZ2UiLCJMaXN0UmVwb3J0IiwiQW5hbHl0aWNhbExpc3RQYWdlIiwiaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsIm9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCIsImFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMiLCJnZXRBbGxvd2VkVHJhbnNmb3JtYXRpb25zIiwiZW5hYmxlU2VhcmNoIiwiaW5jbHVkZXMiLCJpc0luc2lnaHRzVmlzaWJsZSIsImdldEluc2lnaHRzVmlzaWJpbGl0eSIsImlzUGFyYW1ldGVyaXplZEVudGl0eVNldCIsImdldFBhcmFtZXRlckVudGl0eVR5cGUiLCJpc0luc2lnaHRzRW5hYmxlZCIsImFuZCIsImdldEluc2lnaHRzRW5hYmxlbWVudCIsImNoYXJ0RGltZW5zaW9uS2V5QW5kUm9sZSIsIkRpbWVuc2lvbkF0dHJpYnV0ZXMiLCJkaW1lbnNpb25BdHRyaWJ1dGUiLCJEaW1lbnNpb24iLCJSb2xlIiwiY2hhcnRNZWFzdXJlS2V5QW5kUm9sZSIsIk1lYXN1cmVBdHRyaWJ1dGVzIiwibWVhc3VyZUF0dHJpYnV0ZSIsIk1lYXN1cmUiLCJWaXN1YWxpemF0aW9uVHlwZSIsIkNoYXJ0IiwiaWQiLCJnZXRDaGFydElEIiwiY29sbGVjdGlvbiIsImdldFRhcmdldE9iamVjdFBhdGgiLCJhcGlJZCIsImdlbmVyYXRlIiwibmF2aWdhdGlvblBhdGgiLCJnZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoIiwiZmlsdGVySWQiLCJ2aXpQcm9wZXJ0aWVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImN1c3RvbUFnZyIsInRyYW5zQWdnIiwiYXBwbHlTdXBwb3J0ZWQiLCJmaW5kVmFyaWFudE1hbmFnZW1lbnQiLCJOb25lIiwiY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uRm9yVGVtcGxhdGluZyIsInZpc3VhbGl6YXRpb24iLCJjb21waWxlRXhwcmVzc2lvbiIsIm5vdCIsImVxdWFsIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiVUkiLCJIaWRkZW4iLCJnZXRSZWxhdGl2ZU1vZGVsUGF0aEZ1bmN0aW9uIiwiY3JlYXRlQmxhbmtDaGFydFZpc3VhbGl6YXRpb24iLCJtdWx0aVZpZXdzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5LCBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlLCBBZ2dyZWdhdGlvbk1ldGhvZCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQWdncmVnYXRpb25cIjtcbmltcG9ydCB7IEFnZ3JlZ2F0aW9uQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHR5cGUge1xuXHRDaGFydCxcblx0RGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0RGF0YUZpZWxkRm9yQWN0aW9uR3JvdXAsXG5cdERhdGFGaWVsZEZvckFjdGlvbkdyb3VwVHlwZXMsXG5cdERhdGFGaWVsZEZvckFjdGlvblR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBhbmQsIGNvbXBpbGVFeHByZXNzaW9uLCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBub3QsIHR5cGUgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IFBhZ2VDb250ZXh0UGF0aFRhcmdldCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvYW5ub3RhdGlvbnMvRGF0YUZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEFubm90YXRpb25BY3Rpb24sXG5cdEFubm90YXRpb25BY3Rpb25BY3Rpb25Hcm91cCxcblx0QmFzZUFjdGlvbixcblx0Q29tYmluZWRBY3Rpb24sXG5cdEN1c3RvbUFjdGlvbixcblx0T3ZlcnJpZGVUeXBlQWN0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgeyBPdmVycmlkZVR5cGUsIGluc2VydEN1c3RvbUVsZW1lbnRzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IEtleUhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvS2V5XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgeyBFeHBhbmRQYXRoVHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24sIE1hbmlmZXN0QWN0aW9uIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIFRlbXBsYXRlVHlwZSwgVmFyaWFudE1hbmFnZW1lbnRUeXBlLCBWaXN1YWxpemF0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcIi4uLy4uL01hbmlmZXN0V3JhcHBlclwiO1xuaW1wb3J0IHsgQWdncmVnYXRpb25IZWxwZXIgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9BZ2dyZWdhdGlvblwiO1xuaW1wb3J0IHsgZ2V0Q2hhcnRJRCwgZ2V0RmlsdGVyQmFySUQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JRFwiO1xuaW1wb3J0IHsgZ2V0SW5zaWdodHNFbmFibGVtZW50LCBnZXRJbnNpZ2h0c1Zpc2liaWxpdHkgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9JbnNpZ2h0c0hlbHBlcnNcIjtcbmltcG9ydCB0eXBlIHsgQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zIH0gZnJvbSBcIi4vRGF0YVZpc3VhbGl6YXRpb25cIjtcblxuZXhwb3J0IHR5cGUgQ2hhcnRBcHBseVN1cHBvcnRlZCA9IHtcblx0JFR5cGU6IHN0cmluZztcblx0ZW5hYmxlU2VhcmNoPzogYm9vbGVhbjtcblx0QWdncmVnYXRhYmxlUHJvcGVydGllcz86IChFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+ICYgeyBQcm9wZXJ0eTogRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiB9KVtdO1xuXHRHcm91cGFibGVQcm9wZXJ0aWVzPzogKEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gJiB7IFByb3BlcnR5OiBFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+IH0pW107XG59O1xuZXhwb3J0IHR5cGUgQ2hhcnRUZW1wbGF0ZVZpc3VhbGl6YXRpb24gPSB7XG5cdHR5cGU6IFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0O1xuXHRpZDogc3RyaW5nO1xuXHRhcGlJZDogc3RyaW5nO1xuXHRlbnRpdHlOYW1lOiBzdHJpbmc7XG5cdGNvbGxlY3Rpb246IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0YXBwbHlTdXBwb3J0ZWQ6IENoYXJ0QXBwbHlTdXBwb3J0ZWQ7XG5cdGlzUGFyYW1ldGVyaXplZEVudGl0eVNldD86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIENoYXJ0VmlzdWFsaXphdGlvblxuICovXG5leHBvcnQgdHlwZSBDaGFydFZpc3VhbGl6YXRpb24gPSBDaGFydFRlbXBsYXRlVmlzdWFsaXphdGlvbiAmIHtcblx0ZW50aXR5TmFtZTogc3RyaW5nO1xuXHRwZXJzb25hbGl6YXRpb24/OiBzdHJpbmc7XG5cdG5hdmlnYXRpb25QYXRoOiBzdHJpbmc7XG5cdGZpbHRlcklkPzogc3RyaW5nO1xuXHR2aXpQcm9wZXJ0aWVzOiBzdHJpbmc7XG5cdGFjdGlvbnM6IEJhc2VBY3Rpb25bXTtcblx0Y29tbWFuZEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj47XG5cdHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdGF1dG9CaW5kT25Jbml0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IHN0cmluZztcblx0dmlzaWJsZTogc3RyaW5nO1xuXHRjdXN0b21BZ2c6IG9iamVjdDtcblx0dHJhbnNBZ2c6IG9iamVjdDtcblx0bXVsdGlWaWV3cz86IGJvb2xlYW47XG5cdHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGU7XG5cdHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXHRpc0luc2lnaHRzRW5hYmxlZD86IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPjtcblx0aXNJbnNpZ2h0c1Zpc2libGU/OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdGNoYXJ0RGltZW5zaW9uS2V5QW5kUm9sZT86IG9iamVjdDtcblx0Y2hhcnRNZWFzdXJlS2V5QW5kUm9sZT86IG9iamVjdDtcbn07XG5cbi8qKlxuICogTWV0aG9kIHRvIHJldHJpZXZlIGFsbCBjaGFydCBhY3Rpb25zIGZyb20gYW5ub3RhdGlvbnMuXG4gKiBAcGFyYW0gY2hhcnRBbm5vdGF0aW9uXG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvblBhdGhcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgY2hhcnQgYWN0aW9ucyBmcm9tIHRoZSBhbm5vdGF0aW9uXG4gKi9cbmZ1bmN0aW9uIGdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydCxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBBcnJheTxBbm5vdGF0aW9uQWN0aW9uIHwgQW5ub3RhdGlvbkFjdGlvbkFjdGlvbkdyb3VwPiB7XG5cdGNvbnN0IGNoYXJ0QWN0aW9uczogQXJyYXk8QW5ub3RhdGlvbkFjdGlvbiB8IEFubm90YXRpb25BY3Rpb25BY3Rpb25Hcm91cD4gPSBbXTtcblx0aWYgKGNoYXJ0QW5ub3RhdGlvbj8uQWN0aW9ucykge1xuXHRcdGNoYXJ0QW5ub3RhdGlvbi5BY3Rpb25zLmZvckVhY2goKGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFGaWVsZEZvckFjdGlvbkdyb3VwVHlwZXMpID0+IHtcblx0XHRcdGNvbnN0IGtleSA9IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKTtcblx0XHRcdGlmIChpc0RhdGFGaWVsZEZvckFjdGlvbkFic3RyYWN0KGRhdGFGaWVsZCkgJiYgIWRhdGFGaWVsZC5JbmxpbmUgJiYgIWRhdGFGaWVsZC5EZXRlcm1pbmluZykge1xuXHRcdFx0XHRzd2l0Y2ggKGRhdGFGaWVsZC4kVHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0XHRcdFx0aWYgKGRhdGFGaWVsZC5BY3Rpb25UYXJnZXQgJiYgIWRhdGFGaWVsZC5BY3Rpb25UYXJnZXQuaXNCb3VuZCkge1xuXHRcdFx0XHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChkYXRhRmllbGQuZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHRcdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRcdFx0dmlzaWJsZTogZ2V0Q29tcGlsZUV4cHJlc3Npb25Gb3JBY3Rpb24oZGF0YUZpZWxkLCBjb252ZXJ0ZXJDb250ZXh0KVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRcdFx0XHRjaGFydEFjdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdHR5cGU6IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdFx0XHRcdFx0XHRrZXksXG5cdFx0XHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0XHRcdGlzTmF2aWdhYmxlOiB0cnVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChpc0Fubm90YXRpb25BY3Rpb25Hcm91cChkYXRhRmllbGQpKSB7XG5cdFx0XHRcdGNoYXJ0QWN0aW9ucy5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLk1lbnUsXG5cdFx0XHRcdFx0dGV4dDogZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0bWVudTogZGF0YUZpZWxkLkFjdGlvbnMubWFwKChhY3Rpb24pID0+XG5cdFx0XHRcdFx0XHRnZXREYXRhRmllbGRBbm5vdGF0aW9uQWN0aW9uKGFjdGlvbiBhcyBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcywgY29udmVydGVyQ29udGV4dClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpXG5cdFx0XHRcdH0gYXMgQW5ub3RhdGlvbkFjdGlvbkFjdGlvbkdyb3VwKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gY2hhcnRBY3Rpb25zO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGRhdGFGaWVsZCBpcyBhIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwLlxuICogQHBhcmFtIGRhdGFGaWVsZCBUaGUgZGF0YUZpZWxkIHRvIGNoZWNrLlxuICogQHJldHVybnMgVGhlIGRhdGFGaWVsZCBpZiBpdCBtYXRjaGVzIERhdGFGaWVsZEZvckFjdGlvbkdyb3VwLlxuICovXG5mdW5jdGlvbiBpc0Fubm90YXRpb25BY3Rpb25Hcm91cChkYXRhRmllbGQ6IERhdGFGaWVsZEFic3RyYWN0VHlwZXMpOiBkYXRhRmllbGQgaXMgRGF0YUZpZWxkRm9yQWN0aW9uR3JvdXAge1xuXHRyZXR1cm4gZGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb25Hcm91cDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuZCByZXR1cm5zIERhdGFGaWVsZEZvckFjdGlvbiBmb3IgbWVudSBvZiBEYXRhRmllbGRGb3JBY3Rpb25Hcm91cC5cbiAqIEBwYXJhbSBkYXRhRmllbGQgVGhlIGRhdGFmaWVsZCB0byBnZXQgdGhlIGFubm90YXRpb24gYWN0aW9uIGZyb20uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHQuXG4gKiBAcmV0dXJucyBBbiBhbm5vdGF0aW9uIGFjdGlvbi5cbiAqL1xuZnVuY3Rpb24gZ2V0RGF0YUZpZWxkQW5ub3RhdGlvbkFjdGlvbihcblx0ZGF0YUZpZWxkOiBEYXRhRmllbGRGb3JBY3Rpb25UeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBBbm5vdGF0aW9uQWN0aW9uIHtcblx0cmV0dXJuIHtcblx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoKGRhdGFGaWVsZC5mdWxseVF1YWxpZmllZE5hbWUpLFxuXHRcdGtleTogS2V5SGVscGVyLmdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZChkYXRhRmllbGQpLFxuXHRcdHZpc2libGU6IGdldENvbXBpbGVFeHByZXNzaW9uRm9yQWN0aW9uKGRhdGFGaWVsZCwgY29udmVydGVyQ29udGV4dClcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoYXJ0QWN0aW9ucyhcblx0Y2hhcnRBbm5vdGF0aW9uOiBDaGFydCxcblx0dmlzdWFsaXphdGlvblBhdGg6IHN0cmluZyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBDb21iaW5lZEFjdGlvbiB7XG5cdGNvbnN0IGFBbm5vdGF0aW9uQWN0aW9ucyA9IGdldENoYXJ0QWN0aW9uc0Zyb21Bbm5vdGF0aW9ucyhjaGFydEFubm90YXRpb24sIHZpc3VhbGl6YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3QgbWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb248Q2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24+KHZpc3VhbGl6YXRpb25QYXRoKS5hY3Rpb25zIGFzIFJlY29yZDxcblx0XHRcdHN0cmluZyxcblx0XHRcdE1hbmlmZXN0QWN0aW9uXG5cdFx0Pixcblx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdGFBbm5vdGF0aW9uQWN0aW9uc1xuXHQpO1xuXHRjb25zdCBhY3Rpb25PdmVyd3JpdGVDb25maWc6IE92ZXJyaWRlVHlwZUFjdGlvbiA9IHtcblx0XHRlbmFibGVkOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdGVuYWJsZU9uU2VsZWN0OiBPdmVycmlkZVR5cGUub3ZlcndyaXRlLFxuXHRcdHZpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0Y29tbWFuZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRwb3NpdGlvbjogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZVxuXHR9O1xuXHRjb25zdCBjaGFydEFjdGlvbnMgPSBpbnNlcnRDdXN0b21FbGVtZW50czxCYXNlQWN0aW9uPihhQW5ub3RhdGlvbkFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLCBhY3Rpb25PdmVyd3JpdGVDb25maWcpO1xuXHRyZXR1cm4ge1xuXHRcdGFjdGlvbnM6IGNoYXJ0QWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogbWFuaWZlc3RBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQMTNuTW9kZSh2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0PFBhZ2VDb250ZXh0UGF0aFRhcmdldD4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXI6IE1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IGNoYXJ0TWFuaWZlc3RTZXR0aW5nczogQ2hhcnRNYW5pZmVzdENvbmZpZ3VyYXRpb24gPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24odmlzdWFsaXphdGlvblBhdGgpO1xuXHRjb25zdCB2YXJpYW50TWFuYWdlbWVudDogVmFyaWFudE1hbmFnZW1lbnRUeXBlID0gbWFuaWZlc3RXcmFwcGVyLmdldFZhcmlhbnRNYW5hZ2VtZW50KCk7XG5cdGNvbnN0IGFQZXJzb25hbGl6YXRpb246IHN0cmluZ1tdID0gW107XG5cdC8vIFBlcnNvbmFsaXphdGlvbiBjb25maWd1cmVkIGluIG1hbmlmZXN0LlxuXHRjb25zdCBwZXJzb25hbGl6YXRpb24gPSBjaGFydE1hbmlmZXN0U2V0dGluZ3M/LmNoYXJ0U2V0dGluZ3M/LnBlcnNvbmFsaXphdGlvbjtcblx0Y29uc3QgaXNDb250cm9sVmFyaWFudCA9IHZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudFR5cGUuQ29udHJvbCA/IHRydWUgOiBmYWxzZTtcblx0Ly8gaWYgcGVyc29uYWxpemF0aW9uIGlzIHNldCB0byBmYWxzZSBkbyBub3Qgc2hvdyBhbnkgb3B0aW9uXG5cdGlmICgocGVyc29uYWxpemF0aW9uICE9PSB1bmRlZmluZWQgJiYgIXBlcnNvbmFsaXphdGlvbikgfHwgcGVyc29uYWxpemF0aW9uID09IFwiZmFsc2VcIikge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0aWYgKHR5cGVvZiBwZXJzb25hbGl6YXRpb24gPT09IFwib2JqZWN0XCIpIHtcblx0XHQvLyBTcGVjaWZpYyBwZXJzb25hbGl6YXRpb24gb3B0aW9ucyBlbmFibGVkIGluIG1hbmlmZXN0LiBVc2UgdGhlbSBhcyBpcy5cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLnR5cGUpIHtcblx0XHRcdGFQZXJzb25hbGl6YXRpb24ucHVzaChcIlR5cGVcIik7XG5cdFx0fVxuXHRcdGlmIChwZXJzb25hbGl6YXRpb24uaXRlbSkge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiSXRlbVwiKTtcblx0XHR9XG5cdFx0aWYgKHBlcnNvbmFsaXphdGlvbi5zb3J0KSB7XG5cdFx0XHRhUGVyc29uYWxpemF0aW9uLnB1c2goXCJTb3J0XCIpO1xuXHRcdH1cblx0XHRpZiAocGVyc29uYWxpemF0aW9uLmZpbHRlcikge1xuXHRcdFx0YVBlcnNvbmFsaXphdGlvbi5wdXNoKFwiRmlsdGVyXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gYVBlcnNvbmFsaXphdGlvbi5qb2luKFwiLFwiKTtcblx0fSBlbHNlIGlmIChpc0NvbnRyb2xWYXJpYW50IHx8ICEhcGVyc29uYWxpemF0aW9uKSB7XG5cdFx0Ly8gbWFuaWZlc3QgaGFzIHBlcnNvbmFsaXphdGlvbiBjb25maWd1cmVkLCBjaGVjayBpZiBpdCdzIHRydWVcblx0XHQvLyBpZiBtYW5pZmVzdCBkb2Vzbid0IGhhdmUgcGVyc29uYWxpemF0aW9uLCBjaGVjayBmb3IgdmFyaWFudCBtYW5hZ2VtZW50IGlzIHNldCB0byBjb250cm9sXG5cdFx0cmV0dXJuIFwiU29ydCxUeXBlLEl0ZW0sRmlsdGVyXCI7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gaWYgbWFuaWZlc3QgZG9lc24ndCBoYXZlIHBlcnNvbmFsaXphdGlvbiwgc2hvdyBkZWZhdWx0IG9wdGlvbnMgd2l0aG91dCBmaWx0ZXJcblx0XHRyZXR1cm4gXCJTb3J0LFR5cGUsSXRlbVwiO1xuXHR9XG59XG5leHBvcnQgdHlwZSBDaGFydEN1c3RvbUFnZ3JlZ2F0ZSA9IHtcblx0bmFtZTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRzb3J0YWJsZTogYm9vbGVhbjtcblx0c29ydE9yZGVyOiBcImJvdGhcIjtcblx0Y29udGV4dERlZmluaW5nUHJvcGVydHk6IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgVHJhbnNBZ2cgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0cHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdGFnZ3JlZ2F0aW9uTWV0aG9kOiBBZ2dyZWdhdGlvbk1ldGhvZDtcblx0bGFiZWw6IHN0cmluZztcblx0c29ydGFibGU6IGJvb2xlYW47XG5cdHNvcnRPcmRlcjogXCJib3RoXCI7XG5cdGN1c3RvbTogYm9vbGVhbjtcbn07XG5mdW5jdGlvbiBnZXRBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzT2JqZWN0KGFnZ1Byb3A6IEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSB8IFByb3BlcnR5KTogeyBQcm9wZXJ0eTogeyAkUHJvcGVydHlQYXRoOiBzdHJpbmcgfSB9IHtcblx0bGV0IG9iajtcblx0aWYgKChhZ2dQcm9wIGFzIEFnZ3JlZ2F0YWJsZVByb3BlcnR5VHlwZSk/LlByb3BlcnR5KSB7XG5cdFx0b2JqID0ge1xuXHRcdFx0UHJvcGVydHk6IHtcblx0XHRcdFx0JFByb3BlcnR5UGF0aDogKGFnZ1Byb3AgYXMgQWdncmVnYXRhYmxlUHJvcGVydHlUeXBlKT8uUHJvcGVydHk/LnZhbHVlXG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRvYmogPSB7XG5cdFx0XHRQcm9wZXJ0eToge1xuXHRcdFx0XHQkUHJvcGVydHlQYXRoOiAoYWdnUHJvcCBhcyBQcm9wZXJ0eSk/Lm5hbWVcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG4vKipcbiAqIENyZWF0ZSB0aGUgQ2hhcnRWaXN1YWxpemF0aW9uIGNvbmZpZ3VyYXRpb24gdGhhdCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSBhIGNoYXJ0IHVzaW5nIHRoZSBDaGFydCBidWlsZGluZyBibG9jay5cbiAqIEBwYXJhbSBjaGFydEFubm90YXRpb24gVGhlIHRhcmdldGVkIGNoYXJ0IGFubm90YXRpb25cbiAqIEBwYXJhbSB2aXN1YWxpemF0aW9uUGF0aCBUaGUgcGF0aCBvZiB0aGUgdmlzdWFsaXphdGlvbiBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQgRmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIEFwcGx5U3VwcG9ydGVkIG5lZWRzIHRvIGJlIGNoZWNrZWQgb3Igbm90XG4gKiBAcGFyYW0gc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGhcbiAqIEByZXR1cm5zIFRoZSBjaGFydCB2aXN1YWxpemF0aW9uIGJhc2VkIG9uIHRoZSBhbm5vdGF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDaGFydFZpc3VhbGl6YXRpb24oXG5cdGNoYXJ0QW5ub3RhdGlvbjogQ2hhcnQsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pixcblx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkPzogYm9vbGVhbixcblx0c2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmdcbik6IENoYXJ0VmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBjb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTsgLy8gcGFzc2luZyB0aGUgbGFzdCBwYXJhbWV0ZXIgYXMgdHJ1ZSB0byBjb25zaWRlciB0aGUgb2xkIGFubm90YXRpb25zIGkuZS4gQWdncmVnYXRpb24uQWdncmVnYXRhYmxlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGluIGNhc2Ugb2YgY2hhcnRcblx0aWYgKCFkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQgJiYgIWFnZ3JlZ2F0aW9uSGVscGVyLmlzQW5hbHl0aWNzU3VwcG9ydGVkKCkpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJBcHBseVN1cHBvcnRlZCBpcyBub3QgYWRkZWQgdG8gdGhlIGFubm90YXRpb25zXCIpO1xuXHR9XG5cdGNvbnN0IGFUcmFuc0FnZ3JlZ2F0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldFRyYW5zQWdncmVnYXRpb25zKCk7XG5cdGNvbnN0IGFDdXN0b21BZ2dyZWdhdGVzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTtcblx0Y29uc3QgcGFnZU1hbmlmZXN0U2V0dGluZ3M6IE1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGNvbnN0IHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGUgPSBwYWdlTWFuaWZlc3RTZXR0aW5ncy5nZXRWYXJpYW50TWFuYWdlbWVudCgpO1xuXHRjb25zdCBwMTNuTW9kZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRpZiAocDEzbk1vZGUgPT09IHVuZGVmaW5lZCAmJiB2YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIpIHtcblx0XHRMb2cud2FybmluZyhcIlZhcmlhbnQgTWFuYWdlbWVudCBjYW5ub3QgYmUgZW5hYmxlZCB3aGVuIHBlcnNvbmFsaXphdGlvbiBpcyBkaXNhYmxlZFwiKTtcblx0fVxuXHRjb25zdCBtQ3VzdG9tQWdncmVnYXRlczogUmVjb3JkPHN0cmluZywgb2JqZWN0PiA9IHt9O1xuXHRpZiAoYUN1c3RvbUFnZ3JlZ2F0ZXMpIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGZvciAoY29uc3QgY3VzdG9tQWdncmVnYXRlIG9mIGFDdXN0b21BZ2dyZWdhdGVzKSB7XG5cdFx0XHRjb25zdCBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcyA9IGN1c3RvbUFnZ3JlZ2F0ZT8uYW5ub3RhdGlvbnM/LkFnZ3JlZ2F0aW9uPy5Db250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgcXVhbGlmaWVyID0gY3VzdG9tQWdncmVnYXRlPy5xdWFsaWZpZXI7XG5cdFx0XHRjb25zdCByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkgPSBxdWFsaWZpZXIgJiYgZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5KSA9PiBwcm9wZXJ0eS5uYW1lID09PSBxdWFsaWZpZXIpO1xuXHRcdFx0Y29uc3QgbGFiZWwgPSByZWxhdGVkQ3VzdG9tQWdncmVnYXRlUHJvcGVydHkgJiYgcmVsYXRlZEN1c3RvbUFnZ3JlZ2F0ZVByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKTtcblx0XHRcdG1DdXN0b21BZ2dyZWdhdGVzW3F1YWxpZmllcl0gPSB7XG5cdFx0XHRcdG5hbWU6IHF1YWxpZmllcixcblx0XHRcdFx0bGFiZWw6IGxhYmVsIHx8IGBDdXN0b20gQWdncmVnYXRlICgke3F1YWxpZmllcn0pYCxcblx0XHRcdFx0c29ydGFibGU6IHRydWUsXG5cdFx0XHRcdHNvcnRPcmRlcjogXCJib3RoXCIsXG5cdFx0XHRcdGNvbnRleHREZWZpbmluZ1Byb3BlcnR5OiBhQ29udGV4dERlZmluaW5nUHJvcGVydGllc1xuXHRcdFx0XHRcdD8gYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMubWFwKChvQ3R4RGVmUHJvcGVydHkpID0+IHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIG9DdHhEZWZQcm9wZXJ0eS52YWx1ZTtcblx0XHRcdFx0XHQgIH0pXG5cdFx0XHRcdFx0OiBbXVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBtVHJhbnNBZ2dyZWdhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zQWdnPiA9IHt9O1xuXHRjb25zdCBvUmVzb3VyY2VCdW5kbGVDb3JlID0gTGlicmFyeS5nZXRSZXNvdXJjZUJ1bmRsZUZvcihcInNhcC5mZS5jb3JlXCIpITtcblx0aWYgKGFUcmFuc0FnZ3JlZ2F0aW9ucykge1xuXHRcdGZvciAoY29uc3QgZWxlbWVudCBvZiBhVHJhbnNBZ2dyZWdhdGlvbnMpIHtcblx0XHRcdG1UcmFuc0FnZ3JlZ2F0aW9uc1tlbGVtZW50Lk5hbWUgYXMgc3RyaW5nXSA9IHtcblx0XHRcdFx0bmFtZTogZWxlbWVudC5OYW1lIGFzIHN0cmluZyxcblx0XHRcdFx0cHJvcGVydHlQYXRoOiBlbGVtZW50LkFnZ3JlZ2F0YWJsZVByb3BlcnR5LnZhbHVlLFxuXHRcdFx0XHRhZ2dyZWdhdGlvbk1ldGhvZDogZWxlbWVudC5BZ2dyZWdhdGlvbk1ldGhvZCxcblx0XHRcdFx0bGFiZWw6IGVsZW1lbnQ/LmFubm90YXRpb25zPy5Db21tb24/LkxhYmVsXG5cdFx0XHRcdFx0PyBlbGVtZW50Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5MYWJlbD8udG9TdHJpbmcoKVxuXHRcdFx0XHRcdDogYCR7b1Jlc291cmNlQnVuZGxlQ29yZS5nZXRUZXh0KFwiQUdHUkVHQVRBQkxFX1BST1BFUlRZXCIpfSAoJHtlbGVtZW50Lk5hbWV9KWAsXG5cdFx0XHRcdHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0XHRzb3J0T3JkZXI6IFwiYm90aFwiLFxuXHRcdFx0XHRjdXN0b206IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGNvbnN0IGFBZ2dQcm9wcyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMoKTtcblx0Y29uc3QgYUdycFByb3BzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0R3JvdXBhYmxlUHJvcGVydGllcygpO1xuXHRjb25zdCBtQXBwbHlTdXBwb3J0ZWQgPSB7fSBhcyBDaGFydEFwcGx5U3VwcG9ydGVkO1xuXHRtQXBwbHlTdXBwb3J0ZWQuJFR5cGUgPSBBZ2dyZWdhdGlvbkFubm90YXRpb25UeXBlcy5BcHBseVN1cHBvcnRlZFR5cGU7XG5cdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gW107XG5cdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzID0gW107XG5cblx0aWYgKGFBZ2dQcm9wcykge1xuXHRcdG1BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gYUFnZ1Byb3BzLm1hcCgocHJvcCkgPT5cblx0XHRcdGdldEFnZ3JlZ2F0YWJsZVByb3BlcnRpZXNPYmplY3QocHJvcClcblx0XHQpIGFzIChFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+ICYgeyBQcm9wZXJ0eTogRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiB9KVtdO1xuXHR9XG5cblx0aWYgKGFHcnBQcm9wcykge1xuXHRcdG1BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzID0gYUdycFByb3BzLm1hcCgocHJvcCkgPT4gKHtcblx0XHRcdFtcIiRQcm9wZXJ0eVBhdGhcIl06IHByb3AudmFsdWVcblx0XHR9KSkgYXMgKEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gJiB7IFByb3BlcnR5OiBFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+IH0pW107XG5cdH1cblxuXHRjb25zdCBjaGFydEFjdGlvbnMgPSBnZXRDaGFydEFjdGlvbnMoY2hhcnRBbm5vdGF0aW9uLCB2aXN1YWxpemF0aW9uUGF0aCwgY29udmVydGVyQ29udGV4dCk7XG5cdGxldCBbbmF2aWdhdGlvblByb3BlcnR5UGF0aCAvKiwgYW5ub3RhdGlvblBhdGgqL10gPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIik7XG5cdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSA9PT0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKSB7XG5cdFx0Ly8gRHJvcCB0cmFpbGluZyBzbGFzaFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLnN1YnN0cmluZygwLCBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpO1xuXHR9XG5cdGNvbnN0IHRpdGxlID0gY2hhcnRBbm5vdGF0aW9uLlRpdGxlPy50b1N0cmluZygpIHx8IFwiXCI7IC8vIHJlYWQgdGl0bGUgZnJvbSBjaGFydCBhbm5vdGF0aW9uXG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgaXNFbnRpdHlTZXQ6IGJvb2xlYW4gPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCA9PT0gMDtcblx0Y29uc3QgZW50aXR5TmFtZTogc3RyaW5nID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgPyBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldC5uYW1lIDogZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXHRjb25zdCBzRmlsdGVyYmFySWQgPSBpc0VudGl0eVNldCA/IGdldEZpbHRlckJhcklEKGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udGV4dFBhdGgoKSkgOiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9WaXpQcm9wZXJ0aWVzID0ge1xuXHRcdHBsb3RBcmVhOiB7XG5cdFx0XHR3aW5kb3c6IHtcblx0XHRcdFx0c3RhcnQ6IFwiZmlyc3REYXRhUG9pbnRcIixcblx0XHRcdFx0ZW5kOiBcImxhc3REYXRhUG9pbnRcIlxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0bGVnZW5kR3JvdXA6IHtcblx0XHRcdGxheW91dDoge1xuXHRcdFx0XHRwb3NpdGlvbjogXCJib3R0b21cIlxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0bGV0IGF1dG9CaW5kT25Jbml0OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXHRpZiAoY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2UpIHtcblx0XHRhdXRvQmluZE9uSW5pdCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoXG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkxpc3RSZXBvcnQgfHxcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlXG5cdCkge1xuXHRcdGF1dG9CaW5kT25Jbml0ID0gZmFsc2U7XG5cdH1cblx0Y29uc3QgaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA9XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdFdyYXBwZXIoKS5oYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zKCkgfHxcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlO1xuXHRjb25zdCBvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQgPSBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID8gXCIuaGFuZGxlcnMub25TZWdtZW50ZWRCdXR0b25QcmVzc2VkXCIgOiBcIlwiO1xuXHRjb25zdCB2aXNpYmxlID0gaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyA/IFwiez0gJHtwYWdlSW50ZXJuYWw+YWxwQ29udGVudFZpZXd9ICE9PSAnVGFibGUnfVwiIDogXCJ0cnVlXCI7XG5cdGNvbnN0IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMgPSBhZ2dyZWdhdGlvbkhlbHBlci5nZXRBbGxvd2VkVHJhbnNmb3JtYXRpb25zKCk7XG5cdG1BcHBseVN1cHBvcnRlZC5lbmFibGVTZWFyY2ggPSBhbGxvd2VkVHJhbnNmb3JtYXRpb25zID8gYWxsb3dlZFRyYW5zZm9ybWF0aW9ucy5pbmNsdWRlcyhcInNlYXJjaFwiKSA6IHRydWU7XG5cdGxldCBxdWFsaWZpZXIgPSBcIlwiO1xuXHRpZiAoY2hhcnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIikubGVuZ3RoID4gMSkge1xuXHRcdHF1YWxpZmllciA9IGNoYXJ0QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpWzFdO1xuXHR9XG5cdGNvbnN0IGlzSW5zaWdodHNWaXNpYmxlID0gZ2V0SW5zaWdodHNWaXNpYmlsaXR5KFwiQW5hbHl0aWNhbFwiLCBjb252ZXJ0ZXJDb250ZXh0LCB2aXN1YWxpemF0aW9uUGF0aCk7XG5cdGNvbnN0IGlzUGFyYW1ldGVyaXplZEVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0UGFyYW1ldGVyRW50aXR5VHlwZSgpID8gdHJ1ZSA6IGZhbHNlO1xuXHRjb25zdCBpc0luc2lnaHRzRW5hYmxlZCA9IGFuZChnZXRJbnNpZ2h0c0VuYWJsZW1lbnQoKSwgaXNJbnNpZ2h0c1Zpc2libGUpO1xuXHRjb25zdCBjaGFydERpbWVuc2lvbktleUFuZFJvbGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5bXSA9IFtdO1xuXHRjaGFydEFubm90YXRpb24/LkRpbWVuc2lvbkF0dHJpYnV0ZXM/LmZvckVhY2goKGRpbWVuc2lvbkF0dHJpYnV0ZSkgPT4ge1xuXHRcdGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXHRcdG9ialtkaW1lbnNpb25BdHRyaWJ1dGU/LkRpbWVuc2lvbj8udmFsdWUgYXMgc3RyaW5nXSA9IGRpbWVuc2lvbkF0dHJpYnV0ZT8uUm9sZSBhcyBzdHJpbmc7XG5cdFx0Y2hhcnREaW1lbnNpb25LZXlBbmRSb2xlLnB1c2gob2JqKTtcblx0fSk7XG5cblx0Y29uc3QgY2hhcnRNZWFzdXJlS2V5QW5kUm9sZTogUmVjb3JkPHN0cmluZywgc3RyaW5nPltdID0gW107XG5cdGNoYXJ0QW5ub3RhdGlvbj8uTWVhc3VyZUF0dHJpYnV0ZXM/LmZvckVhY2goKG1lYXN1cmVBdHRyaWJ1dGUpID0+IHtcblx0XHRjb25zdCBvYmo6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblx0XHRvYmpbbWVhc3VyZUF0dHJpYnV0ZT8uTWVhc3VyZT8udmFsdWUgYXMgc3RyaW5nXSA9IG1lYXN1cmVBdHRyaWJ1dGU/LlJvbGUgYXMgc3RyaW5nO1xuXHRcdGNoYXJ0TWVhc3VyZUtleUFuZFJvbGUucHVzaCh7fSk7XG5cdH0pO1xuXG5cdHJldHVybiB7XG5cdFx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQsXG5cdFx0aWQ6IHF1YWxpZmllclxuXHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHQ6IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpLFxuXHRcdGNvbGxlY3Rpb246IGdldFRhcmdldE9iamVjdFBhdGgoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpLFxuXHRcdGFwaUlkOiBnZW5lcmF0ZShbXG5cdFx0XHRxdWFsaWZpZXJcblx0XHRcdFx0PyBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIHF1YWxpZmllciwgVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQpXG5cdFx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0XHRcIkNoYXJ0XCJcblx0XHRdKSxcblx0XHRlbnRpdHlOYW1lOiBlbnRpdHlOYW1lLFxuXHRcdHBlcnNvbmFsaXphdGlvbjogZ2V0UDEzbk1vZGUodmlzdWFsaXphdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdG5hdmlnYXRpb25QYXRoOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLFxuXHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEFic29sdXRlQW5ub3RhdGlvblBhdGgodmlzdWFsaXphdGlvblBhdGgpLFxuXHRcdGZpbHRlcklkOiBzRmlsdGVyYmFySWQsXG5cdFx0dml6UHJvcGVydGllczogSlNPTi5zdHJpbmdpZnkob1ZpelByb3BlcnRpZXMpLFxuXHRcdGFjdGlvbnM6IGNoYXJ0QWN0aW9ucy5hY3Rpb25zLFxuXHRcdGNvbW1hbmRBY3Rpb25zOiBjaGFydEFjdGlvbnMuY29tbWFuZEFjdGlvbnMsXG5cdFx0dGl0bGU6IHRpdGxlLFxuXHRcdGF1dG9CaW5kT25Jbml0OiBhdXRvQmluZE9uSW5pdCxcblx0XHRvblNlZ21lbnRlZEJ1dHRvblByZXNzZWQ6IG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZCxcblx0XHR2aXNpYmxlOiB2aXNpYmxlLFxuXHRcdGN1c3RvbUFnZzogbUN1c3RvbUFnZ3JlZ2F0ZXMsXG5cdFx0dHJhbnNBZ2c6IG1UcmFuc0FnZ3JlZ2F0aW9ucyxcblx0XHRhcHBseVN1cHBvcnRlZDogbUFwcGx5U3VwcG9ydGVkLFxuXHRcdHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRQYXRoLFxuXHRcdHZhcmlhbnRNYW5hZ2VtZW50OiBmaW5kVmFyaWFudE1hbmFnZW1lbnQocDEzbk1vZGUsIHZhcmlhbnRNYW5hZ2VtZW50KSxcblx0XHRpc0luc2lnaHRzRW5hYmxlZDogaXNJbnNpZ2h0c0VuYWJsZWQsXG5cdFx0aXNJbnNpZ2h0c1Zpc2libGU6IGlzSW5zaWdodHNWaXNpYmxlLFxuXHRcdGlzUGFyYW1ldGVyaXplZEVudGl0eVNldDogaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0LFxuXHRcdGNoYXJ0RGltZW5zaW9uS2V5QW5kUm9sZTogY2hhcnREaW1lbnNpb25LZXlBbmRSb2xlLFxuXHRcdGNoYXJ0TWVhc3VyZUtleUFuZFJvbGU6IGNoYXJ0TWVhc3VyZUtleUFuZFJvbGVcblx0fTtcbn1cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSB0aGUgdmFyaWFudCBtYW5hZ2VtZW50LlxuICogQHBhcmFtIHAxM25Nb2RlXG4gKiBAcGFyYW0gdmFyaWFudE1hbmFnZW1lbnRcbiAqIEByZXR1cm5zIFRoZSB2YXJpYW50IG1hbmFnZW1lbnQgZm9yIHRoZSBjaGFydFxuICovXG5mdW5jdGlvbiBmaW5kVmFyaWFudE1hbmFnZW1lbnQocDEzbk1vZGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgdmFyaWFudE1hbmFnZW1lbnQ6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSk6IFZhcmlhbnRNYW5hZ2VtZW50VHlwZSB7XG5cdHJldHVybiB2YXJpYW50TWFuYWdlbWVudCA9PT0gXCJDb250cm9sXCIgJiYgIXAxM25Nb2RlID8gVmFyaWFudE1hbmFnZW1lbnRUeXBlLk5vbmUgOiB2YXJpYW50TWFuYWdlbWVudDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIENoYXJ0VmlzdWFsaXphdGlvbiBjb25maWd1cmF0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGR1cmluZyB0ZW1wbGF0aW5nLlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHQgVGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gdmlzdWFsaXphdGlvblBhdGggVGhlIHBhdGggb2YgdGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvblxuICogQHBhcmFtIHZpc3VhbGl6YXRpb24gVGhlIHZpc3VhbGl6YXRpb24gYW5ub3RhdGlvblxuICogQHJldHVybnMgVGhlIGNoYXJ0IHZpc3VhbGl6YXRpb24gYmFzZWQgb24gdGhlIGFubm90YXRpb24gdXNlZCBmb3IgdGVtcGxhdGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2hhcnRWaXN1YWxpemF0aW9uRm9yVGVtcGxhdGluZyhcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+LFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHR2aXN1YWxpemF0aW9uOiBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnNcbik6IENoYXJ0VGVtcGxhdGVWaXN1YWxpemF0aW9uIHtcblx0Y29uc3QgcXVhbGlmaWVyID0gdmlzdWFsaXphdGlvbi5mdWxseVF1YWxpZmllZE5hbWUuc3BsaXQoXCIjXCIpLmxlbmd0aCA+IDEgPyB2aXN1YWxpemF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZS5zcGxpdChcIiNcIilbMV0gOiBcIlwiO1xuXHRjb25zdCBbbmF2aWdhdGlvblByb3BlcnR5UGF0aF0gPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIik7XG5cblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRjb25zdCBpc0VudGl0eVNldDogYm9vbGVhbiA9IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoID09PSAwO1xuXHRjb25zdCBlbnRpdHlOYW1lOiBzdHJpbmcgPSBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldD8ubmFtZSA/PyBkYXRhTW9kZWxQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWU7XG5cdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpLCBjb252ZXJ0ZXJDb250ZXh0LCB0cnVlKTtcblx0Y29uc3QgYWxsb3dlZFRyYW5zZm9ybWF0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEFsbG93ZWRUcmFuc2Zvcm1hdGlvbnMoKTtcblx0Y29uc3QgaXNQYXJhbWV0ZXJpemVkRW50aXR5U2V0ID0gISFjb252ZXJ0ZXJDb250ZXh0LmdldFBhcmFtZXRlckVudGl0eVR5cGUoKTtcblx0cmV0dXJuIHtcblx0XHRhbm5vdGF0aW9uUGF0aDogY29udmVydGVyQ29udGV4dC5nZXRBYnNvbHV0ZUFubm90YXRpb25QYXRoKHZpc3VhbGl6YXRpb25QYXRoKSxcblx0XHRpc1BhcmFtZXRlcml6ZWRFbnRpdHlTZXQsXG5cdFx0Y29sbGVjdGlvbjogZ2V0VGFyZ2V0T2JqZWN0UGF0aChjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSksXG5cdFx0dHlwZTogVmlzdWFsaXphdGlvblR5cGUuQ2hhcnQsXG5cdFx0ZW50aXR5TmFtZSxcblx0XHRpZDogcXVhbGlmaWVyXG5cdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdDogZ2V0Q2hhcnRJRChpc0VudGl0eVNldCA/IGVudGl0eU5hbWUgOiBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0YXBpSWQ6IGdlbmVyYXRlKFtcblx0XHRcdHF1YWxpZmllclxuXHRcdFx0XHQ/IGdldENoYXJ0SUQoaXNFbnRpdHlTZXQgPyBlbnRpdHlOYW1lIDogbmF2aWdhdGlvblByb3BlcnR5UGF0aCwgcXVhbGlmaWVyLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydClcblx0XHRcdFx0OiBnZXRDaGFydElEKGlzRW50aXR5U2V0ID8gZW50aXR5TmFtZSA6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSxcblx0XHRcdFwiQ2hhcnRcIlxuXHRcdF0pLFxuXHRcdGFwcGx5U3VwcG9ydGVkOiB7XG5cdFx0XHQkVHlwZTogXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQXBwbHlTdXBwb3J0ZWRUeXBlXCIsXG5cdFx0XHRlbmFibGVTZWFyY2g6IGFsbG93ZWRUcmFuc2Zvcm1hdGlvbnM/LmluY2x1ZGVzKFwic2VhcmNoXCIpID8/IHRydWVcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGdldCBjb21waWxlIGV4cHJlc3Npb24gZm9yIERhdGFGaWVsZEZvckFjdGlvbiBhbmQgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLlxuICogQHBhcmFtIGRhdGFGaWVsZFxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIENvbXBpbGUgZXhwcmVzc2lvbiBmb3IgRGF0YUZpZWxkRm9yQWN0aW9uIGFuZCBEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcGlsZUV4cHJlc3Npb25Gb3JBY3Rpb24oXG5cdGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDxQYWdlQ29udGV4dFBhdGhUYXJnZXQ+XG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRub3QoXG5cdFx0XHRlcXVhbChcblx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKFxuXHRcdFx0XHRcdGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbixcblx0XHRcdFx0XHRbXSxcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZU1vZGVsUGF0aEZ1bmN0aW9uKClcblx0XHRcdFx0KSxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KVxuXHRcdClcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJsYW5rQ2hhcnRWaXN1YWxpemF0aW9uKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQ8UGFnZUNvbnRleHRQYXRoVGFyZ2V0Pik6IENoYXJ0VmlzdWFsaXphdGlvbiB7XG5cdGNvbnN0IGhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMgPVxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucygpIHx8XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZTtcblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHRjb25zdCBlbnRpdHlOYW1lID0gZGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgPyBkYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldC5uYW1lIDogZGF0YU1vZGVsUGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lO1xuXG5cdGNvbnN0IHZpc3VhbGl6YXRpb246IENoYXJ0VmlzdWFsaXphdGlvbiA9IHtcblx0XHR0eXBlOiBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCxcblx0XHRpZDogZ2V0Q2hhcnRJRChlbnRpdHlOYW1lLCBWaXN1YWxpemF0aW9uVHlwZS5DaGFydCksXG5cdFx0YXBpSWQ6IGdlbmVyYXRlKFtnZXRDaGFydElEKGVudGl0eU5hbWUsIFZpc3VhbGl6YXRpb25UeXBlLkNoYXJ0KSwgXCJDaGFydFwiXSksXG5cdFx0ZW50aXR5TmFtZTogZW50aXR5TmFtZSxcblx0XHR0aXRsZTogXCJcIixcblx0XHRjb2xsZWN0aW9uOiBcIlwiLFxuXHRcdHBlcnNvbmFsaXphdGlvbjogdW5kZWZpbmVkLFxuXHRcdG5hdmlnYXRpb25QYXRoOiBcIlwiLFxuXHRcdGFubm90YXRpb25QYXRoOiBcIlwiLFxuXHRcdHZpelByb3BlcnRpZXM6IEpTT04uc3RyaW5naWZ5KHtcblx0XHRcdGxlZ2VuZEdyb3VwOiB7XG5cdFx0XHRcdGxheW91dDoge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBcImJvdHRvbVwiXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KSxcblx0XHRhY3Rpb25zOiBbXSxcblx0XHRjb21tYW5kQWN0aW9uczoge30sXG5cdFx0YXV0b0JpbmRPbkluaXQ6IGZhbHNlLFxuXHRcdG9uU2VnbWVudGVkQnV0dG9uUHJlc3NlZDogXCJcIixcblx0XHR2aXNpYmxlOiBoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zID8gXCJ7PSAke3BhZ2VJbnRlcm5hbD5hbHBDb250ZW50Vmlld30gIT09ICdUYWJsZSd9XCIgOiBcInRydWVcIixcblx0XHRjdXN0b21BZ2c6IHt9LFxuXHRcdHRyYW5zQWdnOiB7fSxcblx0XHRhcHBseVN1cHBvcnRlZDoge1xuXHRcdFx0JFR5cGU6IFwiT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkFwcGx5U3VwcG9ydGVkVHlwZVwiLFxuXHRcdFx0QWdncmVnYXRhYmxlUHJvcGVydGllczogW10sXG5cdFx0XHRHcm91cGFibGVQcm9wZXJ0aWVzOiBbXSxcblx0XHRcdGVuYWJsZVNlYXJjaDogZmFsc2Vcblx0XHR9LFxuXHRcdG11bHRpVmlld3M6IGZhbHNlLFxuXHRcdHZhcmlhbnRNYW5hZ2VtZW50OiBWYXJpYW50TWFuYWdlbWVudFR5cGUuTm9uZVxuXHR9O1xuXG5cdHJldHVybiB2aXN1YWxpemF0aW9uO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlEQTtBQUNBO0FBQ0E7O0VBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0EsOEJBQThCQSxDQUN0Q0MsZUFBc0IsRUFDdEJDLGlCQUF5QixFQUN6QkMsZ0JBQXlELEVBQ0Q7SUFDeEQsTUFBTUMsWUFBbUUsR0FBRyxFQUFFO0lBQzlFLElBQUlI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
@@ -77,6 +77,8 @@ export type ChartVisualization = ChartTemplateVisualization & {
77
77
  selectionPresentationVariantPath?: string;
78
78
  isInsightsEnabled?: BindingToolkitExpression<boolean>;
79
79
  isInsightsVisible?: BindingToolkitExpression<boolean>;
80
+ chartDimensionKeyAndRole?: object;
81
+ chartMeasureKeyAndRole?: object;
80
82
  };
81
83
 
82
84
  /**
@@ -394,6 +396,20 @@ export function createChartVisualization(
394
396
  const isInsightsVisible = getInsightsVisibility("Analytical", converterContext, visualizationPath);
395
397
  const isParameterizedEntitySet = converterContext.getParameterEntityType() ? true : false;
396
398
  const isInsightsEnabled = and(getInsightsEnablement(), isInsightsVisible);
399
+ const chartDimensionKeyAndRole: Record<string, string>[] = [];
400
+ chartAnnotation?.DimensionAttributes?.forEach((dimensionAttribute) => {
401
+ const obj: Record<string, string> = {};
402
+ obj[dimensionAttribute?.Dimension?.value as string] = dimensionAttribute?.Role as string;
403
+ chartDimensionKeyAndRole.push(obj);
404
+ });
405
+
406
+ const chartMeasureKeyAndRole: Record<string, string>[] = [];
407
+ chartAnnotation?.MeasureAttributes?.forEach((measureAttribute) => {
408
+ const obj: Record<string, string> = {};
409
+ obj[measureAttribute?.Measure?.value as string] = measureAttribute?.Role as string;
410
+ chartMeasureKeyAndRole.push({});
411
+ });
412
+
397
413
  return {
398
414
  type: VisualizationType.Chart,
399
415
  id: qualifier
@@ -425,7 +441,9 @@ export function createChartVisualization(
425
441
  variantManagement: findVariantManagement(p13nMode, variantManagement),
426
442
  isInsightsEnabled: isInsightsEnabled,
427
443
  isInsightsVisible: isInsightsVisible,
428
- isParameterizedEntitySet: isParameterizedEntitySet
444
+ isParameterizedEntitySet: isParameterizedEntitySet,
445
+ chartDimensionKeyAndRole: chartDimensionKeyAndRole,
446
+ chartMeasureKeyAndRole: chartMeasureKeyAndRole
429
447
  };
430
448
  }
431
449
  /**
@@ -4,7 +4,7 @@
4
4
  "id": "sap.fe.core.fpm",
5
5
  "type": "component",
6
6
  "applicationVersion": {
7
- "version": "1.133.1"
7
+ "version": "1.133.2"
8
8
  },
9
9
  "title": "Object Page",
10
10
  "tags": {
@@ -45,7 +45,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/formatters/CriticalityFormatter", "s
45
45
  controls: [],
46
46
  elements: [],
47
47
  // eslint-disable-next-line no-template-curly-in-string
48
- version: "1.133.1",
48
+ version: "1.133.2",
49
49
  noLibraryCSS: true,
50
50
  extensions: {
51
51
  //Configuration used for rule loading of Support Assistant