@sapui5/sap.fe.macros 1.108.12 → 1.108.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.macros",
3
- "version": "1.108.12",
3
+ "version": "1.108.13",
4
4
  "description": "SAPUI5 Library sap.fe.macros",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "SAP SE (https://www.sap.com)",
@@ -6,7 +6,7 @@
6
6
  <copyright>SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.108.12</version>
9
+ <version>1.108.13</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.macros</documentation>
12
12
 
@@ -425,6 +425,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
425
425
  }
426
426
  }
427
427
  },
428
+ openExternalLink: function (event) {
429
+ var source = event.getSource();
430
+ if (source.data("url") && source.getProperty("text") !== "") {
431
+ // This opens the link in the same tab as the link. It was done to be more consistent with other type of links.
432
+ openWindow(source.data("url"), "_self");
433
+ }
434
+ },
428
435
  pressLink: function (oEvent) {
429
436
  try {
430
437
  var openLink = function (mdcLink) {
@@ -740,4 +747,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
740
747
  */
741
748
  return FieldRuntime;
742
749
  }, true);
743
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib2R5IiwicmVjb3ZlciIsInJlc3VsdCIsImUiLCJ0aGVuIiwiRmllbGRSdW50aW1lIiwicmVzZXRDaGFuZ2VzSGFuZGxlciIsInVuZGVmaW5lZCIsInVwbG9hZFByb21pc2VzIiwiZm9ybWF0RHJhZnRPd25lclRleHRJblBvcG92ZXIiLCJiSGFzRHJhZnRFbnRpdHkiLCJzRHJhZnRJblByb2Nlc3NCeVVzZXIiLCJzRHJhZnRMYXN0Q2hhbmdlZEJ5VXNlciIsInNEcmFmdEluUHJvY2Vzc0J5VXNlckRlc2MiLCJzRHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MiLCJzVXNlckRlc2NyaXB0aW9uIiwiUmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aCIsIm9Tb3VyY2UiLCJvQ29udHJvbGxlciIsInNTZW1hbnRpY09iamVjdE5hbWUiLCJfcm91dGluZyIsIm9CaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib1ZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJvTWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJmbk5hdmlnYXRlIiwib0NvbnRleHQiLCJuYXZpZ2F0ZVRvVGFyZ2V0IiwiZ2V0Vmlld0RhdGEiLCJjb252ZXJ0ZXJUeXBlIiwiTW9kZWxIZWxwZXIiLCJpc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJkcmFmdCIsInByb2Nlc3NEYXRhTG9zc09yRHJhZnREaXNjYXJkQ29uZmlybWF0aW9uIiwiRnVuY3Rpb24iLCJwcm90b3R5cGUiLCJnZXRDb250cm9sbGVyIiwiTmF2aWdhdGlvblR5cGUiLCJGb3J3YXJkTmF2aWdhdGlvbiIsIkxvZyIsImVycm9yIiwiaXNEcmFmdEluZGljYXRvclZpc2libGUiLCJzUHJvcGVydHlQYXRoIiwic1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3IiLCJIYXNEcmFmdEVudGl0eSIsIklzQWN0aXZlRW50aXR5IiwiaGlkZURyYWZ0SW5mbyIsImhhc1RhcmdldHMiLCJiU2VtYW50aWNPYmplY3RIYXNUYXJnZXRzIiwiZ2V0U3RhdGVEZXBlbmRpbmdPblNlbWFudGljT2JqZWN0VGFyZ2V0cyIsIm9uVmFsaWRhdGVGaWVsZEdyb3VwIiwib0V2ZW50Iiwib0ZFQ29udHJvbGxlciIsIl9nZXRFeHRlbnNpb25Db250cm9sbGVyIiwiX3NpZGVFZmZlY3RzIiwiaGFuZGxlRmllbGRHcm91cENoYW5nZSIsImhhbmRsZUNoYW5nZSIsIm9Tb3VyY2VGaWVsZCIsImdldFNvdXJjZSIsImJJc1RyYW5zaWVudCIsImlzVHJhbnNpZW50IiwicFZhbHVlUmVzb2x2ZWQiLCJnZXRQYXJhbWV0ZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsImJWYWxpZCIsIm1QYXJhbWV0ZXJzIiwidmFsaWQiLCJGaWVsZEFQSSIsImNhdGNoIiwiX2VkaXRGbG93Iiwic3luY1Rhc2siLCJoYW5kbGVGaWVsZENoYW5nZSIsIm9GaWVsZCIsImJDb2xsYWJvcmF0aW9uRW5hYmxlZCIsIkNvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMiLCJpc0Nvbm5lY3RlZCIsIm9CaW5kaW5nIiwic0JpbmRpbmdQYXRoIiwiZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlIiwic3RhdGUiLCJnZXRCaW5kaW5nIiwiaXNBIiwiZGF0YSIsImdldEJpbmRpbmdJbmZvIiwicGFydHMiLCJtYXAiLCJwYXJ0IiwicGF0aCIsImdldFBhdGgiLCJhdHRhY2hFdmVudE9uY2UiLCJzZW5kIiwiQWN0aXZpdHkiLCJDaGFuZ2UiLCJoYW5kbGVMaXZlQ2hhbmdlIiwic0Z1bGxQYXRoIiwiTGl2ZUNoYW5nZSIsImdldFZhbHVlIiwiVW5kbyIsImRldGFjaEJyb3dzZXJFdmVudCIsImF0dGFjaEJyb3dzZXJFdmVudCIsImhhbmRsZU9wZW5QaWNrZXIiLCJoYW5kbGVDbG9zZVBpY2tlciIsIkRhdGUiLCJ0b0RhdGVTdHJpbmciLCJoYW5kbGVPcGVuVXBsb2FkZXIiLCJnZXRQYXJlbnQiLCJnZXRBdmF0YXIiLCJoYW5kbGVDbG9zZVVwbG9hZGVyIiwibUZpZWxkU3RhdGUiLCJfaXNCaW5kaW5nU3RhdGVNZXNzYWdlcyIsImdldERhdGFTdGF0ZSIsImdldEludmFsaWRWYWx1ZSIsImdldENvbnRlbnQiLCJGaWVsZFdyYXBwZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJnZXRFZGl0TW9kZSIsImdldENvbnRlbnRFZGl0IiwiYklzVmFsaWQiLCJnZXRNYXhDb25kaXRpb25zIiwib1ZhbHVlQmluZGluZ0luZm8iLCJiaW5kaW5nIiwiZ2V0UHJvcGVydHkiLCJmaWVsZFZhbHVlIiwidmFsaWRpdHkiLCJmaWVsZCIsIl9mbkZpeEhhc2hRdWVyeVN0cmluZyIsInNDdXJyZW50SGFzaCIsImluZGV4T2YiLCJzcGxpdCIsIl9mbkdldExpbmtJbmZvcm1hdGlvbiIsIl9vU291cmNlIiwiX29MaW5rIiwiX3NQcm9wZXJ0eVBhdGgiLCJfc1ZhbHVlIiwiZm5TZXRBY3RpdmUiLCJvTW9kZWwiLCJvSW50ZXJuYWxNb2RlbENvbnRleHQiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50Iiwib1NoZWxsU2VydmljZUhlbHBlciIsImdldFNoZWxsU2VydmljZXMiLCJwR2V0TGlua3NQcm9taXNlIiwiZ2V0TGlua3NXaXRoQ2FjaGUiLCJzZW1hbnRpY09iamVjdCIsImFTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyIsImdldE9iamVjdCIsIlNlbWFudGljT2JqZWN0TmFtZSIsIlNlbWFudGljT2JqZWN0RnVsbFBhdGgiLCJNZXRhTW9kZWwiLCJJbnRlcm5hbE1vZGVsQ29udGV4dCIsIlNoZWxsU2VydmljZUhlbHBlciIsIkdldExpbmtzUHJvbWlzZSIsIlNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zIiwiX2ZuUXVpY2tWaWV3SGFzTmV3Q29uZGl0aW9uIiwib1NlbWFudGljT2JqZWN0UGF5bG9hZCIsIl9vTGlua0luZm8iLCJiUmVzdWx0aW5nTmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyIiwiX2ZuUXVpY2tWaWV3U2V0TmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyIiwiX29GaW5hbFNlbWFudGljT2JqZWN0cyIsInNUbXBQYXRoIiwiYVNlbWFudGljT2JqZWN0UGF0aHMiLCJPYmplY3QiLCJrZXlzIiwiaVBhdGhzQ291bnQiLCJfZm5VcGRhdGVTZW1hbnRpY09iamVjdHNUYXJnZXRNb2RlbCIsInNWYWx1ZSIsIm9Db250cm9sIiwiYkFjdGl2ZSIsInNldEFjdGl2ZSIsInNldFRpdGxlQWN0aXZlIiwib0NvbmRpdGlvbmFsV3JhcHBlciIsInNldENvbmRpdGlvbiIsIm9MaW5rSW5mbyIsImdldEhhc2giLCJ1cGRhdGVTZW1hbnRpY1RhcmdldHMiLCJvRmluYWxTZW1hbnRpY09iamVjdHMiLCJvRXJyb3IiLCJfY2hlY2tDb250cm9sSGFzTW9kZWxBbmRCaW5kaW5nQ29udGV4dCIsIl9jb250cm9sIiwiX2NoZWNrQ3VzdG9tRGF0YVZhbHVlQmVmb3JlVXBkYXRpbmdTZW1hbnRpY09iamVjdE1vZGVsIiwicHJvcGVydHlQYXRoIiwiYUN1c3RvbURhdGEiLCJzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUiLCJvVmFsdWVCaW5kaW5nIiwiX2ZuQ3VzdG9tRGF0YVZhbHVlSXNTdHJpbmciLCJzZW1hbnRpY09iamVjdFBhdGhWYWx1ZSIsImZpbHRlciIsImN1c3RvbURhdGEiLCJnZXRLZXkiLCJpbmRleCIsIl9vQ2hhbmdlRXZlbnQiLCJMaW5rTW9kZWxDb250ZXh0Q2hhbmdlIiwic1Byb3BlcnR5Iiwic1BhdGhUb1Byb3BlcnR5IiwiY29udHJvbCIsIm1kY0xpbmsiLCJnZXREZXBlbmRlbnRzIiwibGVuZ3RoIiwiZ2V0Q3VzdG9tRGF0YSIsInByZXNzTGluayIsIm9wZW5MaW5rIiwiZ2V0VHJpZ2dlckhyZWYiLCJzSHJlZiIsIm9wZW4iLCJvTGluayIsIm9TaGVsbEhhc2giLCJwYXJzZVNoZWxsSGFzaCIsIm9OYXZBcmdzIiwidGFyZ2V0IiwiYWN0aW9uIiwicGFyYW1zIiwiS2VlcEFsaXZlSGVscGVyIiwic3RvcmVDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9ySGFzaCIsImlzU3RpY2t5RWRpdE1vZGUiLCJ0b0V4dGVybmFsIiwiaHJlZkZvckV4dGVybmFsQXN5bmMiLCJzTmV3SHJlZiIsIm9wZW5XaW5kb3ciLCJmaW5kRWxlbWVudHMiLCJlbGVtIiwib0ZpZWxkSW5mbyIsInVwbG9hZFN0cmVhbSIsImNvbnRyb2xsZXIiLCJldmVudCIsImZpbGVVcGxvYWRlciIsIkZFQ29udHJvbGxlciIsImZpbGVXcmFwcGVyIiwidXBsb2FkVXJsIiwiZ2V0VXBsb2FkVXJsIiwic2V0VUlCdXN5Iiwic2V0VXBsb2FkVXJsIiwicmVtb3ZlQWxsSGVhZGVyUGFyYW1ldGVycyIsInRva2VuIiwiZ2V0SHR0cEhlYWRlcnMiLCJoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4iLCJGaWxlVXBsb2FkZXJQYXJhbWV0ZXIiLCJzZXROYW1lIiwic2V0VmFsdWUiLCJhZGRIZWFkZXJQYXJhbWV0ZXIiLCJlVGFnIiwiaGVhZGVyUGFyYW1ldGVyRVRhZyIsImhlYWRlclBhcmFtZXRlckFjY2VwdCIsInVwbG9hZFByb21pc2UiLCJyZWplY3QiLCJnZXRJZCIsInVwbG9hZCIsIk1lc3NhZ2VCb3giLCJoYW5kbGVVcGxvYWRDb21wbGV0ZSIsInByb3BlcnR5RmlsZU5hbWUiLCJzdGF0dXMiLCJfZGlzcGxheU1lc3NhZ2VGb3JGYWlsZWRVcGxvYWQiLCJjb250ZXh0IiwibmV3RVRhZyIsImV0YWciLCJzZXRQcm9wZXJ0eSIsIl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0iLCJzRXJyb3IiLCJzTWVzc2FnZVRleHQiLCJKU09OIiwicGFyc2UiLCJtZXNzYWdlIiwicmVtb3ZlU3RyZWFtIiwib0RlbGV0ZUJ1dHRvbiIsIm9GaWxlV3JhcHBlciIsImdldEljb25Gb3JNaW1lVHlwZSIsInNNaW1lVHlwZSIsIkljb25Qb29sIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsInNQcm9wZXJ0eVZhbHVlIiwic1Byb3BlcnR5RnVsbFBhdGgiLCJzRGlzcGxheUZvcm1hdCIsInNUZXh0UHJvcGVydHkiLCJzUHJvcGVydHlOYW1lIiwiQ29tbW9uSGVscGVyIiwicmVxdWVzdFZhbHVlTGlzdEluZm8iLCJtVmFsdWVMaXN0SW5mbyIsIm9WYWx1ZUxpc3RJbmZvIiwib1ZhbHVlTGlzdE1vZGVsIiwiJG1vZGVsIiwib01ldGFNb2RlbFZhbHVlTGlzdCIsIm9QYXJhbVdpdGhLZXkiLCJQYXJhbWV0ZXJzIiwiZmluZCIsIm9QYXJhbWV0ZXIiLCJMb2NhbERhdGFQcm9wZXJ0eSIsIiRQcm9wZXJ0eVBhdGgiLCJWYWx1ZUxpc3RQcm9wZXJ0eSIsIm9UZXh0QW5ub3RhdGlvbiIsIkNvbGxlY3Rpb25QYXRoIiwiJFBhdGgiLCJvRmlsdGVyIiwiRmlsdGVyIiwib3BlcmF0b3IiLCJ2YWx1ZTEiLCJvTGlzdEJpbmRpbmciLCJiaW5kTGlzdCIsInJlcXVlc3RDb250ZXh0cyIsImFDb250ZXh0cyIsInNEZXNjcmlwdGlvbiIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJzTXNnIiwiaGFuZGxlVHlwZU1pc3NtYXRjaCIsImRldGFpbHMiLCJnZXRQYXJhbWV0ZXJzIiwibWltZVR5cGUiLCJnZXRNaW1lVHlwZSIsInRvU3RyaW5nIiwicmVwbGFjZUFsbCIsImNvbnRlbnRXaWR0aCIsImhhbmRsZUZpbGVTaXplRXhjZWVkIiwiZ2V0TWF4aW11bUZpbGVTaXplIiwidG9GaXhlZCIsIl9jb250cm9sbGVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWVsZFJ1bnRpbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9BY3Rpdml0eVN5bmNcIjtcbmltcG9ydCB7IEFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IGRyYWZ0IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9lZGl0Rmxvdy9kcmFmdFwiO1xuaW1wb3J0IEZpZWxkV3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRmllbGRXcmFwcGVyXCI7XG5pbXBvcnQgdHlwZSBGaWxlV3JhcHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRmlsZVdyYXBwZXJcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZEFQSSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEFQSVwiO1xuaW1wb3J0IFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9tYWNyb3MvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgSWNvblBvb2wgZnJvbSBcInNhcC91aS9jb3JlL0ljb25Qb29sXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlclwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEZpbGVVcGxvYWRlciBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyXCI7XG5pbXBvcnQgRmlsZVVwbG9hZGVyUGFyYW1ldGVyIGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJQYXJhbWV0ZXJcIjtcbmltcG9ydCBvcGVuV2luZG93IGZyb20gXCJzYXAvdWkvdXRpbC9vcGVuV2luZG93XCI7XG5cbi8qKlxuICogU3RhdGljIGNsYXNzIHVzZWQgYnkgXCJzYXAudWkubWRjLkZpZWxkXCIgZHVyaW5nIHJ1bnRpbWVcbiAqXG4gKiBAcHJpdmF0ZVxuICogQGV4cGVyaW1lbnRhbCBUaGlzIG1vZHVsZSBpcyBvbmx5IGZvciBpbnRlcm5hbC9leHBlcmltZW50YWwgdXNlIVxuICovXG5jb25zdCBGaWVsZFJ1bnRpbWUgPSB7XG5cdHJlc2V0Q2hhbmdlc0hhbmRsZXI6IHVuZGVmaW5lZCBhcyBhbnksXG5cdHVwbG9hZFByb21pc2VzOiB1bmRlZmluZWQgYXMgYW55LFxuXG5cdGZvcm1hdERyYWZ0T3duZXJUZXh0SW5Qb3BvdmVyOiBmdW5jdGlvbiAoXG5cdFx0Ykhhc0RyYWZ0RW50aXR5OiBhbnksXG5cdFx0c0RyYWZ0SW5Qcm9jZXNzQnlVc2VyOiBhbnksXG5cdFx0c0RyYWZ0TGFzdENoYW5nZWRCeVVzZXI6IGFueSxcblx0XHRzRHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjOiBhbnksXG5cdFx0c0RyYWZ0TGFzdENoYW5nZWRCeVVzZXJEZXNjOiBhbnlcblx0KSB7XG5cdFx0aWYgKGJIYXNEcmFmdEVudGl0eSkge1xuXHRcdFx0Y29uc3Qgc1VzZXJEZXNjcmlwdGlvbiA9XG5cdFx0XHRcdHNEcmFmdEluUHJvY2Vzc0J5VXNlckRlc2MgfHwgc0RyYWZ0SW5Qcm9jZXNzQnlVc2VyIHx8IHNEcmFmdExhc3RDaGFuZ2VkQnlVc2VyRGVzYyB8fCBzRHJhZnRMYXN0Q2hhbmdlZEJ5VXNlcjtcblxuXHRcdFx0aWYgKCFzVXNlckRlc2NyaXB0aW9uKSB7XG5cdFx0XHRcdHJldHVybiBSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX1JVTlRJTUVfRFJBRlRfUE9QT1ZFUl9VTlNBVkVEX0NIQU5HRVNfQllfVU5LTk9XTlwiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBzRHJhZnRJblByb2Nlc3NCeVVzZXJcblx0XHRcdFx0XHQ/IFJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfUlVOVElNRV9EUkFGVF9QT1BPVkVSX0xPQ0tFRF9CWV9LTk9XTlwiLCBzVXNlckRlc2NyaXB0aW9uKVxuXHRcdFx0XHRcdDogUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfVU5TQVZFRF9DSEFOR0VTX0JZX0tOT1dOXCIsIHNVc2VyRGVzY3JpcHRpb24pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfTk9fREFUQV9URVhUXCIpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogVHJpZ2dlcnMgYW4gaW50ZXJuYWwgbmF2aWdhdGlvbiBvbiB0aGUgbGluayBwZXJ0YWluaW5nIHRvIERhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aC5cblx0ICpcblx0ICogQHBhcmFtIG9Tb3VyY2UgU291cmNlIG9mIHRoZSBwcmVzcyBldmVudFxuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgSW5zdGFuY2Ugb2YgdGhlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHNTZW1hbnRpY09iamVjdE5hbWUgU2VtYW50aWMgb2JqZWN0IG5hbWVcblx0ICovXG5cdG9uRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoOiBmdW5jdGlvbiAob1NvdXJjZTogQ29udHJvbCwgb0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzU2VtYW50aWNPYmplY3ROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAob0NvbnRyb2xsZXIuX3JvdXRpbmcpIHtcblx0XHRcdGxldCBvQmluZGluZ0NvbnRleHQgPSBvU291cmNlLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhvU291cmNlKSxcblx0XHRcdFx0b01ldGFNb2RlbCA9IG9CaW5kaW5nQ29udGV4dC5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpIGFzIE9EYXRhTWV0YU1vZGVsLFxuXHRcdFx0XHRmbk5hdmlnYXRlID0gZnVuY3Rpb24gKG9Db250ZXh0PzogYW55KSB7XG5cdFx0XHRcdFx0aWYgKG9Db250ZXh0KSB7XG5cdFx0XHRcdFx0XHRvQmluZGluZ0NvbnRleHQgPSBvQ29udGV4dDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b0NvbnRyb2xsZXIuX3JvdXRpbmcubmF2aWdhdGVUb1RhcmdldChvQmluZGluZ0NvbnRleHQsIHNTZW1hbnRpY09iamVjdE5hbWUsIHVuZGVmaW5lZCwgdHJ1ZSk7XG5cdFx0XHRcdH07XG5cdFx0XHQvLyBTaG93IGRyYWZ0IGxvc3MgY29uZmlybWF0aW9uIGRpYWxvZyBpbiBjYXNlIG9mIE9iamVjdCBwYWdlXG5cdFx0XHRpZiAob1ZpZXcuZ2V0Vmlld0RhdGEoKS5jb252ZXJ0ZXJUeXBlID09PSBcIk9iamVjdFBhZ2VcIiAmJiAhTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKG9NZXRhTW9kZWwpKSB7XG5cdFx0XHRcdGRyYWZ0LnByb2Nlc3NEYXRhTG9zc09yRHJhZnREaXNjYXJkQ29uZmlybWF0aW9uKFxuXHRcdFx0XHRcdGZuTmF2aWdhdGUsXG5cdFx0XHRcdFx0RnVuY3Rpb24ucHJvdG90eXBlLFxuXHRcdFx0XHRcdG9CaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHRvVmlldy5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRkcmFmdC5OYXZpZ2F0aW9uVHlwZS5Gb3J3YXJkTmF2aWdhdGlvblxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm5OYXZpZ2F0ZSgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFwiRmllbGRSdW50aW1lOiBObyByb3V0aW5nIGxpc3RlbmVyIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvdW5kLiBJbnRlcm5hbCBuYXZpZ2F0aW9uIGFib3J0ZWQuXCIsXG5cdFx0XHRcdFwic2FwLmZlLm1hY3Jvcy5maWVsZC5GaWVsZFJ1bnRpbWVcIixcblx0XHRcdFx0XCJvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiXG5cdFx0XHQpO1xuXHRcdH1cblx0fSxcblx0aXNEcmFmdEluZGljYXRvclZpc2libGU6IGZ1bmN0aW9uIChcblx0XHRzUHJvcGVydHlQYXRoOiBhbnksXG5cdFx0c1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3I6IGFueSxcblx0XHRIYXNEcmFmdEVudGl0eTogYW55LFxuXHRcdElzQWN0aXZlRW50aXR5OiBhbnksXG5cdFx0aGlkZURyYWZ0SW5mbzogYW55XG5cdCkge1xuXHRcdGlmIChJc0FjdGl2ZUVudGl0eSAhPT0gdW5kZWZpbmVkICYmIEhhc0RyYWZ0RW50aXR5ICE9PSB1bmRlZmluZWQgJiYgKCFJc0FjdGl2ZUVudGl0eSB8fCBIYXNEcmFmdEVudGl0eSkgJiYgIWhpZGVEcmFmdEluZm8pIHtcblx0XHRcdHJldHVybiBzUHJvcGVydHlQYXRoID09PSBzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvcjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fSxcblx0aGFzVGFyZ2V0czogZnVuY3Rpb24gKGJTZW1hbnRpY09iamVjdEhhc1RhcmdldHM6IGFueSAvKnNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZTogYW55Ki8pIHtcblx0XHRyZXR1cm4gYlNlbWFudGljT2JqZWN0SGFzVGFyZ2V0cyA/IGJTZW1hbnRpY09iamVjdEhhc1RhcmdldHMgOiBmYWxzZTtcblx0fSxcblx0Z2V0U3RhdGVEZXBlbmRpbmdPblNlbWFudGljT2JqZWN0VGFyZ2V0czogZnVuY3Rpb24gKGJTZW1hbnRpY09iamVjdEhhc1RhcmdldHM6IGFueSAvKnNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZTogYW55Ki8pIHtcblx0XHRyZXR1cm4gYlNlbWFudGljT2JqZWN0SGFzVGFyZ2V0cyA/IFwiSW5mb3JtYXRpb25cIiA6IFwiTm9uZVwiO1xuXHR9LFxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIHZhbGlkYXRlRmllbGRHcm91cCBldmVudC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIG9uVmFsaWRhdGVGaWVsZEdyb3VwXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBUaGUgY29udHJvbGxlciBvZiB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBmaWVsZFxuXHQgKiBAcGFyYW0gb0V2ZW50IFRoZSBldmVudCBvYmplY3QgcGFzc2VkIGJ5IHRoZSB2YWxpZGF0ZUZpZWxkR3JvdXAgZXZlbnRcblx0ICovXG5cdG9uVmFsaWRhdGVGaWVsZEdyb3VwOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IG9iamVjdCwgb0V2ZW50OiBvYmplY3QpIHtcblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lLl9nZXRFeHRlbnNpb25Db250cm9sbGVyKG9Db250cm9sbGVyKTtcblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZEdyb3VwQ2hhbmdlKG9FdmVudCk7XG5cdH0sXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgY2hhbmdlIGV2ZW50LlxuXHQgKiBTdG9yZSBmaWVsZCBncm91cCBJRHMgb2YgdGhpcyBmaWVsZCBmb3IgcmVxdWVzdGluZyBzaWRlIGVmZmVjdHMgd2hlbiByZXF1aXJlZC5cblx0ICogV2Ugc3RvcmUgdGhlbSBoZXJlIHRvIGVuc3VyZSBhIGNoYW5nZSBpbiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkIGhhcyB0YWtlbiBwbGFjZS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUNoYW5nZVxuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgb2YgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgZmllbGRcblx0ICogQHBhcmFtIG9FdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIChvQ29udHJvbGxlcjogb2JqZWN0LCBvRXZlbnQ6IEV2ZW50KSB7XG5cdFx0Y29uc3Qgb1NvdXJjZUZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpIGFzIENvbnRyb2wsXG5cdFx0XHRiSXNUcmFuc2llbnQgPSBvU291cmNlRmllbGQgJiYgKG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIGFueSkuaXNUcmFuc2llbnQoKSxcblx0XHRcdHBWYWx1ZVJlc29sdmVkID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInByb21pc2VcIikgfHwgUHJvbWlzZS5yZXNvbHZlKCksXG5cdFx0XHRvU291cmNlID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YlZhbGlkID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInZhbGlkXCIpO1xuXG5cdFx0Ly8gVE9ETzogY3VycmVudGx5IHdlIGhhdmUgdW5kZWZpbmVkIGFuZCB0cnVlLi4uIGFuZCBvdXIgY3JlYXRpb24gcm93IGltcGxlbWVudGF0aW9uIHJlbGllcyBvbiB0aGlzLlxuXHRcdC8vIEkgd291bGQgbW92ZSB0aGlzIGxvZ2ljIHRvIHRoaXMgcGxhY2UgYXMgaXQncyBoYXJkIHRvIHVuZGVyc3RhbmQgZm9yIGZpZWxkIGNvbnN1bWVyXG5cblx0XHRwVmFsdWVSZXNvbHZlZFxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyBUaGUgZXZlbnQgaXMgZ29uZS4gRm9yIG5vdyB3ZSdsbCBqdXN0IHJlY3JlYXRlIGl0IGFnYWluXG5cdFx0XHRcdChvRXZlbnQgYXMgYW55KS5vU291cmNlID0gb1NvdXJjZTtcblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm1QYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdHZhbGlkOiBiVmFsaWRcblx0XHRcdFx0fTtcblx0XHRcdFx0KEZpZWxkQVBJIGFzIGFueSkuaGFuZGxlQ2hhbmdlKG9FdmVudCwgb0NvbnRyb2xsZXIpO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoLypvRXJyb3I6IGFueSovKSB7XG5cdFx0XHRcdC8vIFRoZSBldmVudCBpcyBnb25lLiBGb3Igbm93IHdlJ2xsIGp1c3QgcmVjcmVhdGUgaXQgYWdhaW5cblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm9Tb3VyY2UgPSBvU291cmNlO1xuXHRcdFx0XHQob0V2ZW50IGFzIGFueSkubVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0dmFsaWQ6IGZhbHNlXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gYXMgdGhlIFVJIG1pZ2h0IG5lZWQgdG8gcmVhY3Qgb24uIFdlIGNvdWxkIHByb3ZpZGUgYSBwYXJhbWV0ZXIgdG8gaW5mb3JtIGlmIHZhbGlkYXRpb25cblx0XHRcdFx0Ly8gd2FzIHN1Y2Nlc3NmdWw/XG5cdFx0XHRcdChGaWVsZEFQSSBhcyBhbnkpLmhhbmRsZUNoYW5nZShvRXZlbnQsIG9Db250cm9sbGVyKTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gVXNlIHRoZSBGRSBDb250cm9sbGVyIGluc3RlYWQgb2YgdGhlIGV4dGVuc2lvbkFQSSB0byBhY2Nlc3MgaW50ZXJuYWwgRkUgY29udHJvbGxlcnNcblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lLl9nZXRFeHRlbnNpb25Db250cm9sbGVyKG9Db250cm9sbGVyKTtcblxuXHRcdG9GRUNvbnRyb2xsZXIuX2VkaXRGbG93LnN5bmNUYXNrKHBWYWx1ZVJlc29sdmVkKTtcblxuXHRcdC8vIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zaWVudCwgaXQgbWVhbnMgdGhlIHJlcXVlc3Qgd291bGQgZmFpbCBhbnl3YXkgYXMgdGhlIHJlY29yZCBkb2VzIG5vdCBleGlzdCBpbiByZWFsaXR5XG5cdFx0Ly8gVE9ETzogc2hvdWxkIHRoZSByZXF1ZXN0IGJlIG1hZGUgaW4gZnV0dXJlIGlmIHRoZSBjb250ZXh0IGlzIHRyYW5zaWVudD9cblx0XHRpZiAoYklzVHJhbnNpZW50KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gU0lERSBFRkZFQ1RTXG5cdFx0b0ZFQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRDaGFuZ2Uob0V2ZW50LCBwVmFsdWVSZXNvbHZlZCk7XG5cblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBvRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbCxcblx0XHRcdGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQob0ZpZWxkKTtcblx0XHRsZXQgb0JpbmRpbmcsIHNCaW5kaW5nUGF0aDtcblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkICYmIHRoaXMuZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlKG9FdmVudCkuc3RhdGVbXCJ2YWxpZGl0eVwiXSkge1xuXHRcdFx0LyogVE9ETzogZm9yIG5vdyB3ZSB1c2UgYWx3YXlzIHRoZSBmaXJzdCBiaW5kaW5nIHBhcnQgKHNvIGluIGNhc2Ugb2YgY29tcG9zaXRlIGJpbmRpbmdzIGxpa2UgYW1vdW50IGFuZFxuXHRcdFx0XHRcdHVuaXQgb3IgY3VycmVuY3kgb25seSB0aGUgYW1vdW50IGlzIGNvbnNpZGVyZWQpICovXG5cdFx0XHRvQmluZGluZyA9IChvRmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBhbnkpLmdldEJpbmRpbmcoKTtcblx0XHRcdGlmICghb0JpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9GaWVsZCk7XG5cdFx0XHRcdG9CaW5kaW5nID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKS5nZXRCaW5kaW5nKCk7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGRhdGEgPSBbXG5cdFx0XHRcdC4uLihvRmllbGQuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKSBhcyBhbnkpPy5wYXJ0cyxcblx0XHRcdFx0Li4uKChvRmllbGQuZ2V0QmluZGluZ0luZm8oXCJhZGRpdGlvbmFsVmFsdWVcIikgYXMgYW55KT8ucGFydHMgfHwgW10pXG5cdFx0XHRdLm1hcChmdW5jdGlvbiAocGFydDogYW55KSB7XG5cdFx0XHRcdGlmIChwYXJ0KSB7XG5cdFx0XHRcdFx0c0JpbmRpbmdQYXRoID0gcGFydC5wYXRoO1xuXHRcdFx0XHRcdHJldHVybiBgJHtvRmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS8ke3NCaW5kaW5nUGF0aH1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSBhcyBbXTtcblx0XHRcdG9CaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9GaWVsZCwgQWN0aXZpdHkuQ2hhbmdlLCBkYXRhKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblxuXHRoYW5kbGVMaXZlQ2hhbmdlOiBmdW5jdGlvbiAob0V2ZW50OiBhbnkpIHtcblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBvRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHRiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKG9GaWVsZCk7XG5cblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHQvKiBUT0RPOiBmb3Igbm93IHdlIHVzZSBhbHdheXMgdGhlIGZpcnN0IGJpbmRpbmcgcGFydCAoc28gaW4gY2FzZSBvZiBjb21wb3NpdGUgYmluZGluZ3MgbGlrZSBhbW91bnQgYW5kXG5cdFx0XHRcdFx0dW5pdCBvciBjdXJyZW5jeSBvbmx5IHRoZSBhbW91bnQgaXMgY29uc2lkZXJlZCkgKi9cblx0XHRcdGNvbnN0IHNCaW5kaW5nUGF0aCA9IG9GaWVsZC5nZXRCaW5kaW5nSW5mbyhcInZhbHVlXCIpLnBhcnRzWzBdLnBhdGg7XG5cdFx0XHRjb25zdCBzRnVsbFBhdGggPSBgJHtvRmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKS5nZXRQYXRoKCl9LyR7c0JpbmRpbmdQYXRofWA7XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQob0ZpZWxkLCBBY3Rpdml0eS5MaXZlQ2hhbmdlLCBzRnVsbFBhdGgpO1xuXG5cdFx0XHQvLyBJZiB0aGUgdXNlciByZXZlcnRlZCB0aGUgY2hhbmdlIG5vIGNoYW5nZSBldmVudCBpcyBzZW50IHRoZXJlZm9yZSB3ZSBoYXZlIHRvIGhhbmRsZSBpdCBoZXJlXG5cdFx0XHRpZiAoIXRoaXMucmVzZXRDaGFuZ2VzSGFuZGxlcikge1xuXHRcdFx0XHR0aGlzLnJlc2V0Q2hhbmdlc0hhbmRsZXIgPSAoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKG9GaWVsZC5nZXRWYWx1ZSgpID09PSBvRmllbGQuZ2V0QmluZGluZyhcInZhbHVlXCIpLmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHRcdC8vIHRoZSB1c2VyIGRpZCBhIGNoYW5nZSBidXQgcmV2ZXJ0ZWQgaXQuIHRvIGJlIGNoZWNrZWQgaWYgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHRvIGRldGVybWluZVxuXHRcdFx0XHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9GaWVsZCwgQWN0aXZpdHkuVW5kbywgc0Z1bGxQYXRoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b0ZpZWxkLmRldGFjaEJyb3dzZXJFdmVudChcImZvY3Vzb3V0XCIsIHRoaXMucmVzZXRDaGFuZ2VzSGFuZGxlcik7XG5cdFx0XHRcdFx0ZGVsZXRlIHRoaXMucmVzZXRDaGFuZ2VzSGFuZGxlcjtcblx0XHRcdFx0fTtcblx0XHRcdFx0b0ZpZWxkLmF0dGFjaEJyb3dzZXJFdmVudChcImZvY3Vzb3V0XCIsIHRoaXMucmVzZXRDaGFuZ2VzSGFuZGxlcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRoYW5kbGVPcGVuUGlja2VyOiBmdW5jdGlvbiAob0V2ZW50OiBhbnkpIHtcblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBvRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHRiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKG9GaWVsZCk7XG5cblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRjb25zdCBzQmluZGluZ1BhdGggPSBvRmllbGQuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKS5wYXJ0c1swXS5wYXRoO1xuXHRcdFx0Y29uc3Qgc0Z1bGxQYXRoID0gYCR7b0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0UGF0aCgpfS8ke3NCaW5kaW5nUGF0aH1gO1xuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9GaWVsZCwgQWN0aXZpdHkuTGl2ZUNoYW5nZSwgc0Z1bGxQYXRoKTtcblx0XHR9XG5cdH0sXG5cdGhhbmRsZUNsb3NlUGlja2VyOiBmdW5jdGlvbiAob0V2ZW50OiBhbnkpIHtcblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBvRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHRiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKG9GaWVsZCk7XG5cblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRjb25zdCBzQmluZGluZ1BhdGggPSBvRmllbGQuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKS5wYXJ0c1swXS5wYXRoO1xuXHRcdFx0Y29uc3Qgc0Z1bGxQYXRoID0gYCR7b0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0UGF0aCgpfS8ke3NCaW5kaW5nUGF0aH1gO1xuXHRcdFx0aWYgKG5ldyBEYXRlKG9GaWVsZC5nZXRWYWx1ZSgpKS50b0RhdGVTdHJpbmcoKSA9PT0gbmV3IERhdGUob0ZpZWxkLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKS5nZXRWYWx1ZSgpIHx8IFwiXCIpLnRvRGF0ZVN0cmluZygpKSB7XG5cdFx0XHRcdC8vIHRoZSB1c2VyIGRpZCBhIGNoYW5nZSBidXQgcmV2ZXJ0ZWQgaXQuIHRvIGJlIGNoZWNrZWQgaWYgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHRvIGRldGVybWluZVxuXHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQob0ZpZWxkLCBBY3Rpdml0eS5VbmRvLCBzRnVsbFBhdGgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0aGFuZGxlT3BlblVwbG9hZGVyOiBmdW5jdGlvbiAob0V2ZW50OiBhbnkpIHtcblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBvRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHRiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKG9GaWVsZCk7XG5cblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRjb25zdCBzQmluZGluZ1BhdGggPSBvRmllbGQuZ2V0UGFyZW50KCkuZ2V0QXZhdGFyKCkuZ2V0QmluZGluZ0luZm8oXCJzcmNcIikucGFydHNbMF0ucGF0aDtcblx0XHRcdGNvbnN0IHNGdWxsUGF0aCA9IGAke29GaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCl9LyR7c0JpbmRpbmdQYXRofWA7XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQob0ZpZWxkLCBBY3Rpdml0eS5MaXZlQ2hhbmdlLCBzRnVsbFBhdGgpO1xuXHRcdH1cblx0fSxcblx0aGFuZGxlQ2xvc2VVcGxvYWRlcjogZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3Qgb0ZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YkNvbGxhYm9yYXRpb25FbmFibGVkID0gQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChvRmllbGQpO1xuXHRcdGlmIChiQ29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGNvbnN0IHNCaW5kaW5nUGF0aCA9IG9GaWVsZC5nZXRQYXJlbnQoKS5nZXRBdmF0YXIoKS5nZXRCaW5kaW5nSW5mbyhcInNyY1wiKS5wYXJ0c1swXS5wYXRoO1xuXHRcdFx0Y29uc3Qgc0Z1bGxQYXRoID0gYCR7b0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vJHtzQmluZGluZ1BhdGh9YDtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChvRmllbGQsIEFjdGl2aXR5LlVuZG8sIHNGdWxsUGF0aCk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmaWVsZCB2YWx1ZSBhbmQgdmFsaWRpdHkgb24gYSBjaGFuZ2UgZXZlbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBmaWVsZFZhbGlkaXR5T25DaGFuZ2Vcblx0ICogQHBhcmFtIG9FdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqIEByZXR1cm5zIEZpZWxkIHZhbHVlIGFuZCB2YWxpZGl0eVxuXHQgKi9cblx0Z2V0RmllbGRTdGF0ZU9uQ2hhbmdlOiBmdW5jdGlvbiAob0V2ZW50OiBFdmVudCk6IGFueSB7XG5cdFx0bGV0IG9Tb3VyY2VGaWVsZCA9IG9FdmVudC5nZXRTb3VyY2UoKSBhcyBhbnksXG5cdFx0XHRtRmllbGRTdGF0ZSA9IHt9O1xuXHRcdGNvbnN0IF9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzID0gZnVuY3Rpb24gKG9CaW5kaW5nOiBhbnkpIHtcblx0XHRcdHJldHVybiBvQmluZGluZyAmJiBvQmluZGluZy5nZXREYXRhU3RhdGUoKSA/IG9CaW5kaW5nLmdldERhdGFTdGF0ZSgpLmdldEludmFsaWRWYWx1ZSgpID09PSB1bmRlZmluZWQgOiB0cnVlO1xuXHRcdH07XG5cdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0EoXCJzYXAuZmUubWFjcm9zLmZpZWxkLkZpZWxkQVBJXCIpKSB7XG5cdFx0XHRvU291cmNlRmllbGQgPSAob1NvdXJjZUZpZWxkIGFzIEVuaGFuY2VXaXRoVUk1PEZpZWxkQVBJPikuZ2V0Q29udGVudCgpO1xuXHRcdH1cblxuXHRcdGlmIChvU291cmNlRmllbGQuaXNBKEZpZWxkV3JhcHBlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKSkgJiYgb1NvdXJjZUZpZWxkLmdldEVkaXRNb2RlKCkgPT09IFwiRWRpdGFibGVcIikge1xuXHRcdFx0b1NvdXJjZUZpZWxkID0gb1NvdXJjZUZpZWxkLmdldENvbnRlbnRFZGl0KClbMF07XG5cdFx0fVxuXG5cdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0EoXCJzYXAudWkubWRjLkZpZWxkXCIpKSB7XG5cdFx0XHRsZXQgYklzVmFsaWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsaWRcIikgfHwgb0V2ZW50LmdldFBhcmFtZXRlcihcImlzVmFsaWRcIik7XG5cdFx0XHRpZiAoYklzVmFsaWQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRpZiAob1NvdXJjZUZpZWxkLmdldE1heENvbmRpdGlvbnMoKSA9PT0gMSkge1xuXHRcdFx0XHRcdGNvbnN0IG9WYWx1ZUJpbmRpbmdJbmZvID0gb1NvdXJjZUZpZWxkLmdldEJpbmRpbmdJbmZvKFwidmFsdWVcIik7XG5cdFx0XHRcdFx0YklzVmFsaWQgPSBfaXNCaW5kaW5nU3RhdGVNZXNzYWdlcyhvVmFsdWVCaW5kaW5nSW5mbyAmJiBvVmFsdWVCaW5kaW5nSW5mby5iaW5kaW5nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1NvdXJjZUZpZWxkLmdldFZhbHVlKCkgPT09IFwiXCIgJiYgIW9Tb3VyY2VGaWVsZC5nZXRQcm9wZXJ0eShcInJlcXVpcmVkXCIpKSB7XG5cdFx0XHRcdFx0YklzVmFsaWQgPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRtRmllbGRTdGF0ZSA9IHtcblx0XHRcdFx0ZmllbGRWYWx1ZTogb1NvdXJjZUZpZWxkLmdldFZhbHVlKCksXG5cdFx0XHRcdHZhbGlkaXR5OiAhIWJJc1ZhbGlkXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBvU291cmNlRmllbGQgZXh0ZW5kcyBmcm9tIGEgRmlsZVVwbG9hZGVyIHx8IElucHV0IHx8IGlzIGEgQ2hlY2tCb3hcblx0XHRcdGNvbnN0IG9CaW5kaW5nID1cblx0XHRcdFx0b1NvdXJjZUZpZWxkLmdldEJpbmRpbmcoXCJ1cGxvYWRVcmxcIikgfHwgb1NvdXJjZUZpZWxkLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKSB8fCBvU291cmNlRmllbGQuZ2V0QmluZGluZyhcInNlbGVjdGVkXCIpO1xuXHRcdFx0bUZpZWxkU3RhdGUgPSB7XG5cdFx0XHRcdGZpZWxkVmFsdWU6IG9CaW5kaW5nICYmIG9CaW5kaW5nLmdldFZhbHVlKCksXG5cdFx0XHRcdHZhbGlkaXR5OiBfaXNCaW5kaW5nU3RhdGVNZXNzYWdlcyhvQmluZGluZylcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHRmaWVsZDogb1NvdXJjZUZpZWxkLFxuXHRcdFx0c3RhdGU6IG1GaWVsZFN0YXRlXG5cdFx0fTtcblx0fSxcblx0X2ZuRml4SGFzaFF1ZXJ5U3RyaW5nOiBmdW5jdGlvbiAoc0N1cnJlbnRIYXNoOiBhbnkpIHtcblx0XHRpZiAoc0N1cnJlbnRIYXNoICYmIHNDdXJyZW50SGFzaC5pbmRleE9mKFwiP1wiKSAhPT0gLTEpIHtcblx0XHRcdC8vIHNDdXJyZW50SGFzaCBjYW4gY29udGFpbiBxdWVyeSBzdHJpbmcsIGN1dCBpdCBvZmYhXG5cdFx0XHRzQ3VycmVudEhhc2ggPSBzQ3VycmVudEhhc2guc3BsaXQoXCI/XCIpWzBdO1xuXHRcdH1cblx0XHRyZXR1cm4gc0N1cnJlbnRIYXNoO1xuXHR9LFxuXHRfZm5HZXRMaW5rSW5mb3JtYXRpb246IGZ1bmN0aW9uIChfb1NvdXJjZTogYW55LCBfb0xpbms6IGFueSwgX3NQcm9wZXJ0eVBhdGg6IGFueSwgX3NWYWx1ZTogYW55LCBmblNldEFjdGl2ZTogYW55KSB7XG5cdFx0Y29uc3Qgb01vZGVsID0gX29MaW5rICYmIF9vTGluay5nZXRNb2RlbCgpO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvTW9kZWwgJiYgb01vZGVsLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHNTZW1hbnRpY09iamVjdE5hbWUgPSBfc1ZhbHVlIHx8IChfb1NvdXJjZSAmJiBfb1NvdXJjZS5nZXRWYWx1ZSgpKTtcblx0XHRjb25zdCBvVmlldyA9IF9vTGluayAmJiBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KF9vTGluayk7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1ZpZXcgJiYgb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKTtcblx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gb1ZpZXcgJiYgQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRjb25zdCBvU2hlbGxTZXJ2aWNlSGVscGVyID0gb0FwcENvbXBvbmVudCAmJiBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRjb25zdCBwR2V0TGlua3NQcm9taXNlID0gb1NoZWxsU2VydmljZUhlbHBlciAmJiBvU2hlbGxTZXJ2aWNlSGVscGVyLmdldExpbmtzV2l0aENhY2hlKFtbeyBzZW1hbnRpY09iamVjdDogc1NlbWFudGljT2JqZWN0TmFtZSB9XV0pO1xuXHRcdGNvbnN0IGFTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyA9XG5cdFx0XHRvTWV0YU1vZGVsICYmIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAke19zUHJvcGVydHlQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnNgKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0U2VtYW50aWNPYmplY3ROYW1lOiBzU2VtYW50aWNPYmplY3ROYW1lLFxuXHRcdFx0U2VtYW50aWNPYmplY3RGdWxsUGF0aDogX3NQcm9wZXJ0eVBhdGgsIC8vc1NlbWFudGljT2JqZWN0RnVsbFBhdGgsXG5cdFx0XHRNZXRhTW9kZWw6IG9NZXRhTW9kZWwsXG5cdFx0XHRJbnRlcm5hbE1vZGVsQ29udGV4dDogb0ludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0U2hlbGxTZXJ2aWNlSGVscGVyOiBvU2hlbGxTZXJ2aWNlSGVscGVyLFxuXHRcdFx0R2V0TGlua3NQcm9taXNlOiBwR2V0TGlua3NQcm9taXNlLFxuXHRcdFx0U2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnM6IGFTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyxcblx0XHRcdGZuU2V0QWN0aXZlOiBmblNldEFjdGl2ZVxuXHRcdH07XG5cdH0sXG5cdF9mblF1aWNrVmlld0hhc05ld0NvbmRpdGlvbjogZnVuY3Rpb24gKG9TZW1hbnRpY09iamVjdFBheWxvYWQ6IGFueSwgX29MaW5rSW5mbzogYW55KSB7XG5cdFx0aWYgKG9TZW1hbnRpY09iamVjdFBheWxvYWQgJiYgb1NlbWFudGljT2JqZWN0UGF5bG9hZC5wYXRoICYmIG9TZW1hbnRpY09iamVjdFBheWxvYWQucGF0aCA9PT0gX29MaW5rSW5mby5TZW1hbnRpY09iamVjdEZ1bGxQYXRoKSB7XG5cdFx0XHQvLyBHb3QgdGhlIHJlc29sdmVkIFNlbWFudGljIE9iamVjdCFcblx0XHRcdGNvbnN0IGJSZXN1bHRpbmdOZXdDb25kaXRpb25Gb3JDb25kaXRpb25hbFdyYXBwZXIgPVxuXHRcdFx0XHRvU2VtYW50aWNPYmplY3RQYXlsb2FkWyFfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zID8gXCJIYXNUYXJnZXRzTm90RmlsdGVyZWRcIiA6IFwiSGFzVGFyZ2V0c1wiXTtcblx0XHRcdF9vTGlua0luZm8uZm5TZXRBY3RpdmUoISFiUmVzdWx0aW5nTmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9LFxuXHRfZm5RdWlja1ZpZXdTZXROZXdDb25kaXRpb25Gb3JDb25kaXRpb25hbFdyYXBwZXI6IGZ1bmN0aW9uIChfb0xpbmtJbmZvOiBhbnksIF9vRmluYWxTZW1hbnRpY09iamVjdHM6IGFueSkge1xuXHRcdGlmIChfb0ZpbmFsU2VtYW50aWNPYmplY3RzW19vTGlua0luZm8uU2VtYW50aWNPYmplY3ROYW1lXSkge1xuXHRcdFx0bGV0IHNUbXBQYXRoLCBvU2VtYW50aWNPYmplY3RQYXlsb2FkO1xuXHRcdFx0Y29uc3QgYVNlbWFudGljT2JqZWN0UGF0aHMgPSBPYmplY3Qua2V5cyhfb0ZpbmFsU2VtYW50aWNPYmplY3RzW19vTGlua0luZm8uU2VtYW50aWNPYmplY3ROYW1lXSk7XG5cdFx0XHRmb3IgKGNvbnN0IGlQYXRoc0NvdW50IGluIGFTZW1hbnRpY09iamVjdFBhdGhzKSB7XG5cdFx0XHRcdHNUbXBQYXRoID0gYVNlbWFudGljT2JqZWN0UGF0aHNbaVBhdGhzQ291bnRdO1xuXHRcdFx0XHRvU2VtYW50aWNPYmplY3RQYXlsb2FkID1cblx0XHRcdFx0XHRfb0ZpbmFsU2VtYW50aWNPYmplY3RzW19vTGlua0luZm8uU2VtYW50aWNPYmplY3ROYW1lXSAmJlxuXHRcdFx0XHRcdF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdW3NUbXBQYXRoXTtcblx0XHRcdFx0aWYgKEZpZWxkUnVudGltZS5fZm5RdWlja1ZpZXdIYXNOZXdDb25kaXRpb24ob1NlbWFudGljT2JqZWN0UGF5bG9hZCwgX29MaW5rSW5mbykpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0X2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWw6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgc1ZhbHVlOiBhbnksIG9Db250cm9sOiBhbnksIF9zUHJvcGVydHlQYXRoOiBhbnkpIHtcblx0XHRjb25zdCBvU291cmNlID0gb0V2ZW50ICYmIG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRsZXQgZm5TZXRBY3RpdmU7XG5cdFx0aWYgKG9Db250cm9sLmlzQShcInNhcC5tLk9iamVjdFN0YXR1c1wiKSkge1xuXHRcdFx0Zm5TZXRBY3RpdmUgPSAoYkFjdGl2ZTogYm9vbGVhbikgPT4gb0NvbnRyb2wuc2V0QWN0aXZlKGJBY3RpdmUpO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2wuaXNBKFwic2FwLm0uT2JqZWN0SWRlbnRpZmllclwiKSkge1xuXHRcdFx0Zm5TZXRBY3RpdmUgPSAoYkFjdGl2ZTogYm9vbGVhbikgPT4gb0NvbnRyb2wuc2V0VGl0bGVBY3RpdmUoYkFjdGl2ZSk7XG5cdFx0fVxuXHRcdGNvbnN0IG9Db25kaXRpb25hbFdyYXBwZXIgPSBvQ29udHJvbCAmJiBvQ29udHJvbC5nZXRQYXJlbnQoKTtcblx0XHRpZiAob0NvbmRpdGlvbmFsV3JhcHBlciAmJiBvQ29uZGl0aW9uYWxXcmFwcGVyLmlzQShcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkNvbmRpdGlvbmFsV3JhcHBlclwiKSkge1xuXHRcdFx0Zm5TZXRBY3RpdmUgPSAoYkFjdGl2ZTogYm9vbGVhbikgPT4gb0NvbmRpdGlvbmFsV3JhcHBlci5zZXRDb25kaXRpb24oYkFjdGl2ZSk7XG5cdFx0fVxuXHRcdGlmIChmblNldEFjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBvTGlua0luZm8gPSBGaWVsZFJ1bnRpbWUuX2ZuR2V0TGlua0luZm9ybWF0aW9uKG9Tb3VyY2UsIG9Db250cm9sLCBfc1Byb3BlcnR5UGF0aCwgc1ZhbHVlLCBmblNldEFjdGl2ZSk7XG5cdFx0XHRvTGlua0luZm8uZm5TZXRBY3RpdmUgPSBmblNldEFjdGl2ZTtcblx0XHRcdGNvbnN0IHNDdXJyZW50SGFzaCA9IEZpZWxkUnVudGltZS5fZm5GaXhIYXNoUXVlcnlTdHJpbmcoQ29tbW9uVXRpbHMuZ2V0SGFzaCgpKTtcblx0XHRcdENvbW1vblV0aWxzLnVwZGF0ZVNlbWFudGljVGFyZ2V0cyhcblx0XHRcdFx0W29MaW5rSW5mby5HZXRMaW5rc1Byb21pc2VdLFxuXHRcdFx0XHRbeyBzZW1hbnRpY09iamVjdDogb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZSwgcGF0aDogb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0RnVsbFBhdGggfV0sXG5cdFx0XHRcdG9MaW5rSW5mby5JbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0c0N1cnJlbnRIYXNoXG5cdFx0XHQpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvRmluYWxTZW1hbnRpY09iamVjdHM6IGFueSkge1xuXHRcdFx0XHRcdGlmIChvRmluYWxTZW1hbnRpY09iamVjdHMpIHtcblx0XHRcdFx0XHRcdEZpZWxkUnVudGltZS5fZm5RdWlja1ZpZXdTZXROZXdDb25kaXRpb25Gb3JDb25kaXRpb25hbFdyYXBwZXIob0xpbmtJbmZvLCBvRmluYWxTZW1hbnRpY09iamVjdHMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdExvZy5lcnJvcihcIkNhbm5vdCB1cGRhdGUgU2VtYW50aWMgVGFyZ2V0cyBtb2RlbFwiLCBvRXJyb3IpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cdF9jaGVja0NvbnRyb2xIYXNNb2RlbEFuZEJpbmRpbmdDb250ZXh0KF9jb250cm9sOiBDb250cm9sKSB7XG5cdFx0aWYgKCFfY29udHJvbC5nZXRNb2RlbCgpIHx8ICFfY29udHJvbC5nZXRCaW5kaW5nQ29udGV4dCgpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fSxcblx0X2NoZWNrQ3VzdG9tRGF0YVZhbHVlQmVmb3JlVXBkYXRpbmdTZW1hbnRpY09iamVjdE1vZGVsKF9jb250cm9sOiBDb250cm9sLCBwcm9wZXJ0eVBhdGg6IHN0cmluZywgYUN1c3RvbURhdGE6IEN1c3RvbURhdGFbXSk6IHZvaWQge1xuXHRcdGxldCBzU2VtYW50aWNPYmplY3RQYXRoVmFsdWU6IGFueTtcblx0XHRsZXQgb1ZhbHVlQmluZGluZztcblx0XHRjb25zdCBfZm5DdXN0b21EYXRhVmFsdWVJc1N0cmluZyA9IGZ1bmN0aW9uIChzZW1hbnRpY09iamVjdFBhdGhWYWx1ZTogYW55KSB7XG5cdFx0XHRyZXR1cm4gIShzZW1hbnRpY09iamVjdFBhdGhWYWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2Ygc2VtYW50aWNPYmplY3RQYXRoVmFsdWUgPT09IFwib2JqZWN0XCIpO1xuXHRcdH07XG5cdFx0Ly8gcmVtb3ZlIHRlY2huaWNhbCBjdXN0b20gZGF0YXMgc2V0IGJ5IFVJNVxuXHRcdGFDdXN0b21EYXRhID0gYUN1c3RvbURhdGEuZmlsdGVyKChjdXN0b21EYXRhKSA9PiBjdXN0b21EYXRhLmdldEtleSgpICE9PSBcInNhcC11aS1jdXN0b20tc2V0dGluZ3NcIik7XG5cdFx0Zm9yIChjb25zdCBpbmRleCBpbiBhQ3VzdG9tRGF0YSkge1xuXHRcdFx0c1NlbWFudGljT2JqZWN0UGF0aFZhbHVlID0gYUN1c3RvbURhdGFbaW5kZXhdLmdldFZhbHVlKCk7XG5cdFx0XHRpZiAoIXNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSAmJiBfZm5DdXN0b21EYXRhVmFsdWVJc1N0cmluZyhzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUpKSB7XG5cdFx0XHRcdG9WYWx1ZUJpbmRpbmcgPSBhQ3VzdG9tRGF0YVtpbmRleF0uZ2V0QmluZGluZyhcInZhbHVlXCIpO1xuXHRcdFx0XHRpZiAob1ZhbHVlQmluZGluZykge1xuXHRcdFx0XHRcdG9WYWx1ZUJpbmRpbmcuYXR0YWNoRXZlbnRPbmNlKFwiY2hhbmdlXCIsIGZ1bmN0aW9uIChfb0NoYW5nZUV2ZW50OiBhbnkpIHtcblx0XHRcdFx0XHRcdEZpZWxkUnVudGltZS5fZm5VcGRhdGVTZW1hbnRpY09iamVjdHNUYXJnZXRNb2RlbChfb0NoYW5nZUV2ZW50LCBudWxsLCBfY29udHJvbCwgcHJvcGVydHlQYXRoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChfZm5DdXN0b21EYXRhVmFsdWVJc1N0cmluZyhzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUpKSB7XG5cdFx0XHRcdEZpZWxkUnVudGltZS5fZm5VcGRhdGVTZW1hbnRpY09iamVjdHNUYXJnZXRNb2RlbChudWxsLCBzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUsIF9jb250cm9sLCBwcm9wZXJ0eVBhdGgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0TGlua01vZGVsQ29udGV4dENoYW5nZTogZnVuY3Rpb24gKG9FdmVudDogYW55LCBzUHJvcGVydHk6IGFueSwgc1BhdGhUb1Byb3BlcnR5OiBhbnkpOiB2b2lkIHtcblx0XHRjb25zdCBjb250cm9sID0gb0V2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGlmIChGaWVsZFJ1bnRpbWUuX2NoZWNrQ29udHJvbEhhc01vZGVsQW5kQmluZGluZ0NvbnRleHQoY29udHJvbCkpIHtcblx0XHRcdGNvbnN0IHNQcm9wZXJ0eVBhdGggPSBgJHtzUGF0aFRvUHJvcGVydHl9LyR7c1Byb3BlcnR5fWA7XG5cdFx0XHRjb25zdCBtZGNMaW5rID0gY29udHJvbC5nZXREZXBlbmRlbnRzKCkubGVuZ3RoID8gY29udHJvbC5nZXREZXBlbmRlbnRzKClbMF0gOiB1bmRlZmluZWQ7XG5cdFx0XHRjb25zdCBhQ3VzdG9tRGF0YSA9IG1kY0xpbms/LmdldEN1c3RvbURhdGEoKTtcblx0XHRcdGlmIChhQ3VzdG9tRGF0YSAmJiBhQ3VzdG9tRGF0YS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdEZpZWxkUnVudGltZS5fY2hlY2tDdXN0b21EYXRhVmFsdWVCZWZvcmVVcGRhdGluZ1NlbWFudGljT2JqZWN0TW9kZWwoY29udHJvbCwgc1Byb3BlcnR5UGF0aCwgYUN1c3RvbURhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0cHJlc3NMaW5rOiBhc3luYyBmdW5jdGlvbiAob0V2ZW50OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBvU291cmNlID0gb0V2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGNvbnN0IG9MaW5rID0gb1NvdXJjZS5pc0EoXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpXG5cdFx0XHQ/IG9Tb3VyY2UuZmluZEVsZW1lbnRzKGZhbHNlLCAoZWxlbTogRXZlbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5pc0EoXCJzYXAubS5MaW5rXCIpO1xuXHRcdFx0ICB9KVswXVxuXHRcdFx0OiBvU291cmNlO1xuXG5cdFx0YXN5bmMgZnVuY3Rpb24gb3BlbkxpbmsobWRjTGluazogYW55KSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCBzSHJlZiA9IGF3YWl0IG1kY0xpbmsuZ2V0VHJpZ2dlckhyZWYoKTtcblx0XHRcdFx0aWYgKCFzSHJlZikge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRhd2FpdCBtZGNMaW5rLm9wZW4ob0xpbmspO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoXCJDYW5ub3QgcmV0cmlldmUgdGhlIFF1aWNrVmlldyBQb3BvdmVyIGRpYWxvZ1wiLCBvRXJyb3IpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBvVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcob0xpbmspO1xuXHRcdFx0XHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQob1ZpZXcpO1xuXHRcdFx0XHRcdGNvbnN0IG9TaGVsbFNlcnZpY2VIZWxwZXIgPSBvQXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRcdFx0XHRjb25zdCBvU2hlbGxIYXNoID0gb1NoZWxsU2VydmljZUhlbHBlci5wYXJzZVNoZWxsSGFzaChzSHJlZik7XG5cdFx0XHRcdFx0Y29uc3Qgb05hdkFyZ3MgPSB7XG5cdFx0XHRcdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IG9TaGVsbEhhc2guc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRcdGFjdGlvbjogb1NoZWxsSGFzaC5hY3Rpb25cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRwYXJhbXM6IG9TaGVsbEhhc2gucGFyYW1zXG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdEtlZXBBbGl2ZUhlbHBlci5zdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoKG9WaWV3LCBvU2hlbGxIYXNoKTtcblxuXHRcdFx0XHRcdGlmIChDb21tb25VdGlscy5pc1N0aWNreUVkaXRNb2RlKG9MaW5rKSAhPT0gdHJ1ZSkge1xuXHRcdFx0XHRcdFx0Ly9VUkwgcGFyYW1zIGFuZCB4YXBwU3RhdGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGVhcmxpZXIgaGVuY2UgdXNpbmcgdG9FeHRlcm5hbFxuXHRcdFx0XHRcdFx0b1NoZWxsU2VydmljZUhlbHBlci50b0V4dGVybmFsKG9OYXZBcmdzIGFzIGFueSwgb0FwcENvbXBvbmVudCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNOZXdIcmVmID0gYXdhaXQgb1NoZWxsU2VydmljZUhlbHBlci5ocmVmRm9yRXh0ZXJuYWxBc3luYyhvTmF2QXJncywgb0FwcENvbXBvbmVudCk7XG5cdFx0XHRcdFx0XHRcdG9wZW5XaW5kb3coc05ld0hyZWYpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRcdFx0TG9nLmVycm9yKGBFcnJvciB3aGlsZSByZXRpcmV2aW5nIGhyZWZGb3JFeHRlcm5hbCA6ICR7b0Vycm9yfWApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiRXJyb3IgdHJpZ2dlcmluZyBsaW5rIEhyZWZcIiwgb0Vycm9yKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAob1NvdXJjZS5nZXREZXBlbmRlbnRzKCkgJiYgb1NvdXJjZS5nZXREZXBlbmRlbnRzKCkubGVuZ3RoID4gMCAmJiBvTGluay5nZXRQcm9wZXJ0eShcInRleHRcIikgIT09IFwiXCIpIHtcblx0XHRcdGNvbnN0IG9GaWVsZEluZm8gPSBvU291cmNlLmdldERlcGVuZGVudHMoKVswXTtcblx0XHRcdGlmIChvRmllbGRJbmZvICYmIG9GaWVsZEluZm8uaXNBKFwic2FwLnVpLm1kYy5MaW5rXCIpKSB7XG5cdFx0XHRcdGF3YWl0IG9wZW5MaW5rKG9GaWVsZEluZm8pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb0xpbms7XG5cdH0sXG5cdHVwbG9hZFN0cmVhbTogZnVuY3Rpb24gKGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsIGV2ZW50OiBFdmVudCkge1xuXHRcdGNvbnN0IGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpIGFzIEZpbGVVcGxvYWRlcixcblx0XHRcdEZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihjb250cm9sbGVyKSxcblx0XHRcdGZpbGVXcmFwcGVyID0gZmlsZVVwbG9hZGVyLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgRmlsZVdyYXBwZXIsXG5cdFx0XHR1cGxvYWRVcmwgPSBmaWxlV3JhcHBlci5nZXRVcGxvYWRVcmwoKTtcblxuXHRcdGlmICh1cGxvYWRVcmwgIT09IFwiXCIpIHtcblx0XHRcdGZpbGVXcmFwcGVyLnNldFVJQnVzeSh0cnVlKTtcblxuXHRcdFx0Ly8gdXNlIHVwbG9hZFVybCBmcm9tIEZpbGVXcmFwcGVyIHdoaWNoIHJldHVybnMgYSBjYW5vbmljYWwgVVJMXG5cdFx0XHRmaWxlVXBsb2FkZXIuc2V0VXBsb2FkVXJsKHVwbG9hZFVybCk7XG5cblx0XHRcdGZpbGVVcGxvYWRlci5yZW1vdmVBbGxIZWFkZXJQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCB0b2tlbiA9IChmaWxlVXBsb2FkZXIuZ2V0TW9kZWwoKSBhcyBhbnkpPy5nZXRIdHRwSGVhZGVycygpW1wiWC1DU1JGLVRva2VuXCJdO1xuXHRcdFx0aWYgKHRva2VuKSB7XG5cdFx0XHRcdGNvbnN0IGhlYWRlclBhcmFtZXRlckNTUkZUb2tlbiA9IG5ldyBGaWxlVXBsb2FkZXJQYXJhbWV0ZXIoKTtcblx0XHRcdFx0aGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuLnNldE5hbWUoXCJ4LWNzcmYtdG9rZW5cIik7XG5cdFx0XHRcdGhlYWRlclBhcmFtZXRlckNTUkZUb2tlbi5zZXRWYWx1ZSh0b2tlbik7XG5cdFx0XHRcdGZpbGVVcGxvYWRlci5hZGRIZWFkZXJQYXJhbWV0ZXIoaGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGVUYWcgPSAoZmlsZVVwbG9hZGVyLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZCB8IG51bGwpPy5nZXRQcm9wZXJ0eShcIkBvZGF0YS5ldGFnXCIpO1xuXHRcdFx0aWYgKGVUYWcpIHtcblx0XHRcdFx0Y29uc3QgaGVhZGVyUGFyYW1ldGVyRVRhZyA9IG5ldyBGaWxlVXBsb2FkZXJQYXJhbWV0ZXIoKTtcblx0XHRcdFx0aGVhZGVyUGFyYW1ldGVyRVRhZy5zZXROYW1lKFwiSWYtTWF0Y2hcIik7XG5cdFx0XHRcdGhlYWRlclBhcmFtZXRlckVUYWcuc2V0VmFsdWUoZVRhZyk7XG5cdFx0XHRcdGZpbGVVcGxvYWRlci5hZGRIZWFkZXJQYXJhbWV0ZXIoaGVhZGVyUGFyYW1ldGVyRVRhZyk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBoZWFkZXJQYXJhbWV0ZXJBY2NlcHQgPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRoZWFkZXJQYXJhbWV0ZXJBY2NlcHQuc2V0TmFtZShcIkFjY2VwdFwiKTtcblx0XHRcdGhlYWRlclBhcmFtZXRlckFjY2VwdC5zZXRWYWx1ZShcImFwcGxpY2F0aW9uL2pzb25cIik7XG5cdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckFjY2VwdCk7XG5cblx0XHRcdC8vIHN5bmNocm9uaXplIHVwbG9hZCB3aXRoIG90aGVyIHJlcXVlc3RzXG5cdFx0XHRjb25zdCB1cGxvYWRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSwgcmVqZWN0OiBhbnkpID0+IHtcblx0XHRcdFx0dGhpcy51cGxvYWRQcm9taXNlcyA9IHRoaXMudXBsb2FkUHJvbWlzZXMgfHwge307XG5cdFx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXNbZmlsZVVwbG9hZGVyLmdldElkKCldID0ge1xuXHRcdFx0XHRcdHJlc29sdmU6IHJlc29sdmUsXG5cdFx0XHRcdFx0cmVqZWN0OiByZWplY3Rcblx0XHRcdFx0fTtcblx0XHRcdFx0ZmlsZVVwbG9hZGVyLnVwbG9hZCgpO1xuXHRcdFx0fSk7XG5cdFx0XHRGRUNvbnRyb2xsZXIuX2VkaXRGbG93LnN5bmNUYXNrKHVwbG9hZFByb21pc2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94LmVycm9yKFJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX0FCT1JURURfVEVYVFwiKSk7XG5cdFx0fVxuXHR9LFxuXG5cdGhhbmRsZVVwbG9hZENvbXBsZXRlOiBmdW5jdGlvbiAoXG5cdFx0ZXZlbnQ6IEV2ZW50LFxuXHRcdHByb3BlcnR5RmlsZU5hbWU6IHsgcGF0aDogc3RyaW5nIH0gfCB1bmRlZmluZWQsXG5cdFx0cHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdFx0Y29udHJvbGxlcjogQ29udHJvbGxlclxuXHQpIHtcblx0XHRjb25zdCBzdGF0dXMgPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJzdGF0dXNcIiksXG5cdFx0XHRmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBGaWxlVXBsb2FkZXIsXG5cdFx0XHRmaWxlV3JhcHBlciA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIEZpbGVXcmFwcGVyO1xuXG5cdFx0ZmlsZVdyYXBwZXIuc2V0VUlCdXN5KGZhbHNlKTtcblxuXHRcdGlmIChzdGF0dXMgPT09IDAgfHwgc3RhdHVzID49IDQwMCkge1xuXHRcdFx0dGhpcy5fZGlzcGxheU1lc3NhZ2VGb3JGYWlsZWRVcGxvYWQoZXZlbnQpO1xuXHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0ucmVqZWN0KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IGNvbnRleHQgPSBmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbCxcblx0XHRcdFx0bmV3RVRhZyA9IGV2ZW50LmdldFBhcmFtZXRlcihcImhlYWRlcnNcIikuZXRhZztcblxuXHRcdFx0aWYgKG5ld0VUYWcpIHtcblx0XHRcdFx0Ly8gc2V0IG5ldyBldGFnIGZvciBmaWxlbmFtZSB1cGRhdGUsIGJ1dCB3aXRob3V0IHNlbmRpbmcgcGF0Y2ggcmVxdWVzdFxuXHRcdFx0XHRjb250ZXh0Py5zZXRQcm9wZXJ0eShcIkBvZGF0YS5ldGFnXCIsIG5ld0VUYWcsIG51bGwgYXMgYW55KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gc2V0IGZpbGVuYW1lIGZvciBsaW5rIHRleHRcblx0XHRcdGlmIChwcm9wZXJ0eUZpbGVOYW1lPy5wYXRoKSB7XG5cdFx0XHRcdGNvbnRleHQ/LnNldFByb3BlcnR5KHByb3BlcnR5RmlsZU5hbWUucGF0aCwgZmlsZVVwbG9hZGVyLmdldFZhbHVlKCkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBpbnZhbGlkYXRlIHRoZSBwcm9wZXJ0eSB0aGF0IG5vdCBnZXRzIHVwZGF0ZWQgb3RoZXJ3aXNlXG5cdFx0XHRjb250ZXh0Py5zZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgsIG51bGwsIG51bGwgYXMgYW55KTtcblx0XHRcdGNvbnRleHQ/LnNldFByb3BlcnR5KHByb3BlcnR5UGF0aCwgdW5kZWZpbmVkLCBudWxsIGFzIGFueSk7XG5cblx0XHRcdHRoaXMuX2NhbGxTaWRlRWZmZWN0c0ZvclN0cmVhbShldmVudCwgZmlsZVdyYXBwZXIsIGNvbnRyb2xsZXIpO1xuXG5cdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3Qgb0ZpZWxkID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbCxcblx0XHRcdGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQob0ZpZWxkKTtcblx0XHRsZXQgc0JpbmRpbmdQYXRoO1xuXHRcdGlmIChiQ29sbGFib3JhdGlvbkVuYWJsZWQpIHtcblx0XHRcdGNvbnN0IGRhdGEgPSBbXG5cdFx0XHRcdC4uLihvRmllbGQuZ2V0UGFyZW50KCkgYXMgYW55KS5nZXRBdmF0YXIoKS5nZXRCaW5kaW5nSW5mbyhcInNyY1wiKT8ucGFydHMsXG5cdFx0XHRcdC4uLigob0ZpZWxkLmdldFBhcmVudCgpIGFzIGFueSkuZ2V0QXZhdGFyKCkuZ2V0QmluZGluZ0luZm8oXCJhZGRpdGlvbmFsVmFsdWVcIik/LnBhcnRzIHx8IFtdKVxuXHRcdFx0XS5tYXAoZnVuY3Rpb24gKHBhcnQ6IGFueSkge1xuXHRcdFx0XHRpZiAocGFydCkge1xuXHRcdFx0XHRcdHNCaW5kaW5nUGF0aCA9IHBhcnQucGF0aDtcblx0XHRcdFx0XHRyZXR1cm4gYCR7b0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vJHtzQmluZGluZ1BhdGh9YDtcblx0XHRcdFx0fVxuXHRcdFx0fSkgYXMgW107XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQob0ZpZWxkLCBBY3Rpdml0eS5DaGFuZ2UsIGRhdGEpO1xuXHRcdH1cblxuXHRcdGRlbGV0ZSB0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXTtcblx0fSxcblxuXHRfZGlzcGxheU1lc3NhZ2VGb3JGYWlsZWRVcGxvYWQ6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdC8vIGhhbmRsaW5nIG9mIGJhY2tlbmQgZXJyb3JzXG5cdFx0Y29uc3Qgc0Vycm9yID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlUmF3XCIpIHx8IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJyZXNwb25zZVwiKTtcblx0XHRsZXQgc01lc3NhZ2VUZXh0LCBvRXJyb3I7XG5cdFx0dHJ5IHtcblx0XHRcdG9FcnJvciA9IHNFcnJvciAmJiBKU09OLnBhcnNlKHNFcnJvcik7XG5cdFx0XHRzTWVzc2FnZVRleHQgPSBvRXJyb3IuZXJyb3IgJiYgb0Vycm9yLmVycm9yLm1lc3NhZ2U7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c01lc3NhZ2VUZXh0ID0gc0Vycm9yIHx8IFJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX0FCT1JURURfVEVYVFwiKTtcblx0XHR9XG5cdFx0TWVzc2FnZUJveC5lcnJvcihzTWVzc2FnZVRleHQpO1xuXHR9LFxuXG5cdHJlbW92ZVN0cmVhbTogZnVuY3Rpb24gKG9FdmVudDogYW55LCBzUHJvcGVydHlQYXRoOiBhbnksIG9Db250cm9sbGVyOiBhbnkpIHtcblx0XHRjb25zdCBvRGVsZXRlQnV0dG9uID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0b0ZpbGVXcmFwcGVyID0gb0RlbGV0ZUJ1dHRvbi5nZXRQYXJlbnQoKSxcblx0XHRcdG9Db250ZXh0ID0gb0ZpbGVXcmFwcGVyLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cblx0XHQvLyBzdHJlYW1zIGFyZSByZW1vdmVkIGJ5IGFzc2lnbmluZyB0aGUgbnVsbCB2YWx1ZVxuXHRcdG9Db250ZXh0LnNldFByb3BlcnR5KHNQcm9wZXJ0eVBhdGgsIG51bGwpO1xuXHRcdC8vIFdoZW4gc2V0dGluZyB0aGUgcHJvcGVydHkgdG8gbnVsbCwgdGhlIHVwbG9hZFVybCAoQEBNT0RFTC5mb3JtYXQpIGlzIHNldCB0byBcIlwiIGJ5IHRoZSBtb2RlbFxuXHRcdC8vXHR3aXRoIHRoYXQgYW5vdGhlciB1cGxvYWQgaXMgbm90IHBvc3NpYmxlIGJlZm9yZSByZWZyZXNoaW5nIHRoZSBwYWdlXG5cdFx0Ly8gKHJlZnJlc2hpbmcgdGhlIHBhZ2Ugd291bGQgcmVjcmVhdGUgdGhlIFVSTClcblx0XHQvL1x0VGhpcyBpcyB0aGUgd29ya2Fyb3VuZDpcblx0XHQvL1x0V2Ugc2V0IHRoZSBwcm9wZXJ0eSB0byB1bmRlZmluZWQgb25seSBvbiB0aGUgZnJvbnRlbmQgd2hpY2ggd2lsbCByZWNyZWF0ZSB0aGUgdXBsb2FkVXJsXG5cdFx0b0NvbnRleHQuc2V0UHJvcGVydHkoc1Byb3BlcnR5UGF0aCwgdW5kZWZpbmVkLCBudWxsKTtcblxuXHRcdHRoaXMuX2NhbGxTaWRlRWZmZWN0c0ZvclN0cmVhbShvRXZlbnQsIG9GaWxlV3JhcHBlciwgb0NvbnRyb2xsZXIpO1xuXG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3QgYkNvbGxhYm9yYXRpb25FbmFibGVkID0gQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChvRGVsZXRlQnV0dG9uKTtcblx0XHRsZXQgb0JpbmRpbmcsIHNCaW5kaW5nUGF0aDtcblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRvQmluZGluZyA9IG9Db250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRcdGlmICghb0JpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9EZWxldGVCdXR0b24pO1xuXHRcdFx0XHRvQmluZGluZyA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0QmluZGluZygpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkYXRhID0gW1xuXHRcdFx0XHQuLi5vRmlsZVdyYXBwZXIuZ2V0QXZhdGFyKCkuZ2V0QmluZGluZ0luZm8oXCJzcmNcIik/LnBhcnRzLFxuXHRcdFx0XHQuLi4ob0ZpbGVXcmFwcGVyLmdldEF2YXRhcigpLmdldEJpbmRpbmdJbmZvKFwiYWRkaXRpb25hbFZhbHVlXCIpPy5wYXJ0cyB8fCBbXSlcblx0XHRcdF0ubWFwKGZ1bmN0aW9uIChwYXJ0OiBhbnkpIHtcblx0XHRcdFx0aWYgKHBhcnQpIHtcblx0XHRcdFx0XHRzQmluZGluZ1BhdGggPSBwYXJ0LnBhdGg7XG5cdFx0XHRcdFx0cmV0dXJuIGAke29Db250ZXh0LmdldFBhdGgoKX0vJHtzQmluZGluZ1BhdGh9YDtcblx0XHRcdFx0fVxuXHRcdFx0fSkgYXMgW107XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQob0RlbGV0ZUJ1dHRvbiwgQWN0aXZpdHkuTGl2ZUNoYW5nZSwgZGF0YSk7XG5cblx0XHRcdG9CaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9EZWxldGVCdXR0b24sIEFjdGl2aXR5LkNoYW5nZSwgZGF0YSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0X2NhbGxTaWRlRWZmZWN0c0ZvclN0cmVhbTogZnVuY3Rpb24gKG9FdmVudDogYW55LCBvQ29udHJvbDogYW55LCBvQ29udHJvbGxlcjogYW55KSB7XG5cdFx0Y29uc3Qgb0ZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihvQ29udHJvbGxlcik7XG5cdFx0aWYgKG9Db250cm9sICYmIG9Db250cm9sLmdldEJpbmRpbmdDb250ZXh0KCkuaXNUcmFuc2llbnQoKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdG9FdmVudC5vU291cmNlID0gb0NvbnRyb2w7XG5cdFx0fVxuXHRcdG9GRUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLmhhbmRsZUZpZWxkQ2hhbmdlKG9FdmVudCk7XG5cdH0sXG5cblx0Z2V0SWNvbkZvck1pbWVUeXBlOiBmdW5jdGlvbiAoc01pbWVUeXBlOiBhbnkpIHtcblx0XHRyZXR1cm4gSWNvblBvb2wuZ2V0SWNvbkZvck1pbWVUeXBlKHNNaW1lVHlwZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byByZXRyaWV2ZSB0ZXh0IGZyb20gdmFsdWUgbGlzdCBmb3IgRGF0YUZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgcmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdFxuXHQgKiBAcGFyYW0gc1Byb3BlcnR5VmFsdWUgVGhlIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBkYXRhZmllbGRcblx0ICogQHBhcmFtIHNQcm9wZXJ0eUZ1bGxQYXRoIFRoZSBwcm9wZXJ0eSBmdWxsIHBhdGgnc1xuXHQgKiBAcGFyYW0gc0Rpc3BsYXlGb3JtYXQgVGhlIGRpc3BsYXkgZm9ybWF0IGZvciB0aGUgZGF0YWZpZWxkXG5cdCAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdmFsdWUgaW4gY29ycmVzcG9uZGluZyBkaXNwbGF5IGZvcm1hdC5cblx0ICovXG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IGZ1bmN0aW9uIChzUHJvcGVydHlWYWx1ZTogc3RyaW5nLCBzUHJvcGVydHlGdWxsUGF0aDogc3RyaW5nLCBzRGlzcGxheUZvcm1hdDogc3RyaW5nKSB7XG5cdFx0bGV0IHNUZXh0UHJvcGVydHk6IHN0cmluZztcblx0XHRsZXQgb01ldGFNb2RlbDtcblx0XHRsZXQgc1Byb3BlcnR5TmFtZTogc3RyaW5nO1xuXHRcdGlmIChzUHJvcGVydHlWYWx1ZSkge1xuXHRcdFx0b01ldGFNb2RlbCA9IENvbW1vbkhlbHBlci5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdHNQcm9wZXJ0eU5hbWUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUHJvcGVydHlGdWxsUGF0aH1Ac2FwdWkubmFtZWApO1xuXHRcdFx0cmV0dXJuIG9NZXRhTW9kZWxcblx0XHRcdFx0LnJlcXVlc3RWYWx1ZUxpc3RJbmZvKHNQcm9wZXJ0eUZ1bGxQYXRoLCB0cnVlKVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAobVZhbHVlTGlzdEluZm86IGFueSkge1xuXHRcdFx0XHRcdC8vIHRha2UgdGhlIFwiXCIgb25lIGlmIGV4aXN0cywgb3RoZXJ3aXNlIHRha2UgdGhlIGZpcnN0IG9uZSBpbiB0aGUgb2JqZWN0IFRPRE86IHRvIGJlIGRpc2N1c3NlZFxuXHRcdFx0XHRcdGNvbnN0IG9WYWx1ZUxpc3RJbmZvID0gbVZhbHVlTGlzdEluZm9bbVZhbHVlTGlzdEluZm9bXCJcIl0gPyBcIlwiIDogT2JqZWN0LmtleXMobVZhbHVlTGlzdEluZm8pWzBdXTtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVMaXN0TW9kZWwgPSBvVmFsdWVMaXN0SW5mby4kbW9kZWw7XG5cdFx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbFZhbHVlTGlzdCA9IG9WYWx1ZUxpc3RNb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0XHRjb25zdCBvUGFyYW1XaXRoS2V5ID0gb1ZhbHVlTGlzdEluZm8uUGFyYW1ldGVycy5maW5kKGZ1bmN0aW9uIChvUGFyYW1ldGVyOiBhbnkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvUGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5ICYmIG9QYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkuJFByb3BlcnR5UGF0aCA9PT0gc1Byb3BlcnR5TmFtZTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAob1BhcmFtV2l0aEtleSAmJiAhb1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGBJbmNvbnNpc3RlbnQgdmFsdWUgaGVscCBhbm5vdGF0aW9uIGZvciAke3NQcm9wZXJ0eU5hbWV9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IG9UZXh0QW5ub3RhdGlvbiA9IG9NZXRhTW9kZWxWYWx1ZUxpc3QuZ2V0T2JqZWN0KFxuXHRcdFx0XHRcdFx0YC8ke29WYWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofS8ke29QYXJhbVdpdGhLZXkuVmFsdWVMaXN0UHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0YFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAob1RleHRBbm5vdGF0aW9uICYmIG9UZXh0QW5ub3RhdGlvbi4kUGF0aCkge1xuXHRcdFx0XHRcdFx0c1RleHRQcm9wZXJ0eSA9IG9UZXh0QW5ub3RhdGlvbi4kUGF0aDtcblx0XHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXIgPSBuZXcgRmlsdGVyKHtcblx0XHRcdFx0XHRcdFx0cGF0aDogb1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IFwiRVFcIixcblx0XHRcdFx0XHRcdFx0dmFsdWUxOiBzUHJvcGVydHlWYWx1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvVmFsdWVMaXN0TW9kZWwuYmluZExpc3QoYC8ke29WYWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBvRmlsdGVyLCB7XG5cdFx0XHRcdFx0XHRcdFwiJHNlbGVjdFwiOiBzVGV4dFByb3BlcnR5XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybiBvTGlzdEJpbmRpbmcucmVxdWVzdENvbnRleHRzKDAsIDIpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRzRGlzcGxheUZvcm1hdCA9IFwiVmFsdWVcIjtcblx0XHRcdFx0XHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChhQ29udGV4dHM6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IHNEZXNjcmlwdGlvbiA9IHNUZXh0UHJvcGVydHkgPyBhQ29udGV4dHNbMF0/LmdldE9iamVjdCgpW3NUZXh0UHJvcGVydHldIDogXCJcIjtcblx0XHRcdFx0XHRzd2l0Y2ggKHNEaXNwbGF5Rm9ybWF0KSB7XG5cdFx0XHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNEZXNjcmlwdGlvbjtcblx0XHRcdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBDb3JlLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLmdldFRleHQoXCJDX0ZPUk1BVF9GT1JfVEVYVF9BUlJBTkdFTUVOVFwiLCBbXG5cdFx0XHRcdFx0XHRcdFx0c0Rlc2NyaXB0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eVZhbHVlXG5cdFx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIENvcmUuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikuZ2V0VGV4dChcIkNfRk9STUFUX0ZPUl9URVhUX0FSUkFOR0VNRU5UXCIsIFtcblx0XHRcdFx0XHRcdFx0XHRzUHJvcGVydHlWYWx1ZSxcblx0XHRcdFx0XHRcdFx0XHRzRGVzY3JpcHRpb25cblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc1Byb3BlcnR5VmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc01zZyA9XG5cdFx0XHRcdFx0XHRvRXJyb3Iuc3RhdHVzICYmIG9FcnJvci5zdGF0dXMgPT09IDQwNFxuXHRcdFx0XHRcdFx0XHQ/IGBNZXRhZGF0YSBub3QgZm91bmQgKCR7b0Vycm9yLnN0YXR1c30pIGZvciB2YWx1ZSBoZWxwIG9mIHByb3BlcnR5ICR7c1Byb3BlcnR5RnVsbFBhdGh9YFxuXHRcdFx0XHRcdFx0XHQ6IG9FcnJvci5tZXNzYWdlO1xuXHRcdFx0XHRcdExvZy5lcnJvcihzTXNnKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0fSxcblxuXHRoYW5kbGVUeXBlTWlzc21hdGNoOiBmdW5jdGlvbiAob0V2ZW50OiBhbnkpIHtcblx0XHRNZXNzYWdlQm94LmVycm9yKFJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX1dST05HX01JTUVUWVBFXCIpLCB7XG5cdFx0XHRkZXRhaWxzOlxuXHRcdFx0XHRgPHA+PHN0cm9uZz4ke1Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX1dST05HX01JTUVUWVBFX0RFVEFJTFNfU0VMRUNURURcIil9PC9zdHJvbmc+PC9wPiR7XG5cdFx0XHRcdFx0b0V2ZW50LmdldFBhcmFtZXRlcnMoKS5taW1lVHlwZVxuXHRcdFx0XHR9PGJyPjxicj5gICtcblx0XHRcdFx0YDxwPjxzdHJvbmc+JHtSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRV9ERVRBSUxTX0FMTE9XRURcIil9PC9zdHJvbmc+PC9wPiR7b0V2ZW50XG5cdFx0XHRcdFx0LmdldFNvdXJjZSgpXG5cdFx0XHRcdFx0LmdldE1pbWVUeXBlKClcblx0XHRcdFx0XHQudG9TdHJpbmcoKVxuXHRcdFx0XHRcdC5yZXBsYWNlQWxsKFwiLFwiLCBcIiwgXCIpfWAsXG5cdFx0XHRjb250ZW50V2lkdGg6IFwiMTUwcHhcIlxuXHRcdH0gYXMgYW55KTtcblx0fSxcblxuXHRoYW5kbGVGaWxlU2l6ZUV4Y2VlZDogZnVuY3Rpb24gKG9FdmVudDogYW55IC8qaUZpbGVTaXplOiBhbnkqLykge1xuXHRcdE1lc3NhZ2VCb3guZXJyb3IoUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9GSUVMRF9GSUxFVVBMT0FERVJfRklMRV9UT09fQklHXCIsIG9FdmVudC5nZXRTb3VyY2UoKS5nZXRNYXhpbXVtRmlsZVNpemUoKS50b0ZpeGVkKDMpKSwge1xuXHRcdFx0Y29udGVudFdpZHRoOiBcIjE1MHB4XCJcblx0XHR9IGFzIGFueSk7XG5cdH0sXG5cblx0X2dldEV4dGVuc2lvbkNvbnRyb2xsZXI6IGZ1bmN0aW9uIChvQ29udHJvbGxlcjogYW55KSB7XG5cdFx0cmV0dXJuIG9Db250cm9sbGVyLmlzQShcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKSA/IG9Db250cm9sbGVyLl9jb250cm9sbGVyIDogb0NvbnRyb2xsZXI7XG5cdH1cbn07XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBGaWVsZFJ1bnRpbWU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7O0VBa2pCTyxnQkFBZ0JBLElBQUksRUFBRUMsT0FBTyxFQUFFO0lBQ3JDLElBQUk7TUFDSCxJQUFJQyxNQUFNLEdBQUdGLElBQUksRUFBRTtJQUNwQixDQUFDLENBQUMsT0FBTUcsQ0FBQyxFQUFFO01BQ1YsT0FBT0YsT0FBTyxDQUFDRSxDQUFDLENBQUM7SUFDbEI7SUFDQSxJQUFJRCxNQUFNLElBQUlBLE1BQU0sQ0FBQ0UsSUFBSSxFQUFFO01BQzFCLE9BQU9GLE1BQU0sQ0FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFSCxPQUFPLENBQUM7SUFDcEM7SUFDQSxPQUFPQyxNQUFNO0VBQ2Q7RUFBQztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFoaUJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLElBQU1HLFlBQVksR0FBRztJQUNwQkMsbUJBQW1CLEVBQUVDLFNBQWdCO0lBQ3JDQyxjQUFjLEVBQUVELFNBQWdCO0lBRWhDRSw2QkFBNkIsRUFB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
750
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib2R5IiwicmVjb3ZlciIsInJlc3VsdCIsImUiLCJ0aGVuIiwiRmllbGRSdW50aW1lIiwicmVzZXRDaGFuZ2VzSGFuZGxlciIsInVuZGVmaW5lZCIsInVwbG9hZFByb21pc2VzIiwiZm9ybWF0RHJhZnRPd25lclRleHRJblBvcG92ZXIiLCJiSGFzRHJhZnRFbnRpdHkiLCJzRHJhZnRJblByb2Nlc3NCeVVzZXIiLCJzRHJhZnRMYXN0Q2hhbmdlZEJ5VXNlciIsInNEcmFmdEluUHJvY2Vzc0J5VXNlckRlc2MiLCJzRHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MiLCJzVXNlckRlc2NyaXB0aW9uIiwiUmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aCIsIm9Tb3VyY2UiLCJvQ29udHJvbGxlciIsInNTZW1hbnRpY09iamVjdE5hbWUiLCJfcm91dGluZyIsIm9CaW5kaW5nQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0Iiwib1ZpZXciLCJDb21tb25VdGlscyIsImdldFRhcmdldFZpZXciLCJvTWV0YU1vZGVsIiwiZ2V0TW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJmbk5hdmlnYXRlIiwib0NvbnRleHQiLCJuYXZpZ2F0ZVRvVGFyZ2V0IiwiZ2V0Vmlld0RhdGEiLCJjb252ZXJ0ZXJUeXBlIiwiTW9kZWxIZWxwZXIiLCJpc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQiLCJkcmFmdCIsInByb2Nlc3NEYXRhTG9zc09yRHJhZnREaXNjYXJkQ29uZmlybWF0aW9uIiwiRnVuY3Rpb24iLCJwcm90b3R5cGUiLCJnZXRDb250cm9sbGVyIiwiTmF2aWdhdGlvblR5cGUiLCJGb3J3YXJkTmF2aWdhdGlvbiIsIkxvZyIsImVycm9yIiwiaXNEcmFmdEluZGljYXRvclZpc2libGUiLCJzUHJvcGVydHlQYXRoIiwic1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3IiLCJIYXNEcmFmdEVudGl0eSIsIklzQWN0aXZlRW50aXR5IiwiaGlkZURyYWZ0SW5mbyIsImhhc1RhcmdldHMiLCJiU2VtYW50aWNPYmplY3RIYXNUYXJnZXRzIiwiZ2V0U3RhdGVEZXBlbmRpbmdPblNlbWFudGljT2JqZWN0VGFyZ2V0cyIsIm9uVmFsaWRhdGVGaWVsZEdyb3VwIiwib0V2ZW50Iiwib0ZFQ29udHJvbGxlciIsIl9nZXRFeHRlbnNpb25Db250cm9sbGVyIiwiX3NpZGVFZmZlY3RzIiwiaGFuZGxlRmllbGRHcm91cENoYW5nZSIsImhhbmRsZUNoYW5nZSIsIm9Tb3VyY2VGaWVsZCIsImdldFNvdXJjZSIsImJJc1RyYW5zaWVudCIsImlzVHJhbnNpZW50IiwicFZhbHVlUmVzb2x2ZWQiLCJnZXRQYXJhbWV0ZXIiLCJQcm9taXNlIiwicmVzb2x2ZSIsImJWYWxpZCIsIm1QYXJhbWV0ZXJzIiwidmFsaWQiLCJGaWVsZEFQSSIsImNhdGNoIiwiX2VkaXRGbG93Iiwic3luY1Rhc2siLCJoYW5kbGVGaWVsZENoYW5nZSIsIm9GaWVsZCIsImJDb2xsYWJvcmF0aW9uRW5hYmxlZCIsIkNvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMiLCJpc0Nvbm5lY3RlZCIsIm9CaW5kaW5nIiwic0JpbmRpbmdQYXRoIiwiZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlIiwic3RhdGUiLCJnZXRCaW5kaW5nIiwiaXNBIiwiZGF0YSIsImdldEJpbmRpbmdJbmZvIiwicGFydHMiLCJtYXAiLCJwYXJ0IiwicGF0aCIsImdldFBhdGgiLCJhdHRhY2hFdmVudE9uY2UiLCJzZW5kIiwiQWN0aXZpdHkiLCJDaGFuZ2UiLCJoYW5kbGVMaXZlQ2hhbmdlIiwic0Z1bGxQYXRoIiwiTGl2ZUNoYW5nZSIsImdldFZhbHVlIiwiVW5kbyIsImRldGFjaEJyb3dzZXJFdmVudCIsImF0dGFjaEJyb3dzZXJFdmVudCIsImhhbmRsZU9wZW5QaWNrZXIiLCJoYW5kbGVDbG9zZVBpY2tlciIsIkRhdGUiLCJ0b0RhdGVTdHJpbmciLCJoYW5kbGVPcGVuVXBsb2FkZXIiLCJnZXRQYXJlbnQiLCJnZXRBdmF0YXIiLCJoYW5kbGVDbG9zZVVwbG9hZGVyIiwibUZpZWxkU3RhdGUiLCJfaXNCaW5kaW5nU3RhdGVNZXNzYWdlcyIsImdldERhdGFTdGF0ZSIsImdldEludmFsaWRWYWx1ZSIsImdldENvbnRlbnQiLCJGaWVsZFdyYXBwZXIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJnZXRFZGl0TW9kZSIsImdldENvbnRlbnRFZGl0IiwiYklzVmFsaWQiLCJnZXRNYXhDb25kaXRpb25zIiwib1ZhbHVlQmluZGluZ0luZm8iLCJiaW5kaW5nIiwiZ2V0UHJvcGVydHkiLCJmaWVsZFZhbHVlIiwidmFsaWRpdHkiLCJmaWVsZCIsIl9mbkZpeEhhc2hRdWVyeVN0cmluZyIsInNDdXJyZW50SGFzaCIsImluZGV4T2YiLCJzcGxpdCIsIl9mbkdldExpbmtJbmZvcm1hdGlvbiIsIl9vU291cmNlIiwiX29MaW5rIiwiX3NQcm9wZXJ0eVBhdGgiLCJfc1ZhbHVlIiwiZm5TZXRBY3RpdmUiLCJvTW9kZWwiLCJvSW50ZXJuYWxNb2RlbENvbnRleHQiLCJvQXBwQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50Iiwib1NoZWxsU2VydmljZUhlbHBlciIsImdldFNoZWxsU2VydmljZXMiLCJwR2V0TGlua3NQcm9taXNlIiwiZ2V0TGlua3NXaXRoQ2FjaGUiLCJzZW1hbnRpY09iamVjdCIsImFTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyIsImdldE9iamVjdCIsIlNlbWFudGljT2JqZWN0TmFtZSIsIlNlbWFudGljT2JqZWN0RnVsbFBhdGgiLCJNZXRhTW9kZWwiLCJJbnRlcm5hbE1vZGVsQ29udGV4dCIsIlNoZWxsU2VydmljZUhlbHBlciIsIkdldExpbmtzUHJvbWlzZSIsIlNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zIiwiX2ZuUXVpY2tWaWV3SGFzTmV3Q29uZGl0aW9uIiwib1NlbWFudGljT2JqZWN0UGF5bG9hZCIsIl9vTGlua0luZm8iLCJiUmVzdWx0aW5nTmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyIiwiX2ZuUXVpY2tWaWV3U2V0TmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyIiwiX29GaW5hbFNlbWFudGljT2JqZWN0cyIsInNUbXBQYXRoIiwiYVNlbWFudGljT2JqZWN0UGF0aHMiLCJPYmplY3QiLCJrZXlzIiwiaVBhdGhzQ291bnQiLCJfZm5VcGRhdGVTZW1hbnRpY09iamVjdHNUYXJnZXRNb2RlbCIsInNWYWx1ZSIsIm9Db250cm9sIiwiYkFjdGl2ZSIsInNldEFjdGl2ZSIsInNldFRpdGxlQWN0aXZlIiwib0NvbmRpdGlvbmFsV3JhcHBlciIsInNldENvbmRpdGlvbiIsIm9MaW5rSW5mbyIsImdldEhhc2giLCJ1cGRhdGVTZW1hbnRpY1RhcmdldHMiLCJvRmluYWxTZW1hbnRpY09iamVjdHMiLCJvRXJyb3IiLCJfY2hlY2tDb250cm9sSGFzTW9kZWxBbmRCaW5kaW5nQ29udGV4dCIsIl9jb250cm9sIiwiX2NoZWNrQ3VzdG9tRGF0YVZhbHVlQmVmb3JlVXBkYXRpbmdTZW1hbnRpY09iamVjdE1vZGVsIiwicHJvcGVydHlQYXRoIiwiYUN1c3RvbURhdGEiLCJzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUiLCJvVmFsdWVCaW5kaW5nIiwiX2ZuQ3VzdG9tRGF0YVZhbHVlSXNTdHJpbmciLCJzZW1hbnRpY09iamVjdFBhdGhWYWx1ZSIsImZpbHRlciIsImN1c3RvbURhdGEiLCJnZXRLZXkiLCJpbmRleCIsIl9vQ2hhbmdlRXZlbnQiLCJMaW5rTW9kZWxDb250ZXh0Q2hhbmdlIiwic1Byb3BlcnR5Iiwic1BhdGhUb1Byb3BlcnR5IiwiY29udHJvbCIsIm1kY0xpbmsiLCJnZXREZXBlbmRlbnRzIiwibGVuZ3RoIiwiZ2V0Q3VzdG9tRGF0YSIsIm9wZW5FeHRlcm5hbExpbmsiLCJldmVudCIsInNvdXJjZSIsIm9wZW5XaW5kb3ciLCJwcmVzc0xpbmsiLCJvcGVuTGluayIsImdldFRyaWdnZXJIcmVmIiwic0hyZWYiLCJvcGVuIiwib0xpbmsiLCJvU2hlbGxIYXNoIiwicGFyc2VTaGVsbEhhc2giLCJvTmF2QXJncyIsInRhcmdldCIsImFjdGlvbiIsInBhcmFtcyIsIktlZXBBbGl2ZUhlbHBlciIsInN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2giLCJpc1N0aWNreUVkaXRNb2RlIiwidG9FeHRlcm5hbCIsImhyZWZGb3JFeHRlcm5hbEFzeW5jIiwic05ld0hyZWYiLCJmaW5kRWxlbWVudHMiLCJlbGVtIiwib0ZpZWxkSW5mbyIsInVwbG9hZFN0cmVhbSIsImNvbnRyb2xsZXIiLCJmaWxlVXBsb2FkZXIiLCJGRUNvbnRyb2xsZXIiLCJmaWxlV3JhcHBlciIsInVwbG9hZFVybCIsImdldFVwbG9hZFVybCIsInNldFVJQnVzeSIsInNldFVwbG9hZFVybCIsInJlbW92ZUFsbEhlYWRlclBhcmFtZXRlcnMiLCJ0b2tlbiIsImdldEh0dHBIZWFkZXJzIiwiaGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuIiwiRmlsZVVwbG9hZGVyUGFyYW1ldGVyIiwic2V0TmFtZSIsInNldFZhbHVlIiwiYWRkSGVhZGVyUGFyYW1ldGVyIiwiZVRhZyIsImhlYWRlclBhcmFtZXRlckVUYWciLCJoZWFkZXJQYXJhbWV0ZXJBY2NlcHQiLCJ1cGxvYWRQcm9taXNlIiwicmVqZWN0IiwiZ2V0SWQiLCJ1cGxvYWQiLCJNZXNzYWdlQm94IiwiaGFuZGxlVXBsb2FkQ29tcGxldGUiLCJwcm9wZXJ0eUZpbGVOYW1lIiwic3RhdHVzIiwiX2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkIiwiY29udGV4dCIsIm5ld0VUYWciLCJldGFnIiwic2V0UHJvcGVydHkiLCJfY2FsbFNpZGVFZmZlY3RzRm9yU3RyZWFtIiwic0Vycm9yIiwic01lc3NhZ2VUZXh0IiwiSlNPTiIsInBhcnNlIiwibWVzc2FnZSIsInJlbW92ZVN0cmVhbSIsIm9EZWxldGVCdXR0b24iLCJvRmlsZVdyYXBwZXIiLCJnZXRJY29uRm9yTWltZVR5cGUiLCJzTWltZVR5cGUiLCJJY29uUG9vbCIsInJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QiLCJzUHJvcGVydHlWYWx1ZSIsInNQcm9wZXJ0eUZ1bGxQYXRoIiwic0Rpc3BsYXlGb3JtYXQiLCJzVGV4dFByb3BlcnR5Iiwic1Byb3BlcnR5TmFtZSIsIkNvbW1vbkhlbHBlciIsInJlcXVlc3RWYWx1ZUxpc3RJbmZvIiwibVZhbHVlTGlzdEluZm8iLCJvVmFsdWVMaXN0SW5mbyIsIm9WYWx1ZUxpc3RNb2RlbCIsIiRtb2RlbCIsIm9NZXRhTW9kZWxWYWx1ZUxpc3QiLCJvUGFyYW1XaXRoS2V5IiwiUGFyYW1ldGVycyIsImZpbmQiLCJvUGFyYW1ldGVyIiwiTG9jYWxEYXRhUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwiVmFsdWVMaXN0UHJvcGVydHkiLCJvVGV4dEFubm90YXRpb24iLCJDb2xsZWN0aW9uUGF0aCIsIiRQYXRoIiwib0ZpbHRlciIsIkZpbHRlciIsIm9wZXJhdG9yIiwidmFsdWUxIiwib0xpc3RCaW5kaW5nIiwiYmluZExpc3QiLCJyZXF1ZXN0Q29udGV4dHMiLCJhQ29udGV4dHMiLCJzRGVzY3JpcHRpb24iLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwic01zZyIsImhhbmRsZVR5cGVNaXNzbWF0Y2giLCJkZXRhaWxzIiwiZ2V0UGFyYW1ldGVycyIsIm1pbWVUeXBlIiwiZ2V0TWltZVR5cGUiLCJ0b1N0cmluZyIsInJlcGxhY2VBbGwiLCJjb250ZW50V2lkdGgiLCJoYW5kbGVGaWxlU2l6ZUV4Y2VlZCIsImdldE1heGltdW1GaWxlU2l6ZSIsInRvRml4ZWQiLCJfY29udHJvbGxlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRSdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQWN0aXZpdHlTeW5jXCI7XG5pbXBvcnQgeyBBY3Rpdml0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCBkcmFmdCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvZWRpdEZsb3cvZHJhZnRcIjtcbmltcG9ydCBGaWVsZFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0ZpZWxkV3JhcHBlclwiO1xuaW1wb3J0IHR5cGUgRmlsZVdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xzL0ZpbGVXcmFwcGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgS2VlcEFsaXZlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0tlZXBBbGl2ZUhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb21tb25IZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29tbW9uSGVscGVyXCI7XG5pbXBvcnQgRmllbGRBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRBUElcIjtcbmltcG9ydCBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvZmUvbWFjcm9zL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgQ3VzdG9tRGF0YSBmcm9tIFwic2FwL3VpL2NvcmUvQ3VzdG9tRGF0YVwiO1xuaW1wb3J0IEljb25Qb29sIGZyb20gXCJzYXAvdWkvY29yZS9JY29uUG9vbFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbGxlciBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBGaWxlVXBsb2FkZXIgZnJvbSBcInNhcC91aS91bmlmaWVkL0ZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IEZpbGVVcGxvYWRlclBhcmFtZXRlciBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyUGFyYW1ldGVyXCI7XG5pbXBvcnQgb3BlbldpbmRvdyBmcm9tIFwic2FwL3VpL3V0aWwvb3BlbldpbmRvd1wiO1xuXG4vKipcbiAqIFN0YXRpYyBjbGFzcyB1c2VkIGJ5IFwic2FwLnVpLm1kYy5GaWVsZFwiIGR1cmluZyBydW50aW1lXG4gKlxuICogQHByaXZhdGVcbiAqIEBleHBlcmltZW50YWwgVGhpcyBtb2R1bGUgaXMgb25seSBmb3IgaW50ZXJuYWwvZXhwZXJpbWVudGFsIHVzZSFcbiAqL1xuY29uc3QgRmllbGRSdW50aW1lID0ge1xuXHRyZXNldENoYW5nZXNIYW5kbGVyOiB1bmRlZmluZWQgYXMgYW55LFxuXHR1cGxvYWRQcm9taXNlczogdW5kZWZpbmVkIGFzIGFueSxcblxuXHRmb3JtYXREcmFmdE93bmVyVGV4dEluUG9wb3ZlcjogZnVuY3Rpb24gKFxuXHRcdGJIYXNEcmFmdEVudGl0eTogYW55LFxuXHRcdHNEcmFmdEluUHJvY2Vzc0J5VXNlcjogYW55LFxuXHRcdHNEcmFmdExhc3RDaGFuZ2VkQnlVc2VyOiBhbnksXG5cdFx0c0RyYWZ0SW5Qcm9jZXNzQnlVc2VyRGVzYzogYW55LFxuXHRcdHNEcmFmdExhc3RDaGFuZ2VkQnlVc2VyRGVzYzogYW55XG5cdCkge1xuXHRcdGlmIChiSGFzRHJhZnRFbnRpdHkpIHtcblx0XHRcdGNvbnN0IHNVc2VyRGVzY3JpcHRpb24gPVxuXHRcdFx0XHRzRHJhZnRJblByb2Nlc3NCeVVzZXJEZXNjIHx8IHNEcmFmdEluUHJvY2Vzc0J5VXNlciB8fCBzRHJhZnRMYXN0Q2hhbmdlZEJ5VXNlckRlc2MgfHwgc0RyYWZ0TGFzdENoYW5nZWRCeVVzZXI7XG5cblx0XHRcdGlmICghc1VzZXJEZXNjcmlwdGlvbikge1xuXHRcdFx0XHRyZXR1cm4gUmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9GSUVMRF9SVU5USU1FX0RSQUZUX1BPUE9WRVJfVU5TQVZFRF9DSEFOR0VTX0JZX1VOS05PV05cIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gc0RyYWZ0SW5Qcm9jZXNzQnlVc2VyXG5cdFx0XHRcdFx0PyBSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX1JVTlRJTUVfRFJBRlRfUE9QT1ZFUl9MT0NLRURfQllfS05PV05cIiwgc1VzZXJEZXNjcmlwdGlvbilcblx0XHRcdFx0XHQ6IFJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfUlVOVElNRV9EUkFGVF9QT1BPVkVSX1VOU0FWRURfQ0hBTkdFU19CWV9LTk9XTlwiLCBzVXNlckRlc2NyaXB0aW9uKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfUlVOVElNRV9EUkFGVF9QT1BPVkVSX05PX0RBVEFfVEVYVFwiKTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIGludGVybmFsIG5hdmlnYXRpb24gb24gdGhlIGxpbmsgcGVydGFpbmluZyB0byBEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSBvU291cmNlIFNvdXJjZSBvZiB0aGUgcHJlc3MgZXZlbnRcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIEluc3RhbmNlIG9mIHRoZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBzU2VtYW50aWNPYmplY3ROYW1lIFNlbWFudGljIG9iamVjdCBuYW1lXG5cdCAqL1xuXHRvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDogZnVuY3Rpb24gKG9Tb3VyY2U6IENvbnRyb2wsIG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc1NlbWFudGljT2JqZWN0TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKG9Db250cm9sbGVyLl9yb3V0aW5nKSB7XG5cdFx0XHRsZXQgb0JpbmRpbmdDb250ZXh0ID0gb1NvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRjb25zdCBvVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcob1NvdXJjZSksXG5cdFx0XHRcdG9NZXRhTW9kZWwgPSBvQmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSBhcyBPRGF0YU1ldGFNb2RlbCxcblx0XHRcdFx0Zm5OYXZpZ2F0ZSA9IGZ1bmN0aW9uIChvQ29udGV4dD86IGFueSkge1xuXHRcdFx0XHRcdGlmIChvQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gb0NvbnRleHQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9Db250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0JpbmRpbmdDb250ZXh0LCBzU2VtYW50aWNPYmplY3ROYW1lLCB1bmRlZmluZWQsIHRydWUpO1xuXHRcdFx0XHR9O1xuXHRcdFx0Ly8gU2hvdyBkcmFmdCBsb3NzIGNvbmZpcm1hdGlvbiBkaWFsb2cgaW4gY2FzZSBvZiBPYmplY3QgcGFnZVxuXHRcdFx0aWYgKG9WaWV3LmdldFZpZXdEYXRhKCkuY29udmVydGVyVHlwZSA9PT0gXCJPYmplY3RQYWdlXCIgJiYgIU1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChvTWV0YU1vZGVsKSkge1xuXHRcdFx0XHRkcmFmdC5wcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbihcblx0XHRcdFx0XHRmbk5hdmlnYXRlLFxuXHRcdFx0XHRcdEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0XHRcdFx0XHRvQmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0b1ZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0ZHJhZnQuTmF2aWdhdGlvblR5cGUuRm9yd2FyZE5hdmlnYXRpb25cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZuTmF2aWdhdGUoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKFxuXHRcdFx0XHRcIkZpZWxkUnVudGltZTogTm8gcm91dGluZyBsaXN0ZW5lciBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3VuZC4gSW50ZXJuYWwgbmF2aWdhdGlvbiBhYm9ydGVkLlwiLFxuXHRcdFx0XHRcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRSdW50aW1lXCIsXG5cdFx0XHRcdFwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIlxuXHRcdFx0KTtcblx0XHR9XG5cdH0sXG5cdGlzRHJhZnRJbmRpY2F0b3JWaXNpYmxlOiBmdW5jdGlvbiAoXG5cdFx0c1Byb3BlcnR5UGF0aDogYW55LFxuXHRcdHNTZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yOiBhbnksXG5cdFx0SGFzRHJhZnRFbnRpdHk6IGFueSxcblx0XHRJc0FjdGl2ZUVudGl0eTogYW55LFxuXHRcdGhpZGVEcmFmdEluZm86IGFueVxuXHQpIHtcblx0XHRpZiAoSXNBY3RpdmVFbnRpdHkgIT09IHVuZGVmaW5lZCAmJiBIYXNEcmFmdEVudGl0eSAhPT0gdW5kZWZpbmVkICYmICghSXNBY3RpdmVFbnRpdHkgfHwgSGFzRHJhZnRFbnRpdHkpICYmICFoaWRlRHJhZnRJbmZvKSB7XG5cdFx0XHRyZXR1cm4gc1Byb3BlcnR5UGF0aCA9PT0gc1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3I7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sXG5cdGhhc1RhcmdldHM6IGZ1bmN0aW9uIChiU2VtYW50aWNPYmplY3RIYXNUYXJnZXRzOiBhbnkgLypzU2VtYW50aWNPYmplY3RQYXRoVmFsdWU6IGFueSovKSB7XG5cdFx0cmV0dXJuIGJTZW1hbnRpY09iamVjdEhhc1RhcmdldHMgPyBiU2VtYW50aWNPYmplY3RIYXNUYXJnZXRzIDogZmFsc2U7XG5cdH0sXG5cdGdldFN0YXRlRGVwZW5kaW5nT25TZW1hbnRpY09iamVjdFRhcmdldHM6IGZ1bmN0aW9uIChiU2VtYW50aWNPYmplY3RIYXNUYXJnZXRzOiBhbnkgLypzU2VtYW50aWNPYmplY3RQYXRoVmFsdWU6IGFueSovKSB7XG5cdFx0cmV0dXJuIGJTZW1hbnRpY09iamVjdEhhc1RhcmdldHMgPyBcIkluZm9ybWF0aW9uXCIgOiBcIk5vbmVcIjtcblx0fSxcblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSB2YWxpZGF0ZUZpZWxkR3JvdXAgZXZlbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBvblZhbGlkYXRlRmllbGRHcm91cFxuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgb2YgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgZmllbGRcblx0ICogQHBhcmFtIG9FdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgdmFsaWRhdGVGaWVsZEdyb3VwIGV2ZW50XG5cdCAqL1xuXHRvblZhbGlkYXRlRmllbGRHcm91cDogZnVuY3Rpb24gKG9Db250cm9sbGVyOiBvYmplY3QsIG9FdmVudDogb2JqZWN0KSB7XG5cdFx0Y29uc3Qgb0ZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihvQ29udHJvbGxlcik7XG5cdFx0b0ZFQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRHcm91cENoYW5nZShvRXZlbnQpO1xuXHR9LFxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIGNoYW5nZSBldmVudC5cblx0ICogU3RvcmUgZmllbGQgZ3JvdXAgSURzIG9mIHRoaXMgZmllbGQgZm9yIHJlcXVlc3Rpbmcgc2lkZSBlZmZlY3RzIHdoZW4gcmVxdWlyZWQuXG5cdCAqIFdlIHN0b3JlIHRoZW0gaGVyZSB0byBlbnN1cmUgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBoYXMgdGFrZW4gcGxhY2UuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBoYW5kbGVDaGFuZ2Vcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIFRoZSBjb250cm9sbGVyIG9mIHRoZSBwYWdlIGNvbnRhaW5pbmcgdGhlIGZpZWxkXG5cdCAqIEBwYXJhbSBvRXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIGNoYW5nZSBldmVudFxuXHQgKi9cblx0aGFuZGxlQ2hhbmdlOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IG9iamVjdCwgb0V2ZW50OiBFdmVudCkge1xuXHRcdGNvbnN0IG9Tb3VyY2VGaWVsZCA9IG9FdmVudC5nZXRTb3VyY2UoKSBhcyBDb250cm9sLFxuXHRcdFx0YklzVHJhbnNpZW50ID0gb1NvdXJjZUZpZWxkICYmIChvU291cmNlRmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBhbnkpLmlzVHJhbnNpZW50KCksXG5cdFx0XHRwVmFsdWVSZXNvbHZlZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpIHx8IFByb21pc2UucmVzb2x2ZSgpLFxuXHRcdFx0b1NvdXJjZSA9IG9FdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdGJWYWxpZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWxpZFwiKTtcblxuXHRcdC8vIFRPRE86IGN1cnJlbnRseSB3ZSBoYXZlIHVuZGVmaW5lZCBhbmQgdHJ1ZS4uLiBhbmQgb3VyIGNyZWF0aW9uIHJvdyBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gdGhpcy5cblx0XHQvLyBJIHdvdWxkIG1vdmUgdGhpcyBsb2dpYyB0byB0aGlzIHBsYWNlIGFzIGl0J3MgaGFyZCB0byB1bmRlcnN0YW5kIGZvciBmaWVsZCBjb25zdW1lclxuXG5cdFx0cFZhbHVlUmVzb2x2ZWRcblx0XHRcdC50aGVuKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0Ly8gVGhlIGV2ZW50IGlzIGdvbmUuIEZvciBub3cgd2UnbGwganVzdCByZWNyZWF0ZSBpdCBhZ2FpblxuXHRcdFx0XHQob0V2ZW50IGFzIGFueSkub1NvdXJjZSA9IG9Tb3VyY2U7XG5cdFx0XHRcdChvRXZlbnQgYXMgYW55KS5tUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHR2YWxpZDogYlZhbGlkXG5cdFx0XHRcdH07XG5cdFx0XHRcdChGaWVsZEFQSSBhcyBhbnkpLmhhbmRsZUNoYW5nZShvRXZlbnQsIG9Db250cm9sbGVyKTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKC8qb0Vycm9yOiBhbnkqLykge1xuXHRcdFx0XHQvLyBUaGUgZXZlbnQgaXMgZ29uZS4gRm9yIG5vdyB3ZSdsbCBqdXN0IHJlY3JlYXRlIGl0IGFnYWluXG5cdFx0XHRcdChvRXZlbnQgYXMgYW55KS5vU291cmNlID0gb1NvdXJjZTtcblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm1QYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdHZhbGlkOiBmYWxzZVxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIGFzIHRoZSBVSSBtaWdodCBuZWVkIHRvIHJlYWN0IG9uLiBXZSBjb3VsZCBwcm92aWRlIGEgcGFyYW1ldGVyIHRvIGluZm9ybSBpZiB2YWxpZGF0aW9uXG5cdFx0XHRcdC8vIHdhcyBzdWNjZXNzZnVsP1xuXHRcdFx0XHQoRmllbGRBUEkgYXMgYW55KS5oYW5kbGVDaGFuZ2Uob0V2ZW50LCBvQ29udHJvbGxlcik7XG5cdFx0XHR9KTtcblxuXHRcdC8vIFVzZSB0aGUgRkUgQ29udHJvbGxlciBpbnN0ZWFkIG9mIHRoZSBleHRlbnNpb25BUEkgdG8gYWNjZXNzIGludGVybmFsIEZFIGNvbnRyb2xsZXJzXG5cdFx0Y29uc3Qgb0ZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihvQ29udHJvbGxlcik7XG5cblx0XHRvRkVDb250cm9sbGVyLl9lZGl0Rmxvdy5zeW5jVGFzayhwVmFsdWVSZXNvbHZlZCk7XG5cblx0XHQvLyBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2llbnQsIGl0IG1lYW5zIHRoZSByZXF1ZXN0IHdvdWxkIGZhaWwgYW55d2F5IGFzIHRoZSByZWNvcmQgZG9lcyBub3QgZXhpc3QgaW4gcmVhbGl0eVxuXHRcdC8vIFRPRE86IHNob3VsZCB0aGUgcmVxdWVzdCBiZSBtYWRlIGluIGZ1dHVyZSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2llbnQ/XG5cdFx0aWYgKGJJc1RyYW5zaWVudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFNJREUgRUZGRUNUU1xuXHRcdG9GRUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLmhhbmRsZUZpZWxkQ2hhbmdlKG9FdmVudCwgcFZhbHVlUmVzb2x2ZWQpO1xuXG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3Qgb0ZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpIGFzIENvbnRyb2wsXG5cdFx0XHRiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKG9GaWVsZCk7XG5cdFx0bGV0IG9CaW5kaW5nLCBzQmluZGluZ1BhdGg7XG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiB0aGlzLmdldEZpZWxkU3RhdGVPbkNoYW5nZShvRXZlbnQpLnN0YXRlW1widmFsaWRpdHlcIl0pIHtcblx0XHRcdC8qIFRPRE86IGZvciBub3cgd2UgdXNlIGFsd2F5cyB0aGUgZmlyc3QgYmluZGluZyBwYXJ0IChzbyBpbiBjYXNlIG9mIGNvbXBvc2l0ZSBiaW5kaW5ncyBsaWtlIGFtb3VudCBhbmRcblx0XHRcdFx0XHR1bml0IG9yIGN1cnJlbmN5IG9ubHkgdGhlIGFtb3VudCBpcyBjb25zaWRlcmVkKSAqL1xuXHRcdFx0b0JpbmRpbmcgPSAob0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgYW55KS5nZXRCaW5kaW5nKCk7XG5cdFx0XHRpZiAoIW9CaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhvRmllbGQpO1xuXHRcdFx0XHRvQmluZGluZyA9IG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0QmluZGluZygpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkYXRhID0gW1xuXHRcdFx0XHQuLi4ob0ZpZWxkLmdldEJpbmRpbmdJbmZvKFwidmFsdWVcIikgYXMgYW55KT8ucGFydHMsXG5cdFx0XHRcdC4uLigob0ZpZWxkLmdldEJpbmRpbmdJbmZvKFwiYWRkaXRpb25hbFZhbHVlXCIpIGFzIGFueSk/LnBhcnRzIHx8IFtdKVxuXHRcdFx0XS5tYXAoZnVuY3Rpb24gKHBhcnQ6IGFueSkge1xuXHRcdFx0XHRpZiAocGFydCkge1xuXHRcdFx0XHRcdHNCaW5kaW5nUGF0aCA9IHBhcnQucGF0aDtcblx0XHRcdFx0XHRyZXR1cm4gYCR7b0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCk/LmdldFBhdGgoKX0vJHtzQmluZGluZ1BhdGh9YDtcblx0XHRcdFx0fVxuXHRcdFx0fSkgYXMgW107XG5cdFx0XHRvQmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChvRmllbGQsIEFjdGl2aXR5LkNoYW5nZSwgZGF0YSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0aGFuZGxlTGl2ZUNoYW5nZTogZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3Qgb0ZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YkNvbGxhYm9yYXRpb25FbmFibGVkID0gQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChvRmllbGQpO1xuXG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0LyogVE9ETzogZm9yIG5vdyB3ZSB1c2UgYWx3YXlzIHRoZSBmaXJzdCBiaW5kaW5nIHBhcnQgKHNvIGluIGNhc2Ugb2YgY29tcG9zaXRlIGJpbmRpbmdzIGxpa2UgYW1vdW50IGFuZFxuXHRcdFx0XHRcdHVuaXQgb3IgY3VycmVuY3kgb25seSB0aGUgYW1vdW50IGlzIGNvbnNpZGVyZWQpICovXG5cdFx0XHRjb25zdCBzQmluZGluZ1BhdGggPSBvRmllbGQuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKS5wYXJ0c1swXS5wYXRoO1xuXHRcdFx0Y29uc3Qgc0Z1bGxQYXRoID0gYCR7b0ZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkuZ2V0UGF0aCgpfS8ke3NCaW5kaW5nUGF0aH1gO1xuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9GaWVsZCwgQWN0aXZpdHkuTGl2ZUNoYW5nZSwgc0Z1bGxQYXRoKTtcblxuXHRcdFx0Ly8gSWYgdGhlIHVzZXIgcmV2ZXJ0ZWQgdGhlIGNoYW5nZSBubyBjaGFuZ2UgZXZlbnQgaXMgc2VudCB0aGVyZWZvcmUgd2UgaGF2ZSB0byBoYW5kbGUgaXQgaGVyZVxuXHRcdFx0aWYgKCF0aGlzLnJlc2V0Q2hhbmdlc0hhbmRsZXIpIHtcblx0XHRcdFx0dGhpcy5yZXNldENoYW5nZXNIYW5kbGVyID0gKCkgPT4ge1xuXHRcdFx0XHRcdGlmIChvRmllbGQuZ2V0VmFsdWUoKSA9PT0gb0ZpZWxkLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKS5nZXRWYWx1ZSgpKSB7XG5cdFx0XHRcdFx0XHQvLyB0aGUgdXNlciBkaWQgYSBjaGFuZ2UgYnV0IHJldmVydGVkIGl0LiB0byBiZSBjaGVja2VkIGlmIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBkZXRlcm1pbmVcblx0XHRcdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChvRmllbGQsIEFjdGl2aXR5LlVuZG8sIHNGdWxsUGF0aCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9GaWVsZC5kZXRhY2hCcm93c2VyRXZlbnQoXCJmb2N1c291dFwiLCB0aGlzLnJlc2V0Q2hhbmdlc0hhbmRsZXIpO1xuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLnJlc2V0Q2hhbmdlc0hhbmRsZXI7XG5cdFx0XHRcdH07XG5cdFx0XHRcdG9GaWVsZC5hdHRhY2hCcm93c2VyRXZlbnQoXCJmb2N1c291dFwiLCB0aGlzLnJlc2V0Q2hhbmdlc0hhbmRsZXIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0aGFuZGxlT3BlblBpY2tlcjogZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3Qgb0ZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YkNvbGxhYm9yYXRpb25FbmFibGVkID0gQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChvRmllbGQpO1xuXG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0Y29uc3Qgc0JpbmRpbmdQYXRoID0gb0ZpZWxkLmdldEJpbmRpbmdJbmZvKFwidmFsdWVcIikucGFydHNbMF0ucGF0aDtcblx0XHRcdGNvbnN0IHNGdWxsUGF0aCA9IGAke29GaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpLmdldFBhdGgoKX0vJHtzQmluZGluZ1BhdGh9YDtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChvRmllbGQsIEFjdGl2aXR5LkxpdmVDaGFuZ2UsIHNGdWxsUGF0aCk7XG5cdFx0fVxuXHR9LFxuXHRoYW5kbGVDbG9zZVBpY2tlcjogZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3Qgb0ZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YkNvbGxhYm9yYXRpb25FbmFibGVkID0gQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChvRmllbGQpO1xuXG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0Y29uc3Qgc0JpbmRpbmdQYXRoID0gb0ZpZWxkLmdldEJpbmRpbmdJbmZvKFwidmFsdWVcIikucGFydHNbMF0ucGF0aDtcblx0XHRcdGNvbnN0IHNGdWxsUGF0aCA9IGAke29GaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpLmdldFBhdGgoKX0vJHtzQmluZGluZ1BhdGh9YDtcblx0XHRcdGlmIChuZXcgRGF0ZShvRmllbGQuZ2V0VmFsdWUoKSkudG9EYXRlU3RyaW5nKCkgPT09IG5ldyBEYXRlKG9GaWVsZC5nZXRCaW5kaW5nKFwidmFsdWVcIikuZ2V0VmFsdWUoKSB8fCBcIlwiKS50b0RhdGVTdHJpbmcoKSkge1xuXHRcdFx0XHQvLyB0aGUgdXNlciBkaWQgYSBjaGFuZ2UgYnV0IHJldmVydGVkIGl0LiB0byBiZSBjaGVja2VkIGlmIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBkZXRlcm1pbmVcblx0XHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9GaWVsZCwgQWN0aXZpdHkuVW5kbywgc0Z1bGxQYXRoKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGhhbmRsZU9wZW5VcGxvYWRlcjogZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3Qgb0ZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpLFxuXHRcdFx0YkNvbGxhYm9yYXRpb25FbmFibGVkID0gQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChvRmllbGQpO1xuXG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0Y29uc3Qgc0JpbmRpbmdQYXRoID0gb0ZpZWxkLmdldFBhcmVudCgpLmdldEF2YXRhcigpLmdldEJpbmRpbmdJbmZvKFwic3JjXCIpLnBhcnRzWzBdLnBhdGg7XG5cdFx0XHRjb25zdCBzRnVsbFBhdGggPSBgJHtvRmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS8ke3NCaW5kaW5nUGF0aH1gO1xuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9GaWVsZCwgQWN0aXZpdHkuTGl2ZUNoYW5nZSwgc0Z1bGxQYXRoKTtcblx0XHR9XG5cdH0sXG5cdGhhbmRsZUNsb3NlVXBsb2FkZXI6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IG9GaWVsZCA9IG9FdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQob0ZpZWxkKTtcblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRjb25zdCBzQmluZGluZ1BhdGggPSBvRmllbGQuZ2V0UGFyZW50KCkuZ2V0QXZhdGFyKCkuZ2V0QmluZGluZ0luZm8oXCJzcmNcIikucGFydHNbMF0ucGF0aDtcblx0XHRcdGNvbnN0IHNGdWxsUGF0aCA9IGAke29GaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCl9LyR7c0JpbmRpbmdQYXRofWA7XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQob0ZpZWxkLCBBY3Rpdml0eS5VbmRvLCBzRnVsbFBhdGgpO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmllbGQgdmFsdWUgYW5kIHZhbGlkaXR5IG9uIGEgY2hhbmdlIGV2ZW50LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZmllbGRWYWxpZGl0eU9uQ2hhbmdlXG5cdCAqIEBwYXJhbSBvRXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIGNoYW5nZSBldmVudFxuXHQgKiBAcmV0dXJucyBGaWVsZCB2YWx1ZSBhbmQgdmFsaWRpdHlcblx0ICovXG5cdGdldEZpZWxkU3RhdGVPbkNoYW5nZTogZnVuY3Rpb24gKG9FdmVudDogRXZlbnQpOiBhbnkge1xuXHRcdGxldCBvU291cmNlRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgYW55LFxuXHRcdFx0bUZpZWxkU3RhdGUgPSB7fTtcblx0XHRjb25zdCBfaXNCaW5kaW5nU3RhdGVNZXNzYWdlcyA9IGZ1bmN0aW9uIChvQmluZGluZzogYW55KSB7XG5cdFx0XHRyZXR1cm4gb0JpbmRpbmcgJiYgb0JpbmRpbmcuZ2V0RGF0YVN0YXRlKCkgPyBvQmluZGluZy5nZXREYXRhU3RhdGUoKS5nZXRJbnZhbGlkVmFsdWUoKSA9PT0gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHR9O1xuXHRcdGlmIChvU291cmNlRmllbGQuaXNBKFwic2FwLmZlLm1hY3Jvcy5maWVsZC5GaWVsZEFQSVwiKSkge1xuXHRcdFx0b1NvdXJjZUZpZWxkID0gKG9Tb3VyY2VGaWVsZCBhcyBFbmhhbmNlV2l0aFVJNTxGaWVsZEFQST4pLmdldENvbnRlbnQoKTtcblx0XHR9XG5cblx0XHRpZiAob1NvdXJjZUZpZWxkLmlzQShGaWVsZFdyYXBwZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkpICYmIG9Tb3VyY2VGaWVsZC5nZXRFZGl0TW9kZSgpID09PSBcIkVkaXRhYmxlXCIpIHtcblx0XHRcdG9Tb3VyY2VGaWVsZCA9IG9Tb3VyY2VGaWVsZC5nZXRDb250ZW50RWRpdCgpWzBdO1xuXHRcdH1cblxuXHRcdGlmIChvU291cmNlRmllbGQuaXNBKFwic2FwLnVpLm1kYy5GaWVsZFwiKSkge1xuXHRcdFx0bGV0IGJJc1ZhbGlkID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInZhbGlkXCIpIHx8IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJpc1ZhbGlkXCIpO1xuXHRcdFx0aWYgKGJJc1ZhbGlkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5nZXRNYXhDb25kaXRpb25zKCkgPT09IDEpIHtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVCaW5kaW5nSW5mbyA9IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nSW5mbyhcInZhbHVlXCIpO1xuXHRcdFx0XHRcdGJJc1ZhbGlkID0gX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMob1ZhbHVlQmluZGluZ0luZm8gJiYgb1ZhbHVlQmluZGluZ0luZm8uYmluZGluZyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5nZXRWYWx1ZSgpID09PSBcIlwiICYmICFvU291cmNlRmllbGQuZ2V0UHJvcGVydHkoXCJyZXF1aXJlZFwiKSkge1xuXHRcdFx0XHRcdGJJc1ZhbGlkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bUZpZWxkU3RhdGUgPSB7XG5cdFx0XHRcdGZpZWxkVmFsdWU6IG9Tb3VyY2VGaWVsZC5nZXRWYWx1ZSgpLFxuXHRcdFx0XHR2YWxpZGl0eTogISFiSXNWYWxpZFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gb1NvdXJjZUZpZWxkIGV4dGVuZHMgZnJvbSBhIEZpbGVVcGxvYWRlciB8fCBJbnB1dCB8fCBpcyBhIENoZWNrQm94XG5cdFx0XHRjb25zdCBvQmluZGluZyA9XG5cdFx0XHRcdG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nKFwidXBsb2FkVXJsXCIpIHx8IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nKFwidmFsdWVcIikgfHwgb1NvdXJjZUZpZWxkLmdldEJpbmRpbmcoXCJzZWxlY3RlZFwiKTtcblx0XHRcdG1GaWVsZFN0YXRlID0ge1xuXHRcdFx0XHRmaWVsZFZhbHVlOiBvQmluZGluZyAmJiBvQmluZGluZy5nZXRWYWx1ZSgpLFxuXHRcdFx0XHR2YWxpZGl0eTogX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMob0JpbmRpbmcpXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZmllbGQ6IG9Tb3VyY2VGaWVsZCxcblx0XHRcdHN0YXRlOiBtRmllbGRTdGF0ZVxuXHRcdH07XG5cdH0sXG5cdF9mbkZpeEhhc2hRdWVyeVN0cmluZzogZnVuY3Rpb24gKHNDdXJyZW50SGFzaDogYW55KSB7XG5cdFx0aWYgKHNDdXJyZW50SGFzaCAmJiBzQ3VycmVudEhhc2guaW5kZXhPZihcIj9cIikgIT09IC0xKSB7XG5cdFx0XHQvLyBzQ3VycmVudEhhc2ggY2FuIGNvbnRhaW4gcXVlcnkgc3RyaW5nLCBjdXQgaXQgb2ZmIVxuXHRcdFx0c0N1cnJlbnRIYXNoID0gc0N1cnJlbnRIYXNoLnNwbGl0KFwiP1wiKVswXTtcblx0XHR9XG5cdFx0cmV0dXJuIHNDdXJyZW50SGFzaDtcblx0fSxcblx0X2ZuR2V0TGlua0luZm9ybWF0aW9uOiBmdW5jdGlvbiAoX29Tb3VyY2U6IGFueSwgX29MaW5rOiBhbnksIF9zUHJvcGVydHlQYXRoOiBhbnksIF9zVmFsdWU6IGFueSwgZm5TZXRBY3RpdmU6IGFueSkge1xuXHRcdGNvbnN0IG9Nb2RlbCA9IF9vTGluayAmJiBfb0xpbmsuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb01vZGVsICYmIG9Nb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBzU2VtYW50aWNPYmplY3ROYW1lID0gX3NWYWx1ZSB8fCAoX29Tb3VyY2UgJiYgX29Tb3VyY2UuZ2V0VmFsdWUoKSk7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBfb0xpbmsgJiYgQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyhfb0xpbmspO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3ICYmIG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IG9WaWV3ICYmIENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvVmlldyk7XG5cdFx0Y29uc3Qgb1NoZWxsU2VydmljZUhlbHBlciA9IG9BcHBDb21wb25lbnQgJiYgb0FwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0Y29uc3QgcEdldExpbmtzUHJvbWlzZSA9IG9TaGVsbFNlcnZpY2VIZWxwZXIgJiYgb1NoZWxsU2VydmljZUhlbHBlci5nZXRMaW5rc1dpdGhDYWNoZShbW3sgc2VtYW50aWNPYmplY3Q6IHNTZW1hbnRpY09iamVjdE5hbWUgfV1dKTtcblx0XHRjb25zdCBhU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMgPVxuXHRcdFx0b01ldGFNb2RlbCAmJiBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtfc1Byb3BlcnR5UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zYCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFNlbWFudGljT2JqZWN0TmFtZTogc1NlbWFudGljT2JqZWN0TmFtZSxcblx0XHRcdFNlbWFudGljT2JqZWN0RnVsbFBhdGg6IF9zUHJvcGVydHlQYXRoLCAvL3NTZW1hbnRpY09iamVjdEZ1bGxQYXRoLFxuXHRcdFx0TWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0SW50ZXJuYWxNb2RlbENvbnRleHQ6IG9JbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFNoZWxsU2VydmljZUhlbHBlcjogb1NoZWxsU2VydmljZUhlbHBlcixcblx0XHRcdEdldExpbmtzUHJvbWlzZTogcEdldExpbmtzUHJvbWlzZSxcblx0XHRcdFNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zOiBhU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMsXG5cdFx0XHRmblNldEFjdGl2ZTogZm5TZXRBY3RpdmVcblx0XHR9O1xuXHR9LFxuXHRfZm5RdWlja1ZpZXdIYXNOZXdDb25kaXRpb246IGZ1bmN0aW9uIChvU2VtYW50aWNPYmplY3RQYXlsb2FkOiBhbnksIF9vTGlua0luZm86IGFueSkge1xuXHRcdGlmIChvU2VtYW50aWNPYmplY3RQYXlsb2FkICYmIG9TZW1hbnRpY09iamVjdFBheWxvYWQucGF0aCAmJiBvU2VtYW50aWNPYmplY3RQYXlsb2FkLnBhdGggPT09IF9vTGlua0luZm8uU2VtYW50aWNPYmplY3RGdWxsUGF0aCkge1xuXHRcdFx0Ly8gR290IHRoZSByZXNvbHZlZCBTZW1hbnRpYyBPYmplY3QhXG5cdFx0XHRjb25zdCBiUmVzdWx0aW5nTmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyID1cblx0XHRcdFx0b1NlbWFudGljT2JqZWN0UGF5bG9hZFshX29MaW5rSW5mby5TZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyA/IFwiSGFzVGFyZ2V0c05vdEZpbHRlcmVkXCIgOiBcIkhhc1RhcmdldHNcIl07XG5cdFx0XHRfb0xpbmtJbmZvLmZuU2V0QWN0aXZlKCEhYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlcik7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fSxcblx0X2ZuUXVpY2tWaWV3U2V0TmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyOiBmdW5jdGlvbiAoX29MaW5rSW5mbzogYW55LCBfb0ZpbmFsU2VtYW50aWNPYmplY3RzOiBhbnkpIHtcblx0XHRpZiAoX29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV0pIHtcblx0XHRcdGxldCBzVG1wUGF0aCwgb1NlbWFudGljT2JqZWN0UGF5bG9hZDtcblx0XHRcdGNvbnN0IGFTZW1hbnRpY09iamVjdFBhdGhzID0gT2JqZWN0LmtleXMoX29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV0pO1xuXHRcdFx0Zm9yIChjb25zdCBpUGF0aHNDb3VudCBpbiBhU2VtYW50aWNPYmplY3RQYXRocykge1xuXHRcdFx0XHRzVG1wUGF0aCA9IGFTZW1hbnRpY09iamVjdFBhdGhzW2lQYXRoc0NvdW50XTtcblx0XHRcdFx0b1NlbWFudGljT2JqZWN0UGF5bG9hZCA9XG5cdFx0XHRcdFx0X29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV0gJiZcblx0XHRcdFx0XHRfb0ZpbmFsU2VtYW50aWNPYmplY3RzW19vTGlua0luZm8uU2VtYW50aWNPYmplY3ROYW1lXVtzVG1wUGF0aF07XG5cdFx0XHRcdGlmIChGaWVsZFJ1bnRpbWUuX2ZuUXVpY2tWaWV3SGFzTmV3Q29uZGl0aW9uKG9TZW1hbnRpY09iamVjdFBheWxvYWQsIF9vTGlua0luZm8pKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdF9mblVwZGF0ZVNlbWFudGljT2JqZWN0c1RhcmdldE1vZGVsOiBmdW5jdGlvbiAob0V2ZW50OiBhbnksIHNWYWx1ZTogYW55LCBvQ29udHJvbDogYW55LCBfc1Byb3BlcnR5UGF0aDogYW55KSB7XG5cdFx0Y29uc3Qgb1NvdXJjZSA9IG9FdmVudCAmJiBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0bGV0IGZuU2V0QWN0aXZlO1xuXHRcdGlmIChvQ29udHJvbC5pc0EoXCJzYXAubS5PYmplY3RTdGF0dXNcIikpIHtcblx0XHRcdGZuU2V0QWN0aXZlID0gKGJBY3RpdmU6IGJvb2xlYW4pID0+IG9Db250cm9sLnNldEFjdGl2ZShiQWN0aXZlKTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sLmlzQShcInNhcC5tLk9iamVjdElkZW50aWZpZXJcIikpIHtcblx0XHRcdGZuU2V0QWN0aXZlID0gKGJBY3RpdmU6IGJvb2xlYW4pID0+IG9Db250cm9sLnNldFRpdGxlQWN0aXZlKGJBY3RpdmUpO1xuXHRcdH1cblx0XHRjb25zdCBvQ29uZGl0aW9uYWxXcmFwcGVyID0gb0NvbnRyb2wgJiYgb0NvbnRyb2wuZ2V0UGFyZW50KCk7XG5cdFx0aWYgKG9Db25kaXRpb25hbFdyYXBwZXIgJiYgb0NvbmRpdGlvbmFsV3JhcHBlci5pc0EoXCJzYXAuZmUuY29yZS5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIikpIHtcblx0XHRcdGZuU2V0QWN0aXZlID0gKGJBY3RpdmU6IGJvb2xlYW4pID0+IG9Db25kaXRpb25hbFdyYXBwZXIuc2V0Q29uZGl0aW9uKGJBY3RpdmUpO1xuXHRcdH1cblx0XHRpZiAoZm5TZXRBY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3Qgb0xpbmtJbmZvID0gRmllbGRSdW50aW1lLl9mbkdldExpbmtJbmZvcm1hdGlvbihvU291cmNlLCBvQ29udHJvbCwgX3NQcm9wZXJ0eVBhdGgsIHNWYWx1ZSwgZm5TZXRBY3RpdmUpO1xuXHRcdFx0b0xpbmtJbmZvLmZuU2V0QWN0aXZlID0gZm5TZXRBY3RpdmU7XG5cdFx0XHRjb25zdCBzQ3VycmVudEhhc2ggPSBGaWVsZFJ1bnRpbWUuX2ZuRml4SGFzaFF1ZXJ5U3RyaW5nKENvbW1vblV0aWxzLmdldEhhc2goKSk7XG5cdFx0XHRDb21tb25VdGlscy51cGRhdGVTZW1hbnRpY1RhcmdldHMoXG5cdFx0XHRcdFtvTGlua0luZm8uR2V0TGlua3NQcm9taXNlXSxcblx0XHRcdFx0W3sgc2VtYW50aWNPYmplY3Q6IG9MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWUsIHBhdGg6IG9MaW5rSW5mby5TZW1hbnRpY09iamVjdEZ1bGxQYXRoIH1dLFxuXHRcdFx0XHRvTGlua0luZm8uSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdHNDdXJyZW50SGFzaFxuXHRcdFx0KVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAob0ZpbmFsU2VtYW50aWNPYmplY3RzOiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob0ZpbmFsU2VtYW50aWNPYmplY3RzKSB7XG5cdFx0XHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2ZuUXVpY2tWaWV3U2V0TmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyKG9MaW5rSW5mbywgb0ZpbmFsU2VtYW50aWNPYmplY3RzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJDYW5ub3QgdXBkYXRlIFNlbWFudGljIFRhcmdldHMgbW9kZWxcIiwgb0Vycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXHRfY2hlY2tDb250cm9sSGFzTW9kZWxBbmRCaW5kaW5nQ29udGV4dChfY29udHJvbDogQ29udHJvbCkge1xuXHRcdGlmICghX2NvbnRyb2wuZ2V0TW9kZWwoKSB8fCAhX2NvbnRyb2wuZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0sXG5cdF9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbChfY29udHJvbDogQ29udHJvbCwgcHJvcGVydHlQYXRoOiBzdHJpbmcsIGFDdXN0b21EYXRhOiBDdXN0b21EYXRhW10pOiB2b2lkIHtcblx0XHRsZXQgc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlOiBhbnk7XG5cdFx0bGV0IG9WYWx1ZUJpbmRpbmc7XG5cdFx0Y29uc3QgX2ZuQ3VzdG9tRGF0YVZhbHVlSXNTdHJpbmcgPSBmdW5jdGlvbiAoc2VtYW50aWNPYmplY3RQYXRoVmFsdWU6IGFueSkge1xuXHRcdFx0cmV0dXJuICEoc2VtYW50aWNPYmplY3RQYXRoVmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHNlbWFudGljT2JqZWN0UGF0aFZhbHVlID09PSBcIm9iamVjdFwiKTtcblx0XHR9O1xuXHRcdC8vIHJlbW92ZSB0ZWNobmljYWwgY3VzdG9tIGRhdGFzIHNldCBieSBVSTVcblx0XHRhQ3VzdG9tRGF0YSA9IGFDdXN0b21EYXRhLmZpbHRlcigoY3VzdG9tRGF0YSkgPT4gY3VzdG9tRGF0YS5nZXRLZXkoKSAhPT0gXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIpO1xuXHRcdGZvciAoY29uc3QgaW5kZXggaW4gYUN1c3RvbURhdGEpIHtcblx0XHRcdHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSA9IGFDdXN0b21EYXRhW2luZGV4XS5nZXRWYWx1ZSgpO1xuXHRcdFx0aWYgKCFzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUgJiYgX2ZuQ3VzdG9tRGF0YVZhbHVlSXNTdHJpbmcoc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlKSkge1xuXHRcdFx0XHRvVmFsdWVCaW5kaW5nID0gYUN1c3RvbURhdGFbaW5kZXhdLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKTtcblx0XHRcdFx0aWYgKG9WYWx1ZUJpbmRpbmcpIHtcblx0XHRcdFx0XHRvVmFsdWVCaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcImNoYW5nZVwiLCBmdW5jdGlvbiAoX29DaGFuZ2VFdmVudDogYW55KSB7XG5cdFx0XHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWwoX29DaGFuZ2VFdmVudCwgbnVsbCwgX2NvbnRyb2wsIHByb3BlcnR5UGF0aCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoX2ZuQ3VzdG9tRGF0YVZhbHVlSXNTdHJpbmcoc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlKSkge1xuXHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWwobnVsbCwgc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlLCBfY29udHJvbCwgcHJvcGVydHlQYXRoKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdExpbmtNb2RlbENvbnRleHRDaGFuZ2U6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgc1Byb3BlcnR5OiBhbnksIHNQYXRoVG9Qcm9wZXJ0eTogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbCA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoRmllbGRSdW50aW1lLl9jaGVja0NvbnRyb2xIYXNNb2RlbEFuZEJpbmRpbmdDb250ZXh0KGNvbnRyb2wpKSB7XG5cdFx0XHRjb25zdCBzUHJvcGVydHlQYXRoID0gYCR7c1BhdGhUb1Byb3BlcnR5fS8ke3NQcm9wZXJ0eX1gO1xuXHRcdFx0Y29uc3QgbWRjTGluayA9IGNvbnRyb2wuZ2V0RGVwZW5kZW50cygpLmxlbmd0aCA/IGNvbnRyb2wuZ2V0RGVwZW5kZW50cygpWzBdIDogdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3QgYUN1c3RvbURhdGEgPSBtZGNMaW5rPy5nZXRDdXN0b21EYXRhKCk7XG5cdFx0XHRpZiAoYUN1c3RvbURhdGEgJiYgYUN1c3RvbURhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2NoZWNrQ3VzdG9tRGF0YVZhbHVlQmVmb3JlVXBkYXRpbmdTZW1hbnRpY09iamVjdE1vZGVsKGNvbnRyb2wsIHNQcm9wZXJ0eVBhdGgsIGFDdXN0b21EYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdG9wZW5FeHRlcm5hbExpbms6IGZ1bmN0aW9uIChldmVudDogRXZlbnQpIHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBhbnk7XG5cdFx0aWYgKHNvdXJjZS5kYXRhKFwidXJsXCIpICYmIHNvdXJjZS5nZXRQcm9wZXJ0eShcInRleHRcIikgIT09IFwiXCIpIHtcblx0XHRcdC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgaW4gdGhlIHNhbWUgdGFiIGFzIHRoZSBsaW5rLiBJdCB3YXMgZG9uZSB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciB0eXBlIG9mIGxpbmtzLlxuXHRcdFx0b3BlbldpbmRvdyhzb3VyY2UuZGF0YShcInVybFwiKSwgXCJfc2VsZlwiKTtcblx0XHR9XG5cdH0sXG5cdHByZXNzTGluazogYXN5bmMgZnVuY3Rpb24gKG9FdmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3Qgb1NvdXJjZSA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBvTGluayA9IG9Tb3VyY2UuaXNBKFwic2FwLm0uT2JqZWN0SWRlbnRpZmllclwiKVxuXHRcdFx0PyBvU291cmNlLmZpbmRFbGVtZW50cyhmYWxzZSwgKGVsZW06IEV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0uaXNBKFwic2FwLm0uTGlua1wiKTtcblx0XHRcdCAgfSlbMF1cblx0XHRcdDogb1NvdXJjZTtcblxuXHRcdGFzeW5jIGZ1bmN0aW9uIG9wZW5MaW5rKG1kY0xpbms6IGFueSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgc0hyZWYgPSBhd2FpdCBtZGNMaW5rLmdldFRyaWdnZXJIcmVmKCk7XG5cdFx0XHRcdGlmICghc0hyZWYpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0YXdhaXQgbWRjTGluay5vcGVuKG9MaW5rKTtcblx0XHRcdFx0XHR9IGNhdGNoIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHJldHJpZXZlIHRoZSBRdWlja1ZpZXcgUG9wb3ZlciBkaWFsb2dcIiwgb0Vycm9yKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9MaW5rKTtcblx0XHRcdFx0XHRjb25zdCBvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9WaWV3KTtcblx0XHRcdFx0XHRjb25zdCBvU2hlbGxTZXJ2aWNlSGVscGVyID0gb0FwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0XHRcdFx0Y29uc3Qgb1NoZWxsSGFzaCA9IG9TaGVsbFNlcnZpY2VIZWxwZXIucGFyc2VTaGVsbEhhc2goc0hyZWYpO1xuXHRcdFx0XHRcdGNvbnN0IG9OYXZBcmdzID0ge1xuXHRcdFx0XHRcdFx0dGFyZ2V0OiB7XG5cdFx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBvU2hlbGxIYXNoLnNlbWFudGljT2JqZWN0LFxuXHRcdFx0XHRcdFx0XHRhY3Rpb246IG9TaGVsbEhhc2guYWN0aW9uXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0cGFyYW1zOiBvU2hlbGxIYXNoLnBhcmFtc1xuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRLZWVwQWxpdmVIZWxwZXIuc3RvcmVDb250cm9sUmVmcmVzaFN0cmF0ZWd5Rm9ySGFzaChvVmlldywgb1NoZWxsSGFzaCk7XG5cblx0XHRcdFx0XHRpZiAoQ29tbW9uVXRpbHMuaXNTdGlja3lFZGl0TW9kZShvTGluaykgIT09IHRydWUpIHtcblx0XHRcdFx0XHRcdC8vVVJMIHBhcmFtcyBhbmQgeGFwcFN0YXRlIGhhcyBiZWVuIGdlbmVyYXRlZCBlYXJsaWVyIGhlbmNlIHVzaW5nIHRvRXh0ZXJuYWxcblx0XHRcdFx0XHRcdG9TaGVsbFNlcnZpY2VIZWxwZXIudG9FeHRlcm5hbChvTmF2QXJncyBhcyBhbnksIG9BcHBDb21wb25lbnQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzTmV3SHJlZiA9IGF3YWl0IG9TaGVsbFNlcnZpY2VIZWxwZXIuaHJlZkZvckV4dGVybmFsQXN5bmMob05hdkFyZ3MsIG9BcHBDb21wb25lbnQpO1xuXHRcdFx0XHRcdFx0XHRvcGVuV2luZG93KHNOZXdIcmVmKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0XHRcdExvZy5lcnJvcihgRXJyb3Igd2hpbGUgcmV0aXJldmluZyBocmVmRm9yRXh0ZXJuYWwgOiAke29FcnJvcn1gKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHRyaWdnZXJpbmcgbGluayBIcmVmXCIsIG9FcnJvcik7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpICYmIG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpLmxlbmd0aCA+IDAgJiYgb0xpbmsuZ2V0UHJvcGVydHkoXCJ0ZXh0XCIpICE9PSBcIlwiKSB7XG5cdFx0XHRjb25zdCBvRmllbGRJbmZvID0gb1NvdXJjZS5nZXREZXBlbmRlbnRzKClbMF07XG5cdFx0XHRpZiAob0ZpZWxkSW5mbyAmJiBvRmllbGRJbmZvLmlzQShcInNhcC51aS5tZGMuTGlua1wiKSkge1xuXHRcdFx0XHRhd2FpdCBvcGVuTGluayhvRmllbGRJbmZvKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9MaW5rO1xuXHR9LFxuXHR1cGxvYWRTdHJlYW06IGZ1bmN0aW9uIChjb250cm9sbGVyOiBDb250cm9sbGVyLCBldmVudDogRXZlbnQpIHtcblx0XHRjb25zdCBmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBGaWxlVXBsb2FkZXIsXG5cdFx0XHRGRUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlciksXG5cdFx0XHRmaWxlV3JhcHBlciA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIEZpbGVXcmFwcGVyLFxuXHRcdFx0dXBsb2FkVXJsID0gZmlsZVdyYXBwZXIuZ2V0VXBsb2FkVXJsKCk7XG5cblx0XHRpZiAodXBsb2FkVXJsICE9PSBcIlwiKSB7XG5cdFx0XHRmaWxlV3JhcHBlci5zZXRVSUJ1c3kodHJ1ZSk7XG5cblx0XHRcdC8vIHVzZSB1cGxvYWRVcmwgZnJvbSBGaWxlV3JhcHBlciB3aGljaCByZXR1cm5zIGEgY2Fub25pY2FsIFVSTFxuXHRcdFx0ZmlsZVVwbG9hZGVyLnNldFVwbG9hZFVybCh1cGxvYWRVcmwpO1xuXG5cdFx0XHRmaWxlVXBsb2FkZXIucmVtb3ZlQWxsSGVhZGVyUGFyYW1ldGVycygpO1xuXHRcdFx0Y29uc3QgdG9rZW4gPSAoZmlsZVVwbG9hZGVyLmdldE1vZGVsKCkgYXMgYW55KT8uZ2V0SHR0cEhlYWRlcnMoKVtcIlgtQ1NSRi1Ub2tlblwiXTtcblx0XHRcdGlmICh0b2tlbikge1xuXHRcdFx0XHRjb25zdCBoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4gPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRcdGhlYWRlclBhcmFtZXRlckNTUkZUb2tlbi5zZXROYW1lKFwieC1jc3JmLXRva2VuXCIpO1xuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4uc2V0VmFsdWUodG9rZW4pO1xuXHRcdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckNTUkZUb2tlbik7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBlVGFnID0gKGZpbGVVcGxvYWRlci5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQgfCB1bmRlZmluZWQgfCBudWxsKT8uZ2V0UHJvcGVydHkoXCJAb2RhdGEuZXRhZ1wiKTtcblx0XHRcdGlmIChlVGFnKSB7XG5cdFx0XHRcdGNvbnN0IGhlYWRlclBhcmFtZXRlckVUYWcgPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRcdGhlYWRlclBhcmFtZXRlckVUYWcuc2V0TmFtZShcIklmLU1hdGNoXCIpO1xuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJFVGFnLnNldFZhbHVlKGVUYWcpO1xuXHRcdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckVUYWcpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaGVhZGVyUGFyYW1ldGVyQWNjZXB0ID0gbmV3IEZpbGVVcGxvYWRlclBhcmFtZXRlcigpO1xuXHRcdFx0aGVhZGVyUGFyYW1ldGVyQWNjZXB0LnNldE5hbWUoXCJBY2NlcHRcIik7XG5cdFx0XHRoZWFkZXJQYXJhbWV0ZXJBY2NlcHQuc2V0VmFsdWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuXHRcdFx0ZmlsZVVwbG9hZGVyLmFkZEhlYWRlclBhcmFtZXRlcihoZWFkZXJQYXJhbWV0ZXJBY2NlcHQpO1xuXG5cdFx0XHQvLyBzeW5jaHJvbml6ZSB1cGxvYWQgd2l0aCBvdGhlciByZXF1ZXN0c1xuXHRcdFx0Y29uc3QgdXBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnksIHJlamVjdDogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXMgPSB0aGlzLnVwbG9hZFByb21pc2VzIHx8IHt9O1xuXHRcdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXSA9IHtcblx0XHRcdFx0XHRyZXNvbHZlOiByZXNvbHZlLFxuXHRcdFx0XHRcdHJlamVjdDogcmVqZWN0XG5cdFx0XHRcdH07XG5cdFx0XHRcdGZpbGVVcGxvYWRlci51cGxvYWQoKTtcblx0XHRcdH0pO1xuXHRcdFx0RkVDb250cm9sbGVyLl9lZGl0Rmxvdy5zeW5jVGFzayh1cGxvYWRQcm9taXNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC5lcnJvcihSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9BQk9SVEVEX1RFWFRcIikpO1xuXHRcdH1cblx0fSxcblxuXHRoYW5kbGVVcGxvYWRDb21wbGV0ZTogZnVuY3Rpb24gKFxuXHRcdGV2ZW50OiBFdmVudCxcblx0XHRwcm9wZXJ0eUZpbGVOYW1lOiB7IHBhdGg6IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdGNvbnRyb2xsZXI6IENvbnRyb2xsZXJcblx0KSB7XG5cdFx0Y29uc3Qgc3RhdHVzID0gZXZlbnQuZ2V0UGFyYW1ldGVyKFwic3RhdHVzXCIpLFxuXHRcdFx0ZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyLFxuXHRcdFx0ZmlsZVdyYXBwZXIgPSBmaWxlVXBsb2FkZXIuZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyBGaWxlV3JhcHBlcjtcblxuXHRcdGZpbGVXcmFwcGVyLnNldFVJQnVzeShmYWxzZSk7XG5cblx0XHRpZiAoc3RhdHVzID09PSAwIHx8IHN0YXR1cyA+PSA0MDApIHtcblx0XHRcdHRoaXMuX2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkKGV2ZW50KTtcblx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXNbZmlsZVVwbG9hZGVyLmdldElkKCldLnJlamVjdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBjb250ZXh0ID0gZmlsZVVwbG9hZGVyLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZCB8IG51bGwsXG5cdFx0XHRcdG5ld0VUYWcgPSBldmVudC5nZXRQYXJhbWV0ZXIoXCJoZWFkZXJzXCIpLmV0YWc7XG5cblx0XHRcdGlmIChuZXdFVGFnKSB7XG5cdFx0XHRcdC8vIHNldCBuZXcgZXRhZyBmb3IgZmlsZW5hbWUgdXBkYXRlLCBidXQgd2l0aG91dCBzZW5kaW5nIHBhdGNoIHJlcXVlc3Rcblx0XHRcdFx0Y29udGV4dD8uc2V0UHJvcGVydHkoXCJAb2RhdGEuZXRhZ1wiLCBuZXdFVGFnLCBudWxsIGFzIGFueSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCBmaWxlbmFtZSBmb3IgbGluayB0ZXh0XG5cdFx0XHRpZiAocHJvcGVydHlGaWxlTmFtZT8ucGF0aCkge1xuXHRcdFx0XHRjb250ZXh0Py5zZXRQcm9wZXJ0eShwcm9wZXJ0eUZpbGVOYW1lLnBhdGgsIGZpbGVVcGxvYWRlci5nZXRWYWx1ZSgpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gaW52YWxpZGF0ZSB0aGUgcHJvcGVydHkgdGhhdCBub3QgZ2V0cyB1cGRhdGVkIG90aGVyd2lzZVxuXHRcdFx0Y29udGV4dD8uc2V0UHJvcGVydHkocHJvcGVydHlQYXRoLCBudWxsLCBudWxsIGFzIGFueSk7XG5cdFx0XHRjb250ZXh0Py5zZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgsIHVuZGVmaW5lZCwgbnVsbCBhcyBhbnkpO1xuXG5cdFx0XHR0aGlzLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oZXZlbnQsIGZpbGVXcmFwcGVyLCBjb250cm9sbGVyKTtcblxuXHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0ucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IG9GaWVsZCA9IGV2ZW50LmdldFNvdXJjZSgpIGFzIENvbnRyb2wsXG5cdFx0XHRiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKG9GaWVsZCk7XG5cdFx0bGV0IHNCaW5kaW5nUGF0aDtcblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRjb25zdCBkYXRhID0gW1xuXHRcdFx0XHQuLi4ob0ZpZWxkLmdldFBhcmVudCgpIGFzIGFueSkuZ2V0QXZhdGFyKCkuZ2V0QmluZGluZ0luZm8oXCJzcmNcIik/LnBhcnRzLFxuXHRcdFx0XHQuLi4oKG9GaWVsZC5nZXRQYXJlbnQoKSBhcyBhbnkpLmdldEF2YXRhcigpLmdldEJpbmRpbmdJbmZvKFwiYWRkaXRpb25hbFZhbHVlXCIpPy5wYXJ0cyB8fCBbXSlcblx0XHRcdF0ubWFwKGZ1bmN0aW9uIChwYXJ0OiBhbnkpIHtcblx0XHRcdFx0aWYgKHBhcnQpIHtcblx0XHRcdFx0XHRzQmluZGluZ1BhdGggPSBwYXJ0LnBhdGg7XG5cdFx0XHRcdFx0cmV0dXJuIGAke29GaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCl9LyR7c0JpbmRpbmdQYXRofWA7XG5cdFx0XHRcdH1cblx0XHRcdH0pIGFzIFtdO1xuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9GaWVsZCwgQWN0aXZpdHkuQ2hhbmdlLCBkYXRhKTtcblx0XHR9XG5cblx0XHRkZWxldGUgdGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV07XG5cdH0sXG5cblx0X2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkOiBmdW5jdGlvbiAob0V2ZW50OiBhbnkpIHtcblx0XHQvLyBoYW5kbGluZyBvZiBiYWNrZW5kIGVycm9yc1xuXHRcdGNvbnN0IHNFcnJvciA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJyZXNwb25zZVJhd1wiKSB8fCBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwicmVzcG9uc2VcIik7XG5cdFx0bGV0IHNNZXNzYWdlVGV4dCwgb0Vycm9yO1xuXHRcdHRyeSB7XG5cdFx0XHRvRXJyb3IgPSBzRXJyb3IgJiYgSlNPTi5wYXJzZShzRXJyb3IpO1xuXHRcdFx0c01lc3NhZ2VUZXh0ID0gb0Vycm9yLmVycm9yICYmIG9FcnJvci5lcnJvci5tZXNzYWdlO1xuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdHNNZXNzYWdlVGV4dCA9IHNFcnJvciB8fCBSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9BQk9SVEVEX1RFWFRcIik7XG5cdFx0fVxuXHRcdE1lc3NhZ2VCb3guZXJyb3Ioc01lc3NhZ2VUZXh0KTtcblx0fSxcblxuXHRyZW1vdmVTdHJlYW06IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgc1Byb3BlcnR5UGF0aDogYW55LCBvQ29udHJvbGxlcjogYW55KSB7XG5cdFx0Y29uc3Qgb0RlbGV0ZUJ1dHRvbiA9IG9FdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdG9GaWxlV3JhcHBlciA9IG9EZWxldGVCdXR0b24uZ2V0UGFyZW50KCksXG5cdFx0XHRvQ29udGV4dCA9IG9GaWxlV3JhcHBlci5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXG5cdFx0Ly8gc3RyZWFtcyBhcmUgcmVtb3ZlZCBieSBhc3NpZ25pbmcgdGhlIG51bGwgdmFsdWVcblx0XHRvQ29udGV4dC5zZXRQcm9wZXJ0eShzUHJvcGVydHlQYXRoLCBudWxsKTtcblx0XHQvLyBXaGVuIHNldHRpbmcgdGhlIHByb3BlcnR5IHRvIG51bGwsIHRoZSB1cGxvYWRVcmwgKEBATU9ERUwuZm9ybWF0KSBpcyBzZXQgdG8gXCJcIiBieSB0aGUgbW9kZWxcblx0XHQvL1x0d2l0aCB0aGF0IGFub3RoZXIgdXBsb2FkIGlzIG5vdCBwb3NzaWJsZSBiZWZvcmUgcmVmcmVzaGluZyB0aGUgcGFnZVxuXHRcdC8vIChyZWZyZXNoaW5nIHRoZSBwYWdlIHdvdWxkIHJlY3JlYXRlIHRoZSBVUkwpXG5cdFx0Ly9cdFRoaXMgaXMgdGhlIHdvcmthcm91bmQ6XG5cdFx0Ly9cdFdlIHNldCB0aGUgcHJvcGVydHkgdG8gdW5kZWZpbmVkIG9ubHkgb24gdGhlIGZyb250ZW5kIHdoaWNoIHdpbGwgcmVjcmVhdGUgdGhlIHVwbG9hZFVybFxuXHRcdG9Db250ZXh0LnNldFByb3BlcnR5KHNQcm9wZXJ0eVBhdGgsIHVuZGVmaW5lZCwgbnVsbCk7XG5cblx0XHR0aGlzLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0ob0V2ZW50LCBvRmlsZVdyYXBwZXIsIG9Db250cm9sbGVyKTtcblxuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQob0RlbGV0ZUJ1dHRvbik7XG5cdFx0bGV0IG9CaW5kaW5nLCBzQmluZGluZ1BhdGg7XG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0b0JpbmRpbmcgPSBvQ29udGV4dC5nZXRCaW5kaW5nKCk7XG5cdFx0XHRpZiAoIW9CaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhvRGVsZXRlQnV0dG9uKTtcblx0XHRcdFx0b0JpbmRpbmcgPSBvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpLmdldEJpbmRpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGF0YSA9IFtcblx0XHRcdFx0Li4ub0ZpbGVXcmFwcGVyLmdldEF2YXRhcigpLmdldEJpbmRpbmdJbmZvKFwic3JjXCIpPy5wYXJ0cyxcblx0XHRcdFx0Li4uKG9GaWxlV3JhcHBlci5nZXRBdmF0YXIoKS5nZXRCaW5kaW5nSW5mbyhcImFkZGl0aW9uYWxWYWx1ZVwiKT8ucGFydHMgfHwgW10pXG5cdFx0XHRdLm1hcChmdW5jdGlvbiAocGFydDogYW55KSB7XG5cdFx0XHRcdGlmIChwYXJ0KSB7XG5cdFx0XHRcdFx0c0JpbmRpbmdQYXRoID0gcGFydC5wYXRoO1xuXHRcdFx0XHRcdHJldHVybiBgJHtvQ29udGV4dC5nZXRQYXRoKCl9LyR7c0JpbmRpbmdQYXRofWA7XG5cdFx0XHRcdH1cblx0XHRcdH0pIGFzIFtdO1xuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKG9EZWxldGVCdXR0b24sIEFjdGl2aXR5LkxpdmVDaGFuZ2UsIGRhdGEpO1xuXG5cdFx0XHRvQmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChvRGVsZXRlQnV0dG9uLCBBY3Rpdml0eS5DaGFuZ2UsIGRhdGEpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW06IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgb0NvbnRyb2w6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRcdGNvbnN0IG9GRUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIob0NvbnRyb2xsZXIpO1xuXHRcdGlmIChvQ29udHJvbCAmJiBvQ29udHJvbC5nZXRCaW5kaW5nQ29udGV4dCgpLmlzVHJhbnNpZW50KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sKSB7XG5cdFx0XHRvRXZlbnQub1NvdXJjZSA9IG9Db250cm9sO1xuXHRcdH1cblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZENoYW5nZShvRXZlbnQpO1xuXHR9LFxuXG5cdGdldEljb25Gb3JNaW1lVHlwZTogZnVuY3Rpb24gKHNNaW1lVHlwZTogYW55KSB7XG5cdFx0cmV0dXJuIEljb25Qb29sLmdldEljb25Gb3JNaW1lVHlwZShzTWltZVR5cGUpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gcmV0cmlldmUgdGV4dCBmcm9tIHZhbHVlIGxpc3QgZm9yIERhdGFGaWVsZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Rcblx0ICogQHBhcmFtIHNQcm9wZXJ0eVZhbHVlIFRoZSBwcm9wZXJ0eSB2YWx1ZSBvZiB0aGUgZGF0YWZpZWxkXG5cdCAqIEBwYXJhbSBzUHJvcGVydHlGdWxsUGF0aCBUaGUgcHJvcGVydHkgZnVsbCBwYXRoJ3Ncblx0ICogQHBhcmFtIHNEaXNwbGF5Rm9ybWF0IFRoZSBkaXNwbGF5IGZvcm1hdCBmb3IgdGhlIGRhdGFmaWVsZFxuXHQgKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHZhbHVlIGluIGNvcnJlc3BvbmRpbmcgZGlzcGxheSBmb3JtYXQuXG5cdCAqL1xuXHRyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0OiBmdW5jdGlvbiAoc1Byb3BlcnR5VmFsdWU6IHN0cmluZywgc1Byb3BlcnR5RnVsbFBhdGg6IHN0cmluZywgc0Rpc3BsYXlGb3JtYXQ6IHN0cmluZykge1xuXHRcdGxldCBzVGV4dFByb3BlcnR5OiBzdHJpbmc7XG5cdFx0bGV0IG9NZXRhTW9kZWw7XG5cdFx0bGV0IHNQcm9wZXJ0eU5hbWU6IHN0cmluZztcblx0XHRpZiAoc1Byb3BlcnR5VmFsdWUpIHtcblx0XHRcdG9NZXRhTW9kZWwgPSBDb21tb25IZWxwZXIuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRzUHJvcGVydHlOYW1lID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7c1Byb3BlcnR5RnVsbFBhdGh9QHNhcHVpLm5hbWVgKTtcblx0XHRcdHJldHVybiBvTWV0YU1vZGVsXG5cdFx0XHRcdC5yZXF1ZXN0VmFsdWVMaXN0SW5mbyhzUHJvcGVydHlGdWxsUGF0aCwgdHJ1ZSlcblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKG1WYWx1ZUxpc3RJbmZvOiBhbnkpIHtcblx0XHRcdFx0XHQvLyB0YWtlIHRoZSBcIlwiIG9uZSBpZiBleGlzdHMsIG90aGVyd2lzZSB0YWtlIHRoZSBmaXJzdCBvbmUgaW4gdGhlIG9iamVjdCBUT0RPOiB0byBiZSBkaXNjdXNzZWRcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVMaXN0SW5mbyA9IG1WYWx1ZUxpc3RJbmZvW21WYWx1ZUxpc3RJbmZvW1wiXCJdID8gXCJcIiA6IE9iamVjdC5rZXlzKG1WYWx1ZUxpc3RJbmZvKVswXV07XG5cdFx0XHRcdFx0Y29uc3Qgb1ZhbHVlTGlzdE1vZGVsID0gb1ZhbHVlTGlzdEluZm8uJG1vZGVsO1xuXHRcdFx0XHRcdGNvbnN0IG9NZXRhTW9kZWxWYWx1ZUxpc3QgPSBvVmFsdWVMaXN0TW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0XHRcdFx0Y29uc3Qgb1BhcmFtV2l0aEtleSA9IG9WYWx1ZUxpc3RJbmZvLlBhcmFtZXRlcnMuZmluZChmdW5jdGlvbiAob1BhcmFtZXRlcjogYW55KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb1BhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eSAmJiBvUGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5LiRQcm9wZXJ0eVBhdGggPT09IHNQcm9wZXJ0eU5hbWU7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0aWYgKG9QYXJhbVdpdGhLZXkgJiYgIW9QYXJhbVdpdGhLZXkuVmFsdWVMaXN0UHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBQcm9taXNlLnJlamVjdChgSW5jb25zaXN0ZW50IHZhbHVlIGhlbHAgYW5ub3RhdGlvbiBmb3IgJHtzUHJvcGVydHlOYW1lfWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb25zdCBvVGV4dEFubm90YXRpb24gPSBvTWV0YU1vZGVsVmFsdWVMaXN0LmdldE9iamVjdChcblx0XHRcdFx0XHRcdGAvJHtvVmFsdWVMaXN0SW5mby5Db2xsZWN0aW9uUGF0aH0vJHtvUGFyYW1XaXRoS2V5LlZhbHVlTGlzdFByb3BlcnR5fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dGBcblx0XHRcdFx0XHQpO1xuXG5cdFx0XHRcdFx0aWYgKG9UZXh0QW5ub3RhdGlvbiAmJiBvVGV4dEFubm90YXRpb24uJFBhdGgpIHtcblx0XHRcdFx0XHRcdHNUZXh0UHJvcGVydHkgPSBvVGV4dEFubm90YXRpb24uJFBhdGg7XG5cdFx0XHRcdFx0XHRjb25zdCBvRmlsdGVyID0gbmV3IEZpbHRlcih7XG5cdFx0XHRcdFx0XHRcdHBhdGg6IG9QYXJhbVdpdGhLZXkuVmFsdWVMaXN0UHJvcGVydHksXG5cdFx0XHRcdFx0XHRcdG9wZXJhdG9yOiBcIkVRXCIsXG5cdFx0XHRcdFx0XHRcdHZhbHVlMTogc1Byb3BlcnR5VmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb0xpc3RCaW5kaW5nID0gb1ZhbHVlTGlzdE1vZGVsLmJpbmRMaXN0KGAvJHtvVmFsdWVMaXN0SW5mby5Db2xsZWN0aW9uUGF0aH1gLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgb0ZpbHRlciwge1xuXHRcdFx0XHRcdFx0XHRcIiRzZWxlY3RcIjogc1RleHRQcm9wZXJ0eVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb0xpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCAyKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c0Rpc3BsYXlGb3JtYXQgPSBcIlZhbHVlXCI7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc1Byb3BlcnR5VmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAoYUNvbnRleHRzOiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBzRGVzY3JpcHRpb24gPSBzVGV4dFByb3BlcnR5ID8gYUNvbnRleHRzWzBdPy5nZXRPYmplY3QoKVtzVGV4dFByb3BlcnR5XSA6IFwiXCI7XG5cdFx0XHRcdFx0c3dpdGNoIChzRGlzcGxheUZvcm1hdCkge1xuXHRcdFx0XHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzRGVzY3JpcHRpb247XG5cdFx0XHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiQ19GT1JNQVRfRk9SX1RFWFRfQVJSQU5HRU1FTlRcIiwgW1xuXHRcdFx0XHRcdFx0XHRcdHNEZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdFx0XHRzUHJvcGVydHlWYWx1ZVxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdGNhc2UgXCJWYWx1ZURlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBDb3JlLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLmdldFRleHQoXCJDX0ZPUk1BVF9GT1JfVEVYVF9BUlJBTkdFTUVOVFwiLCBbXG5cdFx0XHRcdFx0XHRcdFx0c1Byb3BlcnR5VmFsdWUsXG5cdFx0XHRcdFx0XHRcdFx0c0Rlc2NyaXB0aW9uXG5cdFx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IHNNc2cgPVxuXHRcdFx0XHRcdFx0b0Vycm9yLnN0YXR1cyAmJiBvRXJyb3Iuc3RhdHVzID09PSA0MDRcblx0XHRcdFx0XHRcdFx0PyBgTWV0YWRhdGEgbm90IGZvdW5kICgke29FcnJvci5zdGF0dXN9KSBmb3IgdmFsdWUgaGVscCBvZiBwcm9wZXJ0eSAke3NQcm9wZXJ0eUZ1bGxQYXRofWBcblx0XHRcdFx0XHRcdFx0OiBvRXJyb3IubWVzc2FnZTtcblx0XHRcdFx0XHRMb2cuZXJyb3Ioc01zZyk7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gc1Byb3BlcnR5VmFsdWU7XG5cdH0sXG5cblx0aGFuZGxlVHlwZU1pc3NtYXRjaDogZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0TWVzc2FnZUJveC5lcnJvcihSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRVwiKSwge1xuXHRcdFx0ZGV0YWlsczpcblx0XHRcdFx0YDxwPjxzdHJvbmc+JHtSZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRV9ERVRBSUxTX1NFTEVDVEVEXCIpfTwvc3Ryb25nPjwvcD4ke1xuXHRcdFx0XHRcdG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkubWltZVR5cGVcblx0XHRcdFx0fTxicj48YnI+YCArXG5cdFx0XHRcdGA8cD48c3Ryb25nPiR7UmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9GSUVMRF9GSUxFVVBMT0FERVJfV1JPTkdfTUlNRVRZUEVfREVUQUlMU19BTExPV0VEXCIpfTwvc3Ryb25nPjwvcD4ke29FdmVudFxuXHRcdFx0XHRcdC5nZXRTb3VyY2UoKVxuXHRcdFx0XHRcdC5nZXRNaW1lVHlwZSgpXG5cdFx0XHRcdFx0LnRvU3RyaW5nKClcblx0XHRcdFx0XHQucmVwbGFjZUFsbChcIixcIiwgXCIsIFwiKX1gLFxuXHRcdFx0Y29udGVudFdpZHRoOiBcIjE1MHB4XCJcblx0XHR9IGFzIGFueSk7XG5cdH0sXG5cblx0aGFuZGxlRmlsZVNpemVFeGNlZWQ6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSAvKmlGaWxlU2l6ZTogYW55Ki8pIHtcblx0XHRNZXNzYWdlQm94LmVycm9yKFJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX0ZJTEVfVE9PX0JJR1wiLCBvRXZlbnQuZ2V0U291cmNlKCkuZ2V0TWF4aW11bUZpbGVTaXplKCkudG9GaXhlZCgzKSksIHtcblx0XHRcdGNvbnRlbnRXaWR0aDogXCIxNTBweFwiXG5cdFx0fSBhcyBhbnkpO1xuXHR9LFxuXG5cdF9nZXRFeHRlbnNpb25Db250cm9sbGVyOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IGFueSkge1xuXHRcdHJldHVybiBvQ29udHJvbGxlci5pc0EoXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikgPyBvQ29udHJvbGxlci5fY29udHJvbGxlciA6IG9Db250cm9sbGVyO1xuXHR9XG59O1xuXG4vKipcbiAqIEBnbG9iYWxcbiAqL1xuZXhwb3J0IGRlZmF1bHQgRmllbGRSdW50aW1lO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7OztFQWtqQk8sZ0JBQWdCQSxJQUFJLEVBQUVDLE9BQU8sRUFBRTtJQUNyQyxJQUFJO01B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
@@ -464,6 +464,13 @@ const FieldRuntime = {
464
464
  }
465
465
  }
466
466
  },
467
+ openExternalLink: function (event: Event) {
468
+ const source = event.getSource() as any;
469
+ if (source.data("url") && source.getProperty("text") !== "") {
470
+ // This opens the link in the same tab as the link. It was done to be more consistent with other type of links.
471
+ openWindow(source.data("url"), "_self");
472
+ }
473
+ },
467
474
  pressLink: async function (oEvent: any): Promise<void> {
468
475
  const oSource = oEvent.getSource();
469
476
  const oLink = oSource.isA("sap.m.ObjectIdentifier")
@@ -209,6 +209,10 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/Bindin
209
209
  type: "boolean",
210
210
  required: false
211
211
  },
212
+ linkUrl: {
213
+ type: "string",
214
+ required: false
215
+ },
212
216
  formatOptions: {
213
217
  type: "object",
214
218
  properties: {
@@ -593,6 +597,7 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/Bindin
593
597
  }
594
598
  if (oDataField.Criticality) {
595
599
  oProps.hasQuickViewFacets = hasQuickViewFacets;
600
+ oProps.linkUrl = oDataField.Url ? compileExpression(getExpressionFromAnnotation(oDataField.Url)) : undefined;
596
601
  oProps.displayStyle = "ObjectStatus";
597
602
  return;
598
603
  }
@@ -753,4 +758,4 @@ sap.ui.define(["sap/fe/core/CommonUtils", "sap/fe/core/converters/helpers/Bindin
753
758
  });
754
759
  return Field;
755
760
  }, false);
756
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZCIsIk1hY3JvTWV0YWRhdGEiLCJleHRlbmQiLCJuYW1lIiwibmFtZXNwYWNlIiwiZnJhZ21lbnQiLCJtZXRhZGF0YSIsInN0ZXJlb3R5cGUiLCJkZXNpZ250aW1lIiwicHJvcGVydGllcyIsImlkUHJlZml4IiwidHlwZSIsIl9hcGlJZCIsIm5vV3JhcHBlcklkIiwidmhJZFByZWZpeCIsImRlZmF1bHRWYWx1ZSIsIl92aEZsZXhJZCIsImNvbXB1dGVkIiwiZW50aXR5U2V0IiwicmVxdWlyZWQiLCIka2luZCIsImVudGl0eVR5cGUiLCJwYXJlbnRFbnRpdHlTZXQiLCJuYXZpZ2F0ZUFmdGVyQWN0aW9uIiwiZGF0YUZpZWxkIiwiJFR5cGUiLCJzZW1hbnRpY09iamVjdHMiLCJlZGl0TW9kZSIsIndyYXAiLCJhcmlhTGFiZWxsZWRCeSIsInRleHRBbGlnbiIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImVuYWJsZWRFeHByZXNzaW9uIiwiY29sbGFib3JhdGlvbkVuYWJsZWQiLCJjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uIiwiY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiIsImNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24iLCJzZW1hbnRpY09iamVjdCIsImhhc1NlbWFudGljT2JqZWN0T25OYXZpZ2F0aW9uIiwiZm9ybWF0T3B0aW9ucyIsImlzQ3VycmVuY3lBbGlnbmVkIiwiY29udGFpbnNFcnJvclZpc2liaWxpdHkiLCJ0ZXh0QWxpZ25Nb2RlIiwiYWxsb3dlZFZhbHVlcyIsImRpc3BsYXlNb2RlIiwiZmllbGRNb2RlIiwibWVhc3VyZURpc3BsYXlNb2RlIiwidGV4dExpbmVzRWRpdCIsImNvbmZpZ3VyYWJsZSIsInRleHRNYXhMaW5lcyIsInRleHRNYXhDaGFyYWN0ZXJzRGlzcGxheSIsInRleHRFeHBhbmRCZWhhdmlvckRpc3BsYXkiLCJzaG93RW1wdHlJbmRpY2F0b3IiLCJzZW1hbnRpY0tleVN0eWxlIiwiaGFzRHJhZnRJbmRpY2F0b3IiLCJzaG93SWNvblVybCIsImlnbm9yZU5hdmlnYXRpb25BdmFpbGFibGUiLCJpc0FuYWx5dGljcyIsInJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QiLCJjb21wYWN0U2VtYW50aWNLZXkiLCJmaWVsZEdyb3VwRHJhZnRJbmRpY2F0b3JQcm9wZXJ0eVBhdGgiLCJmaWVsZEdyb3VwTmFtZSIsImV2ZW50cyIsIm9uQ2hhbmdlIiwiZ2V0T3ZlcnJpZGVzIiwibUNvbnRyb2xDb25maWd1cmF0aW9uIiwic0lEIiwib1Byb3BzIiwib0NvbnRyb2xDb25maWciLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInNDb25maWdLZXkiLCJzZXRVcERhdGFQb2ludFR5cGUiLCJvRGF0YUZpZWxkIiwidGVybSIsInNldFVwVmlzaWJsZVByb3BlcnRpZXMiLCJvRmllbGRQcm9wcyIsIm9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgiLCJ2aXNpYmxlIiwiRmllbGRUZW1wbGF0aW5nIiwiZ2V0VmlzaWJsZUV4cHJlc3Npb24iLCJkaXNwbGF5VmlzaWJsZSIsInVuZGVmaW5lZCIsInNldFVwUGFyZW50RW50aXR5U2V0IiwibVNldHRpbmdzIiwiY29udGV4dExvY2F0aW9uIiwibW9kZWxzIiwibWV0YU1vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJzdGFydGluZ0VudGl0eVNldCIsImNyZWF0ZSIsIm9Db250cm9sQ29uZmlndXJhdGlvbiIsIm9EYXRhRmllbGRDb252ZXJ0ZWQiLCJNZXRhTW9kZWxDb252ZXJ0ZXIiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsIm9EYXRhTW9kZWxQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiX2ZsZXhJZCIsImdldENvbnRlbnRJZCIsIl9nZXRUYXJnZXRWYWx1ZURhdGFNb2RlbFBhdGgiLCJzZXRVcFNlbWFudGljT2JqZWN0cyIsImRhdGFTb3VyY2VQYXRoIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsIm9NZXRhTW9kZWwiLCJ0YXJnZXRFbnRpdHlUeXBlIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwic2V0VXBFZGl0YWJsZVByb3BlcnRpZXMiLCJzZXRVcEZvcm1hdE9wdGlvbnMiLCJzZXRVcERpc3BsYXlTdHlsZSIsInNldFVwRWRpdFN0eWxlIiwiYURpc3BsYXlTdHlsZXNXaXRob3V0UHJvcFRleHQiLCJkaXNwbGF5U3R5bGUiLCJpbmRleE9mIiwidGFyZ2V0T2JqZWN0IiwidGV4dCIsImdldFRleHRCaW5kaW5nIiwic2V0VXBPYmplY3RJZGVudGlmaWVyVGl0bGVBbmRUZXh0IiwiZ2V0T2JqZWN0Iiwib0RhdGFQb2ludCIsIlRlbXBsYXRlTW9kZWwiLCJnZXRNb2RlbCIsImVtcHR5SW5kaWNhdG9yTW9kZSIsImdldE9iamVjdElkZW50aWZpZXJUaXRsZSIsImZpZWxkRm9ybWF0T3B0aW9ucyIsInByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24iLCJwYXRoSW5Nb2RlbCIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJ0YXJnZXREaXNwbGF5TW9kZSIsIm9Qcm9wZXJ0eURlZmluaXRpb24iLCIkdGFyZ2V0IiwiVUlGb3JtYXR0ZXJzIiwiZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbiIsImNvbW1vblRleHQiLCJhbm5vdGF0aW9ucyIsIkNvbW1vbiIsIlRleHQiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UmVsYXRpdmVQYXRocyIsInBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIiLCJwdXNoIiwidGFyZ2V0RW50aXR5U2V0IiwiRHJhZnRSb290IiwiRHJhZnROb2RlIiwiRW50aXR5IiwiSGFzRHJhZnQiLCJJc0FjdGl2ZSIsImNvbnN0YW50IiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiVUkiLCJUZXh0QXJyYW5nZW1lbnQiLCJTZW1hbnRpY09iamVjdCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZm9ybWF0UmVzdWx0IiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0T1BUaXRsZSIsImdldE9iamVjdElkZW50aWZpZXJUZXh0IiwiX29Qcm9wcyIsImlkZW50aWZpZXJUaXRsZSIsImlkZW50aWZpZXJUZXh0IiwiZ2V0VGV4dFdpdGhXaGl0ZVNwYWNlIiwiX3R5cGUiLCJzRXh0cmFQYXRoIiwidGFyZ2V0VmFsdWVEYXRhTW9kZWxQYXRoIiwiVmFsdWUiLCJwYXRoIiwiVGFyZ2V0IiwibGVuZ3RoIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJvUHJvcGVydHkiLCJJc0ltYWdlVVJMIiwiaGFzUXVpY2tWaWV3RmFjZXRzIiwiaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyIsInNldFVwTmF2aWdhdGlvbkF2YWlsYWJsZSIsImlzU2VtYW50aWNLZXkiLCJoYXNTaXR1YXRpb25zSW5kaWNhdG9yIiwiU2l0dWF0aW9uc0luZGljYXRvciIsImdldFNpdHVhdGlvbnNOYXZpZ2F0aW9uUHJvcGVydHkiLCJDcml0aWNhbGl0eSIsIk1lYXN1cmVzIiwiSVNPQ3VycmVuY3kiLCJTdHJpbmciLCJ2YWx1ZUFzU3RyaW5nQmluZGluZ0V4cHJlc3Npb24iLCJnZXRWYWx1ZUJpbmRpbmciLCJ1bml0QmluZGluZ0V4cHJlc3Npb24iLCJnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kiLCJDb21tdW5pY2F0aW9uIiwiSXNFbWFpbEFkZHJlc3MiLCJJc1Bob25lTnVtYmVyIiwiTXVsdGlMaW5lVGV4dCIsIl9vUHJvcGVydHlDb21tb25Bbm5vdGF0aW9ucyIsIl9vUHJvcGVydHlOYXZpZ2F0aW9uUHJvcGVydHlBbm5vdGF0aW9ucyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwia2V5Iiwic2V0RWRpdFN0eWxlUHJvcGVydGllcyIsIm9Qcm9wZXJ0eUZvckZpZWxkQ29udHJvbCIsImVkaXRNb2RlQXNPYmplY3QiLCJiTWVhc3VyZVJlYWRPbmx5IiwiZ2V0RWRpdE1vZGUiLCJnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwiQ29tbW9uVXRpbHMiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwiZ2V0UGF0aCIsInJlcGxhY2VBbGwiLCJhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyIsImdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnMiLCJvUmVxdWlyZWRQcm9wZXJ0aWVzIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsInJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnMiLCJNb2RlbEhlbHBlciIsImlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkIiwiY29sbGFib3JhdGlvbkV4cHJlc3Npb24iLCJnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiIsIkNvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIiwiaGFzQ29sbGFib3JhdGlvbkFjdGl2aXR5IiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMiLCJnZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlDb2xvciIsImFuZCIsIm5vdCIsImlmRWxzZSIsImdldEVuYWJsZWRFeHByZXNzaW9uIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uIiwib092ZXJyaWRlUHJvcHMiLCJnZXREaXNwbGF5TW9kZSIsInZpZXdEYXRhIiwiZ2V0UHJvcGVydHkiLCJpc1JldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3RFbmFibGVkIiwiaGFzRW50aXR5VGV4dEFycmFuZ2VtZW50IiwiZ2VuZXJhdGUiLCJhU2VtT2JqRXhwclRvUmVzb2x2ZSIsImdldFNlbWFudGljT2JqZWN0RXhwcmVzc2lvblRvUmVzb2x2ZSIsInN1YnN0ciIsInZhbHVlIiwiZ2V0U2VtYW50aWNPYmplY3RzIiwibmF2UHJvcGVydHkiLCJuYXZpZ2F0aW9uQXZhaWxhYmxlIiwiTmF2aWdhdGlvbkF2YWlsYWJsZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGQubWV0YWRhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBTZW1hbnRpY09iamVjdCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQmluZGluZ0hlbHBlclwiO1xuaW1wb3J0ICogYXMgTWV0YU1vZGVsQ29udmVydGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0ICogYXMgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvQ29sbGFib3JhdGlvbkZvcm1hdHRlclwiO1xuaW1wb3J0IHZhbHVlRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9WYWx1ZUZvcm1hdHRlclwiO1xuaW1wb3J0IHtcblx0YW5kLFxuXHRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sXG5cdENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Y29uc3RhbnQsXG5cdGZvcm1hdFJlc3VsdCxcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRpZkVsc2UsXG5cdG5vdCxcblx0cGF0aEluTW9kZWxcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IFRlbXBsYXRlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGVuaGFuY2VEYXRhTW9kZWxQYXRoLFxuXHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoLFxuXHRnZXRSZWxhdGl2ZVBhdGhzLFxuXHRnZXRUYXJnZXRPYmplY3RQYXRoXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGlzU2VtYW50aWNLZXkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0ICogYXMgVUlGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0ICogYXMgRmllbGRUZW1wbGF0aW5nIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkVGVtcGxhdGluZ1wiO1xuaW1wb3J0IE1hY3JvTWV0YWRhdGEgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9NZXRhZGF0YVwiO1xuaW1wb3J0IFNpdHVhdGlvbnNJbmRpY2F0b3IgZnJvbSBcInNhcC9mZS9tYWNyb3Mvc2l0dWF0aW9ucy9TaXR1YXRpb25zSW5kaWNhdG9yLmZyYWdtZW50XCI7XG5cbnR5cGUgRGlzcGxheVN0eWxlID1cblx0fCBcIlRleHRcIlxuXHR8IFwiQXZhdGFyXCJcblx0fCBcIkZpbGVcIlxuXHR8IFwiRGF0YVBvaW50XCJcblx0fCBcIkNvbnRhY3RcIlxuXHR8IFwiQnV0dG9uXCJcblx0fCBcIkxpbmtcIlxuXHR8IFwiT2JqZWN0U3RhdHVzXCJcblx0fCBcIkFtb3VudFdpdGhDdXJyZW5jeVwiXG5cdHwgXCJTZW1hbnRpY0tleVdpdGhEcmFmdEluZGljYXRvclwiXG5cdHwgXCJPYmplY3RJZGVudGlmaWVyXCJcblx0fCBcIkxhYmVsU2VtYW50aWNLZXlcIlxuXHR8IFwiTGlua1dpdGhRdWlja1ZpZXdGb3JtXCJcblx0fCBcIkxpbmtXcmFwcGVyXCJcblx0fCBcIkV4cGFuZGFibGVUZXh0XCI7XG5cbnR5cGUgRWRpdFN0eWxlID1cblx0fCBcIklucHV0V2l0aFZhbHVlSGVscFwiXG5cdHwgXCJUZXh0QXJlYVwiXG5cdHwgXCJGaWxlXCJcblx0fCBcIkRhdGVQaWNrZXJcIlxuXHR8IFwiVGltZVBpY2tlclwiXG5cdHwgXCJEYXRlVGltZVBpY2tlclwiXG5cdHwgXCJDaGVja0JveFwiXG5cdHwgXCJJbnB1dFdpdGhVbml0XCJcblx0fCBcIklucHV0XCJcblx0fCBcIlJhdGluZ0luZGljYXRvclwiO1xuXG50eXBlIEZpZWxkRm9ybWF0T3B0aW9ucyA9IFBhcnRpYWw8e1xuXHRjb250YWluc0Vycm9yVmlzaWJpbGl0eTogc3RyaW5nO1xuXHRkaXNwbGF5TW9kZTogRGlzcGxheU1vZGU7XG5cdGZpZWxkTW9kZTogc3RyaW5nO1xuXHRoYXNEcmFmdEluZGljYXRvcjogYm9vbGVhbjtcblx0aXNBbmFseXRpY3M6IGJvb2xlYW47XG5cdGlnbm9yZU5hdmlnYXRpb25BdmFpbGFibGU6IGJvb2xlYW47XG5cdGlzQ3VycmVuY3lBbGlnbmVkOiBib29sZWFuO1xuXHRtZWFzdXJlRGlzcGxheU1vZGU6IHN0cmluZztcblx0cmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdDogYm9vbGVhbjtcblx0c2VtYW50aWNrZXlzOiBzdHJpbmdbXTtcblx0c2VtYW50aWNLZXlTdHlsZTogc3RyaW5nO1xuXHRzaG93RW1wdHlJbmRpY2F0b3I6IGJvb2xlYW47XG5cdHNob3dJY29uVXJsOiBib29sZWFuO1xuXHR0ZXh0QWxpZ25Nb2RlOiBzdHJpbmc7XG5cdHRleHRMaW5lc0VkaXQ6IHN0cmluZztcblx0dGV4dE1heExpbmVzOiBzdHJpbmc7XG5cdGNvbXBhY3RTZW1hbnRpY0tleTogc3RyaW5nO1xuXHRmaWVsZEdyb3VwRHJhZnRJbmRpY2F0b3JQcm9wZXJ0eVBhdGg6IHN0cmluZztcblx0ZmllbGRHcm91cE5hbWU6IHN0cmluZztcbn0+O1xuXG5leHBvcnQgdHlwZSBGaWVsZFByb3BlcnRpZXMgPSB7XG5cdGRhdGFGaWVsZDogYW55O1xuXHRlZGl0TW9kZT86IGFueTtcblx0ZW50aXR5U2V0OiBhbnk7XG5cdGVudGl0eVR5cGU/OiBhbnk7XG5cdHBhcmVudEVudGl0eVNldD86IGFueTtcblx0Zm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zO1xuXHRpZFByZWZpeD86IHN0cmluZztcblx0c2VtYW50aWNPYmplY3Q/OiBzdHJpbmcgfCBTZW1hbnRpY09iamVjdDtcblx0dmhJZFByZWZpeD86IHN0cmluZztcblx0X2FwaUlkPzogc3RyaW5nO1xuXG5cdC8vIGNvbXB1dGVkIHByb3BlcnRpZXNcblx0aGFzU2l0dWF0aW9uc0luZGljYXRvcjogYm9vbGVhbjtcblx0Y29sbGFib3JhdGlvbkNvbG9yRXhwcmVzc2lvbj86IHN0cmluZztcblx0Y29sbGFib3JhdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuXHRjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uPzogc3RyaW5nO1xuXHRjb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uPzogc3RyaW5nO1xuXHRkYXRhU291cmNlUGF0aD86IHN0cmluZztcblx0ZGVzY3JpcHRpb25CaW5kaW5nRXhwcmVzc2lvbj86IHN0cmluZztcblx0ZGlzcGxheVN0eWxlOiBEaXNwbGF5U3R5bGU7XG5cdGRpc3BsYXlWaXNpYmxlPzogc3RyaW5nO1xuXHRlZGl0YWJsZUV4cHJlc3Npb24/OiBzdHJpbmc7XG5cdGVkaXRNb2RlQXNPYmplY3Q/OiBhbnk7XG5cdGVkaXRTdHlsZT86IEVkaXRTdHlsZSB8IG51bGw7XG5cdGVuYWJsZWRFeHByZXNzaW9uPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGVtcHR5SW5kaWNhdG9yTW9kZT86IFwiT25cIjtcblx0ZmllbGRXcmFwcGVySWQ/OiBzdHJpbmc7XG5cdGhhc1F1aWNrVmlld0ZhY2V0cz86IGJvb2xlYW47XG5cdG5vV3JhcHBlcklkPzogc3RyaW5nO1xuXHRuYXZpZ2F0aW9uQXZhaWxhYmxlPzogYm9vbGVhbiB8IHN0cmluZztcblx0cmVxdWlyZWRFeHByZXNzaW9uPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHNob3dUaW1lem9uZT86IGJvb2xlYW47XG5cdHNlbWFudGljT2JqZWN0cz86IHN0cmluZztcblx0dGV4dD86IHN0cmluZyB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGlkZW50aWZpZXJUaXRsZT86IHN0cmluZyB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGlkZW50aWZpZXJUZXh0Pzogc3RyaW5nIHwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4gfCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0dGV4dEJpbmRpbmdFeHByZXNzaW9uPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHVuaXRCaW5kaW5nRXhwcmVzc2lvbj86IHN0cmluZztcblx0dW5pdEVkaXRhYmxlPzogc3RyaW5nO1xuXHR2YWx1ZUJpbmRpbmdFeHByZXNzaW9uPzogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHZhbHVlQXNTdHJpbmdCaW5kaW5nRXhwcmVzc2lvbj86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRfZmxleElkPzogc3RyaW5nO1xuXHRfdmhGbGV4SWQ/OiBzdHJpbmc7XG5cdHZpc2libGU/OiBzdHJpbmc7XG5cdGhhc1NlbWFudGljT2JqZWN0T25OYXZpZ2F0aW9uPzogYm9vbGVhbjtcbn07XG5cbnR5cGUgRmllbGRUeXBlID0ge1xuXHRvUHJvcHM6IEZpZWxkUHJvcGVydGllcztcblx0Z2V0Q29udGVudElkOiAoc0lEOiBzdHJpbmcpID0+IHN0cmluZztcblx0c2V0VXBEaXNwbGF5U3R5bGU6IChvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0RhdGFGaWVsZDogYW55LCBvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCkgPT4gdm9pZDtcblx0c2V0VXBFZGl0U3R5bGU6IChvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0RhdGFGaWVsZDogYW55LCBvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCkgPT4gdm9pZDtcblx0Z2V0T3ZlcnJpZGVzOiAobUNvbnRyb2xDb25maWd1cmF0aW9uOiBhbnksIHNJRDogc3RyaW5nKSA9PiB7IFtpbmRleDogc3RyaW5nXTogYW55IH07XG5cdHNldFVwRWRpdGFibGVQcm9wZXJ0aWVzOiAob1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhRmllbGQ6IGFueSwgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIG9NZXRhTW9kZWw6IGFueSkgPT4gdm9pZDtcblx0c2V0VXBGb3JtYXRPcHRpb25zOiAob1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLCBvQ29udHJvbENvbmZpZ3VyYXRpb246IGFueSwgbVNldHRpbmdzOiBhbnkpID0+IHZvaWQ7XG5cdHNldFVwU2VtYW50aWNPYmplY3RzOiAob1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKSA9PiB2b2lkO1xuXHRzZXRVcE5hdmlnYXRpb25BdmFpbGFibGU6IChvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0RhdGFGaWVsZDogYW55KSA9PiB2b2lkO1xuXHRzZXRVcERhdGFQb2ludFR5cGU6IChvRGF0YUZpZWxkOiBhbnkpID0+IHZvaWQ7XG5cdF9nZXRUYXJnZXRWYWx1ZURhdGFNb2RlbFBhdGg6IChvRGF0YUZpZWxkOiBhbnksIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKSA9PiBEYXRhTW9kZWxPYmplY3RQYXRoO1xuXHRnZXRUZXh0V2l0aFdoaXRlU3BhY2U6IChmb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnMsIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKSA9PiBzdHJpbmc7XG5cdGdldE9iamVjdElkZW50aWZpZXJUaXRsZTogKFxuXHRcdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcblx0KSA9PiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRnZXRPYmplY3RJZGVudGlmaWVyVGV4dDogKFxuXHRcdGZpZWxkRm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLFxuXHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcblx0KSA9PiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRzZXRVcFZpc2libGVQcm9wZXJ0aWVzKG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IHZvaWQ7XG5cdHNldFVwUGFyZW50RW50aXR5U2V0KG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCwgbVNldHRpbmdzOiBhbnkpOiB2b2lkO1xuXHRzZXRVcE9iamVjdElkZW50aWZpZXJUaXRsZUFuZFRleHQob1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogdm9pZDtcbn07XG5cbi8qKlxuICogQGNsYXNzZGVzY1xuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRmllbGQgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICogPGJyPlxuICogVXN1YWxseSwgYSBEYXRhRmllbGQgYW5ub3RhdGlvbiBpcyBleHBlY3RlZFxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogPGludGVybmFsTWFjcm86RmllbGRcbiAqICAgaWRQcmVmaXg9XCJTb21lUHJlZml4XCJcbiAqICAgY29udGV4dFBhdGg9XCJ7ZW50aXR5U2V0Pn1cIlxuICogICBtZXRhUGF0aD1cIntkYXRhRmllbGQ+fVwiXG4gKiAvPlxuICogPC9wcmU+XG4gKiBAY2xhc3Mgc2FwLmZlLm1hY3Jvcy5pbnRlcm5hbC5GaWVsZFxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHByaXZhdGVcbiAqIEBleHBlcmltZW50YWxcbiAqIEBzaW5jZSAxLjk0LjBcbiAqL1xuY29uc3QgRmllbGQgPSBNYWNyb01ldGFkYXRhLmV4dGVuZChcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWwuRmllbGRcIiwge1xuXHQvKipcblx0ICogTmFtZSBvZiB0aGUgbWFjcm8gY29udHJvbC5cblx0ICovXG5cdG5hbWU6IFwiRmllbGRcIixcblx0LyoqXG5cdCAqIE5hbWVzcGFjZSBvZiB0aGUgbWFjcm8gY29udHJvbFxuXHQgKi9cblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0LyoqXG5cdCAqIEZyYWdtZW50IHNvdXJjZSBvZiB0aGUgbWFjcm8gKG9wdGlvbmFsKSAtIGlmIG5vdCBzZXQsIGZyYWdtZW50IGlzIGdlbmVyYXRlZCBmcm9tIG5hbWVzcGFjZSBhbmQgbmFtZVxuXHQgKi9cblx0ZnJhZ21lbnQ6IFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbC5GaWVsZFwiLFxuXG5cdC8qKlxuXHQgKiBUaGUgbWV0YWRhdGEgZGVzY3JpYmluZyB0aGUgbWFjcm8gY29udHJvbC5cblx0ICovXG5cdG1ldGFkYXRhOiB7XG5cdFx0LyoqXG5cdFx0ICogRGVmaW5lIG1hY3JvIHN0ZXJlb3R5cGUgZm9yIGRvY3VtZW50YXRpb25cblx0XHQgKi9cblx0XHRzdGVyZW90eXBlOiBcInhtbG1hY3JvXCIsXG5cdFx0LyoqXG5cdFx0ICogTG9jYXRpb24gb2YgdGhlIGRlc2lnbnRpbWUgaW5mb1xuXHRcdCAqL1xuXHRcdGRlc2lnbnRpbWU6IFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC9GaWVsZC5kZXNpZ250aW1lXCIsXG5cdFx0LyoqXG5cdFx0ICogUHJvcGVydGllcy5cblx0XHQgKi9cblx0XHRwcm9wZXJ0aWVzOiB7XG5cdFx0XHQvKipcblx0XHRcdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSBmaWVsZFxuXHRcdFx0ICovXG5cdFx0XHRpZFByZWZpeDoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0XHR9LFxuXHRcdFx0X2FwaUlkOiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCJcblx0XHRcdH0sXG5cdFx0XHRub1dyYXBwZXJJZDoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBQcmVmaXggYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBJRCBvZiB0aGUgdmFsdWUgaGVscCB1c2VkIGZvciB0aGUgZmllbGRcblx0XHRcdCAqL1xuXHRcdFx0dmhJZFByZWZpeDoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRkZWZhdWx0VmFsdWU6IFwiRmllbGRWYWx1ZUhlbHBcIlxuXHRcdFx0fSxcblxuXHRcdFx0X3ZoRmxleElkOiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdGNvbXB1dGVkOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSBlbnRpdHkgc2V0XG5cdFx0XHQgKi9cblx0XHRcdGVudGl0eVNldDoge1xuXHRcdFx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0XHRcdHJlcXVpcmVkOiB0cnVlLFxuXHRcdFx0XHQka2luZDogW1wiRW50aXR5U2V0XCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiXVxuXHRcdFx0fSxcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSBlbnRpdHkgc2V0XG5cdFx0XHQgKi9cblx0XHRcdGVudGl0eVR5cGU6IHtcblx0XHRcdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdFx0XHRyZXF1aXJlZDogZmFsc2UsXG5cdFx0XHRcdGNvbXB1dGVkOiB0cnVlLFxuXHRcdFx0XHQka2luZDogW1wiRW50aXR5VHlwZVwiXVxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogUGFyZW50IGVudGl0eSBzZXRcblx0XHRcdCAqL1xuXHRcdFx0cGFyZW50RW50aXR5U2V0OiB7XG5cdFx0XHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRcdFx0cmVxdWlyZWQ6IGZhbHNlLFxuXHRcdFx0XHQka2luZDogW1wiRW50aXR5U2V0XCIsIFwiTmF2aWdhdGlvblByb3BlcnR5XCIsIFwiRW50aXR5VHlwZVwiLCBcIlNpbmdsZXRvblwiXVxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogRmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgYWN0aW9uIHdpbGwgbmF2aWdhdGUgYWZ0ZXIgZXhlY3V0aW9uXG5cdFx0XHQgKi9cblx0XHRcdG5hdmlnYXRlQWZ0ZXJBY3Rpb246IHtcblx0XHRcdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0XHRcdGRlZmF1bHRWYWx1ZTogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgZGF0YUZpZWxkLlxuXHRcdFx0ICogVGhpcyBwcm9wZXJ0eSBpcyB1c3VhbGx5IGEgbWV0YWRhdGFDb250ZXh0IHBvaW50aW5nIHRvIGEgRGF0YUZpZWxkIGhhdmluZ1xuXHRcdFx0ICogJFR5cGUgb2YgRGF0YUZpZWxkLCBEYXRhRmllbGRXaXRoVXJsLCBEYXRhRmllbGRGb3JBbm5vdGF0aW9uLCBEYXRhRmllbGRGb3JBY3Rpb24sIERhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiwgRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoLCBvciBEYXRhUG9pbnRUeXBlLlxuXHRcdFx0ICogQnV0IGl0IGNhbiBhbHNvIGJlIGEgUHJvcGVydHkgd2l0aCAka2luZD1cIlByb3BlcnR5XCJcblx0XHRcdCAqL1xuXHRcdFx0ZGF0YUZpZWxkOiB7XG5cdFx0XHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdCRraW5kOiBbXCJQcm9wZXJ0eVwiXSxcblx0XHRcdFx0JFR5cGU6IFtcblx0XHRcdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFwiLFxuXHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aFVybFwiLFxuXHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQW5ub3RhdGlvblwiLFxuXHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9yQWN0aW9uXCIsXG5cdFx0XHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb25cIixcblx0XHRcdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIixcblx0XHRcdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb25cIixcblx0XHRcdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiLFxuXHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50VHlwZVwiXG5cdFx0XHRcdF1cblx0XHRcdH0sXG5cdFx0XHQvKipcblx0XHRcdCAqIENvbnRleHQgcG9pbnRpbmcgdG8gYW4gYXJyYXkgb2YgdGhlIHByb3BlcnR5J3Mgc2VtYW50aWMgb2JqZWN0c1xuXHRcdFx0ICovXG5cdFx0XHRzZW1hbnRpY09iamVjdHM6IHtcblx0XHRcdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdFx0XHRyZXF1aXJlZDogZmFsc2UsXG5cdFx0XHRcdGNvbXB1dGVkOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBFZGl0IE1vZGUgb2YgdGhlIGZpZWxkLlxuXHRcdFx0ICpcblx0XHRcdCAqIElmIHRoZSBlZGl0TW9kZSBpcyB1bmRlZmluZWQgdGhlbiB3ZSBjb21wdXRlIGl0IGJhc2VkIG9uIHRoZSBtZXRhZGF0YVxuXHRcdFx0ICogT3RoZXJ3aXNlIHdlIHVzZSB0aGUgdmFsdWUgcHJvdmlkZWQgaGVyZS5cblx0XHRcdCAqL1xuXHRcdFx0ZWRpdE1vZGU6IHtcblx0XHRcdFx0dHlwZTogXCJzYXAudWkubWRjLmVudW0uRWRpdE1vZGVcIlxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogV3JhcCBmaWVsZFxuXHRcdFx0ICovXG5cdFx0XHR3cmFwOiB7XG5cdFx0XHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBDU1MgY2xhc3MgZm9yIG1hcmdpblxuXHRcdFx0ICovXG5cdFx0XHRcImNsYXNzXCI6IHtcblx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIlxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogUHJvcGVydHkgYWRkZWQgdG8gYXNzb2NpYXRlIHRoZSBsYWJlbCB3aXRoIHRoZSBGaWVsZFxuXHRcdFx0ICovXG5cdFx0XHRhcmlhTGFiZWxsZWRCeToge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0XHR9LFxuXG5cdFx0XHR0ZXh0QWxpZ246IHtcblx0XHRcdFx0dHlwZTogXCJzYXAudWkuY29yZS5UZXh0QWxpZ25cIlxuXHRcdFx0fSxcblx0XHRcdGVkaXRhYmxlRXhwcmVzc2lvbjoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRjb21wdXRlZDogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdGVuYWJsZWRFeHByZXNzaW9uOiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdGNvbXB1dGVkOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0Y29sbGFib3JhdGlvbkVuYWJsZWQ6IHtcblx0XHRcdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0XHRcdGNvbXB1dGVkOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0Y29sbGFib3JhdGlvbkhhc0FjdGl2aXR5RXhwcmVzc2lvbjoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRjb21wdXRlZDogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdGNvbGxhYm9yYXRpb25Jbml0aWFsc0V4cHJlc3Npb246IHtcblx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0Y29tcHV0ZWQ6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRjb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uOiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdGNvbXB1dGVkOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBPcHRpb24gdG8gYWRkIGEgc2VtYW50aWMgb2JqZWN0IHRvIGEgZmllbGRcblx0XHRcdCAqL1xuXHRcdFx0c2VtYW50aWNPYmplY3Q6IHtcblx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0cmVxdWlyZWQ6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0aGFzU2VtYW50aWNPYmplY3RPbk5hdmlnYXRpb246IHtcblx0XHRcdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0XHRcdHJlcXVpcmVkOiBmYWxzZVxuXHRcdFx0fSxcblx0XHRcdGZvcm1hdE9wdGlvbnM6IHtcblx0XHRcdFx0dHlwZTogXCJvYmplY3RcIixcblx0XHRcdFx0cHJvcGVydGllczoge1xuXHRcdFx0XHRcdGlzQ3VycmVuY3lBbGlnbmVkOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0XHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIGV4cHJlc3Npb24gZm9yIE9iamVjdFN0YXR1cyB2aXNpYmxlIHByb3BlcnR5XG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0Y29udGFpbnNFcnJvclZpc2liaWxpdHk6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIERlc2NyaWJlIGhvdyB0aGUgYWxpZ25tZW50IHdvcmtzIGJldHdlZW4gVGFibGUgbW9kZSAoRGF0ZSBhbmQgTnVtZXJpYyBFbmQgYWxpZ25tZW50KSBhbmQgRm9ybSBtb2RlIChudW1lcmljIGFsaWduZWQgRW5kIGluIGVkaXQgYW5kIEJlZ2luIGluIGRpc3BsYXkpXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0dGV4dEFsaWduTW9kZToge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHRcdGRlZmF1bHRWYWx1ZTogXCJUYWJsZVwiLFxuXHRcdFx0XHRcdFx0YWxsb3dlZFZhbHVlczogW1wiVGFibGVcIiwgXCJGb3JtXCJdXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRkaXNwbGF5TW9kZToge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHRcdGFsbG93ZWRWYWx1ZXM6IFtcIlZhbHVlXCIsIFwiRGVzY3JpcHRpb25cIiwgXCJWYWx1ZURlc2NyaXB0aW9uXCIsIFwiRGVzY3JpcHRpb25WYWx1ZVwiXVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmllbGRNb2RlOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdFx0YWxsb3dlZFZhbHVlczogW1wibm93cmFwcGVyXCIsIFwiXCJdXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRtZWFzdXJlRGlzcGxheU1vZGU6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdFx0XHRhbGxvd2VkVmFsdWVzOiBbXCJIaWRkZW5cIiwgXCJSZWFkT25seVwiXVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0ICogTWF4aW11bSBudW1iZXIgb2YgbGluZXMgZm9yIG11bHRpbGluZSB0ZXh0cyBpbiBlZGl0IG1vZGVcblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHR0ZXh0TGluZXNFZGl0OiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcIm51bWJlclwiLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBNYXhpbXVtIG51bWJlciBvZiBsaW5lcyB0aGF0IG11bHRpbGluZSB0ZXh0cyBpbiBlZGl0IG1vZGUgY2FuIGdyb3cgdG9cblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHR0ZXh0TWF4TGluZXM6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwibnVtYmVyXCIsXG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWVcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0IGZpZWxkIHRoYXQgYXJlIHNob3duIGluaXRpYWxseS5cblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHR0ZXh0TWF4Q2hhcmFjdGVyc0Rpc3BsYXk6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwibnVtYmVyXCIsXG5cdFx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWVcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIERlZmluZXMgaG93IHRoZSBmdWxsIHRleHQgd2lsbCBiZSBkaXNwbGF5ZWQgLSBJblBsYWNlIG9yIFBvcG92ZXJcblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHR0ZXh0RXhwYW5kQmVoYXZpb3JEaXNwbGF5OiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdFx0YWxsb3dlZFZhbHVlczogW1wiSW5QbGFjZVwiLCBcIlBvcG92ZXJcIl1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIElmIHNldCB0byAndHJ1ZScsIFNBUCBGaW9yaSBlbGVtZW50cyBzaG93cyBhbiBlbXB0eSBpbmRpY2F0b3IgaW4gZGlzcGxheSBtb2RlIGZvciB0aGUgdGV4dCBhbmQgbGlua3Ncblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRzaG93RW1wdHlJbmRpY2F0b3I6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmYWxzZVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0ICogUHJlZmVycmVkIGNvbnRyb2wgaWYgYSBzZW1hbnRpY0tleSBpcyB1c2VkIChpZiB0aGUgc2VtYW50aWNLZXkgaXMgZW1wdHksIG5vIHNwZWNpZmljIHJ1bGVzIGFwcGx5KVxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdHNlbWFudGljS2V5U3R5bGU6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdFx0XHRkZWZhdWx0VmFsdWU6IFwiXCIsXG5cdFx0XHRcdFx0XHRhbGxvd2VkVmFsdWVzOiBbXCJPYmplY3RJZGVudGlmaWVyXCIsIFwiTGFiZWxcIiwgXCJcIl1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGhhc0RyYWZ0SW5kaWNhdG9yOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0XHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIElmIHRydWUgdGhlbiBzZXRzIHRoZSBnaXZlbiBpY29uIGluc3RlYWQgb2YgdGV4dCBpbiBBY3Rpb24vSUJOIEJ1dHRvblxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdHNob3dJY29uVXJsOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0XHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIElmIHRydWUgdGhlbiBuYXZpZ2F0aW9uYXZhaWxhYmxlIHByb3BlcnR5IHdpbGwgbm90IGJlIHVzZWQgZm9yIGVuYWJsZW1lbnQgb2YgSUJOIGJ1dHRvblxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdGlnbm9yZU5hdmlnYXRpb25BdmFpbGFibGU6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmYWxzZVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0aXNBbmFseXRpY3M6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmYWxzZVxuXHRcdFx0XHRcdH0sXG5cblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBFbmFibGVzIHRoZSBmYWxsYmFjayBmZWF0dXJlIGZvciB1c2FnZSB0aGUgdGV4dCBhbm5vdGF0aW9uIGZyb20gdGhlIHZhbHVlIGxpc3RzXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0cmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdDoge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0XHRcdFx0XHRkZWZhdWx0VmFsdWU6IGZhbHNlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjb21wYWN0U2VtYW50aWNLZXk6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmYWxzZVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmllbGRHcm91cERyYWZ0SW5kaWNhdG9yUHJvcGVydHlQYXRoOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmaWVsZEdyb3VwTmFtZToge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRldmVudHM6IHtcblx0XHRcdC8qKlxuXHRcdFx0ICogRXZlbnQgaGFuZGxlciBmb3IgY2hhbmdlIGV2ZW50XG5cdFx0XHQgKi9cblx0XHRcdG9uQ2hhbmdlOiB7XG5cdFx0XHRcdHR5cGU6IFwiZnVuY3Rpb25cIlxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0Z2V0T3ZlcnJpZGVzOiBmdW5jdGlvbiAobUNvbnRyb2xDb25maWd1cmF0aW9uOiBhbnksIHNJRDogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgb1Byb3BzOiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcblx0XHRpZiAobUNvbnRyb2xDb25maWd1cmF0aW9uKSB7XG5cdFx0XHRjb25zdCBvQ29udHJvbENvbmZpZyA9IG1Db250cm9sQ29uZmlndXJhdGlvbltzSURdO1xuXHRcdFx0aWYgKG9Db250cm9sQ29uZmlnKSB7XG5cdFx0XHRcdE9iamVjdC5rZXlzKG9Db250cm9sQ29uZmlnKS5mb3JFYWNoKGZ1bmN0aW9uIChzQ29uZmlnS2V5KSB7XG5cdFx0XHRcdFx0b1Byb3BzW3NDb25maWdLZXldID0gb0NvbnRyb2xDb25maWdbc0NvbmZpZ0tleV07XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb1Byb3BzO1xuXHR9LFxuXHRzZXRVcERhdGFQb2ludFR5cGU6IGZ1bmN0aW9uIChvRGF0YUZpZWxkOiBhbnkpIHtcblx0XHQvLyBkYXRhIHBvaW50IGFubm90YXRpb25zIG5lZWQgbm90IGhhdmUgJFR5cGUgZGVmaW5lZCwgc28gYWRkIGl0IGlmIG1pc3Npbmdcblx0XHRpZiAob0RhdGFGaWVsZD8udGVybSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikge1xuXHRcdFx0b0RhdGFGaWVsZC4kVHlwZSA9IG9EYXRhRmllbGQuJFR5cGUgfHwgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZTtcblx0XHR9XG5cdH0sXG5cdHNldFVwVmlzaWJsZVByb3BlcnRpZXM6IGZ1bmN0aW9uIChvRmllbGRQcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKSB7XG5cdFx0Ly8gd2UgZG8gdGhpcyBiZWZvcmUgZW5oYW5jaW5nIHRoZSBkYXRhTW9kZWxQYXRoIHNvIHRoYXQgaXQgc3RpbGwgcG9pbnRzIGF0IHRoZSBEYXRhRmllbGRcblx0XHRvRmllbGRQcm9wcy52aXNpYmxlID0gRmllbGRUZW1wbGF0aW5nLmdldFZpc2libGVFeHByZXNzaW9uKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgsIG9GaWVsZFByb3BzLmZvcm1hdE9wdGlvbnMpO1xuXHRcdG9GaWVsZFByb3BzLmRpc3BsYXlWaXNpYmxlID0gb0ZpZWxkUHJvcHMuZm9ybWF0T3B0aW9ucy5maWVsZE1vZGUgPT09IFwibm93cmFwcGVyXCIgPyBvRmllbGRQcm9wcy52aXNpYmxlIDogdW5kZWZpbmVkO1xuXHR9LFxuXHRzZXRVcFBhcmVudEVudGl0eVNldDogZnVuY3Rpb24gKG9GaWVsZFByb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIG1TZXR0aW5nczogYW55KSB7XG5cdFx0aWYgKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg/LmNvbnRleHRMb2NhdGlvbiAmJiBtU2V0dGluZ3M/Lm1vZGVscz8ubWV0YU1vZGVsKSB7XG5cdFx0XHRvRmllbGRQcm9wcy5wYXJlbnRFbnRpdHlTZXQgPSBtU2V0dGluZ3MubW9kZWxzLm1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcblx0XHRcdFx0YC8ke1xuXHRcdFx0XHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLnN0YXJ0aW5nRW50aXR5U2V0XG5cdFx0XHRcdFx0XHQ/IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWVcblx0XHRcdFx0XHRcdDogb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lXG5cdFx0XHRcdH1gXG5cdFx0XHQpO1xuXHRcdH1cblx0fSxcblx0Y3JlYXRlOiBmdW5jdGlvbiAodGhpczogRmllbGRUeXBlLCBvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0NvbnRyb2xDb25maWd1cmF0aW9uOiBhbnksIG1TZXR0aW5nczogYW55KSB7XG5cdFx0Y29uc3Qgb0RhdGFGaWVsZENvbnZlcnRlZCA9IE1ldGFNb2RlbENvbnZlcnRlci5jb252ZXJ0TWV0YU1vZGVsQ29udGV4dChvUHJvcHMuZGF0YUZpZWxkKTtcblx0XHRsZXQgb0RhdGFNb2RlbFBhdGggPSBNZXRhTW9kZWxDb252ZXJ0ZXIuZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9Qcm9wcy5kYXRhRmllbGQsIG9Qcm9wcy5lbnRpdHlTZXQpO1xuXHRcdHRoaXMuc2V0VXBEYXRhUG9pbnRUeXBlKG9EYXRhRmllbGRDb252ZXJ0ZWQpO1xuXHRcdHRoaXMuc2V0VXBWaXNpYmxlUHJvcGVydGllcyhvUHJvcHMsIG9EYXRhTW9kZWxQYXRoKTtcblx0XHR0aGlzLnNldFVwUGFyZW50RW50aXR5U2V0KG9Qcm9wcywgb0RhdGFNb2RlbFBhdGgsIG1TZXR0aW5ncyk7XG5cblx0XHRpZiAob1Byb3BzLl9mbGV4SWQpIHtcblx0XHRcdG9Qcm9wcy5fYXBpSWQgPSBvUHJvcHMuX2ZsZXhJZDtcblx0XHRcdG9Qcm9wcy5fZmxleElkID0gdGhpcy5nZXRDb250ZW50SWQob1Byb3BzLl9mbGV4SWQpO1xuXHRcdFx0b1Byb3BzLl92aEZsZXhJZCA9IGAke29Qcm9wcy5fZmxleElkfV8ke29Qcm9wcy52aElkUHJlZml4fWA7XG5cdFx0fVxuXG5cdFx0b0RhdGFNb2RlbFBhdGggPSB0aGlzLl9nZXRUYXJnZXRWYWx1ZURhdGFNb2RlbFBhdGgob0RhdGFGaWVsZENvbnZlcnRlZCwgb0RhdGFNb2RlbFBhdGgpO1xuXHRcdHRoaXMuc2V0VXBTZW1hbnRpY09iamVjdHMob1Byb3BzLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0b1Byb3BzLmRhdGFTb3VyY2VQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aChvRGF0YU1vZGVsUGF0aCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG1TZXR0aW5ncy5tb2RlbHMubWV0YU1vZGVsIHx8IG1TZXR0aW5ncy5tb2RlbHMuZW50aXR5U2V0O1xuXHRcdG9Qcm9wcy5lbnRpdHlUeXBlID0gb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChgLyR7b0RhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZS5mdWxseVF1YWxpZmllZE5hbWV9YCk7XG5cblx0XHR0aGlzLnNldFVwRWRpdGFibGVQcm9wZXJ0aWVzKG9Qcm9wcywgb0RhdGFGaWVsZENvbnZlcnRlZCwgb0RhdGFNb2RlbFBhdGgsIG9NZXRhTW9kZWwpO1xuXHRcdHRoaXMuc2V0VXBGb3JtYXRPcHRpb25zKG9Qcm9wcywgb0RhdGFNb2RlbFBhdGgsIG9Db250cm9sQ29uZmlndXJhdGlvbiwgbVNldHRpbmdzKTtcblx0XHR0aGlzLnNldFVwRGlzcGxheVN0eWxlKG9Qcm9wcywgb0RhdGFGaWVsZENvbnZlcnRlZCwgb0RhdGFNb2RlbFBhdGgpO1xuXHRcdHRoaXMuc2V0VXBFZGl0U3R5bGUob1Byb3BzLCBvRGF0YUZpZWxkQ29udmVydGVkLCBvRGF0YU1vZGVsUGF0aCk7XG5cblx0XHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNvbXB1dGUgYmluZGluZ3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdFx0Y29uc3QgYURpc3BsYXlTdHlsZXNXaXRob3V0UHJvcFRleHQgPSBbXCJBdmF0YXJcIiwgXCJBbW91bnRXaXRoQ3VycmVuY3lcIl07XG5cdFx0aWYgKG9Qcm9wcy5kaXNwbGF5U3R5bGUgJiYgYURpc3BsYXlTdHlsZXNXaXRob3V0UHJvcFRleHQuaW5kZXhPZihvUHJvcHMuZGlzcGxheVN0eWxlKSA9PT0gLTEgJiYgb0RhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0KSB7XG5cdFx0XHRvUHJvcHMudGV4dCA9IG9Qcm9wcy50ZXh0IHx8IEZpZWxkVGVtcGxhdGluZy5nZXRUZXh0QmluZGluZyhvRGF0YU1vZGVsUGF0aCwgb1Byb3BzLmZvcm1hdE9wdGlvbnMpO1xuXHRcdFx0dGhpcy5zZXRVcE9iamVjdElkZW50aWZpZXJUaXRsZUFuZFRleHQob1Byb3BzLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Qcm9wcy50ZXh0ID0gXCJcIjtcblx0XHR9XG5cblx0XHQvL1RPRE8gdGhpcyBpcyBmaXhlZCB0d2ljZVxuXHRcdC8vIGRhdGEgcG9pbnQgYW5ub3RhdGlvbnMgbmVlZCBub3QgaGF2ZSAkVHlwZSBkZWZpbmVkLCBzbyBhZGQgaXQgaWYgbWlzc2luZ1xuXHRcdGlmIChvUHJvcHMuZGF0YUZpZWxkLmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIpPy5pbmRleE9mKFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50XCIpID4gLTEpIHtcblx0XHRcdGNvbnN0IG9EYXRhUG9pbnQgPSBvUHJvcHMuZGF0YUZpZWxkLmdldE9iamVjdCgpO1xuXHRcdFx0b0RhdGFQb2ludC4kVHlwZSA9IG9EYXRhUG9pbnQuJFR5cGUgfHwgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZTtcblx0XHRcdG9Qcm9wcy5kYXRhRmllbGQgPSBuZXcgVGVtcGxhdGVNb2RlbChvRGF0YVBvaW50LCBvUHJvcHMuZGF0YUZpZWxkLmdldE1vZGVsKCkpLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblx0XHR9XG5cblx0XHRvUHJvcHMuZW1wdHlJbmRpY2F0b3JNb2RlID0gb1Byb3BzLmZvcm1hdE9wdGlvbnMuc2hvd0VtcHR5SW5kaWNhdG9yID8gXCJPblwiIDogdW5kZWZpbmVkO1xuXG5cdFx0cmV0dXJuIG9Qcm9wcztcblx0fSxcblxuXHRnZXRPYmplY3RJZGVudGlmaWVyVGl0bGU6IGZ1bmN0aW9uIChcblx0XHRmaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucyxcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoXG5cdCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGxldCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248YW55PiA9IHBhdGhJbk1vZGVsKFxuXHRcdFx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKVxuXHRcdCk7XG5cdFx0bGV0IHRhcmdldERpc3BsYXlNb2RlID0gZmllbGRGb3JtYXRPcHRpb25zPy5kaXNwbGF5TW9kZTtcblx0XHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID1cblx0XHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCJcblx0XHRcdFx0PyAob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCBhcyBQcm9wZXJ0eSlcblx0XHRcdFx0OiAob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpO1xuXHRcdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblxuXHRcdGNvbnN0IGNvbW1vblRleHQgPSBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5Db21tb24/LlRleHQ7XG5cdFx0aWYgKGNvbW1vblRleHQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Ly8gdGhlcmUgaXMgbm8gcHJvcGVydHkgZm9yIGRlc2NyaXB0aW9uXG5cdFx0XHR0YXJnZXREaXNwbGF5TW9kZSA9IFwiVmFsdWVcIjtcblx0XHR9XG5cdFx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cblx0XHRjb25zdCBwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyID0gW107XG5cblx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2gocGF0aEluTW9kZWwoXCJUX05FV19PQkpFQ1RcIiwgXCJzYXAuZmUuaTE4blwiKSk7XG5cdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKHBhdGhJbk1vZGVsKFwiVF9BTk5PVEFUSU9OX0hFTFBFUl9ERUZBVUxUX09CSkVDVF9QQUdFX0hFQURFUl9USVRMRV9OT19IRUFERVJfSU5GT1wiLCBcInNhcC5mZS5pMThuXCIpKTtcblxuXHRcdGlmIChcblx0XHRcdCEhKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5U2V0IGFzIEVudGl0eVNldCk/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Um9vdCB8fFxuXHRcdFx0ISEob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQgYXMgRW50aXR5U2V0KT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnROb2RlXG5cdFx0KSB7XG5cdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2goRW50aXR5Lkhhc0RyYWZ0KTtcblx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChFbnRpdHkuSXNBY3RpdmUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2goY29uc3RhbnQobnVsbCkpO1xuXHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKGNvbnN0YW50KG51bGwpKTtcblx0XHR9XG5cblx0XHRzd2l0Y2ggKHRhcmdldERpc3BsYXlNb2RlKSB7XG5cdFx0XHRjYXNlIFwiVmFsdWVcIjpcblx0XHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHRcdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2goY29uc3RhbnQobnVsbCkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2goZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KTtcblx0XHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKGNvbnN0YW50KG51bGwpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2gocHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cdFx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmIChjb21tb25UZXh0Py5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudCkge1xuXHRcdFx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChcblx0XHRcdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIGlmIERlc2NyaXB0aW9uVmFsdWUgaXMgc2V0IGJ5IGRlZmF1bHQgYW5kIG5vdCBieSBUZXh0QXJyYW5nZW1lbnRcblx0XHRcdFx0XHQvLyB3ZSBzaG93IGRlc2NyaXB0aW9uIGluIE9iamVjdElkZW50aWZpZXIgVGl0bGUgYW5kIHZhbHVlIGluIE9iamVjdElkZW50aWZpZXIgVGV4dFxuXHRcdFx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChcblx0XHRcdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0Ly8gaWYgRGVzY3JpcHRpb25WYWx1ZSBpcyBzZXQgYnkgZGVmYXVsdCBhbmQgcHJvcGVydHkgaGFzIGEgc2VtYW50aWMgb2JqZWN0XG5cdFx0XHRcdFx0Ly8gd2Ugc2hvdyBkZXNjcmlwdGlvbiBhbmQgdmFsdWUgaW4gT2JqZWN0SWRlbnRpZmllciBUaXRsZVxuXHRcdFx0XHRcdGlmIChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNPYmplY3QpIHtcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKGNvbnN0YW50KG51bGwpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihmb3JtYXRSZXN1bHQocGFyYW1ldGVyc0ZvckZvcm1hdHRlciBhcyBhbnksIHZhbHVlRm9ybWF0dGVycy5mb3JtYXRPUFRpdGxlKSk7XG5cdH0sXG5cblx0Z2V0T2JqZWN0SWRlbnRpZmllclRleHQ6IGZ1bmN0aW9uIChcblx0XHRmaWVsZEZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucyxcblx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoXG5cdCk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGxldCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248YW55PiA9IHBhdGhJbk1vZGVsKFxuXHRcdFx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKVxuXHRcdCk7XG5cdFx0Y29uc3QgdGFyZ2V0RGlzcGxheU1vZGUgPSBmaWVsZEZvcm1hdE9wdGlvbnM/LmRpc3BsYXlNb2RlO1xuXHRcdGNvbnN0IG9Qcm9wZXJ0eURlZmluaXRpb24gPVxuXHRcdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJQcm9wZXJ0eVBhdGhcIlxuXHRcdFx0XHQ/IChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC4kdGFyZ2V0IGFzIFByb3BlcnR5KVxuXHRcdFx0XHQ6IChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eSk7XG5cblx0XHRjb25zdCBjb21tb25UZXh0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRcdGlmIChjb21tb25UZXh0ID09PSB1bmRlZmluZWQgfHwgY29tbW9uVGV4dD8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblxuXHRcdHN3aXRjaCAodGFyZ2V0RGlzcGxheU1vZGUpIHtcblx0XHRcdGNhc2UgXCJWYWx1ZURlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KTtcblx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblZhbHVlXCI6XG5cdFx0XHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9LFxuXG5cdHNldFVwT2JqZWN0SWRlbnRpZmllclRpdGxlQW5kVGV4dChfb1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRpZiAoX29Qcm9wcy5mb3JtYXRPcHRpb25zPy5zZW1hbnRpY0tleVN0eWxlID09PSBcIk9iamVjdElkZW50aWZpZXJcIikge1xuXHRcdFx0X29Qcm9wcy5pZGVudGlmaWVyVGl0bGUgPSB0aGlzLmdldE9iamVjdElkZW50aWZpZXJUaXRsZShfb1Byb3BzLmZvcm1hdE9wdGlvbnMsIG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRcdFx0aWYgKCFvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNPYmplY3QpIHtcblx0XHRcdFx0X29Qcm9wcy5pZGVudGlmaWVyVGV4dCA9IHRoaXMuZ2V0T2JqZWN0SWRlbnRpZmllclRleHQoX29Qcm9wcy5mb3JtYXRPcHRpb25zLCBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdF9vUHJvcHMuaWRlbnRpZmllclRleHQgPSB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdF9vUHJvcHMuaWRlbnRpZmllclRpdGxlID0gdW5kZWZpbmVkO1xuXHRcdFx0X29Qcm9wcy5pZGVudGlmaWVyVGV4dCA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdH0sXG5cblx0Z2V0VGV4dFdpdGhXaGl0ZVNwYWNlOiBmdW5jdGlvbiAoZm9ybWF0T3B0aW9uczogRmllbGRGb3JtYXRPcHRpb25zLCBvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCkge1xuXHRcdGNvbnN0IHRleHQgPSBGaWVsZFRlbXBsYXRpbmcuZ2V0VGV4dEJpbmRpbmcob0RhdGFNb2RlbFBhdGgsIGZvcm1hdE9wdGlvbnMsIHRydWUpO1xuXHRcdHJldHVybiAodGV4dCBhcyBhbnkpLl90eXBlID09PSBcIlBhdGhJbk1vZGVsXCIgfHwgdHlwZW9mIHRleHQgPT09IFwic3RyaW5nXCJcblx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oZm9ybWF0UmVzdWx0KFt0ZXh0XSwgXCJXU1JcIikpXG5cdFx0XHQ6IGNvbXBpbGVFeHByZXNzaW9uKHRleHQpO1xuXHR9LFxuXG5cdF9nZXRUYXJnZXRWYWx1ZURhdGFNb2RlbFBhdGg6IGZ1bmN0aW9uIChvRGF0YUZpZWxkOiBhbnksIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdFx0aWYgKCFvRGF0YUZpZWxkPy4kVHlwZSkge1xuXHRcdFx0cmV0dXJuIG9EYXRhTW9kZWxQYXRoO1xuXHRcdH1cblx0XHRsZXQgc0V4dHJhUGF0aCA9IFwiXCI7XG5cdFx0bGV0IHRhcmdldFZhbHVlRGF0YU1vZGVsUGF0aCA9IG9EYXRhTW9kZWxQYXRoO1xuXG5cdFx0c3dpdGNoIChvRGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZDpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZTpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoQWN0aW9uOlxuXHRcdFx0XHRzRXh0cmFQYXRoID0gb0RhdGFGaWVsZC5WYWx1ZT8ucGF0aDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0KSB7XG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0b0RhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkIHx8XG5cdFx0XHRcdFx0XHRvRGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRzRXh0cmFQYXRoID0gb0RhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC5WYWx1ZT8ucGF0aDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c0V4dHJhUGF0aCA9IG9EYXRhRmllbGQuVGFyZ2V0Py5wYXRoO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKHNFeHRyYVBhdGg/Lmxlbmd0aCA+IDApIHtcblx0XHRcdHRhcmdldFZhbHVlRGF0YU1vZGVsUGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKG9EYXRhTW9kZWxQYXRoLCBzRXh0cmFQYXRoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRhcmdldFZhbHVlRGF0YU1vZGVsUGF0aDtcblx0fSxcblx0Ly8gYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgZmllbGQgZnJhZ21lbnQgdG8gdXNlIGluIGRpc3BsYXkgYW5kIHNldFVwIHNvbWUgcHJvcGVydGllc1xuXHRzZXRVcERpc3BsYXlTdHlsZTogZnVuY3Rpb24gKHRoaXM6IEZpZWxkVHlwZSwgb1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhRmllbGQ6IGFueSwgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiB2b2lkIHtcblx0XHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gb0RhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXHRcdGlmICghb0RhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0KSB7XG5cdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJUZXh0XCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChvUHJvcGVydHkudHlwZSA9PT0gXCJFZG0uU3RyZWFtXCIpIHtcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkZpbGVcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/LklzSW1hZ2VVUkwpIHtcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkF2YXRhclwiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjb25zdCBoYXNRdWlja1ZpZXdGYWNldHMgPSBvUHJvcGVydHkgPyBGaWVsZFRlbXBsYXRpbmcuaXNVc2VkSW5OYXZpZ2F0aW9uV2l0aFF1aWNrVmlld0ZhY2V0cyhvRGF0YU1vZGVsUGF0aCwgb1Byb3BlcnR5KSA6IGZhbHNlO1xuXG5cdFx0c3dpdGNoIChvRGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGU6XG5cdFx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkRhdGFQb2ludFwiO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdGlmIChvRGF0YUZpZWxkLlRhcmdldD8uJHRhcmdldD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGUpIHtcblx0XHRcdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJEYXRhUG9pbnRcIjtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0gZWxzZSBpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFR5cGVcIikge1xuXHRcdFx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkNvbnRhY3RcIjtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFjdGlvbjpcblx0XHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiQnV0dG9uXCI7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0XHR0aGlzLnNldFVwTmF2aWdhdGlvbkF2YWlsYWJsZShvUHJvcHMsIG9EYXRhRmllbGQpO1xuXHRcdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJCdXR0b25cIjtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoSW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0XHRvUHJvcHMudGV4dCA9IHRoaXMuZ2V0VGV4dFdpdGhXaGl0ZVNwYWNlKG9Qcm9wcy5mb3JtYXRPcHRpb25zLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0XHQvLyBmYWxscyB0aHJvdWdoXG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbjpcblx0XHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiTGlua1wiO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChpc1NlbWFudGljS2V5KG9Qcm9wZXJ0eSwgb0RhdGFNb2RlbFBhdGgpICYmIG9Qcm9wcy5mb3JtYXRPcHRpb25zLnNlbWFudGljS2V5U3R5bGUpIHtcblx0XHRcdG9Qcm9wcy5oYXNRdWlja1ZpZXdGYWNldHMgPSBoYXNRdWlja1ZpZXdGYWNldHM7XG5cdFx0XHRvUHJvcHMuaGFzU2l0dWF0aW9uc0luZGljYXRvciA9XG5cdFx0XHRcdFNpdHVhdGlvbnNJbmRpY2F0b3IuZ2V0U2l0dWF0aW9uc05hdmlnYXRpb25Qcm9wZXJ0eShvRGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlUeXBlKSAhPT0gdW5kZWZpbmVkO1xuXHRcdFx0dGhpcy5zZXRVcE9iamVjdElkZW50aWZpZXJUaXRsZUFuZFRleHQob1Byb3BzLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0XHRpZiAoKG9EYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQpPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3QpIHtcblx0XHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiU2VtYW50aWNLZXlXaXRoRHJhZnRJbmRpY2F0b3JcIjtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IG9Qcm9wcy5mb3JtYXRPcHRpb25zLnNlbWFudGljS2V5U3R5bGUgPT09IFwiT2JqZWN0SWRlbnRpZmllclwiID8gXCJPYmplY3RJZGVudGlmaWVyXCIgOiBcIkxhYmVsU2VtYW50aWNLZXlcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAob0RhdGFGaWVsZC5Dcml0aWNhbGl0eSkge1xuXHRcdFx0b1Byb3BzLmhhc1F1aWNrVmlld0ZhY2V0cyA9IGhhc1F1aWNrVmlld0ZhY2V0cztcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIk9iamVjdFN0YXR1c1wiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgJiYgU3RyaW5nKG9Qcm9wcy5mb3JtYXRPcHRpb25zLmlzQ3VycmVuY3lBbGlnbmVkKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdGlmIChvUHJvcHMuZm9ybWF0T3B0aW9ucy5tZWFzdXJlRGlzcGxheU1vZGUgPT09IFwiSGlkZGVuXCIpIHtcblx0XHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiVGV4dFwiO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRvUHJvcHMudmFsdWVBc1N0cmluZ0JpbmRpbmdFeHByZXNzaW9uID0gRmllbGRUZW1wbGF0aW5nLmdldFZhbHVlQmluZGluZyhcblx0XHRcdFx0b0RhdGFNb2RlbFBhdGgsXG5cdFx0XHRcdG9Qcm9wcy5mb3JtYXRPcHRpb25zLFxuXHRcdFx0XHR0cnVlLFxuXHRcdFx0XHR0cnVlLFxuXHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdHRydWVcblx0XHRcdCk7XG5cdFx0XHRvUHJvcHMudW5pdEJpbmRpbmdFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oVUlGb3JtYXR0ZXJzLmdldEJpbmRpbmdGb3JVbml0T3JDdXJyZW5jeShvRGF0YU1vZGVsUGF0aCkpO1xuXHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiQW1vdW50V2l0aEN1cnJlbmN5XCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzRW1haWxBZGRyZXNzIHx8IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbXVuaWNhdGlvbj8uSXNQaG9uZU51bWJlcikge1xuXHRcdFx0b1Byb3BzLnRleHQgPSB0aGlzLmdldFRleHRXaXRoV2hpdGVTcGFjZShvUHJvcHMuZm9ybWF0T3B0aW9ucywgb0RhdGFNb2RlbFBhdGgpO1xuXHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiTGlua1wiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5VST8uTXVsdGlMaW5lVGV4dCkge1xuXHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiRXhwYW5kYWJsZVRleHRcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoaGFzUXVpY2tWaWV3RmFjZXRzKSB7XG5cdFx0XHRvUHJvcHMudGV4dCA9IHRoaXMuZ2V0VGV4dFdpdGhXaGl0ZVNwYWNlKG9Qcm9wcy5mb3JtYXRPcHRpb25zLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0XHRvUHJvcHMuaGFzUXVpY2tWaWV3RmFjZXRzID0gdHJ1ZTtcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdG9Qcm9wcy5zZW1hbnRpY09iamVjdCAmJlxuXHRcdFx0IShvUHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcyB8fCBvUHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc1Bob25lTnVtYmVyKVxuXHRcdCkge1xuXHRcdFx0b1Byb3BzLmhhc1F1aWNrVmlld0ZhY2V0cyA9IGhhc1F1aWNrVmlld0ZhY2V0cztcblx0XHRcdG9Qcm9wcy50ZXh0ID0gdGhpcy5nZXRUZXh0V2l0aFdoaXRlU3BhY2Uob1Byb3BzLmZvcm1hdE9wdGlvbnMsIG9EYXRhTW9kZWxQYXRoKTtcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IF9vUHJvcGVydHlDb21tb25Bbm5vdGF0aW9ucyA9IG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uQ29tbW9uO1xuXHRcdGNvbnN0IF9vUHJvcGVydHlOYXZpZ2F0aW9uUHJvcGVydHlBbm5vdGF0aW9ucyA9IG9EYXRhTW9kZWxQYXRoPy5uYXZpZ2F0aW9uUHJvcGVydGllc1swXT8uYW5ub3RhdGlvbnM/LkNvbW1vbjtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBfb1Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMpIHtcblx0XHRcdGlmIChrZXkuaW5kZXhPZihcIlNlbWFudGljT2JqZWN0XCIpID09PSAwKSB7XG5cdFx0XHRcdG9Qcm9wcy5oYXNRdWlja1ZpZXdGYWNldHMgPSBoYXNRdWlja1ZpZXdGYWNldHM7XG5cdFx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkxpbmtXcmFwcGVyXCI7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gX29Qcm9wZXJ0eU5hdmlnYXRpb25Qcm9wZXJ0eUFubm90YXRpb25zKSB7XG5cdFx0XHRpZiAoa2V5LmluZGV4T2YoXCJTZW1hbnRpY09iamVjdFwiKSA9PT0gMCkge1xuXHRcdFx0XHRvUHJvcHMuaGFzUXVpY2tWaWV3RmFjZXRzID0gaGFzUXVpY2tWaWV3RmFjZXRzO1xuXHRcdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJMaW5rV3JhcHBlclwiO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKG9EYXRhRmllbGQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmwpIHtcblx0XHRcdG9Qcm9wcy50ZXh0ID0gdGhpcy5nZXRUZXh0V2l0aFdoaXRlU3BhY2Uob1Byb3BzLmZvcm1hdE9wdGlvbnMsIG9EYXRhTW9kZWxQYXRoKTtcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkxpbmtcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiVGV4dFwiO1xuXHR9LFxuXHQvLyBhbGdvcml0aG0gdG8gZGV0ZXJtaW5lIHRoZSBmaWVsZCBmcmFnbWVudCB0byB1c2UgaW4gZWRpdCBhbmQgc2V0IHVwIHNvbWUgcHJvcGVydGllc1xuXHRzZXRVcEVkaXRTdHlsZTogZnVuY3Rpb24gKHRoaXM6IEZpZWxkVHlwZSwgb1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhRmllbGQ6IGFueSwgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiB2b2lkIHtcblx0XHRGaWVsZFRlbXBsYXRpbmcuc2V0RWRpdFN0eWxlUHJvcGVydGllcyhvUHJvcHMsIG9EYXRhRmllbGQsIG9EYXRhTW9kZWxQYXRoKTtcblx0fSxcblx0c2V0VXBFZGl0YWJsZVByb3BlcnRpZXM6IGZ1bmN0aW9uIChcblx0XHRvUHJvcHM6IEZpZWxkUHJvcGVydGllcyxcblx0XHRvRGF0YUZpZWxkOiBhbnksXG5cdFx0b0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0b01ldGFNb2RlbDogYW55XG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IG9Qcm9wZXJ0eUZvckZpZWxkQ29udHJvbCA9IG9EYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3Q/LlZhbHVlXG5cdFx0XHQ/IG9EYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC5WYWx1ZVxuXHRcdFx0OiBvRGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0O1xuXHRcdGlmIChvUHJvcHMuZWRpdE1vZGUgIT09IHVuZGVmaW5lZCAmJiBvUHJvcHMuZWRpdE1vZGUgIT09IG51bGwpIHtcblx0XHRcdC8vIEV2ZW4gaWYgaXQgcHJvdmlkZWQgYXMgYSBzdHJpbmcgaXQncyBhIHZhbGlkIHBhcnQgb2YgYSBiaW5kaW5nIGV4cHJlc3Npb24gdGhhdCBjYW4gYmUgbGF0ZXIgY29tYmluZWQgaW50byBzb21ldGhpbmcgZWxzZS5cblx0XHRcdG9Qcm9wcy5lZGl0TW9kZUFzT2JqZWN0ID0gb1Byb3BzLmVkaXRNb2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBiTWVhc3VyZVJlYWRPbmx5ID0gb1Byb3BzLmZvcm1hdE9wdGlvbnMubWVhc3VyZURpc3BsYXlNb2RlXG5cdFx0XHRcdD8gb1Byb3BzLmZvcm1hdE9wdGlvbnMubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIlJlYWRPbmx5XCJcblx0XHRcdFx0OiBmYWxzZTtcblxuXHRcdFx0b1Byb3BzLmVkaXRNb2RlQXNPYmplY3QgPSBVSUZvcm1hdHRlcnMuZ2V0RWRpdE1vZGUoXG5cdFx0XHRcdG9Qcm9wZXJ0eUZvckZpZWxkQ29udHJvbCxcblx0XHRcdFx0b0RhdGFNb2RlbFBhdGgsXG5cdFx0XHRcdGJNZWFzdXJlUmVhZE9ubHksXG5cdFx0XHRcdHRydWUsXG5cdFx0XHRcdG9EYXRhRmllbGRcblx0XHRcdCk7XG5cdFx0XHRvUHJvcHMuZWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihvUHJvcHMuZWRpdE1vZGVBc09iamVjdCk7XG5cdFx0fVxuXHRcdGNvbnN0IGVkaXRhYmxlRXhwcmVzc2lvbiA9IFVJRm9ybWF0dGVycy5nZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdChvUHJvcGVydHlGb3JGaWVsZENvbnRyb2wsIG9EYXRhRmllbGQsIG9EYXRhTW9kZWxQYXRoKTtcblx0XHRjb25zdCBhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyA9IENvbW1vblV0aWxzLmdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMoXG5cdFx0XHRvUHJvcHMuZW50aXR5U2V0Py5nZXRQYXRoKCkucmVwbGFjZUFsbChcIi8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy9cIiwgXCIvXCIpLFxuXHRcdFx0b01ldGFNb2RlbFxuXHRcdCk7XG5cdFx0Y29uc3QgYVJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnMgPSBDb21tb25VdGlscy5nZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zKFxuXHRcdFx0b1Byb3BzLmVudGl0eVNldD8uZ2V0UGF0aCgpLnJlcGxhY2VBbGwoXCIvJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcvXCIsIFwiL1wiKSxcblx0XHRcdG9NZXRhTW9kZWxcblx0XHQpO1xuXHRcdGNvbnN0IG9SZXF1aXJlZFByb3BlcnRpZXMgPSB7XG5cdFx0XHRyZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zOiBhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyxcblx0XHRcdHJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnM6IGFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zXG5cdFx0fTtcblx0XHRpZiAoTW9kZWxIZWxwZXIuaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCkpIHtcblx0XHRcdG9Qcm9wcy5jb2xsYWJvcmF0aW9uRW5hYmxlZCA9IHRydWU7XG5cdFx0XHQvLyBFeHByZXNzaW9ucyBuZWVkZWQgZm9yIENvbGxhYm9yYXRpb24gVmlzdWFsaXphdGlvblxuXHRcdFx0Y29uc3QgY29sbGFib3JhdGlvbkV4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24oXG5cdFx0XHRcdG9EYXRhTW9kZWxQYXRoLFxuXHRcdFx0XHRDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5oYXNDb2xsYWJvcmF0aW9uQWN0aXZpdHlcblx0XHRcdCk7XG5cdFx0XHRvUHJvcHMuY29sbGFib3JhdGlvbkhhc0FjdGl2aXR5RXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGNvbGxhYm9yYXRpb25FeHByZXNzaW9uKTtcblx0XHRcdG9Qcm9wcy5jb2xsYWJvcmF0aW9uSW5pdGlhbHNFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFVJRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihvRGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5SW5pdGlhbHMpXG5cdFx0XHQpO1xuXHRcdFx0b1Byb3BzLmNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0VUlGb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKG9EYXRhTW9kZWxQYXRoLCBDb2xsYWJvcmF0aW9uRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uQWN0aXZpdHlDb2xvcilcblx0XHRcdCk7XG5cdFx0XHRvUHJvcHMuZWRpdGFibGVFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oYW5kKGVkaXRhYmxlRXhwcmVzc2lvbiwgbm90KGNvbGxhYm9yYXRpb25FeHByZXNzaW9uKSkpO1xuXG5cdFx0XHRvUHJvcHMuZWRpdE1vZGUgPSBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoY29sbGFib3JhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50KFwiUmVhZE9ubHlcIiksIG9Qcm9wcy5lZGl0TW9kZUFzT2JqZWN0KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Qcm9wcy5lZGl0YWJsZUV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihlZGl0YWJsZUV4cHJlc3Npb24pO1xuXHRcdH1cblx0XHRvUHJvcHMuZW5hYmxlZEV4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZ2V0RW5hYmxlZEV4cHJlc3Npb24oXG5cdFx0XHRvUHJvcGVydHlGb3JGaWVsZENvbnRyb2wsXG5cdFx0XHRvRGF0YUZpZWxkLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHRvRGF0YU1vZGVsUGF0aFxuXHRcdCkgYXMgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdFx0b1Byb3BzLnJlcXVpcmVkRXhwcmVzc2lvbiA9IFVJRm9ybWF0dGVycy5nZXRSZXF1aXJlZEV4cHJlc3Npb24oXG5cdFx0XHRvUHJvcGVydHlGb3JGaWVsZENvbnRyb2wsXG5cdFx0XHRvRGF0YUZpZWxkLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHRmYWxzZSxcblx0XHRcdG9SZXF1aXJlZFByb3BlcnRpZXMsXG5cdFx0XHRvRGF0YU1vZGVsUGF0aFxuXHRcdCkgYXMgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdH0sXG5cdHNldFVwRm9ybWF0T3B0aW9uczogZnVuY3Rpb24gKFxuXHRcdHRoaXM6IEZpZWxkVHlwZSxcblx0XHRvUHJvcHM6IEZpZWxkUHJvcGVydGllcyxcblx0XHRvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHRvQ29udHJvbENvbmZpZ3VyYXRpb246IGFueSxcblx0XHRtU2V0dGluZ3M6IGFueVxuXHQpIHtcblx0XHRjb25zdCBvT3ZlcnJpZGVQcm9wcyA9IHRoaXMuZ2V0T3ZlcnJpZGVzKG9Db250cm9sQ29uZmlndXJhdGlvbiwgb1Byb3BzLmRhdGFGaWVsZC5nZXRQYXRoKCkpO1xuXG5cdFx0aWYgKCFvUHJvcHMuZm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSkge1xuXHRcdFx0b1Byb3BzLmZvcm1hdE9wdGlvbnMuZGlzcGxheU1vZGUgPSBVSUZvcm1hdHRlcnMuZ2V0RGlzcGxheU1vZGUob0RhdGFNb2RlbFBhdGgpO1xuXHRcdH1cblx0XHRvUHJvcHMuZm9ybWF0T3B0aW9ucy50ZXh0TGluZXNFZGl0ID1cblx0XHRcdG9PdmVycmlkZVByb3BzLnRleHRMaW5lc0VkaXQgfHxcblx0XHRcdChvT3ZlcnJpZGVQcm9wcy5mb3JtYXRPcHRpb25zICYmIG9PdmVycmlkZVByb3BzLmZvcm1hdE9wdGlvbnMudGV4dExpbmVzRWRpdCkgfHxcblx0XHRcdG9Qcm9wcy5mb3JtYXRPcHRpb25zLnRleHRMaW5lc0VkaXQgfHxcblx0XHRcdDQ7XG5cdFx0b1Byb3BzLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzID1cblx0XHRcdG9PdmVycmlkZVByb3BzLnRleHRNYXhMaW5lcyB8fFxuXHRcdFx0KG9PdmVycmlkZVByb3BzLmZvcm1hdE9wdGlvbnMgJiYgb092ZXJyaWRlUHJvcHMuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXMpIHx8XG5cdFx0XHRvUHJvcHMuZm9ybWF0T3B0aW9ucy50ZXh0TWF4TGluZXM7XG5cblx0XHQvLyBSZXRyaWV2ZSB0ZXh0IGZyb20gdmFsdWUgbGlzdCBhcyBmYWxsYmFjayBmZWF0dXJlIGZvciBtaXNzaW5nIHRleHQgYW5ub3RhdGlvbiBvbiB0aGUgcHJvcGVydHlcblx0XHRpZiAobVNldHRpbmdzLm1vZGVscy52aWV3RGF0YT8uZ2V0UHJvcGVydHkoXCIvcmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdFwiKSkge1xuXHRcdFx0b1Byb3BzLmZvcm1hdE9wdGlvbnMucmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCA9IEZpZWxkVGVtcGxhdGluZy5pc1JldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3RFbmFibGVkKFxuXHRcdFx0XHRvRGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QsXG5cdFx0XHRcdG9Qcm9wcy5mb3JtYXRPcHRpb25zXG5cdFx0XHQpO1xuXHRcdFx0aWYgKG9Qcm9wcy5mb3JtYXRPcHRpb25zLnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QpIHtcblx0XHRcdFx0Ly8gQ29uc2lkZXIgVGV4dEFycmFuZ2VtZW50IGF0IEVudGl0eVR5cGUgb3RoZXJ3aXNlIHNldCBkZWZhdWx0IGRpc3BsYXkgZm9ybWF0ICdEZXNjcmlwdGlvblZhbHVlJ1xuXHRcdFx0XHRjb25zdCBoYXNFbnRpdHlUZXh0QXJyYW5nZW1lbnQgPSAhIW9EYXRhTW9kZWxQYXRoPy50YXJnZXRFbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uVUk/LlRleHRBcnJhbmdlbWVudDtcblx0XHRcdFx0b1Byb3BzLmZvcm1hdE9wdGlvbnMuZGlzcGxheU1vZGUgPSBoYXNFbnRpdHlUZXh0QXJyYW5nZW1lbnQgPyBvUHJvcHMuZm9ybWF0T3B0aW9ucy5kaXNwbGF5TW9kZSA6IFwiRGVzY3JpcHRpb25WYWx1ZVwiO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAob1Byb3BzLmZvcm1hdE9wdGlvbnMuZmllbGRNb2RlID09PSBcIm5vd3JhcHBlclwiICYmIG9Qcm9wcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdGlmIChvUHJvcHMuX2ZsZXhJZCkge1xuXHRcdFx0XHRvUHJvcHMubm9XcmFwcGVySWQgPSBvUHJvcHMuX2ZsZXhJZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9Qcm9wcy5ub1dyYXBwZXJJZCA9IG9Qcm9wcy5pZFByZWZpeCA/IGdlbmVyYXRlKFtvUHJvcHMuaWRQcmVmaXgsIFwiRmllbGQtY29udGVudFwiXSkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRzZXRVcFNlbWFudGljT2JqZWN0czogZnVuY3Rpb24gKG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IHZvaWQge1xuXHRcdGxldCBhU2VtT2JqRXhwclRvUmVzb2x2ZSA9IFtdO1xuXHRcdGFTZW1PYmpFeHByVG9SZXNvbHZlID0gRmllbGRUZW1wbGF0aW5nLmdldFNlbWFudGljT2JqZWN0RXhwcmVzc2lvblRvUmVzb2x2ZShvRGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0Py5hbm5vdGF0aW9ucz8uQ29tbW9uKTtcblxuXHRcdC8qKlxuXHRcdCAqIElmIHRoZSBmaWVsZCBidWlsZGluZyBibG9jayBoYXMgYSBiaW5kaW5nIGV4cHJlc3Npb24gaW4gdGhlIGN1c3RvbSBzZW1hbnRpYyBvYmplY3RzLFxuXHRcdCAqIGl0IGdldHMgc3RvcmVkIHRvIHRoZSBjdXN0b20gZGF0YSBvZiB0aGUgTGluayBpbiBMaW5rV2l0aFF1aWNrVmlld0Zvcm0uZnJhZ21lbnQueG1sXG5cdFx0ICogVGhpcyBpcyBuZWVkZWQgdG8gcmVzb2x2ZSB0aGUgbGluayBhdCBydW50aW1lLiBUaGUgUXVpY2tWaWV3TGlua0RlbGVnYXRlLmpzIHRoZW4gZ2V0cyB0aGUgcmVzb2x2ZWRcblx0XHQgKiBiaW5kaW5nIGV4cHJlc3Npb24gZnJvbSB0aGUgY3VzdG9tIGRhdGEuXG5cdFx0ICogQWxsIG90aGVyIGN1c3RvbSBzZW1hbnRpYyBvYmplY3RzIGFyZSBwcm9jZXNzZWQgaW4gRmllbGRIZWxwZXIuanM6Y29tcHV0ZUxpbmtQYXJhbWV0ZXJzXG5cdFx0ICovXG5cdFx0aWYgKCEhb1Byb3BzLnNlbWFudGljT2JqZWN0ICYmIHR5cGVvZiBvUHJvcHMuc2VtYW50aWNPYmplY3QgPT09IFwic3RyaW5nXCIgJiYgb1Byb3BzLnNlbWFudGljT2JqZWN0WzBdID09PSBcIntcIikge1xuXHRcdFx0YVNlbU9iakV4cHJUb1Jlc29sdmUucHVzaCh7XG5cdFx0XHRcdGtleTogb1Byb3BzLnNlbWFudGljT2JqZWN0LnN1YnN0cigxLCBvUHJvcHMuc2VtYW50aWNPYmplY3QubGVuZ3RoIC0gMiksXG5cdFx0XHRcdHZhbHVlOiBvUHJvcHMuc2VtYW50aWNPYmplY3Rcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRvUHJvcHMuc2VtYW50aWNPYmplY3RzID0gRmllbGRUZW1wbGF0aW5nLmdldFNlbWFudGljT2JqZWN0cyhhU2VtT2JqRXhwclRvUmVzb2x2ZSk7XG5cdFx0Ly8gVGhpcyBzZXRzIHVwIHRoZSBzZW1hbnRpYyBsaW5rcyBmb3VuZCBpbiB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0eSwgaWYgdGhlcmUgaXMgbm8gc2VtYW50aWMgbGlua3MgZGVmaW5lIGJlZm9yZS5cblx0XHRpZiAoIW9Qcm9wcy5zZW1hbnRpY09iamVjdCAmJiBvRGF0YU1vZGVsUGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRvRGF0YU1vZGVsUGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChuYXZQcm9wZXJ0eSkge1xuXHRcdFx0XHRpZiAobmF2UHJvcGVydHk/LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRcdFx0b1Byb3BzLnNlbWFudGljT2JqZWN0ID0gbmF2UHJvcGVydHkuYW5ub3RhdGlvbnMuQ29tbW9uLlNlbWFudGljT2JqZWN0O1xuXHRcdFx0XHRcdG9Qcm9wcy5oYXNTZW1hbnRpY09iamVjdE9uTmF2aWdhdGlvbiA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblx0c2V0VXBOYXZpZ2F0aW9uQXZhaWxhYmxlOiBmdW5jdGlvbiAob1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhRmllbGQ6IGFueSk6IHZvaWQge1xuXHRcdG9Qcm9wcy5uYXZpZ2F0aW9uQXZhaWxhYmxlID0gdHJ1ZTtcblx0XHRpZiAoXG5cdFx0XHRvRGF0YUZpZWxkPy4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uICYmXG5cdFx0XHRvRGF0YUZpZWxkLk5hdmlnYXRpb25BdmFpbGFibGUgIT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0U3RyaW5nKG9Qcm9wcy5mb3JtYXRPcHRpb25zLmlnbm9yZU5hdmlnYXRpb25BdmFpbGFibGUpICE9PSBcInRydWVcIlxuXHRcdCkge1xuXHRcdFx0b1Byb3BzLm5hdmlnYXRpb25BdmFpbGFibGUgPSBjb21waWxlRXhwcmVzc2lvbihnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0RhdGFGaWVsZC5OYXZpZ2F0aW9uQXZhaWxhYmxlKSk7XG5cdFx0fVxuXHR9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgRmllbGQgYXMgRmllbGRUeXBl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
761
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZCIsIk1hY3JvTWV0YWRhdGEiLCJleHRlbmQiLCJuYW1lIiwibmFtZXNwYWNlIiwiZnJhZ21lbnQiLCJtZXRhZGF0YSIsInN0ZXJlb3R5cGUiLCJkZXNpZ250aW1lIiwicHJvcGVydGllcyIsImlkUHJlZml4IiwidHlwZSIsIl9hcGlJZCIsIm5vV3JhcHBlcklkIiwidmhJZFByZWZpeCIsImRlZmF1bHRWYWx1ZSIsIl92aEZsZXhJZCIsImNvbXB1dGVkIiwiZW50aXR5U2V0IiwicmVxdWlyZWQiLCIka2luZCIsImVudGl0eVR5cGUiLCJwYXJlbnRFbnRpdHlTZXQiLCJuYXZpZ2F0ZUFmdGVyQWN0aW9uIiwiZGF0YUZpZWxkIiwiJFR5cGUiLCJzZW1hbnRpY09iamVjdHMiLCJlZGl0TW9kZSIsIndyYXAiLCJhcmlhTGFiZWxsZWRCeSIsInRleHRBbGlnbiIsImVkaXRhYmxlRXhwcmVzc2lvbiIsImVuYWJsZWRFeHByZXNzaW9uIiwiY29sbGFib3JhdGlvbkVuYWJsZWQiLCJjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uIiwiY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiIsImNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24iLCJzZW1hbnRpY09iamVjdCIsImhhc1NlbWFudGljT2JqZWN0T25OYXZpZ2F0aW9uIiwibGlua1VybCIsImZvcm1hdE9wdGlvbnMiLCJpc0N1cnJlbmN5QWxpZ25lZCIsImNvbnRhaW5zRXJyb3JWaXNpYmlsaXR5IiwidGV4dEFsaWduTW9kZSIsImFsbG93ZWRWYWx1ZXMiLCJkaXNwbGF5TW9kZSIsImZpZWxkTW9kZSIsIm1lYXN1cmVEaXNwbGF5TW9kZSIsInRleHRMaW5lc0VkaXQiLCJjb25maWd1cmFibGUiLCJ0ZXh0TWF4TGluZXMiLCJ0ZXh0TWF4Q2hhcmFjdGVyc0Rpc3BsYXkiLCJ0ZXh0RXhwYW5kQmVoYXZpb3JEaXNwbGF5Iiwic2hvd0VtcHR5SW5kaWNhdG9yIiwic2VtYW50aWNLZXlTdHlsZSIsImhhc0RyYWZ0SW5kaWNhdG9yIiwic2hvd0ljb25VcmwiLCJpZ25vcmVOYXZpZ2F0aW9uQXZhaWxhYmxlIiwiaXNBbmFseXRpY3MiLCJyZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0IiwiY29tcGFjdFNlbWFudGljS2V5IiwiZmllbGRHcm91cERyYWZ0SW5kaWNhdG9yUHJvcGVydHlQYXRoIiwiZmllbGRHcm91cE5hbWUiLCJldmVudHMiLCJvbkNoYW5nZSIsImdldE92ZXJyaWRlcyIsIm1Db250cm9sQ29uZmlndXJhdGlvbiIsInNJRCIsIm9Qcm9wcyIsIm9Db250cm9sQ29uZmlnIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzQ29uZmlnS2V5Iiwic2V0VXBEYXRhUG9pbnRUeXBlIiwib0RhdGFGaWVsZCIsInRlcm0iLCJzZXRVcFZpc2libGVQcm9wZXJ0aWVzIiwib0ZpZWxkUHJvcHMiLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwidmlzaWJsZSIsIkZpZWxkVGVtcGxhdGluZyIsImdldFZpc2libGVFeHByZXNzaW9uIiwiZGlzcGxheVZpc2libGUiLCJ1bmRlZmluZWQiLCJzZXRVcFBhcmVudEVudGl0eVNldCIsIm1TZXR0aW5ncyIsImNvbnRleHRMb2NhdGlvbiIsIm1vZGVscyIsIm1ldGFNb2RlbCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwic3RhcnRpbmdFbnRpdHlTZXQiLCJjcmVhdGUiLCJvQ29udHJvbENvbmZpZ3VyYXRpb24iLCJvRGF0YUZpZWxkQ29udmVydGVkIiwiTWV0YU1vZGVsQ29udmVydGVyIiwiY29udmVydE1ldGFNb2RlbENvbnRleHQiLCJvRGF0YU1vZGVsUGF0aCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsIl9mbGV4SWQiLCJnZXRDb250ZW50SWQiLCJfZ2V0VGFyZ2V0VmFsdWVEYXRhTW9kZWxQYXRoIiwic2V0VXBTZW1hbnRpY09iamVjdHMiLCJkYXRhU291cmNlUGF0aCIsImdldFRhcmdldE9iamVjdFBhdGgiLCJvTWV0YU1vZGVsIiwidGFyZ2V0RW50aXR5VHlwZSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsInNldFVwRWRpdGFibGVQcm9wZXJ0aWVzIiwic2V0VXBGb3JtYXRPcHRpb25zIiwic2V0VXBEaXNwbGF5U3R5bGUiLCJzZXRVcEVkaXRTdHlsZSIsImFEaXNwbGF5U3R5bGVzV2l0aG91dFByb3BUZXh0IiwiZGlzcGxheVN0eWxlIiwiaW5kZXhPZiIsInRhcmdldE9iamVjdCIsInRleHQiLCJnZXRUZXh0QmluZGluZyIsInNldFVwT2JqZWN0SWRlbnRpZmllclRpdGxlQW5kVGV4dCIsImdldE9iamVjdCIsIm9EYXRhUG9pbnQiLCJUZW1wbGF0ZU1vZGVsIiwiZ2V0TW9kZWwiLCJlbXB0eUluZGljYXRvck1vZGUiLCJnZXRPYmplY3RJZGVudGlmaWVyVGl0bGUiLCJmaWVsZEZvcm1hdE9wdGlvbnMiLCJwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uIiwicGF0aEluTW9kZWwiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwidGFyZ2V0RGlzcGxheU1vZGUiLCJvUHJvcGVydHlEZWZpbml0aW9uIiwiJHRhcmdldCIsIlVJRm9ybWF0dGVycyIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJjb21tb25UZXh0IiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJUZXh0IiwicmVsYXRpdmVMb2NhdGlvbiIsImdldFJlbGF0aXZlUGF0aHMiLCJwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyIiwicHVzaCIsInRhcmdldEVudGl0eVNldCIsIkRyYWZ0Um9vdCIsIkRyYWZ0Tm9kZSIsIkVudGl0eSIsIkhhc0RyYWZ0IiwiSXNBY3RpdmUiLCJjb25zdGFudCIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsIlVJIiwiVGV4dEFycmFuZ2VtZW50IiwiU2VtYW50aWNPYmplY3QiLCJjb21waWxlRXhwcmVzc2lvbiIsImZvcm1hdFJlc3VsdCIsInZhbHVlRm9ybWF0dGVycyIsImZvcm1hdE9QVGl0bGUiLCJnZXRPYmplY3RJZGVudGlmaWVyVGV4dCIsIl9vUHJvcHMiLCJpZGVudGlmaWVyVGl0bGUiLCJpZGVudGlmaWVyVGV4dCIsImdldFRleHRXaXRoV2hpdGVTcGFjZSIsIl90eXBlIiwic0V4dHJhUGF0aCIsInRhcmdldFZhbHVlRGF0YU1vZGVsUGF0aCIsIlZhbHVlIiwicGF0aCIsIlRhcmdldCIsImxlbmd0aCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwib1Byb3BlcnR5IiwiSXNJbWFnZVVSTCIsImhhc1F1aWNrVmlld0ZhY2V0cyIsImlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMiLCJzZXRVcE5hdmlnYXRpb25BdmFpbGFibGUiLCJpc1NlbWFudGljS2V5IiwiaGFzU2l0dWF0aW9uc0luZGljYXRvciIsIlNpdHVhdGlvbnNJbmRpY2F0b3IiLCJnZXRTaXR1YXRpb25zTmF2aWdhdGlvblByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJVcmwiLCJNZWFzdXJlcyIsIklTT0N1cnJlbmN5IiwiU3RyaW5nIiwidmFsdWVBc1N0cmluZ0JpbmRpbmdFeHByZXNzaW9uIiwiZ2V0VmFsdWVCaW5kaW5nIiwidW5pdEJpbmRpbmdFeHByZXNzaW9uIiwiZ2V0QmluZGluZ0ZvclVuaXRPckN1cnJlbmN5IiwiQ29tbXVuaWNhdGlvbiIsIklzRW1haWxBZGRyZXNzIiwiSXNQaG9uZU51bWJlciIsIk11bHRpTGluZVRleHQiLCJfb1Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMiLCJfb1Byb3BlcnR5TmF2aWdhdGlvblByb3BlcnR5QW5ub3RhdGlvbnMiLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsImtleSIsInNldEVkaXRTdHlsZVByb3BlcnRpZXMiLCJvUHJvcGVydHlGb3JGaWVsZENvbnRyb2wiLCJlZGl0TW9kZUFzT2JqZWN0IiwiYk1lYXN1cmVSZWFkT25seSIsImdldEVkaXRNb2RlIiwiZ2V0RWRpdGFibGVFeHByZXNzaW9uQXNPYmplY3QiLCJhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsIkNvbW1vblV0aWxzIiwiZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsImdldFBhdGgiLCJyZXBsYWNlQWxsIiwiYVJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnMiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zIiwib1JlcXVpcmVkUHJvcGVydGllcyIsInJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMiLCJyZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsImNvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24iLCJDb2xsYWJvcmF0aW9uRm9ybWF0dGVycyIsImhhc0NvbGxhYm9yYXRpb25BY3Rpdml0eSIsImdldENvbGxhYm9yYXRpb25BY3Rpdml0eUluaXRpYWxzIiwiZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IiLCJhbmQiLCJub3QiLCJpZkVsc2UiLCJnZXRFbmFibGVkRXhwcmVzc2lvbiIsInJlcXVpcmVkRXhwcmVzc2lvbiIsImdldFJlcXVpcmVkRXhwcmVzc2lvbiIsIm9PdmVycmlkZVByb3BzIiwiZ2V0RGlzcGxheU1vZGUiLCJ2aWV3RGF0YSIsImdldFByb3BlcnR5IiwiaXNSZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0RW5hYmxlZCIsImhhc0VudGl0eVRleHRBcnJhbmdlbWVudCIsImdlbmVyYXRlIiwiYVNlbU9iakV4cHJUb1Jlc29sdmUiLCJnZXRTZW1hbnRpY09iamVjdEV4cHJlc3Npb25Ub1Jlc29sdmUiLCJzdWJzdHIiLCJ2YWx1ZSIsImdldFNlbWFudGljT2JqZWN0cyIsIm5hdlByb3BlcnR5IiwibmF2aWdhdGlvbkF2YWlsYWJsZSIsIk5hdmlnYXRpb25BdmFpbGFibGUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpZWxkLm1ldGFkYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHsgU2VtYW50aWNPYmplY3QgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCAqIGFzIE1ldGFNb2RlbENvbnZlcnRlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCAqIGFzIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL0NvbGxhYm9yYXRpb25Gb3JtYXR0ZXJcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0QmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLFxuXHRDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbixcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRmb3JtYXRSZXN1bHQsXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0aWZFbHNlLFxuXHRub3QsXG5cdHBhdGhJbk1vZGVsXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBUZW1wbGF0ZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFNb2RlbE9iamVjdFBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQge1xuXHRlbmhhbmNlRGF0YU1vZGVsUGF0aCxcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9EYXRhTW9kZWxQYXRoSGVscGVyXCI7XG5pbXBvcnQgeyBpc1NlbWFudGljS2V5IH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRGlzcGxheU1vZGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCAqIGFzIFVJRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCAqIGFzIEZpZWxkVGVtcGxhdGluZyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZFRlbXBsYXRpbmdcIjtcbmltcG9ydCBNYWNyb01ldGFkYXRhIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvTWV0YWRhdGFcIjtcbmltcG9ydCBTaXR1YXRpb25zSW5kaWNhdG9yIGZyb20gXCJzYXAvZmUvbWFjcm9zL3NpdHVhdGlvbnMvU2l0dWF0aW9uc0luZGljYXRvci5mcmFnbWVudFwiO1xuXG50eXBlIERpc3BsYXlTdHlsZSA9XG5cdHwgXCJUZXh0XCJcblx0fCBcIkF2YXRhclwiXG5cdHwgXCJGaWxlXCJcblx0fCBcIkRhdGFQb2ludFwiXG5cdHwgXCJDb250YWN0XCJcblx0fCBcIkJ1dHRvblwiXG5cdHwgXCJMaW5rXCJcblx0fCBcIk9iamVjdFN0YXR1c1wiXG5cdHwgXCJBbW91bnRXaXRoQ3VycmVuY3lcIlxuXHR8IFwiU2VtYW50aWNLZXlXaXRoRHJhZnRJbmRpY2F0b3JcIlxuXHR8IFwiT2JqZWN0SWRlbnRpZmllclwiXG5cdHwgXCJMYWJlbFNlbWFudGljS2V5XCJcblx0fCBcIkxpbmtXaXRoUXVpY2tWaWV3Rm9ybVwiXG5cdHwgXCJMaW5rV3JhcHBlclwiXG5cdHwgXCJFeHBhbmRhYmxlVGV4dFwiO1xuXG50eXBlIEVkaXRTdHlsZSA9XG5cdHwgXCJJbnB1dFdpdGhWYWx1ZUhlbHBcIlxuXHR8IFwiVGV4dEFyZWFcIlxuXHR8IFwiRmlsZVwiXG5cdHwgXCJEYXRlUGlja2VyXCJcblx0fCBcIlRpbWVQaWNrZXJcIlxuXHR8IFwiRGF0ZVRpbWVQaWNrZXJcIlxuXHR8IFwiQ2hlY2tCb3hcIlxuXHR8IFwiSW5wdXRXaXRoVW5pdFwiXG5cdHwgXCJJbnB1dFwiXG5cdHwgXCJSYXRpbmdJbmRpY2F0b3JcIjtcblxudHlwZSBGaWVsZEZvcm1hdE9wdGlvbnMgPSBQYXJ0aWFsPHtcblx0Y29udGFpbnNFcnJvclZpc2liaWxpdHk6IHN0cmluZztcblx0ZGlzcGxheU1vZGU6IERpc3BsYXlNb2RlO1xuXHRmaWVsZE1vZGU6IHN0cmluZztcblx0aGFzRHJhZnRJbmRpY2F0b3I6IGJvb2xlYW47XG5cdGlzQW5hbHl0aWNzOiBib29sZWFuO1xuXHRpZ25vcmVOYXZpZ2F0aW9uQXZhaWxhYmxlOiBib29sZWFuO1xuXHRpc0N1cnJlbmN5QWxpZ25lZDogYm9vbGVhbjtcblx0bWVhc3VyZURpc3BsYXlNb2RlOiBzdHJpbmc7XG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IGJvb2xlYW47XG5cdHNlbWFudGlja2V5czogc3RyaW5nW107XG5cdHNlbWFudGljS2V5U3R5bGU6IHN0cmluZztcblx0c2hvd0VtcHR5SW5kaWNhdG9yOiBib29sZWFuO1xuXHRzaG93SWNvblVybDogYm9vbGVhbjtcblx0dGV4dEFsaWduTW9kZTogc3RyaW5nO1xuXHR0ZXh0TGluZXNFZGl0OiBzdHJpbmc7XG5cdHRleHRNYXhMaW5lczogc3RyaW5nO1xuXHRjb21wYWN0U2VtYW50aWNLZXk6IHN0cmluZztcblx0ZmllbGRHcm91cERyYWZ0SW5kaWNhdG9yUHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdGZpZWxkR3JvdXBOYW1lOiBzdHJpbmc7XG59PjtcblxuZXhwb3J0IHR5cGUgRmllbGRQcm9wZXJ0aWVzID0ge1xuXHRkYXRhRmllbGQ6IGFueTtcblx0ZWRpdE1vZGU/OiBhbnk7XG5cdGVudGl0eVNldDogYW55O1xuXHRlbnRpdHlUeXBlPzogYW55O1xuXHRwYXJlbnRFbnRpdHlTZXQ/OiBhbnk7XG5cdGZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucztcblx0aWRQcmVmaXg/OiBzdHJpbmc7XG5cdHNlbWFudGljT2JqZWN0Pzogc3RyaW5nIHwgU2VtYW50aWNPYmplY3Q7XG5cdHZoSWRQcmVmaXg/OiBzdHJpbmc7XG5cdF9hcGlJZD86IHN0cmluZztcblxuXHQvLyBjb21wdXRlZCBwcm9wZXJ0aWVzXG5cdGhhc1NpdHVhdGlvbnNJbmRpY2F0b3I6IGJvb2xlYW47XG5cdGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb24/OiBzdHJpbmc7XG5cdGNvbGxhYm9yYXRpb25FbmFibGVkPzogYm9vbGVhbjtcblx0Y29sbGFib3JhdGlvbkhhc0FjdGl2aXR5RXhwcmVzc2lvbj86IHN0cmluZztcblx0Y29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbj86IHN0cmluZztcblx0ZGF0YVNvdXJjZVBhdGg/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uQmluZGluZ0V4cHJlc3Npb24/OiBzdHJpbmc7XG5cdGRpc3BsYXlTdHlsZTogRGlzcGxheVN0eWxlO1xuXHRkaXNwbGF5VmlzaWJsZT86IHN0cmluZztcblx0ZWRpdGFibGVFeHByZXNzaW9uPzogc3RyaW5nO1xuXHRlZGl0TW9kZUFzT2JqZWN0PzogYW55O1xuXHRlZGl0U3R5bGU/OiBFZGl0U3R5bGUgfCBudWxsO1xuXHRlbmFibGVkRXhwcmVzc2lvbj86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRlbXB0eUluZGljYXRvck1vZGU/OiBcIk9uXCI7XG5cdGZpZWxkV3JhcHBlcklkPzogc3RyaW5nO1xuXHRoYXNRdWlja1ZpZXdGYWNldHM/OiBib29sZWFuO1xuXHRub1dyYXBwZXJJZD86IHN0cmluZztcblx0bmF2aWdhdGlvbkF2YWlsYWJsZT86IGJvb2xlYW4gfCBzdHJpbmc7XG5cdHJlcXVpcmVkRXhwcmVzc2lvbj86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRzaG93VGltZXpvbmU/OiBib29sZWFuO1xuXHRzZW1hbnRpY09iamVjdHM/OiBzdHJpbmc7XG5cdHRleHQ/OiBzdHJpbmcgfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRpZGVudGlmaWVyVGl0bGU/OiBzdHJpbmcgfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRpZGVudGlmaWVyVGV4dD86IHN0cmluZyB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHRleHRCaW5kaW5nRXhwcmVzc2lvbj86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHR1bml0QmluZGluZ0V4cHJlc3Npb24/OiBzdHJpbmc7XG5cdHVuaXRFZGl0YWJsZT86IHN0cmluZztcblx0dmFsdWVCaW5kaW5nRXhwcmVzc2lvbj86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHR2YWx1ZUFzU3RyaW5nQmluZGluZ0V4cHJlc3Npb24/OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0X2ZsZXhJZD86IHN0cmluZztcblx0X3ZoRmxleElkPzogc3RyaW5nO1xuXHR2aXNpYmxlPzogc3RyaW5nO1xuXHRoYXNTZW1hbnRpY09iamVjdE9uTmF2aWdhdGlvbj86IGJvb2xlYW47XG5cdGxpbmtVcmw6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xufTtcblxudHlwZSBGaWVsZFR5cGUgPSB7XG5cdG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzO1xuXHRnZXRDb250ZW50SWQ6IChzSUQ6IHN0cmluZykgPT4gc3RyaW5nO1xuXHRzZXRVcERpc3BsYXlTdHlsZTogKG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YUZpZWxkOiBhbnksIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKSA9PiB2b2lkO1xuXHRzZXRVcEVkaXRTdHlsZTogKG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YUZpZWxkOiBhbnksIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKSA9PiB2b2lkO1xuXHRnZXRPdmVycmlkZXM6IChtQ29udHJvbENvbmZpZ3VyYXRpb246IGFueSwgc0lEOiBzdHJpbmcpID0+IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfTtcblx0c2V0VXBFZGl0YWJsZVByb3BlcnRpZXM6IChvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0RhdGFGaWVsZDogYW55LCBvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCwgb01ldGFNb2RlbDogYW55KSA9PiB2b2lkO1xuXHRzZXRVcEZvcm1hdE9wdGlvbnM6IChvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIG9Db250cm9sQ29uZmlndXJhdGlvbjogYW55LCBtU2V0dGluZ3M6IGFueSkgPT4gdm9pZDtcblx0c2V0VXBTZW1hbnRpY09iamVjdHM6IChvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpID0+IHZvaWQ7XG5cdHNldFVwTmF2aWdhdGlvbkF2YWlsYWJsZTogKG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YUZpZWxkOiBhbnkpID0+IHZvaWQ7XG5cdHNldFVwRGF0YVBvaW50VHlwZTogKG9EYXRhRmllbGQ6IGFueSkgPT4gdm9pZDtcblx0X2dldFRhcmdldFZhbHVlRGF0YU1vZGVsUGF0aDogKG9EYXRhRmllbGQ6IGFueSwgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpID0+IERhdGFNb2RlbE9iamVjdFBhdGg7XG5cdGdldFRleHRXaXRoV2hpdGVTcGFjZTogKGZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucywgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpID0+IHN0cmluZztcblx0Z2V0T2JqZWN0SWRlbnRpZmllclRpdGxlOiAoXG5cdFx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnMsXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQpID0+IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGdldE9iamVjdElkZW50aWZpZXJUZXh0OiAoXG5cdFx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnMsXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQpID0+IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHNldFVwVmlzaWJsZVByb3BlcnRpZXMob1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogdm9pZDtcblx0c2V0VXBQYXJlbnRFbnRpdHlTZXQob1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLCBtU2V0dGluZ3M6IGFueSk6IHZvaWQ7XG5cdHNldFVwT2JqZWN0SWRlbnRpZmllclRpdGxlQW5kVGV4dChvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiB2b2lkO1xufTtcblxuLyoqXG4gKiBAY2xhc3NkZXNjXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWVsZCBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKiA8YnI+XG4gKiBVc3VhbGx5LCBhIERhdGFGaWVsZCBhbm5vdGF0aW9uIGlzIGV4cGVjdGVkXG4gKlxuICogVXNhZ2UgZXhhbXBsZTpcbiAqIDxwcmU+XG4gKiA8aW50ZXJuYWxNYWNybzpGaWVsZFxuICogICBpZFByZWZpeD1cIlNvbWVQcmVmaXhcIlxuICogICBjb250ZXh0UGF0aD1cIntlbnRpdHlTZXQ+fVwiXG4gKiAgIG1ldGFQYXRoPVwie2RhdGFGaWVsZD59XCJcbiAqIC8+XG4gKiA8L3ByZT5cbiAqIEBjbGFzcyBzYXAuZmUubWFjcm9zLmludGVybmFsLkZpZWxkXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHJpdmF0ZVxuICogQGV4cGVyaW1lbnRhbFxuICogQHNpbmNlIDEuOTQuMFxuICovXG5jb25zdCBGaWVsZCA9IE1hY3JvTWV0YWRhdGEuZXh0ZW5kKFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbC5GaWVsZFwiLCB7XG5cdC8qKlxuXHQgKiBOYW1lIG9mIHRoZSBtYWNybyBjb250cm9sLlxuXHQgKi9cblx0bmFtZTogXCJGaWVsZFwiLFxuXHQvKipcblx0ICogTmFtZXNwYWNlIG9mIHRoZSBtYWNybyBjb250cm9sXG5cdCAqL1xuXHRuYW1lc3BhY2U6IFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiLFxuXHQvKipcblx0ICogRnJhZ21lbnQgc291cmNlIG9mIHRoZSBtYWNybyAob3B0aW9uYWwpIC0gaWYgbm90IHNldCwgZnJhZ21lbnQgaXMgZ2VuZXJhdGVkIGZyb20gbmFtZXNwYWNlIGFuZCBuYW1lXG5cdCAqL1xuXHRmcmFnbWVudDogXCJzYXAuZmUubWFjcm9zLmludGVybmFsLkZpZWxkXCIsXG5cblx0LyoqXG5cdCAqIFRoZSBtZXRhZGF0YSBkZXNjcmliaW5nIHRoZSBtYWNybyBjb250cm9sLlxuXHQgKi9cblx0bWV0YWRhdGE6IHtcblx0XHQvKipcblx0XHQgKiBEZWZpbmUgbWFjcm8gc3RlcmVvdHlwZSBmb3IgZG9jdW1lbnRhdGlvblxuXHRcdCAqL1xuXHRcdHN0ZXJlb3R5cGU6IFwieG1sbWFjcm9cIixcblx0XHQvKipcblx0XHQgKiBMb2NhdGlvbiBvZiB0aGUgZGVzaWdudGltZSBpbmZvXG5cdFx0ICovXG5cdFx0ZGVzaWdudGltZTogXCJzYXAvZmUvbWFjcm9zL2ludGVybmFsL0ZpZWxkLmRlc2lnbnRpbWVcIixcblx0XHQvKipcblx0XHQgKiBQcm9wZXJ0aWVzLlxuXHRcdCAqL1xuXHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdC8qKlxuXHRcdFx0ICogUHJlZml4IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgSUQgb2YgdGhlIGZpZWxkXG5cdFx0XHQgKi9cblx0XHRcdGlkUHJlZml4OiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCJcblx0XHRcdH0sXG5cdFx0XHRfYXBpSWQ6IHtcblx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIlxuXHRcdFx0fSxcblx0XHRcdG5vV3JhcHBlcklkOiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCJcblx0XHRcdH0sXG5cdFx0XHQvKipcblx0XHRcdCAqIFByZWZpeCBhZGRlZCB0byB0aGUgZ2VuZXJhdGVkIElEIG9mIHRoZSB2YWx1ZSBoZWxwIHVzZWQgZm9yIHRoZSBmaWVsZFxuXHRcdFx0ICovXG5cdFx0XHR2aElkUHJlZml4OiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdGRlZmF1bHRWYWx1ZTogXCJGaWVsZFZhbHVlSGVscFwiXG5cdFx0XHR9LFxuXG5cdFx0XHRfdmhGbGV4SWQ6IHtcblx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0Y29tcHV0ZWQ6IHRydWVcblx0XHRcdH0sXG5cdFx0XHQvKipcblx0XHRcdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eSBzZXRcblx0XHRcdCAqL1xuXHRcdFx0ZW50aXR5U2V0OiB7XG5cdFx0XHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRcdFx0cmVxdWlyZWQ6IHRydWUsXG5cdFx0XHRcdCRraW5kOiBbXCJFbnRpdHlTZXRcIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCJdXG5cdFx0XHR9LFxuXG5cdFx0XHQvKipcblx0XHRcdCAqIE1ldGFkYXRhIHBhdGggdG8gdGhlIGVudGl0eSBzZXRcblx0XHRcdCAqL1xuXHRcdFx0ZW50aXR5VHlwZToge1xuXHRcdFx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0XHRcdHJlcXVpcmVkOiBmYWxzZSxcblx0XHRcdFx0Y29tcHV0ZWQ6IHRydWUsXG5cdFx0XHRcdCRraW5kOiBbXCJFbnRpdHlUeXBlXCJdXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBQYXJlbnQgZW50aXR5IHNldFxuXHRcdFx0ICovXG5cdFx0XHRwYXJlbnRFbnRpdHlTZXQ6IHtcblx0XHRcdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdFx0XHRyZXF1aXJlZDogZmFsc2UsXG5cdFx0XHRcdCRraW5kOiBbXCJFbnRpdHlTZXRcIiwgXCJOYXZpZ2F0aW9uUHJvcGVydHlcIiwgXCJFbnRpdHlUeXBlXCIsIFwiU2luZ2xldG9uXCJdXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBGbGFnIGluZGljYXRpbmcgd2hldGhlciBhY3Rpb24gd2lsbCBuYXZpZ2F0ZSBhZnRlciBleGVjdXRpb25cblx0XHRcdCAqL1xuXHRcdFx0bmF2aWdhdGVBZnRlckFjdGlvbjoge1xuXHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0ZGVmYXVsdFZhbHVlOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBNZXRhZGF0YSBwYXRoIHRvIHRoZSBkYXRhRmllbGQuXG5cdFx0XHQgKiBUaGlzIHByb3BlcnR5IGlzIHVzdWFsbHkgYSBtZXRhZGF0YUNvbnRleHQgcG9pbnRpbmcgdG8gYSBEYXRhRmllbGQgaGF2aW5nXG5cdFx0XHQgKiAkVHlwZSBvZiBEYXRhRmllbGQsIERhdGFGaWVsZFdpdGhVcmwsIERhdGFGaWVsZEZvckFubm90YXRpb24sIERhdGFGaWVsZEZvckFjdGlvbiwgRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uLCBEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgsIG9yIERhdGFQb2ludFR5cGUuXG5cdFx0XHQgKiBCdXQgaXQgY2FuIGFsc28gYmUgYSBQcm9wZXJ0eSB3aXRoICRraW5kPVwiUHJvcGVydHlcIlxuXHRcdFx0ICovXG5cdFx0XHRkYXRhRmllbGQ6IHtcblx0XHRcdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdFx0XHRyZXF1aXJlZDogdHJ1ZSxcblx0XHRcdFx0JGtpbmQ6IFtcIlByb3BlcnR5XCJdLFxuXHRcdFx0XHQkVHlwZTogW1xuXHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkXCIsXG5cdFx0XHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCIsXG5cdFx0XHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCIsXG5cdFx0XHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIixcblx0XHRcdFx0XHRcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiLFxuXHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEFjdGlvblwiLFxuXHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiLFxuXHRcdFx0XHRcdFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoXCIsXG5cdFx0XHRcdFx0XCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRUeXBlXCJcblx0XHRcdFx0XVxuXHRcdFx0fSxcblx0XHRcdC8qKlxuXHRcdFx0ICogQ29udGV4dCBwb2ludGluZyB0byBhbiBhcnJheSBvZiB0aGUgcHJvcGVydHkncyBzZW1hbnRpYyBvYmplY3RzXG5cdFx0XHQgKi9cblx0XHRcdHNlbWFudGljT2JqZWN0czoge1xuXHRcdFx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0XHRcdHJlcXVpcmVkOiBmYWxzZSxcblx0XHRcdFx0Y29tcHV0ZWQ6IHRydWVcblx0XHRcdH0sXG5cdFx0XHQvKipcblx0XHRcdCAqIEVkaXQgTW9kZSBvZiB0aGUgZmllbGQuXG5cdFx0XHQgKlxuXHRcdFx0ICogSWYgdGhlIGVkaXRNb2RlIGlzIHVuZGVmaW5lZCB0aGVuIHdlIGNvbXB1dGUgaXQgYmFzZWQgb24gdGhlIG1ldGFkYXRhXG5cdFx0XHQgKiBPdGhlcndpc2Ugd2UgdXNlIHRoZSB2YWx1ZSBwcm92aWRlZCBoZXJlLlxuXHRcdFx0ICovXG5cdFx0XHRlZGl0TW9kZToge1xuXHRcdFx0XHR0eXBlOiBcInNhcC51aS5tZGMuZW51bS5FZGl0TW9kZVwiXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBXcmFwIGZpZWxkXG5cdFx0XHQgKi9cblx0XHRcdHdyYXA6IHtcblx0XHRcdFx0dHlwZTogXCJib29sZWFuXCJcblx0XHRcdH0sXG5cdFx0XHQvKipcblx0XHRcdCAqIENTUyBjbGFzcyBmb3IgbWFyZ2luXG5cdFx0XHQgKi9cblx0XHRcdFwiY2xhc3NcIjoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0XHR9LFxuXHRcdFx0LyoqXG5cdFx0XHQgKiBQcm9wZXJ0eSBhZGRlZCB0byBhc3NvY2lhdGUgdGhlIGxhYmVsIHdpdGggdGhlIEZpZWxkXG5cdFx0XHQgKi9cblx0XHRcdGFyaWFMYWJlbGxlZEJ5OiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCJcblx0XHRcdH0sXG5cblx0XHRcdHRleHRBbGlnbjoge1xuXHRcdFx0XHR0eXBlOiBcInNhcC51aS5jb3JlLlRleHRBbGlnblwiXG5cdFx0XHR9LFxuXHRcdFx0ZWRpdGFibGVFeHByZXNzaW9uOiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdGNvbXB1dGVkOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0ZW5hYmxlZEV4cHJlc3Npb246IHtcblx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0Y29tcHV0ZWQ6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRjb2xsYWJvcmF0aW9uRW5hYmxlZDoge1xuXHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0Y29tcHV0ZWQ6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRjb2xsYWJvcmF0aW9uSGFzQWN0aXZpdHlFeHByZXNzaW9uOiB7XG5cdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdGNvbXB1dGVkOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0Y29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbjoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRjb21wdXRlZDogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdGNvbGxhYm9yYXRpb25Db2xvckV4cHJlc3Npb246IHtcblx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0Y29tcHV0ZWQ6IHRydWVcblx0XHRcdH0sXG5cdFx0XHQvKipcblx0XHRcdCAqIE9wdGlvbiB0byBhZGQgYSBzZW1hbnRpYyBvYmplY3QgdG8gYSBmaWVsZFxuXHRcdFx0ICovXG5cdFx0XHRzZW1hbnRpY09iamVjdDoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRyZXF1aXJlZDogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHRoYXNTZW1hbnRpY09iamVjdE9uTmF2aWdhdGlvbjoge1xuXHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0cmVxdWlyZWQ6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0bGlua1VybDoge1xuXHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRyZXF1aXJlZDogZmFsc2Vcblx0XHRcdH0sXG5cdFx0XHRmb3JtYXRPcHRpb25zOiB7XG5cdFx0XHRcdHR5cGU6IFwib2JqZWN0XCIsXG5cdFx0XHRcdHByb3BlcnRpZXM6IHtcblx0XHRcdFx0XHRpc0N1cnJlbmN5QWxpZ25lZDoge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0XHRcdFx0XHRkZWZhdWx0VmFsdWU6IGZhbHNlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBleHByZXNzaW9uIGZvciBPYmplY3RTdGF0dXMgdmlzaWJsZSBwcm9wZXJ0eVxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdGNvbnRhaW5zRXJyb3JWaXNpYmlsaXR5OiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBEZXNjcmliZSBob3cgdGhlIGFsaWdubWVudCB3b3JrcyBiZXR3ZWVuIFRhYmxlIG1vZGUgKERhdGUgYW5kIE51bWVyaWMgRW5kIGFsaWdubWVudCkgYW5kIEZvcm0gbW9kZSAobnVtZXJpYyBhbGlnbmVkIEVuZCBpbiBlZGl0IGFuZCBCZWdpbiBpbiBkaXNwbGF5KVxuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdHRleHRBbGlnbk1vZGU6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdFx0XHRkZWZhdWx0VmFsdWU6IFwiVGFibGVcIixcblx0XHRcdFx0XHRcdGFsbG93ZWRWYWx1ZXM6IFtcIlRhYmxlXCIsIFwiRm9ybVwiXVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZGlzcGxheU1vZGU6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCIsXG5cdFx0XHRcdFx0XHRhbGxvd2VkVmFsdWVzOiBbXCJWYWx1ZVwiLCBcIkRlc2NyaXB0aW9uXCIsIFwiVmFsdWVEZXNjcmlwdGlvblwiLCBcIkRlc2NyaXB0aW9uVmFsdWVcIl1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZpZWxkTW9kZToge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHRcdGFsbG93ZWRWYWx1ZXM6IFtcIm5vd3JhcHBlclwiLCBcIlwiXVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0bWVhc3VyZURpc3BsYXlNb2RlOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdFx0YWxsb3dlZFZhbHVlczogW1wiSGlkZGVuXCIsIFwiUmVhZE9ubHlcIl1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIE1heGltdW0gbnVtYmVyIG9mIGxpbmVzIGZvciBtdWx0aWxpbmUgdGV4dHMgaW4gZWRpdCBtb2RlXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0dGV4dExpbmVzRWRpdDoge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJudW1iZXJcIixcblx0XHRcdFx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0ICogTWF4aW11bSBudW1iZXIgb2YgbGluZXMgdGhhdCBtdWx0aWxpbmUgdGV4dHMgaW4gZWRpdCBtb2RlIGNhbiBncm93IHRvXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0dGV4dE1heExpbmVzOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcIm51bWJlclwiLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBNYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCBmaWVsZCB0aGF0IGFyZSBzaG93biBpbml0aWFsbHkuXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0dGV4dE1heENoYXJhY3RlcnNEaXNwbGF5OiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcIm51bWJlclwiLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBEZWZpbmVzIGhvdyB0aGUgZnVsbCB0ZXh0IHdpbGwgYmUgZGlzcGxheWVkIC0gSW5QbGFjZSBvciBQb3BvdmVyXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0dGV4dEV4cGFuZEJlaGF2aW9yRGlzcGxheToge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRcdFx0XHRcdGFsbG93ZWRWYWx1ZXM6IFtcIkluUGxhY2VcIiwgXCJQb3BvdmVyXCJdXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBJZiBzZXQgdG8gJ3RydWUnLCBTQVAgRmlvcmkgZWxlbWVudHMgc2hvd3MgYW4gZW1wdHkgaW5kaWNhdG9yIGluIGRpc3BsYXkgbW9kZSBmb3IgdGhlIHRleHQgYW5kIGxpbmtzXG5cdFx0XHRcdFx0ICovXG5cdFx0XHRcdFx0c2hvd0VtcHR5SW5kaWNhdG9yOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0XHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIFByZWZlcnJlZCBjb250cm9sIGlmIGEgc2VtYW50aWNLZXkgaXMgdXNlZCAoaWYgdGhlIHNlbWFudGljS2V5IGlzIGVtcHR5LCBubyBzcGVjaWZpYyBydWxlcyBhcHBseSlcblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRzZW1hbnRpY0tleVN0eWxlOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBcIlwiLFxuXHRcdFx0XHRcdFx0YWxsb3dlZFZhbHVlczogW1wiT2JqZWN0SWRlbnRpZmllclwiLCBcIkxhYmVsXCIsIFwiXCJdXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRoYXNEcmFmdEluZGljYXRvcjoge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0XHRcdFx0XHRkZWZhdWx0VmFsdWU6IGZhbHNlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBJZiB0cnVlIHRoZW4gc2V0cyB0aGUgZ2l2ZW4gaWNvbiBpbnN0ZWFkIG9mIHRleHQgaW4gQWN0aW9uL0lCTiBCdXR0b25cblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRzaG93SWNvblVybDoge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0XHRcdFx0XHRkZWZhdWx0VmFsdWU6IGZhbHNlXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBJZiB0cnVlIHRoZW4gbmF2aWdhdGlvbmF2YWlsYWJsZSBwcm9wZXJ0eSB3aWxsIG5vdCBiZSB1c2VkIGZvciBlbmFibGVtZW50IG9mIElCTiBidXR0b25cblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRpZ25vcmVOYXZpZ2F0aW9uQXZhaWxhYmxlOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0XHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGlzQW5hbHl0aWNzOiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0XHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0LyoqXG5cdFx0XHRcdFx0ICogRW5hYmxlcyB0aGUgZmFsbGJhY2sgZmVhdHVyZSBmb3IgdXNhZ2UgdGhlIHRleHQgYW5ub3RhdGlvbiBmcm9tIHRoZSB2YWx1ZSBsaXN0c1xuXHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdFx0XHRcdFx0ZGVmYXVsdFZhbHVlOiBmYWxzZVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Y29tcGFjdFNlbWFudGljS2V5OiB7XG5cdFx0XHRcdFx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRcdFx0XHRcdGRlZmF1bHRWYWx1ZTogZmFsc2Vcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZpZWxkR3JvdXBEcmFmdEluZGljYXRvclByb3BlcnR5UGF0aDoge1xuXHRcdFx0XHRcdFx0dHlwZTogXCJzdHJpbmdcIlxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmllbGRHcm91cE5hbWU6IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwic3RyaW5nXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0ZXZlbnRzOiB7XG5cdFx0XHQvKipcblx0XHRcdCAqIEV2ZW50IGhhbmRsZXIgZm9yIGNoYW5nZSBldmVudFxuXHRcdFx0ICovXG5cdFx0XHRvbkNoYW5nZToge1xuXHRcdFx0XHR0eXBlOiBcImZ1bmN0aW9uXCJcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGdldE92ZXJyaWRlczogZnVuY3Rpb24gKG1Db250cm9sQ29uZmlndXJhdGlvbjogYW55LCBzSUQ6IHN0cmluZykge1xuXHRcdGNvbnN0IG9Qcm9wczogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XG5cdFx0aWYgKG1Db250cm9sQ29uZmlndXJhdGlvbikge1xuXHRcdFx0Y29uc3Qgb0NvbnRyb2xDb25maWcgPSBtQ29udHJvbENvbmZpZ3VyYXRpb25bc0lEXTtcblx0XHRcdGlmIChvQ29udHJvbENvbmZpZykge1xuXHRcdFx0XHRPYmplY3Qua2V5cyhvQ29udHJvbENvbmZpZykuZm9yRWFjaChmdW5jdGlvbiAoc0NvbmZpZ0tleSkge1xuXHRcdFx0XHRcdG9Qcm9wc1tzQ29uZmlnS2V5XSA9IG9Db250cm9sQ29uZmlnW3NDb25maWdLZXldO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9Qcm9wcztcblx0fSxcblx0c2V0VXBEYXRhUG9pbnRUeXBlOiBmdW5jdGlvbiAob0RhdGFGaWVsZDogYW55KSB7XG5cdFx0Ly8gZGF0YSBwb2ludCBhbm5vdGF0aW9ucyBuZWVkIG5vdCBoYXZlICRUeXBlIGRlZmluZWQsIHNvIGFkZCBpdCBpZiBtaXNzaW5nXG5cdFx0aWYgKG9EYXRhRmllbGQ/LnRlcm0gPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YVBvaW50XCIpIHtcblx0XHRcdG9EYXRhRmllbGQuJFR5cGUgPSBvRGF0YUZpZWxkLiRUeXBlIHx8IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGU7XG5cdFx0fVxuXHR9LFxuXHRzZXRVcFZpc2libGVQcm9wZXJ0aWVzOiBmdW5jdGlvbiAob0ZpZWxkUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCkge1xuXHRcdC8vIHdlIGRvIHRoaXMgYmVmb3JlIGVuaGFuY2luZyB0aGUgZGF0YU1vZGVsUGF0aCBzbyB0aGF0IGl0IHN0aWxsIHBvaW50cyBhdCB0aGUgRGF0YUZpZWxkXG5cdFx0b0ZpZWxkUHJvcHMudmlzaWJsZSA9IEZpZWxkVGVtcGxhdGluZy5nZXRWaXNpYmxlRXhwcmVzc2lvbihvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLCBvRmllbGRQcm9wcy5mb3JtYXRPcHRpb25zKTtcblx0XHRvRmllbGRQcm9wcy5kaXNwbGF5VmlzaWJsZSA9IG9GaWVsZFByb3BzLmZvcm1hdE9wdGlvbnMuZmllbGRNb2RlID09PSBcIm5vd3JhcHBlclwiID8gb0ZpZWxkUHJvcHMudmlzaWJsZSA6IHVuZGVmaW5lZDtcblx0fSxcblx0c2V0VXBQYXJlbnRFbnRpdHlTZXQ6IGZ1bmN0aW9uIChvRmllbGRQcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLCBtU2V0dGluZ3M6IGFueSkge1xuXHRcdGlmIChvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoPy5jb250ZXh0TG9jYXRpb24gJiYgbVNldHRpbmdzPy5tb2RlbHM/Lm1ldGFNb2RlbCkge1xuXHRcdFx0b0ZpZWxkUHJvcHMucGFyZW50RW50aXR5U2V0ID0gbVNldHRpbmdzLm1vZGVscy5tZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXG5cdFx0XHRcdGAvJHtcblx0XHRcdFx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5zdGFydGluZ0VudGl0eVNldFxuXHRcdFx0XHRcdFx0PyBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi5zdGFydGluZ0VudGl0eVNldC5uYW1lXG5cdFx0XHRcdFx0XHQ6IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZVxuXHRcdFx0XHR9YFxuXHRcdFx0KTtcblx0XHR9XG5cdH0sXG5cdGNyZWF0ZTogZnVuY3Rpb24gKHRoaXM6IEZpZWxkVHlwZSwgb1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsIG9Db250cm9sQ29uZmlndXJhdGlvbjogYW55LCBtU2V0dGluZ3M6IGFueSkge1xuXHRcdGNvbnN0IG9EYXRhRmllbGRDb252ZXJ0ZWQgPSBNZXRhTW9kZWxDb252ZXJ0ZXIuY29udmVydE1ldGFNb2RlbENvbnRleHQob1Byb3BzLmRhdGFGaWVsZCk7XG5cdFx0bGV0IG9EYXRhTW9kZWxQYXRoID0gTWV0YU1vZGVsQ29udmVydGVyLmdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvUHJvcHMuZGF0YUZpZWxkLCBvUHJvcHMuZW50aXR5U2V0KTtcblx0XHR0aGlzLnNldFVwRGF0YVBvaW50VHlwZShvRGF0YUZpZWxkQ29udmVydGVkKTtcblx0XHR0aGlzLnNldFVwVmlzaWJsZVByb3BlcnRpZXMob1Byb3BzLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0dGhpcy5zZXRVcFBhcmVudEVudGl0eVNldChvUHJvcHMsIG9EYXRhTW9kZWxQYXRoLCBtU2V0dGluZ3MpO1xuXG5cdFx0aWYgKG9Qcm9wcy5fZmxleElkKSB7XG5cdFx0XHRvUHJvcHMuX2FwaUlkID0gb1Byb3BzLl9mbGV4SWQ7XG5cdFx0XHRvUHJvcHMuX2ZsZXhJZCA9IHRoaXMuZ2V0Q29udGVudElkKG9Qcm9wcy5fZmxleElkKTtcblx0XHRcdG9Qcm9wcy5fdmhGbGV4SWQgPSBgJHtvUHJvcHMuX2ZsZXhJZH1fJHtvUHJvcHMudmhJZFByZWZpeH1gO1xuXHRcdH1cblxuXHRcdG9EYXRhTW9kZWxQYXRoID0gdGhpcy5fZ2V0VGFyZ2V0VmFsdWVEYXRhTW9kZWxQYXRoKG9EYXRhRmllbGRDb252ZXJ0ZWQsIG9EYXRhTW9kZWxQYXRoKTtcblx0XHR0aGlzLnNldFVwU2VtYW50aWNPYmplY3RzKG9Qcm9wcywgb0RhdGFNb2RlbFBhdGgpO1xuXHRcdG9Qcm9wcy5kYXRhU291cmNlUGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgob0RhdGFNb2RlbFBhdGgpO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBtU2V0dGluZ3MubW9kZWxzLm1ldGFNb2RlbCB8fCBtU2V0dGluZ3MubW9kZWxzLmVudGl0eVNldDtcblx0XHRvUHJvcHMuZW50aXR5VHlwZSA9IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoYC8ke29EYXRhTW9kZWxQYXRoLnRhcmdldEVudGl0eVR5cGUuZnVsbHlRdWFsaWZpZWROYW1lfWApO1xuXG5cdFx0dGhpcy5zZXRVcEVkaXRhYmxlUHJvcGVydGllcyhvUHJvcHMsIG9EYXRhRmllbGRDb252ZXJ0ZWQsIG9EYXRhTW9kZWxQYXRoLCBvTWV0YU1vZGVsKTtcblx0XHR0aGlzLnNldFVwRm9ybWF0T3B0aW9ucyhvUHJvcHMsIG9EYXRhTW9kZWxQYXRoLCBvQ29udHJvbENvbmZpZ3VyYXRpb24sIG1TZXR0aW5ncyk7XG5cdFx0dGhpcy5zZXRVcERpc3BsYXlTdHlsZShvUHJvcHMsIG9EYXRhRmllbGRDb252ZXJ0ZWQsIG9EYXRhTW9kZWxQYXRoKTtcblx0XHR0aGlzLnNldFVwRWRpdFN0eWxlKG9Qcm9wcywgb0RhdGFGaWVsZENvbnZlcnRlZCwgb0RhdGFNb2RlbFBhdGgpO1xuXG5cdFx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjb21wdXRlIGJpbmRpbmdzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHRcdGNvbnN0IGFEaXNwbGF5U3R5bGVzV2l0aG91dFByb3BUZXh0ID0gW1wiQXZhdGFyXCIsIFwiQW1vdW50V2l0aEN1cnJlbmN5XCJdO1xuXHRcdGlmIChvUHJvcHMuZGlzcGxheVN0eWxlICYmIGFEaXNwbGF5U3R5bGVzV2l0aG91dFByb3BUZXh0LmluZGV4T2Yob1Byb3BzLmRpc3BsYXlTdHlsZSkgPT09IC0xICYmIG9EYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCkge1xuXHRcdFx0b1Byb3BzLnRleHQgPSBvUHJvcHMudGV4dCB8fCBGaWVsZFRlbXBsYXRpbmcuZ2V0VGV4dEJpbmRpbmcob0RhdGFNb2RlbFBhdGgsIG9Qcm9wcy5mb3JtYXRPcHRpb25zKTtcblx0XHRcdHRoaXMuc2V0VXBPYmplY3RJZGVudGlmaWVyVGl0bGVBbmRUZXh0KG9Qcm9wcywgb0RhdGFNb2RlbFBhdGgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUHJvcHMudGV4dCA9IFwiXCI7XG5cdFx0fVxuXG5cdFx0Ly9UT0RPIHRoaXMgaXMgZml4ZWQgdHdpY2Vcblx0XHQvLyBkYXRhIHBvaW50IGFubm90YXRpb25zIG5lZWQgbm90IGhhdmUgJFR5cGUgZGVmaW5lZCwgc28gYWRkIGl0IGlmIG1pc3Npbmdcblx0XHRpZiAob1Byb3BzLmRhdGFGaWVsZC5nZXRPYmplY3QoXCJAc2FwdWkubmFtZVwiKT8uaW5kZXhPZihcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFQb2ludFwiKSA+IC0xKSB7XG5cdFx0XHRjb25zdCBvRGF0YVBvaW50ID0gb1Byb3BzLmRhdGFGaWVsZC5nZXRPYmplY3QoKTtcblx0XHRcdG9EYXRhUG9pbnQuJFR5cGUgPSBvRGF0YVBvaW50LiRUeXBlIHx8IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGU7XG5cdFx0XHRvUHJvcHMuZGF0YUZpZWxkID0gbmV3IFRlbXBsYXRlTW9kZWwob0RhdGFQb2ludCwgb1Byb3BzLmRhdGFGaWVsZC5nZXRNb2RlbCgpKS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIik7XG5cdFx0fVxuXG5cdFx0b1Byb3BzLmVtcHR5SW5kaWNhdG9yTW9kZSA9IG9Qcm9wcy5mb3JtYXRPcHRpb25zLnNob3dFbXB0eUluZGljYXRvciA/IFwiT25cIiA6IHVuZGVmaW5lZDtcblxuXHRcdHJldHVybiBvUHJvcHM7XG5cdH0sXG5cblx0Z2V0T2JqZWN0SWRlbnRpZmllclRpdGxlOiBmdW5jdGlvbiAoXG5cdFx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnMsXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0XHRsZXQgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGFueT4gPSBwYXRoSW5Nb2RlbChcblx0XHRcdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aClcblx0XHQpO1xuXHRcdGxldCB0YXJnZXREaXNwbGF5TW9kZSA9IGZpZWxkRm9ybWF0T3B0aW9ucz8uZGlzcGxheU1vZGU7XG5cdFx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9XG5cdFx0XHRvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50eXBlID09PSBcIlByb3BlcnR5UGF0aFwiXG5cdFx0XHRcdD8gKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LiR0YXJnZXQgYXMgUHJvcGVydHkpXG5cdFx0XHRcdDogKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5KTtcblx0XHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ob1Byb3BlcnR5RGVmaW5pdGlvbiwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cblx0XHRjb25zdCBjb21tb25UZXh0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UZXh0O1xuXHRcdGlmIChjb21tb25UZXh0ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIHRoZXJlIGlzIG5vIHByb3BlcnR5IGZvciBkZXNjcmlwdGlvblxuXHRcdFx0dGFyZ2V0RGlzcGxheU1vZGUgPSBcIlZhbHVlXCI7XG5cdFx0fVxuXHRcdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgpO1xuXG5cdFx0Y29uc3QgcGFyYW1ldGVyc0ZvckZvcm1hdHRlciA9IFtdO1xuXG5cdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKHBhdGhJbk1vZGVsKFwiVF9ORVdfT0JKRUNUXCIsIFwic2FwLmZlLmkxOG5cIikpO1xuXHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChwYXRoSW5Nb2RlbChcIlRfQU5OT1RBVElPTl9IRUxQRVJfREVGQVVMVF9PQkpFQ1RfUEFHRV9IRUFERVJfVElUTEVfTk9fSEVBREVSX0lORk9cIiwgXCJzYXAuZmUuaTE4blwiKSk7XG5cblx0XHRpZiAoXG5cdFx0XHQhIShvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQpPy5hbm5vdGF0aW9ucz8uQ29tbW9uPy5EcmFmdFJvb3QgfHxcblx0XHRcdCEhKG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5U2V0IGFzIEVudGl0eVNldCk/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Tm9kZVxuXHRcdCkge1xuXHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKEVudGl0eS5IYXNEcmFmdCk7XG5cdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2goRW50aXR5LklzQWN0aXZlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKGNvbnN0YW50KG51bGwpKTtcblx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChjb25zdGFudChudWxsKSk7XG5cdFx0fVxuXG5cdFx0c3dpdGNoICh0YXJnZXREaXNwbGF5TW9kZSkge1xuXHRcdFx0Y2FzZSBcIlZhbHVlXCI6XG5cdFx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0XHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKGNvbnN0YW50KG51bGwpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cdFx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChjb25zdGFudChudWxsKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIlZhbHVlRGVzY3JpcHRpb25cIjpcblx0XHRcdFx0cGFyYW1ldGVyc0ZvckZvcm1hdHRlci5wdXNoKHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXHRcdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2goZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGNvbW1vblRleHQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRpZiAoY29tbW9uVGV4dD8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQpIHtcblx0XHRcdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2goXG5cdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBpZiBEZXNjcmlwdGlvblZhbHVlIGlzIHNldCBieSBkZWZhdWx0IGFuZCBub3QgYnkgVGV4dEFycmFuZ2VtZW50XG5cdFx0XHRcdFx0Ly8gd2Ugc2hvdyBkZXNjcmlwdGlvbiBpbiBPYmplY3RJZGVudGlmaWVyIFRpdGxlIGFuZCB2YWx1ZSBpbiBPYmplY3RJZGVudGlmaWVyIFRleHRcblx0XHRcdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2goXG5cdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oY29tbW9uVGV4dCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz5cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdC8vIGlmIERlc2NyaXB0aW9uVmFsdWUgaXMgc2V0IGJ5IGRlZmF1bHQgYW5kIHByb3BlcnR5IGhhcyBhIHNlbWFudGljIG9iamVjdFxuXHRcdFx0XHRcdC8vIHdlIHNob3cgZGVzY3JpcHRpb24gYW5kIHZhbHVlIGluIE9iamVjdElkZW50aWZpZXIgVGl0bGVcblx0XHRcdFx0XHRpZiAob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRcdFx0XHRwYXJhbWV0ZXJzRm9yRm9ybWF0dGVyLnB1c2gocHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIucHVzaChjb25zdGFudChudWxsKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oZm9ybWF0UmVzdWx0KHBhcmFtZXRlcnNGb3JGb3JtYXR0ZXIgYXMgYW55LCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0T1BUaXRsZSkpO1xuXHR9LFxuXG5cdGdldE9iamVjdElkZW50aWZpZXJUZXh0OiBmdW5jdGlvbiAoXG5cdFx0ZmllbGRGb3JtYXRPcHRpb25zOiBGaWVsZEZvcm1hdE9wdGlvbnMsXG5cdFx0b1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuXHQpOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0XHRsZXQgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGFueT4gPSBwYXRoSW5Nb2RlbChcblx0XHRcdGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aClcblx0XHQpO1xuXHRcdGNvbnN0IHRhcmdldERpc3BsYXlNb2RlID0gZmllbGRGb3JtYXRPcHRpb25zPy5kaXNwbGF5TW9kZTtcblx0XHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID1cblx0XHRcdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCJcblx0XHRcdFx0PyAob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuJHRhcmdldCBhcyBQcm9wZXJ0eSlcblx0XHRcdFx0OiAob1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpO1xuXG5cdFx0Y29uc3QgY29tbW9uVGV4dCA9IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uVGV4dDtcblx0XHRpZiAoY29tbW9uVGV4dCA9PT0gdW5kZWZpbmVkIHx8IGNvbW1vblRleHQ/LmFubm90YXRpb25zPy5VST8uVGV4dEFycmFuZ2VtZW50KSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24ob1Byb3BlcnR5RGVmaW5pdGlvbiwgcHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cblx0XHRzd2l0Y2ggKHRhcmdldERpc3BsYXlNb2RlKSB7XG5cdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UmVsYXRpdmVQYXRocyhvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihjb21tb25UZXh0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24ocHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbik7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fSxcblxuXHRzZXRVcE9iamVjdElkZW50aWZpZXJUaXRsZUFuZFRleHQoX29Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKSB7XG5cdFx0aWYgKF9vUHJvcHMuZm9ybWF0T3B0aW9ucz8uc2VtYW50aWNLZXlTdHlsZSA9PT0gXCJPYmplY3RJZGVudGlmaWVyXCIpIHtcblx0XHRcdF9vUHJvcHMuaWRlbnRpZmllclRpdGxlID0gdGhpcy5nZXRPYmplY3RJZGVudGlmaWVyVGl0bGUoX29Qcm9wcy5mb3JtYXRPcHRpb25zLCBvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRcdGlmICghb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5Db21tb24/LlNlbWFudGljT2JqZWN0KSB7XG5cdFx0XHRcdF9vUHJvcHMuaWRlbnRpZmllclRleHQgPSB0aGlzLmdldE9iamVjdElkZW50aWZpZXJUZXh0KF9vUHJvcHMuZm9ybWF0T3B0aW9ucywgb1Byb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRfb1Byb3BzLmlkZW50aWZpZXJUZXh0ID0gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRfb1Byb3BzLmlkZW50aWZpZXJUaXRsZSA9IHVuZGVmaW5lZDtcblx0XHRcdF9vUHJvcHMuaWRlbnRpZmllclRleHQgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9LFxuXG5cdGdldFRleHRXaXRoV2hpdGVTcGFjZTogZnVuY3Rpb24gKGZvcm1hdE9wdGlvbnM6IEZpZWxkRm9ybWF0T3B0aW9ucywgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRjb25zdCB0ZXh0ID0gRmllbGRUZW1wbGF0aW5nLmdldFRleHRCaW5kaW5nKG9EYXRhTW9kZWxQYXRoLCBmb3JtYXRPcHRpb25zLCB0cnVlKTtcblx0XHRyZXR1cm4gKHRleHQgYXMgYW55KS5fdHlwZSA9PT0gXCJQYXRoSW5Nb2RlbFwiIHx8IHR5cGVvZiB0ZXh0ID09PSBcInN0cmluZ1wiXG5cdFx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKGZvcm1hdFJlc3VsdChbdGV4dF0sIFwiV1NSXCIpKVxuXHRcdFx0OiBjb21waWxlRXhwcmVzc2lvbih0ZXh0KTtcblx0fSxcblxuXHRfZ2V0VGFyZ2V0VmFsdWVEYXRhTW9kZWxQYXRoOiBmdW5jdGlvbiAob0RhdGFGaWVsZDogYW55LCBvRGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IERhdGFNb2RlbE9iamVjdFBhdGgge1xuXHRcdGlmICghb0RhdGFGaWVsZD8uJFR5cGUpIHtcblx0XHRcdHJldHVybiBvRGF0YU1vZGVsUGF0aDtcblx0XHR9XG5cdFx0bGV0IHNFeHRyYVBhdGggPSBcIlwiO1xuXHRcdGxldCB0YXJnZXRWYWx1ZURhdGFNb2RlbFBhdGggPSBvRGF0YU1vZGVsUGF0aDtcblxuXHRcdHN3aXRjaCAob0RhdGFGaWVsZC4kVHlwZSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGQ6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFQb2ludFR5cGU6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aFVybDpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEFjdGlvbjpcblx0XHRcdFx0c0V4dHJhUGF0aCA9IG9EYXRhRmllbGQuVmFsdWU/LnBhdGg7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uOlxuXHRcdFx0XHRpZiAob0RhdGFGaWVsZC5UYXJnZXQuJHRhcmdldCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdG9EYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCB8fFxuXHRcdFx0XHRcdFx0b0RhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YVBvaW50VHlwZVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0c0V4dHJhUGF0aCA9IG9EYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuVmFsdWU/LnBhdGg7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNFeHRyYVBhdGggPSBvRGF0YUZpZWxkLlRhcmdldD8ucGF0aDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlmIChzRXh0cmFQYXRoPy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0YXJnZXRWYWx1ZURhdGFNb2RlbFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChvRGF0YU1vZGVsUGF0aCwgc0V4dHJhUGF0aCk7XG5cdFx0fVxuXHRcdHJldHVybiB0YXJnZXRWYWx1ZURhdGFNb2RlbFBhdGg7XG5cdH0sXG5cdC8vIGFsZ29yaXRobSB0byBkZXRlcm1pbmUgdGhlIGZpZWxkIGZyYWdtZW50IHRvIHVzZSBpbiBkaXNwbGF5IGFuZCBzZXRVcCBzb21lIHByb3BlcnRpZXNcblx0c2V0VXBEaXNwbGF5U3R5bGU6IGZ1bmN0aW9uICh0aGlzOiBGaWVsZFR5cGUsIG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YUZpZWxkOiBhbnksIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogdm9pZCB7XG5cdFx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IG9EYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCBhcyBQcm9wZXJ0eTtcblx0XHRpZiAoIW9EYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdCkge1xuXHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiVGV4dFwiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAob1Byb3BlcnR5LnR5cGUgPT09IFwiRWRtLlN0cmVhbVwiKSB7XG5cdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJGaWxlXCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChvUHJvcGVydHkuYW5ub3RhdGlvbnM/LlVJPy5Jc0ltYWdlVVJMKSB7XG5cdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJBdmF0YXJcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgaGFzUXVpY2tWaWV3RmFjZXRzID0gb1Byb3BlcnR5ID8gRmllbGRUZW1wbGF0aW5nLmlzVXNlZEluTmF2aWdhdGlvbldpdGhRdWlja1ZpZXdGYWNldHMob0RhdGFNb2RlbFBhdGgsIG9Qcm9wZXJ0eSkgOiBmYWxzZTtcblxuXHRcdHN3aXRjaCAob0RhdGFGaWVsZC4kVHlwZSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlOlxuXHRcdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJEYXRhUG9pbnRcIjtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uOlxuXHRcdFx0XHRpZiAob0RhdGFGaWVsZC5UYXJnZXQ/LiR0YXJnZXQ/LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlKSB7XG5cdFx0XHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiRGF0YVBvaW50XCI7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9IGVsc2UgaWYgKG9EYXRhRmllbGQuVGFyZ2V0Py4kdGFyZ2V0Py4kVHlwZSA9PT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tdW5pY2F0aW9uLnYxLkNvbnRhY3RUeXBlXCIpIHtcblx0XHRcdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJDb250YWN0XCI7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkJ1dHRvblwiO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdFx0dGhpcy5zZXRVcE5hdmlnYXRpb25BdmFpbGFibGUob1Byb3BzLCBvRGF0YUZpZWxkKTtcblx0XHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiQnV0dG9uXCI7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdFx0b1Byb3BzLnRleHQgPSB0aGlzLmdldFRleHRXaXRoV2hpdGVTcGFjZShvUHJvcHMuZm9ybWF0T3B0aW9ucywgb0RhdGFNb2RlbFBhdGgpO1xuXHRcdFx0Ly8gZmFsbHMgdGhyb3VnaFxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkxpbmtcIjtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoaXNTZW1hbnRpY0tleShvUHJvcGVydHksIG9EYXRhTW9kZWxQYXRoKSAmJiBvUHJvcHMuZm9ybWF0T3B0aW9ucy5zZW1hbnRpY0tleVN0eWxlKSB7XG5cdFx0XHRvUHJvcHMuaGFzUXVpY2tWaWV3RmFjZXRzID0gaGFzUXVpY2tWaWV3RmFjZXRzO1xuXHRcdFx0b1Byb3BzLmhhc1NpdHVhdGlvbnNJbmRpY2F0b3IgPVxuXHRcdFx0XHRTaXR1YXRpb25zSW5kaWNhdG9yLmdldFNpdHVhdGlvbnNOYXZpZ2F0aW9uUHJvcGVydHkob0RhdGFNb2RlbFBhdGgudGFyZ2V0RW50aXR5VHlwZSkgIT09IHVuZGVmaW5lZDtcblx0XHRcdHRoaXMuc2V0VXBPYmplY3RJZGVudGlmaWVyVGl0bGVBbmRUZXh0KG9Qcm9wcywgb0RhdGFNb2RlbFBhdGgpO1xuXHRcdFx0aWYgKChvRGF0YU1vZGVsUGF0aC50YXJnZXRFbnRpdHlTZXQgYXMgRW50aXR5U2V0KT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290KSB7XG5cdFx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIlNlbWFudGljS2V5V2l0aERyYWZ0SW5kaWNhdG9yXCI7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBvUHJvcHMuZm9ybWF0T3B0aW9ucy5zZW1hbnRpY0tleVN0eWxlID09PSBcIk9iamVjdElkZW50aWZpZXJcIiA/IFwiT2JqZWN0SWRlbnRpZmllclwiIDogXCJMYWJlbFNlbWFudGljS2V5XCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKG9EYXRhRmllbGQuQ3JpdGljYWxpdHkpIHtcblx0XHRcdG9Qcm9wcy5oYXNRdWlja1ZpZXdGYWNldHMgPSBoYXNRdWlja1ZpZXdGYWNldHM7XG5cdFx0XHRvUHJvcHMubGlua1VybCA9IG9EYXRhRmllbGQuVXJsID8gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9EYXRhRmllbGQuVXJsKSkgOiB1bmRlZmluZWQ7XG5cdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJPYmplY3RTdGF0dXNcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5ICYmIFN0cmluZyhvUHJvcHMuZm9ybWF0T3B0aW9ucy5pc0N1cnJlbmN5QWxpZ25lZCkgPT09IFwidHJ1ZVwiKSB7XG5cdFx0XHRpZiAob1Byb3BzLmZvcm1hdE9wdGlvbnMubWVhc3VyZURpc3BsYXlNb2RlID09PSBcIkhpZGRlblwiKSB7XG5cdFx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIlRleHRcIjtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0b1Byb3BzLnZhbHVlQXNTdHJpbmdCaW5kaW5nRXhwcmVzc2lvbiA9IEZpZWxkVGVtcGxhdGluZy5nZXRWYWx1ZUJpbmRpbmcoXG5cdFx0XHRcdG9EYXRhTW9kZWxQYXRoLFxuXHRcdFx0XHRvUHJvcHMuZm9ybWF0T3B0aW9ucyxcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdFx0b1Byb3BzLnVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFVJRm9ybWF0dGVycy5nZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kob0RhdGFNb2RlbFBhdGgpKTtcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkFtb3VudFdpdGhDdXJyZW5jeVwiO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAob1Byb3BlcnR5LmFubm90YXRpb25zPy5Db21tdW5pY2F0aW9uPy5Jc0VtYWlsQWRkcmVzcyB8fCBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW11bmljYXRpb24/LklzUGhvbmVOdW1iZXIpIHtcblx0XHRcdG9Qcm9wcy50ZXh0ID0gdGhpcy5nZXRUZXh0V2l0aFdoaXRlU3BhY2Uob1Byb3BzLmZvcm1hdE9wdGlvbnMsIG9EYXRhTW9kZWxQYXRoKTtcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkxpbmtcIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVUk/Lk11bHRpTGluZVRleHQpIHtcblx0XHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIkV4cGFuZGFibGVUZXh0XCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKGhhc1F1aWNrVmlld0ZhY2V0cykge1xuXHRcdFx0b1Byb3BzLnRleHQgPSB0aGlzLmdldFRleHRXaXRoV2hpdGVTcGFjZShvUHJvcHMuZm9ybWF0T3B0aW9ucywgb0RhdGFNb2RlbFBhdGgpO1xuXHRcdFx0b1Byb3BzLmhhc1F1aWNrVmlld0ZhY2V0cyA9IHRydWU7XG5cdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJMaW5rV2l0aFF1aWNrVmlld0Zvcm1cIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHRvUHJvcHMuc2VtYW50aWNPYmplY3QgJiZcblx0XHRcdCEob1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbXVuaWNhdGlvbj8uSXNFbWFpbEFkZHJlc3MgfHwgb1Byb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbXVuaWNhdGlvbj8uSXNQaG9uZU51bWJlcilcblx0XHQpIHtcblx0XHRcdG9Qcm9wcy5oYXNRdWlja1ZpZXdGYWNldHMgPSBoYXNRdWlja1ZpZXdGYWNldHM7XG5cdFx0XHRvUHJvcHMudGV4dCA9IHRoaXMuZ2V0VGV4dFdpdGhXaGl0ZVNwYWNlKG9Qcm9wcy5mb3JtYXRPcHRpb25zLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJMaW5rV2l0aFF1aWNrVmlld0Zvcm1cIjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBfb1Byb3BlcnR5Q29tbW9uQW5ub3RhdGlvbnMgPSBvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbjtcblx0XHRjb25zdCBfb1Byb3BlcnR5TmF2aWdhdGlvblByb3BlcnR5QW5ub3RhdGlvbnMgPSBvRGF0YU1vZGVsUGF0aD8ubmF2aWdhdGlvblByb3BlcnRpZXNbMF0/LmFubm90YXRpb25zPy5Db21tb247XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gX29Qcm9wZXJ0eUNvbW1vbkFubm90YXRpb25zKSB7XG5cdFx0XHRpZiAoa2V5LmluZGV4T2YoXCJTZW1hbnRpY09iamVjdFwiKSA9PT0gMCkge1xuXHRcdFx0XHRvUHJvcHMuaGFzUXVpY2tWaWV3RmFjZXRzID0gaGFzUXVpY2tWaWV3RmFjZXRzO1xuXHRcdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJMaW5rV3JhcHBlclwiO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGZvciAoY29uc3Qga2V5IGluIF9vUHJvcGVydHlOYXZpZ2F0aW9uUHJvcGVydHlBbm5vdGF0aW9ucykge1xuXHRcdFx0aWYgKGtleS5pbmRleE9mKFwiU2VtYW50aWNPYmplY3RcIikgPT09IDApIHtcblx0XHRcdFx0b1Byb3BzLmhhc1F1aWNrVmlld0ZhY2V0cyA9IGhhc1F1aWNrVmlld0ZhY2V0cztcblx0XHRcdFx0b1Byb3BzLmRpc3BsYXlTdHlsZSA9IFwiTGlua1dyYXBwZXJcIjtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvRGF0YUZpZWxkLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoVXJsKSB7XG5cdFx0XHRvUHJvcHMudGV4dCA9IHRoaXMuZ2V0VGV4dFdpdGhXaGl0ZVNwYWNlKG9Qcm9wcy5mb3JtYXRPcHRpb25zLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0XHRvUHJvcHMuZGlzcGxheVN0eWxlID0gXCJMaW5rXCI7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdG9Qcm9wcy5kaXNwbGF5U3R5bGUgPSBcIlRleHRcIjtcblx0fSxcblx0Ly8gYWxnb3JpdGhtIHRvIGRldGVybWluZSB0aGUgZmllbGQgZnJhZ21lbnQgdG8gdXNlIGluIGVkaXQgYW5kIHNldCB1cCBzb21lIHByb3BlcnRpZXNcblx0c2V0VXBFZGl0U3R5bGU6IGZ1bmN0aW9uICh0aGlzOiBGaWVsZFR5cGUsIG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YUZpZWxkOiBhbnksIG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogdm9pZCB7XG5cdFx0RmllbGRUZW1wbGF0aW5nLnNldEVkaXRTdHlsZVByb3BlcnRpZXMob1Byb3BzLCBvRGF0YUZpZWxkLCBvRGF0YU1vZGVsUGF0aCk7XG5cdH0sXG5cdHNldFVwRWRpdGFibGVQcm9wZXJ0aWVzOiBmdW5jdGlvbiAoXG5cdFx0b1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsXG5cdFx0b0RhdGFGaWVsZDogYW55LFxuXHRcdG9EYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdG9NZXRhTW9kZWw6IGFueVxuXHQpOiB2b2lkIHtcblx0XHRjb25zdCBvUHJvcGVydHlGb3JGaWVsZENvbnRyb2wgPSBvRGF0YU1vZGVsUGF0aD8udGFyZ2V0T2JqZWN0Py5WYWx1ZVxuXHRcdFx0PyBvRGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QuVmFsdWVcblx0XHRcdDogb0RhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdDtcblx0XHRpZiAob1Byb3BzLmVkaXRNb2RlICE9PSB1bmRlZmluZWQgJiYgb1Byb3BzLmVkaXRNb2RlICE9PSBudWxsKSB7XG5cdFx0XHQvLyBFdmVuIGlmIGl0IHByb3ZpZGVkIGFzIGEgc3RyaW5nIGl0J3MgYSB2YWxpZCBwYXJ0IG9mIGEgYmluZGluZyBleHByZXNzaW9uIHRoYXQgY2FuIGJlIGxhdGVyIGNvbWJpbmVkIGludG8gc29tZXRoaW5nIGVsc2UuXG5cdFx0XHRvUHJvcHMuZWRpdE1vZGVBc09iamVjdCA9IG9Qcm9wcy5lZGl0TW9kZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYk1lYXN1cmVSZWFkT25seSA9IG9Qcm9wcy5mb3JtYXRPcHRpb25zLm1lYXN1cmVEaXNwbGF5TW9kZVxuXHRcdFx0XHQ/IG9Qcm9wcy5mb3JtYXRPcHRpb25zLm1lYXN1cmVEaXNwbGF5TW9kZSA9PT0gXCJSZWFkT25seVwiXG5cdFx0XHRcdDogZmFsc2U7XG5cblx0XHRcdG9Qcm9wcy5lZGl0TW9kZUFzT2JqZWN0ID0gVUlGb3JtYXR0ZXJzLmdldEVkaXRNb2RlKFxuXHRcdFx0XHRvUHJvcGVydHlGb3JGaWVsZENvbnRyb2wsXG5cdFx0XHRcdG9EYXRhTW9kZWxQYXRoLFxuXHRcdFx0XHRiTWVhc3VyZVJlYWRPbmx5LFxuXHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRvRGF0YUZpZWxkXG5cdFx0XHQpO1xuXHRcdFx0b1Byb3BzLmVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24ob1Byb3BzLmVkaXRNb2RlQXNPYmplY3QpO1xuXHRcdH1cblx0XHRjb25zdCBlZGl0YWJsZUV4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZ2V0RWRpdGFibGVFeHByZXNzaW9uQXNPYmplY3Qob1Byb3BlcnR5Rm9yRmllbGRDb250cm9sLCBvRGF0YUZpZWxkLCBvRGF0YU1vZGVsUGF0aCk7XG5cdFx0Y29uc3QgYVJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMgPSBDb21tb25VdGlscy5nZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zKFxuXHRcdFx0b1Byb3BzLmVudGl0eVNldD8uZ2V0UGF0aCgpLnJlcGxhY2VBbGwoXCIvJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcvXCIsIFwiL1wiKSxcblx0XHRcdG9NZXRhTW9kZWxcblx0XHQpO1xuXHRcdGNvbnN0IGFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zID0gQ29tbW9uVXRpbHMuZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyhcblx0XHRcdG9Qcm9wcy5lbnRpdHlTZXQ/LmdldFBhdGgoKS5yZXBsYWNlQWxsKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nL1wiLCBcIi9cIiksXG5cdFx0XHRvTWV0YU1vZGVsXG5cdFx0KTtcblx0XHRjb25zdCBvUmVxdWlyZWRQcm9wZXJ0aWVzID0ge1xuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9uczogYVJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMsXG5cdFx0XHRyZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zOiBhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9uc1xuXHRcdH07XG5cdFx0aWYgKE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG9NZXRhTW9kZWwpKSB7XG5cdFx0XHRvUHJvcHMuY29sbGFib3JhdGlvbkVuYWJsZWQgPSB0cnVlO1xuXHRcdFx0Ly8gRXhwcmVzc2lvbnMgbmVlZGVkIGZvciBDb2xsYWJvcmF0aW9uIFZpc3VhbGl6YXRpb25cblx0XHRcdGNvbnN0IGNvbGxhYm9yYXRpb25FeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uKFxuXHRcdFx0XHRvRGF0YU1vZGVsUGF0aCxcblx0XHRcdFx0Q29sbGFib3JhdGlvbkZvcm1hdHRlcnMuaGFzQ29sbGFib3JhdGlvbkFjdGl2aXR5XG5cdFx0XHQpO1xuXHRcdFx0b1Byb3BzLmNvbGxhYm9yYXRpb25IYXNBY3Rpdml0eUV4cHJlc3Npb24gPSBjb21waWxlRXhwcmVzc2lvbihjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbik7XG5cdFx0XHRvUHJvcHMuY29sbGFib3JhdGlvbkluaXRpYWxzRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRVSUZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkV4cHJlc3Npb24ob0RhdGFNb2RlbFBhdGgsIENvbGxhYm9yYXRpb25Gb3JtYXR0ZXJzLmdldENvbGxhYm9yYXRpb25BY3Rpdml0eUluaXRpYWxzKVxuXHRcdFx0KTtcblx0XHRcdG9Qcm9wcy5jb2xsYWJvcmF0aW9uQ29sb3JFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFVJRm9ybWF0dGVycy5nZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbihvRGF0YU1vZGVsUGF0aCwgQ29sbGFib3JhdGlvbkZvcm1hdHRlcnMuZ2V0Q29sbGFib3JhdGlvbkFjdGl2aXR5Q29sb3IpXG5cdFx0XHQpO1xuXHRcdFx0b1Byb3BzLmVkaXRhYmxlRXhwcmVzc2lvbiA9IGNvbXBpbGVFeHByZXNzaW9uKGFuZChlZGl0YWJsZUV4cHJlc3Npb24sIG5vdChjb2xsYWJvcmF0aW9uRXhwcmVzc2lvbikpKTtcblxuXHRcdFx0b1Byb3BzLmVkaXRNb2RlID0gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGNvbGxhYm9yYXRpb25FeHByZXNzaW9uLCBjb25zdGFudChcIlJlYWRPbmx5XCIpLCBvUHJvcHMuZWRpdE1vZGVBc09iamVjdCkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvUHJvcHMuZWRpdGFibGVFeHByZXNzaW9uID0gY29tcGlsZUV4cHJlc3Npb24oZWRpdGFibGVFeHByZXNzaW9uKTtcblx0XHR9XG5cdFx0b1Byb3BzLmVuYWJsZWRFeHByZXNzaW9uID0gVUlGb3JtYXR0ZXJzLmdldEVuYWJsZWRFeHByZXNzaW9uKFxuXHRcdFx0b1Byb3BlcnR5Rm9yRmllbGRDb250cm9sLFxuXHRcdFx0b0RhdGFGaWVsZCxcblx0XHRcdGZhbHNlLFxuXHRcdFx0b0RhdGFNb2RlbFBhdGhcblx0XHQpIGFzIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRcdG9Qcm9wcy5yZXF1aXJlZEV4cHJlc3Npb24gPSBVSUZvcm1hdHRlcnMuZ2V0UmVxdWlyZWRFeHByZXNzaW9uKFxuXHRcdFx0b1Byb3BlcnR5Rm9yRmllbGRDb250cm9sLFxuXHRcdFx0b0RhdGFGaWVsZCxcblx0XHRcdGZhbHNlLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHRvUmVxdWlyZWRQcm9wZXJ0aWVzLFxuXHRcdFx0b0RhdGFNb2RlbFBhdGhcblx0XHQpIGFzIENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHR9LFxuXHRzZXRVcEZvcm1hdE9wdGlvbnM6IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBGaWVsZFR5cGUsXG5cdFx0b1Byb3BzOiBGaWVsZFByb3BlcnRpZXMsXG5cdFx0b0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0b0NvbnRyb2xDb25maWd1cmF0aW9uOiBhbnksXG5cdFx0bVNldHRpbmdzOiBhbnlcblx0KSB7XG5cdFx0Y29uc3Qgb092ZXJyaWRlUHJvcHMgPSB0aGlzLmdldE92ZXJyaWRlcyhvQ29udHJvbENvbmZpZ3VyYXRpb24sIG9Qcm9wcy5kYXRhRmllbGQuZ2V0UGF0aCgpKTtcblxuXHRcdGlmICghb1Byb3BzLmZvcm1hdE9wdGlvbnMuZGlzcGxheU1vZGUpIHtcblx0XHRcdG9Qcm9wcy5mb3JtYXRPcHRpb25zLmRpc3BsYXlNb2RlID0gVUlGb3JtYXR0ZXJzLmdldERpc3BsYXlNb2RlKG9EYXRhTW9kZWxQYXRoKTtcblx0XHR9XG5cdFx0b1Byb3BzLmZvcm1hdE9wdGlvbnMudGV4dExpbmVzRWRpdCA9XG5cdFx0XHRvT3ZlcnJpZGVQcm9wcy50ZXh0TGluZXNFZGl0IHx8XG5cdFx0XHQob092ZXJyaWRlUHJvcHMuZm9ybWF0T3B0aW9ucyAmJiBvT3ZlcnJpZGVQcm9wcy5mb3JtYXRPcHRpb25zLnRleHRMaW5lc0VkaXQpIHx8XG5cdFx0XHRvUHJvcHMuZm9ybWF0T3B0aW9ucy50ZXh0TGluZXNFZGl0IHx8XG5cdFx0XHQ0O1xuXHRcdG9Qcm9wcy5mb3JtYXRPcHRpb25zLnRleHRNYXhMaW5lcyA9XG5cdFx0XHRvT3ZlcnJpZGVQcm9wcy50ZXh0TWF4TGluZXMgfHxcblx0XHRcdChvT3ZlcnJpZGVQcm9wcy5mb3JtYXRPcHRpb25zICYmIG9PdmVycmlkZVByb3BzLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzKSB8fFxuXHRcdFx0b1Byb3BzLmZvcm1hdE9wdGlvbnMudGV4dE1heExpbmVzO1xuXG5cdFx0Ly8gUmV0cmlldmUgdGV4dCBmcm9tIHZhbHVlIGxpc3QgYXMgZmFsbGJhY2sgZmVhdHVyZSBmb3IgbWlzc2luZyB0ZXh0IGFubm90YXRpb24gb24gdGhlIHByb3BlcnR5XG5cdFx0aWYgKG1TZXR0aW5ncy5tb2RlbHMudmlld0RhdGE/LmdldFByb3BlcnR5KFwiL3JldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3RcIikpIHtcblx0XHRcdG9Qcm9wcy5mb3JtYXRPcHRpb25zLnJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QgPSBGaWVsZFRlbXBsYXRpbmcuaXNSZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0RW5hYmxlZChcblx0XHRcdFx0b0RhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0LFxuXHRcdFx0XHRvUHJvcHMuZm9ybWF0T3B0aW9uc1xuXHRcdFx0KTtcblx0XHRcdGlmIChvUHJvcHMuZm9ybWF0T3B0aW9ucy5yZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0KSB7XG5cdFx0XHRcdC8vIENvbnNpZGVyIFRleHRBcnJhbmdlbWVudCBhdCBFbnRpdHlUeXBlIG90aGVyd2lzZSBzZXQgZGVmYXVsdCBkaXNwbGF5IGZvcm1hdCAnRGVzY3JpcHRpb25WYWx1ZSdcblx0XHRcdFx0Y29uc3QgaGFzRW50aXR5VGV4dEFycmFuZ2VtZW50ID0gISFvRGF0YU1vZGVsUGF0aD8udGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LlVJPy5UZXh0QXJyYW5nZW1lbnQ7XG5cdFx0XHRcdG9Qcm9wcy5mb3JtYXRPcHRpb25zLmRpc3BsYXlNb2RlID0gaGFzRW50aXR5VGV4dEFycmFuZ2VtZW50ID8gb1Byb3BzLmZvcm1hdE9wdGlvbnMuZGlzcGxheU1vZGUgOiBcIkRlc2NyaXB0aW9uVmFsdWVcIjtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKG9Qcm9wcy5mb3JtYXRPcHRpb25zLmZpZWxkTW9kZSA9PT0gXCJub3dyYXBwZXJcIiAmJiBvUHJvcHMuZWRpdE1vZGUgPT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRpZiAob1Byb3BzLl9mbGV4SWQpIHtcblx0XHRcdFx0b1Byb3BzLm5vV3JhcHBlcklkID0gb1Byb3BzLl9mbGV4SWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvUHJvcHMubm9XcmFwcGVySWQgPSBvUHJvcHMuaWRQcmVmaXggPyBnZW5lcmF0ZShbb1Byb3BzLmlkUHJlZml4LCBcIkZpZWxkLWNvbnRlbnRcIl0pIDogdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0c2V0VXBTZW1hbnRpY09iamVjdHM6IGZ1bmN0aW9uIChvUHJvcHM6IEZpZWxkUHJvcGVydGllcywgb0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiB2b2lkIHtcblx0XHRsZXQgYVNlbU9iakV4cHJUb1Jlc29sdmUgPSBbXTtcblx0XHRhU2VtT2JqRXhwclRvUmVzb2x2ZSA9IEZpZWxkVGVtcGxhdGluZy5nZXRTZW1hbnRpY09iamVjdEV4cHJlc3Npb25Ub1Jlc29sdmUob0RhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdD8uYW5ub3RhdGlvbnM/LkNvbW1vbik7XG5cblx0XHQvKipcblx0XHQgKiBJZiB0aGUgZmllbGQgYnVpbGRpbmcgYmxvY2sgaGFzIGEgYmluZGluZyBleHByZXNzaW9uIGluIHRoZSBjdXN0b20gc2VtYW50aWMgb2JqZWN0cyxcblx0XHQgKiBpdCBnZXRzIHN0b3JlZCB0byB0aGUgY3VzdG9tIGRhdGEgb2YgdGhlIExpbmsgaW4gTGlua1dpdGhRdWlja1ZpZXdGb3JtLmZyYWdtZW50LnhtbFxuXHRcdCAqIFRoaXMgaXMgbmVlZGVkIHRvIHJlc29sdmUgdGhlIGxpbmsgYXQgcnVudGltZS4gVGhlIFF1aWNrVmlld0xpbmtEZWxlZ2F0ZS5qcyB0aGVuIGdldHMgdGhlIHJlc29sdmVkXG5cdFx0ICogYmluZGluZyBleHByZXNzaW9uIGZyb20gdGhlIGN1c3RvbSBkYXRhLlxuXHRcdCAqIEFsbCBvdGhlciBjdXN0b20gc2VtYW50aWMgb2JqZWN0cyBhcmUgcHJvY2Vzc2VkIGluIEZpZWxkSGVscGVyLmpzOmNvbXB1dGVMaW5rUGFyYW1ldGVyc1xuXHRcdCAqL1xuXHRcdGlmICghIW9Qcm9wcy5zZW1hbnRpY09iamVjdCAmJiB0eXBlb2Ygb1Byb3BzLnNlbWFudGljT2JqZWN0ID09PSBcInN0cmluZ1wiICYmIG9Qcm9wcy5zZW1hbnRpY09iamVjdFswXSA9PT0gXCJ7XCIpIHtcblx0XHRcdGFTZW1PYmpFeHByVG9SZXNvbHZlLnB1c2goe1xuXHRcdFx0XHRrZXk6IG9Qcm9wcy5zZW1hbnRpY09iamVjdC5zdWJzdHIoMSwgb1Byb3BzLnNlbWFudGljT2JqZWN0Lmxlbmd0aCAtIDIpLFxuXHRcdFx0XHR2YWx1ZTogb1Byb3BzLnNlbWFudGljT2JqZWN0XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0b1Byb3BzLnNlbWFudGljT2JqZWN0cyA9IEZpZWxkVGVtcGxhdGluZy5nZXRTZW1hbnRpY09iamVjdHMoYVNlbU9iakV4cHJUb1Jlc29sdmUpO1xuXHRcdC8vIFRoaXMgc2V0cyB1cCB0aGUgc2VtYW50aWMgbGlua3MgZm91bmQgaW4gdGhlIG5hdmlnYXRpb24gcHJvcGVydHksIGlmIHRoZXJlIGlzIG5vIHNlbWFudGljIGxpbmtzIGRlZmluZSBiZWZvcmUuXG5cdFx0aWYgKCFvUHJvcHMuc2VtYW50aWNPYmplY3QgJiYgb0RhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0b0RhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAobmF2UHJvcGVydHkpIHtcblx0XHRcdFx0aWYgKG5hdlByb3BlcnR5Py5hbm5vdGF0aW9ucz8uQ29tbW9uPy5TZW1hbnRpY09iamVjdCkge1xuXHRcdFx0XHRcdG9Qcm9wcy5zZW1hbnRpY09iamVjdCA9IG5hdlByb3BlcnR5LmFubm90YXRpb25zLkNvbW1vbi5TZW1hbnRpY09iamVjdDtcblx0XHRcdFx0XHRvUHJvcHMuaGFzU2VtYW50aWNPYmplY3RPbk5hdmlnYXRpb24gPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cdHNldFVwTmF2aWdhdGlvbkF2YWlsYWJsZTogZnVuY3Rpb24gKG9Qcm9wczogRmllbGRQcm9wZXJ0aWVzLCBvRGF0YUZpZWxkOiBhbnkpOiB2b2lkIHtcblx0XHRvUHJvcHMubmF2aWdhdGlvbkF2YWlsYWJsZSA9IHRydWU7XG5cdFx0aWYgKFxuXHRcdFx0b0RhdGFGaWVsZD8uJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiAmJlxuXHRcdFx0b0RhdGFGaWVsZC5OYXZpZ2F0aW9uQXZhaWxhYmxlICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdFN0cmluZyhvUHJvcHMuZm9ybWF0T3B0aW9ucy5pZ25vcmVOYXZpZ2F0aW9uQXZhaWxhYmxlKSAhPT0gXCJ0cnVlXCJcblx0XHQpIHtcblx0XHRcdG9Qcm9wcy5uYXZpZ2F0aW9uQXZhaWxhYmxlID0gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9EYXRhRmllbGQuTmF2aWdhdGlvbkF2YWlsYWJsZSkpO1xuXHRcdH1cblx0fVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkIGFzIEZpZWxkVHlwZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsSUFBTUEsS0FBSyxHQUFHQyxhQUFhLENBQUNDLE1BQU0sQ0FBQyw4QkFBOEIsRUFBRTtJQUNsRTtBQUNEO0FBQ0E7SUFDQ0MsSUFBSSxFQUFFLE9BQU87SUFDYjtBQUNEO0FBQ0E7SUFDQ0MsU0FBUyxFQUFFLHdCQUF3QjtJQUNuQztBQUNEO0FBQ0E7SUFDQ0MsUUFBUSxFQUFFLDhCQUE4QjtJQUV4QztBQUNEO0FBQ0E7SUFDQ0MsUUFBUSxFQUFFO01BQ1Q7QUFDRjtBQUNBO01BQ0VDLFVBQVUsRUFBRSxVQUFVO01BQ3RCO0FBQ0Y7QUFDQTtNQUNFQyxVQUFVLEVBQUUseUNBQXlDO01BQ3JEO0FBQ0Y7QUFDQTtNQUNFQyxVQUFVLEVBQUU7UUFDWDtBQUNIO0FBQ0E7UUFDR0MsUUFBUSxFQUFFO1VBQ1RDLElBQUksRUFBRTtRQUNQLENBQUM7UUFDREMsTUFBTSxFQUFFO1VBQ1BELElBQUksRUFBRTtRQUNQLENBQUM7UUFDREUsV0FBVyxFQUFFO1VBQ1pGLElBQUksRUFBRTtRQUNQLENBQUM7UUFDRDtBQUNIO0FBQ0E7UUFDR0csVUFBVSxFQUFFO1VBQ1hILElBQUksRUFBRSxRQUFRO1VBQ2RJLFlBQVksRUFBRTtRQUNmLENBQUM7UUFFREMsU0FBUyxFQUFFO1VBQ1ZMLElBQUksRUFBRSxRQUFRO1VBQ2RNLFFBQVEsRUFBRTtRQUNYLENBQUM7UUFDRDtBQUNIO0FBQ0E7UUFDR0MsU0FBUyxFQUFFO1VBQ1ZQLElBQUksRUFBRSxzQkFBc0I7VUFDNUJRLFFBQVEsRUFBRSxJQUFJO1VBQ2RDLEtBQUssRUFBRSxDQUFDLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsV0FBVztRQUNyRSxDQUFDO1FBRUQ7QUFDSDtBQUNBO1FBQ0dDLFVBQVUsRUFBRTtVQUNYVixJQUFJLEVBQUUsc0JBQXNCO1VBQzVCUSxRQUFRLEVBQUUsS0FBSztVQUNmRixRQUFRLEVBQUUsSUFBSTtVQUNkRyxLQUFLLEVBQUUsQ0FBQyxZQUFZO1FBQ3JCLENBQUM7UUFDRDtBQUNIO0FBQ0E7UUFDR0UsZUFBZSxFQUFFO1VBQ2hCWCxJQUFJLEVBQUUsc0JBQXNCO1VBQzVCUSxRQUFRLEVBQUUsS0FBSztVQUNmQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLFdBQVc7UUFDckUsQ0FBQztRQUNEO0FBQ0g7QUFDQTtRQUNHRyxtQkFBbUIsRUFBRTtVQUNwQlosSUFBSSxFQUFFLFNBQVM7VUFDZkksWUFBWSxFQUFFO1FBQ2YsQ0FBQztRQUNEO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtRQUNHUyxTQUFTLEVBQUU7VUFDVmIsSUFBSSxFQUFFLHNCQUFzQjtVQUM1QlEsUUFBUSxFQUFFLElBQUk7VUFDZEMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDO1VBQ25CSyxLQUFLLEVBQUUsQ0FDTixzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLG1EQUFtRCxFQUNuRCwrQ0FBK0MsRUFDL0MsOERBQThELEVBQzlELGdEQUFnRCxFQUNoRCwrREFBK0QsRUFDL0Qsd0RBQXdELEVBQ3hELDBDQUEwQztRQUU1QyxDQUFDO1FBQ0Q7QUFDSDtBQUNBO1FBQ0dDLGVBQWUsRUFBRTtVQUNoQmYsSUFBSSxFQUFFLHNCQUFzQjtVQUM1QlEsUUFBUSxFQUFFLEtBQUs7VUFDZkYsUUFBUSxFQUFFO1FBQ1gsQ0FBQztRQUNEO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtRQUNHVSxRQUFRLEVBQUU7VUFDVGhCLElBQUksRUFBRTtRQUNQLENBQUM7UUFDRDtBQUNIO0FBQ0E7UUFDR2lCLElBQUksRUFBRTtVQUNMakIsSUFBSSxFQUFFO1FBQ1AsQ0FBQztRQUNEO0FBQ0g7QUFDQTtRQUNHLE9BQU8sRUFBRTtVQUNSQSxJQUFJLEVBQUU7UUFDUCxDQUFDO1FBQ0Q7QUFDSDtBQUNBO1FBQ0drQixjQUFjLEVBQUU7VUFDZmxCLElBQUksRUFBRTtRQUNQLENBQUM7UUFFRG1CLFNBQVMsRUFBRTtVQUNWbkIsSUFBSSxFQUFFO1FBQ1AsQ0FBQztRQUNEb0Isa0JBQWtCLEVBQUU7VUFDbkJwQixJQUFJLEVBQUUsUUFBUTtVQUNkTSxRQUFRLEVBQUU7UUFDWCxDQUFDO1FBQ0RlLGlCQUFpQixFQUFFO1VBQ2xCckIsSUFBSSxFQUFFLFFBQVE7VUFDZE0sUUFBUSxFQUFFO1FBQ1gsQ0FBQztRQUNEZ0Isb0JBQW9CLEVBQUU7VUFDckJ0QixJQUFJLEVBQUUsU0FBUztVQUNmTSxRQUFRLEVBQUU7UUFDWCxDQUFDO1FBQ0RpQixrQ0FBa0MsRUFBRTtVQUNuQ3ZCLElBQUksRUFBRSxRQUFRO1VBQ2RNLFFBQVEsRUFBRTtRQUNYLENBQUM7UUFDRGtCLCtCQUErQixFQUFFO1VBQ2hDeEIsSUFBSSxFQUFFLFFBQVE7VUFDZE0sUUFBUSxFQUFFO1FBQ1gsQ0FBQztRQUNEbUIsNEJBQTRCLEVBQUU7VUFDN0J6QixJQUFJLEVBQUUsUUFBUTtVQUNkTSxRQUFRLEVBQUU7UUFDWCxDQUFDO1FBQ0Q7QUFDSDtBQUNBO1FBQ0dvQixjQUFjLEVBQUU7VUFDZjFCLElBQUksRUFBRSxRQUFRO1VBQ2RRLFFBQVEsRUFBRTtRQUNYLENBQUM7UUFDRG1CLDZCQUE2QixFQUFFO1VBQzlCM0IsSUFBSSxFQUFFLFNBQVM7VUFDZlEsUUFBUSxFQUFFO1FBQ1gsQ0FBQztRQUNEb0IsT0FBTyxFQUFFO1VBQ1I1QixJQUFJLEVBQUUsUUFBUTtVQUNkUSxRQUFRLEVBQUU7UUFDWCxDQUFDO1FBQ0RxQixhQUFhLEVBQUU7VUFDZDdCLElBQUksRUFBRSxRQUFRO1VBQ2RGLFVBQVUsRUFBRTtZQUNYZ0MsaUJBQWlCLEVBQUU7Y0FDbEI5QixJQUFJLEVBQUUsU0FBUztjQUNmSSxZQUFZLEVBQUU7WUFDZixDQUFDO1lBQ0Q7QUFDTDtBQUNBO1lBQ0syQix1QkFBdUIsRUFBRTtjQUN4Qi9CLElBQUksRUFBRTtZQUNQLENBQUM7WUFDRDtBQUNMO0FBQ0E7WUFDS2dDLGFBQWEsRUFBRTtjQUNkaEMsSUFBSSxFQUFFLFFBQVE7Y0FDZEksWUFBWSxFQUFFLE9BQU87Y0FDckI2QixhQUFhLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtZQUNoQyxDQUFDO1lBQ0RDLFdBQVcsRUFBRTtjQUNabEMsSUFBSSxFQUFFLFFBQVE7Y0FDZGlDLGFBQWEsRUFBRSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCO1lBQy9FLENBQUM7WUFDREUsU0FBUyxFQUFFO2NBQ1ZuQyxJQUFJLEVBQUUsUUFBUTtjQUNkaUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDaEMsQ0FBQztZQUNERyxrQkFBa0IsRUFBRTtjQUNuQnBDLElBQUksRUFBRSxRQUFRO2NBQ2RpQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBVTtZQUNyQyxDQUFDO1lBQ0Q7QUFDTDtBQUNBO1lBQ0tJLGFBQWEsRUFBRTtjQUNkckMsSUFBSSxFQUFFLFFBQVE7Y0FDZHNDLFlBQVksRUFBRTtZQUNmLENBQUM7WUFDRDtBQUNMO0FBQ0E7WUFDS0MsWUFBWSxFQUFFO2NBQ2J2QyxJQUFJLEVBQUUsUUFBUTtjQUNkc0MsWUFBWSxFQUFFO1lBQ2YsQ0FBQztZQUNEO0FBQ0w7QUFDQTtZQUNLRSx3QkFBd0IsRUFBRTtjQUN6QnhDLElBQUksRUFBRSxRQUFRO2NBQ2RzQyxZQUFZLEVBQUU7WUFDZixDQUFDO1lBQ0Q7QUFDTDtBQUNBO1lBQ0tHLHlCQUF5QixFQUFFO2NBQzFCekMsSUFBSSxFQUFFLFFBQVE7Y0FDZGlDLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTO1lBQ3JDLENBQUM7WUFDRDtBQUNMO0FBQ0E7WUFDS1Msa0JBQWtCLEVBQUU7Y0FDbkIxQyxJQUFJLEVBQUUsU0FBUztjQUNmSSxZQUFZLEVBQUU7WUFDZixDQUFDO1lBQ0Q7QUFDTDtBQUNBO1lBQ0t1QyxnQkFBZ0IsRUFBRTtjQUNqQjNDLElBQUksRUFBRSxRQUFRO2NBQ2RJLFlBQVksRUFBRSxFQUFFO2NBQ2hCNkIsYUFBYSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDaEQsQ0FBQztZQUNEVyxpQkFBaUIsRUFBRTtjQUNsQjVDLElBQUksRUFBRSxTQUFTO2NBQ2ZJLFlBQVksRUFBRTtZQUNmLENBQUM7WUFDRDtBQUNMO0FBQ0E7WUFDS3lDLFdBQVcsRUFBRTtjQUNaN0MsSUFBSSxFQUFFLFNBQVM7Y0FDZkksWUFBWSxFQUFFO1lBQ2YsQ0FBQztZQUNEO0FBQ0w7QUFDQTtZQUNLMEMseUJBQXlCLEVBQUU7Y0FDMUI5QyxJQUFJLEVBQUUsU0FBUztjQUNmSSxZQUFZLEVBQUU7WUFDZixDQUFDO1lBQ0QyQyxXQUFXLEVBQUU7Y0FDWi9DLElBQUksRUFBRSxTQUFTO2NBQ2ZJLFlBQVksRUFBRTtZQUNmLENBQUM7WUFFRDtBQUNMO0FBQ0E7WUFDSzRDLHlCQUF5QixFQUFFO2NBQzFCaEQsSUFBSSxFQUFFLFNBQVM7Y0FDZkksWUFBWSxFQUFFO1lBQ2YsQ0FBQztZQUNENkMsa0JBQWtCLEVBQUU7Y0FDbkJqRCxJQUFJLEVBQUUsU0FBUztjQUNmSSxZQUFZLEVBQUU7WUFDZixDQUFDO1lBQ0Q4QyxvQ0FBb0MsRUFBRTtjQUNyQ2xELElBQUksRUFBRTtZQUNQLENBQUM7WUFDRG1ELGNBQWMsRUFBRTtjQUNmbkQsSUFBSSxFQUFFO1lBQ1A7VUFDRDtRQUNEO01BQ0QsQ0FBQztNQUVEb0QsTUFBTSxFQUFFO1FBQ1A7QUFDSDtBQUNBO1FBQ0dDLFFBQVEsRUFBRTtVQUNUckQsSUFBSSxFQUFFO1FBQ1A7TUFDRDtJQUNELENBQUM7SUFDRHNELFlBQVksRUFBRSxVQUFVQyxxQkFBMEIsRUFBRUMsR0FBVyxFQUFFO01BQ2hFLElBQU1DLE1BQWdDLEdBQUcsQ0FBQyxDQUFDO01BQzNDLElBQUlGLHFCQUFxQixFQUFFO1FBQzFCLElBQU1HLGNBQWMsR0FBR0gscUJBQXFCLENBQUNDLEdBQUcsQ0FBQztRQUNqRCxJQUFJRSxjQUFjLEVBQUU7VUFDbkJDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixjQUFjLENBQUMsQ0FBQ0csT0FBTyxDQUFDLFVBQVVDLFVBQVUsRUFBRTtZQUN6REwsTUFBTSxDQUFDSyxVQUFVLENBQUMsR0FBR0osY0FBYyxDQUFDSSxVQUFVLENBQUM7VUFDaEQsQ0FBQyxDQUFDO1FBQ0g7TUFDRDtNQUNBLE9BQU9MLE1BQU07SUFDZCxDQUFDO0lBQ0RNLGtCQUFrQixFQUFFLFVBQVVDLFVBQWUsRUFBRTtNQUM5QztNQUNBLElBQUksQ0FBQUEsVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVDLElBQUksTUFBSyxzQ0FBc0MsRUFBRTtRQUNoRUQsVUFBVSxDQUFDbEQsS0FBSyxHQUFHa0QsVUFBVSxDQUFDbEQsS0FBSyw4Q0FBbUM7TUFDdkU7SUFDRCxDQUFDO0lBQ0RvRCxzQkFBc0IsRUFBRSxVQUFVQyxXQUE0QixFQUFFQyw0QkFBaUQsRUFBRTtNQUNsSDtNQUNBRCxXQUFXLENBQUNFLE9BQU8sR0FBR0MsZUFBZSxDQUFDQyxvQkFBb0IsQ0FBQ0gsNEJBQTRCLEVBQUVELFdBQVcsQ0FBQ3RDLGFBQWEsQ0FBQztNQUNuSHNDLFdBQVcsQ0FBQ0ssY0FBYyxHQUFHTCxXQUFXLENBQUN0QyxhQUFhLENBQUNNLFNBQVMsS0FBSyxXQUFXLEdBQUdnQyxXQUFXLENBQUNFLE9BQU8sR0FBR0ksU0FBUztJQUNuSCxDQUFDO0lBQ0RDLG9CQUFvQixFQUFFLFVBQVVQLFdBQTRCLEVBQUVDLDRCQUFpRCxFQUFFTyxTQUFjLEVBQUU7TUFBQTtNQUNoSSxJQUFJUCw0QkFBNEIsYUFBNUJBLDRCQUE0QixlQUE1QkEsNEJBQTRCLENBQUVRLGVBQWUsSUFBSUQsU0FBUyxhQUFUQSxTQUFTLG9DQUFUQSxTQUFTLENBQUVFLE1BQU0sOENBQWpCLGtCQUFtQkMsU0FBUyxFQUFFO1FBQ2xGWCxXQUFXLENBQUN4RCxlQUFlLEdBQUdnRSxTQUFTLENBQUNFLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxvQkFBb0IsWUFFM0VYLDRCQUE0QixDQUFDUSxlQUFlLENBQUNJLGlCQUFpQixHQUMzRFosNEJBQTRCLENBQUNRLGVBQWUsQ0FBQ0ksaUJBQWlCLENBQUN4RixJQUFJLEdBQ25FNEUsNEJBQTRCLENBQUNZLGlCQUFpQixDQUFDeEYsSUFBSSxFQUV2RDtNQUNGO0lBQ0QsQ0FBQztJQUNEeUYsTUFBTSxFQUFFLFVBQTJCeEIsTUFBdUIsRUFBRXlCLHFCQUEwQixFQUFFUCxTQUFjLEVBQUU7TUFBQTtNQUN2RyxJQUFNUSxtQkFBbUIsR0FBR0Msa0JBQWtCLENBQUNDLHVCQUF1QixDQUFDNUIsTUFBTSxDQUFDNUMsU0FBUyxDQUFDO01BQ3hGLElBQUl5RSxjQUFjLEdBQUdGLGtCQUFrQixDQUFDRywyQkFBMkIsQ0FBQzlCLE1BQU0sQ0FBQzVDLFNBQVMsRUFBRTRDLE1BQU0sQ0FBQ2xELFNBQVMsQ0FBQztNQUN2RyxJQUFJLENBQUN3RCxrQkFBa0IsQ0FBQ29CLG1CQUFtQixDQUFDO01BQzVDLElBQUksQ0FBQ2pCLHNCQUFzQixDQUFDVCxNQUFNLEVBQUU2QixjQUFjLENBQUM7TUFDbkQsSUFBSSxDQUFDWixvQkFBb0IsQ0FBQ2pCLE1BQU0sRUFBRTZCLGNBQWMsRUFBRVgsU0FBUyxDQUFDO01BRTVELElBQUlsQixNQUFNLENBQUMrQixPQUFPLEVBQUU7UUFDbkIvQixNQUFNLENBQUN4RCxNQUFNLEdBQUd3RCxNQUFNLENBQUMrQixPQUFPO1FBQzlCL0IsTUFBTSxDQUFDK0IsT0FBTyxHQUFHLElBQUksQ0FBQ0MsWUFBWSxDQUFDaEMsTUFBTSxDQUFDK0IsT0FBTyxDQUFDO1FBQ2xEL0IsTUFBTSxDQUFDcEQsU0FBUyxhQUFNb0QsTUFBTSxDQUFDK0IsT0FBTyxjQUFJL0IsTUFBTSxDQUFDdEQsVUFBVSxDQUFFO01BQzVEO01BRUFtRixjQUFjLEdBQUcsSUFBSSxDQUFDSSw0QkFBNEIsQ0FBQ1AsbUJBQW1CLEVBQUVHLGNBQWMsQ0FBQztNQUN2RixJQUFJLENBQUNLLG9CQUFvQixDQUFDbEMsTUFBTSxFQUFFNkIsY0FBYyxDQUFDO01BQ2pEN0IsTUFBTSxDQUFDbUMsY0FBYyxHQUFHQyxtQkFBbUIsQ0FBQ1AsY0FBYyxDQUFDO01BQzNELElBQU1RLFVBQVUsR0FBR25CLFNBQVMsQ0FBQ0UsTUFBTSxDQUFDQyxTQUFTLElBQUlILFNBQVMsQ0FBQ0UsTUFBTSxDQUFDdEUsU0FBUztNQUMzRWtELE1BQU0sQ0FBQy9DLFVBQVUsR0FBR29GLFVBQVUsQ0FBQ2Ysb0JBQW9CLFlBQUtPLGNBQWMsQ0FBQ1MsZ0JBQWdCLENBQUNDLGtCQUFrQixFQUFHO01BRTdHLElBQUksQ0FBQ0MsdUJBQXVCLENBQUN4QyxNQUFNLEVBQUUwQixtQkFBbUIsRUFBRUcsY0FBYyxFQUFFUSxVQUFVLENBQUM7TUFDckYsSUFBSSxDQUFDSSxrQkFBa0IsQ0FBQ3pDLE1BQU0sRUFBRTZCLGNBQWMsRUFBRUoscUJBQXFCLEVBQUVQLFNBQVMsQ0FBQztNQUNqRixJQUFJLENBQUN3QixpQkFBaUIsQ0FBQzFDLE1BQU0sRUFBRTBCLG1CQUFtQixFQUFFRyxjQUFjLENBQUM7TUFDbkUsSUFBSSxDQUFDYyxjQUFjLENBQUMzQyxNQUFNLEVBQUUwQixtQkFBbUIsRUFBRUcsY0FBYyxDQUFDOztNQUVoRTtNQUNBLElBQU1lLDZCQUE2QixHQUFHLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDO01BQ3RFLElBQUk1QyxNQUFNLENBQUM2QyxZQUFZLElBQUlELDZCQUE2QixDQUFDRSxPQUFPLENBQUM5QyxNQUFNLENBQUM2QyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSWhCLGNBQWMsQ0FBQ2tCLFlBQVksRUFBRTtRQUM1SC9DLE1BQU0sQ0FBQ2dELElBQUksR0FBR2hELE1BQU0sQ0FBQ2dELElBQUksSUFBSW5DLGVBQWUsQ0FBQ29DLGNBQWMsQ0FBQ3BCLGNBQWMsRUFBRTdCLE1BQU0sQ0FBQzVCLGFBQWEsQ0FBQztRQUNqRyxJQUFJLENBQUM4RSxpQ0FBaUMsQ0FBQ2xELE1BQU0sRUFBRTZCLGNBQWMsQ0FBQztNQUMvRCxDQUFDLE1BQU07UUFDTjdCLE1BQU0sQ0FBQ2dELElBQUksR0FBRyxFQUFFO01BQ2pCOztNQUVBO01BQ0E7TUFDQSxJQUFJLDBCQUFBaEQsTUFBTSxDQUFDNUMsU0FBUyxDQUFDK0YsU0FBUyxDQUFDLGFBQWEsQ0FBQywwREFBekMsc0JBQTJDTCxPQUFPLENBQUMsc0NBQXNDLENBQUMsSUFBRyxDQUFDLENBQUMsRUFBRTtRQUNwRyxJQUFNTSxVQUFVLEdBQUdwRCxNQUFNLENBQUM1QyxTQUFTLENBQUMrRixTQUFTLEVBQUU7UUFDL0NDLFVBQVUsQ0FBQy9GLEtBQUssR0FBRytGLFVBQVUsQ0FBQy9GLEtBQUssOENBQW1DO1FBQ3RFMkMsTUFBTSxDQUFDNUMsU0FBUyxHQUFHLElBQUlpRyxhQUFhLENBQUNELFVBQVUsRUFBRXBELE1BQU0sQ0FBQzVDLFNBQVMsQ0FBQ2tHLFFBQVEsRUFBRSxDQUFDLENBQUNoQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUM7TUFDeEc7TUFFQXRCLE1BQU0sQ0FBQ3VELGtCQUFrQixHQUFHdkQsTUFBTSxDQUFDNUIsYUFBYSxDQUFDYSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcrQixTQUFTO01BRXRGLE9BQU9oQixNQUFNO0lBQ2QsQ0FBQztJQUVEd0Qsd0JBQXdCLEVBQUUsVUFDekJDLGtCQUFzQyxFQUN0QzlDLDRCQUFpRCxFQUNxQjtNQUFBO01BQ3RFLElBQUkrQyx5QkFBd0QsR0FBR0MsV0FBVyxDQUN6RUMsa0NBQWtDLENBQUNqRCw0QkFBNEIsQ0FBQyxDQUNoRTtNQUNELElBQUlrRCxpQkFBaUIsR0FBR0osa0JBQWtCLGFBQWxCQSxrQkFBa0IsdUJBQWxCQSxrQkFBa0IsQ0FBRWhGLFdBQVc7TUFDdkQsSUFBTXFGLG1CQUFtQixHQUN4Qm5ELDRCQUE0QixDQUFDb0MsWUFBWSxDQUFDeEcsSUFBSSxLQUFLLGNBQWMsR0FDN0RvRSw0QkFBNEIsQ0FBQ29DLFlBQVksQ0FBQ2dCLE9BQU8sR0FDakRwRCw0QkFBNEIsQ0FBQ29DLFlBQXlCO01BQzNEVyx5QkFBeUIsR0FBR00sWUFBWSxDQUFDQyx5QkFBeUIsQ0FBQ0gsbUJBQW1CLEVBQUVKLHlCQUF5QixDQUFDO01BRWxILElBQU1RLFVBQVUsNEJBQUdKLG1CQUFtQixDQUFDSyxXQUFXLG9GQUEvQixzQkFBaUNDLE1BQU0sMkRBQXZDLHVCQUF5Q0MsSUFBSTtNQUNoRSxJQUFJSCxVQUFVLEtBQUtsRCxTQUFTLEVBQUU7UUFDN0I7UUFDQTZDLGlCQUFpQixHQUFHLE9BQU87TUFDNUI7TUFDQSxJQUFNUyxnQkFBZ0IsR0FBR0MsZ0JBQWdCLENBQUM1RCw0QkFBNEIsQ0FBQztNQUV2RSxJQUFNNkQsc0JBQXNCLEdBQUcsRUFBRTtNQUVqQ0Esc0JBQXNCLENBQUNDLElBQUksQ0FBQ2QsV0FBVyxDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztNQUN2RWEsc0JBQXNCLENBQUNDLElBQUksQ0FBQ2QsV0FBVyxDQUFDLHFFQUFxRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO01BRTlILElBQ0MsQ0FBQywyQkFBRWhELDRCQUE0QixDQUFDK0QsZUFBZSw0RUFBN0Msc0JBQTZEUCxXQUFXLDZFQUF4RSx1QkFBMEVDLE1BQU0sbURBQWhGLHVCQUFrRk8sU0FBUyxLQUM3RixDQUFDLDRCQUFFaEUsNEJBQTRCLENBQUMrRCxlQUFlLDZFQUE3Qyx1QkFBNkRQLFdBQVcsNkVBQXhFLHVCQUEwRUMsTUFBTSxtREFBaEYsdUJBQWtGUSxTQUFTLEdBQzVGO1FBQ0RKLHNCQUFzQixDQUFDQyxJQUFJLENBQUNJLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDO1FBQzVDTixzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDSSxNQUFNLENBQUNFLFFBQVEsQ0FBQztNQUM3QyxDQUFDLE1BQU07UUFDTlAsc0JBQXNCLENBQUNDLElBQUksQ0FBQ08sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDUixzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7TUFDNUM7TUFFQSxRQUFRbkIsaUJBQWlCO1FBQ3hCLEtBQUssT0FBTztVQUNYVyxzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDZix5QkFBeUIsQ0FBQztVQUN0RGMsc0JBQXNCLENBQUNDLElBQUksQ0FBQ08sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1VBQzNDO1FBQ0QsS0FBSyxhQUFhO1VBQ2pCUixzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDUSwyQkFBMkIsQ0FBQ2YsVUFBVSxFQUFFSSxnQkFBZ0IsQ0FBQyxDQUFxQztVQUMxSEUsc0JBQXNCLENBQUNDLElBQUksQ0FBQ08sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1VBQzNDO1FBQ0QsS0FBSyxrQkFBa0I7VUFDdEJSLHNCQUFzQixDQUFDQyxJQUFJLENBQUNmLHlCQUF5QixDQUFDO1VBQ3REYyxzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDUSwyQkFBMkIsQ0FBQ2YsVUFBVSxFQUFFSSxnQkFBZ0IsQ0FBQyxDQUFxQztVQUMxSDtRQUNEO1VBQ0MsSUFBSUosVUFBVSxhQUFWQSxVQUFVLHdDQUFWQSxVQUFVLENBQUVDLFdBQVcsNEVBQXZCLHNCQUF5QmUsRUFBRSxtREFBM0IsdUJBQTZCQyxlQUFlLEVBQUU7WUFDakRYLHNCQUFzQixDQUFDQyxJQUFJLENBQzFCUSwyQkFBMkIsQ0FBQ2YsVUFBVSxFQUFFSSxnQkFBZ0IsQ0FBQyxDQUN6RDtZQUNERSxzQkFBc0IsQ0FBQ0MsSUFBSSxDQUFDZix5QkFBeUIsQ0FBQztVQUN2RCxDQUFDLE1BQU07WUFBQTtZQUNOO1lBQ0E7WUFDQWMsc0JBQXNCLENBQUNDLElBQUksQ0FDMUJRLDJCQUEyQixDQUFDZixVQUFVLEVBQUVJLGdCQUFnQixDQUFDLENBQ3pEO1lBQ0Q7WUFDQTtZQUNBLDhCQUFJM0QsNEJBQTRCLENBQUNvQyxZQUFZLDZFQUF6Qyx1QkFBMkNvQixXQUFXLDZFQUF0RCx1QkFBd0RDLE1BQU0sbURBQTlELHVCQUFnRWdCLGNBQWMsRUFBRTtjQUNuRlosc0JBQXNCLENBQUNDLElBQUksQ0FBQ2YseUJBQXlCLENBQUM7WUFDdkQsQ0FBQyxNQUFNO2NBQ05jLHNCQUFzQixDQUFDQyxJQUFJLENBQUNPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QztVQUNEO1VBQ0E7TUFBTTtNQUVSLE9BQU9LLGlCQUFpQixDQUFDQyxZQUFZLENBQUNkLHNCQUFzQixFQUFTZSxlQUFlLENBQUNDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFREMsdUJBQXVCLEVBQUUsVUFDeEJoQyxrQkFBc0MsRUFDdEM5Qyw0QkFBaUQsRUFDcUI7TUFBQTtNQUN0RSxJQUFJK0MseUJBQXdELEdBQUdDLFdBQVcsQ0FDekVDLGtDQUFrQyxDQUFDakQsNEJBQTRCLENBQUMsQ0FDaEU7TUFDRCxJQUFNa0QsaUJBQWlCLEdBQUdKLGtCQUFrQixhQUFsQkEsa0JBQWtCLHVCQUFsQkEsa0JBQWtCLENBQUVoRixXQUFXO01BQ3pELElBQU1xRixtQkFBbUIsR0FDeEJuRCw0QkFBNEIsQ0FBQ29DLFlBQVksQ0FBQ3hHLElBQUksS0FBSyxjQUFjLEdBQzdEb0UsNEJBQTRCLENBQUNvQyxZQUFZLENBQUNnQixPQUFPLEdBQ2pEcEQsNEJBQTRCLENBQUNvQyxZQUF5QjtNQUUzRCxJQUFNbUIsVUFBVSw2QkFBR0osbUJBQW1CLENBQUNLLFdBQVcscUZBQS9CLHVCQUFpQ0MsTUFBTSwyREFBdkMsdUJBQXlDQyxJQUFJO01BQ2hFLElBQUlILFVBQVUsS0FBS2xELFNBQVMsSUFBSWtELFVBQVUsYUFBVkEsVUFBVSx5Q0FBVkEsVUFBVSxDQUFFQyxXQUFXLDZFQUF2Qix1QkFBeUJlLEVBQUUsbURBQTNCLHVCQUE2QkMsZUFBZSxFQUFFO1FBQzdFLE9BQU9uRSxTQUFTO01BQ2pCO01BQ0EwQyx5QkFBeUIsR0FBR00sWUFBWSxDQUFDQyx5QkFBeUIsQ0FBQ0gsbUJBQW1CLEVBQUVKLHlCQUF5QixDQUFDO01BRWxILFFBQVFHLGlCQUFpQjtRQUN4QixLQUFLLGtCQUFrQjtVQUN0QixJQUFNUyxnQkFBZ0IsR0FBR0MsZ0JBQWdCLENBQUM1RCw0QkFBNEIsQ0FBQztVQUN2RSxPQUFPMEUsaUJBQWlCLENBQUNKLDJCQUEyQixDQUFDZixVQUFVLEVBQUVJLGdCQUFnQixDQUFDLENBQXFDO1FBQ3hILEtBQUssa0JBQWtCO1VBQ3RCLE9BQU9lLGlCQUFpQixDQUFDM0IseUJBQXlCLENBQUM7UUFDcEQ7VUFDQyxPQUFPMUMsU0FBUztNQUFDO0lBRXBCLENBQUM7SUFFRGtDLGlDQUFpQyxZQUFDd0MsT0FBd0IsRUFBRS9FLDRCQUFpRCxFQUFFO01BQUE7TUFDOUcsSUFBSSwwQkFBQStFLE9BQU8sQ0FBQ3RILGFBQWEsMERBQXJCLHNCQUF1QmMsZ0JBQWdCLE1BQUssa0JBQWtCLEVBQUU7UUFBQTtRQUNuRXdHLE9BQU8sQ0FBQ0MsZUFBZSxHQUFHLElBQUksQ0FBQ25DLHdCQUF3QixDQUFDa0MsT0FBTyxDQUFDdEgsYUFBYSxFQUFFdUMsNEJBQTRCLENBQUM7UUFDNUcsSUFBSSw2QkFBQ0EsNEJBQTRCLENBQUNvQyxZQUFZLCtFQUF6Qyx3QkFBMkNvQixXQUFXLCtFQUF0RCx3QkFBd0RDLE1BQU0sb0RBQTlELHdCQUFnRWdCLGNBQWMsR0FBRTtVQUNwRk0sT0FBTyxDQUFDRSxjQUFjLEdBQUcsSUFBSSxDQUFDSCx1QkFBdUIsQ0FBQ0MsT0FBTyxDQUFDdEgsYUFBYSxFQUFFdUMsNEJBQTRCLENBQUM7UUFDM0csQ0FBQyxNQUFNO1VBQ04rRSxPQUFPLENBQUNFLGNBQWMsR0FBRzVFLFNBQVM7UUFDbkM7TUFDRCxDQUFDLE1BQU07UUFDTjBFLE9BQU8sQ0FBQ0MsZUFBZSxHQUFHM0UsU0FBUztRQUNuQzBFLE9BQU8sQ0FBQ0UsY0FBYyxHQUFHNUUsU0FBUztNQUNuQztJQUNELENBQUM7SUFFRDZFLHFCQUFxQixFQUFFLFVBQVV6SCxhQUFpQyxFQUFFeUQsY0FBbUMsRUFBRTtNQUN4RyxJQUFNbUIsSUFBSSxHQUFHbkMsZUFBZSxDQUFDb0MsY0FBYyxDQUFDcEIsY0FBYyxFQUFFekQsYUFBYSxFQUFFLElBQUksQ0FBQztNQUNoRixPQUFRNEUsSUFBSSxDQUFTOEMsS0FBSyxLQUFLLGFBQWEsSUFBSSxPQUFPOUMsSUFBSSxLQUFLLFFBQVEsR0FDckVxQyxpQkFBaUIsQ0FBQ0MsWUFBWSxDQUFDLENBQUN0QyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUM5Q3FDLGlCQUFpQixDQUFDckMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRGYsNEJBQTRCLEVBQUUsVUFBVTFCLFVBQWUsRUFBRXNCLGNBQW1DLEVBQXVCO01BQUE7TUFDbEgsSUFBSSxFQUFDdEIsVUFBVSxhQUFWQSxVQUFVLGVBQVZBLFVBQVUsQ0FBRWxELEtBQUssR0FBRTtRQUN2QixPQUFPd0UsY0FBYztNQUN0QjtNQUNBLElBQUlrRSxVQUFVLEdBQUcsRUFBRTtNQUNuQixJQUFJQyx3QkFBd0IsR0FBR25FLGNBQWM7TUFFN0MsUUFBUXRCLFVBQVUsQ0FBQ2xELEtBQUs7UUFDdkI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1VBQ0MwSSxVQUFVLHdCQUFHeEYsVUFBVSxDQUFDMEYsS0FBSyxzREFBaEIsa0JBQWtCQyxJQUFJO1VBQ25DO1FBQ0Q7VUFDQyxJQUFJM0YsVUFBVSxDQUFDNEYsTUFBTSxDQUFDcEMsT0FBTyxFQUFFO1lBQzlCLElBQ0N4RCxVQUFVLENBQUM0RixNQUFNLENBQUNwQyxPQUFPLENBQUMxRyxLQUFLLDJDQUFnQyxJQUMvRGtELFVBQVUsQ0FBQzRGLE1BQU0sQ0FBQ3BDLE9BQU8sQ0FBQzFHLEtBQUssK0NBQW9DLEVBQ2xFO2NBQUE7Y0FDRDBJLFVBQVUsNEJBQUd4RixVQUFVLENBQUM0RixNQUFNLENBQUNwQyxPQUFPLENBQUNrQyxLQUFLLDBEQUEvQixzQkFBaUNDLElBQUk7WUFDbkQsQ0FBQyxNQUFNO2NBQUE7Y0FDTkgsVUFBVSx5QkFBR3hGLFVBQVUsQ0FBQzRGLE1BQU0sdURBQWpCLG1CQUFtQkQsSUFBSTtZQUNyQztVQUNEO1VBQ0E7TUFBTTtNQUVSLElBQUksZ0JBQUFILFVBQVUsZ0RBQVYsWUFBWUssTUFBTSxJQUFHLENBQUMsRUFBRTtRQUMzQkosd0JBQXdCLEdBQUdLLG9CQUFvQixDQUFDeEUsY0FBYyxFQUFFa0UsVUFBVSxDQUFDO01BQzVFO01BQ0EsT0FBT0Msd0JBQXdCO0lBQ2hDLENBQUM7SUFDRDtJQUNBdEQsaUJBQWlCLEVBQUUsVUFBMkIxQyxNQUF1QixFQUFFTyxVQUFlLEVBQUVzQixjQUFtQyxFQUFRO01BQUE7TUFDbEksSUFBTXlFLFNBQW1CLEdBQUd6RSxjQUFjLENBQUNrQixZQUF3QjtNQUNuRSxJQUFJLENBQUNsQixjQUFjLENBQUNrQixZQUFZLEVBQUU7UUFDakMvQyxNQUFNLENBQUM2QyxZQUFZLEdBQUcsTUFBTTtRQUM1QjtNQUNEO01BQ0EsSUFBSXlELFNBQVMsQ0FBQy9KLElBQUksS0FBSyxZQUFZLEVBQUU7UUFDcEN5RCxNQUFNLENBQUM2QyxZQUFZLEdBQUcsTUFBTTtRQUM1QjtNQUNEO01BQ0EsNkJBQUl5RCxTQUFTLENBQUNuQyxXQUFXLDRFQUFyQixzQkFBdUJlLEVBQUUsbURBQXpCLHVCQUEyQnFCLFVBQVUsRUFBRTtRQUMxQ3ZHLE1BQU0sQ0FBQzZDLFlBQVksR0FBRyxRQUFRO1FBQzlCO01BQ0Q7TUFDQSxJQUFNMkQsa0JBQWtCLEdBQUdGLFNBQVMsR0FBR3pGLGVBQWUsQ0FBQzRGLHFDQUFxQyxDQUFDNUUsY0FBYyxFQUFFeUUsU0FBUyxDQUFDLEdBQUcsS0FBSztNQUUvSCxRQUFRL0YsVUFBVSxDQUFDbEQsS0FBSztRQUN2QjtVQUNDMkMsTUFBTSxDQUFDNkMsWUFBWSxHQUFHLFdBQVc7VUFDakM7UUFDRDtVQUNDLElBQUksd0JBQUF0QyxVQUFVLENBQUM0RixNQUFNLGlGQUFqQixvQkFBbUJwQyxPQUFPLDBEQUExQixzQkFBNEIxRyxLQUFLLGdEQUFvQyxFQUFFO1lBQzFFMkMsTUFBTSxDQUFDNkMsWUFBWSxHQUFHLFdBQVc7WUFDakM7VUFDRCxDQUFDLE1BQU0sSUFBSSx3QkFBQXRDLFVBQVUsQ0FBQzRGLE1BQU0saUZBQWpCLG9CQUFtQnBDLE9BQU8sMERBQTFCLHNCQUE0QjFHLEtBQUssTUFBSyxtREFBbUQsRUFBRTtZQUNyRzJDLE1BQU0sQ0FBQzZDLFlBQVksR0FBRyxTQUFTO1lBQy9CO1VBQ0Q7VUFDQTtRQUNEO1VBQ0M3QyxNQUFNLENBQUM2QyxZQUFZLEdBQUcsUUFBUTtVQUM5QjtRQUNEO1VBQ0MsSUFBSSxDQUFDNkQsd0JBQXdCLENBQUMxRyxNQUFNLEVBQUVPLFVBQVUsQ0FBQztVQUNqRFAsTUFBTSxDQUFDNkMsWUFBWSxHQUFHLFFBQVE7VUFDOUI7UUFDRDtVQUNDN0MsTUFBTSxDQUFDZ0QsSUFBSSxHQUFHLElBQUksQ0FBQzZDLHFCQUFxQixDQUFDN0YsTUFBTSxDQUFDNUIsYUFBYSxFQUFFeUQsY0FBYyxDQUFDO1FBQy9FO1FBQ0E7UUFDQTtVQUNDN0IsTUFBTSxDQUFDNkMsWUFBWSxHQUFHLE1BQU07VUFDNUI7TUFBTztNQUVULElBQUk4RCxhQUFhLENBQUNMLFNBQVMsRUFBRXpFLGNBQWMsQ0FBQyxJQUFJN0IsTUFBTSxDQUFDNUIsYUFBYSxDQUFDYyxnQkFBZ0IsRUFBRTtRQUFBO1FBQ3RGYyxNQUFNLENBQUN3RyxrQkFBa0IsR0FBR0Esa0JBQWtCO1FBQzlDeEcsTUFBTSxDQUFDNEcsc0JBQXNCLEdBQzVCQyxtQkFBbUIsQ0FBQ0MsK0JBQStCLENBQUNqRixjQUFjLENBQUNTLGdCQUFnQixDQUFDLEtBQUt0QixTQUFTO1FBQ25HLElBQUksQ0FBQ2tDLGlDQUFpQyxDQUFDbEQsTUFBTSxFQUFFNkIsY0FBYyxDQUFDO1FBQzlELDZCQUFLQSxjQUFjLENBQUM2QyxlQUFlLDRFQUEvQixzQkFBK0NQLFdBQVcsNkVBQTFELHVCQUE0REMsTUFBTSxtREFBbEUsdUJBQW9FTyxTQUFTLEVBQUU7VUFDbEYzRSxNQUFNLENBQUM2QyxZQUFZLEdBQUcsK0JBQStCO1VBQ3JEO1FBQ0Q7UUFDQTdDLE1BQU0sQ0FBQzZDLFlBQVksR0FBRzdDLE1BQU0sQ0FBQzVCLGFBQWEsQ0FBQ2MsZ0JBQWdCLEtBQUssa0JBQWtCLEdBQUcsa0JBQWtCLEdBQUcsa0JBQWtCO1FBQzVIO01BQ0Q7TUFFQSxJQUFJcUIsVUFBVSxDQUFDd0csV0FBVyxFQUFFO1FBQzNCL0csTUFBTSxDQUFDd0csa0JBQWtCLEdBQUdBLGtCQUFrQjtRQUM5Q3hHLE1BQU0sQ0FBQzdCLE9BQU8sR0FBR29DLFVBQVUsQ0FBQ3lHLEdBQUcsR0FBRzNCLGlCQUFpQixDQUFDSiwyQkFBMkIsQ0FBQzFFLFVBQVUsQ0FBQ3lHLEdBQUcsQ0FBQyxDQUFDLEdBQUdoRyxTQUFTO1FBQzVHaEIsTUFBTSxDQUFDNkMsWUFBWSxHQUFHLGNBQWM7UUFDcEM7TUFDRDtNQUNBLElBQUksMEJBQUF5RCxTQUFTLENBQUNuQyxXQUFXLDZFQUFyQix1QkFBdUI4QyxRQUFRLG1EQUEvQix1QkFBaUNDLFdBQVcsSUFBSUMsTUFBTSxDQUFDbkgsTUFBTSxDQUFDNUIsYUFBYSxDQUFDQyxpQkFBaUIsQ0FBQyxLQUFLLE1BQU0sRUFBRTtRQUM5RyxJQUFJMkIsTUFBTSxDQUFDNUIsYUFBYSxDQUFDTyxrQkFBa0IsS0FBSyxRQUFRLEVBQUU7VUFDekRxQixNQUFNLENBQUM2QyxZQUFZLEdBQUcsTUFBTTtVQUM1QjtRQUNEO1FBQ0E3QyxNQUFNLENBQUNvSCw4QkFBOEIsR0FBR3ZHLGVBQWUsQ0FBQ3dHLGVBQWUsQ0FDdEV4RixjQUFjLEVBQ2Q3QixNQUFNLENBQUM1QixhQUFhLEVBQ3BCLElBQUksRUFDSixJQUFJLEVBQ0o0QyxTQUFTLEVBQ1QsSUFBSSxDQUNKO1FBQ0RoQixNQUFNLENBQUNzSCxxQkFBcUIsR0FBR2pDLGlCQUFpQixDQUFDckIsWUFBWSxDQUFDdUQsMkJBQTJCLENBQUMxRixjQUFjLENBQUMsQ0FBQztRQUMxRzdCLE1BQU0sQ0FBQzZDLFlBQVksR0FBRyxvQkFBb0I7UUFDMUM7TUFDRDtNQUNBLElBQUksMEJBQUF5RCxTQUFTLENBQUNuQyxXQUFXLDZFQUFyQix1QkFBdUJxRCxhQUFhLG1EQUFwQyx1QkFBc0NDLGNBQWMsOEJBQUluQixTQUFTLENBQUNuQyxXQUFXLDZFQUFyQix1QkFBdUJxRCxhQUFhLG1EQUFwQyx1QkFBc0NFLGFBQWEsRUFBRTtRQUNoSDFILE1BQU0sQ0FBQ2dELElBQUksR0FBRyxJQUFJLENBQUM2QyxxQkFBcUIsQ0FBQzdGLE1BQU0sQ0FBQzVCLGFBQWEsRUFBRXlELGNBQWMsQ0FBQztRQUM5RTdCLE1BQU0sQ0FBQzZDLFlBQVksR0FBRyxNQUFNO1FBQzVCO01BQ0Q7TUFDQSw4QkFBSXlELFNBQVMsQ0FBQ25DLFdBQVcsOEVBQXJCLHVCQUF1QmUsRUFBRSxvREFBekIsd0JBQTJCeUMsYUFBYSxFQUFFO1FBQzdDM0gsTUFBTSxDQUFDNkMsWUFBWSxHQUFHLGdCQUFnQjtRQUN0QztNQUNEO01BRUEsSUFBSTJELGtCQUFrQixFQUFFO1FBQ3ZCeEcsTUFBTSxDQUFDZ0QsSUFBSSxHQUFHLElBQUksQ0FBQzZDLHFCQUFxQixDQUFDN0YsTUFBTSxDQUFDNUIsYUFBYSxFQUFFeUQsY0FBYyxDQUFDO1FBQzlFN0IsTUFBTSxDQUFDd0csa0JBQWtCLEdBQUcsSUFBSTtRQUNoQ3hHLE1BQU0sQ0FBQzZDLFlBQVksR0FBRyx1QkFBdUI7UUFDN0M7TUFDRDtNQUVBLElBQ0M3QyxNQUFNLENBQUMvQixjQUFjLElBQ3JCLEVBQUVxSSxTQUFTLGFBQVRBLFNBQVMsMENBQVRBLFNBQVMsQ0FBRW5DLFdBQVcsK0VBQXRCLHdCQUF3QnFELGFBQWEsb0RBQXJDLHdCQUF1Q0MsY0FBYyxJQUFJbkIsU0FBUyxhQUFUQSxTQUFTLDBDQUFUQSxTQUFTLENBQUVuQyxXQUFXLCtFQUF0Qix3QkFBd0JxRCxhQUFhLG9EQUFyQyx3QkFBdUNFLGFBQWEsQ0FBQyxFQUMvRztRQUNEMUgsTUFBTSxDQUFDd0csa0JBQWtCLEdBQUdBLGtCQUFrQjtRQUM5Q3hHLE1BQU0sQ0FBQ2dELElBQUksR0FBRyxJQUFJLENBQUM2QyxxQkFBcUIsQ0FBQzdGLE1BQU0sQ0FBQzVCLGFBQWEsRUFBRXlELGNBQWMsQ0FBQztRQUM5RTdCLE1BQU0sQ0FBQzZDLFlBQVksR0FBRyx1QkFBdUI7UUFDN0M7TUFDRDtNQUVBLElBQU0rRSwyQkFBMkIsOEJBQUd0QixTQUFTLENBQUNuQyxXQUFXLDREQUFyQix3QkFBdUJDLE1BQU07TUFDakUsSUFBTXlELHVDQUF1QyxHQUFHaEcsY0FBYyxhQUFkQSxjQUFjLGdEQUFkQSxjQUFjLENBQUVpRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsb0ZBQXZDLHNCQUF5QzNELFdBQVcsMkRBQXBELHVCQUFzREMsTUFBTTtNQUM1RyxLQUFLLElBQU0yRCxHQUFHLElBQUlILDJCQUEyQixFQUFFO1FBQzlDLElBQUlHLEdBQUcsQ0FBQ2pGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUN4QzlDLE1BQU0sQ0FBQ3dHLGtCQUFrQixHQUFHQSxrQkFBa0I7VUFDOUN4RyxNQUFNLENBQUM2QyxZQUFZLEdBQUcsYUFBYTtVQUNuQztRQUNEO01BQ0Q7TUFDQSxLQUFLLElBQU1rRixJQUFHLElBQUlGLHVDQUF1QyxFQUFFO1FBQzFELElBQUlFLElBQUcsQ0FBQ2pGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUN4QzlDLE1BQU0sQ0FBQ3dHLGtCQUFrQixHQUFHQSxrQkFBa0I7VUFDOUN4RyxNQUFNLENBQUM2QyxZQUFZLEdBQUcsYUFBYTtVQUNuQztRQUNEO01BQ0Q7TUFFQSxJQUFJdEMsVUFBVSxDQUFDbEQsS0FBSyxrREFBdUMsRUFBRTtRQUM1RDJDLE1BQU0sQ0FBQ2dELElBQUksR0FBRyxJQUFJLENBQUM2QyxxQkFBcUIsQ0FBQzdGLE1BQU0sQ0FBQzVCLGFBQWEsRUFBRXlELGNBQWMsQ0FBQztRQUM5RTdCLE1BQU0sQ0FBQzZDLFlBQVksR0FBRyxNQUFNO1FBQzVCO01BQ0Q7TUFDQTdDLE1BQU0sQ0FBQzZDLFlBQVksR0FBRyxNQUFNO0lBQzdCLENBQUM7SUFDRDtJQUNBRixjQUFjLEVBQUUsVUFBMkIzQyxNQUF1QixFQUFFTyxVQUFlLEVBQUVzQixjQUFtQyxFQUFRO01BQy9IaEIsZUFBZSxDQUFDbUgsc0JBQXNCLENBQUNoSSxNQUFNLEVBQUVPLFVBQVUsRUFBRXNCLGNBQWMsQ0FBQztJQUMzRSxDQUFDO0lBQ0RXLHVCQUF1QixFQUFFLFVBQ3hCeEMsTUFBdUIsRUFDdkJPLFVBQWUsRUFDZnNCLGNBQW1DLEVBQ25DUSxVQUFlLEVBQ1I7TUFBQTtNQUNQLElBQU00Rix3QkFBd0IsR0FBR3BHLGNBQWMsYUFBZEEsY0FBYyx5Q0FBZEEsY0FBYyxDQUFFa0IsWUFBWSxtREFBNUIsdUJBQThCa0QsS0FBSyxHQUNqRXBFLGNBQWMsQ0FBQ2tCLFlBQVksQ0FBQ2tELEtBQUssR0FDakNwRSxjQUFjLGFBQWRBLGNBQWMsdUJBQWRBLGNBQWMsQ0FBRWtCLFlBQVk7TUFDL0IsSUFBSS9DLE1BQU0sQ0FBQ3pDLFFBQVEsS0FBS3lELFNBQVMsSUFBSWhCLE1BQU0sQ0FBQ3pDLFFBQVEsS0FBSyxJQUFJLEVBQUU7UUFDOUQ7UUFDQXlDLE1BQU0sQ0FBQ2tJLGdCQUFnQixHQUFHbEksTUFBTSxDQUFDekMsUUFBUTtNQUMxQyxDQUFDLE1BQU07UUFDTixJQUFNNEssZ0JBQWdCLEdBQUduSSxNQUFNLENBQUM1QixhQUFhLENBQUNPLGtCQUFrQixHQUM3RHFCLE1BQU0sQ0FBQzVCLGFBQWEsQ0FBQ08sa0JBQWtCLEtBQUssVUFBVSxHQUN0RCxLQUFLO1FBRVJxQixNQUFNLENBQUNrSSxnQkFBZ0IsR0FBR2xFLFlBQVksQ0FBQ29FLFdBQVcsQ0FDakRILHdCQUF3QixFQUN4QnBHLGNBQWMsRUFDZHNHLGdCQUFnQixFQUNoQixJQUFJLEVBQ0o1SCxVQUFVLENBQ1Y7UUFDRFAsTUFBTSxDQUFDekMsUUFBUSxHQUFHOEgsaUJBQWlCLENBQUNyRixNQUFNLENBQUNrSSxnQkFBZ0IsQ0FBQztNQUM3RDtNQUNBLElBQU12SyxrQkFBa0IsR0FBR3FHLFlBQVksQ0FBQ3FFLDZCQUE2QixDQUFDSix3QkFBd0IsRUFBRTFILFVBQVUsRUFBRXNCLGNBQWMsQ0FBQztNQUMzSCxJQUFNeUcseUNBQXlDLEdBQUdDLFdBQVcsQ0FBQ0MsMkNBQTJDLHNCQUN4R3hJLE1BQU0sQ0FBQ2xELFNBQVMsc0RBQWhCLGtCQUFrQjJMLE9BQU8sRUFBRSxDQUFDQyxVQUFVLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLEVBQzNFckcsVUFBVSxDQUNWO01BQ0QsSUFBTXNHLHlDQUF5QyxHQUFHSixXQUFXLENBQUNLLDJDQUEyQyx1QkFDeEc1SSxNQUFNLENBQUNsRCxTQUFTLHVEQUFoQixtQkFBa0IyTCxPQUFPLEVBQUUsQ0FBQ0MsVUFBVSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxFQUMzRXJHLFVBQVUsQ0FDVjtNQUNELElBQU13RyxtQkFBbUIsR0FBRztRQUMzQkMsd0NBQXdDLEVBQUVSLHlDQUF5QztRQUNuRlMsd0NBQXdDLEVBQUVKO01BQzNDLENBQUM7TUFDRCxJQUFJSyxXQUFXLENBQUNDLDZCQUE2QixDQUFDNUcsVUFBVSxDQUFDLEVBQUU7UUFDMURyQyxNQUFNLENBQUNuQyxvQkFBb0IsR0FBRyxJQUFJO1FBQ2xDO1FBQ0EsSUFBTXFMLHVCQUF1QixHQUFHbEYsWUFBWSxDQUFDbUYsMEJBQTBCLENBQ3RFdEgsY0FBYyxFQUNkdUgsdUJBQXVCLENBQUNDLHdCQUF3QixDQUNoRDtRQUNEckosTUFBTSxDQUFDbEMsa0NBQWtDLEdBQUd1SCxpQkFBaUIsQ0FBQzZELHVCQUF1QixDQUFDO1FBQ3RGbEosTUFBTSxDQUFDakMsK0JBQStCLEdBQUdzSCxpQkFBaUIsQ0FDekRyQixZQUFZLENBQUNtRiwwQkFBMEIsQ0FBQ3RILGNBQWMsRUFBRXVILHVCQUF1QixDQUFDRSxnQ0FBZ0MsQ0FBQyxDQUNqSDtRQUNEdEosTUFBTSxDQUFDaEMsNEJBQTRCLEdBQUdxSCxpQkFBaUIsQ0FDdERyQixZQUFZLENBQUNtRiwwQkFBMEIsQ0FBQ3RILGNBQWMsRUFBRXVILHVCQUF1QixDQUFDRyw2QkFBNkIsQ0FBQyxDQUM5RztRQUNEdkosTUFBTSxDQUFDckMsa0JBQWtCLEdBQUcwSCxpQkFBaUIsQ0FBQ21FLEdBQUcsQ0FBQzdMLGtCQUFrQixFQUFFOEwsR0FBRyxDQUFDUCx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7UUFFcEdsSixNQUFNLENBQUN6QyxRQUFRLEdBQUc4SCxpQkFBaUIsQ0FBQ3FFLE1BQU0sQ0FBQ1IsdUJBQXVCLEVBQUVsRSxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUVoRixNQUFNLENBQUNrSSxnQkFBZ0IsQ0FBQyxDQUFDO01BQ3BILENBQUMsTUFBTTtRQUNObEksTUFBTSxDQUFDckMsa0JBQWtCLEdBQUcwSCxpQkFBaUIsQ0FBQzFILGtCQUFrQixDQUFDO01BQ2xFO01BQ0FxQyxNQUFNLENBQUNwQyxpQkFBaUIsR0FBR29HLFlBQVksQ0FBQzJGLG9CQUFvQixDQUMzRDFCLHdCQUF3QixFQUN4QjFILFVBQVUsRUFDVixLQUFLLEVBQ0xzQixjQUFjLENBQ3NCO01BQ3JDN0IsTUFBTSxDQUFDNEosa0JBQWtCLEdBQUc1RixZQUFZLENBQUM2RixxQkFBcUIsQ0FDN0Q1Qix3QkFBd0IsRUFDeEIxSCxVQUFVLEVBQ1YsS0FBSyxFQUNMLEtBQUssRUFDTHNJLG1CQUFtQixFQUNuQmhILGNBQWMsQ0FDc0I7SUFDdEMsQ0FBQztJQUNEWSxrQkFBa0IsRUFBRSxVQUVuQnpDLE1BQXVCLEVBQ3ZCNkIsY0FBbUMsRUFDbkNKLHFCQUEwQixFQUMxQlAsU0FBYyxFQUNiO01BQUE7TUFDRCxJQUFNNEksY0FBYyxHQUFHLElBQUksQ0FBQ2pLLFlBQVksQ0FBQzRCLHFCQUFxQixFQUFFekIsTUFBTSxDQUFDNUMsU0FBUyxDQUFDcUwsT0FBTyxFQUFFLENBQUM7TUFFM0YsSUFBSSxDQUFDekksTUFBTSxDQUFDNUIsYUFBYSxDQUFDSyxXQUFXLEVBQUU7UUFDdEN1QixNQUFNLENBQUM1QixhQUFhLENBQUNLLFdBQVcsR0FBR3VGLFlBQVksQ0FBQytGLGNBQWMsQ0FBQ2xJLGNBQWMsQ0FBQztNQUMvRTtNQUNBN0IsTUFBTSxDQUFDNUIsYUFBYSxDQUFDUSxhQUFhLEdBQ2pDa0wsY0FBYyxDQUFDbEwsYUFBYSxJQUMzQmtMLGNBQWMsQ0FBQzFMLGFBQWEsSUFBSTBMLGNBQWMsQ0FBQzFMLGFBQWEsQ0FBQ1EsYUFBYyxJQUM1RW9CLE1BQU0sQ0FBQzVCLGFBQWEsQ0FBQ1EsYUFBYSxJQUNsQyxDQUFDO01BQ0ZvQixNQUFNLENBQUM1QixhQUFhLENBQUNVLFlBQVksR0FDaENnTCxjQUFjLENBQUNoTCxZQUFZLElBQzFCZ0wsY0FBYyxDQUFDMUwsYUFBYSxJQUFJMEwsY0FBYyxDQUFDMUwsYUFBYSxDQUFDVSxZQUFhLElBQzNFa0IsTUFBTSxDQUFDNUIsYUFBYSxDQUFDVSxZQUFZOztNQUVsQztNQUNBLDZCQUFJb0MsU0FBUyxDQUFDRSxNQUFNLENBQUM0SSxRQUFRLGtEQUF6QixzQkFBMkJDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFO1FBQ3pFakssTUFBTSxDQUFDNUIsYUFBYSxDQUFDbUIseUJBQXlCLEdBQUdzQixlQUFlLENBQUNxSixrQ0FBa0MsQ0FDbEdySSxjQUFjLENBQUNrQixZQUFZLEVBQzNCL0MsTUFBTSxDQUFDNUIsYUFBYSxDQUNwQjtRQUNELElBQUk0QixNQUFNLENBQUM1QixhQUFhLENBQUNtQix5QkFBeUIsRUFBRTtVQUFBO1VBQ25EO1VBQ0EsSUFBTTRLLHdCQUF3QixHQUFHLENBQUMsRUFBQ3RJLGNBQWMsYUFBZEEsY0FBYyx5Q0FBZEEsY0FBYyxDQUFFUyxnQkFBZ0IsNkVBQWhDLHVCQUFrQzZCLFdBQVcsNkVBQTdDLHVCQUErQ2UsRUFBRSxtREFBakQsdUJBQW1EQyxlQUFlO1VBQ3JHbkYsTUFBTSxDQUFDNUIsYUFBYSxDQUFDSyxXQUFXLEdBQUcwTCx3QkFBd0IsR0FBR25LLE1BQU0sQ0FBQzVCLGFBQWEsQ0FBQ0ssV0FBVyxHQUFHLGtCQUFrQjtRQUNwSDtNQUNEO01BQ0EsSUFBSXVCLE1BQU0sQ0FBQzVCLGFBQWEsQ0FBQ00sU0FBUyxLQUFLLFdBQVcsSUFBSXNCLE1BQU0sQ0FBQ3pDLFFBQVEsS0FBSyxTQUFTLEVBQUU7UUFDcEYsSUFBSXlDLE1BQU0sQ0FBQytCLE9BQU8sRUFBRTtVQUNuQi9CLE1BQU0sQ0FBQ3ZELFdBQVcsR0FBR3VELE1BQU0sQ0FBQytCLE9BQU87UUFDcEMsQ0FBQyxNQUFNO1VBQ04vQixNQUFNLENBQUN2RCxXQUFXLEdBQUd1RCxNQUFNLENBQUMxRCxRQUFRLEdBQUc4TixRQUFRLENBQUMsQ0FBQ3BLLE1BQU0sQ0FBQzFELFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxHQUFHMEUsU0FBUztRQUNoRztNQUNEO0lBQ0QsQ0FBQztJQUNEa0Isb0JBQW9CLEVBQUUsVUFBVWxDLE1BQXVCLEVBQUU2QixjQUFtQyxFQUFRO01BQUE7TUFDbkcsSUFBSXdJLG9CQUFvQixHQUFHLEVBQUU7TUFDN0JBLG9CQUFvQixHQUFHeEosZUFBZSxDQUFDeUosb0NBQW9DLENBQUN6SSxjQUFjLGFBQWRBLGNBQWMsaURBQWRBLGNBQWMsQ0FBRWtCLFlBQVkscUZBQTVCLHVCQUE4Qm9CLFdBQVcsMkRBQXpDLHVCQUEyQ0MsTUFBTSxDQUFDOztNQUU5SDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUNFLElBQUksQ0FBQyxDQUFDcEUsTUFBTSxDQUFDL0IsY0FBYyxJQUFJLE9BQU8rQixNQUFNLENBQUMvQixjQUFjLEtBQUssUUFBUSxJQUFJK0IsTUFBTSxDQUFDL0IsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtRQUM3R29NLG9CQUFvQixDQUFDNUYsSUFBSSxDQUFDO1VBQ3pCc0QsR0FBRyxFQUFFL0gsTUFBTSxDQUFDL0IsY0FBYyxDQUFDc00sTUFBTSxDQUFDLENBQUMsRUFBRXZLLE1BQU0sQ0FBQy9CLGNBQWMsQ0FBQ21JLE1BQU0sR0FBRyxDQUFDLENBQUM7VUFDdEVvRSxLQUFLLEVBQUV4SyxNQUFNLENBQUMvQjtRQUNmLENBQUMsQ0FBQztNQUNIO01BQ0ErQixNQUFNLENBQUMxQyxlQUFlLEdBQUd1RCxlQUFlLENBQUM0SixrQkFBa0IsQ0FBQ0osb0JBQW9CLENBQUM7TUFDakY7TUFDQSxJQUFJLENBQUNySyxNQUFNLENBQUMvQixjQUFjLElBQUk0RCxjQUFjLENBQUNpRyxvQkFBb0IsQ0FBQzFCLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDN0V2RSxjQUFjLENBQUNpRyxvQkFBb0IsQ0FBQzFILE9BQU8sQ0FBQyxVQUFVc0ssV0FBVyxFQUFFO1VBQUE7VUFDbEUsSUFBSUEsV0FBVyxhQUFYQSxXQUFXLHdDQUFYQSxXQUFXLENBQUV2RyxXQUFXLDRFQUF4QixzQkFBMEJDLE1BQU0sbURBQWhDLHVCQUFrQ2dCLGNBQWMsRUFBRTtZQUNyRHBGLE1BQU0sQ0FBQy9CLGNBQWMsR0FBR3lNLFdBQVcsQ0FBQ3ZHLFdBQVcsQ0FBQ0MsTUFBTSxDQUFDZ0IsY0FBYztZQUNyRXBGLE1BQU0sQ0FBQzlCLDZCQUE2QixHQUFHLElBQUk7VUFDNUM7UUFDRCxDQUFDLENBQUM7TUFDSDtJQUNELENBQUM7SUFDRHdJLHdCQUF3QixFQUFFLFVBQVUxRyxNQUF1QixFQUFFTyxVQUFlLEVBQVE7TUFDbkZQLE1BQU0sQ0FBQzJLLG1CQUFtQixHQUFHLElBQUk7TUFDakMsSUFDQyxDQUFBcEssVUFBVSxhQUFWQSxVQUFVLHVCQUFWQSxVQUFVLENBQUVsRCxLQUFLLG9FQUF3RCxJQUN6RWtELFVBQVUsQ0FBQ3FLLG1CQUFtQixLQUFLNUosU0FBUyxJQUM1Q21HLE1BQU0sQ0FBQ25ILE1BQU0sQ0FBQzVCLGFBQWEsQ0FBQ2lCLHlCQUF5QixDQUFDLEtBQUssTUFBTSxFQUNoRTtRQUNEVyxNQUFNLENBQUMySyxtQkFBbUIsR0FBR3RGLGlCQUFpQixDQUFDSiwyQkFBMkIsQ0FBQzFFLFVBQVUsQ0FBQ3FLLG1CQUFtQixDQUFDLENBQUM7TUFDNUc7SUFDRDtFQUNELENBQUMsQ0FBQztFQUFDLE9BRVloUCxLQUFLO0FBQUEifQ==
@@ -132,6 +132,7 @@ export type FieldProperties = {
132
132
  _vhFlexId?: string;
133
133
  visible?: string;
134
134
  hasSemanticObjectOnNavigation?: boolean;
135
+ linkUrl: CompiledBindingToolkitExpression;
135
136
  };
136
137
 
137
138
  type FieldType = {
@@ -363,6 +364,10 @@ const Field = MacroMetadata.extend("sap.fe.macros.internal.Field", {
363
364
  type: "boolean",
364
365
  required: false
365
366
  },
367
+ linkUrl: {
368
+ type: "string",
369
+ required: false
370
+ },
366
371
  formatOptions: {
367
372
  type: "object",
368
373
  properties: {
@@ -792,6 +797,7 @@ const Field = MacroMetadata.extend("sap.fe.macros.internal.Field", {
792
797
 
793
798
  if (oDataField.Criticality) {
794
799
  oProps.hasQuickViewFacets = hasQuickViewFacets;
800
+ oProps.linkUrl = oDataField.Url ? compileExpression(getExpressionFromAnnotation(oDataField.Url)) : undefined;
795
801
  oProps.displayStyle = "ObjectStatus";
796
802
  return;
797
803
  }
@@ -5,6 +5,7 @@
5
5
  xmlns:control="sap.fe.core.controls"
6
6
  xmlns:macro="sap.fe.macros"
7
7
  xmlns:unittest="http://schemas.sap.com/sapui5/preprocessorextension/sap.fe.unittesting/1"
8
+ xmlns:customData="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1"
8
9
  template:require="{
9
10
  CRIT: 'sap/fe/core/templating/CriticalityFormatters',
10
11
  UI: 'sap/fe/core/templating/UIFormatters',
@@ -33,6 +34,22 @@
33
34
  </control:contentFalse>
34
35
  </control:ConditionalWrapper>
35
36
  </template:then>
37
+ <template:elseif test="{this>linkUrl}">
38
+ <ObjectStatus
39
+ id="{this>noWrapperId}"
40
+ unittest:id="MacroDataFieldObjectStatusWithUrl"
41
+ icon="{= CRIT.buildExpressionForCriticalityIcon(${dataField>@@UI.getDataModelObjectPath})}"
42
+ state="{= CRIT.buildExpressionForCriticalityColor(${dataField>@@UI.getDataModelObjectPath})}"
43
+ text="{this>text}"
44
+ visible="{this>displayVisible}"
45
+ emptyIndicatorMode="{this>emptyIndicatorMode}"
46
+ core:require="{FieldRuntime: 'sap/fe/macros/field/FieldRuntime'}"
47
+ active="true"
48
+ press="FieldRuntime.openExternalLink"
49
+ ariaLabelledBy="{this>ariaLabelledBy}"
50
+ customData:url="{this>linkUrl}"
51
+ />
52
+ </template:elseif>
36
53
  <template:else>
37
54
  <ObjectStatus
38
55
  id="{this>noWrapperId}"
@@ -29,7 +29,7 @@ sap.ui.define(["sap/fe/core/library", "sap/fe/macros/filter/type/MultiValue", "s
29
29
  controls: [],
30
30
  elements: [],
31
31
  // eslint-disable-next-line no-template-curly-in-string
32
- version: "1.108.12",
32
+ version: "1.108.13",
33
33
  noLibraryCSS: true
34
34
  });
35
35
  thisLib.NavigationType = {