@sapui5/sap.fe.templates 1.145.0 → 1.145.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.
@@ -133,7 +133,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
133
133
  let dataForCreate;
134
134
  if (oStartUpParams?.preferredMode?.[0].includes("create") === true) {
135
135
  const oInboundParameters = this.getViewData().inboundParameters;
136
- dataForCreate = Object.assign({}, parameters.data, CommonUtils.getAdditionalParamsForCreate(oStartUpParams, oInboundParameters));
136
+ const metaModel = this.getModel()?.getMetaModel();
137
+ const contextPath = this.contextPath || `/${this.entitySet}`;
138
+ dataForCreate = Object.assign({}, parameters.data, CommonUtils.getAdditionalParamsForCreate(oStartUpParams, oInboundParameters, metaModel, contextPath));
137
139
  } else {
138
140
  dataForCreate = parameters.data;
139
141
  }
@@ -231,4 +233,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/core/CommonUt
231
233
  }), _class2)) || _class);
232
234
  return ObjectPageComponent;
233
235
  }, false);
234
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWYXJpYW50TWFuYWdlbWVudCIsIkNvcmVMaWJyYXJ5IiwiQ3JlYXRpb25Nb2RlIiwiU2VjdGlvbkxheW91dCIsInRlbXBsYXRlTGliIiwiT2JqZWN0UGFnZSIsIk9iamVjdFBhZ2VDb21wb25lbnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJsaWJyYXJ5IiwibWFuaWZlc3QiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIk5vbmUiLCJfZGVjMyIsIlBhZ2UiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJ1bmRlZmluZWQiLCJfZGVjMTIiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RlbXBsYXRlQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJEZWZlcnJlZENvbnRleHRDcmVhdGVkIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJpbml0IiwiYnJlYWRjcnVtYnNIaWVyYXJjaHlNb2RlIiwiaXNDb250ZXh0RXhwZWN0ZWQiLCJleHRlbmRQYWdlRGVmaW5pdGlvbiIsInBhZ2VEZWZpbml0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImV4dGVuZE9iamVjdFBhZ2VEZWZpbml0aW9uIiwiY3JlYXRlRGVmZXJyZWRDb250ZXh0Iiwic1BhdGgiLCJwYXJhbWV0ZXJzIiwiYkFjdGlvbkNyZWF0ZSIsImxpc3RCaW5kaW5nIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIkNvbW1vblV0aWxzIiwiSU5MSU5FRURJVF9VUERBVEVHUk9VUElEIiwib1BhcmFtZXRlcnMiLCIkJGdyb3VwSWQiLCIkJHVwZGF0ZUdyb3VwSWQiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCIkc2VsZWN0IiwiYmluZExpc3QiLCJyZXBsYWNlIiwib1N0YXJ0VXBQYXJhbXMiLCJvQXBwQ29tcG9uZW50IiwiZ2V0Q29tcG9uZW50RGF0YSIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwiZGF0YUZvckNyZWF0ZSIsInByZWZlcnJlZE1vZGUiLCJpbmNsdWRlcyIsIm9JbmJvdW5kUGFyYW1ldGVycyIsImdldFZpZXdEYXRhIiwiaW5ib3VuZFBhcmFtZXRlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJkYXRhIiwiZ2V0QWRkaXRpb25hbFBhcmFtc0ZvckNyZWF0ZSIsImdldFJvb3RDb250cm9sIiwiZ2V0Q29udHJvbGxlciIsImVkaXRGbG93IiwiY3JlYXRlRG9jdW1lbnQiLCJjcmVhdGlvbk1vZGUiLCJTeW5jIiwiY3JlYXRlQWN0aW9uIiwiYkZyb21EZWZlcnJlZCIsInNlbGVjdGVkQ29udGV4dHMiLCJwYXJlbnRDb250ZXh0IiwicmVxdWVzdEF0TGVhc3QiLCJmaW5hbGx5IiwiY2F0Y2giLCJzZXRWYXJpYW50TWFuYWdlbWVudCIsInNWYXJpYW50TWFuYWdlbWVudCIsIkxvZyIsImVycm9yIiwic2V0UHJvcGVydHkiLCJpc09wZW5JbkVkaXRNb2RlIiwib3BlbkluRWRpdE1vZGUiLCJfZ2V0Q29udHJvbGxlck5hbWUiLCJUZW1wbGF0ZUNvbXBvbmVudCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQ29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBJbmJvdW5kUGFyYW1ldGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgT2JqZWN0UGFnZURlZmluaXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy90ZW1wbGF0ZXMvT2JqZWN0UGFnZUNvbnZlcnRlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgQ29yZUxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgRmluYWxQYWdlRGVmaW5pdGlvbiB9IGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL09iamVjdFBhZ2UvRXh0ZW5kUGFnZURlZmluaXRpb25cIjtcbmltcG9ydCB7IGV4dGVuZE9iamVjdFBhZ2VEZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9FeHRlbmRQYWdlRGVmaW5pdGlvblwiO1xuaW1wb3J0IHRlbXBsYXRlTGliIGZyb20gXCJzYXAvZmUvdGVtcGxhdGVzL2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuXG5jb25zdCBWYXJpYW50TWFuYWdlbWVudCA9IENvcmVMaWJyYXJ5LlZhcmlhbnRNYW5hZ2VtZW50LFxuXHRDcmVhdGlvbk1vZGUgPSBDb3JlTGlicmFyeS5DcmVhdGlvbk1vZGU7XG5jb25zdCBTZWN0aW9uTGF5b3V0ID0gdGVtcGxhdGVMaWIuT2JqZWN0UGFnZS5TZWN0aW9uTGF5b3V0O1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLkNvbXBvbmVudFwiLCB7IGxpYnJhcnk6IFwic2FwLmZlLnRlbXBsYXRlc1wiLCBtYW5pZmVzdDogXCJqc29uXCIgfSlcbmNsYXNzIE9iamVjdFBhZ2VDb21wb25lbnQgZXh0ZW5kcyBUZW1wbGF0ZUNvbXBvbmVudCB7XG5cdC8qKlxuXHQgKiBEZWZpbmVzIGlmIGFuZCBvbiB3aGljaCBsZXZlbCB2YXJpYW50cyBjYW4gYmUgY29uZmlndXJlZDpcblx0ICogXHRcdE5vbmU6IG5vIHZhcmlhbnQgY29uZmlndXJhdGlvbiBhdCBhbGxcblx0ICogXHRcdFBhZ2U6IG9uZSB2YXJpYW50IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlXG5cdCAqIFx0XHRDb250cm9sOiB2YXJpYW50IGNvbmZpZ3VyYXRpb24gb24gY29udHJvbCBsZXZlbFxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInNhcC5mZS5jb3JlLlZhcmlhbnRNYW5hZ2VtZW50XCIsXG5cdFx0ZGVmYXVsdFZhbHVlOiBWYXJpYW50TWFuYWdlbWVudC5Ob25lXG5cdH0pXG5cdHZhcmlhbnRNYW5hZ2VtZW50OiB0eXBlb2YgVmFyaWFudE1hbmFnZW1lbnQ7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaG93IHRoZSBzZWN0aW9ucyBhcmUgcmVuZGVyZWRcblx0ICogXHRcdFBhZ2U6IGFsbCBzZWN0aW9ucyBhcmUgc2hvd24gb24gb25lIHBhZ2Vcblx0ICogXHRcdFRhYnM6IGVhY2ggdG9wLWxldmVsIHNlY3Rpb24gaXMgc2hvd24gaW4gYW4gb3duIHRhYlxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5TZWN0aW9uTGF5b3V0XCIsXG5cdFx0ZGVmYXVsdFZhbHVlOiBTZWN0aW9uTGF5b3V0LlBhZ2Vcblx0fSlcblx0c2VjdGlvbkxheW91dDogdHlwZW9mIFNlY3Rpb25MYXlvdXQ7XG5cblx0LyoqXG5cdCAqIEVuYWJsZXMgdGhlIHJlbGF0ZWQgYXBwcyBmZWF0dXJlc1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRkZWZhdWx0VmFsdWU6IGZhbHNlXG5cdH0pXG5cdHNob3dSZWxhdGVkQXBwcyE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEVuYWJsZXMgdGhlICdNaWNyb3NvZnQgVGVhbXMgPiBBcyBDYXJkJyBvcHRpb24gaW4gdGhlICdTaGFyZScgbWVudVxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcIm9iamVjdFwiXG5cdH0pXG5cdHNoYXJlITogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4+O1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwib2JqZWN0XCIgfSlcblx0YWRkaXRpb25hbFNlbWFudGljT2JqZWN0cyE6IG9iamVjdDtcblxuXHQvKipcblx0ICogRW5hYmxlcyB0aGUgZWRpdGFibGUgb2JqZWN0IHBhZ2UgaGVhZGVyXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGRlZmF1bHRWYWx1ZTogdHJ1ZVxuXHR9KVxuXHRlZGl0YWJsZUhlYWRlckNvbnRlbnQhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBTaG93cyBhIHRleHQgaW5zdGVhZCBvZiBhbiBJbGx1c3RyYXRlZE1lc3NhZ2UgaW4gdGhlIG5vRGF0YSBhZ2dyZWdhdGlvbiBvZiBUYWJsZXMgb3IgQ2hhcnRzXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0fSlcblx0dXNlVGV4dEZvck5vRGF0YU1lc3NhZ2VzITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRGVmaW5lcyB0aGUgcHJvcGVydGllcyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5ib3VuZCBOYXZpZ2F0aW9uXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwib2JqZWN0XCJcblx0fSlcblx0aW5ib3VuZFBhcmFtZXRlcnMhOiBvYmplY3Q7XG5cblx0LyoqXG5cdCAqIERlZmluZXMgaWYgYW4gb2JqZWN0IHBhZ2Ugc2hvdWxkIGJlIG9wZW5lZCBpbiBlZGl0IG1vZGVcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0b3BlbkluRWRpdE1vZGU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRkZWZhdWx0VmFsdWU6IHVuZGVmaW5lZFxuXHR9KVxuXHRlbmFibGVMYXp5TG9hZGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkXG5cdH0pXG5cdGRpc2FibGVPYmplY3RQYWdlUmVxdWVzdE9wdGltaXphdGlvbjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIERlZmVycmVkQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuXHRpbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuYnJlYWRjcnVtYnNIaWVyYXJjaHlNb2RlID0gdGhpcy5icmVhZGNydW1ic0hpZXJhcmNoeU1vZGUgPz8gXCJvYmplY3ROYXZpZ2F0aW9uXCI7XG5cdFx0c3VwZXIuaW5pdCgpO1xuXHR9XG5cblx0aXNDb250ZXh0RXhwZWN0ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRleHRlbmRQYWdlRGVmaW5pdGlvbihwYWdlRGVmaW5pdGlvbjogT2JqZWN0UGFnZURlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBGaW5hbFBhZ2VEZWZpbml0aW9uIHtcblx0XHRyZXR1cm4gZXh0ZW5kT2JqZWN0UGFnZURlZmluaXRpb24ocGFnZURlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHR9XG5cblx0Ly8gVE9ETzogdGhpcyBzaG91bGQgYmUgaWRlYWxseSBiZSBoYW5kbGVkIGJ5IHRoZSBlZGl0Zmxvdy9yb3V0aW5nIHdpdGhvdXQgdGhlIG5lZWQgdG8gaGF2ZSB0aGlzIG1ldGhvZCBpbiB0aGVcblx0Ly8gb2JqZWN0IHBhZ2UgLSBmb3Igbm93IGtlZXAgaXQgaGVyZVxuXHRjcmVhdGVEZWZlcnJlZENvbnRleHQoXG5cdFx0c1BhdGg6IHN0cmluZyxcblx0XHRwYXJhbWV0ZXJzOiB7IGxpc3RCaW5kaW5nPzogT0RhdGFMaXN0QmluZGluZzsgcGFyZW50Q29udGV4dD86IENvbnRleHQ7IGRhdGE/OiBvYmplY3Q7IHJlcXVlc3RBdExlYXN0Pzogc3RyaW5nW10gfSxcblx0XHRiQWN0aW9uQ3JlYXRlOiBib29sZWFuXG5cdCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5EZWZlcnJlZENvbnRleHRDcmVhdGVkKSB7XG5cdFx0XHR0aGlzLkRlZmVycmVkQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuXG5cdFx0XHRpZiAoIXBhcmFtZXRlcnMubGlzdEJpbmRpbmcgfHwgcGFyYW1ldGVycy5saXN0QmluZGluZy5nZXRVcGRhdGVHcm91cElkKCkgPT09IENvbW1vblV0aWxzLklOTElORUVESVRfVVBEQVRFR1JPVVBJRCkge1xuXHRcdFx0XHRjb25zdCBvUGFyYW1ldGVyczogeyAkJGdyb3VwSWQ6IHN0cmluZzsgJCR1cGRhdGVHcm91cElkOiBzdHJpbmc7ICRzZWxlY3Q/OiBzdHJpbmcgfSA9IHtcblx0XHRcdFx0XHQkJGdyb3VwSWQ6IFwiJGF1dG8uSGVyb2VzXCIsXG5cdFx0XHRcdFx0JCR1cGRhdGVHcm91cElkOiBcIiRhdXRvXCJcblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgbWV0YU1vZGVsID0gdGhpcy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRpZiAoTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQobWV0YU1vZGVsKSkge1xuXHRcdFx0XHRcdG9QYXJhbWV0ZXJzLiRzZWxlY3QgPSBcIkRyYWZ0QWRtaW5pc3RyYXRpdmVEYXRhL0RyYWZ0QWRtaW5pc3RyYXRpdmVVc2VyXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cGFyYW1ldGVycy5saXN0QmluZGluZyA9IHRoaXMuZ2V0TW9kZWwoKS5iaW5kTGlzdChzUGF0aC5yZXBsYWNlKFwiKC4uLilcIiwgXCJcIiksIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9QYXJhbWV0ZXJzKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3Qgb1N0YXJ0VXBQYXJhbXMgPSB0aGlzLm9BcHBDb21wb25lbnQ/LmdldENvbXBvbmVudERhdGEoKT8uc3RhcnR1cFBhcmFtZXRlcnM7XG5cdFx0XHRsZXQgZGF0YUZvckNyZWF0ZTtcblx0XHRcdGlmIChvU3RhcnRVcFBhcmFtcz8ucHJlZmVycmVkTW9kZT8uWzBdLmluY2x1ZGVzKFwiY3JlYXRlXCIpID09PSB0cnVlKSB7XG5cdFx0XHRcdGNvbnN0IG9JbmJvdW5kUGFyYW1ldGVycyA9IHRoaXMuZ2V0Vmlld0RhdGEoKS5pbmJvdW5kUGFyYW1ldGVycyBhcyBSZWNvcmQ8c3RyaW5nLCBJbmJvdW5kUGFyYW1ldGVyPiB8IHVuZGVmaW5lZDtcblx0XHRcdFx0ZGF0YUZvckNyZWF0ZSA9IE9iamVjdC5hc3NpZ24oXG5cdFx0XHRcdFx0e30sXG5cdFx0XHRcdFx0cGFyYW1ldGVycy5kYXRhLFxuXHRcdFx0XHRcdENvbW1vblV0aWxzLmdldEFkZGl0aW9uYWxQYXJhbXNGb3JDcmVhdGUob1N0YXJ0VXBQYXJhbXMsIG9JbmJvdW5kUGFyYW1ldGVycylcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGFGb3JDcmVhdGUgPSBwYXJhbWV0ZXJzLmRhdGE7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGZvciBub3cgd2FpdCB1bnRpbCB0aGUgdmlldyBhbmQgdGhlIGNvbnRyb2xsZXIgaXMgY3JlYXRlZFxuXHRcdFx0dGhpcy5nZXRSb290Q29udHJvbCgpXG5cdFx0XHRcdC5nZXRDb250cm9sbGVyKClcblx0XHRcdFx0LmVkaXRGbG93LmNyZWF0ZURvY3VtZW50KHBhcmFtZXRlcnMubGlzdEJpbmRpbmcsIHtcblx0XHRcdFx0XHRjcmVhdGlvbk1vZGU6IENyZWF0aW9uTW9kZS5TeW5jLFxuXHRcdFx0XHRcdGNyZWF0ZUFjdGlvbjogYkFjdGlvbkNyZWF0ZSxcblx0XHRcdFx0XHRkYXRhOiBkYXRhRm9yQ3JlYXRlLFxuXHRcdFx0XHRcdGJGcm9tRGVmZXJyZWQ6IHRydWUsXG5cdFx0XHRcdFx0c2VsZWN0ZWRDb250ZXh0czogcGFyYW1ldGVycy5wYXJlbnRDb250ZXh0ID8gW3BhcmFtZXRlcnMucGFyZW50Q29udGV4dF0gOiB1bmRlZmluZWQsXG5cdFx0XHRcdFx0cmVxdWVzdEF0TGVhc3Q6IHBhcmFtZXRlcnMucmVxdWVzdEF0TGVhc3Rcblx0XHRcdFx0fSlcblx0XHRcdFx0LmZpbmFsbHkoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuRGVmZXJyZWRDb250ZXh0Q3JlYXRlZCA9IGZhbHNlO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdC8vIERvIE5vdGhpbmcgP1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRzZXRWYXJpYW50TWFuYWdlbWVudChzVmFyaWFudE1hbmFnZW1lbnQ6IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmIChzVmFyaWFudE1hbmFnZW1lbnQgPT09IFZhcmlhbnRNYW5hZ2VtZW50LlBhZ2UpIHtcblx0XHRcdExvZy5lcnJvcihcIk9iamVjdFBhZ2UgZG9lcyBub3Qgc3VwcG9ydCBQYWdlLWxldmVsIHZhcmlhbnQgbWFuYWdlbWVudCB5ZXRcIik7XG5cdFx0XHRzVmFyaWFudE1hbmFnZW1lbnQgPSBWYXJpYW50TWFuYWdlbWVudC5Ob25lO1xuXHRcdH1cblxuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJ2YXJpYW50TWFuYWdlbWVudFwiLCBzVmFyaWFudE1hbmFnZW1lbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBvcGVuSW5FZGl0TW9kZSBpcyBkZWZpbmVkIGluIHRoZSBtYW5pZmVzdCBzZXR0aW5nc1xuXHQgKiBAcmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBlZGl0IG1vZGUgaXMgc2V0IGZvciBhbiBvYmplY3QgcGFnZVxuXHQgKi9cblxuXHRpc09wZW5JbkVkaXRNb2RlKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG9wZW5JbkVkaXRNb2RlID0gdGhpcy5nZXRWaWV3RGF0YSgpLm9wZW5JbkVkaXRNb2RlO1xuXHRcdHJldHVybiBvcGVuSW5FZGl0TW9kZSA9PT0gdHJ1ZTtcblx0fVxuXG5cdF9nZXRDb250cm9sbGVyTmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5PYmplY3RQYWdlQ29udHJvbGxlclwiO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdFBhZ2VDb21wb25lbnQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7RUFlQSxNQUFNQSxpQkFBaUIsR0FBR0MsV0FBVyxDQUFDRCxpQkFBaUI7SUFDdERFLFlBQVksR0FBR0QsV0FBVyxDQUFDQyxZQUFZO0VBQ3hDLE1BQU1DLGFBQWEsR0FBR0MsV0FBVyxDQUFDQyxVQUFVLENB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
236
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWYXJpYW50TWFuYWdlbWVudCIsIkNvcmVMaWJyYXJ5IiwiQ3JlYXRpb25Nb2RlIiwiU2VjdGlvbkxheW91dCIsInRlbXBsYXRlTGliIiwiT2JqZWN0UGFnZSIsIk9iamVjdFBhZ2VDb21wb25lbnQiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJsaWJyYXJ5IiwibWFuaWZlc3QiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsIk5vbmUiLCJfZGVjMyIsIlBhZ2UiLCJfZGVjNCIsIl9kZWM1IiwiX2RlYzYiLCJfZGVjNyIsIl9kZWM4IiwiX2RlYzkiLCJfZGVjMTAiLCJfZGVjMTEiLCJ1bmRlZmluZWQiLCJfZGVjMTIiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX1RlbXBsYXRlQ29tcG9uZW50IiwiX3RoaXMiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJfaW5pdGlhbGl6ZXJEZWZpbmVQcm9wZXJ0eSIsIl9kZXNjcmlwdG9yIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJEZWZlcnJlZENvbnRleHRDcmVhdGVkIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJpbml0IiwiYnJlYWRjcnVtYnNIaWVyYXJjaHlNb2RlIiwiaXNDb250ZXh0RXhwZWN0ZWQiLCJleHRlbmRQYWdlRGVmaW5pdGlvbiIsInBhZ2VEZWZpbml0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImV4dGVuZE9iamVjdFBhZ2VEZWZpbml0aW9uIiwiY3JlYXRlRGVmZXJyZWRDb250ZXh0Iiwic1BhdGgiLCJwYXJhbWV0ZXJzIiwiYkFjdGlvbkNyZWF0ZSIsImxpc3RCaW5kaW5nIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIkNvbW1vblV0aWxzIiwiSU5MSU5FRURJVF9VUERBVEVHUk9VUElEIiwib1BhcmFtZXRlcnMiLCIkJGdyb3VwSWQiLCIkJHVwZGF0ZUdyb3VwSWQiLCJtZXRhTW9kZWwiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsIk1vZGVsSGVscGVyIiwiaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCIkc2VsZWN0IiwiYmluZExpc3QiLCJyZXBsYWNlIiwib1N0YXJ0VXBQYXJhbXMiLCJvQXBwQ29tcG9uZW50IiwiZ2V0Q29tcG9uZW50RGF0YSIsInN0YXJ0dXBQYXJhbWV0ZXJzIiwiZGF0YUZvckNyZWF0ZSIsInByZWZlcnJlZE1vZGUiLCJpbmNsdWRlcyIsIm9JbmJvdW5kUGFyYW1ldGVycyIsImdldFZpZXdEYXRhIiwiaW5ib3VuZFBhcmFtZXRlcnMiLCJjb250ZXh0UGF0aCIsImVudGl0eVNldCIsIk9iamVjdCIsImFzc2lnbiIsImRhdGEiLCJnZXRBZGRpdGlvbmFsUGFyYW1zRm9yQ3JlYXRlIiwiZ2V0Um9vdENvbnRyb2wiLCJnZXRDb250cm9sbGVyIiwiZWRpdEZsb3ciLCJjcmVhdGVEb2N1bWVudCIsImNyZWF0aW9uTW9kZSIsIlN5bmMiLCJjcmVhdGVBY3Rpb24iLCJiRnJvbURlZmVycmVkIiwic2VsZWN0ZWRDb250ZXh0cyIsInBhcmVudENvbnRleHQiLCJyZXF1ZXN0QXRMZWFzdCIsImZpbmFsbHkiLCJjYXRjaCIsInNldFZhcmlhbnRNYW5hZ2VtZW50Iiwic1ZhcmlhbnRNYW5hZ2VtZW50IiwiTG9nIiwiZXJyb3IiLCJzZXRQcm9wZXJ0eSIsImlzT3BlbkluRWRpdE1vZGUiLCJvcGVuSW5FZGl0TW9kZSIsIl9nZXRDb250cm9sbGVyTmFtZSIsIlRlbXBsYXRlQ29tcG9uZW50IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDb21wb25lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEluYm91bmRQYXJhbWV0ZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBPYmplY3RQYWdlRGVmaW5pdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL3RlbXBsYXRlcy9PYmplY3RQYWdlQ29udmVydGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBDb3JlTGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgeyBGaW5hbFBhZ2VEZWZpbml0aW9uIH0gZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvT2JqZWN0UGFnZS9FeHRlbmRQYWdlRGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgZXh0ZW5kT2JqZWN0UGFnZURlZmluaXRpb24gfSBmcm9tIFwic2FwL2ZlL3RlbXBsYXRlcy9PYmplY3RQYWdlL0V4dGVuZFBhZ2VEZWZpbml0aW9uXCI7XG5pbXBvcnQgdGVtcGxhdGVMaWIgZnJvbSBcInNhcC9mZS90ZW1wbGF0ZXMvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5cbmNvbnN0IFZhcmlhbnRNYW5hZ2VtZW50ID0gQ29yZUxpYnJhcnkuVmFyaWFudE1hbmFnZW1lbnQsXG5cdENyZWF0aW9uTW9kZSA9IENvcmVMaWJyYXJ5LkNyZWF0aW9uTW9kZTtcbmNvbnN0IFNlY3Rpb25MYXlvdXQgPSB0ZW1wbGF0ZUxpYi5PYmplY3RQYWdlLlNlY3Rpb25MYXlvdXQ7XG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuQ29tcG9uZW50XCIsIHsgbGlicmFyeTogXCJzYXAuZmUudGVtcGxhdGVzXCIsIG1hbmlmZXN0OiBcImpzb25cIiB9KVxuY2xhc3MgT2JqZWN0UGFnZUNvbXBvbmVudCBleHRlbmRzIFRlbXBsYXRlQ29tcG9uZW50IHtcblx0LyoqXG5cdCAqIERlZmluZXMgaWYgYW5kIG9uIHdoaWNoIGxldmVsIHZhcmlhbnRzIGNhbiBiZSBjb25maWd1cmVkOlxuXHQgKiBcdFx0Tm9uZTogbm8gdmFyaWFudCBjb25maWd1cmF0aW9uIGF0IGFsbFxuXHQgKiBcdFx0UGFnZTogb25lIHZhcmlhbnQgY29uZmlndXJhdGlvbiBmb3IgdGhlIHdob2xlIHBhZ2Vcblx0ICogXHRcdENvbnRyb2w6IHZhcmlhbnQgY29uZmlndXJhdGlvbiBvbiBjb250cm9sIGxldmVsXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic2FwLmZlLmNvcmUuVmFyaWFudE1hbmFnZW1lbnRcIixcblx0XHRkZWZhdWx0VmFsdWU6IFZhcmlhbnRNYW5hZ2VtZW50Lk5vbmVcblx0fSlcblx0dmFyaWFudE1hbmFnZW1lbnQ6IHR5cGVvZiBWYXJpYW50TWFuYWdlbWVudDtcblxuXHQvKipcblx0ICogRGVmaW5lcyBob3cgdGhlIHNlY3Rpb25zIGFyZSByZW5kZXJlZFxuXHQgKiBcdFx0UGFnZTogYWxsIHNlY3Rpb25zIGFyZSBzaG93biBvbiBvbmUgcGFnZVxuXHQgKiBcdFx0VGFiczogZWFjaCB0b3AtbGV2ZWwgc2VjdGlvbiBpcyBzaG93biBpbiBhbiBvd24gdGFiXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLlNlY3Rpb25MYXlvdXRcIixcblx0XHRkZWZhdWx0VmFsdWU6IFNlY3Rpb25MYXlvdXQuUGFnZVxuXHR9KVxuXHRzZWN0aW9uTGF5b3V0OiB0eXBlb2YgU2VjdGlvbkxheW91dDtcblxuXHQvKipcblx0ICogRW5hYmxlcyB0aGUgcmVsYXRlZCBhcHBzIGZlYXR1cmVzXG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0fSlcblx0c2hvd1JlbGF0ZWRBcHBzITogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRW5hYmxlcyB0aGUgJ01pY3Jvc29mdCBUZWFtcyA+IEFzIENhcmQnIG9wdGlvbiBpbiB0aGUgJ1NoYXJlJyBtZW51XG5cdCAqL1xuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwib2JqZWN0XCJcblx0fSlcblx0c2hhcmUhOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJvYmplY3RcIiB9KVxuXHRhZGRpdGlvbmFsU2VtYW50aWNPYmplY3RzITogb2JqZWN0O1xuXG5cdC8qKlxuXHQgKiBFbmFibGVzIHRoZSBlZGl0YWJsZSBvYmplY3QgcGFnZSBoZWFkZXJcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0ZGVmYXVsdFZhbHVlOiB0cnVlXG5cdH0pXG5cdGVkaXRhYmxlSGVhZGVyQ29udGVudCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIFNob3dzIGEgdGV4dCBpbnN0ZWFkIG9mIGFuIElsbHVzdHJhdGVkTWVzc2FnZSBpbiB0aGUgbm9EYXRhIGFnZ3JlZ2F0aW9uIG9mIFRhYmxlcyBvciBDaGFydHNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0ZGVmYXVsdFZhbHVlOiBmYWxzZVxuXHR9KVxuXHR1c2VUZXh0Rm9yTm9EYXRhTWVzc2FnZXMhOiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIHRoZSBwcm9wZXJ0aWVzIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBpbmJvdW5kIE5hdmlnYXRpb25cblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJvYmplY3RcIlxuXHR9KVxuXHRpbmJvdW5kUGFyYW1ldGVycyE6IG9iamVjdDtcblxuXHQvKipcblx0ICogRGVmaW5lcyBpZiBhbiBvYmplY3QgcGFnZSBzaG91bGQgYmUgb3BlbmVkIGluIGVkaXQgbW9kZVxuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRvcGVuSW5FZGl0TW9kZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuXHRAcHJvcGVydHkoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkXG5cdH0pXG5cdGVuYWJsZUxhenlMb2FkaW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0ZGVmYXVsdFZhbHVlOiB1bmRlZmluZWRcblx0fSlcblx0ZGlzYWJsZU9iamVjdFBhZ2VSZXF1ZXN0T3B0aW1pemF0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdHByaXZhdGUgRGVmZXJyZWRDb250ZXh0Q3JlYXRlZCA9IGZhbHNlO1xuXG5cdGluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy5icmVhZGNydW1ic0hpZXJhcmNoeU1vZGUgPSB0aGlzLmJyZWFkY3J1bWJzSGllcmFyY2h5TW9kZSA/PyBcIm9iamVjdE5hdmlnYXRpb25cIjtcblx0XHRzdXBlci5pbml0KCk7XG5cdH1cblxuXHRpc0NvbnRleHRFeHBlY3RlZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGV4dGVuZFBhZ2VEZWZpbml0aW9uKHBhZ2VEZWZpbml0aW9uOiBPYmplY3RQYWdlRGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IEZpbmFsUGFnZURlZmluaXRpb24ge1xuXHRcdHJldHVybiBleHRlbmRPYmplY3RQYWdlRGVmaW5pdGlvbihwYWdlRGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG5cdH1cblxuXHQvLyBUT0RPOiB0aGlzIHNob3VsZCBiZSBpZGVhbGx5IGJlIGhhbmRsZWQgYnkgdGhlIGVkaXRmbG93L3JvdXRpbmcgd2l0aG91dCB0aGUgbmVlZCB0byBoYXZlIHRoaXMgbWV0aG9kIGluIHRoZVxuXHQvLyBvYmplY3QgcGFnZSAtIGZvciBub3cga2VlcCBpdCBoZXJlXG5cdGNyZWF0ZURlZmVycmVkQ29udGV4dChcblx0XHRzUGF0aDogc3RyaW5nLFxuXHRcdHBhcmFtZXRlcnM6IHsgbGlzdEJpbmRpbmc/OiBPRGF0YUxpc3RCaW5kaW5nOyBwYXJlbnRDb250ZXh0PzogQ29udGV4dDsgZGF0YT86IG9iamVjdDsgcmVxdWVzdEF0TGVhc3Q/OiBzdHJpbmdbXSB9LFxuXHRcdGJBY3Rpb25DcmVhdGU6IGJvb2xlYW5cblx0KTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLkRlZmVycmVkQ29udGV4dENyZWF0ZWQpIHtcblx0XHRcdHRoaXMuRGVmZXJyZWRDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG5cblx0XHRcdGlmICghcGFyYW1ldGVycy5saXN0QmluZGluZyB8fCBwYXJhbWV0ZXJzLmxpc3RCaW5kaW5nLmdldFVwZGF0ZUdyb3VwSWQoKSA9PT0gQ29tbW9uVXRpbHMuSU5MSU5FRURJVF9VUERBVEVHUk9VUElEKSB7XG5cdFx0XHRcdGNvbnN0IG9QYXJhbWV0ZXJzOiB7ICQkZ3JvdXBJZDogc3RyaW5nOyAkJHVwZGF0ZUdyb3VwSWQ6IHN0cmluZzsgJHNlbGVjdD86IHN0cmluZyB9ID0ge1xuXHRcdFx0XHRcdCQkZ3JvdXBJZDogXCIkYXV0by5IZXJvZXNcIixcblx0XHRcdFx0XHQkJHVwZGF0ZUdyb3VwSWQ6IFwiJGF1dG9cIlxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRcdGlmIChNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChtZXRhTW9kZWwpKSB7XG5cdFx0XHRcdFx0b1BhcmFtZXRlcnMuJHNlbGVjdCA9IFwiRHJhZnRBZG1pbmlzdHJhdGl2ZURhdGEvRHJhZnRBZG1pbmlzdHJhdGl2ZVVzZXJcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRwYXJhbWV0ZXJzLmxpc3RCaW5kaW5nID0gdGhpcy5nZXRNb2RlbCgpLmJpbmRMaXN0KHNQYXRoLnJlcGxhY2UoXCIoLi4uKVwiLCBcIlwiKSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb1BhcmFtZXRlcnMpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBvU3RhcnRVcFBhcmFtcyA9IHRoaXMub0FwcENvbXBvbmVudD8uZ2V0Q29tcG9uZW50RGF0YSgpPy5zdGFydHVwUGFyYW1ldGVycztcblx0XHRcdGxldCBkYXRhRm9yQ3JlYXRlO1xuXHRcdFx0aWYgKG9TdGFydFVwUGFyYW1zPy5wcmVmZXJyZWRNb2RlPy5bMF0uaW5jbHVkZXMoXCJjcmVhdGVcIikgPT09IHRydWUpIHtcblx0XHRcdFx0Y29uc3Qgb0luYm91bmRQYXJhbWV0ZXJzID0gdGhpcy5nZXRWaWV3RGF0YSgpLmluYm91bmRQYXJhbWV0ZXJzIGFzIFJlY29yZDxzdHJpbmcsIEluYm91bmRQYXJhbWV0ZXI+IHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1vZGVsKCk/LmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IHRoaXMuY29udGV4dFBhdGggfHwgYC8ke3RoaXMuZW50aXR5U2V0fWA7XG5cdFx0XHRcdGRhdGFGb3JDcmVhdGUgPSBPYmplY3QuYXNzaWduKFxuXHRcdFx0XHRcdHt9LFxuXHRcdFx0XHRcdHBhcmFtZXRlcnMuZGF0YSxcblx0XHRcdFx0XHRDb21tb25VdGlscy5nZXRBZGRpdGlvbmFsUGFyYW1zRm9yQ3JlYXRlKG9TdGFydFVwUGFyYW1zLCBvSW5ib3VuZFBhcmFtZXRlcnMsIG1ldGFNb2RlbCwgY29udGV4dFBhdGgpXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhRm9yQ3JlYXRlID0gcGFyYW1ldGVycy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBmb3Igbm93IHdhaXQgdW50aWwgdGhlIHZpZXcgYW5kIHRoZSBjb250cm9sbGVyIGlzIGNyZWF0ZWRcblx0XHRcdHRoaXMuZ2V0Um9vdENvbnRyb2woKVxuXHRcdFx0XHQuZ2V0Q29udHJvbGxlcigpXG5cdFx0XHRcdC5lZGl0Rmxvdy5jcmVhdGVEb2N1bWVudChwYXJhbWV0ZXJzLmxpc3RCaW5kaW5nLCB7XG5cdFx0XHRcdFx0Y3JlYXRpb25Nb2RlOiBDcmVhdGlvbk1vZGUuU3luYyxcblx0XHRcdFx0XHRjcmVhdGVBY3Rpb246IGJBY3Rpb25DcmVhdGUsXG5cdFx0XHRcdFx0ZGF0YTogZGF0YUZvckNyZWF0ZSxcblx0XHRcdFx0XHRiRnJvbURlZmVycmVkOiB0cnVlLFxuXHRcdFx0XHRcdHNlbGVjdGVkQ29udGV4dHM6IHBhcmFtZXRlcnMucGFyZW50Q29udGV4dCA/IFtwYXJhbWV0ZXJzLnBhcmVudENvbnRleHRdIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdHJlcXVlc3RBdExlYXN0OiBwYXJhbWV0ZXJzLnJlcXVlc3RBdExlYXN0XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLkRlZmVycmVkQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHQvLyBEbyBOb3RoaW5nID9cblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0c2V0VmFyaWFudE1hbmFnZW1lbnQoc1ZhcmlhbnRNYW5hZ2VtZW50OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAoc1ZhcmlhbnRNYW5hZ2VtZW50ID09PSBWYXJpYW50TWFuYWdlbWVudC5QYWdlKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJPYmplY3RQYWdlIGRvZXMgbm90IHN1cHBvcnQgUGFnZS1sZXZlbCB2YXJpYW50IG1hbmFnZW1lbnQgeWV0XCIpO1xuXHRcdFx0c1ZhcmlhbnRNYW5hZ2VtZW50ID0gVmFyaWFudE1hbmFnZW1lbnQuTm9uZTtcblx0XHR9XG5cblx0XHR0aGlzLnNldFByb3BlcnR5KFwidmFyaWFudE1hbmFnZW1lbnRcIiwgc1ZhcmlhbnRNYW5hZ2VtZW50KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgb3BlbkluRWRpdE1vZGUgaXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Qgc2V0dGluZ3Ncblx0ICogQHJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgZWRpdCBtb2RlIGlzIHNldCBmb3IgYW4gb2JqZWN0IHBhZ2Vcblx0ICovXG5cblx0aXNPcGVuSW5FZGl0TW9kZSgpOiBib29sZWFuIHtcblx0XHRjb25zdCBvcGVuSW5FZGl0TW9kZSA9IHRoaXMuZ2V0Vmlld0RhdGEoKS5vcGVuSW5FZGl0TW9kZTtcblx0XHRyZXR1cm4gb3BlbkluRWRpdE1vZGUgPT09IHRydWU7XG5cdH1cblxuXHRfZ2V0Q29udHJvbGxlck5hbWUoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gXCJzYXAuZmUudGVtcGxhdGVzLk9iamVjdFBhZ2UuT2JqZWN0UGFnZUNvbnRyb2xsZXJcIjtcblx0fVxufVxuXG5leHBv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
@@ -148,10 +148,12 @@ class ObjectPageComponent extends TemplateComponent {
148
148
  let dataForCreate;
149
149
  if (oStartUpParams?.preferredMode?.[0].includes("create") === true) {
150
150
  const oInboundParameters = this.getViewData().inboundParameters as Record<string, InboundParameter> | undefined;
151
+ const metaModel = this.getModel()?.getMetaModel();
152
+ const contextPath = this.contextPath || `/${this.entitySet}`;
151
153
  dataForCreate = Object.assign(
152
154
  {},
153
155
  parameters.data,
154
- CommonUtils.getAdditionalParamsForCreate(oStartUpParams, oInboundParameters)
156
+ CommonUtils.getAdditionalParamsForCreate(oStartUpParams, oInboundParameters, metaModel, contextPath)
155
157
  );
156
158
  } else {
157
159
  dataForCreate = parameters.data;
@@ -276,7 +276,11 @@ sap.ui.define(["sap/base/Log", "sap/base/util/uid", "sap/fe/base/ClassSupport",
276
276
  _proto._showMessages = function _showMessages(messages) {
277
277
  let origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "Custom";
278
278
  try {
279
- this.removeCustomMessageStrip();
279
+ if (messages.length > 0) {
280
+ // Only if there are messages to show, we remove custom message strip.
281
+ // This way we ensure that we don't interfere with custom message strip's lifecyle until there are new messages to show in the standard message strip.
282
+ this.removeCustomMessageStrip();
283
+ }
280
284
  const view = this._view;
281
285
  const internalModel = view.getModel("internal");
282
286
  const messagestripInternalModelContext = internalModel.bindContext(this._getMessageStripBindingContextPath()).getBoundContext();
@@ -505,4 +509,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/uid", "sap/fe/base/ClassSupport",
505
509
  }(ExtensionAPI)) || _class);
506
510
  return ObjectPageExtensionAPI;
507
511
  }, false);
508
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3RQYWdlRXh0ZW5zaW9uQVBJIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2NsYXNzIiwiX0V4dGVuc2lvbkFQSSIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJyZWZyZXNoIiwidlBhdGgiLCJvQmluZGluZ0NvbnRleHQiLCJfdmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJvU2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwib1NpZGVFZmZlY3RzIiwidGFyZ2V0UHJvcGVydGllcyIsInRhcmdldEVudGl0aWVzIiwidW5kZWZpbmVkIiwicHVzaCIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiYWxsUGF0aHMiLCJBcnJheSIsImlzQXJyYXkiLCJvd25lckNvbXBvbmVudCIsIl9jb250cm9sbGVyIiwiZ2V0T3duZXJDb21wb25lbnQiLCJjb250ZXh0UGF0aCIsImdldENvbnRleHRQYXRoIiwiZ2V0RW50aXR5U2V0IiwicGF0aCIsImtpbmQiLCJnZXRPYmplY3QiLCJyZWplY3QiLCJyZXF1ZXN0U2lkZUVmZmVjdHMiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwic1RhYmxlSWQiLCJ0YWJsZSIsImJ5SWQiLCJpc0EiLCJnZXRQYXJlbnQiLCJzaG93U2lkZUNvbnRlbnQiLCJzU3ViU2VjdGlvbktleSIsImJTaG93Iiwic0Jsb2NrSUQiLCJnZXRTaWRlQ29udGVudExheW91dElEIiwib0Jsb2NrIiwiYkJsb2NrU3RhdGUiLCJnZXRTaG93U2lkZUNvbnRlbnQiLCJzZXRTaG93U2lkZUNvbnRlbnQiLCJfZ2V0TWVzc2FnZVN0cmlwQmluZGluZ0NvbnRleHRQYXRoIiwiaW50ZXJuYWxNb2RlbENvbnRleHRQYXRoIiwiZ2V0UGF0aCIsInZpZXdDb250ZXh0UGF0aCIsInJlcGxhY2UiLCJzaG93TWVzc2FnZXMiLCJtZXNzYWdlc09yU3RyaXAiLCJfc2hvd01lc3NhZ2VzIiwic2hvd0N1c3RvbU1lc3NhZ2VTdHJpcCIsIm1lc3NhZ2VTdHJpcCIsIm1lc3NhZ2VTdHJpcEludGVybmFsTW9kZWxDb250ZXh0IiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJyZW1vdmVDdXN0b21NZXNzYWdlU3RyaXAiLCJzZXRQcm9wZXJ0eSIsImN1c3RvbU1lc3NhZ2VTdHJpcElkIiwiZ2V0SWQiLCJ1aWQiLCJhZGRTdHlsZUNsYXNzIiwiYWRkQ3VzdG9tTWVzc2FnZVN0cmlwVG9QYWdlIiwibWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQiLCJoZWFkZXJDb250YWluZXIiLCJpbnNlcnRJbnRvQWdncmVnYXRpb24iLCJhZ2dyZWdhdGlvbk5hbWUiLCJjb250cm9sVG9JbnNlcnQiLCJhZ2dyZWdhdGlvbkNvbnRlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsImNvbnRlbnRBcnJheSIsImluc2VydEFnZ3JlZ2F0aW9uIiwibGVuZ3RoIiwiY2xvbmUiLCJyZW1vdmVGcm9tQWdncmVnYXRpb24iLCJpZE1hdGNoZXIiLCJjb250cm9sVG9SZW1vdmUiLCJmaW5kIiwiY29udHJvbCIsInJlbW92ZUFnZ3JlZ2F0aW9uIiwiZGVzdHJveSIsImNvbnRyb2xJZCIsImluY2x1ZGVzIiwiY3JlYXRlTWVzc2FnZUl0ZW0iLCJtZXNzYWdlIiwic0Rlc2NyaXB0aW9uVXJsIiwiZ2V0RGVzY3JpcHRpb25VcmwiLCJNZXNzYWdlSXRlbSIsInRpdGxlIiwiZ2V0TWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0RGVzY3JpcHRpb24iLCJ0eXBlIiwiZ2V0VHlwZSIsImxvbmd0ZXh0VXJsIiwic3VidGl0bGUiLCJnZXRBZGRpdGlvbmFsVGV4dCIsImdyb3VwTmFtZSIsImFjdGl2ZVRpdGxlIiwiZ2V0Q29udHJvbElkcyIsImNyZWF0ZU1lc3NhZ2VQb3BvdmVyIiwibWVzc2FnZUl0ZW1zIiwicG9wb3ZlciIsIk1lc3NhZ2VQb3BvdmVyIiwiaXRlbXMiLCJzaG93TWVzc2FnZVBvcG92ZXIiLCJldmVudCIsIm1lc3NhZ2VJdGVtIiwic291cmNlQ29udHJvbCIsImdldFNvdXJjZSIsImFkZERlcGVuZGVudCIsIm9wZW5CeSIsIm1lc3NhZ2VzIiwib3JpZ2luIiwidmlldyIsImludGVybmFsTW9kZWwiLCJyZXNvdXJjZU1vZGVsIiwiUmVzb3VyY2VNb2RlbEhlbHBlciIsImdldFJlc291cmNlTW9kZWwiLCJoYXNEZXNjcmlwdGlvblVybCIsImlzRWRpdE1vZGUiLCJnZXRJc0VkaXRhYmxlIiwib2JqZWN0UGFnZSIsImdldENvbnRlbnQiLCJoZWFkZXJUaXRsZSIsImdldEhlYWRlclRpdGxlIiwiYWxsU3RyaXBzIiwiZ2V0U25hcHBlZENvbnRlbnQiLCJnZXRFeHBhbmRlZENvbnRlbnQiLCJmaWx0ZXIiLCJpdGVtIiwiTWVzc2FnZVN0cmlwIiwiZm9yRWFjaCIsInN0cmlwIiwiZ2V0TGluayIsImRlc3Ryb3lMaW5rIiwibGluayIsIkxpbmsiLCJ0ZXh0IiwiZ2V0VGV4dCIsInByZXNzIiwic2V0TGluayIsImVyciIsIkxvZyIsIndhcm5pbmciLCJtZXNzYWdlU3RhdHMiLCJFcnJvciIsImlkIiwiY291bnQiLCJXYXJuaW5nIiwiSW5mb3JtYXRpb24iLCJyZWR1Y2UiLCJhY2MiLCJjdXJyZW50VmFsdWUiLCJjdXJyZW50VHlwZSIsInNldFR5cGUiLCJNZXNzYWdlIiwiTWVzc2FnZVR5cGUiLCJzZXRNZXNzYWdlIiwiSW52aXNpYmxlTWVzc2FnZSIsImdldEluc3RhbmNlIiwiYW5ub3VuY2UiLCJJbnZpc2libGVNZXNzYWdlTW9kZSIsIkFzc2VydGl2ZSIsImVycm9yIiwiaGlkZU1lc3NhZ2UiLCJzZXRSZWNvbW1lbmRhdGlvbnMiLCJkYXRhIiwicmVjb21tZW5kYXRpb25IZWxwZXIiLCJ0cmFuc2Zvcm1SZWNvbW1lbmRhdGlvbnNGb3JJbnRlcm5hbFN0b3JhZ2UiLCJzZXRBc1NlY3Rpb25UaXRsZU93bmVyIiwic2VjdGlvbiIsIm9yaWdpbmFsQ29udHJvbCIsInJldXNlQ29tcG9uZW50IiwiY29udGFpbmVyIiwiY29udHJvbFBhcmVudCIsImdldFZpc2libGVTdWJTZWN0aW9ucyIsImFkanVzdEZvclNpbmdsZUNvbnRlbnQiLCJtdWx0aXBsZVN1YlNlY3Rpb25zV2l0aFJldXNlQ29tcG9uZW50Iiwic2hvd05hdmlnYXRpb25FcnJvciIsInNUaXRsZSIsIk1lc3NhZ2VCb3giLCJuYXZpZ2F0ZVRvU3ViU2VjdGlvbiIsInNlY3Rpb25PclN1YlNlY3Rpb25JZCIsIm9iamVjdFBhZ2VMYXlvdXQiLCJ0YXJnZXRTdWJTZWN0aW9uIiwic3ViU2VjdGlvbnMiLCJnZXRTdWJTZWN0aW9ucyIsImdldFZpc2libGUiLCJzdWJzZWN0aW9uRnVsbElkIiwic2V0U2VsZWN0ZWRTZWN0aW9uIiwicGFyZW50U2VjdGlvbiIsImZpcmVOYXZpZ2F0ZSIsInN1YlNlY3Rpb24iLCJFeHRlbnNpb25BUEkiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB1aWQgZnJvbSBcInNhcC9iYXNlL3V0aWwvdWlkXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IGdldFNpZGVDb250ZW50TGF5b3V0SUQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCB0eXBlIHsgSW5Db21wbGV0ZW5lc3NJbmZvVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1JlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgeyByZWNvbW1lbmRhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1JlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBSZXVzZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvUmV1c2VDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNUYXJnZXRUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIFNlY3Rpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvU2VjdGlvblwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IE1lc3NhZ2VJdGVtIGZyb20gXCJzYXAvbS9NZXNzYWdlSXRlbVwiO1xuaW1wb3J0IE1lc3NhZ2VQb3BvdmVyIGZyb20gXCJzYXAvbS9NZXNzYWdlUG9wb3ZlclwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgeyBJbnZpc2libGVNZXNzYWdlTW9kZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNTaWRlQ29udGVudCBmcm9tIFwic2FwL3VpL2xheW91dC9EeW5hbWljU2lkZUNvbnRlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YVY0Q29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VEeW5hbWljSGVhZGVyVGl0bGUgZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VEeW5hbWljSGVhZGVyVGl0bGVcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VMYXlvdXQgZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VMYXlvdXRcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VTZWN0aW9uIGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlU2VjdGlvblwiO1xuaW1wb3J0IHR5cGUgT2JqZWN0UGFnZVN1YlNlY3Rpb24gZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VTdWJTZWN0aW9uXCI7XG5cbi8qKlxuICogRXh0ZW5zaW9uIEFQSSBmb3Igb2JqZWN0IHBhZ2VzIG9uIFNBUCBGaW9yaSBlbGVtZW50cyBmb3IgT0RhdGEgVjQuXG4gKlxuICogVG8gY29ycmVjdGx5IGludGVncmF0ZSB5b3VyIGFwcCBleHRlbnNpb24gY29kaW5nIHdpdGggU0FQIEZpb3JpIGVsZW1lbnRzLCB1c2Ugb25seSB0aGUgZXh0ZW5zaW9uQVBJIG9mIFNBUCBGaW9yaSBlbGVtZW50cy4gRG9uJ3QgYWNjZXNzIG9yIG1hbmlwdWxhdGUgY29udHJvbHMsIHByb3BlcnRpZXMsIG1vZGVscywgb3Igb3RoZXIgaW50ZXJuYWwgb2JqZWN0cyBjcmVhdGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgZnJhbWV3b3JrLlxuICogQHB1YmxpY1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQGZpbmFsXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUElcIilcbmNsYXNzIE9iamVjdFBhZ2VFeHRlbnNpb25BUEkgZXh0ZW5kcyBFeHRlbnNpb25BUEkge1xuXHQvKipcblx0ICogSUQgb2YgdGhlIGFjdGl2ZSBjdXN0b20gTWVzc2FnZVN0cmlwIGZvciBwcm9ncmFtbWF0aWMgcmVtb3ZhbC5cblx0ICovXG5cdHByaXZhdGUgY3VzdG9tTWVzc2FnZVN0cmlwSWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFJlZnJlc2hlcyBlaXRoZXIgdGhlIHdob2xlIG9iamVjdCBwYWdlIG9yIG9ubHkgcGFydHMgb2YgaXQuXG5cdCAqIEBwYXJhbSBbdlBhdGhdIFBhdGggb3IgYXJyYXkgb2YgcGF0aHMgcmVmZXJyaW5nIHRvIGVudGl0aWVzIG9yIHByb3BlcnRpZXMgdG8gYmUgcmVmcmVzaGVkLlxuXHQgKiBJZiBvbWl0dGVkLCB0aGUgd2hvbGUgb2JqZWN0IHBhZ2UgaXMgcmVmcmVzaGVkLiBUaGUgcGF0aCBcIlwiIHJlZnJlc2hlcyB0aGUgZW50aXR5IGFzc2lnbmVkIHRvIHRoZSBvYmplY3QgcGFnZVxuXHQgKiB3aXRob3V0IG5hdmlnYXRpb24uXG5cdCAqIEByZXR1cm5zIFJlc29sdmVkIG9uY2UgdGhlIGRhdGEgaXMgcmVmcmVzaGVkIG9yIHJlamVjdGVkIGlmIHRoZSByZXF1ZXN0IGZhaWxlZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyByZWZyZXNoKHZQYXRoPzogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvQmluZGluZ0NvbnRleHQgPSB0aGlzLl92aWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0aWYgKCFvQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdC8vIG5vdGhpbmcgdG8gYmUgcmVmcmVzaGVkIC0gZG8gbm90IGJsb2NrIHRoZSBhcHAhXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldyksXG5cdFx0XHRvU2lkZUVmZmVjdHNTZXJ2aWNlID0gb0FwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKSxcblx0XHRcdG9NZXRhTW9kZWwgPSBvQmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdG9TaWRlRWZmZWN0czogU2lkZUVmZmVjdHNUYXJnZXRUeXBlID0ge1xuXHRcdFx0XHR0YXJnZXRQcm9wZXJ0aWVzOiBbXSxcblx0XHRcdFx0dGFyZ2V0RW50aXRpZXM6IFtdXG5cdFx0XHR9O1xuXG5cdFx0aWYgKHZQYXRoID09PSB1bmRlZmluZWQgfHwgdlBhdGggPT09IG51bGwpIHtcblx0XHRcdC8vIHdlIGp1c3QgYWRkIGFuIGVtcHR5IHBhdGggd2hpY2ggc2hvdWxkIHJlZnJlc2ggdGhlIHBhZ2Ugd2l0aCBhbGwgZGVwZW5kZW50IGJpbmRpbmdzXG5cdFx0XHRvU2lkZUVmZmVjdHMudGFyZ2V0RW50aXRpZXMucHVzaCh7XG5cdFx0XHRcdCROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBcIlwiXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYWxsUGF0aHMgPSBBcnJheS5pc0FycmF5KHZQYXRoKSA/IHZQYXRoIDogW3ZQYXRoXTtcblx0XHRcdGNvbnN0IG93bmVyQ29tcG9uZW50ID0gdGhpcy5fY29udHJvbGxlci5nZXRPd25lckNvbXBvbmVudCgpIGFzIHVua25vd24gYXMge1xuXHRcdFx0XHRnZXRDb250ZXh0UGF0aDogKCkgPT4gc3RyaW5nO1xuXHRcdFx0XHRnZXRFbnRpdHlTZXQ6ICgpID0+IHN0cmluZztcblx0XHRcdH07XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IG93bmVyQ29tcG9uZW50LmdldENvbnRleHRQYXRoKCkgfHwgYC8ke293bmVyQ29tcG9uZW50LmdldEVudGl0eVNldCgpfWA7XG5cblx0XHRcdGZvciAoY29uc3QgcGF0aCBvZiBhbGxQYXRocykge1xuXHRcdFx0XHRpZiAocGF0aCA9PT0gXCJcIikge1xuXHRcdFx0XHRcdC8vIGFuIGVtcHR5IHBhdGggc2hhbGwgcmVmcmVzaCB0aGUgZW50aXR5IHdpdGhvdXQgZGVwZW5kZW5jaWVzIHdoaWNoIG1lYW5zICogZm9yIHRoZSBtb2RlbFxuXHRcdFx0XHRcdG9TaWRlRWZmZWN0cy50YXJnZXRQcm9wZXJ0aWVzLnB1c2goXCIqXCIpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGtpbmQgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtjb250ZXh0UGF0aH0vJHtwYXRofS8ka2luZGApO1xuXG5cdFx0XHRcdFx0aWYgKGtpbmQgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdFx0XHRcdG9TaWRlRWZmZWN0cy50YXJnZXRFbnRpdGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0JE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHBhdGhcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoa2luZCkge1xuXHRcdFx0XHRcdFx0b1NpZGVFZmZlY3RzLnRhcmdldFByb3BlcnRpZXMucHVzaChwYXRoKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGAke3BhdGh9IGlzIG5vdCBhIHZhbGlkIHBhdGggdG8gYmUgcmVmcmVzaGVkYCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvU2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhbLi4ub1NpZGVFZmZlY3RzLnRhcmdldEVudGl0aWVzLCAuLi5vU2lkZUVmZmVjdHMudGFyZ2V0UHJvcGVydGllc10sIG9CaW5kaW5nQ29udGV4dCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgbGlzdCBlbnRyaWVzIGN1cnJlbnRseSBzZWxlY3RlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gc1RhYmxlSWQgVGhlIElEIGlkZW50aWZ5aW5nIHRoZSB0YWJsZSB0aGUgc2VsZWN0ZWQgY29udGV4dCBpcyByZXF1ZXN0ZWQgZm9yXG5cdCAqIEByZXR1cm5zIEFycmF5IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIGNvbnRleHRzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldFNlbGVjdGVkQ29udGV4dHMoc1RhYmxlSWQ6IHN0cmluZyk6IE9EYXRhVjRDb250ZXh0W10ge1xuXHRcdGxldCB0YWJsZSA9IHRoaXMuX3ZpZXcuYnlJZChzVGFibGVJZCk7XG5cdFx0aWYgKHRhYmxlPy5pc0E8VGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0dGFibGUgPSB0YWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSTtcblx0XHR9XG5cdFx0aWYgKHRhYmxlPy5pc0EoXCJzYXAuZmUubWFjcm9zLlRhYmxlXCIpKSB7XG5cdFx0XHRyZXR1cm4gKHRhYmxlIGFzIFRhYmxlQVBJKS5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cdFx0fVxuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBvciBoaWRlcyB0aGUgc2lkZSBjb250ZW50IG9mIGFuIG9iamVjdCBwYWdlLlxuXHQgKiBAcGFyYW0gc1N1YlNlY3Rpb25LZXkgS2V5IG9mIHRoZSBzaWRlIGNvbnRlbnQgZnJhZ21lbnQgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuanNvblxuXHQgKiBAcGFyYW0gW2JTaG93XSBPcHRpb25hbCBCb29sZWFuIGZsYWcgdG8gc2hvdyBvciBoaWRlIHRoZSBzaWRlIGNvbnRlbnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2hvd1NpZGVDb250ZW50KHNTdWJTZWN0aW9uS2V5OiBzdHJpbmcsIGJTaG93PzogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IHNCbG9ja0lEID0gZ2V0U2lkZUNvbnRlbnRMYXlvdXRJRChzU3ViU2VjdGlvbktleSksXG5cdFx0XHRvQmxvY2sgPSB0aGlzLl92aWV3LmJ5SWQoc0Jsb2NrSUQpLFxuXHRcdFx0YkJsb2NrU3RhdGUgPSBiU2hvdyA9PT0gdW5kZWZpbmVkID8gIShvQmxvY2sgYXMgRHluYW1pY1NpZGVDb250ZW50KS5nZXRTaG93U2lkZUNvbnRlbnQoKSA6IGJTaG93O1xuXHRcdChvQmxvY2sgYXMgRHluYW1pY1NpZGVDb250ZW50KS5zZXRTaG93U2lkZUNvbnRlbnQoYkJsb2NrU3RhdGUsIGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBib3VuZCBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9iamVjdCBwYWdlLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0IGJvdW5kIHRvIHRoZSBvYmplY3QgcGFnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRCaW5kaW5nQ29udGV4dCgpOiBDb250ZXh0IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuX3ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZCB0aGUgaW50ZXJuYWwgY29udGV4dCBwYXRoIG9mIHRoZSBNZXNzYWdlU3RyaXAgY29udHJvbC5cblx0ICogQHJldHVybnMgVGhlIGludGVybmFsIGJpbmRpbmcgY29udGV4dCBwYXRoIGZvciB0aGUgbWVzc2FnZVN0cmlwXG5cdCAqL1xuXHRfZ2V0TWVzc2FnZVN0cmlwQmluZGluZ0NvbnRleHRQYXRoKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHRQYXRoID0gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgdmlld0NvbnRleHRQYXRoID0gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIGludGVybmFsTW9kZWxDb250ZXh0UGF0aCAmJiB2aWV3Q29udGV4dFBhdGhcblx0XHRcdD8gYCR7aW50ZXJuYWxNb2RlbENvbnRleHRQYXRofS9NZXNzYWdlU3RyaXAvJHt2aWV3Q29udGV4dFBhdGgucmVwbGFjZSgvXFwvL2csIFwiLVwiKX1gXG5cdFx0XHQ6IFwiXCI7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcGxheXMgdGhlIG1lc3NhZ2Ugc3RyaXAgYmV0d2VlbiB0aGUgdGl0bGUgYW5kIHRoZSBoZWFkZXIgb2YgdGhlIE9iamVjdFBhZ2UuIElmIG9ubHkgb25lIG1lc3NhZ2UgaXMgcHJvdmlkZWQsIGl0IGlzIGRpc3BsYXllZCBkaXJlY3RseSBpbiB0aGUgbWVzc2FnZSBzdHJpcC4gSWYgbXVsdGlwbGUgbWVzc2FnZXMgYXJlIHByb3ZpZGVkLCB0aGV5IGFyZSBwcmlvcml0aXplZCBieSB0aGUgb3JkZXI6IEVycm9yLCBXYXJuaW5nLCBhbmQgSW5mb3JtYXRpb24gYW5kIGEgY29ycmVzcG9uZGluZyBnZW5lcmljIHRleHQgaXMgZGlzcGxheWVkOlxuXHQgKiAtIEVycm9yOiBcIlRoZSBvYmplY3QgY29udGFpbnMgZXJyb3JzLlwiXG5cdCAqIC0gV2FybmluZzogXCJUaGUgb2JqZWN0IGNvbnRhaW5zIHdhcm5pbmdzLlwiXG5cdCAqIC0gSW5mb3JtYXRpb246IFwiVGhlIG9iamVjdCBjb250YWlucyBtZXNzYWdlcy5cIlxuXHQgKiBJZiBhIGJhY2stZW5kIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgd2l0aCBhIHRhcmdldCBwb2ludGluZyB0byB0aGUgT2JqZWN0IFBhZ2UsIGl0IGlzIGRpc3BsYXllZCBpbiB0aGUgbWVzc2FnZSBzdHJpcCwgb3ZlcnJpZGluZyBhbnkgZXhpc3RpbmcgbWVzc2FnZSBvciBtZXNzYWdlIHN0cmlwLiBJZiBtdWx0aXBsZSBiYWNrLWVuZCBtZXNzYWdlcyBhcmUgcmVjZWl2ZWQsIHRoZSBtZXNzYWdlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgaXMgZGlzcGxheWVkIHdpdGggYSBnZW5lcmljIHRleHQgYXMgZGVzY3JpYmVkIGFib3ZlLlxuXHQgKiBAcGFyYW0gIG1lc3NhZ2VzT3JTdHJpcCBUaGUgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgb3IgYSBNZXNzYWdlU3RyaXAgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzaG93TWVzc2FnZXMobWVzc2FnZXNPclN0cmlwOiBNZXNzYWdlW10gfCBNZXNzYWdlU3RyaXApOiB2b2lkIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlc09yU3RyaXApKSB7XG5cdFx0XHR0aGlzLl9zaG93TWVzc2FnZXMobWVzc2FnZXNPclN0cmlwKTtcblx0XHR9IGVsc2UgaWYgKG1lc3NhZ2VzT3JTdHJpcC5pc0EoXCJzYXAubS5NZXNzYWdlU3RyaXBcIikpIHtcblx0XHRcdHRoaXMuc2hvd0N1c3RvbU1lc3NhZ2VTdHJpcChtZXNzYWdlc09yU3RyaXApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93cyBhIGN1c3RvbSBNZXNzYWdlU3RyaXAgY29udHJvbCBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24uXG5cdCAqIEVuc3VyZXMgbXV0dWFsIGV4Y2x1c2l2aXR5IHdpdGggdGhlIE1lc3NhZ2VTdHJpcCByZW5kZXJlZCBieSB0aGUgb2JqZWN0IHBhZ2Ugdmlldy5cblx0ICogQHBhcmFtIG1lc3NhZ2VTdHJpcCBNZXNzYWdlU3RyaXAgY29udHJvbFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBzaG93Q3VzdG9tTWVzc2FnZVN0cmlwKG1lc3NhZ2VTdHJpcDogTWVzc2FnZVN0cmlwKTogdm9pZCB7XG5cdFx0Y29uc3QgbWVzc2FnZVN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLl92aWV3XG5cdFx0XHQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKVxuXHRcdFx0LmJpbmRDb250ZXh0KHRoaXMuX2dldE1lc3NhZ2VTdHJpcEJpbmRpbmdDb250ZXh0UGF0aCgpKVxuXHRcdFx0LmdldEJvdW5kQ29udGV4dCgpO1xuXHRcdGlmICghbWVzc2FnZVN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLnJlbW92ZUN1c3RvbU1lc3NhZ2VTdHJpcCgpOyAvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGN1c3RvbSBtZXNzYWdlIHN0cmlwIGJlZm9yZSBhZGRpbmcgbmV3IG9uZVxuXG5cdFx0Ly8gSGlkZSBmcmFtZXdvcmsgZ2VuZXJhdGVkIG1lc3NhZ2Ugc3RyaXAgdG8gZW5zdXJlIG11dHVhbCBleGNsdXNpdml0eVxuXHRcdG1lc3NhZ2VTdHJpcEludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiT1BCYWNrZW5kTWVzc2FnZVZpc2libGVcIiwgZmFsc2UpO1xuXHRcdG1lc3NhZ2VTdHJpcEludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiT1BDdXN0b21NZXNzYWdlVmlzaWJsZVwiLCBmYWxzZSk7XG5cblx0XHR0aGlzLmN1c3RvbU1lc3NhZ2VTdHJpcElkID0gbWVzc2FnZVN0cmlwLmdldElkKCkgfHwgdWlkKCk7IC8vIFN0b3JlIHJlZmVyZW5jZSBmb3IgcHJvZ3JhbW1hdGljIHJlbW92YWxcblxuXHRcdG1lc3NhZ2VTdHJpcC5hZGRTdHlsZUNsYXNzKFwic2FwVWlTbWFsbE1hcmdpblRvcFwiKTtcblx0XHR0aGlzLmFkZEN1c3RvbU1lc3NhZ2VTdHJpcFRvUGFnZShtZXNzYWdlU3RyaXAsIG1lc3NhZ2VTdHJpcEludGVybmFsTW9kZWxDb250ZXh0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgY3VzdG9tIE1lc3NhZ2VTdHJpcCB0byB0aGUgcGFnZSBsYXlvdXQgaW4gdGhlIGhlYWRlciBjb250YWluZXIgc3VjaCBhcyBpbiBleHBhbmRlZCBhbmQgc25hcHBlZCBjb250ZW50LlxuXHQgKiBAcGFyYW0gbWVzc2FnZVN0cmlwIFRoZSBNZXNzYWdlU3RyaXAgY29udHJvbCB0byBhZGRcblx0ICogQHBhcmFtIG1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0XG5cdCAqL1xuXHRwcml2YXRlIGFkZEN1c3RvbU1lc3NhZ2VTdHJpcFRvUGFnZShtZXNzYWdlU3RyaXA6IE1lc3NhZ2VTdHJpcCwgbWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQ6IENvbnRleHQpOiB2b2lkIHtcblx0XHRjb25zdCBoZWFkZXJDb250YWluZXIgPSB0aGlzLl92aWV3LmJ5SWQoXCJmZTo6T2JqZWN0UGFnZUR5bmFtaWNIZWFkZXJUaXRsZVwiKTtcblx0XHRpZiAoaGVhZGVyQ29udGFpbmVyKSB7XG5cdFx0XHRjb25zdCBpbnNlcnRJbnRvQWdncmVnYXRpb24gPSAoYWdncmVnYXRpb25OYW1lOiBzdHJpbmcsIGNvbnRyb2xUb0luc2VydDogTWVzc2FnZVN0cmlwKTogdm9pZCA9PiB7XG5cdFx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uQ29udGVudCA9IGhlYWRlckNvbnRhaW5lci5nZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUpO1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50KSB7XG5cdFx0XHRcdFx0Y29uc3QgY29udGVudEFycmF5ID0gQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpID8gYWdncmVnYXRpb25Db250ZW50IDogW2FnZ3JlZ2F0aW9uQ29udGVudF07XG5cdFx0XHRcdFx0aGVhZGVyQ29udGFpbmVyLmluc2VydEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSwgY29udHJvbFRvSW5zZXJ0LCBjb250ZW50QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGluc2VydEludG9BZ2dyZWdhdGlvbihcImV4cGFuZGVkQ29udGVudFwiLCBtZXNzYWdlU3RyaXApO1xuXHRcdFx0aW5zZXJ0SW50b0FnZ3JlZ2F0aW9uKFwic25hcHBlZENvbnRlbnRcIiwgbWVzc2FnZVN0cmlwLmNsb25lKCkpO1xuXG5cdFx0XHRtZXNzYWdlc3RyaXBJbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcIk9QQ3VzdG9tTWVzc2FnZVN0cmlwVmlzaWJsZVwiLCB0cnVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyB0aGUgYWN0aXZlIGN1c3RvbSBNZXNzYWdlU3RyaXAgcHJvZ3JhbW1hdGljYWxseS5cblx0ICovXG5cdHByaXZhdGUgcmVtb3ZlQ3VzdG9tTWVzc2FnZVN0cmlwKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jdXN0b21NZXNzYWdlU3RyaXBJZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZpbmQgYW5kIHJlbW92ZSB0aGUgY3VzdG9tIG1lc3NhZ2Ugc3RyaXAgZnJvbSBoZWFkZXIgY29udGFpbmVyXG5cdFx0Y29uc3QgaGVhZGVyQ29udGFpbmVyID0gdGhpcy5fdmlldy5ieUlkKFwiZmU6Ok9iamVjdFBhZ2VEeW5hbWljSGVhZGVyVGl0bGVcIik7XG5cdFx0aWYgKGhlYWRlckNvbnRhaW5lcikge1xuXHRcdFx0Y29uc3QgcmVtb3ZlRnJvbUFnZ3JlZ2F0aW9uID0gKGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLCBpZE1hdGNoZXI6IChjb250cm9sSWQ6IHN0cmluZykgPT4gYm9vbGVhbik6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSBoZWFkZXJDb250YWluZXIuZ2V0QWdncmVnYXRpb24oYWdncmVnYXRpb25OYW1lKSBhcyBDb250cm9sW107XG5cdFx0XHRcdGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0XHRjb25zdCBjb250cm9sVG9SZW1vdmUgPSBhZ2dyZWdhdGlvbkNvbnRlbnQuZmluZCgoY29udHJvbCkgPT4gaWRNYXRjaGVyKGNvbnRyb2wuZ2V0SWQoKSkpO1xuXHRcdFx0XHRcdGlmIChjb250cm9sVG9SZW1vdmUpIHtcblx0XHRcdFx0XHRcdGhlYWRlckNvbnRhaW5lci5yZW1vdmVBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUsIGNvbnRyb2xUb1JlbW92ZSk7XG5cdFx0XHRcdFx0XHRjb250cm9sVG9SZW1vdmUuZGVzdHJveSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdHJlbW92ZUZyb21BZ2dyZWdhdGlvbihcImV4cGFuZGVkQ29udGVudFwiLCAoY29udHJvbElkKSA9PiBjb250cm9sSWQgPT09IHRoaXMuY3VzdG9tTWVzc2FnZVN0cmlwSWQpO1xuXHRcdFx0cmVtb3ZlRnJvbUFnZ3JlZ2F0aW9uKFwic25hcHBlZENvbnRlbnRcIiwgKGNvbnRyb2xJZCkgPT4gY29udHJvbElkLmluY2x1ZGVzKHRoaXMuY3VzdG9tTWVzc2FnZVN0cmlwSWQgKyBcIi1fX2Nsb25lXCIpKTtcblx0XHR9XG5cblx0XHR0aGlzLmN1c3RvbU1lc3NhZ2VTdHJpcElkID0gdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgbWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLl92aWV3XG5cdFx0XHQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKVxuXHRcdFx0LmJpbmRDb250ZXh0KHRoaXMuX2dldE1lc3NhZ2VTdHJpcEJpbmRpbmdDb250ZXh0UGF0aCgpKVxuXHRcdFx0LmdldEJvdW5kQ29udGV4dCgpO1xuXHRcdGlmIChtZXNzYWdlc3RyaXBJbnRlcm5hbE1vZGVsQ29udGV4dCkge1xuXHRcdFx0bWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJPUEN1c3RvbU1lc3NhZ2VTdHJpcFZpc2libGVcIiwgZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgTWVzc2FnZUl0ZW0gZnJvbSBhIE1lc3NhZ2UgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIG9iamVjdCBjb250YWluaW5nIHRleHQsIHR5cGUsIGRlc2NyaXB0aW9uLCBldGMuXG5cdCAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIE1lc3NhZ2VJdGVtIGluc3RhbmNlIGZvciB0aGUgTWVzc2FnZVBvcG92ZXIuXG5cdCAqL1xuXHRwcml2YXRlIGNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2U6IE1lc3NhZ2UpOiBNZXNzYWdlSXRlbSB7XG5cdFx0Y29uc3Qgc0Rlc2NyaXB0aW9uVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtZXNzYWdlLmdldERlc2NyaXB0aW9uVXJsPy4oKTtcblxuXHRcdHJldHVybiBuZXcgTWVzc2FnZUl0ZW0oe1xuXHRcdFx0dGl0bGU6IG1lc3NhZ2UuZ2V0TWVzc2FnZSgpLFxuXHRcdFx0ZGVzY3JpcHRpb246IG1lc3NhZ2UuZ2V0RGVzY3JpcHRpb24oKSxcblx0XHRcdHR5cGU6IG1lc3NhZ2UuZ2V0VHlwZSgpLFxuXHRcdFx0bG9uZ3RleHRVcmw6IHNEZXNjcmlwdGlvblVybCxcblx0XHRcdHN1YnRpdGxlOiBtZXNzYWdlLmdldEFkZGl0aW9uYWxUZXh0Py4oKSxcblx0XHRcdGdyb3VwTmFtZTogXCJUX01FU1NBR0VfQlVUVE9OX1NBUEZFX01FU1NBR0VfR1JPVVBfR0VORVJBTFwiLFxuXHRcdFx0YWN0aXZlVGl0bGU6ICEhbWVzc2FnZS5nZXRDb250cm9sSWRzPy4oKS5sZW5ndGhcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgTWVzc2FnZVBvcG92ZXIgZm9yIGEgc2V0IG9mIE1lc3NhZ2VJdGVtcyBhbmQgYXR0YWNoZXNcblx0ICogYW4gYXN5bmMgZGVzY3JpcHRpb24gaGFuZGxlciB0byBsb2FkIGxvbmcgdGV4dCB3aGVuIG5lZWRlZC5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtcyBBcnJheSBvZiBNZXNzYWdlSXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBwb3BvdmVyLlxuXHQgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBNZXNzYWdlUG9wb3ZlciBpbnN0YW5jZS5cblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW0pOiBNZXNzYWdlUG9wb3ZlciB7XG5cdFx0Y29uc3QgcG9wb3ZlciA9IG5ldyBNZXNzYWdlUG9wb3Zlcih7XG5cdFx0XHRpdGVtczogbWVzc2FnZUl0ZW1zXG5cdFx0fSkgYXMgTWVzc2FnZVBvcG92ZXI7XG5cdFx0cmV0dXJuIHBvcG92ZXI7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbnMgYSBNZXNzYWdlUG9wb3ZlciBmb3IgdGhlIHByb3ZpZGVkIG1lc3NhZ2VzLCBhbmNob3JlZCB0byB0aGVcblx0ICogc291cmNlIGNvbnRyb2wgb2YgdGhlIFVJNSBldmVudC5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBVSTUgZXZlbnQgZnJvbSB0aGUgY29udHJvbCB0aGF0IHRyaWdnZXJzIHRoZSBwb3BvdmVyLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSBBcnJheSBvZiBNZXNzYWdlIG9iamVjdHMgdG8gYmUgc2hvd24gaW4gdGhlIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBNZXNzYWdlUG9wb3ZlciB0aGF0IHdhcyBvcGVuZWQuXG5cdCAqL1xuXHRzaG93TWVzc2FnZVBvcG92ZXIoZXZlbnQ6IFVJNUV2ZW50LCBtZXNzYWdlOiBNZXNzYWdlW10pOiBNZXNzYWdlUG9wb3ZlciB7XG5cdFx0Y29uc3QgbWVzc2FnZUl0ZW0gPSB0aGlzLmNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VbMF0pO1xuXHRcdGNvbnN0IHBvcG92ZXIgPSB0aGlzLmNyZWF0ZU1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VJdGVtKTtcblx0XHRjb25zdCBzb3VyY2VDb250cm9sID0gZXZlbnQuZ2V0U291cmNlPy4oKSBhcyBDb250cm9sO1xuXHRcdHNvdXJjZUNvbnRyb2w/LmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHRwb3BvdmVyLm9wZW5CeShzb3VyY2VDb250cm9sKTtcblx0XHRyZXR1cm4gcG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyB0aGUgbWVzc2FnZSBzdHJpcCBiZXR3ZWVuIHRoZSB0aXRsZSBhbmQgdGhlIGhlYWRlciBvZiB0aGUgT2JqZWN0UGFnZS5cblx0ICogQHBhcmFtIG1lc3NhZ2VzIFRoZSBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZFxuXHQgKiBAcGFyYW0gb3JpZ2luIFRoZSBvcmlnaW4gb2YgdGhlIG1lc3NhZ2UuIEl0IG1heSBjb21lIGZyb20gYSBiYWNrLWVuZCBtZXNzYWdlIG9yIGEgY3VzdG9tIG1lc3NhZ2Vcblx0ICovXG5cdF9zaG93TWVzc2FnZXMobWVzc2FnZXM6IE1lc3NhZ2VbXSwgb3JpZ2luOiBcIkJhY2tlbmRcIiB8IFwiQ3VzdG9tXCIgPSBcIkN1c3RvbVwiKTogdm9pZCB7XG5cdFx0dHJ5IHtcblx0XHRcdHRoaXMucmVtb3ZlQ3VzdG9tTWVzc2FnZVN0cmlwKCk7XG5cblx0XHRcdGNvbnN0IHZpZXcgPSB0aGlzLl92aWV3O1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0ID0gaW50ZXJuYWxNb2RlbC5iaW5kQ29udGV4dCh0aGlzLl9nZXRNZXNzYWdlU3RyaXBCaW5kaW5nQ29udGV4dFBhdGgoKSkuZ2V0Qm91bmRDb250ZXh0KCk7XG5cdFx0XHRpZiAoIW1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBSZXNvdXJjZU1vZGVsSGVscGVyLmdldFJlc291cmNlTW9kZWwodmlldyk7XG5cdFx0XHRsZXQgbWVzc2FnZTogTWVzc2FnZSB8IG51bGwgPSBtZXNzYWdlc1swXSB8fCBudWxsO1xuXHRcdFx0bWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYE9QJHtvcmlnaW59TWVzc2FnZVZpc2libGVgLCAhIW1lc3NhZ2UpO1xuXHRcdFx0c3dpdGNoIChtZXNzYWdlcy5sZW5ndGgpIHtcblx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0bWVzc2FnZSA9IG1lc3NhZ2VzWzBdO1xuXHRcdFx0XHRcdGNvbnN0IGhhc0Rlc2NyaXB0aW9uVXJsID0gISFtZXNzYWdlPy5nZXREZXNjcmlwdGlvblVybCgpO1xuXHRcdFx0XHRcdGNvbnN0IGlzRWRpdE1vZGUgPSBDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHZpZXcpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBvYmplY3RQYWdlID0gdmlldy5nZXRDb250ZW50KCk/LlswXSBhcyBPYmplY3RQYWdlTGF5b3V0O1xuXHRcdFx0XHRcdFx0Y29uc3QgaGVhZGVyVGl0bGUgPSBvYmplY3RQYWdlLmdldEhlYWRlclRpdGxlKCkgYXMgT2JqZWN0UGFnZUR5bmFtaWNIZWFkZXJUaXRsZTtcblxuXHRcdFx0XHRcdFx0Ly8gQ29sbGVjdCBhbGwgTWVzc2FnZVN0cmlwcyAoZXhjbHVkaW5nIENvbGxhYm9yYXRpb24gU3RyaXBzKVxuXHRcdFx0XHRcdFx0Y29uc3QgYWxsU3RyaXBzID0gW1xuXHRcdFx0XHRcdFx0XHQuLi4oaGVhZGVyVGl0bGUuZ2V0U25hcHBlZENvbnRlbnQ/LigpIHx8IFtdKSxcblx0XHRcdFx0XHRcdFx0Li4uKGhlYWRlclRpdGxlLmdldEV4cGFuZGVkQ29udGVudD8uKCkgfHwgW10pXG5cdFx0XHRcdFx0XHRdLmZpbHRlcihcblx0XHRcdFx0XHRcdFx0KGl0ZW0pOiBpdGVtIGlzIE1lc3NhZ2VTdHJpcCA9PiBpdGVtIGluc3RhbmNlb2YgTWVzc2FnZVN0cmlwICYmICFpdGVtLmdldElkKCk/LmluY2x1ZGVzKFwiQ29sbGFib3JhdGlvblN0cmlwXCIpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHQvLyBPbmx5IGFkZCBsaW5rcyB3aGVuIG1lc3NhZ2UgaXMgZnJvbSBCYWNrZW5kLCBpbiBEaXNwbGF5IG1vZGUsIGFuZCBoYXMgYSBkZXNjcmlwdGlvbiBVUkxcblx0XHRcdFx0XHRcdGlmIChvcmlnaW4gPT09IFwiQmFja2VuZFwiICYmICFpc0VkaXRNb2RlICYmIGhhc0Rlc2NyaXB0aW9uVXJsKSB7XG5cdFx0XHRcdFx0XHRcdGFsbFN0cmlwcy5mb3JFYWNoKChzdHJpcCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdC8vIEFsd2F5cyBkZXN0cm95IHRoZSBleGlzdGluZyBsaW5rIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBvbmVcblx0XHRcdFx0XHRcdFx0XHRpZiAoc3RyaXAuZ2V0TGluaygpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzdHJpcC5kZXN0cm95TGluaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zdCBsaW5rID0gbmV3IExpbmsoe1xuXHRcdFx0XHRcdFx0XHRcdFx0dGV4dDogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFX0VSUk9SX01FU1NBR0VfU1RSSVBfTElOS19URVhUXCIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M6IChldmVudDogVUk1RXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zaG93TWVzc2FnZVBvcG92ZXIoZXZlbnQsIFttZXNzYWdlIV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdHN0cmlwLnNldExpbmsobGluayk7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGxpbmtzIHdoZW4gbm90IGFwcGxpY2FibGVcblx0XHRcdFx0XHRcdFx0YWxsU3RyaXBzLmZvckVhY2goKHN0cmlwKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHN0cmlwLmdldExpbmsoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0c3RyaXAuZGVzdHJveUxpbmsoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXCJVbmFibGUgdG8gYXR0YWNoIGxpbmsgdG8gT2JqZWN0UGFnZSBNZXNzYWdlU3RyaXBcIiwgZXJyIGFzIEVycm9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZVN0YXRzOiB7IFtrZXk6IHN0cmluZ106IHsgaWQ6IG51bWJlcjsgY291bnQ6IG51bWJlciB9IH0gPSB7XG5cdFx0XHRcdFx0XHRFcnJvcjogeyBpZDogMiwgY291bnQ6IDAgfSxcblx0XHRcdFx0XHRcdFdhcm5pbmc6IHsgaWQ6IDEsIGNvdW50OiAwIH0sXG5cdFx0XHRcdFx0XHRJbmZvcm1hdGlvbjogeyBpZDogMCwgY291bnQ6IDAgfVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0bWVzc2FnZSA9IG1lc3NhZ2VzLnJlZHVjZShcblx0XHRcdFx0XHRcdChhY2MsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjdXJyZW50VHlwZSA9IGN1cnJlbnRWYWx1ZS5nZXRUeXBlKCk7XG5cdFx0XHRcdFx0XHRcdGFjYy5zZXRUeXBlKG1lc3NhZ2VTdGF0c1tjdXJyZW50VHlwZV0uaWQgPiBtZXNzYWdlU3RhdHNbYWNjLmdldFR5cGUoKV0uaWQgPyBjdXJyZW50VHlwZSA6IGFjYy5nZXRUeXBlKCkpO1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlU3RhdHNbY3VycmVudFR5cGVdLmNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhY2M7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bmV3IE1lc3NhZ2UoeyB0eXBlOiBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbiB9KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKG9yaWdpbiA9PT0gXCJCYWNrZW5kXCIgJiYgIUNvbW1vblV0aWxzLmdldElzRWRpdGFibGUodmlldykpIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBPUCR7b3JpZ2lufU1lc3NhZ2VWaXNpYmxlYCwgZmFsc2UpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtZXNzYWdlc3RyaXBJbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgT1Ake29yaWdpbn1NZXNzYWdlVmlzaWJsZWAsICEhbWVzc2FnZSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKG1lc3NhZ2VTdGF0cy5FcnJvci5jb3VudCA+IDApIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2Uuc2V0TWVzc2FnZShyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJPQkpFQ1RQQUdFU1RBVEVfRVJST1JcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAobWVzc2FnZVN0YXRzLldhcm5pbmcuY291bnQgPiAwKSB7XG5cdFx0XHRcdFx0XHRtZXNzYWdlLnNldE1lc3NhZ2UocmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiT0JKRUNUUEFHRVNUQVRFX1dBUk5JTkdcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtZXNzYWdlLnNldE1lc3NhZ2UocmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiT0JKRUNUUEFHRVNUQVRFX0lORk9STUFUSU9OXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRtZXNzYWdlc3RyaXBJbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgT1Ake29yaWdpbn1NZXNzYWdlVGV4dGAsIG1lc3NhZ2UgPyBtZXNzYWdlLmdldE1lc3NhZ2UoKSA6IG51bGwpO1xuXHRcdFx0bWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYE9QJHtvcmlnaW59TWVzc2FnZVR5cGVgLCBtZXNzYWdlID8gbWVzc2FnZS5nZXRUeXBlKCkgOiBudWxsKTtcblx0XHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHRcdEludmlzaWJsZU1lc3NhZ2UuZ2V0SW5zdGFuY2UoKS5hbm5vdW5jZShtZXNzYWdlLmdldE1lc3NhZ2UoKSwgSW52aXNpYmxlTWVzc2FnZU1vZGUuQXNzZXJ0aXZlKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCBkaXNwbGF5IE9iamVjdFBhZ2UgbWVzc2FnZVwiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGlkZXMgdGhlIG1lc3NhZ2Ugc3RyaXAgYmVsb3cgdGhlIGFuY2hvciBiYXIuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGhpZGVNZXNzYWdlKCk6IHZvaWQge1xuXHRcdGNvbnN0IG1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5fdmlld1xuXHRcdFx0LmdldE1vZGVsKFwiaW50ZXJuYWxcIilcblx0XHRcdC5iaW5kQ29udGV4dCh0aGlzLl9nZXRNZXNzYWdlU3RyaXBCaW5kaW5nQ29udGV4dFBhdGgoKSlcblx0XHRcdC5nZXRCb3VuZENvbnRleHQoKSE7XG5cdFx0bWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYE9QQ3VzdG9tTWVzc2FnZVZpc2libGVgLCBmYWxzZSk7XG5cdFx0dGhpcy5yZW1vdmVDdXN0b21NZXNzYWdlU3RyaXAoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSB0aGUgcmVjb21tZW5kYXRpb24gZGF0YSBkZXRhaWxzLCB0cmFuc2Zvcm0gaXQsIGFuZCB1cGRhdGUgdGhlIGludGVybmFsIG1vZGVsLlxuXHQgKiBAcGFyYW0gZGF0YSBSZWNvbW1lbmRhdGlvbiBkYXRhIGZvciB0aGUgYXBwXG5cdCAqL1xuXHRzZXRSZWNvbW1lbmRhdGlvbnMoZGF0YTogSW5Db21wbGV0ZW5lc3NJbmZvVHlwZSk6IHZvaWQge1xuXHRcdHJlY29tbWVuZGF0aW9uSGVscGVyLnRyYW5zZm9ybVJlY29tbWVuZGF0aW9uc0ZvckludGVybmFsU3RvcmFnZShkYXRhKTtcblx0XHR0aGlzLl92aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIikuc2V0UHJvcGVydHkoXCIvcmVjb21tZW5kYXRpb25zRGF0YVwiLCBkYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGEgY29udHJvbCB0byBiZSB0aGUgdGl0bGUgb3duZXIgb2YgaXRzIHNlY3Rpb24vc3Vic2VjdGlvbi4gQXMgdGhlIHRpdGxlIG93bmVycyBvZiBzdGFuZGFyZCBzdWJzZWN0aW9ucyBhcmUgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBmdW5jdGlvbiBmb3IgY3VzdG9tIHNlY3Rpb24vc3Vic2VjdGlvbi5cblx0ICogVGhlIHRpdGxlIG93bmVyIGNhbiBiZSBlaXRoZXIgb25lIG9mIHRoZSBzdGFuZGFyZCBidWlsZGluZyBibG9ja3MgKEZvcm0sIENoYXJ0LCBUYWJsZSksIG9yIHJldXNlIGNvbXBvbmVudHMsIG9yIHNhcC5tLlRpdGxlLlxuXHQgKiBUaGUgZnJhbWV3b3JrIGFkYXB0cyB0aGUgdmFsdWUgb2YgdGhlc2UgcHJvcGVydGllcyB0byBiZSBhbGlnbmVkIHdpdGggdGhlIHRpdGxlIHRoYXQgaXMgc2hvd24gaW4gdGhlIGFuY2hvciBiYXIgKG9yIGljb24gdGFiIGJhcikgZm9yIHRoZSBzZWN0aW9uLiBNb3Jlb3ZlciwgdGhlIHRpdGxlIG9mIHRoZSBzdWJzZWN0aW9uIChhbmQgaWYgYXBwbGljYWJsZSBhbHNvIG9mIHRoZSBzZWN0aW9uKSBpcyBoaWRkZW4gaW4gb3JkZXIgdG8gcHJldmVudCByZWR1bmRhbnQgdGl0bGVzLCBpZiB0aGUgc3Vic2VjdGlvbiBwb3NzZXNzZXMgYSB0aXRsZSBvd25lci5cblx0ICogSGludDogSWYgeW91IGNob29zZSB0byBzZXQgc2FwLm0uVGl0bGUgYXMgdGhlIHRpdGxlIG93bmVyLCBzdHlsaW5nIGFkanVzdG1lbnRzIG1heSBiZSByZXF1aXJlZCBpbiB0aGUgY3VzdG9tIHZpZXcuIEZvciBleGFtcGxlLCBpZiBzYXAubS5UaXRsZSBpcyBzZXQgYXMgdGl0bGUgb3duZXIgd2hpY2ggYmVsb25ncyB0byBzYXAubS5PdmVyZmxvd1Rvb2xiYXIgb3IgdG8gc2FwLm0uVG9vbGJhciwgdGhlbiB0aGUg4oCYZGVzaWdu4oCZIHByb3BlcnR5IG9mIHRoZSB0b29sYmFyIGNvbnRyb2wgaXMgdG8gYmUgc2V0IHRvIOKAmFRyYW5zcGFyZW504oCZLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGUgc2luZ2xlIGNvbnRlbnQgY29udHJvbCBjYW4gYmUgZWl0aGVyIG9uZSBvZiB0aGUgc3RhbmRhcmQgYnVpbGRpbmcgYmxvY2tzIChGb3JtLCBDaGFydCwgVGFibGUpLCBvciByZXVzZSBjb21wb25lbnRzLCBvciBzYXAubS5UaXRsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0QXNTZWN0aW9uVGl0bGVPd25lcihjb250cm9sOiBNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG5cdFx0bGV0IHNlY3Rpb247XG5cdFx0Y29uc3Qgb3JpZ2luYWxDb250cm9sID0gY29udHJvbDtcblx0XHRsZXQgcmV1c2VDb21wb25lbnQ7XG5cdFx0d2hpbGUgKGNvbnRyb2wpIHtcblx0XHRcdGlmIChjb250cm9sLmlzQTxTZWN0aW9uPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuU2VjdGlvblwiKSkge1xuXHRcdFx0XHRzZWN0aW9uID0gY29udHJvbDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY29udHJvbC5pc0E8UmV1c2VDb21wb25lbnQ+KFwic2FwLmZlLmNvcmUuUmV1c2VDb21wb25lbnRcIikpIHtcblx0XHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuY29udGFpbmVyLmdldFBhcmVudCgpIGFzIENvbnRyb2w7XG5cdFx0XHRcdHJldXNlQ29tcG9uZW50ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRyb2xQYXJlbnQgPSBjb250cm9sLmdldFBhcmVudCgpO1xuXHRcdFx0aWYgKGNvbnRyb2xQYXJlbnQpIHtcblx0XHRcdFx0Y29udHJvbCA9IGNvbnRyb2xQYXJlbnQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHNlY3Rpb24pIHtcblx0XHRcdGlmIChyZXVzZUNvbXBvbmVudCAmJiBzZWN0aW9uLmdldFZpc2libGVTdWJTZWN0aW9ucygpLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0c2VjdGlvbi5hZGp1c3RGb3JTaW5nbGVDb250ZW50KG9yaWdpbmFsQ29udHJvbCwgeyBtdWx0aXBsZVN1YlNlY3Rpb25zV2l0aFJldXNlQ29tcG9uZW50OiB0cnVlIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VjdGlvbi5hZGp1c3RGb3JTaW5nbGVDb250ZW50KG9yaWdpbmFsQ29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIERpc3BsYXlzIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBuYXZpZ2F0aW9uIHRvIGEgc2VjdGlvbiBmYWlscy5cblx0ICovXG5cdHByaXZhdGUgc2hvd05hdmlnYXRpb25FcnJvcigpOiB2b2lkIHtcblx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gUmVzb3VyY2VNb2RlbEhlbHBlci5nZXRSZXNvdXJjZU1vZGVsKHRoaXMuX3ZpZXcpO1xuXHRcdGNvbnN0IHNUaXRsZSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfUk9VVElOR19OQVZJR0FUSU9OX0RJU0FCTEVEX1RJVExFXCIpO1xuXHRcdExvZy5lcnJvcihzVGl0bGUpO1xuXHRcdE1lc3NhZ2VCb3guZXJyb3Ioc1RpdGxlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byBhIHNwZWNpZmljIHNlY3Rpb24gb3Igc3Vic2VjdGlvbiB3aXRoaW4gdGhlIGN1cnJlbnQgcGFnZS5cblx0ICogV29ya3Mgd2l0aCBPYmplY3QgUGFnZSBsYXlvdXRzIGFuZCBvdGhlciBzZWN0aW9uLWJhc2VkIGxheW91dHMuXG5cdCAqIEBwYXJhbSBzZWN0aW9uT3JTdWJTZWN0aW9uSWQgVGhlIElEIG9mIHRoZSB0YXJnZXQgc2VjdGlvbiBvciBzdWJzZWN0aW9uICh3aXRob3V0IGEgdmlldyBwcmVmaXgsIGZvciBleGFtcGxlLCBcImZlOjpGYWNldFNlY3Rpb246OlRyYXZlbERhdGFcIiBvciBcImZlOjpTdWJTZWN0aW9uOjpEZXRhaWxzXCIpXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdG5hdmlnYXRlVG9TdWJTZWN0aW9uKHNlY3Rpb25PclN1YlNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIEZpbmQgdGhlIE9iamVjdCBQYWdlIExheW91dCBjb250cm9sXG5cdFx0XHRjb25zdCBvYmplY3RQYWdlTGF5b3V0ID0gdGhpcy5fdmlldy5nZXRDb250ZW50KClbMF0gYXMgT2JqZWN0UGFnZUxheW91dCB8IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCFvYmplY3RQYWdlTGF5b3V0KSB7XG5cdFx0XHRcdHRoaXMuc2hvd05hdmlnYXRpb25FcnJvcigpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICghc2VjdGlvbk9yU3ViU2VjdGlvbklkKSB7XG5cdFx0XHRcdHRoaXMuc2hvd05hdmlnYXRpb25FcnJvcigpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoc2VjdGlvbk9yU3ViU2VjdGlvbklkKTtcblxuXHRcdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRcdHRoaXMuc2hvd05hdmlnYXRpb25FcnJvcigpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGxldCB0YXJnZXRTdWJTZWN0aW9uOiBPYmplY3RQYWdlU3ViU2VjdGlvbiB8IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gQ2hlY2sgaWYgY29udHJvbCBpcyBhIFN1YlNlY3Rpb24gb3IgU2VjdGlvblxuXHRcdFx0aWYgKGNvbnRyb2wuaXNBPE9iamVjdFBhZ2VTdWJTZWN0aW9uPihcInNhcC51eGFwLk9iamVjdFBhZ2VTdWJTZWN0aW9uXCIpKSB7XG5cdFx0XHRcdHRhcmdldFN1YlNlY3Rpb24gPSBjb250cm9sO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxPYmplY3RQYWdlU2VjdGlvbj4oXCJzYXAudXhhcC5PYmplY3RQYWdlU2VjdGlvblwiKSkge1xuXHRcdFx0XHQvLyBJZiBpdCdzIGEgc2VjdGlvbiwgZ2V0IHRoZSBmaXJzdCBzdWJzZWN0aW9uXG5cdFx0XHRcdGNvbnN0IHN1YlNlY3Rpb25zID0gY29udHJvbC5nZXRTdWJTZWN0aW9ucygpO1xuXHRcdFx0XHR0YXJnZXRTdWJTZWN0aW9uID0gc3ViU2VjdGlvbnMubGVuZ3RoID4gMCA/IHN1YlNlY3Rpb25zWzBdIDogdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBWYWxpZGF0ZSBzdWJzZWN0aW9uXG5cdFx0XHRpZiAoIXRhcmdldFN1YlNlY3Rpb24gfHwgIXRhcmdldFN1YlNlY3Rpb24uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuc2hvd05hdmlnYXRpb25FcnJvcigpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEdldCB0aGUgZnVsbCBzdWJzZWN0aW9uIElEIChpbmNsdWRpbmcgdmlldyBwcmVmaXgpXG5cdFx0XHRjb25zdCBzdWJzZWN0aW9uRnVsbElkID0gdGFyZ2V0U3ViU2VjdGlvbi5nZXRJZCgpO1xuXG5cdFx0XHRpZiAoIXN1YnNlY3Rpb25GdWxsSWQpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiU3Vic2VjdGlvbiBJRCBpcyB1bmRlZmluZWQsIGNhbm5vdCBzZXQgc2VsZWN0ZWQgc2VjdGlvbi5cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF2aWdhdGUgdXNpbmcgT2JqZWN0UGFnZUxheW91dCBBUElcblx0XHRcdG9iamVjdFBhZ2VMYXlvdXQuc2V0U2VsZWN0ZWRTZWN0aW9uKHN1YnNlY3Rpb25GdWxsSWQpO1xuXG5cdFx0XHQvLyBUcmlnZ2VyIGlBcHAgc3RhdGUgY2hhbmdlIGJ5IGZpcmluZyBuYXZpZ2F0ZSBldmVudFxuXHRcdFx0Y29uc3QgcGFyZW50U2VjdGlvbiA9IHRhcmdldFN1YlNlY3Rpb24uZ2V0UGFyZW50KCkgYXMgT2JqZWN0UGFnZVNlY3Rpb247XG5cdFx0XHRvYmplY3RQYWdlTGF5b3V0LmZpcmVOYXZpZ2F0ZSh7XG5cdFx0XHRcdHNlY3Rpb246IHBhcmVudFNlY3Rpb24sXG5cdFx0XHRcdHN1YlNlY3Rpb246IHRhcmdldFN1YlNlY3Rpb25cblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciBkdXJpbmcgbmF2aWdhdGlvbiB0byBzdWJzZWN0aW9uOlwiLCBlcnJvciBhcyBFcnJvcik7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdFBhZ2VFeHRlbnNpb25BUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBa0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVJBLElBVU1BLHNCQUFzQixJQUFBQyxJQUFBLEdBRDNCQyxjQUFjLENBQUMsMENBQTBDLENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLDBCQUFBQyxhQUFBO0lBQUEsU0FBQUosdUJBQUE7TUFBQSxPQUFBSSxhQUFBLENBQUFDLEtB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
512
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3RQYWdlRXh0ZW5zaW9uQVBJIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2NsYXNzIiwiX0V4dGVuc2lvbkFQSSIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJyZWZyZXNoIiwidlBhdGgiLCJvQmluZGluZ0NvbnRleHQiLCJfdmlldyIsImdldEJpbmRpbmdDb250ZXh0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJvU2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwib1NpZGVFZmZlY3RzIiwidGFyZ2V0UHJvcGVydGllcyIsInRhcmdldEVudGl0aWVzIiwidW5kZWZpbmVkIiwicHVzaCIsIiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoIiwiYWxsUGF0aHMiLCJBcnJheSIsImlzQXJyYXkiLCJvd25lckNvbXBvbmVudCIsIl9jb250cm9sbGVyIiwiZ2V0T3duZXJDb21wb25lbnQiLCJjb250ZXh0UGF0aCIsImdldENvbnRleHRQYXRoIiwiZ2V0RW50aXR5U2V0IiwicGF0aCIsImtpbmQiLCJnZXRPYmplY3QiLCJyZWplY3QiLCJyZXF1ZXN0U2lkZUVmZmVjdHMiLCJnZXRTZWxlY3RlZENvbnRleHRzIiwic1RhYmxlSWQiLCJ0YWJsZSIsImJ5SWQiLCJpc0EiLCJnZXRQYXJlbnQiLCJzaG93U2lkZUNvbnRlbnQiLCJzU3ViU2VjdGlvbktleSIsImJTaG93Iiwic0Jsb2NrSUQiLCJnZXRTaWRlQ29udGVudExheW91dElEIiwib0Jsb2NrIiwiYkJsb2NrU3RhdGUiLCJnZXRTaG93U2lkZUNvbnRlbnQiLCJzZXRTaG93U2lkZUNvbnRlbnQiLCJfZ2V0TWVzc2FnZVN0cmlwQmluZGluZ0NvbnRleHRQYXRoIiwiaW50ZXJuYWxNb2RlbENvbnRleHRQYXRoIiwiZ2V0UGF0aCIsInZpZXdDb250ZXh0UGF0aCIsInJlcGxhY2UiLCJzaG93TWVzc2FnZXMiLCJtZXNzYWdlc09yU3RyaXAiLCJfc2hvd01lc3NhZ2VzIiwic2hvd0N1c3RvbU1lc3NhZ2VTdHJpcCIsIm1lc3NhZ2VTdHJpcCIsIm1lc3NhZ2VTdHJpcEludGVybmFsTW9kZWxDb250ZXh0IiwiYmluZENvbnRleHQiLCJnZXRCb3VuZENvbnRleHQiLCJyZW1vdmVDdXN0b21NZXNzYWdlU3RyaXAiLCJzZXRQcm9wZXJ0eSIsImN1c3RvbU1lc3NhZ2VTdHJpcElkIiwiZ2V0SWQiLCJ1aWQiLCJhZGRTdHlsZUNsYXNzIiwiYWRkQ3VzdG9tTWVzc2FnZVN0cmlwVG9QYWdlIiwibWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQiLCJoZWFkZXJDb250YWluZXIiLCJpbnNlcnRJbnRvQWdncmVnYXRpb24iLCJhZ2dyZWdhdGlvbk5hbWUiLCJjb250cm9sVG9JbnNlcnQiLCJhZ2dyZWdhdGlvbkNvbnRlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsImNvbnRlbnRBcnJheSIsImluc2VydEFnZ3JlZ2F0aW9uIiwibGVuZ3RoIiwiY2xvbmUiLCJyZW1vdmVGcm9tQWdncmVnYXRpb24iLCJpZE1hdGNoZXIiLCJjb250cm9sVG9SZW1vdmUiLCJmaW5kIiwiY29udHJvbCIsInJlbW92ZUFnZ3JlZ2F0aW9uIiwiZGVzdHJveSIsImNvbnRyb2xJZCIsImluY2x1ZGVzIiwiY3JlYXRlTWVzc2FnZUl0ZW0iLCJtZXNzYWdlIiwic0Rlc2NyaXB0aW9uVXJsIiwiZ2V0RGVzY3JpcHRpb25VcmwiLCJNZXNzYWdlSXRlbSIsInRpdGxlIiwiZ2V0TWVzc2FnZSIsImRlc2NyaXB0aW9uIiwiZ2V0RGVzY3JpcHRpb24iLCJ0eXBlIiwiZ2V0VHlwZSIsImxvbmd0ZXh0VXJsIiwic3VidGl0bGUiLCJnZXRBZGRpdGlvbmFsVGV4dCIsImdyb3VwTmFtZSIsImFjdGl2ZVRpdGxlIiwiZ2V0Q29udHJvbElkcyIsImNyZWF0ZU1lc3NhZ2VQb3BvdmVyIiwibWVzc2FnZUl0ZW1zIiwicG9wb3ZlciIsIk1lc3NhZ2VQb3BvdmVyIiwiaXRlbXMiLCJzaG93TWVzc2FnZVBvcG92ZXIiLCJldmVudCIsIm1lc3NhZ2VJdGVtIiwic291cmNlQ29udHJvbCIsImdldFNvdXJjZSIsImFkZERlcGVuZGVudCIsIm9wZW5CeSIsIm1lc3NhZ2VzIiwib3JpZ2luIiwidmlldyIsImludGVybmFsTW9kZWwiLCJyZXNvdXJjZU1vZGVsIiwiUmVzb3VyY2VNb2RlbEhlbHBlciIsImdldFJlc291cmNlTW9kZWwiLCJoYXNEZXNjcmlwdGlvblVybCIsImlzRWRpdE1vZGUiLCJnZXRJc0VkaXRhYmxlIiwib2JqZWN0UGFnZSIsImdldENvbnRlbnQiLCJoZWFkZXJUaXRsZSIsImdldEhlYWRlclRpdGxlIiwiYWxsU3RyaXBzIiwiZ2V0U25hcHBlZENvbnRlbnQiLCJnZXRFeHBhbmRlZENvbnRlbnQiLCJmaWx0ZXIiLCJpdGVtIiwiTWVzc2FnZVN0cmlwIiwiZm9yRWFjaCIsInN0cmlwIiwiZ2V0TGluayIsImRlc3Ryb3lMaW5rIiwibGluayIsIkxpbmsiLCJ0ZXh0IiwiZ2V0VGV4dCIsInByZXNzIiwic2V0TGluayIsImVyciIsIkxvZyIsIndhcm5pbmciLCJtZXNzYWdlU3RhdHMiLCJFcnJvciIsImlkIiwiY291bnQiLCJXYXJuaW5nIiwiSW5mb3JtYXRpb24iLCJyZWR1Y2UiLCJhY2MiLCJjdXJyZW50VmFsdWUiLCJjdXJyZW50VHlwZSIsInNldFR5cGUiLCJNZXNzYWdlIiwiTWVzc2FnZVR5cGUiLCJzZXRNZXNzYWdlIiwiSW52aXNpYmxlTWVzc2FnZSIsImdldEluc3RhbmNlIiwiYW5ub3VuY2UiLCJJbnZpc2libGVNZXNzYWdlTW9kZSIsIkFzc2VydGl2ZSIsImVycm9yIiwiaGlkZU1lc3NhZ2UiLCJzZXRSZWNvbW1lbmRhdGlvbnMiLCJkYXRhIiwicmVjb21tZW5kYXRpb25IZWxwZXIiLCJ0cmFuc2Zvcm1SZWNvbW1lbmRhdGlvbnNGb3JJbnRlcm5hbFN0b3JhZ2UiLCJzZXRBc1NlY3Rpb25UaXRsZU93bmVyIiwic2VjdGlvbiIsIm9yaWdpbmFsQ29udHJvbCIsInJldXNlQ29tcG9uZW50IiwiY29udGFpbmVyIiwiY29udHJvbFBhcmVudCIsImdldFZpc2libGVTdWJTZWN0aW9ucyIsImFkanVzdEZvclNpbmdsZUNvbnRlbnQiLCJtdWx0aXBsZVN1YlNlY3Rpb25zV2l0aFJldXNlQ29tcG9uZW50Iiwic2hvd05hdmlnYXRpb25FcnJvciIsInNUaXRsZSIsIk1lc3NhZ2VCb3giLCJuYXZpZ2F0ZVRvU3ViU2VjdGlvbiIsInNlY3Rpb25PclN1YlNlY3Rpb25JZCIsIm9iamVjdFBhZ2VMYXlvdXQiLCJ0YXJnZXRTdWJTZWN0aW9uIiwic3ViU2VjdGlvbnMiLCJnZXRTdWJTZWN0aW9ucyIsImdldFZpc2libGUiLCJzdWJzZWN0aW9uRnVsbElkIiwic2V0U2VsZWN0ZWRTZWN0aW9uIiwicGFyZW50U2VjdGlvbiIsImZpcmVOYXZpZ2F0ZSIsInN1YlNlY3Rpb24iLCJFeHRlbnNpb25BUEkiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4dGVuc2lvbkFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCB1aWQgZnJvbSBcInNhcC9iYXNlL3V0aWwvdWlkXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IGdldFNpZGVDb250ZW50TGF5b3V0SUQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgRXh0ZW5zaW9uQVBJIGZyb20gXCJzYXAvZmUvY29yZS9FeHRlbnNpb25BUElcIjtcbmltcG9ydCB0eXBlIHsgSW5Db21wbGV0ZW5lc3NJbmZvVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1JlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgeyByZWNvbW1lbmRhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1JlY29tbWVuZGF0aW9uSGVscGVyXCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBSZXVzZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvUmV1c2VDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNUYXJnZXRUeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIFNlY3Rpb24gZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvU2VjdGlvblwiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvVGFibGVcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IE1lc3NhZ2VJdGVtIGZyb20gXCJzYXAvbS9NZXNzYWdlSXRlbVwiO1xuaW1wb3J0IE1lc3NhZ2VQb3BvdmVyIGZyb20gXCJzYXAvbS9NZXNzYWdlUG9wb3ZlclwiO1xuaW1wb3J0IE1lc3NhZ2VTdHJpcCBmcm9tIFwic2FwL20vTWVzc2FnZVN0cmlwXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBJbnZpc2libGVNZXNzYWdlIGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVNZXNzYWdlXCI7XG5pbXBvcnQgeyBJbnZpc2libGVNZXNzYWdlTW9kZSB9IGZyb20gXCJzYXAvdWkvY29yZS9saWJyYXJ5XCI7XG5pbXBvcnQgTWVzc2FnZSBmcm9tIFwic2FwL3VpL2NvcmUvbWVzc2FnZS9NZXNzYWdlXCI7XG5pbXBvcnQgTWVzc2FnZVR5cGUgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVR5cGVcIjtcbmltcG9ydCB0eXBlIER5bmFtaWNTaWRlQ29udGVudCBmcm9tIFwic2FwL3VpL2xheW91dC9EeW5hbWljU2lkZUNvbnRlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9tZGMvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVGFibGUgZnJvbSBcInNhcC91aS9tZGMvVGFibGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YVY0Q29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VEeW5hbWljSGVhZGVyVGl0bGUgZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VEeW5hbWljSGVhZGVyVGl0bGVcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VMYXlvdXQgZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VMYXlvdXRcIjtcbmltcG9ydCB0eXBlIE9iamVjdFBhZ2VTZWN0aW9uIGZyb20gXCJzYXAvdXhhcC9PYmplY3RQYWdlU2VjdGlvblwiO1xuaW1wb3J0IHR5cGUgT2JqZWN0UGFnZVN1YlNlY3Rpb24gZnJvbSBcInNhcC91eGFwL09iamVjdFBhZ2VTdWJTZWN0aW9uXCI7XG5cbi8qKlxuICogRXh0ZW5zaW9uIEFQSSBmb3Igb2JqZWN0IHBhZ2VzIG9uIFNBUCBGaW9yaSBlbGVtZW50cyBmb3IgT0RhdGEgVjQuXG4gKlxuICogVG8gY29ycmVjdGx5IGludGVncmF0ZSB5b3VyIGFwcCBleHRlbnNpb24gY29kaW5nIHdpdGggU0FQIEZpb3JpIGVsZW1lbnRzLCB1c2Ugb25seSB0aGUgZXh0ZW5zaW9uQVBJIG9mIFNBUCBGaW9yaSBlbGVtZW50cy4gRG9uJ3QgYWNjZXNzIG9yIG1hbmlwdWxhdGUgY29udHJvbHMsIHByb3BlcnRpZXMsIG1vZGVscywgb3Igb3RoZXIgaW50ZXJuYWwgb2JqZWN0cyBjcmVhdGVkIGJ5IHRoZSBTQVAgRmlvcmkgZWxlbWVudHMgZnJhbWV3b3JrLlxuICogQHB1YmxpY1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQGZpbmFsXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5FeHRlbnNpb25BUElcIilcbmNsYXNzIE9iamVjdFBhZ2VFeHRlbnNpb25BUEkgZXh0ZW5kcyBFeHRlbnNpb25BUEkge1xuXHQvKipcblx0ICogSUQgb2YgdGhlIGFjdGl2ZSBjdXN0b20gTWVzc2FnZVN0cmlwIGZvciBwcm9ncmFtbWF0aWMgcmVtb3ZhbC5cblx0ICovXG5cdHByaXZhdGUgY3VzdG9tTWVzc2FnZVN0cmlwSWQ/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFJlZnJlc2hlcyBlaXRoZXIgdGhlIHdob2xlIG9iamVjdCBwYWdlIG9yIG9ubHkgcGFydHMgb2YgaXQuXG5cdCAqIEBwYXJhbSBbdlBhdGhdIFBhdGggb3IgYXJyYXkgb2YgcGF0aHMgcmVmZXJyaW5nIHRvIGVudGl0aWVzIG9yIHByb3BlcnRpZXMgdG8gYmUgcmVmcmVzaGVkLlxuXHQgKiBJZiBvbWl0dGVkLCB0aGUgd2hvbGUgb2JqZWN0IHBhZ2UgaXMgcmVmcmVzaGVkLiBUaGUgcGF0aCBcIlwiIHJlZnJlc2hlcyB0aGUgZW50aXR5IGFzc2lnbmVkIHRvIHRoZSBvYmplY3QgcGFnZVxuXHQgKiB3aXRob3V0IG5hdmlnYXRpb24uXG5cdCAqIEByZXR1cm5zIFJlc29sdmVkIG9uY2UgdGhlIGRhdGEgaXMgcmVmcmVzaGVkIG9yIHJlamVjdGVkIGlmIHRoZSByZXF1ZXN0IGZhaWxlZFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyByZWZyZXNoKHZQYXRoPzogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvQmluZGluZ0NvbnRleHQgPSB0aGlzLl92aWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0aWYgKCFvQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdC8vIG5vdGhpbmcgdG8gYmUgcmVmcmVzaGVkIC0gZG8gbm90IGJsb2NrIHRoZSBhcHAhXG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodGhpcy5fdmlldyksXG5cdFx0XHRvU2lkZUVmZmVjdHNTZXJ2aWNlID0gb0FwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKSxcblx0XHRcdG9NZXRhTW9kZWwgPSBvQmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdG9TaWRlRWZmZWN0czogU2lkZUVmZmVjdHNUYXJnZXRUeXBlID0ge1xuXHRcdFx0XHR0YXJnZXRQcm9wZXJ0aWVzOiBbXSxcblx0XHRcdFx0dGFyZ2V0RW50aXRpZXM6IFtdXG5cdFx0XHR9O1xuXG5cdFx0aWYgKHZQYXRoID09PSB1bmRlZmluZWQgfHwgdlBhdGggPT09IG51bGwpIHtcblx0XHRcdC8vIHdlIGp1c3QgYWRkIGFuIGVtcHR5IHBhdGggd2hpY2ggc2hvdWxkIHJlZnJlc2ggdGhlIHBhZ2Ugd2l0aCBhbGwgZGVwZW5kZW50IGJpbmRpbmdzXG5cdFx0XHRvU2lkZUVmZmVjdHMudGFyZ2V0RW50aXRpZXMucHVzaCh7XG5cdFx0XHRcdCROYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBcIlwiXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYWxsUGF0aHMgPSBBcnJheS5pc0FycmF5KHZQYXRoKSA/IHZQYXRoIDogW3ZQYXRoXTtcblx0XHRcdGNvbnN0IG93bmVyQ29tcG9uZW50ID0gdGhpcy5fY29udHJvbGxlci5nZXRPd25lckNvbXBvbmVudCgpIGFzIHVua25vd24gYXMge1xuXHRcdFx0XHRnZXRDb250ZXh0UGF0aDogKCkgPT4gc3RyaW5nO1xuXHRcdFx0XHRnZXRFbnRpdHlTZXQ6ICgpID0+IHN0cmluZztcblx0XHRcdH07XG5cdFx0XHRjb25zdCBjb250ZXh0UGF0aCA9IG93bmVyQ29tcG9uZW50LmdldENvbnRleHRQYXRoKCkgfHwgYC8ke293bmVyQ29tcG9uZW50LmdldEVudGl0eVNldCgpfWA7XG5cblx0XHRcdGZvciAoY29uc3QgcGF0aCBvZiBhbGxQYXRocykge1xuXHRcdFx0XHRpZiAocGF0aCA9PT0gXCJcIikge1xuXHRcdFx0XHRcdC8vIGFuIGVtcHR5IHBhdGggc2hhbGwgcmVmcmVzaCB0aGUgZW50aXR5IHdpdGhvdXQgZGVwZW5kZW5jaWVzIHdoaWNoIG1lYW5zICogZm9yIHRoZSBtb2RlbFxuXHRcdFx0XHRcdG9TaWRlRWZmZWN0cy50YXJnZXRQcm9wZXJ0aWVzLnB1c2goXCIqXCIpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnN0IGtpbmQgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtjb250ZXh0UGF0aH0vJHtwYXRofS8ka2luZGApO1xuXG5cdFx0XHRcdFx0aWYgKGtpbmQgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIpIHtcblx0XHRcdFx0XHRcdG9TaWRlRWZmZWN0cy50YXJnZXRFbnRpdGllcy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0JE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg6IHBhdGhcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoa2luZCkge1xuXHRcdFx0XHRcdFx0b1NpZGVFZmZlY3RzLnRhcmdldFByb3BlcnRpZXMucHVzaChwYXRoKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGAke3BhdGh9IGlzIG5vdCBhIHZhbGlkIHBhdGggdG8gYmUgcmVmcmVzaGVkYCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBvU2lkZUVmZmVjdHNTZXJ2aWNlLnJlcXVlc3RTaWRlRWZmZWN0cyhbLi4ub1NpZGVFZmZlY3RzLnRhcmdldEVudGl0aWVzLCAuLi5vU2lkZUVmZmVjdHMudGFyZ2V0UHJvcGVydGllc10sIG9CaW5kaW5nQ29udGV4dCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgbGlzdCBlbnRyaWVzIGN1cnJlbnRseSBzZWxlY3RlZCBmb3IgdGhlIHRhYmxlLlxuXHQgKiBAcGFyYW0gc1RhYmxlSWQgVGhlIElEIGlkZW50aWZ5aW5nIHRoZSB0YWJsZSB0aGUgc2VsZWN0ZWQgY29udGV4dCBpcyByZXF1ZXN0ZWQgZm9yXG5cdCAqIEByZXR1cm5zIEFycmF5IGNvbnRhaW5pbmcgdGhlIHNlbGVjdGVkIGNvbnRleHRzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGdldFNlbGVjdGVkQ29udGV4dHMoc1RhYmxlSWQ6IHN0cmluZyk6IE9EYXRhVjRDb250ZXh0W10ge1xuXHRcdGxldCB0YWJsZSA9IHRoaXMuX3ZpZXcuYnlJZChzVGFibGVJZCk7XG5cdFx0aWYgKHRhYmxlPy5pc0E8VGFibGU+KFwic2FwLnVpLm1kYy5UYWJsZVwiKSkge1xuXHRcdFx0dGFibGUgPSB0YWJsZS5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSTtcblx0XHR9XG5cdFx0aWYgKHRhYmxlPy5pc0EoXCJzYXAuZmUubWFjcm9zLlRhYmxlXCIpKSB7XG5cdFx0XHRyZXR1cm4gKHRhYmxlIGFzIFRhYmxlQVBJKS5nZXRTZWxlY3RlZENvbnRleHRzKCk7XG5cdFx0fVxuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBvciBoaWRlcyB0aGUgc2lkZSBjb250ZW50IG9mIGFuIG9iamVjdCBwYWdlLlxuXHQgKiBAcGFyYW0gc1N1YlNlY3Rpb25LZXkgS2V5IG9mIHRoZSBzaWRlIGNvbnRlbnQgZnJhZ21lbnQgYXMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3QuanNvblxuXHQgKiBAcGFyYW0gW2JTaG93XSBPcHRpb25hbCBCb29sZWFuIGZsYWcgdG8gc2hvdyBvciBoaWRlIHRoZSBzaWRlIGNvbnRlbnRcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2hvd1NpZGVDb250ZW50KHNTdWJTZWN0aW9uS2V5OiBzdHJpbmcsIGJTaG93PzogYm9vbGVhbik6IHZvaWQge1xuXHRcdGNvbnN0IHNCbG9ja0lEID0gZ2V0U2lkZUNvbnRlbnRMYXlvdXRJRChzU3ViU2VjdGlvbktleSksXG5cdFx0XHRvQmxvY2sgPSB0aGlzLl92aWV3LmJ5SWQoc0Jsb2NrSUQpLFxuXHRcdFx0YkJsb2NrU3RhdGUgPSBiU2hvdyA9PT0gdW5kZWZpbmVkID8gIShvQmxvY2sgYXMgRHluYW1pY1NpZGVDb250ZW50KS5nZXRTaG93U2lkZUNvbnRlbnQoKSA6IGJTaG93O1xuXHRcdChvQmxvY2sgYXMgRHluYW1pY1NpZGVDb250ZW50KS5zZXRTaG93U2lkZUNvbnRlbnQoYkJsb2NrU3RhdGUsIGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBib3VuZCBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG9iamVjdCBwYWdlLlxuXHQgKiBAcmV0dXJucyBDb250ZXh0IGJvdW5kIHRvIHRoZSBvYmplY3QgcGFnZVxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRCaW5kaW5nQ29udGV4dCgpOiBDb250ZXh0IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuX3ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBCdWlsZCB0aGUgaW50ZXJuYWwgY29udGV4dCBwYXRoIG9mIHRoZSBNZXNzYWdlU3RyaXAgY29udHJvbC5cblx0ICogQHJldHVybnMgVGhlIGludGVybmFsIGJpbmRpbmcgY29udGV4dCBwYXRoIGZvciB0aGUgbWVzc2FnZVN0cmlwXG5cdCAqL1xuXHRfZ2V0TWVzc2FnZVN0cmlwQmluZGluZ0NvbnRleHRQYXRoKCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbENvbnRleHRQYXRoID0gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpPy5nZXRQYXRoKCk7XG5cdFx0Y29uc3Qgdmlld0NvbnRleHRQYXRoID0gdGhpcy5fdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCk7XG5cdFx0cmV0dXJuIGludGVybmFsTW9kZWxDb250ZXh0UGF0aCAmJiB2aWV3Q29udGV4dFBhdGhcblx0XHRcdD8gYCR7aW50ZXJuYWxNb2RlbENvbnRleHRQYXRofS9NZXNzYWdlU3RyaXAvJHt2aWV3Q29udGV4dFBhdGgucmVwbGFjZSgvXFwvL2csIFwiLVwiKX1gXG5cdFx0XHQ6IFwiXCI7XG5cdH1cblxuXHQvKipcblx0ICogRGlzcGxheXMgdGhlIG1lc3NhZ2Ugc3RyaXAgYmV0d2VlbiB0aGUgdGl0bGUgYW5kIHRoZSBoZWFkZXIgb2YgdGhlIE9iamVjdFBhZ2UuIElmIG9ubHkgb25lIG1lc3NhZ2UgaXMgcHJvdmlkZWQsIGl0IGlzIGRpc3BsYXllZCBkaXJlY3RseSBpbiB0aGUgbWVzc2FnZSBzdHJpcC4gSWYgbXVsdGlwbGUgbWVzc2FnZXMgYXJlIHByb3ZpZGVkLCB0aGV5IGFyZSBwcmlvcml0aXplZCBieSB0aGUgb3JkZXI6IEVycm9yLCBXYXJuaW5nLCBhbmQgSW5mb3JtYXRpb24gYW5kIGEgY29ycmVzcG9uZGluZyBnZW5lcmljIHRleHQgaXMgZGlzcGxheWVkOlxuXHQgKiAtIEVycm9yOiBcIlRoZSBvYmplY3QgY29udGFpbnMgZXJyb3JzLlwiXG5cdCAqIC0gV2FybmluZzogXCJUaGUgb2JqZWN0IGNvbnRhaW5zIHdhcm5pbmdzLlwiXG5cdCAqIC0gSW5mb3JtYXRpb246IFwiVGhlIG9iamVjdCBjb250YWlucyBtZXNzYWdlcy5cIlxuXHQgKiBJZiBhIGJhY2stZW5kIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgd2l0aCBhIHRhcmdldCBwb2ludGluZyB0byB0aGUgT2JqZWN0IFBhZ2UsIGl0IGlzIGRpc3BsYXllZCBpbiB0aGUgbWVzc2FnZSBzdHJpcCwgb3ZlcnJpZGluZyBhbnkgZXhpc3RpbmcgbWVzc2FnZSBvciBtZXNzYWdlIHN0cmlwLiBJZiBtdWx0aXBsZSBiYWNrLWVuZCBtZXNzYWdlcyBhcmUgcmVjZWl2ZWQsIHRoZSBtZXNzYWdlIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgaXMgZGlzcGxheWVkIHdpdGggYSBnZW5lcmljIHRleHQgYXMgZGVzY3JpYmVkIGFib3ZlLlxuXHQgKiBAcGFyYW0gIG1lc3NhZ2VzT3JTdHJpcCBUaGUgbWVzc2FnZSB0byBiZSBkaXNwbGF5ZWQgb3IgYSBNZXNzYWdlU3RyaXAgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRzaG93TWVzc2FnZXMobWVzc2FnZXNPclN0cmlwOiBNZXNzYWdlW10gfCBNZXNzYWdlU3RyaXApOiB2b2lkIHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShtZXNzYWdlc09yU3RyaXApKSB7XG5cdFx0XHR0aGlzLl9zaG93TWVzc2FnZXMobWVzc2FnZXNPclN0cmlwKTtcblx0XHR9IGVsc2UgaWYgKG1lc3NhZ2VzT3JTdHJpcC5pc0EoXCJzYXAubS5NZXNzYWdlU3RyaXBcIikpIHtcblx0XHRcdHRoaXMuc2hvd0N1c3RvbU1lc3NhZ2VTdHJpcChtZXNzYWdlc09yU3RyaXApO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93cyBhIGN1c3RvbSBNZXNzYWdlU3RyaXAgY29udHJvbCBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24uXG5cdCAqIEVuc3VyZXMgbXV0dWFsIGV4Y2x1c2l2aXR5IHdpdGggdGhlIE1lc3NhZ2VTdHJpcCByZW5kZXJlZCBieSB0aGUgb2JqZWN0IHBhZ2Ugdmlldy5cblx0ICogQHBhcmFtIG1lc3NhZ2VTdHJpcCBNZXNzYWdlU3RyaXAgY29udHJvbFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBzaG93Q3VzdG9tTWVzc2FnZVN0cmlwKG1lc3NhZ2VTdHJpcDogTWVzc2FnZVN0cmlwKTogdm9pZCB7XG5cdFx0Y29uc3QgbWVzc2FnZVN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLl92aWV3XG5cdFx0XHQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKVxuXHRcdFx0LmJpbmRDb250ZXh0KHRoaXMuX2dldE1lc3NhZ2VTdHJpcEJpbmRpbmdDb250ZXh0UGF0aCgpKVxuXHRcdFx0LmdldEJvdW5kQ29udGV4dCgpO1xuXHRcdGlmICghbWVzc2FnZVN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLnJlbW92ZUN1c3RvbU1lc3NhZ2VTdHJpcCgpOyAvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGN1c3RvbSBtZXNzYWdlIHN0cmlwIGJlZm9yZSBhZGRpbmcgbmV3IG9uZVxuXG5cdFx0Ly8gSGlkZSBmcmFtZXdvcmsgZ2VuZXJhdGVkIG1lc3NhZ2Ugc3RyaXAgdG8gZW5zdXJlIG11dHVhbCBleGNsdXNpdml0eVxuXHRcdG1lc3NhZ2VTdHJpcEludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiT1BCYWNrZW5kTWVzc2FnZVZpc2libGVcIiwgZmFsc2UpO1xuXHRcdG1lc3NhZ2VTdHJpcEludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KFwiT1BDdXN0b21NZXNzYWdlVmlzaWJsZVwiLCBmYWxzZSk7XG5cblx0XHR0aGlzLmN1c3RvbU1lc3NhZ2VTdHJpcElkID0gbWVzc2FnZVN0cmlwLmdldElkKCkgfHwgdWlkKCk7IC8vIFN0b3JlIHJlZmVyZW5jZSBmb3IgcHJvZ3JhbW1hdGljIHJlbW92YWxcblxuXHRcdG1lc3NhZ2VTdHJpcC5hZGRTdHlsZUNsYXNzKFwic2FwVWlTbWFsbE1hcmdpblRvcFwiKTtcblx0XHR0aGlzLmFkZEN1c3RvbU1lc3NhZ2VTdHJpcFRvUGFnZShtZXNzYWdlU3RyaXAsIG1lc3NhZ2VTdHJpcEludGVybmFsTW9kZWxDb250ZXh0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGEgY3VzdG9tIE1lc3NhZ2VTdHJpcCB0byB0aGUgcGFnZSBsYXlvdXQgaW4gdGhlIGhlYWRlciBjb250YWluZXIgc3VjaCBhcyBpbiBleHBhbmRlZCBhbmQgc25hcHBlZCBjb250ZW50LlxuXHQgKiBAcGFyYW0gbWVzc2FnZVN0cmlwIFRoZSBNZXNzYWdlU3RyaXAgY29udHJvbCB0byBhZGRcblx0ICogQHBhcmFtIG1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0XG5cdCAqL1xuXHRwcml2YXRlIGFkZEN1c3RvbU1lc3NhZ2VTdHJpcFRvUGFnZShtZXNzYWdlU3RyaXA6IE1lc3NhZ2VTdHJpcCwgbWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQ6IENvbnRleHQpOiB2b2lkIHtcblx0XHRjb25zdCBoZWFkZXJDb250YWluZXIgPSB0aGlzLl92aWV3LmJ5SWQoXCJmZTo6T2JqZWN0UGFnZUR5bmFtaWNIZWFkZXJUaXRsZVwiKTtcblx0XHRpZiAoaGVhZGVyQ29udGFpbmVyKSB7XG5cdFx0XHRjb25zdCBpbnNlcnRJbnRvQWdncmVnYXRpb24gPSAoYWdncmVnYXRpb25OYW1lOiBzdHJpbmcsIGNvbnRyb2xUb0luc2VydDogTWVzc2FnZVN0cmlwKTogdm9pZCA9PiB7XG5cdFx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uQ29udGVudCA9IGhlYWRlckNvbnRhaW5lci5nZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUpO1xuXHRcdFx0XHRpZiAoYWdncmVnYXRpb25Db250ZW50KSB7XG5cdFx0XHRcdFx0Y29uc3QgY29udGVudEFycmF5ID0gQXJyYXkuaXNBcnJheShhZ2dyZWdhdGlvbkNvbnRlbnQpID8gYWdncmVnYXRpb25Db250ZW50IDogW2FnZ3JlZ2F0aW9uQ29udGVudF07XG5cdFx0XHRcdFx0aGVhZGVyQ29udGFpbmVyLmluc2VydEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uTmFtZSwgY29udHJvbFRvSW5zZXJ0LCBjb250ZW50QXJyYXkubGVuZ3RoKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGluc2VydEludG9BZ2dyZWdhdGlvbihcImV4cGFuZGVkQ29udGVudFwiLCBtZXNzYWdlU3RyaXApO1xuXHRcdFx0aW5zZXJ0SW50b0FnZ3JlZ2F0aW9uKFwic25hcHBlZENvbnRlbnRcIiwgbWVzc2FnZVN0cmlwLmNsb25lKCkpO1xuXG5cdFx0XHRtZXNzYWdlc3RyaXBJbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShcIk9QQ3VzdG9tTWVzc2FnZVN0cmlwVmlzaWJsZVwiLCB0cnVlKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlcyB0aGUgYWN0aXZlIGN1c3RvbSBNZXNzYWdlU3RyaXAgcHJvZ3JhbW1hdGljYWxseS5cblx0ICovXG5cdHByaXZhdGUgcmVtb3ZlQ3VzdG9tTWVzc2FnZVN0cmlwKCk6IHZvaWQge1xuXHRcdGlmICghdGhpcy5jdXN0b21NZXNzYWdlU3RyaXBJZCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIEZpbmQgYW5kIHJlbW92ZSB0aGUgY3VzdG9tIG1lc3NhZ2Ugc3RyaXAgZnJvbSBoZWFkZXIgY29udGFpbmVyXG5cdFx0Y29uc3QgaGVhZGVyQ29udGFpbmVyID0gdGhpcy5fdmlldy5ieUlkKFwiZmU6Ok9iamVjdFBhZ2VEeW5hbWljSGVhZGVyVGl0bGVcIik7XG5cdFx0aWYgKGhlYWRlckNvbnRhaW5lcikge1xuXHRcdFx0Y29uc3QgcmVtb3ZlRnJvbUFnZ3JlZ2F0aW9uID0gKGFnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nLCBpZE1hdGNoZXI6IChjb250cm9sSWQ6IHN0cmluZykgPT4gYm9vbGVhbik6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSBoZWFkZXJDb250YWluZXIuZ2V0QWdncmVnYXRpb24oYWdncmVnYXRpb25OYW1lKSBhcyBDb250cm9sW107XG5cdFx0XHRcdGlmIChhZ2dyZWdhdGlvbkNvbnRlbnQpIHtcblx0XHRcdFx0XHRjb25zdCBjb250cm9sVG9SZW1vdmUgPSBhZ2dyZWdhdGlvbkNvbnRlbnQuZmluZCgoY29udHJvbCkgPT4gaWRNYXRjaGVyKGNvbnRyb2wuZ2V0SWQoKSkpO1xuXHRcdFx0XHRcdGlmIChjb250cm9sVG9SZW1vdmUpIHtcblx0XHRcdFx0XHRcdGhlYWRlckNvbnRhaW5lci5yZW1vdmVBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbk5hbWUsIGNvbnRyb2xUb1JlbW92ZSk7XG5cdFx0XHRcdFx0XHRjb250cm9sVG9SZW1vdmUuZGVzdHJveSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdHJlbW92ZUZyb21BZ2dyZWdhdGlvbihcImV4cGFuZGVkQ29udGVudFwiLCAoY29udHJvbElkKSA9PiBjb250cm9sSWQgPT09IHRoaXMuY3VzdG9tTWVzc2FnZVN0cmlwSWQpO1xuXHRcdFx0cmVtb3ZlRnJvbUFnZ3JlZ2F0aW9uKFwic25hcHBlZENvbnRlbnRcIiwgKGNvbnRyb2xJZCkgPT4gY29udHJvbElkLmluY2x1ZGVzKHRoaXMuY3VzdG9tTWVzc2FnZVN0cmlwSWQgKyBcIi1fX2Nsb25lXCIpKTtcblx0XHR9XG5cblx0XHR0aGlzLmN1c3RvbU1lc3NhZ2VTdHJpcElkID0gdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3QgbWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQgPSB0aGlzLl92aWV3XG5cdFx0XHQuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKVxuXHRcdFx0LmJpbmRDb250ZXh0KHRoaXMuX2dldE1lc3NhZ2VTdHJpcEJpbmRpbmdDb250ZXh0UGF0aCgpKVxuXHRcdFx0LmdldEJvdW5kQ29udGV4dCgpO1xuXHRcdGlmIChtZXNzYWdlc3RyaXBJbnRlcm5hbE1vZGVsQ29udGV4dCkge1xuXHRcdFx0bWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJPUEN1c3RvbU1lc3NhZ2VTdHJpcFZpc2libGVcIiwgZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgTWVzc2FnZUl0ZW0gZnJvbSBhIE1lc3NhZ2UgaW5zdGFuY2UuXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIG9iamVjdCBjb250YWluaW5nIHRleHQsIHR5cGUsIGRlc2NyaXB0aW9uLCBldGMuXG5cdCAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIE1lc3NhZ2VJdGVtIGluc3RhbmNlIGZvciB0aGUgTWVzc2FnZVBvcG92ZXIuXG5cdCAqL1xuXHRwcml2YXRlIGNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2U6IE1lc3NhZ2UpOiBNZXNzYWdlSXRlbSB7XG5cdFx0Y29uc3Qgc0Rlc2NyaXB0aW9uVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBtZXNzYWdlLmdldERlc2NyaXB0aW9uVXJsPy4oKTtcblxuXHRcdHJldHVybiBuZXcgTWVzc2FnZUl0ZW0oe1xuXHRcdFx0dGl0bGU6IG1lc3NhZ2UuZ2V0TWVzc2FnZSgpLFxuXHRcdFx0ZGVzY3JpcHRpb246IG1lc3NhZ2UuZ2V0RGVzY3JpcHRpb24oKSxcblx0XHRcdHR5cGU6IG1lc3NhZ2UuZ2V0VHlwZSgpLFxuXHRcdFx0bG9uZ3RleHRVcmw6IHNEZXNjcmlwdGlvblVybCxcblx0XHRcdHN1YnRpdGxlOiBtZXNzYWdlLmdldEFkZGl0aW9uYWxUZXh0Py4oKSxcblx0XHRcdGdyb3VwTmFtZTogXCJUX01FU1NBR0VfQlVUVE9OX1NBUEZFX01FU1NBR0VfR1JPVVBfR0VORVJBTFwiLFxuXHRcdFx0YWN0aXZlVGl0bGU6ICEhbWVzc2FnZS5nZXRDb250cm9sSWRzPy4oKS5sZW5ndGhcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgTWVzc2FnZVBvcG92ZXIgZm9yIGEgc2V0IG9mIE1lc3NhZ2VJdGVtcyBhbmQgYXR0YWNoZXNcblx0ICogYW4gYXN5bmMgZGVzY3JpcHRpb24gaGFuZGxlciB0byBsb2FkIGxvbmcgdGV4dCB3aGVuIG5lZWRlZC5cblx0ICogQHBhcmFtIG1lc3NhZ2VJdGVtcyBBcnJheSBvZiBNZXNzYWdlSXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBwb3BvdmVyLlxuXHQgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBNZXNzYWdlUG9wb3ZlciBpbnN0YW5jZS5cblx0ICovXG5cdGNyZWF0ZU1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VJdGVtczogTWVzc2FnZUl0ZW0pOiBNZXNzYWdlUG9wb3ZlciB7XG5cdFx0Y29uc3QgcG9wb3ZlciA9IG5ldyBNZXNzYWdlUG9wb3Zlcih7XG5cdFx0XHRpdGVtczogbWVzc2FnZUl0ZW1zXG5cdFx0fSkgYXMgTWVzc2FnZVBvcG92ZXI7XG5cdFx0cmV0dXJuIHBvcG92ZXI7XG5cdH1cblxuXHQvKipcblx0ICogT3BlbnMgYSBNZXNzYWdlUG9wb3ZlciBmb3IgdGhlIHByb3ZpZGVkIG1lc3NhZ2VzLCBhbmNob3JlZCB0byB0aGVcblx0ICogc291cmNlIGNvbnRyb2wgb2YgdGhlIFVJNSBldmVudC5cblx0ICogQHBhcmFtIGV2ZW50IFRoZSBVSTUgZXZlbnQgZnJvbSB0aGUgY29udHJvbCB0aGF0IHRyaWdnZXJzIHRoZSBwb3BvdmVyLlxuXHQgKiBAcGFyYW0gbWVzc2FnZSBBcnJheSBvZiBNZXNzYWdlIG9iamVjdHMgdG8gYmUgc2hvd24gaW4gdGhlIHBvcG92ZXIuXG5cdCAqIEByZXR1cm5zIFRoZSBNZXNzYWdlUG9wb3ZlciB0aGF0IHdhcyBvcGVuZWQuXG5cdCAqL1xuXHRzaG93TWVzc2FnZVBvcG92ZXIoZXZlbnQ6IFVJNUV2ZW50LCBtZXNzYWdlOiBNZXNzYWdlW10pOiBNZXNzYWdlUG9wb3ZlciB7XG5cdFx0Y29uc3QgbWVzc2FnZUl0ZW0gPSB0aGlzLmNyZWF0ZU1lc3NhZ2VJdGVtKG1lc3NhZ2VbMF0pO1xuXHRcdGNvbnN0IHBvcG92ZXIgPSB0aGlzLmNyZWF0ZU1lc3NhZ2VQb3BvdmVyKG1lc3NhZ2VJdGVtKTtcblx0XHRjb25zdCBzb3VyY2VDb250cm9sID0gZXZlbnQuZ2V0U291cmNlPy4oKSBhcyBDb250cm9sO1xuXHRcdHNvdXJjZUNvbnRyb2w/LmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHRwb3BvdmVyLm9wZW5CeShzb3VyY2VDb250cm9sKTtcblx0XHRyZXR1cm4gcG9wb3Zlcjtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyB0aGUgbWVzc2FnZSBzdHJpcCBiZXR3ZWVuIHRoZSB0aXRsZSBhbmQgdGhlIGhlYWRlciBvZiB0aGUgT2JqZWN0UGFnZS5cblx0ICogQHBhcmFtIG1lc3NhZ2VzIFRoZSBtZXNzYWdlIHRvIGJlIGRpc3BsYXllZFxuXHQgKiBAcGFyYW0gb3JpZ2luIFRoZSBvcmlnaW4gb2YgdGhlIG1lc3NhZ2UuIEl0IG1heSBjb21lIGZyb20gYSBiYWNrLWVuZCBtZXNzYWdlIG9yIGEgY3VzdG9tIG1lc3NhZ2Vcblx0ICovXG5cdF9zaG93TWVzc2FnZXMobWVzc2FnZXM6IE1lc3NhZ2VbXSwgb3JpZ2luOiBcIkJhY2tlbmRcIiB8IFwiQ3VzdG9tXCIgPSBcIkN1c3RvbVwiKTogdm9pZCB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmIChtZXNzYWdlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdC8vIE9ubHkgaWYgdGhlcmUgYXJlIG1lc3NhZ2VzIHRvIHNob3csIHdlIHJlbW92ZSBjdXN0b20gbWVzc2FnZSBzdHJpcC5cblx0XHRcdFx0Ly8gVGhpcyB3YXkgd2UgZW5zdXJlIHRoYXQgd2UgZG9uJ3QgaW50ZXJmZXJlIHdpdGggY3VzdG9tIG1lc3NhZ2Ugc3RyaXAncyBsaWZlY3lsZSB1bnRpbCB0aGVyZSBhcmUgbmV3IG1lc3NhZ2VzIHRvIHNob3cgaW4gdGhlIHN0YW5kYXJkIG1lc3NhZ2Ugc3RyaXAuXG5cdFx0XHRcdHRoaXMucmVtb3ZlQ3VzdG9tTWVzc2FnZVN0cmlwKCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHZpZXcgPSB0aGlzLl92aWV3O1xuXHRcdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHZpZXcuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKTtcblx0XHRcdGNvbnN0IG1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0ID0gaW50ZXJuYWxNb2RlbC5iaW5kQ29udGV4dCh0aGlzLl9nZXRNZXNzYWdlU3RyaXBCaW5kaW5nQ29udGV4dFBhdGgoKSkuZ2V0Qm91bmRDb250ZXh0KCk7XG5cdFx0XHRpZiAoIW1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBSZXNvdXJjZU1vZGVsSGVscGVyLmdldFJlc291cmNlTW9kZWwodmlldyk7XG5cdFx0XHRsZXQgbWVzc2FnZTogTWVzc2FnZSB8IG51bGwgPSBtZXNzYWdlc1swXSB8fCBudWxsO1xuXHRcdFx0bWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYE9QJHtvcmlnaW59TWVzc2FnZVZpc2libGVgLCAhIW1lc3NhZ2UpO1xuXHRcdFx0c3dpdGNoIChtZXNzYWdlcy5sZW5ndGgpIHtcblx0XHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0bWVzc2FnZSA9IG1lc3NhZ2VzWzBdO1xuXHRcdFx0XHRcdGNvbnN0IGhhc0Rlc2NyaXB0aW9uVXJsID0gISFtZXNzYWdlPy5nZXREZXNjcmlwdGlvblVybCgpO1xuXHRcdFx0XHRcdGNvbnN0IGlzRWRpdE1vZGUgPSBDb21tb25VdGlscy5nZXRJc0VkaXRhYmxlKHZpZXcpO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBvYmplY3RQYWdlID0gdmlldy5nZXRDb250ZW50KCk/LlswXSBhcyBPYmplY3RQYWdlTGF5b3V0O1xuXHRcdFx0XHRcdFx0Y29uc3QgaGVhZGVyVGl0bGUgPSBvYmplY3RQYWdlLmdldEhlYWRlclRpdGxlKCkgYXMgT2JqZWN0UGFnZUR5bmFtaWNIZWFkZXJUaXRsZTtcblxuXHRcdFx0XHRcdFx0Ly8gQ29sbGVjdCBhbGwgTWVzc2FnZVN0cmlwcyAoZXhjbHVkaW5nIENvbGxhYm9yYXRpb24gU3RyaXBzKVxuXHRcdFx0XHRcdFx0Y29uc3QgYWxsU3RyaXBzID0gW1xuXHRcdFx0XHRcdFx0XHQuLi4oaGVhZGVyVGl0bGUuZ2V0U25hcHBlZENvbnRlbnQ/LigpIHx8IFtdKSxcblx0XHRcdFx0XHRcdFx0Li4uKGhlYWRlclRpdGxlLmdldEV4cGFuZGVkQ29udGVudD8uKCkgfHwgW10pXG5cdFx0XHRcdFx0XHRdLmZpbHRlcihcblx0XHRcdFx0XHRcdFx0KGl0ZW0pOiBpdGVtIGlzIE1lc3NhZ2VTdHJpcCA9PiBpdGVtIGluc3RhbmNlb2YgTWVzc2FnZVN0cmlwICYmICFpdGVtLmdldElkKCk/LmluY2x1ZGVzKFwiQ29sbGFib3JhdGlvblN0cmlwXCIpXG5cdFx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0XHQvLyBPbmx5IGFkZCBsaW5rcyB3aGVuIG1lc3NhZ2UgaXMgZnJvbSBCYWNrZW5kLCBpbiBEaXNwbGF5IG1vZGUsIGFuZCBoYXMgYSBkZXNjcmlwdGlvbiBVUkxcblx0XHRcdFx0XHRcdGlmIChvcmlnaW4gPT09IFwiQmFja2VuZFwiICYmICFpc0VkaXRNb2RlICYmIGhhc0Rlc2NyaXB0aW9uVXJsKSB7XG5cdFx0XHRcdFx0XHRcdGFsbFN0cmlwcy5mb3JFYWNoKChzdHJpcCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdC8vIEFsd2F5cyBkZXN0cm95IHRoZSBleGlzdGluZyBsaW5rIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBvbmVcblx0XHRcdFx0XHRcdFx0XHRpZiAoc3RyaXAuZ2V0TGluaygpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzdHJpcC5kZXN0cm95TGluaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRjb25zdCBsaW5rID0gbmV3IExpbmsoe1xuXHRcdFx0XHRcdFx0XHRcdFx0dGV4dDogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFX0VSUk9SX01FU1NBR0VfU1RSSVBfTElOS19URVhUXCIpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJlc3M6IChldmVudDogVUk1RXZlbnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zaG93TWVzc2FnZVBvcG92ZXIoZXZlbnQsIFttZXNzYWdlIV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdHN0cmlwLnNldExpbmsobGluayk7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGxpbmtzIHdoZW4gbm90IGFwcGxpY2FibGVcblx0XHRcdFx0XHRcdFx0YWxsU3RyaXBzLmZvckVhY2goKHN0cmlwKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHN0cmlwLmdldExpbmsoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0c3RyaXAuZGVzdHJveUxpbmsoKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXCJVbmFibGUgdG8gYXR0YWNoIGxpbmsgdG8gT2JqZWN0UGFnZSBNZXNzYWdlU3RyaXBcIiwgZXJyIGFzIEVycm9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZVN0YXRzOiB7IFtrZXk6IHN0cmluZ106IHsgaWQ6IG51bWJlcjsgY291bnQ6IG51bWJlciB9IH0gPSB7XG5cdFx0XHRcdFx0XHRFcnJvcjogeyBpZDogMiwgY291bnQ6IDAgfSxcblx0XHRcdFx0XHRcdFdhcm5pbmc6IHsgaWQ6IDEsIGNvdW50OiAwIH0sXG5cdFx0XHRcdFx0XHRJbmZvcm1hdGlvbjogeyBpZDogMCwgY291bnQ6IDAgfVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0bWVzc2FnZSA9IG1lc3NhZ2VzLnJlZHVjZShcblx0XHRcdFx0XHRcdChhY2MsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBjdXJyZW50VHlwZSA9IGN1cnJlbnRWYWx1ZS5nZXRUeXBlKCk7XG5cdFx0XHRcdFx0XHRcdGFjYy5zZXRUeXBlKG1lc3NhZ2VTdGF0c1tjdXJyZW50VHlwZV0uaWQgPiBtZXNzYWdlU3RhdHNbYWNjLmdldFR5cGUoKV0uaWQgPyBjdXJyZW50VHlwZSA6IGFjYy5nZXRUeXBlKCkpO1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlU3RhdHNbY3VycmVudFR5cGVdLmNvdW50Kys7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhY2M7XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0bmV3IE1lc3NhZ2UoeyB0eXBlOiBNZXNzYWdlVHlwZS5JbmZvcm1hdGlvbiB9KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0aWYgKG9yaWdpbiA9PT0gXCJCYWNrZW5kXCIgJiYgIUNvbW1vblV0aWxzLmdldElzRWRpdGFibGUodmlldykpIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0LnNldFByb3BlcnR5KGBPUCR7b3JpZ2lufU1lc3NhZ2VWaXNpYmxlYCwgZmFsc2UpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtZXNzYWdlc3RyaXBJbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgT1Ake29yaWdpbn1NZXNzYWdlVmlzaWJsZWAsICEhbWVzc2FnZSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKG1lc3NhZ2VTdGF0cy5FcnJvci5jb3VudCA+IDApIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2Uuc2V0TWVzc2FnZShyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJPQkpFQ1RQQUdFU1RBVEVfRVJST1JcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAobWVzc2FnZVN0YXRzLldhcm5pbmcuY291bnQgPiAwKSB7XG5cdFx0XHRcdFx0XHRtZXNzYWdlLnNldE1lc3NhZ2UocmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiT0JKRUNUUEFHRVNUQVRFX1dBUk5JTkdcIikpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRtZXNzYWdlLnNldE1lc3NhZ2UocmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiT0JKRUNUUEFHRVNUQVRFX0lORk9STUFUSU9OXCIpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRtZXNzYWdlc3RyaXBJbnRlcm5hbE1vZGVsQ29udGV4dC5zZXRQcm9wZXJ0eShgT1Ake29yaWdpbn1NZXNzYWdlVGV4dGAsIG1lc3NhZ2UgPyBtZXNzYWdlLmdldE1lc3NhZ2UoKSA6IG51bGwpO1xuXHRcdFx0bWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYE9QJHtvcmlnaW59TWVzc2FnZVR5cGVgLCBtZXNzYWdlID8gbWVzc2FnZS5nZXRUeXBlKCkgOiBudWxsKTtcblx0XHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHRcdEludmlzaWJsZU1lc3NhZ2UuZ2V0SW5zdGFuY2UoKS5hbm5vdW5jZShtZXNzYWdlLmdldE1lc3NhZ2UoKSwgSW52aXNpYmxlTWVzc2FnZU1vZGUuQXNzZXJ0aXZlKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCBkaXNwbGF5IE9iamVjdFBhZ2UgbWVzc2FnZVwiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSGlkZXMgdGhlIG1lc3NhZ2Ugc3RyaXAgYmVsb3cgdGhlIGFuY2hvciBiYXIuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGhpZGVNZXNzYWdlKCk6IHZvaWQge1xuXHRcdGNvbnN0IG1lc3NhZ2VzdHJpcEludGVybmFsTW9kZWxDb250ZXh0ID0gdGhpcy5fdmlld1xuXHRcdFx0LmdldE1vZGVsKFwiaW50ZXJuYWxcIilcblx0XHRcdC5iaW5kQ29udGV4dCh0aGlzLl9nZXRNZXNzYWdlU3RyaXBCaW5kaW5nQ29udGV4dFBhdGgoKSlcblx0XHRcdC5nZXRCb3VuZENvbnRleHQoKSE7XG5cdFx0bWVzc2FnZXN0cmlwSW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoYE9QQ3VzdG9tTWVzc2FnZVZpc2libGVgLCBmYWxzZSk7XG5cdFx0dGhpcy5yZW1vdmVDdXN0b21NZXNzYWdlU3RyaXAoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSB0aGUgcmVjb21tZW5kYXRpb24gZGF0YSBkZXRhaWxzLCB0cmFuc2Zvcm0gaXQsIGFuZCB1cGRhdGUgdGhlIGludGVybmFsIG1vZGVsLlxuXHQgKiBAcGFyYW0gZGF0YSBSZWNvbW1lbmRhdGlvbiBkYXRhIGZvciB0aGUgYXBwXG5cdCAqL1xuXHRzZXRSZWNvbW1lbmRhdGlvbnMoZGF0YTogSW5Db21wbGV0ZW5lc3NJbmZvVHlwZSk6IHZvaWQge1xuXHRcdHJlY29tbWVuZGF0aW9uSGVscGVyLnRyYW5zZm9ybVJlY29tbWVuZGF0aW9uc0ZvckludGVybmFsU3RvcmFnZShkYXRhKTtcblx0XHR0aGlzLl92aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIikuc2V0UHJvcGVydHkoXCIvcmVjb21tZW5kYXRpb25zRGF0YVwiLCBkYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZWZpbmVzIGEgY29udHJvbCB0byBiZSB0aGUgdGl0bGUgb3duZXIgb2YgaXRzIHNlY3Rpb24vc3Vic2VjdGlvbi4gQXMgdGhlIHRpdGxlIG93bmVycyBvZiBzdGFuZGFyZCBzdWJzZWN0aW9ucyBhcmUgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5LCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBmdW5jdGlvbiBmb3IgY3VzdG9tIHNlY3Rpb24vc3Vic2VjdGlvbi5cblx0ICogVGhlIHRpdGxlIG93bmVyIGNhbiBiZSBlaXRoZXIgb25lIG9mIHRoZSBzdGFuZGFyZCBidWlsZGluZyBibG9ja3MgKEZvcm0sIENoYXJ0LCBUYWJsZSksIG9yIHJldXNlIGNvbXBvbmVudHMsIG9yIHNhcC5tLlRpdGxlLlxuXHQgKiBUaGUgZnJhbWV3b3JrIGFkYXB0cyB0aGUgdmFsdWUgb2YgdGhlc2UgcHJvcGVydGllcyB0byBiZSBhbGlnbmVkIHdpdGggdGhlIHRpdGxlIHRoYXQgaXMgc2hvd24gaW4gdGhlIGFuY2hvciBiYXIgKG9yIGljb24gdGFiIGJhcikgZm9yIHRoZSBzZWN0aW9uLiBNb3Jlb3ZlciwgdGhlIHRpdGxlIG9mIHRoZSBzdWJzZWN0aW9uIChhbmQgaWYgYXBwbGljYWJsZSBhbHNvIG9mIHRoZSBzZWN0aW9uKSBpcyBoaWRkZW4gaW4gb3JkZXIgdG8gcHJldmVudCByZWR1bmRhbnQgdGl0bGVzLCBpZiB0aGUgc3Vic2VjdGlvbiBwb3NzZXNzZXMgYSB0aXRsZSBvd25lci5cblx0ICogSGludDogSWYgeW91IGNob29zZSB0byBzZXQgc2FwLm0uVGl0bGUgYXMgdGhlIHRpdGxlIG93bmVyLCBzdHlsaW5nIGFkanVzdG1lbnRzIG1heSBiZSByZXF1aXJlZCBpbiB0aGUgY3VzdG9tIHZpZXcuIEZvciBleGFtcGxlLCBpZiBzYXAubS5UaXRsZSBpcyBzZXQgYXMgdGl0bGUgb3duZXIgd2hpY2ggYmVsb25ncyB0byBzYXAubS5PdmVyZmxvd1Rvb2xiYXIgb3IgdG8gc2FwLm0uVG9vbGJhciwgdGhlbiB0aGUg4oCYZGVzaWdu4oCZIHByb3BlcnR5IG9mIHRoZSB0b29sYmFyIGNvbnRyb2wgaXMgdG8gYmUgc2V0IHRvIOKAmFRyYW5zcGFyZW504oCZLlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGUgc2luZ2xlIGNvbnRlbnQgY29udHJvbCBjYW4gYmUgZWl0aGVyIG9uZSBvZiB0aGUgc3RhbmRhcmQgYnVpbGRpbmcgYmxvY2tzIChGb3JtLCBDaGFydCwgVGFibGUpLCBvciByZXVzZSBjb21wb25lbnRzLCBvciBzYXAubS5UaXRsZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0c2V0QXNTZWN0aW9uVGl0bGVPd25lcihjb250cm9sOiBNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG5cdFx0bGV0IHNlY3Rpb247XG5cdFx0Y29uc3Qgb3JpZ2luYWxDb250cm9sID0gY29udHJvbDtcblx0XHRsZXQgcmV1c2VDb21wb25lbnQ7XG5cdFx0d2hpbGUgKGNvbnRyb2wpIHtcblx0XHRcdGlmIChjb250cm9sLmlzQTxTZWN0aW9uPihcInNhcC5mZS5tYWNyb3MuY29udHJvbHMuU2VjdGlvblwiKSkge1xuXHRcdFx0XHRzZWN0aW9uID0gY29udHJvbDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoY29udHJvbC5pc0E8UmV1c2VDb21wb25lbnQ+KFwic2FwLmZlLmNvcmUuUmV1c2VDb21wb25lbnRcIikpIHtcblx0XHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuY29udGFpbmVyLmdldFBhcmVudCgpIGFzIENvbnRyb2w7XG5cdFx0XHRcdHJldXNlQ29tcG9uZW50ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNvbnRyb2xQYXJlbnQgPSBjb250cm9sLmdldFBhcmVudCgpO1xuXHRcdFx0aWYgKGNvbnRyb2xQYXJlbnQpIHtcblx0XHRcdFx0Y29udHJvbCA9IGNvbnRyb2xQYXJlbnQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHNlY3Rpb24pIHtcblx0XHRcdGlmIChyZXVzZUNvbXBvbmVudCAmJiBzZWN0aW9uLmdldFZpc2libGVTdWJTZWN0aW9ucygpLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0c2VjdGlvbi5hZGp1c3RGb3JTaW5nbGVDb250ZW50KG9yaWdpbmFsQ29udHJvbCwgeyBtdWx0aXBsZVN1YlNlY3Rpb25zV2l0aFJldXNlQ29tcG9uZW50OiB0cnVlIH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VjdGlvbi5hZGp1c3RGb3JTaW5nbGVDb250ZW50KG9yaWdpbmFsQ29udHJvbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIERpc3BsYXlzIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBuYXZpZ2F0aW9uIHRvIGEgc2VjdGlvbiBmYWlscy5cblx0ICovXG5cdHByaXZhdGUgc2hvd05hdmlnYXRpb25FcnJvcigpOiB2b2lkIHtcblx0XHRjb25zdCByZXNvdXJjZU1vZGVsID0gUmVzb3VyY2VNb2RlbEhlbHBlci5nZXRSZXNvdXJjZU1vZGVsKHRoaXMuX3ZpZXcpO1xuXHRcdGNvbnN0IHNUaXRsZSA9IHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIkNfUk9VVElOR19OQVZJR0FUSU9OX0RJU0FCTEVEX1RJVExFXCIpO1xuXHRcdExvZy5lcnJvcihzVGl0bGUpO1xuXHRcdE1lc3NhZ2VCb3guZXJyb3Ioc1RpdGxlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBOYXZpZ2F0ZSB0byBhIHNwZWNpZmljIHNlY3Rpb24gb3Igc3Vic2VjdGlvbiB3aXRoaW4gdGhlIGN1cnJlbnQgcGFnZS5cblx0ICogV29ya3Mgd2l0aCBPYmplY3QgUGFnZSBsYXlvdXRzIGFuZCBvdGhlciBzZWN0aW9uLWJhc2VkIGxheW91dHMuXG5cdCAqIEBwYXJhbSBzZWN0aW9uT3JTdWJTZWN0aW9uSWQgVGhlIElEIG9mIHRoZSB0YXJnZXQgc2VjdGlvbiBvciBzdWJzZWN0aW9uICh3aXRob3V0IGEgdmlldyBwcmVmaXgsIGZvciBleGFtcGxlLCBcImZlOjpGYWNldFNlY3Rpb246OlRyYXZlbERhdGFcIiBvciBcImZlOjpTdWJTZWN0aW9uOjpEZXRhaWxzXCIpXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdG5hdmlnYXRlVG9TdWJTZWN0aW9uKHNlY3Rpb25PclN1YlNlY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIEZpbmQgdGhlIE9iamVjdCBQYWdlIExheW91dCBjb250cm9sXG5cdFx0XHRjb25zdCBvYmplY3RQYWdlTGF5b3V0ID0gdGhpcy5fdmlldy5nZXRDb250ZW50KClbMF0gYXMgT2JqZWN0UGFnZUxheW91dCB8IHVuZGVmaW5lZDtcblxuXHRcdFx0aWYgKCFvYmplY3RQYWdlTGF5b3V0KSB7XG5cdFx0XHRcdHRoaXMuc2hvd05hdmlnYXRpb25FcnJvcigpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICghc2VjdGlvbk9yU3ViU2VjdGlvbklkKSB7XG5cdFx0XHRcdHRoaXMuc2hvd05hdmlnYXRpb25FcnJvcigpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGNvbnRyb2wgPSB0aGlzLl92aWV3LmJ5SWQoc2VjdGlvbk9yU3ViU2VjdGlvbklkKTtcblxuXHRcdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRcdHRoaXMuc2hvd05hdmlnYXRpb25FcnJvcigpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGxldCB0YXJnZXRTdWJTZWN0aW9uOiBPYmplY3RQYWdlU3ViU2VjdGlvbiB8IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gQ2hlY2sgaWYgY29udHJvbCBpcyBhIFN1YlNlY3Rpb24gb3IgU2VjdGlvblxuXHRcdFx0aWYgKGNvbnRyb2wuaXNBPE9iamVjdFBhZ2VTdWJTZWN0aW9uPihcInNhcC51eGFwLk9iamVjdFBhZ2VTdWJTZWN0aW9uXCIpKSB7XG5cdFx0XHRcdHRhcmdldFN1YlNlY3Rpb24gPSBjb250cm9sO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sLmlzQTxPYmplY3RQYWdlU2VjdGlvbj4oXCJzYXAudXhhcC5PYmplY3RQYWdlU2VjdGlvblwiKSkge1xuXHRcdFx0XHQvLyBJZiBpdCdzIGEgc2VjdGlvbiwgZ2V0IHRoZSBmaXJzdCBzdWJzZWN0aW9uXG5cdFx0XHRcdGNvbnN0IHN1YlNlY3Rpb25zID0gY29udHJvbC5nZXRTdWJTZWN0aW9ucygpO1xuXHRcdFx0XHR0YXJnZXRTdWJTZWN0aW9uID0gc3ViU2VjdGlvbnMubGVuZ3RoID4gMCA/IHN1YlNlY3Rpb25zWzBdIDogdW5kZWZpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBWYWxpZGF0ZSBzdWJzZWN0aW9uXG5cdFx0XHRpZiAoIXRhcmdldFN1YlNlY3Rpb24gfHwgIXRhcmdldFN1YlNlY3Rpb24uZ2V0VmlzaWJsZSgpKSB7XG5cdFx0XHRcdHRoaXMuc2hvd05hdmlnYXRpb25FcnJvcigpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIEdldCB0aGUgZnVsbCBzdWJzZWN0aW9uIElEIChpbmNsdWRpbmcgdmlldyBwcmVmaXgpXG5cdFx0XHRjb25zdCBzdWJzZWN0aW9uRnVsbElkID0gdGFyZ2V0U3ViU2VjdGlvbi5nZXRJZCgpO1xuXG5cdFx0XHRpZiAoIXN1YnNlY3Rpb25GdWxsSWQpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiU3Vic2VjdGlvbiBJRCBpcyB1bmRlZmluZWQsIGNhbm5vdCBzZXQgc2VsZWN0ZWQgc2VjdGlvbi5cIik7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF2aWdhdGUgdXNpbmcgT2JqZWN0UGFnZUxheW91dCBBUElcblx0XHRcdG9iamVjdFBhZ2VMYXlvdXQuc2V0U2VsZWN0ZWRTZWN0aW9uKHN1YnNlY3Rpb25GdWxsSWQpO1xuXG5cdFx0XHQvLyBUcmlnZ2VyIGlBcHAgc3RhdGUgY2hhbmdlIGJ5IGZpcmluZyBuYXZpZ2F0ZSBldmVudFxuXHRcdFx0Y29uc3QgcGFyZW50U2VjdGlvbiA9IHRhcmdldFN1YlNlY3Rpb24uZ2V0UGFyZW50KCkgYXMgT2JqZWN0UGFnZVNlY3Rpb247XG5cdFx0XHRvYmplY3RQYWdlTGF5b3V0LmZpcmVOYXZpZ2F0ZSh7XG5cdFx0XHRcdHNlY3Rpb246IHBhcmVudFNlY3Rpb24sXG5cdFx0XHRcdHN1YlNlY3Rpb246IHRhcmdldFN1YlNlY3Rpb25cblx0XHRcdH0pO1xuXHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJFcnJvciBkdXJpbmcgbmF2aWdhdGlvbiB0byBzdWJzZWN0aW9uOlwiLCBlcnJvciBhcyBFcnJvcik7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdFBhZ2VFeHRlbnNpb25BUEk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0VBa0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVJBLElBVU1BLHNCQUFzQixJQUFBQyxJQUFBLEdBRDNCQyxjQUFjLENBQUMsMENBQTBDLENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLDBCQUFBQyxhQUFBO0lBQUEsU0FBQUosdUJBQUE7TUFBQSxPQUFBSSxhQUFBLENBQUFDLEtBQUEsT0FBQUMsU0FBQTtJQUFBO0lBQUFDLGNBQUEsQ0FBQVAsc0JBQUEsRUFBQUksYUFBQTtJQUFBLElBQUFJLE1BQUEsR0FBQVIsc0JBQUEsQ0FBQVMsU0FBQTtJQUUxRDtBQUNEO0FBQ0E7SUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBUENELE1BQUEsQ0FRTUUsT0FBTyxHQUFiLGVBQU1BLE9BQU9BLENBQUNDLEtBQXlCLEVBQWlCO01BQ3ZELE1BQU1DLGVBQWUsR0FBRyxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztNQUN0RCxJQUFJLENBQUNGLGVBQWUsRUFBRTtRQUNyQjtRQUNBLE9BQU9HLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7TUFDekI7TUFDQSxNQUFNQyxhQUFhLEdBQUdDLFdBQVcsQ0FBQ0MsZUFBZSxDQUFDLElBQUksQ0FBQ04sS0FBSyxDQUFDO1FBQzVETyxtQkFBbUIsR0FBR0gsYUFBYSxDQUFDSSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzNEQyxVQUFVLEdBQUdWLGVBQWUsQ0FBQ1csUUFBUSxDQUFDLENBQUMsQ0FBQ0MsWUFBWSxDQUFDLENBQUM7UUFDdERDLFlBQW1DLEdBQUc7VUFDckNDLGdCQUFnQixFQUFFLEVBQUU7VUFDcEJDLGNBQWMsRUFBRTtRQUNqQixDQUFDO01BRUYsSUFBSWhCLEtBQUssS0FBS2lCLFNB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QSxNQUFNckcsT0FBTyxHQUFHLElBQUksQ0FBQ2xGLEtBQUssQ0FBQ21DLElBQUksQ0FBQ3dKLHFCQUFxQixDQUFDO1FBRXRELElBQUksQ0FBQ3pHLE9BQU8sRUFBRTtVQUNiLElBQUksQ0FBQ3FHLG1CQUFtQixDQUFDLENBQUM7VUFDMUI7UUFDRDtRQUVBLElBQUlNLGdCQUFrRDs7UUFFdEQ7UUFDQSxJQUFJM0csT0FBTyxDQUFDOUMsR0FBRyxDQUF1QiwrQkFBK0IsQ0FBQyxFQUFFO1VBQ3ZFeUosZ0JBQWdCLEdBQUczRyxPQUFPO1FBQzNCLENBQUMsTUFBTSxJQUFJQSxPQUFPLENBQUM5QyxHQUFHLENBQW9CLDRCQUE0QixDQUFDLEVBQUU7VUFDeEU7VUFDQSxNQUFNMEosV0FBVyxHQUFHNUcsT0FBTyxDQUFDNkcsY0FBYyxDQUFDLENBQUM7VUFDNUNGLGdCQUFnQixHQUFHQyxXQUFXLENBQUNsSCxNQUFNLEdBQUcsQ0FBQyxHQUFHa0gsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHL0ssU0FBUztRQUN2RTs7UUFFQTtRQUNBLElBQUksQ0FBQzhLLGdCQUFnQixJQUFJLENBQUNBLGdCQUFnQixDQUFDRyxVQUFVLENBQUMsQ0FBQyxFQUFFO1VBQ3hELElBQUksQ0FBQ1QsbUJBQW1CLENBQUMsQ0FBQztVQUMxQjtRQUNEOztRQUVBO1FBQ0EsTUFBTVUsZ0JBQWdCLEdBQUdKLGdCQUFnQixDQUFDOUgsS0FBSyxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDa0ksZ0JBQWdCLEVBQUU7VUFDdEI5QyxHQUFHLENBQUNxQixLQUFLLENBQUMsMERBQTBELENBQUM7VUFDckU7UUFDRDs7UUFFQTtRQUNBb0IsZ0JBQWdCLENBQUNNLGtCQUFrQixDQUFDRCxnQkFBZ0IsQ0FBQzs7UUFFckQ7UUFDQSxNQUFNRSxhQUFhLEdBQUdOLGdCQUFnQixDQUFDeEosU0FBUyxDQUFDLENBQXNCO1FBQ3ZFdUosZ0JBQWdCLENBQUNRLFlBQVksQ0FBQztVQUM3QnJCLE9BQU8sRUFBRW9CLGFBQWE7VUFDdEJFLFVBQVUsRUFBRVI7UUFDYixDQUFDLENBQUM7TUFDSCxDQUFDLENBQUMsT0FBT3JCLEtBQUssRUFBRTtRQUNmckIsR0FBRyxDQUFDcUIsS0FBSyxDQUFDLHdDQUF3QyxFQUFFQSxLQUFjLENBQUM7TUFDcEU7SUFDRCxDQUFDO0lBQUEsT0FBQXJMLHNCQUFBO0VBQUEsRUF6Zm1DbU4sWUFBWSxNQUFBaE4sTUFBQTtFQUFBLE9BNGZsQ0gsc0JBQXNCO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -313,7 +313,11 @@ class ObjectPageExtensionAPI extends ExtensionAPI {
313
313
  */
314
314
  _showMessages(messages: Message[], origin: "Backend" | "Custom" = "Custom"): void {
315
315
  try {
316
- this.removeCustomMessageStrip();
316
+ if (messages.length > 0) {
317
+ // Only if there are messages to show, we remove custom message strip.
318
+ // This way we ensure that we don't interfere with custom message strip's lifecyle until there are new messages to show in the standard message strip.
319
+ this.removeCustomMessageStrip();
320
+ }
317
321
 
318
322
  const view = this._view;
319
323
  const internalModel = view.getModel("internal");