@sapui5/sap.fe.templates 1.136.13 → 1.136.15

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.templates",
3
- "version": "1.136.13",
3
+ "version": "1.136.15",
4
4
  "description": "SAPUI5 Library sap.fe.templates",
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.136.13</version>
9
+ <version>1.136.15</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.templates</documentation>
12
12
 
@@ -4,7 +4,7 @@
4
4
  "id": "sap.fe.templates.AnalyticalListPage",
5
5
  "type": "component",
6
6
  "applicationVersion": {
7
- "version": "1.136.13"
7
+ "version": "1.136.15"
8
8
  },
9
9
  "title": "Analytical List Page",
10
10
  "tags": {
@@ -55,10 +55,31 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
55
55
  _initializerDefineProperty(_this, "innerControls", _descriptor6, _this);
56
56
  _initializerDefineProperty(_this, "filterControl", _descriptor7, _this);
57
57
  _initializerDefineProperty(_this, "select", _descriptor8, _this);
58
+ _this.content?.addEventDelegate({
59
+ onAfterRendering: _this.onAfterIconTabBarRendering.bind(_this)
60
+ });
58
61
  return _this;
59
62
  }
60
63
  _inheritsLoose(MultipleModeControl, _Control);
61
64
  var _proto = MultipleModeControl.prototype;
65
+ _proto.onAfterIconTabBarRendering = function onAfterIconTabBarRendering() {
66
+ this.getSelectedInnerControl()?.resumeBinding?.(!this.getProperty("freezeContent"));
67
+ if (this.showCounts && !this.setVisibleOverridden) {
68
+ this.setProperty("setVisibleOverridden", true);
69
+ this.getAllInnerControls().forEach(macroAPI => {
70
+ const iconTabFilter = this._getTabFromInnerControl(macroAPI);
71
+ // No count to show
72
+ if (!iconTabFilter) return;
73
+ const originSetVisible = iconTabFilter.setVisible;
74
+ iconTabFilter.setVisible = value => {
75
+ if (iconTabFilter.getVisible() === false && value) {
76
+ this.refreshTabCount(macroAPI);
77
+ }
78
+ return originSetVisible.bind(iconTabFilter)(value);
79
+ };
80
+ });
81
+ }
82
+ };
62
83
  _proto.onBeforeRendering = function onBeforeRendering() {
63
84
  this.getTabsModel(); // Generate the model which is mandatory for some bindings
64
85
 
@@ -79,24 +100,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
79
100
  oFilterBarAPI.attachEvent("internalFilterChanged", this._onFilterChanged.bind(this));
80
101
  }
81
102
  };
82
- _proto.onAfterRendering = function onAfterRendering() {
83
- this.getSelectedInnerControl()?.resumeBinding?.(!this.getProperty("freezeContent"));
84
- if (this.showCounts && !this.setVisibleOverridden) {
85
- this.setProperty("setVisibleOverridden", true);
86
- this.getAllInnerControls().forEach(macroAPI => {
87
- const iconTabFilter = this._getTabFromInnerControl(macroAPI);
88
- // No count to show
89
- if (!iconTabFilter) return;
90
- const originSetVisible = iconTabFilter.setVisible;
91
- iconTabFilter.setVisible = value => {
92
- if (iconTabFilter.getVisible() === false && value) {
93
- this.refreshTabCount(macroAPI);
94
- }
95
- return originSetVisible.bind(iconTabFilter)(value);
96
- };
97
- });
98
- }
99
- };
100
103
  MultipleModeControl.render = function render(oRm, oControl) {
101
104
  oRm.renderControl(oControl.content);
102
105
  }
@@ -479,4 +482,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
479
482
  }), _class2)) || _class);
480
483
  return MultipleModeControl;
481
484
  }, false);
482
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJkZWZhdWx0VmFsdWUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzciLCJhc3NvY2lhdGlvbiIsIl9kZWM4IiwiX2RlYzkiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsImlkIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkJlZm9yZVJlbmRlcmluZyIsImdldFRhYnNNb2RlbCIsIm9GaWx0ZXJDb250cm9sIiwiX2dldEZpbHRlckNvbnRyb2wiLCJzZXRDb3VudHNPdXREYXRlZCIsIm9GaWx0ZXJCYXJBUEkiLCJnZXRQYXJlbnQiLCJnZXRBbGxJbm5lckNvbnRyb2xzIiwiZm9yRWFjaCIsIm9NYWNyb0FQSSIsInNob3dDb3VudHMiLCJhdHRhY2hFdmVudCIsImludGVybmFsUmVmcmVzaFRhYnNDb3VudCIsImJpbmQiLCJzdXNwZW5kQmluZGluZyIsIl9vblNlYXJjaCIsIl9vbkZpbHRlckNoYW5nZWQiLCJvbkFmdGVyUmVuZGVyaW5nIiwiZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2wiLCJyZXN1bWVCaW5kaW5nIiwiZ2V0UHJvcGVydHkiLCJzZXRWaXNpYmxlT3ZlcnJpZGRlbiIsInNldFByb3BlcnR5IiwibWFjcm9BUEkiLCJpY29uVGFiRmlsdGVyIiwiX2dldFRhYkZyb21Jbm5lckNvbnRyb2wiLCJvcmlnaW5TZXRWaXNpYmxlIiwic2V0VmlzaWJsZSIsInZhbHVlIiwiZ2V0VmlzaWJsZSIsInJlZnJlc2hUYWJDb3VudCIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwicmVuZGVyQ29udHJvbCIsImNvbnRlbnQiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsImhhbmRsZVRhYkNoYW5nZSIsIm9FdmVudCIsIm9JY29uVGFiQmFyIiwiZ2V0U291cmNlIiwib011bHRpQ29udHJvbCIsIm1QYXJhbWV0ZXJzIiwiZ2V0UGFyYW1ldGVycyIsIl9zZXRJbm5lckJpbmRpbmciLCJzUHJldmlvdXNTZWxlY3RlZEtleSIsInByZXZpb3VzS2V5Iiwic1NlbGVjdGVkS2V5Iiwic2VsZWN0ZWRLZXkiLCJvRmlsdGVyQmFyIiwiX3JlZnJlc2hDdXN0b21WaWV3IiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsIkNvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSSIsImFkZCIsImNoYW5nZXMiLCJjaGFuZ2VTcGVjaWZpY0RhdGEiLCJjaGFuZ2VUeXBlIiwicHJldmlvdXNTZWxlY3RlZEtleSIsInNlbGVjdG9yRWxlbWVudCIsIl9nZXRWaWV3Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwiZmlyZUV2ZW50IiwiaWNvblRhYkJhciIsInJlZnJlc2hTZWxlY3RlZElubmVyQ29udHJvbENvbnRlbnQiLCJpbnZhbGlkYXRlQ29udGVudCIsImtleXMiLCJrZXkiLCJiVmFsdWUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzZXRGcmVlemVDb250ZW50IiwiX3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcyIsInRhYnNNb2RlbCIsInJlc3VsdHMiLCJ2aWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3Iiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInVzZUhpZGRlbkZpbHRlckJhciIsIm9UYWIiLCJzVGFiSWQiLCJtSWdub3JlZEZpZWxkcyIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwibm90QXBwbGljYWJsZSIsImZpZWxkcyIsInRpdGxlIiwiX3NldFRhYk1lc3NhZ2VTdHJpcCIsImVudGl0eVR5cGVQYXRoIiwiZGF0YSIsImlnbm9yZWRGaWVsZHMiLCJnZXRUZXh0IiwiaXNBIiwiY2hlY2tOb25GaWx0ZXJhYmxlRW50aXR5U2V0Iiwic2V0RGF0YSIsInJlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwib0NoYXJ0IiwiZ2V0Q29udGVudCIsImJFbnRpdHlTZXRGaWxlcmFibGUiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJnZXRNZXRhTW9kZWwiLCJnZXRDb250ZXh0IiwidGFyZ2V0T2JqZWN0IiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJhYmxlIiwiaW5jbHVkZXMiLCJiT25seUZvclZpc2libGVUYWIiLCJpbm5lckNvbnRyb2xzIiwicmVkdWNlIiwiYUlubmVyQ29udHJvbHMiLCJzSW5uZXJDb250cm9sIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwicHVzaCIsImZpbHRlciIsIm9Jbm5lckNvbnRyb2wiLCJmaWx0ZXJDb250cm9sIiwib1ZpZXciLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckNvbmRpdGlvbnMiLCJzUmVmcmVzaENhdXNlIiwib25WaWV3TmVlZHNSZWZyZXNoIiwiZmlsdGVyQ29uZGl0aW9ucyIsImN1cnJlbnRUYWJJZCIsInJlZnJlc2hDYXVzZSIsImdldENvdW50cyIsInNldENvdW50IiwidGhlbiIsImNvdW50IiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsInRhYmxlRXZlbnQiLCJldmVudE1hY3JvQVBJIiwidGFyZ2V0S2V5IiwicmVmcmVzaFRhYnNDb3VudCIsInNwbGl0Iiwib0ljb25UYWJGaWx0ZXIiLCJjb3VudHNPdXREYXRlZCIsInNldFRhYkNvbnRlbnRUb0JlUmVmcmVzaGVkT25OZXh0T3BlbmluZyIsInNlbGVjdGVkVGFiS2V5IiwidGFiS2V5cyIsInJlZnJlc2hTZWxlY3RlZFRhYkNvbnRlbnQiLCJiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQiLCJiSXNTZWxlY3RlZEtleSIsInNBY3Rpb24iLCJSZXN1bWUiLCJTdXNwZW5kIiwicHJvcGVydGllcyIsInNUZXh0IiwiYUlnbm9yZWRGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsImdldFBhcmFtZXRlciIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk11bHRpcGxlTW9kZUNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IHR5cGUgeyBJY29uVGFiQmFyJFNlbGVjdEV2ZW50IH0gZnJvbSBcInNhcC9tL0ljb25UYWJCYXJcIjtcbmltcG9ydCB0eXBlIEljb25UYWJGaWx0ZXIgZnJvbSBcInNhcC9tL0ljb25UYWJGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvcmVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCBDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkgZnJvbSBcInNhcC91aS9mbC93cml0ZS9hcGkvQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIElubmVyQ29udHJvbFR5cGUgPSBNYWNyb0FQSSAmXG5cdFBhcnRpYWw8e1xuXHRcdHJlc3VtZUJpbmRpbmc6IEZ1bmN0aW9uO1xuXHRcdHN1c3BlbmRCaW5kaW5nOiBGdW5jdGlvbjtcblx0XHRnZXRDb3VudHM6IEZ1bmN0aW9uO1xuXHRcdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzOiBGdW5jdGlvbjtcblx0XHRpbnZhbGlkYXRlQ29udGVudDogRnVuY3Rpb247XG5cdFx0Z2V0Q29udGVudDogRnVuY3Rpb247XG5cdH0+O1xuXG50eXBlIE1lc3NhZ2VTdHJpcFByb3BlcnRpZXMgPSB7XG5cdGVudGl0eVR5cGVQYXRoOiBzdHJpbmc7XG5cdGlnbm9yZWRGaWVsZHM6IHN0cmluZ1tdO1xuXHR0aXRsZTogc3RyaW5nO1xufTtcblxuZW51bSBCaW5kaW5nQWN0aW9uIHtcblx0U3VzcGVuZCA9IFwic3VzcGVuZEJpbmRpbmdcIixcblx0UmVzdW1lID0gXCJyZXN1bWVCaW5kaW5nXCJcbn1cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIilcbmNsYXNzIE11bHRpcGxlTW9kZUNvbnRyb2wgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0NvdW50cyE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0c2V0VmlzaWJsZU92ZXJyaWRkZW4hOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGZyZWV6ZUNvbnRlbnQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGNvdW50c091dERhdGVkITogYm9vbGVhbjtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLkljb25UYWJCYXJcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudCE6IEljb25UYWJCYXI7XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGlubmVyQ29udHJvbHMhOiBzdHJpbmdbXTtcblxuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRmaWx0ZXJDb250cm9sITogc3RyaW5nO1xuXG5cdEBldmVudCgpXG5cdHNlbGVjdCE6IEZ1bmN0aW9uO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdGlkPzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgKFByb3BlcnRpZXNPZjxNdWx0aXBsZU1vZGVDb250cm9sPiAmICRDb250cm9sU2V0dGluZ3MpLFxuXHRcdHNldHRpbmdzPzogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNdWx0aXBsZU1vZGVDb250cm9sPlxuXHQpIHtcblx0XHRzdXBlcihpZCBhcyBzdHJpbmcsIHNldHRpbmdzKTtcblx0fVxuXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0VGFic01vZGVsKCk7IC8vIEdlbmVyYXRlIHRoZSBtb2RlbCB3aGljaCBpcyBtYW5kYXRvcnkgZm9yIHNvbWUgYmluZGluZ3NcblxuXHRcdGNvbnN0IG9GaWx0ZXJDb250cm9sID0gdGhpcy5fZ2V0RmlsdGVyQ29udHJvbCgpO1xuXHRcdGlmICghb0ZpbHRlckNvbnRyb2wpIHtcblx0XHRcdC8vIEluIGNhc2UgdGhlcmUncyBubyBmaWx0ZXJiYXIsIHdlIGhhdmUgdG8gdXBkYXRlIHRoZSBjb3VudHMgaW4gdGhlIHRhYnMgaW1tZWRpYXRlbHlcblx0XHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJBUEkgPSBvRmlsdGVyQ29udHJvbD8uZ2V0UGFyZW50KCk7XG5cdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5zaG93Q291bnRzKSB7XG5cdFx0XHRcdG9NYWNyb0FQSS5hdHRhY2hFdmVudChcImludGVybmFsRGF0YVJlcXVlc3RlZFwiLCB0aGlzLmludGVybmFsUmVmcmVzaFRhYnNDb3VudC5iaW5kKHRoaXMpKTtcblx0XHRcdH1cblx0XHRcdG9NYWNyb0FQSS5zdXNwZW5kQmluZGluZz8uKCk7XG5cdFx0fSk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJBUEkpIHtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbFNlYXJjaFwiLCB0aGlzLl9vblNlYXJjaC5iaW5kKHRoaXMpKTtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbEZpbHRlckNoYW5nZWRcIiwgdGhpcy5fb25GaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcykpO1xuXHRcdH1cblx0fVxuXG5cdG9uQWZ0ZXJSZW5kZXJpbmcoKTogdm9pZCB7XG5cdFx0dGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5yZXN1bWVCaW5kaW5nPy4oIXRoaXMuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpKTtcblx0XHRpZiAodGhpcy5zaG93Q291bnRzICYmICF0aGlzLnNldFZpc2libGVPdmVycmlkZGVuKSB7XG5cdFx0XHR0aGlzLnNldFByb3BlcnR5KFwic2V0VmlzaWJsZU92ZXJyaWRkZW5cIiwgdHJ1ZSk7XG5cdFx0XHR0aGlzLmdldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChtYWNyb0FQSTogTWFjcm9BUEkpOiB2b2lkID0+IHtcblx0XHRcdFx0Y29uc3QgaWNvblRhYkZpbHRlciA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wobWFjcm9BUEkpO1xuXHRcdFx0XHQvLyBObyBjb3VudCB0byBzaG93XG5cdFx0XHRcdGlmICghaWNvblRhYkZpbHRlcikgcmV0dXJuO1xuXG5cdFx0XHRcdGNvbnN0IG9yaWdpblNldFZpc2libGUgPSBpY29uVGFiRmlsdGVyLnNldFZpc2libGU7XG5cdFx0XHRcdGljb25UYWJGaWx0ZXIuc2V0VmlzaWJsZSA9ICh2YWx1ZTogYm9vbGVhbik6IEljb25UYWJGaWx0ZXIgPT4ge1xuXHRcdFx0XHRcdGlmIChpY29uVGFiRmlsdGVyLmdldFZpc2libGUoKSA9PT0gZmFsc2UgJiYgdmFsdWUpIHtcblx0XHRcdFx0XHRcdHRoaXMucmVmcmVzaFRhYkNvdW50KG1hY3JvQVBJKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuIG9yaWdpblNldFZpc2libGUuYmluZChpY29uVGFiRmlsdGVyKSh2YWx1ZSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgcmVuZGVyKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IE11bHRpcGxlTW9kZUNvbnRyb2wpOiB2b2lkIHtcblx0XHRvUm0ucmVuZGVyQ29udHJvbChvQ29udHJvbC5jb250ZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBtb2RlbCBjb250YWluaW5nIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gdGhlIEljb25UYWJGaWx0ZXJzLlxuXHQgKiBAcmV0dXJucyBUaGUgbW9kZWxcblx0ICovXG5cdGdldFRhYnNNb2RlbCgpOiBKU09OTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IHNUYWJzTW9kZWwgPSBcInRhYnNJbnRlcm5hbFwiO1xuXHRcdGNvbnN0IG9Db250ZW50ID0gdGhpcy5jb250ZW50O1xuXHRcdGlmICghb0NvbnRlbnQpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGxldCBvTW9kZWwgPSBvQ29udGVudC5nZXRNb2RlbChzVGFic01vZGVsKSBhcyBKU09OTW9kZWwgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKCFvTW9kZWwpIHtcblx0XHRcdG9Nb2RlbCA9IG5ldyBKU09OTW9kZWwoe30pO1xuXHRcdFx0b0NvbnRlbnQuc2V0TW9kZWwob01vZGVsLCBzVGFic01vZGVsKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9Nb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpbm5lciBjb250cm9sIG9mIHRoZSBkaXNwbGF5ZWQgdGFiLlxuXHQgKiBAcmV0dXJucyBUaGUgY29udHJvbFxuXHQgKi9cblx0Z2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKTogSW5uZXJDb250cm9sVHlwZSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb1NlbGVjdGVkVGFiID0gdGhpcy5jb250ZW50Py5nZXRJdGVtcygpLmZpbmQoKG9JdGVtKSA9PiAob0l0ZW0gYXMgSWNvblRhYkZpbHRlcikuZ2V0S2V5KCkgPT09IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpKTtcblx0XHRyZXR1cm4gb1NlbGVjdGVkVGFiXG5cdFx0XHQ/IHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scygpLmZpbmQoKG9NYWNyb0FQSSkgPT4gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpID09PSBvU2VsZWN0ZWRUYWIpXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBNYW5hZ2VzIHRoZSBiaW5kaW5nIG9mIGFsbCBpbm5lciBjb250cm9scyB3aGVuIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGlzIGNoYW5nZWQuXG5cdCAqIEBwYXJhbSBvRXZlbnQgRXZlbnQgZmlyZWQgYnkgdGhlIEljb25UYWJCYXJcblx0ICovXG5cdHN0YXRpYyBoYW5kbGVUYWJDaGFuZ2Uob0V2ZW50OiBJY29uVGFiQmFyJFNlbGVjdEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3Qgb0ljb25UYWJCYXIgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgb011bHRpQ29udHJvbCA9IG9JY29uVGFiQmFyLmdldFBhcmVudCgpIGFzIE11bHRpcGxlTW9kZUNvbnRyb2w7XG5cblx0XHRjb25zdCBtUGFyYW1ldGVycyA9IG9FdmVudC5nZXRQYXJhbWV0ZXJzKCk7XG5cdFx0b011bHRpQ29udHJvbC5fc2V0SW5uZXJCaW5kaW5nKHRydWUpO1xuXHRcdGNvbnN0IHNQcmV2aW91c1NlbGVjdGVkS2V5ID0gbVBhcmFtZXRlcnM/LnByZXZpb3VzS2V5O1xuXHRcdGNvbnN0IHNTZWxlY3RlZEtleSA9IG1QYXJhbWV0ZXJzPy5zZWxlY3RlZEtleTtcblxuXHRcdGlmIChzU2VsZWN0ZWRLZXkgJiYgc1ByZXZpb3VzU2VsZWN0ZWRLZXkgIT09IHNTZWxlY3RlZEtleSkge1xuXHRcdFx0Y29uc3Qgb0ZpbHRlckJhciA9IG9NdWx0aUNvbnRyb2wuX2dldEZpbHRlckNvbnRyb2woKTtcblx0XHRcdGlmIChvRmlsdGVyQmFyICYmICFvTXVsdGlDb250cm9sLmdldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiKSkge1xuXHRcdFx0XHRpZiAoIW9NdWx0aUNvbnRyb2wuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0XHRcdC8vY3VzdG9tIHRhYlxuXHRcdFx0XHRcdG9NdWx0aUNvbnRyb2wuX3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJCYXIuZ2V0RmlsdGVyQ29uZGl0aW9ucygpLCBcInRhYkNoYW5nZWRcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdENvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSS5hZGQoe1xuXHRcdFx0XHRjaGFuZ2VzOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y2hhbmdlU3BlY2lmaWNEYXRhOiB7XG5cdFx0XHRcdFx0XHRcdGNoYW5nZVR5cGU6IFwic2VsZWN0SWNvblRhYkJhckZpbHRlclwiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiB7XG5cdFx0XHRcdFx0XHRcdFx0c2VsZWN0ZWRLZXk6IHNTZWxlY3RlZEtleSxcblx0XHRcdFx0XHRcdFx0XHRwcmV2aW91c1NlbGVjdGVkS2V5OiBzUHJldmlvdXNTZWxlY3RlZEtleVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0c2VsZWN0b3JFbGVtZW50OiBvSWNvblRhYkJhclxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0b011bHRpQ29udHJvbC5fZ2V0Vmlld0NvbnRyb2xsZXIoKT8uZ2V0RXh0ZW5zaW9uQVBJKCk/LnVwZGF0ZUFwcFN0YXRlKCk7XG5cblx0XHRvTXVsdGlDb250cm9sLmZpcmVFdmVudChcInNlbGVjdFwiLCB7XG5cdFx0XHRpY29uVGFiQmFyOiBvSWNvblRhYkJhcixcblx0XHRcdHNlbGVjdGVkS2V5OiBzU2VsZWN0ZWRLZXksXG5cdFx0XHRwcmV2aW91c0tleTogc1ByZXZpb3VzU2VsZWN0ZWRLZXlcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHNlbGVjdGVkIGlubmVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqL1xuXHRyZWZyZXNoU2VsZWN0ZWRJbm5lckNvbnRyb2xDb250ZW50KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKT8uaW52YWxpZGF0ZUNvbnRlbnQ/LigpO1xuXHRcdFx0dGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5yZXN1bWVCaW5kaW5nPy4odHJ1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGN1c3RvbSB0YWJcblx0XHRcdHRoaXMuX3JlZnJlc2hDdXN0b21WaWV3KHVuZGVmaW5lZCwgXCJmb3JjZWRSZWZyZXNoXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBJbnZhbGlkYXRlcyB0aGUgY29udGVudCBvZiB0aGUgaW5uZXIgY29udHJvbHMuXG5cdCAqIEBwYXJhbSBba2V5c10gVGhlIGxpc3Qgb2YgdGhlIGtleXMgaWRlbnRpZnlpbmcgdGhlIHZpZXdzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB3aGljaCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSBpbnZhbGlkYXRlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgdGhlIHZpZXdzJyBjb250ZW50IHdpbGwgYmUgaW52YWxpZGF0ZWRcblx0ICovXG5cdGludmFsaWRhdGVDb250ZW50KGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgobWFjcm9BUEkpID0+IHtcblx0XHRcdGlmIChrZXlzKSB7XG5cdFx0XHRcdGNvbnN0IGljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRcdFx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGljb25UYWJGaWx0ZXIgJiZcblx0XHRcdFx0XHRcdChpY29uVGFiRmlsdGVyLmdldEtleSgpID09PSBgZmU6OnRhYmxlOjoke2tleX06OkxpbmVJdGVtYCB8fCBpY29uVGFiRmlsdGVyLmdldEtleSgpID09PSBgZmU6OkN1c3RvbVRhYjo6JHtrZXl9YClcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG1hY3JvQVBJLmludmFsaWRhdGVDb250ZW50Py4oKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hY3JvQVBJLmludmFsaWRhdGVDb250ZW50Py4oKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBjb3VudHMgdG8gXCJvdXQgb2YgZGF0ZVwiIG9yIFwidXAgdG8gZGF0ZVwiXG5cdCAqIElmIHRoZSBjb3VudHMgYXJlIHNldCB0byBcIm91dCBvZiBkYXRlXCIgYW5kIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGRvZXNuJ3QgY29udGFpbiBhbiBpbm5lciBjb250cm9sLCBhbGwgaW5uZXIgY29udHJvbHMgYXJlIHJlcXVlc3RlZCB0byBnZXQgdGhlIG5ldyBjb3VudHMuXG5cdCAqIEBwYXJhbSBiVmFsdWUgRWl0aGVyIGZyZWV6ZXMgdGhlIGNvbnRyb2wgb3Igbm90XG5cdCAqL1xuXHRzZXRDb3VudHNPdXREYXRlZChiVmFsdWUgPSB0cnVlKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRQcm9wZXJ0eShcImNvdW50c091dERhdGVkXCIsIGJWYWx1ZSk7XG5cdFx0Ly8gaWYgdGhlIGN1cnJlbnQgdGFiIGlzIG5vdCBjb25maWd1cmVkIHdpdGggbm8gaW5uZXIgQ29udHJvbFxuXHRcdC8vIHRoZSB0YWIgY291bnRzIG11c3QgYmUgbWFudWFsbHkgcmVmcmVzaGVkIHNpbmNlIG5vIE1hY3JvIEFQSSB3aWxsIHNlbnQgZXZlbnQgaW50ZXJuYWxEYXRhUmVxdWVzdGVkXG5cdFx0aWYgKGJWYWx1ZSAmJiAhdGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHR0aGlzLmludGVybmFsUmVmcmVzaFRhYnNDb3VudCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBGcmVlemVzIHRoZSBjb250ZW50IDpcblx0ICogLSBjb250ZW50IGlzIGZyb3plbjogdGhlIGJpbmRpbmcgb2YgdGhlIGlubmVyIGNvbnRyb2xzIGFyZSBzdXNwZW5kZWQuXG5cdCAqIC0gY29udGVudCBpcyB1bmZyb3plbjogdGhlIGJpbmRpbmcgb2YgaW5uZXIgY29udHJvbCByZWxhdGVkIHRvIHRoZSBzZWxlY3RlZCBJY29uVGFiRmlsdGVyIGlzIHJlc3VtZWQuXG5cdCAqIEBwYXJhbSBiVmFsdWUgRnJlZXplIG9yIG5vdCB0aGUgY29udHJvbFxuXHQgKi9cblx0c2V0RnJlZXplQ29udGVudChiVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZnJlZXplQ29udGVudFwiLCBiVmFsdWUpO1xuXHRcdHRoaXMuX3NldElubmVyQmluZGluZygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZXMgdGhlIGludGVybmFsIG1vZGVsIHdpdGggdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IGFwcGxpY2FibGUgb24gZWFjaCBJY29uVGFiRmlsdGVyIChjb250YWluaW5nIGlubmVyIGNvbnRyb2wpIGFjY29yZGluZyB0byB0aGUgZW50aXR5VHlwZSBvZiB0aGUgZmlsdGVyIGNvbnRyb2wuXG5cdCAqXG5cdCAqL1xuXHRfdXBkYXRlTXVsdGlUYWJOb3RBcHBsaWNhYmxlRmllbGRzKCk6IHZvaWQge1xuXHRcdGNvbnN0IHRhYnNNb2RlbCA9IHRoaXMuZ2V0VGFic01vZGVsKCk7XG5cdFx0Y29uc3Qgb0ZpbHRlckNvbnRyb2wgPSB0aGlzLl9nZXRGaWx0ZXJDb250cm9sKCkgYXMgQ29udHJvbDtcblx0XHRpZiAodGFic01vZGVsICYmIG9GaWx0ZXJDb250cm9sKSB7XG5cdFx0XHRjb25zdCByZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCB7IG5vdEFwcGxpY2FibGU6IHsgZmllbGRzOiBzdHJpbmdbXTsgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IH0+ID0ge307XG5cdFx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRcdGNvbnN0IHZpZXdEYXRhID0gdmlldy5nZXRWaWV3RGF0YSgpO1xuXHRcdFx0aWYgKCF2aWV3RGF0YS51c2VIaWRkZW5GaWx0ZXJCYXIpIHtcblx0XHRcdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb1RhYiA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0XHRpZiAob1RhYikge1xuXHRcdFx0XHRcdFx0Y29uc3Qgc1RhYklkID0gb1RhYi5nZXRLZXkoKTtcblx0XHRcdFx0XHRcdGNvbnN0IG1JZ25vcmVkRmllbGRzID0gb01hY3JvQVBJLnJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzPy4ob0ZpbHRlckNvbnRyb2wpIHx8IFtdO1xuXHRcdFx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdID0ge1xuXHRcdFx0XHRcdFx0XHRub3RBcHBsaWNhYmxlOiB7XG5cdFx0XHRcdFx0XHRcdFx0ZmllbGRzOiBtSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdGhpcy5fc2V0VGFiTWVzc2FnZVN0cmlwKHtcblx0XHRcdFx0XHRcdFx0XHRcdGVudGl0eVR5cGVQYXRoOiBvRmlsdGVyQ29udHJvbC5kYXRhKFwiZW50aXR5VHlwZVwiKSxcblx0XHRcdFx0XHRcdFx0XHRcdGlnbm9yZWRGaWVsZHM6IG1JZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6IG9UYWIuZ2V0VGV4dCgpXG5cdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdGlmIChvTWFjcm9BUEkgJiYgb01hY3JvQVBJLmlzQShcInNhcC5mZS5tYWNyb3MuQ2hhcnRcIikpIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdID0gdGhpcy5jaGVja05vbkZpbHRlcmFibGVFbnRpdHlTZXQob01hY3JvQVBJLCBzVGFiSWQsIHJlc3VsdHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRhYnNNb2RlbC5zZXREYXRhKHJlc3VsdHMpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNb2RpZmllcyB0aGUgbWVzc2FnZXN0cmlwIG1lc3NhZ2UgYmFzZWQgb24gZW50aXR5IHNldCBpcyBmaWxlcmFibGUgb3Igbm90LlxuXHQgKiBAcGFyYW0gb01hY3JvQVBJIE1hY3JvIGNoYXJ0IGFwaVxuXHQgKiBAcGFyYW0gc1RhYklkIFRhYiBrZXkgSURcblx0ICogQHBhcmFtIHJlc3VsdHMgU2hvdWxkIGNvbnRhaW4gZmllbGRzIGFuZCB0aXRsZVxuXHQgKiBAcmV0dXJucyBBbiBvYmplY3Qgb2YgbW9kaWZpZWQgZmllbGRzIGFuZCB0aXRsZVxuXHQgKi9cblx0Y2hlY2tOb25GaWx0ZXJhYmxlRW50aXR5U2V0KFxuXHRcdG9NYWNyb0FQSTogSW5uZXJDb250cm9sVHlwZSxcblx0XHRzVGFiSWQ6IHN0cmluZyxcblx0XHRyZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCB7IG5vdEFwcGxpY2FibGU6IHsgZmllbGRzOiBzdHJpbmdbXTsgdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCB9IH0+XG5cdCk6IHsgbm90QXBwbGljYWJsZTogeyBmaWVsZHM6IHN0cmluZ1tdOyB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkIH0gfSB7XG5cdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwob01hY3JvQVBJKTtcblx0XHRjb25zdCBvQ2hhcnQgPSBvTWFjcm9BUEk/LmdldENvbnRlbnQgPyBvTWFjcm9BUEkuZ2V0Q29udGVudCgpIDogdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGJFbnRpdHlTZXRGaWxlcmFibGUgPVxuXHRcdFx0b0NoYXJ0ICYmXG5cdFx0XHRNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzPEVudGl0eVNldD4oXG5cdFx0XHRcdChvQ2hhcnQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsKS5nZXRNZXRhTW9kZWwoKS5nZXRDb250ZXh0KGAke29DaGFydC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIil9YClcblx0XHRcdCk/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJhYmxlO1xuXHRcdGlmIChiRW50aXR5U2V0RmlsZXJhYmxlICE9PSB1bmRlZmluZWQgJiYgIWJFbnRpdHlTZXRGaWxlcmFibGUpIHtcblx0XHRcdGlmIChyZXN1bHRzW3NUYWJJZF0ubm90QXBwbGljYWJsZS5maWVsZHMuaW5jbHVkZXMoXCIkc2VhcmNoXCIpKSB7XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLnRpdGxlICs9IFwiIFwiICsgcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19MUl9NVUxUSVZJWl9DSEFSVF9NVUxUSV9OT05fRklMVEVSQUJMRVwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLmZpZWxkcyA9IFtcIm5vbkZpbHRlcmFibGVcIl07XG5cdFx0XHRcdHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLnRpdGxlID0gcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19MUl9NVUxUSVZJWl9DSEFSVF9NVUxUSV9OT05fRklMVEVSQUJMRVwiKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdHNbc1RhYklkXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBpbm5lciBjb250cm9scy5cblx0ICogQHBhcmFtIGJPbmx5Rm9yVmlzaWJsZVRhYiBTaG91bGQgZGlzcGxheSBvbmx5IHRoZSB2aXNpYmxlIGNvbnRyb2xzXG5cdCAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGNvbnRyb2xzXG5cdCAqL1xuXHRnZXRBbGxJbm5lckNvbnRyb2xzKGJPbmx5Rm9yVmlzaWJsZVRhYiA9IGZhbHNlKTogSW5uZXJDb250cm9sVHlwZVtdIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xzLnJlZHVjZSgoYUlubmVyQ29udHJvbHM6IElubmVyQ29udHJvbFR5cGVbXSwgc0lubmVyQ29udHJvbDogc3RyaW5nKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9Db250cm9sID0gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZChzSW5uZXJDb250cm9sKSBhcyBJbm5lckNvbnRyb2xUeXBlO1xuXHRcdFx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdFx0XHRhSW5uZXJDb250cm9scy5wdXNoKG9Db250cm9sKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gYUlubmVyQ29udHJvbHMuZmlsdGVyKFxuXHRcdFx0XHRcdChvSW5uZXJDb250cm9sKSA9PiAhYk9ubHlGb3JWaXNpYmxlVGFiIHx8IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob0lubmVyQ29udHJvbCk/LmdldFZpc2libGUoKVxuXHRcdFx0XHQpO1xuXHRcdFx0fSwgW10pIHx8IFtdXG5cdFx0KTtcblx0fVxuXG5cdF9nZXRGaWx0ZXJDb250cm9sKCk6IEZpbHRlckJhciB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIFVJNUVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5maWx0ZXJDb250cm9sKSBhcyBGaWx0ZXJCYXIgfCB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvQ29udHJvbDogQ29udHJvbCk6IEljb25UYWJGaWx0ZXIgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvVGFiOiBVSTVFbGVtZW50IHwgdW5kZWZpbmVkID0gb0NvbnRyb2w7XG5cdFx0aWYgKG9UYWIgJiYgIW9UYWIuaXNBPEljb25UYWJGaWx0ZXI+KFwic2FwLm0uSWNvblRhYkZpbHRlclwiKSAmJiAob1RhYiBhcyB7IGdldFBhcmVudD86IEZ1bmN0aW9uIH0pLmdldFBhcmVudCkge1xuXHRcdFx0b1RhYiA9IG9Db250cm9sLmdldFBhcmVudCgpIGFzIFVJNUVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHJldHVybiBvVGFiICYmIG9UYWIuaXNBPEljb25UYWJGaWx0ZXI+KFwic2FwLm0uSWNvblRhYkZpbHRlclwiKSA/IG9UYWIgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRfZ2V0Vmlld0NvbnRyb2xsZXIoKTogUGFnZUNvbnRyb2xsZXIge1xuXHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyh0aGlzKTtcblx0XHRyZXR1cm4gb1ZpZXcgJiYgb1ZpZXcuZ2V0Q29udHJvbGxlcigpO1xuXHR9XG5cblx0X3JlZnJlc2hDdXN0b21WaWV3KG9GaWx0ZXJDb25kaXRpb25zOiB1bmtub3duLCBzUmVmcmVzaENhdXNlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHQodGhpcy5fZ2V0Vmlld0NvbnRyb2xsZXIoKSBhcyBMaXN0UmVwb3J0Q29udHJvbGxlcik/Lm9uVmlld05lZWRzUmVmcmVzaD8uKHtcblx0XHRcdGZpbHRlckNvbmRpdGlvbnM6IG9GaWx0ZXJDb25kaXRpb25zLFxuXHRcdFx0Y3VycmVudFRhYklkOiB0aGlzLmNvbnRlbnQuZ2V0U2VsZWN0ZWRLZXkoKSxcblx0XHRcdHJlZnJlc2hDYXVzZTogc1JlZnJlc2hDYXVzZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgY291bnQgb2YgdGhlIFRhYiBjb250YWluaW5nIHRoZSBtYWNybyBwYXNzZWQgYXMgcGFyYW1ldGVyLlxuXHQgKiBAcGFyYW0gbWFjcm9BUEkgVGhlIGNvbnRlbnQgb2YgdGhlIHRhYiB3ZSB3YW50IHRvIHJlZnJlc2hcblx0ICovXG5cdHJlZnJlc2hUYWJDb3VudChtYWNyb0FQSTogSW5uZXJDb250cm9sVHlwZSk6IHZvaWQge1xuXHRcdGNvbnN0IGljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRpZiAoIWljb25UYWJGaWx0ZXIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG1hY3JvQVBJPy5nZXRDb3VudHMpIHtcblx0XHRcdGljb25UYWJGaWx0ZXIuc2V0Q291bnQoXCIuLi5cIik7XG5cdFx0XHRtYWNyb0FQSVxuXHRcdFx0XHQuZ2V0Q291bnRzKClcblx0XHRcdFx0LnRoZW4oKGNvdW50OiBzdHJpbmcpOiBJY29uVGFiRmlsdGVyID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gaWNvblRhYkZpbHRlci5zZXRDb3VudChjb3VudCB8fCBcIjBcIik7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IHVua25vd24pOiB2b2lkIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIHJlcXVlc3RpbmcgQ291bnRzIGZvciBDb250cm9sOiAke2Vycm9yfWApO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRpbnRlcm5hbFJlZnJlc2hUYWJzQ291bnQodGFibGVFdmVudD86IENvcmVFdmVudCk6IHZvaWQge1xuXHRcdC8vIElmIHRoZSByZWZyZXNoIGlzIHRyaWdnZXJlZCBieSBhbiBldmVudCAoaW50ZXJuYWxEYXRhUmVxdWVzdGVkKVxuXHRcdC8vIHdlIGNhbm5vdCB1c2UgdGhlIHNlbGVjdGVkIGtleSBhcyByZWZlcmVuY2Ugc2luY2UgdGFibGUgY2FuIGJlIHJlZnJlc2hlZCBieSBTaWRlRWZmZWN0c1xuXHRcdC8vIHNvIHRoZSB0YWJsZSBjb3VsZCBiZSBpbnRvIGEgZGlmZmVyZW50IHRhYiAtPiB3ZSB1c2UgdGhlIHNvdXJjZSBvZiB0aGUgZXZlbnQgdG8gZmluZCB0aGUgdGFyZ2V0ZWQgdGFiXG5cdFx0Ly8gSWYgbm90IHRyaWdnZXJlZCBieSBhbiBldmVudCAtPiByZWZyZXNoIGF0IGxlYXN0IHRoZSBjb3VudHMgb2YgdGhlIGN1cnJlbnQgTWFjcm9BUElcblx0XHRjb25zdCBldmVudE1hY3JvQVBJID0gdGFibGVFdmVudD8uZ2V0U291cmNlKCkgYXMgTWFjcm9BUEk7XG5cdFx0Y29uc3QgdGFyZ2V0S2V5ID0gZXZlbnRNYWNyb0FQSSA/IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2woZXZlbnRNYWNyb0FQSSk/LmdldEtleSgpIDogdGhpcy5jb250ZW50Py5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdGlmICh0YXJnZXRLZXkpIHtcblx0XHRcdHRoaXMucmVmcmVzaFRhYnNDb3VudChbdGFyZ2V0S2V5LnNwbGl0KFwiOjpcIilbMl1dKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVmcmVzaGVzIHRoZSBjb3VudCBvZiB0aGUgdmlld3MgaW4gdGhlIE11bHRpTW9kZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gW2tleXNdIFRoZSBsaXN0IG9mIHRoZSBrZXlzIGlkZW50aWZ5aW5nIHRoZSB2aWV3cyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBmb3Igd2hpY2ggdGhlIHZpZXdzJyBjb3VudCB3aWxsIGJlIHJlZnJlc2hlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgdGhlIHZpZXdzJyBjb3VudCB3aWxsIGJlIHJlZnJlc2hlZFxuXHQgKi9cblx0cmVmcmVzaFRhYnNDb3VudChrZXlzPzogc3RyaW5nW10pOiB2b2lkIHtcblx0XHRpZiAoIWtleXMpIHtcblx0XHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0fVxuXHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scyh0cnVlKS5mb3JFYWNoKChvTWFjcm9BUEkpOiB2b2lkID0+IHtcblx0XHRcdGNvbnN0IG9JY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0aWYgKHRoaXMuY291bnRzT3V0RGF0ZWQgfHwgKGtleXMgJiYgb0ljb25UYWJGaWx0ZXIgJiYga2V5cy5pbmNsdWRlcyhvSWNvblRhYkZpbHRlci5nZXRLZXkoKS5zcGxpdChcIjo6XCIpWzJdKSkpIHtcblx0XHRcdFx0dGhpcy5yZWZyZXNoVGFiQ291bnQob01hY3JvQVBJKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIGNvbnRlbnQgb2YgdGhlIHVuZGVybHlpbmcgdmlld3MgdXBvbiB0aGUgbmV4dCBvcGVuaW5nLlxuXHQgKiBOb3RlOiBUaGUgY29udGVudCBvZiB0aGUgc2VsZWN0ZWQgdmlldywgaWYgcGFydCBvZiB0aGUgcHJvdmlkZWQga2V5cywgd2lsbCBiZSByZWZyZXNoZWQgaW1tZWRpYXRlbHkuXG5cdCAqIEBwYXJhbSBba2V5c10gVGhlIGxpc3Qgb2YgdGhlIGtleXMgaWRlbnRpZnlpbmcgdGhlIHZpZXdzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB3aGljaCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSByZWZyZXNoZWQuIElmIG5vdCBwcm92aWRlZCwgYWxsIHRoZSB2aWV3cycgY29udGVudCB3aWxsIGJlIHJlZnJlc2hlZFxuXHQgKi9cblx0c2V0VGFiQ29udGVudFRvQmVSZWZyZXNoZWRPbk5leHRPcGVuaW5nKGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGNvbnN0IHNlbGVjdGVkVGFiS2V5ID0gdGhpcz8uY29udGVudC5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdGNvbnN0IHRhYktleXM6IHN0cmluZ1tdID0gW107XG5cdFx0Y29uc3QgcmVmcmVzaFNlbGVjdGVkVGFiQ29udGVudCA9IGtleXMgPyBrZXlzLmluY2x1ZGVzKHNlbGVjdGVkVGFiS2V5Py5zcGxpdChcIjo6XCIpWzJdKSA6IHRydWU7XG5cdFx0aWYgKGtleXMpIHtcblx0XHRcdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcblx0XHRcdFx0aWYgKHNlbGVjdGVkVGFiS2V5ICE9PSBgZmU6OnRhYmxlOjoke2tleX06OkxpbmVJdGVtYCAmJiBzZWxlY3RlZFRhYktleSAhPT0gYGZlOjpDdXN0b21UYWI6OiR7a2V5fWApIHtcblx0XHRcdFx0XHR0YWJLZXlzLnB1c2goa2V5KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzPy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgobWFjcm9BUEkpID0+IHtcblx0XHRcdFx0Y29uc3QgaWNvblRhYkZpbHRlciA9IHRoaXM/Ll9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG1hY3JvQVBJKTtcblx0XHRcdFx0aWYgKGljb25UYWJGaWx0ZXIgJiYgaWNvblRhYkZpbHRlci5nZXRLZXkoKSAhPT0gc2VsZWN0ZWRUYWJLZXkpIHtcblx0XHRcdFx0XHR0YWJLZXlzLnB1c2goaWNvblRhYkZpbHRlci5nZXRLZXkoKS5zcGxpdChcIjo6XCIpWzJdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHRoaXM/LmludmFsaWRhdGVDb250ZW50KHRhYktleXMpO1xuXHRcdGlmIChyZWZyZXNoU2VsZWN0ZWRUYWJDb250ZW50KSB7XG5cdFx0XHR0aGlzPy5yZWZyZXNoU2VsZWN0ZWRJbm5lckNvbnRyb2xDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0X3NldElubmVyQmluZGluZyhiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgPSBmYWxzZSk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNvbnRlbnQpIHtcblx0XHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG9NYWNyb0FQSSkgPT4ge1xuXHRcdFx0XHRjb25zdCBvSWNvblRhYkZpbHRlciA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wob01hY3JvQVBJKTtcblx0XHRcdFx0Y29uc3QgYklzU2VsZWN0ZWRLZXkgPSBvSWNvblRhYkZpbHRlcj8uZ2V0S2V5KCkgPT09IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpO1xuXHRcdFx0XHRjb25zdCBzQWN0aW9uID0gYklzU2VsZWN0ZWRLZXkgJiYgIXRoaXMuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpID8gQmluZGluZ0FjdGlvbi5SZXN1bWUgOiBCaW5kaW5nQWN0aW9uLlN1c3BlbmQ7XG5cdFx0XHRcdG9NYWNyb0FQSVtzQWN0aW9uXT8uKHNBY3Rpb24gPT09IEJpbmRpbmdBY3Rpb24uUmVzdW1lID8gYlJlcXVlc3RJZk5vdEluaXRpYWxpemVkICYmIGJJc1NlbGVjdGVkS2V5IDogdW5kZWZpbmVkKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdF9zZXRUYWJNZXNzYWdlU3RyaXAocHJvcGVydGllczogTWVzc2FnZVN0cmlwUHJvcGVydGllcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IHNUZXh0ID0gXCJcIjtcblx0XHRjb25zdCBhSWdub3JlZEZpZWxkcyA9IHByb3BlcnRpZXMuaWdub3JlZEZpZWxkcztcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmIChvRmlsdGVyQ29udHJvbCAmJiBBcnJheS5pc0FycmF5KGFJZ25vcmVkRmllbGRzKSAmJiBhSWdub3JlZEZpZWxkcy5sZW5ndGggPiAwICYmIHByb3BlcnRpZXMudGl0bGUpIHtcblx0XHRcdGNvbnN0IGFJZ25vcmVkTGFiZWxzID0gTWVzc2FnZVN0cmlwLmdldExhYmVscyhcblx0XHRcdFx0YUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdHByb3BlcnRpZXMuZW50aXR5VHlwZVBhdGgsXG5cdFx0XHRcdG9GaWx0ZXJDb250cm9sLFxuXHRcdFx0XHRnZXRSZXNvdXJjZU1vZGVsKG9GaWx0ZXJDb250cm9sKVxuXHRcdFx0KTtcblx0XHRcdHNUZXh0ID0gTWVzc2FnZVN0cmlwLmdldFRleHQoYUlnbm9yZWRMYWJlbHMsIG9GaWx0ZXJDb250cm9sLCBwcm9wZXJ0aWVzLnRpdGxlKTtcblx0XHRcdHJldHVybiBzVGV4dDtcblx0XHR9XG5cdH1cblxuXHRfb25TZWFyY2gob0V2ZW50OiBDb3JlRXZlbnQ8eyBjb25kaXRpb25zOiB1bmtub3duIH0+KTogdm9pZCB7XG5cdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR0aGlzLnNldEZyZWV6ZUNvbnRlbnQoZmFsc2UpO1xuXHRcdGlmICh0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdHRoaXMuX3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBjdXN0b20gdGFiXG5cdFx0XHR0aGlzLl9yZWZyZXNoQ3VzdG9tVmlldyhvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc1wiKSwgXCJzZWFyY2hcIik7XG5cdFx0fVxuXHR9XG5cblx0X29uRmlsdGVyQ2hhbmdlZChvRXZlbnQ6IENvcmVFdmVudDx7IGNvbmRpdGlvbnNCYXNlZDogYm9vbGVhbiB9Pik6IHZvaWQge1xuXHRcdGlmIChvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiY29uZGl0aW9uc0Jhc2VkXCIpKSB7XG5cdFx0XHR0aGlzLnNldEZyZWV6ZUNvbnRlbnQodHJ1ZSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpcGxlTW9kZUNvbnRyb2w7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUF3Q0tBLGFBQWEsMEJBQWJBLGFBQWE7SUFBYkEsYUFBYTtJQUFiQSxhQUFhO0lBQUEsT0FBYkEsYUFBYTtFQUFBLEVBQWJBLGFBQWE7RUFBQSxJQU1aQyxtQkFBbUIsSUFBQUMsSUFBQSxHQUR4QkMsY0FBYyxDQUFDLDBEQUEwRCxDQUFDLEVBQUFDLEtBQUEsR0FFekVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBVSxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUc3QkYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxTQUFTO0lBQUVFLFlBQVksRUFBRTtFQUFNLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR2xESixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUUsWUFBWSxFQUFFO0VBQU0s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
485
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCaW5kaW5nQWN0aW9uIiwiTXVsdGlwbGVNb2RlQ29udHJvbCIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwicHJvcGVydHkiLCJ0eXBlIiwiX2RlYzMiLCJkZWZhdWx0VmFsdWUiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJhZ2dyZWdhdGlvbiIsIm11bHRpcGxlIiwiaXNEZWZhdWx0IiwiX2RlYzciLCJhc3NvY2lhdGlvbiIsIl9kZWM4IiwiX2RlYzkiLCJldmVudCIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsImlkIiwic2V0dGluZ3MiLCJfdGhpcyIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiY29udGVudCIsImFkZEV2ZW50RGVsZWdhdGUiLCJvbkFmdGVyUmVuZGVyaW5nIiwib25BZnRlckljb25UYWJCYXJSZW5kZXJpbmciLCJiaW5kIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJnZXRTZWxlY3RlZElubmVyQ29udHJvbCIsInJlc3VtZUJpbmRpbmciLCJnZXRQcm9wZXJ0eSIsInNob3dDb3VudHMiLCJzZXRWaXNpYmxlT3ZlcnJpZGRlbiIsInNldFByb3BlcnR5IiwiZ2V0QWxsSW5uZXJDb250cm9scyIsImZvckVhY2giLCJtYWNyb0FQSSIsImljb25UYWJGaWx0ZXIiLCJfZ2V0VGFiRnJvbUlubmVyQ29udHJvbCIsIm9yaWdpblNldFZpc2libGUiLCJzZXRWaXNpYmxlIiwidmFsdWUiLCJnZXRWaXNpYmxlIiwicmVmcmVzaFRhYkNvdW50Iiwib25CZWZvcmVSZW5kZXJpbmciLCJnZXRUYWJzTW9kZWwiLCJvRmlsdGVyQ29udHJvbCIsIl9nZXRGaWx0ZXJDb250cm9sIiwic2V0Q291bnRzT3V0RGF0ZWQiLCJvRmlsdGVyQmFyQVBJIiwiZ2V0UGFyZW50Iiwib01hY3JvQVBJIiwiYXR0YWNoRXZlbnQiLCJpbnRlcm5hbFJlZnJlc2hUYWJzQ291bnQiLCJzdXNwZW5kQmluZGluZyIsIl9vblNlYXJjaCIsIl9vbkZpbHRlckNoYW5nZWQiLCJyZW5kZXIiLCJvUm0iLCJvQ29udHJvbCIsInJlbmRlckNvbnRyb2wiLCJzVGFic01vZGVsIiwib0NvbnRlbnQiLCJ1bmRlZmluZWQiLCJvTW9kZWwiLCJnZXRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwib1NlbGVjdGVkVGFiIiwiZ2V0SXRlbXMiLCJmaW5kIiwib0l0ZW0iLCJnZXRLZXkiLCJnZXRTZWxlY3RlZEtleSIsImhhbmRsZVRhYkNoYW5nZSIsIm9FdmVudCIsIm9JY29uVGFiQmFyIiwiZ2V0U291cmNlIiwib011bHRpQ29udHJvbCIsIm1QYXJhbWV0ZXJzIiwiZ2V0UGFyYW1ldGVycyIsIl9zZXRJbm5lckJpbmRpbmciLCJzUHJldmlvdXNTZWxlY3RlZEtleSIsInByZXZpb3VzS2V5Iiwic1NlbGVjdGVkS2V5Iiwic2VsZWN0ZWRLZXkiLCJvRmlsdGVyQmFyIiwiX3JlZnJlc2hDdXN0b21WaWV3IiwiZ2V0RmlsdGVyQ29uZGl0aW9ucyIsIkNvbnRyb2xQZXJzb25hbGl6YXRpb25Xcml0ZUFQSSIsImFkZCIsImNoYW5nZXMiLCJjaGFuZ2VTcGVjaWZpY0RhdGEiLCJjaGFuZ2VUeXBlIiwicHJldmlvdXNTZWxlY3RlZEtleSIsInNlbGVjdG9yRWxlbWVudCIsIl9nZXRWaWV3Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInVwZGF0ZUFwcFN0YXRlIiwiZmlyZUV2ZW50IiwiaWNvblRhYkJhciIsInJlZnJlc2hTZWxlY3RlZElubmVyQ29udHJvbENvbnRlbnQiLCJpbnZhbGlkYXRlQ29udGVudCIsImtleXMiLCJrZXkiLCJiVmFsdWUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzZXRGcmVlemVDb250ZW50IiwiX3VwZGF0ZU11bHRpVGFiTm90QXBwbGljYWJsZUZpZWxkcyIsInRhYnNNb2RlbCIsInJlc3VsdHMiLCJ2aWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3Iiwidmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInVzZUhpZGRlbkZpbHRlckJhciIsIm9UYWIiLCJzVGFiSWQiLCJtSWdub3JlZEZpZWxkcyIsInJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzIiwibm90QXBwbGljYWJsZSIsImZpZWxkcyIsInRpdGxlIiwiX3NldFRhYk1lc3NhZ2VTdHJpcCIsImVudGl0eVR5cGVQYXRoIiwiZGF0YSIsImlnbm9yZWRGaWVsZHMiLCJnZXRUZXh0IiwiaXNBIiwiY2hlY2tOb25GaWx0ZXJhYmxlRW50aXR5U2V0Iiwic2V0RGF0YSIsInJlc291cmNlTW9kZWwiLCJnZXRSZXNvdXJjZU1vZGVsIiwib0NoYXJ0IiwiZ2V0Q29udGVudCIsImJFbnRpdHlTZXRGaWxlcmFibGUiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJnZXRNZXRhTW9kZWwiLCJnZXRDb250ZXh0IiwidGFyZ2V0T2JqZWN0IiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJGaWx0ZXJSZXN0cmljdGlvbnMiLCJGaWx0ZXJhYmxlIiwiaW5jbHVkZXMiLCJiT25seUZvclZpc2libGVUYWIiLCJpbm5lckNvbnRyb2xzIiwicmVkdWNlIiwiYUlubmVyQ29udHJvbHMiLCJzSW5uZXJDb250cm9sIiwiVUk1RWxlbWVudCIsImdldEVsZW1lbnRCeUlkIiwicHVzaCIsImZpbHRlciIsIm9Jbm5lckNvbnRyb2wiLCJmaWx0ZXJDb250cm9sIiwib1ZpZXciLCJnZXRDb250cm9sbGVyIiwib0ZpbHRlckNvbmRpdGlvbnMiLCJzUmVmcmVzaENhdXNlIiwib25WaWV3TmVlZHNSZWZyZXNoIiwiZmlsdGVyQ29uZGl0aW9ucyIsImN1cnJlbnRUYWJJZCIsInJlZnJlc2hDYXVzZSIsImdldENvdW50cyIsInNldENvdW50IiwidGhlbiIsImNvdW50IiwiY2F0Y2giLCJlcnJvciIsIkxvZyIsInRhYmxlRXZlbnQiLCJldmVudE1hY3JvQVBJIiwidGFyZ2V0S2V5IiwicmVmcmVzaFRhYnNDb3VudCIsInNwbGl0Iiwib0ljb25UYWJGaWx0ZXIiLCJjb3VudHNPdXREYXRlZCIsInNldFRhYkNvbnRlbnRUb0JlUmVmcmVzaGVkT25OZXh0T3BlbmluZyIsInNlbGVjdGVkVGFiS2V5IiwidGFiS2V5cyIsInJlZnJlc2hTZWxlY3RlZFRhYkNvbnRlbnQiLCJiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQiLCJiSXNTZWxlY3RlZEtleSIsInNBY3Rpb24iLCJSZXN1bWUiLCJTdXNwZW5kIiwicHJvcGVydGllcyIsInNUZXh0IiwiYUlnbm9yZWRGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJhSWdub3JlZExhYmVscyIsIk1lc3NhZ2VTdHJpcCIsImdldExhYmVscyIsImdldFBhcmFtZXRlciIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk11bHRpcGxlTW9kZUNvbnRyb2wudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvbiwgYXNzb2NpYXRpb24sIGRlZmluZVVJNUNsYXNzLCBldmVudCwgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCBNZXNzYWdlU3RyaXAgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZpbHRlckJhciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWx0ZXJCYXJcIjtcbmltcG9ydCB0eXBlIExpc3RSZXBvcnRDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL0xpc3RSZXBvcnQvTGlzdFJlcG9ydENvbnRyb2xsZXIuY29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgSWNvblRhYkJhciBmcm9tIFwic2FwL20vSWNvblRhYkJhclwiO1xuaW1wb3J0IHR5cGUgeyBJY29uVGFiQmFyJFNlbGVjdEV2ZW50IH0gZnJvbSBcInNhcC9tL0ljb25UYWJCYXJcIjtcbmltcG9ydCB0eXBlIEljb25UYWJGaWx0ZXIgZnJvbSBcInNhcC9tL0ljb25UYWJGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvcmVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgJENvbnRyb2xTZXR0aW5ncyB9IGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCBDb250cm9sUGVyc29uYWxpemF0aW9uV3JpdGVBUEkgZnJvbSBcInNhcC91aS9mbC93cml0ZS9hcGkvQ29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIElubmVyQ29udHJvbFR5cGUgPSBNYWNyb0FQSSAmXG5cdFBhcnRpYWw8e1xuXHRcdHJlc3VtZUJpbmRpbmc6IEZ1bmN0aW9uO1xuXHRcdHN1c3BlbmRCaW5kaW5nOiBGdW5jdGlvbjtcblx0XHRnZXRDb3VudHM6IEZ1bmN0aW9uO1xuXHRcdHJlZnJlc2hOb3RBcHBsaWNhYmxlRmllbGRzOiBGdW5jdGlvbjtcblx0XHRpbnZhbGlkYXRlQ29udGVudDogRnVuY3Rpb247XG5cdFx0Z2V0Q29udGVudDogRnVuY3Rpb247XG5cdH0+O1xuXG50eXBlIE1lc3NhZ2VTdHJpcFByb3BlcnRpZXMgPSB7XG5cdGVudGl0eVR5cGVQYXRoOiBzdHJpbmc7XG5cdGlnbm9yZWRGaWVsZHM6IHN0cmluZ1tdO1xuXHR0aXRsZTogc3RyaW5nO1xufTtcblxuZW51bSBCaW5kaW5nQWN0aW9uIHtcblx0U3VzcGVuZCA9IFwic3VzcGVuZEJpbmRpbmdcIixcblx0UmVzdW1lID0gXCJyZXN1bWVCaW5kaW5nXCJcbn1cblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5MaXN0UmVwb3J0LmNvbnRyb2xzLk11bHRpcGxlTW9kZUNvbnRyb2xcIilcbmNsYXNzIE11bHRpcGxlTW9kZUNvbnRyb2wgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0c2hvd0NvdW50cyE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIsIGRlZmF1bHRWYWx1ZTogZmFsc2UgfSlcblx0c2V0VmlzaWJsZU92ZXJyaWRkZW4hOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGZyZWV6ZUNvbnRlbnQhOiBib29sZWFuO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYm9vbGVhblwiLCBkZWZhdWx0VmFsdWU6IGZhbHNlIH0pXG5cdGNvdW50c091dERhdGVkITogYm9vbGVhbjtcblxuXHRAYWdncmVnYXRpb24oeyB0eXBlOiBcInNhcC5tLkljb25UYWJCYXJcIiwgbXVsdGlwbGU6IGZhbHNlLCBpc0RlZmF1bHQ6IHRydWUgfSlcblx0Y29udGVudCE6IEljb25UYWJCYXI7XG5cblx0QGFzc29jaWF0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGlubmVyQ29udHJvbHMhOiBzdHJpbmdbXTtcblxuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuRmlsdGVyQmFyXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRmaWx0ZXJDb250cm9sITogc3RyaW5nO1xuXG5cdEBldmVudCgpXG5cdHNlbGVjdCE6IEZ1bmN0aW9uO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdGlkPzogc3RyaW5nIHwgdW5kZWZpbmVkIHwgKFByb3BlcnRpZXNPZjxNdWx0aXBsZU1vZGVDb250cm9sPiAmICRDb250cm9sU2V0dGluZ3MpLFxuXHRcdHNldHRpbmdzPzogJENvbnRyb2xTZXR0aW5ncyAmIFByb3BlcnRpZXNPZjxNdWx0aXBsZU1vZGVDb250cm9sPlxuXHQpIHtcblx0XHRzdXBlcihpZCBhcyBzdHJpbmcsIHNldHRpbmdzKTtcblx0XHR0aGlzLmNvbnRlbnQ/LmFkZEV2ZW50RGVsZWdhdGUoe1xuXHRcdFx0b25BZnRlclJlbmRlcmluZzogdGhpcy5vbkFmdGVySWNvblRhYkJhclJlbmRlcmluZy5iaW5kKHRoaXMpXG5cdFx0fSk7XG5cdH1cblxuXHRvbkFmdGVySWNvblRhYkJhclJlbmRlcmluZygpOiB2b2lkIHtcblx0XHR0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCk/LnJlc3VtZUJpbmRpbmc/LighdGhpcy5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikpO1xuXHRcdGlmICh0aGlzLnNob3dDb3VudHMgJiYgIXRoaXMuc2V0VmlzaWJsZU92ZXJyaWRkZW4pIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJzZXRWaXNpYmxlT3ZlcnJpZGRlblwiLCB0cnVlKTtcblx0XHRcdHRoaXMuZ2V0QWxsSW5uZXJDb250cm9scygpLmZvckVhY2goKG1hY3JvQVBJOiBNYWNyb0FQSSk6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb25zdCBpY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChtYWNyb0FQSSk7XG5cdFx0XHRcdC8vIE5vIGNvdW50IHRvIHNob3dcblx0XHRcdFx0aWYgKCFpY29uVGFiRmlsdGVyKSByZXR1cm47XG5cblx0XHRcdFx0Y29uc3Qgb3JpZ2luU2V0VmlzaWJsZSA9IGljb25UYWJGaWx0ZXIuc2V0VmlzaWJsZTtcblx0XHRcdFx0aWNvblRhYkZpbHRlci5zZXRWaXNpYmxlID0gKHZhbHVlOiBib29sZWFuKTogSWNvblRhYkZpbHRlciA9PiB7XG5cdFx0XHRcdFx0aWYgKGljb25UYWJGaWx0ZXIuZ2V0VmlzaWJsZSgpID09PSBmYWxzZSAmJiB2YWx1ZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5yZWZyZXNoVGFiQ291bnQobWFjcm9BUEkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luU2V0VmlzaWJsZS5iaW5kKGljb25UYWJGaWx0ZXIpKHZhbHVlKTtcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdG9uQmVmb3JlUmVuZGVyaW5nKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0VGFic01vZGVsKCk7IC8vIEdlbmVyYXRlIHRoZSBtb2RlbCB3aGljaCBpcyBtYW5kYXRvcnkgZm9yIHNvbWUgYmluZGluZ3NcblxuXHRcdGNvbnN0IG9GaWx0ZXJDb250cm9sID0gdGhpcy5fZ2V0RmlsdGVyQ29udHJvbCgpO1xuXHRcdGlmICghb0ZpbHRlckNvbnRyb2wpIHtcblx0XHRcdC8vIEluIGNhc2UgdGhlcmUncyBubyBmaWx0ZXJiYXIsIHdlIGhhdmUgdG8gdXBkYXRlIHRoZSBjb3VudHMgaW4gdGhlIHRhYnMgaW1tZWRpYXRlbHlcblx0XHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQodHJ1ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG9GaWx0ZXJCYXJBUEkgPSBvRmlsdGVyQ29udHJvbD8uZ2V0UGFyZW50KCk7XG5cdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5zaG93Q291bnRzKSB7XG5cdFx0XHRcdG9NYWNyb0FQSS5hdHRhY2hFdmVudChcImludGVybmFsRGF0YVJlcXVlc3RlZFwiLCB0aGlzLmludGVybmFsUmVmcmVzaFRhYnNDb3VudC5iaW5kKHRoaXMpKTtcblx0XHRcdH1cblx0XHRcdG9NYWNyb0FQSS5zdXNwZW5kQmluZGluZz8uKCk7XG5cdFx0fSk7XG5cdFx0aWYgKG9GaWx0ZXJCYXJBUEkpIHtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbFNlYXJjaFwiLCB0aGlzLl9vblNlYXJjaC5iaW5kKHRoaXMpKTtcblx0XHRcdG9GaWx0ZXJCYXJBUEkuYXR0YWNoRXZlbnQoXCJpbnRlcm5hbEZpbHRlckNoYW5nZWRcIiwgdGhpcy5fb25GaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcykpO1xuXHRcdH1cblx0fVxuXG5cdHN0YXRpYyByZW5kZXIob1JtOiBSZW5kZXJNYW5hZ2VyLCBvQ29udHJvbDogTXVsdGlwbGVNb2RlQ29udHJvbCk6IHZvaWQge1xuXHRcdG9SbS5yZW5kZXJDb250cm9sKG9Db250cm9sLmNvbnRlbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIG1vZGVsIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gcmVsYXRlZCB0byB0aGUgSWNvblRhYkZpbHRlcnMuXG5cdCAqIEByZXR1cm5zIFRoZSBtb2RlbFxuXHQgKi9cblx0Z2V0VGFic01vZGVsKCk6IEpTT05Nb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgc1RhYnNNb2RlbCA9IFwidGFic0ludGVybmFsXCI7XG5cdFx0Y29uc3Qgb0NvbnRlbnQgPSB0aGlzLmNvbnRlbnQ7XG5cdFx0aWYgKCFvQ29udGVudCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0bGV0IG9Nb2RlbCA9IG9Db250ZW50LmdldE1vZGVsKHNUYWJzTW9kZWwpIGFzIEpTT05Nb2RlbCB8IHVuZGVmaW5lZDtcblx0XHRpZiAoIW9Nb2RlbCkge1xuXHRcdFx0b01vZGVsID0gbmV3IEpTT05Nb2RlbCh7fSk7XG5cdFx0XHRvQ29udGVudC5zZXRNb2RlbChvTW9kZWwsIHNUYWJzTW9kZWwpO1xuXHRcdH1cblx0XHRyZXR1cm4gb01vZGVsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGlubmVyIGNvbnRyb2wgb2YgdGhlIGRpc3BsYXllZCB0YWIuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250cm9sXG5cdCAqL1xuXHRnZXRTZWxlY3RlZElubmVyQ29udHJvbCgpOiBJbm5lckNvbnRyb2xUeXBlIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvU2VsZWN0ZWRUYWIgPSB0aGlzLmNvbnRlbnQ/LmdldEl0ZW1zKCkuZmluZCgob0l0ZW0pID0+IChvSXRlbSBhcyBJY29uVGFiRmlsdGVyKS5nZXRLZXkoKSA9PT0gdGhpcy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCkpO1xuXHRcdHJldHVybiBvU2VsZWN0ZWRUYWJcblx0XHRcdD8gdGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZmluZCgob01hY3JvQVBJKSA9PiB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSkgPT09IG9TZWxlY3RlZFRhYilcblx0XHRcdDogdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIE1hbmFnZXMgdGhlIGJpbmRpbmcgb2YgYWxsIGlubmVyIGNvbnRyb2xzIHdoZW4gdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgaXMgY2hhbmdlZC5cblx0ICogQHBhcmFtIG9FdmVudCBFdmVudCBmaXJlZCBieSB0aGUgSWNvblRhYkJhclxuXHQgKi9cblx0c3RhdGljIGhhbmRsZVRhYkNoYW5nZShvRXZlbnQ6IEljb25UYWJCYXIkU2VsZWN0RXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBvSWNvblRhYkJhciA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBvTXVsdGlDb250cm9sID0gb0ljb25UYWJCYXIuZ2V0UGFyZW50KCkgYXMgTXVsdGlwbGVNb2RlQ29udHJvbDtcblxuXHRcdGNvbnN0IG1QYXJhbWV0ZXJzID0gb0V2ZW50LmdldFBhcmFtZXRlcnMoKTtcblx0XHRvTXVsdGlDb250cm9sLl9zZXRJbm5lckJpbmRpbmcodHJ1ZSk7XG5cdFx0Y29uc3Qgc1ByZXZpb3VzU2VsZWN0ZWRLZXkgPSBtUGFyYW1ldGVycz8ucHJldmlvdXNLZXk7XG5cdFx0Y29uc3Qgc1NlbGVjdGVkS2V5ID0gbVBhcmFtZXRlcnM/LnNlbGVjdGVkS2V5O1xuXG5cdFx0aWYgKHNTZWxlY3RlZEtleSAmJiBzUHJldmlvdXNTZWxlY3RlZEtleSAhPT0gc1NlbGVjdGVkS2V5KSB7XG5cdFx0XHRjb25zdCBvRmlsdGVyQmFyID0gb011bHRpQ29udHJvbC5fZ2V0RmlsdGVyQ29udHJvbCgpO1xuXHRcdFx0aWYgKG9GaWx0ZXJCYXIgJiYgIW9NdWx0aUNvbnRyb2wuZ2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIpKSB7XG5cdFx0XHRcdGlmICghb011bHRpQ29udHJvbC5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpKSB7XG5cdFx0XHRcdFx0Ly9jdXN0b20gdGFiXG5cdFx0XHRcdFx0b011bHRpQ29udHJvbC5fcmVmcmVzaEN1c3RvbVZpZXcob0ZpbHRlckJhci5nZXRGaWx0ZXJDb25kaXRpb25zKCksIFwidGFiQ2hhbmdlZFwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Q29udHJvbFBlcnNvbmFsaXphdGlvbldyaXRlQVBJLmFkZCh7XG5cdFx0XHRcdGNoYW5nZXM6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRjaGFuZ2VTcGVjaWZpY0RhdGE6IHtcblx0XHRcdFx0XHRcdFx0Y2hhbmdlVHlwZTogXCJzZWxlY3RJY29uVGFiQmFyRmlsdGVyXCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHtcblx0XHRcdFx0XHRcdFx0XHRzZWxlY3RlZEtleTogc1NlbGVjdGVkS2V5LFxuXHRcdFx0XHRcdFx0XHRcdHByZXZpb3VzU2VsZWN0ZWRLZXk6IHNQcmV2aW91c1NlbGVjdGVkS2V5XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzZWxlY3RvckVsZW1lbnQ6IG9JY29uVGFiQmFyXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRdXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRvTXVsdGlDb250cm9sLl9nZXRWaWV3Q29udHJvbGxlcigpPy5nZXRFeHRlbnNpb25BUEkoKT8udXBkYXRlQXBwU3RhdGUoKTtcblxuXHRcdG9NdWx0aUNvbnRyb2wuZmlyZUV2ZW50KFwic2VsZWN0XCIsIHtcblx0XHRcdGljb25UYWJCYXI6IG9JY29uVGFiQmFyLFxuXHRcdFx0c2VsZWN0ZWRLZXk6IHNTZWxlY3RlZEtleSxcblx0XHRcdHByZXZpb3VzS2V5OiBzUHJldmlvdXNTZWxlY3RlZEtleVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZnJlc2hlcyB0aGUgY29udGVudCBvZiB0aGUgc2VsZWN0ZWQgaW5uZXIgY29udHJvbC5cblx0ICpcblx0ICovXG5cdHJlZnJlc2hTZWxlY3RlZElubmVyQ29udHJvbENvbnRlbnQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0dGhpcy5nZXRTZWxlY3RlZElubmVyQ29udHJvbCgpPy5pbnZhbGlkYXRlQ29udGVudD8uKCk7XG5cdFx0XHR0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCk/LnJlc3VtZUJpbmRpbmc/Lih0cnVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gY3VzdG9tIHRhYlxuXHRcdFx0dGhpcy5fcmVmcmVzaEN1c3RvbVZpZXcodW5kZWZpbmVkLCBcImZvcmNlZFJlZnJlc2hcIik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEludmFsaWRhdGVzIHRoZSBjb250ZW50IG9mIHRoZSBpbm5lciBjb250cm9scy5cblx0ICogQHBhcmFtIFtrZXlzXSBUaGUgbGlzdCBvZiB0aGUga2V5cyBpZGVudGlmeWluZyB0aGUgdmlld3MgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgZm9yIHdoaWNoIHRoZSB2aWV3cycgY29udGVudCB3aWxsIGJlIGludmFsaWRhdGVkLiBJZiBub3QgcHJvdmlkZWQsIGFsbCB0aGUgdmlld3MnIGNvbnRlbnQgd2lsbCBiZSBpbnZhbGlkYXRlZFxuXHQgKi9cblx0aW52YWxpZGF0ZUNvbnRlbnQoa2V5cz86IHN0cmluZ1tdKTogdm9pZCB7XG5cdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR0aGlzLmdldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChtYWNyb0FQSSkgPT4ge1xuXHRcdFx0aWYgKGtleXMpIHtcblx0XHRcdFx0Y29uc3QgaWNvblRhYkZpbHRlciA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wobWFjcm9BUEkpO1xuXHRcdFx0XHRmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0aWNvblRhYkZpbHRlciAmJlxuXHRcdFx0XHRcdFx0KGljb25UYWJGaWx0ZXIuZ2V0S2V5KCkgPT09IGBmZTo6dGFibGU6OiR7a2V5fTo6TGluZUl0ZW1gIHx8IGljb25UYWJGaWx0ZXIuZ2V0S2V5KCkgPT09IGBmZTo6Q3VzdG9tVGFiOjoke2tleX1gKVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0bWFjcm9BUEkuaW52YWxpZGF0ZUNvbnRlbnQ/LigpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWFjcm9BUEkuaW52YWxpZGF0ZUNvbnRlbnQ/LigpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIGNvdW50cyB0byBcIm91dCBvZiBkYXRlXCIgb3IgXCJ1cCB0byBkYXRlXCJcblx0ICogSWYgdGhlIGNvdW50cyBhcmUgc2V0IHRvIFwib3V0IG9mIGRhdGVcIiBhbmQgdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgZG9lc24ndCBjb250YWluIGFuIGlubmVyIGNvbnRyb2wsIGFsbCBpbm5lciBjb250cm9scyBhcmUgcmVxdWVzdGVkIHRvIGdldCB0aGUgbmV3IGNvdW50cy5cblx0ICogQHBhcmFtIGJWYWx1ZSBFaXRoZXIgZnJlZXplcyB0aGUgY29udHJvbCBvciBub3Rcblx0ICovXG5cdHNldENvdW50c091dERhdGVkKGJWYWx1ZSA9IHRydWUpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiY291bnRzT3V0RGF0ZWRcIiwgYlZhbHVlKTtcblx0XHQvLyBpZiB0aGUgY3VycmVudCB0YWIgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCBubyBpbm5lciBDb250cm9sXG5cdFx0Ly8gdGhlIHRhYiBjb3VudHMgbXVzdCBiZSBtYW51YWxseSByZWZyZXNoZWQgc2luY2Ugbm8gTWFjcm8gQVBJIHdpbGwgc2VudCBldmVudCBpbnRlcm5hbERhdGFSZXF1ZXN0ZWRcblx0XHRpZiAoYlZhbHVlICYmICF0aGlzLmdldFNlbGVjdGVkSW5uZXJDb250cm9sKCkpIHtcblx0XHRcdHRoaXMuaW50ZXJuYWxSZWZyZXNoVGFic0NvdW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZyZWV6ZXMgdGhlIGNvbnRlbnQgOlxuXHQgKiAtIGNvbnRlbnQgaXMgZnJvemVuOiB0aGUgYmluZGluZyBvZiB0aGUgaW5uZXIgY29udHJvbHMgYXJlIHN1c3BlbmRlZC5cblx0ICogLSBjb250ZW50IGlzIHVuZnJvemVuOiB0aGUgYmluZGluZyBvZiBpbm5lciBjb250cm9sIHJlbGF0ZWQgdG8gdGhlIHNlbGVjdGVkIEljb25UYWJGaWx0ZXIgaXMgcmVzdW1lZC5cblx0ICogQHBhcmFtIGJWYWx1ZSBGcmVlemUgb3Igbm90IHRoZSBjb250cm9sXG5cdCAqL1xuXHRzZXRGcmVlemVDb250ZW50KGJWYWx1ZTogYm9vbGVhbik6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJmcmVlemVDb250ZW50XCIsIGJWYWx1ZSk7XG5cdFx0dGhpcy5fc2V0SW5uZXJCaW5kaW5nKCk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgaW50ZXJuYWwgbW9kZWwgd2l0aCB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBub3QgYXBwbGljYWJsZSBvbiBlYWNoIEljb25UYWJGaWx0ZXIgKGNvbnRhaW5pbmcgaW5uZXIgY29udHJvbCkgYWNjb3JkaW5nIHRvIHRoZSBlbnRpdHlUeXBlIG9mIHRoZSBmaWx0ZXIgY29udHJvbC5cblx0ICpcblx0ICovXG5cdF91cGRhdGVNdWx0aVRhYk5vdEFwcGxpY2FibGVGaWVsZHMoKTogdm9pZCB7XG5cdFx0Y29uc3QgdGFic01vZGVsID0gdGhpcy5nZXRUYWJzTW9kZWwoKTtcblx0XHRjb25zdCBvRmlsdGVyQ29udHJvbCA9IHRoaXMuX2dldEZpbHRlckNvbnRyb2woKSBhcyBDb250cm9sO1xuXHRcdGlmICh0YWJzTW9kZWwgJiYgb0ZpbHRlckNvbnRyb2wpIHtcblx0XHRcdGNvbnN0IHJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIHsgbm90QXBwbGljYWJsZTogeyBmaWVsZHM6IHN0cmluZ1tdOyB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkIH0gfT4gPSB7fTtcblx0XHRcdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdFx0Y29uc3Qgdmlld0RhdGEgPSB2aWV3LmdldFZpZXdEYXRhKCk7XG5cdFx0XHRpZiAoIXZpZXdEYXRhLnVzZUhpZGRlbkZpbHRlckJhcikge1xuXHRcdFx0XHR0aGlzLmdldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChvTWFjcm9BUEkpID0+IHtcblx0XHRcdFx0XHRjb25zdCBvVGFiID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0XHRcdGlmIChvVGFiKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBzVGFiSWQgPSBvVGFiLmdldEtleSgpO1xuXHRcdFx0XHRcdFx0Y29uc3QgbUlnbm9yZWRGaWVsZHMgPSBvTWFjcm9BUEkucmVmcmVzaE5vdEFwcGxpY2FibGVGaWVsZHM/LihvRmlsdGVyQ29udHJvbCkgfHwgW107XG5cdFx0XHRcdFx0XHRyZXN1bHRzW3NUYWJJZF0gPSB7XG5cdFx0XHRcdFx0XHRcdG5vdEFwcGxpY2FibGU6IHtcblx0XHRcdFx0XHRcdFx0XHRmaWVsZHM6IG1JZ25vcmVkRmllbGRzLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiB0aGlzLl9zZXRUYWJNZXNzYWdlU3RyaXAoe1xuXHRcdFx0XHRcdFx0XHRcdFx0ZW50aXR5VHlwZVBhdGg6IG9GaWx0ZXJDb250cm9sLmRhdGEoXCJlbnRpdHlUeXBlXCIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWdub3JlZEZpZWxkczogbUlnbm9yZWRGaWVsZHMsXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogb1RhYi5nZXRUZXh0KClcblx0XHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0aWYgKG9NYWNyb0FQSSAmJiBvTWFjcm9BUEkuaXNBKFwic2FwLmZlLm1hY3Jvcy5DaGFydFwiKSkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRzW3NUYWJJZF0gPSB0aGlzLmNoZWNrTm9uRmlsdGVyYWJsZUVudGl0eVNldChvTWFjcm9BUEksIHNUYWJJZCwgcmVzdWx0cyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGFic01vZGVsLnNldERhdGEocmVzdWx0cyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIE1vZGlmaWVzIHRoZSBtZXNzYWdlc3RyaXAgbWVzc2FnZSBiYXNlZCBvbiBlbnRpdHkgc2V0IGlzIGZpbGVyYWJsZSBvciBub3QuXG5cdCAqIEBwYXJhbSBvTWFjcm9BUEkgTWFjcm8gY2hhcnQgYXBpXG5cdCAqIEBwYXJhbSBzVGFiSWQgVGFiIGtleSBJRFxuXHQgKiBAcGFyYW0gcmVzdWx0cyBTaG91bGQgY29udGFpbiBmaWVsZHMgYW5kIHRpdGxlXG5cdCAqIEByZXR1cm5zIEFuIG9iamVjdCBvZiBtb2RpZmllZCBmaWVsZHMgYW5kIHRpdGxlXG5cdCAqL1xuXHRjaGVja05vbkZpbHRlcmFibGVFbnRpdHlTZXQoXG5cdFx0b01hY3JvQVBJOiBJbm5lckNvbnRyb2xUeXBlLFxuXHRcdHNUYWJJZDogc3RyaW5nLFxuXHRcdHJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIHsgbm90QXBwbGljYWJsZTogeyBmaWVsZHM6IHN0cmluZ1tdOyB0aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkIH0gfT5cblx0KTogeyBub3RBcHBsaWNhYmxlOiB7IGZpZWxkczogc3RyaW5nW107IHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQgfSB9IHtcblx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gZ2V0UmVzb3VyY2VNb2RlbChvTWFjcm9BUEkpO1xuXHRcdGNvbnN0IG9DaGFydCA9IG9NYWNyb0FQST8uZ2V0Q29udGVudCA/IG9NYWNyb0FQSS5nZXRDb250ZW50KCkgOiB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgYkVudGl0eVNldEZpbGVyYWJsZSA9XG5cdFx0XHRvQ2hhcnQgJiZcblx0XHRcdE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RW50aXR5U2V0Pihcblx0XHRcdFx0KG9DaGFydC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwpLmdldE1ldGFNb2RlbCgpLmdldENvbnRleHQoYCR7b0NoYXJ0LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKX1gKVxuXHRcdFx0KT8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzPy5GaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlcmFibGU7XG5cdFx0aWYgKGJFbnRpdHlTZXRGaWxlcmFibGUgIT09IHVuZGVmaW5lZCAmJiAhYkVudGl0eVNldEZpbGVyYWJsZSkge1xuXHRcdFx0aWYgKHJlc3VsdHNbc1RhYklkXS5ub3RBcHBsaWNhYmxlLmZpZWxkcy5pbmNsdWRlcyhcIiRzZWFyY2hcIikpIHtcblx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdLm5vdEFwcGxpY2FibGUudGl0bGUgKz0gXCIgXCIgKyByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0xSX01VTFRJVklaX0NIQVJUX01VTFRJX05PTl9GSUxURVJBQkxFXCIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdLm5vdEFwcGxpY2FibGUuZmllbGRzID0gW1wibm9uRmlsdGVyYWJsZVwiXTtcblx0XHRcdFx0cmVzdWx0c1tzVGFiSWRdLm5vdEFwcGxpY2FibGUudGl0bGUgPSByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0xSX01VTFRJVklaX0NIQVJUX01VTFRJX05PTl9GSUxURVJBQkxFXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0c1tzVGFiSWRdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIGlubmVyIGNvbnRyb2xzLlxuXHQgKiBAcGFyYW0gYk9ubHlGb3JWaXNpYmxlVGFiIFNob3VsZCBkaXNwbGF5IG9ubHkgdGhlIHZpc2libGUgY29udHJvbHNcblx0ICogQHJldHVybnMgQW4gYXJyYXkgb2YgY29udHJvbHNcblx0ICovXG5cdGdldEFsbElubmVyQ29udHJvbHMoYk9ubHlGb3JWaXNpYmxlVGFiID0gZmFsc2UpOiBJbm5lckNvbnRyb2xUeXBlW10ge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmlubmVyQ29udHJvbHMucmVkdWNlKChhSW5uZXJDb250cm9sczogSW5uZXJDb250cm9sVHlwZVtdLCBzSW5uZXJDb250cm9sOiBzdHJpbmcpID0+IHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRyb2wgPSBVSTVFbGVtZW50LmdldEVsZW1lbnRCeUlkKHNJbm5lckNvbnRyb2wpIGFzIElubmVyQ29udHJvbFR5cGU7XG5cdFx0XHRcdGlmIChvQ29udHJvbCkge1xuXHRcdFx0XHRcdGFJbm5lckNvbnRyb2xzLnB1c2gob0NvbnRyb2wpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBhSW5uZXJDb250cm9scy5maWx0ZXIoXG5cdFx0XHRcdFx0KG9Jbm5lckNvbnRyb2wpID0+ICFiT25seUZvclZpc2libGVUYWIgfHwgdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvSW5uZXJDb250cm9sKT8uZ2V0VmlzaWJsZSgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9LCBbXSkgfHwgW11cblx0XHQpO1xuXHR9XG5cblx0X2dldEZpbHRlckNvbnRyb2woKTogRmlsdGVyQmFyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gVUk1RWxlbWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmZpbHRlckNvbnRyb2wpIGFzIEZpbHRlckJhciB8IHVuZGVmaW5lZDtcblx0fVxuXG5cdF9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9Db250cm9sOiBDb250cm9sKTogSWNvblRhYkZpbHRlciB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG9UYWI6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQgPSBvQ29udHJvbDtcblx0XHRpZiAob1RhYiAmJiAhb1RhYi5pc0E8SWNvblRhYkZpbHRlcj4oXCJzYXAubS5JY29uVGFiRmlsdGVyXCIpICYmIChvVGFiIGFzIHsgZ2V0UGFyZW50PzogRnVuY3Rpb24gfSkuZ2V0UGFyZW50KSB7XG5cdFx0XHRvVGFiID0gb0NvbnRyb2wuZ2V0UGFyZW50KCkgYXMgVUk1RWxlbWVudCB8IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0cmV0dXJuIG9UYWIgJiYgb1RhYi5pc0E8SWNvblRhYkZpbHRlcj4oXCJzYXAubS5JY29uVGFiRmlsdGVyXCIpID8gb1RhYiA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdF9nZXRWaWV3Q29udHJvbGxlcigpOiBQYWdlQ29udHJvbGxlciB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KHRoaXMpO1xuXHRcdHJldHVybiBvVmlldyAmJiBvVmlldy5nZXRDb250cm9sbGVyKCk7XG5cdH1cblxuXHRfcmVmcmVzaEN1c3RvbVZpZXcob0ZpbHRlckNvbmRpdGlvbnM6IHVua25vd24sIHNSZWZyZXNoQ2F1c2U6IHN0cmluZyk6IHZvaWQge1xuXHRcdCh0aGlzLl9nZXRWaWV3Q29udHJvbGxlcigpIGFzIExpc3RSZXBvcnRDb250cm9sbGVyKT8ub25WaWV3TmVlZHNSZWZyZXNoPy4oe1xuXHRcdFx0ZmlsdGVyQ29uZGl0aW9uczogb0ZpbHRlckNvbmRpdGlvbnMsXG5cdFx0XHRjdXJyZW50VGFiSWQ6IHRoaXMuY29udGVudC5nZXRTZWxlY3RlZEtleSgpLFxuXHRcdFx0cmVmcmVzaENhdXNlOiBzUmVmcmVzaENhdXNlXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBjb3VudCBvZiB0aGUgVGFiIGNvbnRhaW5pbmcgdGhlIG1hY3JvIHBhc3NlZCBhcyBwYXJhbWV0ZXIuXG5cdCAqIEBwYXJhbSBtYWNyb0FQSSBUaGUgY29udGVudCBvZiB0aGUgdGFiIHdlIHdhbnQgdG8gcmVmcmVzaFxuXHQgKi9cblx0cmVmcmVzaFRhYkNvdW50KG1hY3JvQVBJOiBJbm5lckNvbnRyb2xUeXBlKTogdm9pZCB7XG5cdFx0Y29uc3QgaWNvblRhYkZpbHRlciA9IHRoaXMuX2dldFRhYkZyb21Jbm5lckNvbnRyb2wobWFjcm9BUEkpO1xuXHRcdGlmICghaWNvblRhYkZpbHRlcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAobWFjcm9BUEk/LmdldENvdW50cykge1xuXHRcdFx0aWNvblRhYkZpbHRlci5zZXRDb3VudChcIi4uLlwiKTtcblx0XHRcdG1hY3JvQVBJXG5cdFx0XHRcdC5nZXRDb3VudHMoKVxuXHRcdFx0XHQudGhlbigoY291bnQ6IHN0cmluZyk6IEljb25UYWJGaWx0ZXIgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBpY29uVGFiRmlsdGVyLnNldENvdW50KGNvdW50IHx8IFwiMFwiKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogdW5rbm93bik6IHZvaWQge1xuXHRcdFx0XHRcdExvZy5lcnJvcihgRXJyb3Igd2hpbGUgcmVxdWVzdGluZyBDb3VudHMgZm9yIENvbnRyb2w6ICR7ZXJyb3J9YCk7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGludGVybmFsUmVmcmVzaFRhYnNDb3VudCh0YWJsZUV2ZW50PzogQ29yZUV2ZW50KTogdm9pZCB7XG5cdFx0Ly8gSWYgdGhlIHJlZnJlc2ggaXMgdHJpZ2dlcmVkIGJ5IGFuIGV2ZW50IChpbnRlcm5hbERhdGFSZXF1ZXN0ZWQpXG5cdFx0Ly8gd2UgY2Fubm90IHVzZSB0aGUgc2VsZWN0ZWQga2V5IGFzIHJlZmVyZW5jZSBzaW5jZSB0YWJsZSBjYW4gYmUgcmVmcmVzaGVkIGJ5IFNpZGVFZmZlY3RzXG5cdFx0Ly8gc28gdGhlIHRhYmxlIGNvdWxkIGJlIGludG8gYSBkaWZmZXJlbnQgdGFiIC0+IHdlIHVzZSB0aGUgc291cmNlIG9mIHRoZSBldmVudCB0byBmaW5kIHRoZSB0YXJnZXRlZCB0YWJcblx0XHQvLyBJZiBub3QgdHJpZ2dlcmVkIGJ5IGFuIGV2ZW50IC0+IHJlZnJlc2ggYXQgbGVhc3QgdGhlIGNvdW50cyBvZiB0aGUgY3VycmVudCBNYWNyb0FQSVxuXHRcdGNvbnN0IGV2ZW50TWFjcm9BUEkgPSB0YWJsZUV2ZW50Py5nZXRTb3VyY2UoKSBhcyBNYWNyb0FQSTtcblx0XHRjb25zdCB0YXJnZXRLZXkgPSBldmVudE1hY3JvQVBJID8gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChldmVudE1hY3JvQVBJKT8uZ2V0S2V5KCkgOiB0aGlzLmNvbnRlbnQ/LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0aWYgKHRhcmdldEtleSkge1xuXHRcdFx0dGhpcy5yZWZyZXNoVGFic0NvdW50KFt0YXJnZXRLZXkuc3BsaXQoXCI6OlwiKVsyXV0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoZXMgdGhlIGNvdW50IG9mIHRoZSB2aWV3cyBpbiB0aGUgTXVsdGlNb2RlIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBba2V5c10gVGhlIGxpc3Qgb2YgdGhlIGtleXMgaWRlbnRpZnlpbmcgdGhlIHZpZXdzIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0IGZvciB3aGljaCB0aGUgdmlld3MnIGNvdW50IHdpbGwgYmUgcmVmcmVzaGVkLiBJZiBub3QgcHJvdmlkZWQsIGFsbCB0aGUgdmlld3MnIGNvdW50IHdpbGwgYmUgcmVmcmVzaGVkXG5cdCAqL1xuXHRyZWZyZXNoVGFic0NvdW50KGtleXM/OiBzdHJpbmdbXSk6IHZvaWQge1xuXHRcdGlmICgha2V5cykge1xuXHRcdFx0dGhpcy5zZXRDb3VudHNPdXREYXRlZCh0cnVlKTtcblx0XHR9XG5cdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKHRydWUpLmZvckVhY2goKG9NYWNyb0FQSSk6IHZvaWQgPT4ge1xuXHRcdFx0Y29uc3Qgb0ljb25UYWJGaWx0ZXIgPSB0aGlzLl9nZXRUYWJGcm9tSW5uZXJDb250cm9sKG9NYWNyb0FQSSk7XG5cdFx0XHRpZiAodGhpcy5jb3VudHNPdXREYXRlZCB8fCAoa2V5cyAmJiBvSWNvblRhYkZpbHRlciAmJiBrZXlzLmluY2x1ZGVzKG9JY29uVGFiRmlsdGVyLmdldEtleSgpLnNwbGl0KFwiOjpcIilbMl0pKSkge1xuXHRcdFx0XHR0aGlzLnJlZnJlc2hUYWJDb3VudChvTWFjcm9BUEkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuc2V0Q291bnRzT3V0RGF0ZWQoZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZnJlc2hlcyB0aGUgY29udGVudCBvZiB0aGUgdW5kZXJseWluZyB2aWV3cyB1cG9uIHRoZSBuZXh0IG9wZW5pbmcuXG5cdCAqIE5vdGU6IFRoZSBjb250ZW50IG9mIHRoZSBzZWxlY3RlZCB2aWV3LCBpZiBwYXJ0IG9mIHRoZSBwcm92aWRlZCBrZXlzLCB3aWxsIGJlIHJlZnJlc2hlZCBpbW1lZGlhdGVseS5cblx0ICogQHBhcmFtIFtrZXlzXSBUaGUgbGlzdCBvZiB0aGUga2V5cyBpZGVudGlmeWluZyB0aGUgdmlld3MgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QgZm9yIHdoaWNoIHRoZSB2aWV3cycgY29udGVudCB3aWxsIGJlIHJlZnJlc2hlZC4gSWYgbm90IHByb3ZpZGVkLCBhbGwgdGhlIHZpZXdzJyBjb250ZW50IHdpbGwgYmUgcmVmcmVzaGVkXG5cdCAqL1xuXHRzZXRUYWJDb250ZW50VG9CZVJlZnJlc2hlZE9uTmV4dE9wZW5pbmcoa2V5cz86IHN0cmluZ1tdKTogdm9pZCB7XG5cdFx0Y29uc3Qgc2VsZWN0ZWRUYWJLZXkgPSB0aGlzPy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0Y29uc3QgdGFiS2V5czogc3RyaW5nW10gPSBbXTtcblx0XHRjb25zdCByZWZyZXNoU2VsZWN0ZWRUYWJDb250ZW50ID0ga2V5cyA/IGtleXMuaW5jbHVkZXMoc2VsZWN0ZWRUYWJLZXk/LnNwbGl0KFwiOjpcIilbMl0pIDogdHJ1ZTtcblx0XHRpZiAoa2V5cykge1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdFx0XHRpZiAoc2VsZWN0ZWRUYWJLZXkgIT09IGBmZTo6dGFibGU6OiR7a2V5fTo6TGluZUl0ZW1gICYmIHNlbGVjdGVkVGFiS2V5ICE9PSBgZmU6OkN1c3RvbVRhYjo6JHtrZXl9YCkge1xuXHRcdFx0XHRcdHRhYktleXMucHVzaChrZXkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXM/LmdldEFsbElubmVyQ29udHJvbHMoKS5mb3JFYWNoKChtYWNyb0FQSSkgPT4ge1xuXHRcdFx0XHRjb25zdCBpY29uVGFiRmlsdGVyID0gdGhpcz8uX2dldFRhYkZyb21Jbm5lckNvbnRyb2wobWFjcm9BUEkpO1xuXHRcdFx0XHRpZiAoaWNvblRhYkZpbHRlciAmJiBpY29uVGFiRmlsdGVyLmdldEtleSgpICE9PSBzZWxlY3RlZFRhYktleSkge1xuXHRcdFx0XHRcdHRhYktleXMucHVzaChpY29uVGFiRmlsdGVyLmdldEtleSgpLnNwbGl0KFwiOjpcIilbMl0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0dGhpcz8uaW52YWxpZGF0ZUNvbnRlbnQodGFiS2V5cyk7XG5cdFx0aWYgKHJlZnJlc2hTZWxlY3RlZFRhYkNvbnRlbnQpIHtcblx0XHRcdHRoaXM/LnJlZnJlc2hTZWxlY3RlZElubmVyQ29udHJvbENvbnRlbnQoKTtcblx0XHR9XG5cdH1cblxuXHRfc2V0SW5uZXJCaW5kaW5nKGJSZXF1ZXN0SWZOb3RJbml0aWFsaXplZCA9IGZhbHNlKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5nZXRBbGxJbm5lckNvbnRyb2xzKCkuZm9yRWFjaCgob01hY3JvQVBJKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9JY29uVGFiRmlsdGVyID0gdGhpcy5fZ2V0VGFiRnJvbUlubmVyQ29udHJvbChvTWFjcm9BUEkpO1xuXHRcdFx0XHRjb25zdCBiSXNTZWxlY3RlZEtleSA9IG9JY29uVGFiRmlsdGVyPy5nZXRLZXkoKSA9PT0gdGhpcy5jb250ZW50LmdldFNlbGVjdGVkS2V5KCk7XG5cdFx0XHRcdGNvbnN0IHNBY3Rpb24gPSBiSXNTZWxlY3RlZEtleSAmJiAhdGhpcy5nZXRQcm9wZXJ0eShcImZyZWV6ZUNvbnRlbnRcIikgPyBCaW5kaW5nQWN0aW9uLlJlc3VtZSA6IEJpbmRpbmdBY3Rpb24uU3VzcGVuZDtcblx0XHRcdFx0b01hY3JvQVBJW3NBY3Rpb25dPy4oc0FjdGlvbiA9PT0gQmluZGluZ0FjdGlvbi5SZXN1bWUgPyBiUmVxdWVzdElmTm90SW5pdGlhbGl6ZWQgJiYgYklzU2VsZWN0ZWRLZXkgOiB1bmRlZmluZWQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0X3NldFRhYk1lc3NhZ2VTdHJpcChwcm9wZXJ0aWVzOiBNZXNzYWdlU3RyaXBQcm9wZXJ0aWVzKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRsZXQgc1RleHQgPSBcIlwiO1xuXHRcdGNvbnN0IGFJZ25vcmVkRmllbGRzID0gcHJvcGVydGllcy5pZ25vcmVkRmllbGRzO1xuXHRcdGNvbnN0IG9GaWx0ZXJDb250cm9sID0gdGhpcy5fZ2V0RmlsdGVyQ29udHJvbCgpIGFzIENvbnRyb2w7XG5cdFx0aWYgKG9GaWx0ZXJDb250cm9sICYmIEFycmF5LmlzQXJyYXkoYUlnbm9yZWRGaWVsZHMpICYmIGFJZ25vcmVkRmllbGRzLmxlbmd0aCA+IDAgJiYgcHJvcGVydGllcy50aXRsZSkge1xuXHRcdFx0Y29uc3QgYUlnbm9yZWRMYWJlbHMgPSBNZXNzYWdlU3RyaXAuZ2V0TGFiZWxzKFxuXHRcdFx0XHRhSWdub3JlZEZpZWxkcyxcblx0XHRcdFx0cHJvcGVydGllcy5lbnRpdHlUeXBlUGF0aCxcblx0XHRcdFx0b0ZpbHRlckNvbnRyb2wsXG5cdFx0XHRcdGdldFJlc291cmNlTW9kZWwob0ZpbHRlckNvbnRyb2wpXG5cdFx0XHQpO1xuXHRcdFx0c1RleHQgPSBNZXNzYWdlU3RyaXAuZ2V0VGV4dChhSWdub3JlZExhYmVscywgb0ZpbHRlckNvbnRyb2wsIHByb3BlcnRpZXMudGl0bGUpO1xuXHRcdFx0cmV0dXJuIHNUZXh0O1xuXHRcdH1cblx0fVxuXG5cdF9vblNlYXJjaChvRXZlbnQ6IENvcmVFdmVudDx7IGNvbmRpdGlvbnM6IHVua25vd24gfT4pOiB2b2lkIHtcblx0XHR0aGlzLnNldENvdW50c091dERhdGVkKHRydWUpO1xuXHRcdHRoaXMuc2V0RnJlZXplQ29udGVudChmYWxzZSk7XG5cdFx0aWYgKHRoaXMuZ2V0U2VsZWN0ZWRJbm5lckNvbnRyb2woKSkge1xuXHRcdFx0dGhpcy5fdXBkYXRlTXVsdGlUYWJOb3RBcHBsaWNhYmxlRmllbGRzKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGN1c3RvbSB0YWJcblx0XHRcdHRoaXMuX3JlZnJlc2hDdXN0b21WaWV3KG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb25kaXRpb25zXCIpLCBcInNlYXJjaFwiKTtcblx0XHR9XG5cdH1cblxuXHRfb25GaWx0ZXJDaGFuZ2VkKG9FdmVudDogQ29yZUV2ZW50PHsgY29uZGl0aW9uc0Jhc2VkOiBib29sZWFuIH0+KTogdm9pZCB7XG5cdFx0aWYgKG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJjb25kaXRpb25zQmFzZWRcIikpIHtcblx0XHRcdHRoaXMuc2V0RnJlZXplQ29udGVudCh0cnVlKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTXVsdGlwbGVNb2RlQ29udHJvbDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXdDS0EsYUFBYSwwQkFBYkEsYUFBYTtJQUFiQSxhQUFhO0lBQWJBLGFBQWE7SUFBQSxPQUFiQSxhQUFhO0VBQUEsRUFBYkEsYUFBYTtFQUFBLElBTVpDLG1CQUFtQixJQUFBQyxJQUFBLEdBRHhCQyxjQUFjLENBQUMsMERBQTBELENBQUMsRUFBQUMsS0FBQSxHQUV6RUMsUUFBUSxDQUFDO0lBQUVDLElB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
@@ -74,6 +74,29 @@ class MultipleModeControl extends Control {
74
74
  settings?: $ControlSettings & PropertiesOf<MultipleModeControl>
75
75
  ) {
76
76
  super(id as string, settings);
77
+ this.content?.addEventDelegate({
78
+ onAfterRendering: this.onAfterIconTabBarRendering.bind(this)
79
+ });
80
+ }
81
+
82
+ onAfterIconTabBarRendering(): void {
83
+ this.getSelectedInnerControl()?.resumeBinding?.(!this.getProperty("freezeContent"));
84
+ if (this.showCounts && !this.setVisibleOverridden) {
85
+ this.setProperty("setVisibleOverridden", true);
86
+ this.getAllInnerControls().forEach((macroAPI: MacroAPI): void => {
87
+ const iconTabFilter = this._getTabFromInnerControl(macroAPI);
88
+ // No count to show
89
+ if (!iconTabFilter) return;
90
+
91
+ const originSetVisible = iconTabFilter.setVisible;
92
+ iconTabFilter.setVisible = (value: boolean): IconTabFilter => {
93
+ if (iconTabFilter.getVisible() === false && value) {
94
+ this.refreshTabCount(macroAPI);
95
+ }
96
+ return originSetVisible.bind(iconTabFilter)(value);
97
+ };
98
+ });
99
+ }
77
100
  }
78
101
 
79
102
  onBeforeRendering(): void {
@@ -97,26 +120,6 @@ class MultipleModeControl extends Control {
97
120
  }
98
121
  }
99
122
 
100
- onAfterRendering(): void {
101
- this.getSelectedInnerControl()?.resumeBinding?.(!this.getProperty("freezeContent"));
102
- if (this.showCounts && !this.setVisibleOverridden) {
103
- this.setProperty("setVisibleOverridden", true);
104
- this.getAllInnerControls().forEach((macroAPI: MacroAPI): void => {
105
- const iconTabFilter = this._getTabFromInnerControl(macroAPI);
106
- // No count to show
107
- if (!iconTabFilter) return;
108
-
109
- const originSetVisible = iconTabFilter.setVisible;
110
- iconTabFilter.setVisible = (value: boolean): IconTabFilter => {
111
- if (iconTabFilter.getVisible() === false && value) {
112
- this.refreshTabCount(macroAPI);
113
- }
114
- return originSetVisible.bind(iconTabFilter)(value);
115
- };
116
- });
117
- }
118
- }
119
-
120
123
  static render(oRm: RenderManager, oControl: MultipleModeControl): void {
121
124
  oRm.renderControl(oControl.content);
122
125
  }
@@ -5,7 +5,7 @@
5
5
  "type": "component",
6
6
  "i18n": "../messagebundle.properties",
7
7
  "applicationVersion": {
8
- "version": "1.136.13"
8
+ "version": "1.136.15"
9
9
  },
10
10
  "title": "List Report",
11
11
  "tags": {