@sapui5/sap.fe.test 1.108.0 → 1.108.1

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.test",
3
- "version": "1.108.0",
3
+ "version": "1.108.1",
4
4
  "description": "SAPUI5 Library sap.fe.test",
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.0</version>
9
+ <version>1.108.1</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.test</documentation>
12
12
 
@@ -592,7 +592,9 @@ sap.ui.define(["@sap/cds-compiler", "fs", "path", "prettier", "sap/base/Log", "s
592
592
 
593
593
  if (sAggregationName) {
594
594
  if (control.getParent()) {
595
- var indexInParent = control.getParent().getAggregation(sAggregationName).indexOf(control);
595
+ var _control$getParent$ge, _control$getParent$ge2;
596
+
597
+ var indexInParent = (_control$getParent$ge = control.getParent().getAggregation(sAggregationName)) === null || _control$getParent$ge === void 0 ? void 0 : (_control$getParent$ge2 = _control$getParent$ge.indexOf) === null || _control$getParent$ge2 === void 0 ? void 0 : _control$getParent$ge2.call(_control$getParent$ge, control);
596
598
 
597
599
  if (indexInParent > 0) {
598
600
  controlDetail += ",\n".concat(getTab());
@@ -677,4 +679,4 @@ sap.ui.define(["@sap/cds-compiler", "fs", "path", "prettier", "sap/base/Log", "s
677
679
  _exports.createAwaiter = createAwaiter;
678
680
  return _exports;
679
681
  }, false);
680
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9jZXNzRnJhZ21lbnQiLCJuYW1lIiwidGVzdERhdGEiLCJpbnB1dFhtbCIsInBhcnNlciIsIndpbmRvdyIsIkRPTVBhcnNlciIsImlucHV0RG9jIiwicGFyc2VGcm9tU3RyaW5nIiwic2V0dGluZ3MiLCJtb2RlbHMiLCJiaW5kaW5nQ29udGV4dHMiLCJtb2RlbCIsImpzb25Nb2RlbCIsIkpTT05Nb2RlbCIsInNldERhdGEiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsIlhNTFByZXByb2Nlc3NvciIsInByb2Nlc3MiLCJmaXJzdEVsZW1lbnRDaGlsZCIsInJlc3VsdERvYyIsImZyYWdtZW50cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwibGVuZ3RoIiwiZnJhZ21lbnQiLCJpbm5lckhUTUwiLCJ4bWxSZXN1bHQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsImZvcm1hdFhtbCIsImZpbHRlciIsIm5vZGUiLCJ0eXBlIiwicmVxdWlyZSIsIkxvZyIsInNldExldmVsIiwiamVzdCIsInNldFRpbWVvdXQiLCJuYW1lU3BhY2VNYXAiLCJzZWxlY3QiLCJ4cGF0aCIsInVzZU5hbWVzcGFjZXMiLCJyZWdpc3Rlck1hY3JvIiwibWFjcm9NZXRhZGF0YSIsInJlZ2lzdGVyQnVpbGRpbmdCbG9jayIsInVucmVnaXN0ZXJNYWNybyIsInBsdWdJbiIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJ1blhQYXRoUXVlcnkiLCJzZWxlY3RvciIsInhtbGRvbSIsImV4cGVjdCIsImV4dGVuZCIsInRvSGF2ZUNvbnRyb2wiLCJub2RlcyIsIm1lc3NhZ2UiLCJvdXRwdXRYbWwiLCJzZXJpYWxpemVYTUwiLCJwYXNzIiwidG9Ob3RIYXZlQ29udHJvbCIsImZvcm1hdEJ1aWxkaW5nQmxvY2tYTUwiLCJ4bWxTdHJpbmciLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwieG1sRm9ybWF0dGVkIiwiZm9ybWF0WE1MIiwicmVwbGFjZSIsImdldENvbnRyb2xBdHRyaWJ1dGUiLCJjb250cm9sU2VsZWN0b3IiLCJhdHRyaWJ1dGVOYW1lIiwieG1sRG9tIiwic2VyaWFsaXplciIsIlhNTFNlcmlhbGl6ZXIiLCJzZXJpYWxpemVUb1N0cmluZyIsImZvcm1hdCIsInhtbFdoaXRlc3BhY2VTZW5zaXRpdml0eSIsImNvbXBpbGVDRFMiLCJjZHNVcmwiLCJvcHRpb25zIiwiZWRteEZpbGVOYW1lIiwicGF0aCIsImJhc2VuYW1lIiwiY2RzU3RyaW5nIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlZG14Q29udGVudCIsImNkczJlZG14IiwiZGlyIiwicmVzb2x2ZSIsImVkbXhGaWxlUGF0aCIsIm1rZGlyU3luYyIsInJlY3Vyc2l2ZSIsIndyaXRlRmlsZVN5bmMiLCJjZHMiLCJzZXJ2aWNlIiwic291cmNlcyIsImluY2x1ZGVzIiwiY3NuIiwiY29tcGlsZXIiLCJjb21waWxlU291cmNlcyIsImVkbXhPcHRpb25zIiwib2RhdGFGb3JlaWduS2V5cyIsIm9kYXRhRm9ybWF0Iiwib2RhdGFDb250YWlubWVudCIsImVkbXgiLCJ0byIsIkVycm9yIiwiZ2V0RmFrZVNpZGVFZmZlY3RzU2VydmljZSIsIm9NZXRhTW9kZWwiLCJvU2VydmljZUNvbnRleHQiLCJzY29wZU9iamVjdCIsInNjb3BlVHlwZSIsIlNpZGVFZmZlY3RzRmFjdG9yeSIsImNyZWF0ZUluc3RhbmNlIiwidGhlbiIsIm9TZXJ2aWNlSW5zdGFuY2UiLCJvSmVzdFNpZGVFZmZlY3RzU2VydmljZSIsImdldEludGVyZmFjZSIsImdldENvbnRleHQiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImdldEZha2VEaWFnbm9zdGljcyIsImlzc3VlcyIsImFkZElzc3VlIiwiaXNzdWVDYXRlZ29yeSIsImlzc3VlU2V2ZXJpdHkiLCJkZXRhaWxzIiwicHVzaCIsImdldElzc3VlcyIsImNoZWNrSWZJc3N1ZUV4aXN0cyIsImZpbmQiLCJpc3N1ZSIsImdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0IiwiY29udmVydGVkVHlwZXMiLCJtYW5pZmVzdFNldHRpbmdzIiwiZW50aXR5U2V0IiwiZW50aXR5U2V0cyIsImVzIiwiZGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSIsIkNvbnZlcnRlckNvbnRleHQiLCJtZXJnZSIsIm1ldGFNb2RlbENhY2hlIiwic01ldGFkYXRhVXJsIiwib1JlcXVlc3RvciIsIl9NZXRhZGF0YVJlcXVlc3RvciIsImNyZWF0ZSIsIk9EYXRhTWV0YU1vZGVsIiwidW5kZWZpbmVkIiwiZmV0Y2hFbnRpdHlDb250YWluZXIiLCJwcm9wZXJ0eSIsInRhcmdldFBhdGgiLCJzdGFydGluZ0VudGl0eVNldCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwidGFyZ2V0T2JqZWN0IiwidGFyZ2V0RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJjb250ZXh0TG9jYXRpb24iLCJldmFsdWF0ZUJpbmRpbmciLCJiaW5kaW5nU3RyaW5nIiwiYmluZGluZ0VsZW1lbnQiLCJCaW5kaW5nUGFyc2VyIiwiY29tcGxleFBhcnNlciIsImFyZ3MiLCJmb3JtYXR0ZXIiLCJhcHBseSIsImV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbCIsIm1vZGVsQ29udGVudCIsIm5hbWVkTW9kZWxzQ29udGVudCIsInRleHQiLCJJbnZpc2libGVUZXh0IiwiYmluZFByb3BlcnR5IiwiZGVmYXVsdE1vZGVsIiwic2V0TW9kZWwiLCJzZXRCaW5kaW5nQ29udGV4dCIsIk9iamVjdCIsImVudHJpZXMiLCJjb250ZW50IiwiZ2V0VGV4dCIsIlRFU1RWSUVXSUQiLCJhcHBseUZsZXhDaGFuZ2VzIiwiYVZhcmlhbnREZXBlbmRlbnRDb250cm9sQ2hhbmdlcyIsInJlc3VsdFhNTCIsImNyZWF0ZUNoYW5nZXNPYmplY3QiLCJjaGFuZ2VzIiwiYXBwSWQiLCJvTWFuaWZlc3QiLCJpZCIsImNyb3NzTmF2aWdhdGlvbiIsIm91dGJvdW5kcyIsIm9BcHBDb21wb25lbnQiLCJnZXREaWFnbm9zdGljcyIsImZuIiwibW9ja1JldHVyblZhbHVlIiwiZ2V0Q29tcG9uZW50RGF0YSIsImdldE1hbmlmZXN0T2JqZWN0IiwiZ2V0RW50cnkiLCJzcHlPbiIsIkFwcFN0b3JhZ2UiLCJQcm9taXNlIiwiQ29tcG9uZW50IiwiVXRpbHMiLCJGbGV4U3RhdGUiLCJpbml0aWFsaXplIiwiY29tcG9uZW50SWQiLCJYbWxQcmVwcm9jZXNzb3IiLCJnZXRDaGFuZ2VzRnJvbVhNTCIsInhtbCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmbGF0TWFwIiwiZSIsImF0dHJpYnV0ZXMiLCJtYXAiLCJhIiwiYXR0ciIsImdldFRlbXBsYXRpbmdSZXN1bHQiLCJ4bWxJbnB1dCIsIm1CaW5kaW5nQ29udGV4dHMiLCJtTW9kZWxzIiwidGVtcGxhdGVkWG1sIiwieG1sRG9jIiwiaGFzT3duUHJvcGVydHkiLCJhc3NpZ24iLCJUZW1wbGF0ZU1vZGVsIiwia2V5cyIsImZvckVhY2giLCJzTW9kZWxOYW1lIiwiaXNUZW1wbGF0ZU1vZGVsIiwiZGF0YSIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsIm1ldGFNb2RlbCIsInNLZXkiLCJnZXRPYmplY3QiLCJ0b0JlRGVmaW5lZCIsIm9Nb2RlbCIsImNoYW5nZXNBcHBsaWVkIiwidG9CZSIsImdldFRlbXBsYXRlZFhNTCIsInNlcmlhbGl6ZUNvbnRyb2wiLCJjb250cm9sVG9TZXJpYWxpemUiLCJ0YWJDb3VudCIsImdldFRhYiIsInRvQWRkIiwidGFiIiwiaSIsInNlcmlhbGl6ZURlbGVnYXRlIiwic3RhcnQiLCJjb250cm9sIiwic0FnZ3JlZ2F0aW9uTmFtZSIsImNvbnRyb2xEZXRhaWwiLCJnZXRQYXJlbnQiLCJpbmRleEluUGFyZW50IiwiZ2V0QWdncmVnYXRpb24iLCJpbmRleE9mIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZW5kIiwibWlkZGxlIiwiZ2V0SWQiLCJvQ29udHJvbEtleSIsIm1Qcm9wZXJ0aWVzIiwibUJpbmRpbmdJbmZvcyIsImJpbmRpbmdEZXRhaWwiLCJwYXJ0cyIsImJpbmRpbmdJbmZvIiwibUFzc29jaWF0aW9ucyIsInN0YXJ0QWdncmVnYXRpb24iLCJzTmFtZSIsIm91dCIsImVuZEFnZ3JlZ2F0aW9uIiwiY29udHJvbFRvUmVuZGVyIiwiU2VyaWFsaXplciIsInNlcmlhbGl6ZSIsImNyZWF0ZUF3YWl0ZXIiLCJmblJlc29sdmUiLCJteVByb21pc2UiLCJwcm9taXNlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJKZXN0VGVtcGxhdGluZ0hlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFueUFubm90YXRpb24sIENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgY29tcGlsZXIgZnJvbSBcIkBzYXAvY2RzLWNvbXBpbGVyXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgUmVxdWlyZWRPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7IHJlZ2lzdGVyQnVpbGRpbmdCbG9jayB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrUnVudGltZVwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBJRGlhZ25vc3RpY3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2lkZUVmZmVjdHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFRlbXBsYXRlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBCaW5kaW5nUGFyc2VyIGZyb20gXCJzYXAvdWkvYmFzZS9CaW5kaW5nUGFyc2VyXCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEludmlzaWJsZVRleHQgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVRleHRcIjtcbmltcG9ydCBTZXJpYWxpemVyIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL3NlcmlhbGl6ZXIvU2VyaWFsaXplclwiO1xuaW1wb3J0IFhNTFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbmltcG9ydCBGbGV4U3RhdGUgZnJvbSBcInNhcC91aS9mbC9hcHBseS9faW50ZXJuYWwvZmxleFN0YXRlL0ZsZXhTdGF0ZVwiO1xuaW1wb3J0IFhtbFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2ZsL2FwcGx5L19pbnRlcm5hbC9wcmVwcm9jZXNzb3JzL1htbFByZXByb2Nlc3NvclwiO1xuaW1wb3J0IEFwcFN0b3JhZ2UgZnJvbSBcInNhcC91aS9mbC9pbml0aWFsL19pbnRlcm5hbC9TdG9yYWdlXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSBcInNhcC91aS9mbC9VdGlsc1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IE1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01ldGFNb2RlbFwiO1xuaW1wb3J0IF9NZXRhZGF0YVJlcXVlc3RvciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L2xpYi9fTWV0YWRhdGFSZXF1ZXN0b3JcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeHBhdGggZnJvbSBcInhwYXRoXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuY29uc3QgZm9ybWF0WG1sID0gcmVxdWlyZShcInhtbC1mb3JtYXR0ZXJcIik7XG5cbkxvZy5zZXRMZXZlbCgxIGFzIGFueSwgXCJzYXAudWkuY29yZS51dGlsLlhNTFByZXByb2Nlc3NvclwiKTtcbmplc3Quc2V0VGltZW91dCg0MDAwMCk7XG5cbmNvbnN0IG5hbWVTcGFjZU1hcCA9IHtcblx0XCJtYWNyb3NcIjogXCJzYXAuZmUubWFjcm9zXCIsXG5cdFwibWFjcm9cIjogXCJzYXAuZmUubWFjcm9zXCIsXG5cdFwibWFjcm9GaWVsZFwiOiBcInNhcC5mZS5tYWNyb3MuZmllbGRcIixcblx0XCJtYWNyb2RhdGFcIjogXCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUuQ3VzdG9tRGF0YS8xXCIsXG5cdFwibG9nXCI6IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiLFxuXHRcInVuaXR0ZXN0XCI6IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvcHJlcHJvY2Vzc29yZXh0ZW5zaW9uL3NhcC5mZS51bml0dGVzdGluZy8xXCIsXG5cdFwiY29udHJvbFwiOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xzXCIsXG5cdFwiY29yZVwiOiBcInNhcC51aS5jb3JlXCIsXG5cdFwibVwiOiBcInNhcC5tXCIsXG5cdFwiZlwiOiBcInNhcC51aS5sYXlvdXQuZm9ybVwiLFxuXHRcImludGVybmFsTWFjcm9cIjogXCJzYXAuZmUubWFjcm9zLmludGVybmFsXCIsXG5cdFwibWRjXCI6IFwic2FwLnVpLm1kY1wiLFxuXHRcIm1kY2F0XCI6IFwic2FwLnVpLm1kYy5hY3Rpb250b29sYmFyXCIsXG5cdFwibWRjRmllbGRcIjogXCJzYXAudWkubWRjLmZpZWxkXCIsXG5cdFwibWRjVGFibGVcIjogXCJzYXAudWkubWRjLnRhYmxlXCIsXG5cdFwidVwiOiBcInNhcC51aS51bmlmaWVkXCIsXG5cdFwibWFjcm9NaWNyb0NoYXJ0XCI6IFwic2FwLmZlLm1hY3Jvcy5taWNyb2NoYXJ0XCIsXG5cdFwibWljcm9DaGFydFwiOiBcInNhcC5zdWl0ZS51aS5taWNyb2NoYXJ0XCIsXG5cdFwibWFjcm9UYWJsZVwiOiBcInNhcC5mZS5tYWNyb3MudGFibGVcIlxufTtcbmNvbnN0IHNlbGVjdCA9IHhwYXRoLnVzZU5hbWVzcGFjZXMobmFtZVNwYWNlTWFwKTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyTWFjcm8gPSBmdW5jdGlvbiAobWFjcm9NZXRhZGF0YTogYW55KSB7XG5cdHJlZ2lzdGVyQnVpbGRpbmdCbG9jayhtYWNyb01ldGFkYXRhKTtcbn07XG5leHBvcnQgY29uc3QgdW5yZWdpc3Rlck1hY3JvID0gZnVuY3Rpb24gKG1hY3JvTWV0YWRhdGE6IGFueSkge1xuXHRYTUxQcmVwcm9jZXNzb3IucGx1Z0luKG51bGwsIG1hY3JvTWV0YWRhdGEubmFtZXNwYWNlLCBtYWNyb01ldGFkYXRhLm5hbWUpO1xuXHRpZiAobWFjcm9NZXRhZGF0YS5wdWJsaWNOYW1lc3BhY2UpIHtcblx0XHRYTUxQcmVwcm9jZXNzb3IucGx1Z0luKG51bGwsIG1hY3JvTWV0YWRhdGEucHVibGljTmFtZXNwYWNlLCBtYWNyb01ldGFkYXRhLm5hbWUpO1xuXHR9XG59O1xuZXhwb3J0IGNvbnN0IHJ1blhQYXRoUXVlcnkgPSBmdW5jdGlvbiAoc2VsZWN0b3I6IHN0cmluZywgeG1sZG9tOiBOb2RlIHwgdW5kZWZpbmVkKSB7XG5cdHJldHVybiBzZWxlY3Qoc2VsZWN0b3IsIHhtbGRvbSk7XG59O1xuXG5leHBlY3QuZXh0ZW5kKHtcblx0dG9IYXZlQ29udHJvbCh4bWxkb20sIHNlbGVjdG9yKSB7XG5cdFx0Y29uc3Qgbm9kZXMgPSBydW5YUGF0aFF1ZXJ5KGAvcm9vdCR7c2VsZWN0b3J9YCwgeG1sZG9tKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bWVzc2FnZTogKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvdXRwdXRYbWwgPSBzZXJpYWxpemVYTUwoeG1sZG9tKTtcblx0XHRcdFx0cmV0dXJuIGBkaWQgbm90IGZpbmQgY29udHJvbHMgbWF0Y2hpbmcgJHtzZWxlY3Rvcn0gaW4gZ2VuZXJhdGVkIHhtbDpcXG4gJHtvdXRwdXRYbWx9YDtcblx0XHRcdH0sXG5cdFx0XHRwYXNzOiBub2RlcyAmJiBub2Rlcy5sZW5ndGggPj0gMVxuXHRcdH07XG5cdH0sXG5cdHRvTm90SGF2ZUNvbnRyb2woeG1sZG9tLCBzZWxlY3Rvcikge1xuXHRcdGNvbnN0IG5vZGVzID0gcnVuWFBhdGhRdWVyeShgL3Jvb3Qke3NlbGVjdG9yfWAsIHhtbGRvbSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG1lc3NhZ2U6ICgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3V0cHV0WG1sID0gc2VyaWFsaXplWE1MKHhtbGRvbSk7XG5cdFx0XHRcdHJldHVybiBgVGhlcmUgaXMgYSBjb250cm9sIG1hdGNoaW5nICR7c2VsZWN0b3J9IGluIGdlbmVyYXRlZCB4bWw6XFxuICR7b3V0cHV0WG1sfWA7XG5cdFx0XHR9LFxuXHRcdFx0cGFzczogbm9kZXMgJiYgbm9kZXMubGVuZ3RoID09PSAwXG5cdFx0fTtcblx0fVxufSk7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRCdWlsZGluZ0Jsb2NrWE1MID0gZnVuY3Rpb24gKHhtbFN0cmluZzogc3RyaW5nIHwgc3RyaW5nW10pIHtcblx0aWYgKEFycmF5LmlzQXJyYXkoeG1sU3RyaW5nKSkge1xuXHRcdHhtbFN0cmluZyA9IHhtbFN0cmluZy5qb2luKFwiXCIpO1xuXHR9XG5cdGxldCB4bWxGb3JtYXR0ZWQgPSBmb3JtYXRYTUwoeG1sU3RyaW5nKTtcblx0eG1sRm9ybWF0dGVkID0geG1sRm9ybWF0dGVkLnJlcGxhY2UoL3VpZC0taWQtWzAtOV17MTN9LVswLTldezEsMn0vZywgXCJ1aWQtLWlkXCIpO1xuXHRyZXR1cm4geG1sRm9ybWF0dGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRyb2xBdHRyaWJ1dGUgPSBmdW5jdGlvbiAoY29udHJvbFNlbGVjdG9yOiBzdHJpbmcsIGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgeG1sRG9tOiBOb2RlKSB7XG5cdGNvbnN0IHNlbGVjdG9yID0gYHN0cmluZygvcm9vdCR7Y29udHJvbFNlbGVjdG9yfS9AJHthdHRyaWJ1dGVOYW1lfSlgO1xuXHRyZXR1cm4gcnVuWFBhdGhRdWVyeShzZWxlY3RvciwgeG1sRG9tKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVYTUwgPSBmdW5jdGlvbiAoeG1sRG9tOiBOb2RlKSB7XG5cdGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgd2luZG93LlhNTFNlcmlhbGl6ZXIoKTtcblx0Y29uc3QgeG1sU3RyaW5nID0gc2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyh4bWxEb20pO1xuXHRyZXR1cm4gZm9ybWF0WE1MKHhtbFN0cmluZyk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0WE1MID0gZnVuY3Rpb24gKHhtbFN0cmluZzogc3RyaW5nKSB7XG5cdHJldHVybiBmb3JtYXQoXG5cdFx0eG1sU3RyaW5nLFxuXHRcdHsgcGFyc2VyOiBcInhtbFwiLCB4bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHk6IFwiaWdub3JlXCIgfSBhcyBQYXJ0aWFsPFJlcXVpcmVkT3B0aW9ucz4gLyogb3B0aW9ucyBieSB0aGUgUHJldHRpZXIgWE1MIHBsdWdpbiAqL1xuXHQpO1xufTtcblxuLyoqXG4gKiBDb21waWxlIGEgQ0RTIGZpbGUgaW50byBhbiBFRE1YIGZpbGUuXG4gKlxuICogQHBhcmFtIGNkc1VybCBUaGUgcGF0aCB0byB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBDRFMgZGVmaW5pdGlvbi4gVGhpcyBmaWxlIG11c3QgZGVjbGFyZSB0aGUgbmFtZXNwYWNlXG4gKiBzYXAuZmUudGVzdCBhbmQgYSBzZXJ2aWNlIEplc3RTZXJ2aWNlXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBjcmVhdGluZyB0aGUgRURNWCBvdXRwdXRcbiAqIEBwYXJhbSBlZG14RmlsZU5hbWUgQWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGUgbmFtZSBvZiB0aGUgY29tcGlsZWQgRURNWCBtZXRhZGF0YSBmaWxlXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgZ2VuZXJhdGVkIEVETVhcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBpbGVDRFMgPSBmdW5jdGlvbiAoXG5cdGNkc1VybDogc3RyaW5nLFxuXHRvcHRpb25zOiBjb21waWxlci5PRGF0YU9wdGlvbnMgPSB7fSxcblx0ZWRteEZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShjZHNVcmwpLnJlcGxhY2UoXCIuY2RzXCIsIFwiLnhtbFwiKVxuKSB7XG5cdGNvbnN0IGNkc1N0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhjZHNVcmwsIFwidXRmLThcIik7XG5cdGNvbnN0IGVkbXhDb250ZW50ID0gY2RzMmVkbXgoY2RzU3RyaW5nLCBcInNhcC5mZS50ZXN0Lkplc3RTZXJ2aWNlXCIsIG9wdGlvbnMpO1xuXHRjb25zdCBkaXIgPSBwYXRoLnJlc29sdmUoY2RzVXJsLCBcIi4uXCIsIFwiZ2VuXCIpO1xuXG5cdGNvbnN0IGVkbXhGaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShkaXIsIGVkbXhGaWxlTmFtZSk7XG5cblx0ZnMubWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0ZnMud3JpdGVGaWxlU3luYyhlZG14RmlsZVBhdGgsIGVkbXhDb250ZW50KTtcblx0cmV0dXJuIGVkbXhGaWxlUGF0aDtcbn07XG5cbi8qKlxuICogQ29tcGlsZSBDRFMgdG8gRURNWC5cbiAqXG4gKiBAcGFyYW0gY2RzIFRoZSBDRFMgbW9kZWwuIEl0IG11c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSBzZXJ2aWNlLlxuICogQHBhcmFtIHNlcnZpY2UgVGhlIGZ1bGx5LXF1YWxpZmllZCBuYW1lIG9mIHRoZSBzZXJ2aWNlIHRvIGJlIGNvbXBpbGVkLiBEZWZhdWx0cyB0byBcInNhcC5mZS50ZXN0Lkplc3RTZXJ2aWNlXCIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBjcmVhdGluZyB0aGUgRURNWCBvdXRwdXRcbiAqIEByZXR1cm5zIFRoZSBjb21waWxlZCBzZXJ2aWNlIG1vZGVsIGFzIEVETVguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjZHMyZWRteChjZHM6IHN0cmluZywgc2VydmljZSA9IFwic2FwLmZlLnRlc3QuSmVzdFNlcnZpY2VcIiwgb3B0aW9uczogY29tcGlsZXIuT0RhdGFPcHRpb25zID0ge30pIHtcblx0Y29uc3Qgc291cmNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgXCJzb3VyY2UuY2RzXCI6IGNkcyB9O1xuXG5cdC8vIGFsbG93IHRvIGluY2x1ZGUgc3R1ZmYgZnJvbSBAc2FwL2Nkcy9jb21tb25cblx0aWYgKGNkcy5pbmNsdWRlcyhcIidAc2FwL2Nkcy9jb21tb24nXCIpKSB7XG5cdFx0c291cmNlc1tcImNvbW1vbi5jZHNcIl0gPSBmcy5yZWFkRmlsZVN5bmMocmVxdWlyZS5yZXNvbHZlKFwiQHNhcC9jZHMvY29tbW9uLmNkc1wiKSwgXCJ1dGYtOFwiKTtcblx0fVxuXG5cdGNvbnN0IGNzbiA9IGNvbXBpbGVyLmNvbXBpbGVTb3VyY2VzKHNvdXJjZXMsIHt9KTtcblxuXHRjb25zdCBlZG14T3B0aW9uczogY29tcGlsZXIuT0RhdGFPcHRpb25zID0ge1xuXHRcdG9kYXRhRm9yZWlnbktleXM6IHRydWUsXG5cdFx0b2RhdGFGb3JtYXQ6IFwic3RydWN0dXJlZFwiLFxuXHRcdG9kYXRhQ29udGFpbm1lbnQ6IGZhbHNlLFxuXHRcdC4uLm9wdGlvbnMsXG5cdFx0c2VydmljZTogc2VydmljZVxuXHR9O1xuXG5cdGNvbnN0IGVkbXggPSBjb21waWxlci50by5lZG14KGNzbiwgZWRteE9wdGlvbnMpO1xuXHRpZiAoIWVkbXgpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGF0aW9uIGZhaWxlZC4gSGludDogTWFrZSBzdXJlIHRoYXQgdGhlIENEUyBtb2RlbCBkZWZpbmVzIHNlcnZpY2UgJHtzZXJ2aWNlfS5gKTtcblx0fVxuXHRyZXR1cm4gZWRteDtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZha2VTaWRlRWZmZWN0c1NlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpOiBQcm9taXNlPGFueT4ge1xuXHRjb25zdCBvU2VydmljZUNvbnRleHQgPSB7IHNjb3BlT2JqZWN0OiB7fSwgc2NvcGVUeXBlOiBcIlwiLCBzZXR0aW5nczoge30gfTtcblx0cmV0dXJuIG5ldyBTaWRlRWZmZWN0c0ZhY3RvcnkoKS5jcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQpLnRoZW4oZnVuY3Rpb24gKG9TZXJ2aWNlSW5zdGFuY2U6IGFueSkge1xuXHRcdGNvbnN0IG9KZXN0U2lkZUVmZmVjdHNTZXJ2aWNlID0gb1NlcnZpY2VJbnN0YW5jZS5nZXRJbnRlcmZhY2UoKTtcblx0XHRvSmVzdFNpZGVFZmZlY3RzU2VydmljZS5nZXRDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0c2NvcGVPYmplY3Q6IHtcblx0XHRcdFx0XHRnZXRNb2RlbDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0Z2V0TWV0YU1vZGVsOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG9NZXRhTW9kZWw7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0cmV0dXJuIG9KZXN0U2lkZUVmZmVjdHNTZXJ2aWNlO1xuXHR9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGYWtlRGlhZ25vc3RpY3MgPSBmdW5jdGlvbiAoKTogSURpYWdub3N0aWNzIHtcblx0Y29uc3QgaXNzdWVzOiBhbnlbXSA9IFtdO1xuXHRyZXR1cm4ge1xuXHRcdGFkZElzc3VlKGlzc3VlQ2F0ZWdvcnk6IElzc3VlQ2F0ZWdvcnksIGlzc3VlU2V2ZXJpdHk6IElzc3VlU2V2ZXJpdHksIGRldGFpbHM6IHN0cmluZyk6IHZvaWQge1xuXHRcdFx0aXNzdWVzLnB1c2goe1xuXHRcdFx0XHRpc3N1ZUNhdGVnb3J5LFxuXHRcdFx0XHRpc3N1ZVNldmVyaXR5LFxuXHRcdFx0XHRkZXRhaWxzXG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdGdldElzc3VlcygpOiBhbnlbXSB7XG5cdFx0XHRyZXR1cm4gaXNzdWVzO1xuXHRcdH0sXG5cdFx0Y2hlY2tJZklzc3VlRXhpc3RzKGlzc3VlQ2F0ZWdvcnk6IElzc3VlQ2F0ZWdvcnksIGlzc3VlU2V2ZXJpdHk6IElzc3VlU2V2ZXJpdHksIGRldGFpbHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIGlzc3Vlcy5maW5kKChpc3N1ZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gaXNzdWUuaXNzdWVDYXRlZ29yeSA9PT0gaXNzdWVDYXRlZ29yeSAmJiBpc3N1ZS5pc3N1ZVNldmVyaXR5ID09PSBpc3N1ZVNldmVyaXR5ICYmIGlzc3VlLmRldGFpbHMgPT09IGRldGFpbHM7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVydGVyQ29udGV4dEZvclRlc3QgPSBmdW5jdGlvbiAoXG5cdGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZWRNZXRhZGF0YSxcblx0bWFuaWZlc3RTZXR0aW5nczogTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MgfCBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5nc1xuKSB7XG5cdGNvbnN0IGVudGl0eVNldCA9IGNvbnZlcnRlZFR5cGVzLmVudGl0eVNldHMuZmluZCgoZXMpID0+IGVzLm5hbWUgPT09IG1hbmlmZXN0U2V0dGluZ3MuZW50aXR5U2V0KTtcblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQgYXMgRW50aXR5U2V0LCBjb252ZXJ0ZWRUeXBlcywgZW50aXR5U2V0KTtcblx0cmV0dXJuIG5ldyBDb252ZXJ0ZXJDb250ZXh0KGNvbnZlcnRlZFR5cGVzLCBtYW5pZmVzdFNldHRpbmdzLCBnZXRGYWtlRGlhZ25vc3RpY3MoKSwgbWVyZ2UsIGRhdGFNb2RlbFBhdGgpO1xufTtcbmNvbnN0IG1ldGFNb2RlbENhY2hlOiBhbnkgPSB7fTtcbmV4cG9ydCBjb25zdCBnZXRNZXRhTW9kZWwgPSBhc3luYyBmdW5jdGlvbiAoc01ldGFkYXRhVXJsOiBzdHJpbmcpIHtcblx0Y29uc3Qgb1JlcXVlc3RvciA9IF9NZXRhZGF0YVJlcXVlc3Rvci5jcmVhdGUoe30sIFwiNC4wXCIsIHt9KTtcblx0aWYgKCFtZXRhTW9kZWxDYWNoZVtzTWV0YWRhdGFVcmxdKSB7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG5ldyAoT0RhdGFNZXRhTW9kZWwgYXMgYW55KShvUmVxdWVzdG9yLCBzTWV0YWRhdGFVcmwsIHVuZGVmaW5lZCwgbnVsbCk7XG5cdFx0YXdhaXQgb01ldGFNb2RlbC5mZXRjaEVudGl0eUNvbnRhaW5lcigpO1xuXHRcdG1ldGFNb2RlbENhY2hlW3NNZXRhZGF0YVVybF0gPSBvTWV0YU1vZGVsO1xuXHR9XG5cblx0cmV0dXJuIG1ldGFNb2RlbENhY2hlW3NNZXRhZGF0YVVybF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZnVuY3Rpb24gKFxuXHRlbnRpdHlTZXQ6IEVudGl0eVNldCxcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLFxuXHRwcm9wZXJ0eT86IFByb3BlcnR5IHwgRW50aXR5U2V0IHwgQW55QW5ub3RhdGlvblxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGNvbnN0IHRhcmdldFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggPSB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IGVudGl0eVNldCxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW10sXG5cdFx0dGFyZ2V0T2JqZWN0OiBwcm9wZXJ0eSxcblx0XHR0YXJnZXRFbnRpdHlTZXQ6IGVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBlbnRpdHlTZXQuZW50aXR5VHlwZSxcblx0XHRjb252ZXJ0ZWRUeXBlczogY29udmVydGVkVHlwZXNcblx0fTtcblx0dGFyZ2V0UGF0aC5jb250ZXh0TG9jYXRpb24gPSB0YXJnZXRQYXRoO1xuXHRyZXR1cm4gdGFyZ2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBldmFsdWF0ZUJpbmRpbmcgPSBmdW5jdGlvbiAoYmluZGluZ1N0cmluZzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuXHRjb25zdCBiaW5kaW5nRWxlbWVudCA9IEJpbmRpbmdQYXJzZXIuY29tcGxleFBhcnNlcihiaW5kaW5nU3RyaW5nKTtcblx0cmV0dXJuIGJpbmRpbmdFbGVtZW50LmZvcm1hdHRlci5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xufTtcblxudHlwZSBNb2RlbENvbnRlbnQgPSB7XG5cdFtuYW1lOiBzdHJpbmddOiBhbnk7XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIGEgYmluZGluZyBhZ2FpbnN0IGEgbW9kZWwuXG4gKlxuICogQHBhcmFtIGJpbmRpbmdTdHJpbmcgVGhlIGJpbmRpbmcgc3RyaW5nLlxuICogQHBhcmFtIG1vZGVsQ29udGVudCBDb250ZW50IG9mIHRoZSBkZWZhdWx0IG1vZGVsIHRvIHVzZSBmb3IgZXZhbHVhdGlvbi5cbiAqIEBwYXJhbSBuYW1lZE1vZGVsc0NvbnRlbnQgQ29udGVudHMgb2YgYWRkaXRpb25hbCwgbmFtZWQgbW9kZWxzIHRvIHVzZS5cbiAqIEByZXR1cm5zIFRoZSBldmFsdWF0ZWQgYmluZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbChcblx0YmluZGluZ1N0cmluZzogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRtb2RlbENvbnRlbnQ6IE1vZGVsQ29udGVudCxcblx0bmFtZWRNb2RlbHNDb250ZW50PzogeyBbbW9kZWxOYW1lOiBzdHJpbmddOiBNb2RlbENvbnRlbnQgfVxuKTogc3RyaW5nIHtcblx0Y29uc3QgYmluZGluZ0VsZW1lbnQgPSBCaW5kaW5nUGFyc2VyLmNvbXBsZXhQYXJzZXIoYmluZGluZ1N0cmluZyk7XG5cdGNvbnN0IHRleHQgPSBuZXcgSW52aXNpYmxlVGV4dCgpO1xuXHR0ZXh0LmJpbmRQcm9wZXJ0eShcInRleHRcIiwgYmluZGluZ0VsZW1lbnQpO1xuXG5cdGNvbnN0IGRlZmF1bHRNb2RlbCA9IG5ldyBKU09OTW9kZWwobW9kZWxDb250ZW50KTtcblx0dGV4dC5zZXRNb2RlbChkZWZhdWx0TW9kZWwpO1xuXHR0ZXh0LnNldEJpbmRpbmdDb250ZXh0KGRlZmF1bHRNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgYXMgQ29udGV4dCk7XG5cblx0aWYgKG5hbWVkTW9kZWxzQ29udGVudCkge1xuXHRcdGZvciAoY29uc3QgW25hbWUsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKG5hbWVkTW9kZWxzQ29udGVudCkpIHtcblx0XHRcdGNvbnN0IG1vZGVsID0gbmV3IEpTT05Nb2RlbChjb250ZW50KTtcblx0XHRcdHRleHQuc2V0TW9kZWwobW9kZWwsIG5hbWUpO1xuXHRcdFx0dGV4dC5zZXRCaW5kaW5nQ29udGV4dChtb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgYXMgQ29udGV4dCwgbmFtZSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRleHQuZ2V0VGV4dCgpO1xufVxuXG5jb25zdCBURVNUVklFV0lEID0gXCJ0ZXN0Vmlld0lkXCI7XG5cbmV4cG9ydCBjb25zdCBhcHBseUZsZXhDaGFuZ2VzID0gYXN5bmMgZnVuY3Rpb24gKFxuXHRhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzOiBhbnlbXSxcblx0b01ldGFNb2RlbDogTWV0YU1vZGVsLFxuXHRyZXN1bHRYTUw6IGFueSxcblx0Y3JlYXRlQ2hhbmdlc09iamVjdDogRnVuY3Rpb25cbikge1xuXHRjb25zdCBjaGFuZ2VzID0gY3JlYXRlQ2hhbmdlc09iamVjdChURVNUVklFV0lELCBhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzKTtcblx0Y29uc3QgYXBwSWQgPSBcInNvbWVDb21wb25lbnRcIjtcblx0Y29uc3Qgb01hbmlmZXN0ID0ge1xuXHRcdFwic2FwLmFwcFwiOiB7XG5cdFx0XHRpZDogYXBwSWQsXG5cdFx0XHR0eXBlOiBcImFwcGxpY2F0aW9uXCIsXG5cdFx0XHRjcm9zc05hdmlnYXRpb246IHtcblx0XHRcdFx0b3V0Ym91bmRzOiBbXVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0Y29uc3Qgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50ID0ge1xuXHRcdGdldERpYWdub3N0aWNzOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKGdldEZha2VEaWFnbm9zdGljcygpKSxcblx0XHRnZXRNb2RlbDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG5cdFx0XHRnZXRNZXRhTW9kZWw6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUob01ldGFNb2RlbClcblx0XHR9KSxcblx0XHRnZXRDb21wb25lbnREYXRhOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHt9KSxcblx0XHRnZXRNYW5pZmVzdE9iamVjdDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG5cdFx0XHRnZXRFbnRyeTogZnVuY3Rpb24gKG5hbWU6IHN0cmluZykge1xuXHRcdFx0XHRyZXR1cm4gKG9NYW5pZmVzdCBhcyBhbnkpW25hbWVdO1xuXHRcdFx0fVxuXHRcdH0pXG5cdH0gYXMgdW5rbm93biBhcyBBcHBDb21wb25lbnQ7XG5cdC8vZmFrZSBjaGFuZ2VzXG5cdGplc3Quc3B5T24oQXBwU3RvcmFnZSwgXCJsb2FkRmxleERhdGFcIikubW9ja1JldHVyblZhbHVlKFByb21pc2UucmVzb2x2ZShjaGFuZ2VzKSk7XG5cdGplc3Quc3B5T24oQ29tcG9uZW50LCBcImdldFwiKS5tb2NrUmV0dXJuVmFsdWUob0FwcENvbXBvbmVudCk7XG5cdGplc3Quc3B5T24oVXRpbHMsIFwiZ2V0QXBwQ29tcG9uZW50Rm9yQ29udHJvbFwiKS5tb2NrUmV0dXJuVmFsdWUob0FwcENvbXBvbmVudCk7XG5cdGF3YWl0IEZsZXhTdGF0ZS5pbml0aWFsaXplKHtcblx0XHRjb21wb25lbnRJZDogYXBwSWRcblx0fSk7XG5cdHJlc3VsdFhNTCA9IGF3YWl0IFhtbFByZXByb2Nlc3Nvci5wcm9jZXNzKHJlc3VsdFhNTCwgeyBuYW1lOiBcIlRlc3QgRnJhZ21lbnRcIiwgY29tcG9uZW50SWQ6IGFwcElkLCBpZDogVEVTVFZJRVdJRCB9KTtcblx0cmV0dXJuIHJlc3VsdFhNTDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDaGFuZ2VzRnJvbVhNTCA9ICh4bWw6IGFueSkgPT5cblx0Wy4uLnhtbC5xdWVyeVNlbGVjdG9yQWxsKFwiKlwiKV1cblx0XHQuZmxhdE1hcCgoZSkgPT4gWy4uLmUuYXR0cmlidXRlc10ubWFwKChhKSA9PiBhLm5hbWUpKVxuXHRcdC5maWx0ZXIoKGF0dHIpID0+IGF0dHIuaW5jbHVkZXMoXCJzYXAudWkuZmwuYXBwbGllZENoYW5nZXNcIikpO1xuXG5leHBvcnQgY29uc3QgZ2V0VGVtcGxhdGluZ1Jlc3VsdCA9IGFzeW5jIGZ1bmN0aW9uIChcblx0eG1sSW5wdXQ6IHN0cmluZyxcblx0c01ldGFkYXRhVXJsOiBzdHJpbmcsXG5cdG1CaW5kaW5nQ29udGV4dHM6IHsgW3g6IHN0cmluZ106IGFueTsgZW50aXR5U2V0Pzogc3RyaW5nIH0sXG5cdG1Nb2RlbHM6IHsgW3g6IHN0cmluZ106IGFueSB9LFxuXHRhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzPzogYW55W10sXG5cdGNyZWF0ZUNoYW5nZXNPYmplY3Q/OiBGdW5jdGlvblxuKSB7XG5cdGNvbnN0IHRlbXBsYXRlZFhtbCA9IGA8cm9vdD4ke3htbElucHV0fTwvcm9vdD5gO1xuXHRjb25zdCBwYXJzZXIgPSBuZXcgd2luZG93LkRPTVBhcnNlcigpO1xuXHRjb25zdCB4bWxEb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHRlbXBsYXRlZFhtbCwgXCJ0ZXh0L3htbFwiKTtcblx0Ly8gVG8gZW5zdXJlIG91ciBtYWNybyBjYW4gdXNlICNzZXRCaW5kaW5nQ29udGV4dCB3ZSBlbnN1cmUgdGhlcmUgaXMgYSBwcmUgZXhpc3RpbmcgSlNPTk1vZGVsIGZvciBjb252ZXJ0ZXJDb250ZXh0XG5cdC8vIGlmIG5vdCBhbHJlYWR5IHBhc3NlZCB0byB0ZWggdGVtcGxhdGluZ1xuXG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBhd2FpdCBnZXRNZXRhTW9kZWwoc01ldGFkYXRhVXJsKTtcblx0aWYgKCFtTW9kZWxzLmhhc093blByb3BlcnR5KFwiY29udmVydGVyQ29udGV4dFwiKSkge1xuXHRcdG1Nb2RlbHMgPSBPYmplY3QuYXNzaWduKG1Nb2RlbHMsIHsgXCJjb252ZXJ0ZXJDb250ZXh0XCI6IG5ldyBUZW1wbGF0ZU1vZGVsKHt9LCBvTWV0YU1vZGVsKSB9KTtcblx0fVxuXG5cdE9iamVjdC5rZXlzKG1Nb2RlbHMpLmZvckVhY2goZnVuY3Rpb24gKHNNb2RlbE5hbWUpIHtcblx0XHRpZiAobU1vZGVsc1tzTW9kZWxOYW1lXSAmJiBtTW9kZWxzW3NNb2RlbE5hbWVdLmlzVGVtcGxhdGVNb2RlbCkge1xuXHRcdFx0bU1vZGVsc1tzTW9kZWxOYW1lXSA9IG5ldyBUZW1wbGF0ZU1vZGVsKG1Nb2RlbHNbc01vZGVsTmFtZV0uZGF0YSwgb01ldGFNb2RlbCk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBvUHJlcHJvY2Vzc29yU2V0dGluZ3M6IGFueSA9IHtcblx0XHRtb2RlbHM6IE9iamVjdC5hc3NpZ24oXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbFxuXHRcdFx0fSxcblx0XHRcdG1Nb2RlbHNcblx0XHQpLFxuXHRcdGJpbmRpbmdDb250ZXh0czoge31cblx0fTtcblxuXHQvL0luamVjdCBtb2RlbHMgYW5kIGJpbmRpbmdDb250ZXh0c1xuXHRPYmplY3Qua2V5cyhtQmluZGluZ0NvbnRleHRzKS5mb3JFYWNoKGZ1bmN0aW9uIChzS2V5KSB7XG5cdFx0LyogQXNzZXJ0IHRvIG1ha2Ugc3VyZSB0aGUgYW5ub3RhdGlvbnMgYXJlIGluIHRoZSB0ZXN0IG1ldGFkYXRhIC0+IGF2b2lkIG1pc2xlYWRpbmcgdGVzdHMgKi9cblx0XHRleHBlY3QodHlwZW9mIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KG1CaW5kaW5nQ29udGV4dHNbc0tleV0pKS50b0JlRGVmaW5lZCgpO1xuXHRcdGNvbnN0IG9Nb2RlbCA9IG1Nb2RlbHNbc0tleV0gfHwgb01ldGFNb2RlbDtcblx0XHRvUHJlcHJvY2Vzc29yU2V0dGluZ3MuYmluZGluZ0NvbnRleHRzW3NLZXldID0gb01vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1CaW5kaW5nQ29udGV4dHNbc0tleV0pOyAvL1ZhbHVlIGlzIHNQYXRoXG5cdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzLm1vZGVsc1tzS2V5XSA9IG9Nb2RlbDtcblx0fSk7XG5cblx0Ly9UaGlzIGNvbnRleHQgZm9yIG1hY3JvIHRlc3Rpbmdcblx0aWYgKG9QcmVwcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHNbXCJ0aGlzXCJdKSB7XG5cdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzLmJpbmRpbmdDb250ZXh0c1tcInRoaXNcIl0gPSBvUHJlcHJvY2Vzc29yU2V0dGluZ3MubW9kZWxzW1widGhpc1wiXS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIik7XG5cdH1cblxuXHRsZXQgcmVzdWx0WE1MID0gYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3MoeG1sRG9jLmZpcnN0RWxlbWVudENoaWxkISwgeyBuYW1lOiBcIlRlc3QgRnJhZ21lbnRcIiB9LCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MpO1xuXG5cdGlmIChhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzICYmIGNyZWF0ZUNoYW5nZXNPYmplY3QpIHtcblx0XHQvLyBwcmVmaXggSWRzXG5cdFx0Wy4uLnJlc3VsdFhNTC5xdWVyeVNlbGVjdG9yQWxsKFwiW2lkXVwiKV0uZm9yRWFjaCgobm9kZSkgPT4ge1xuXHRcdFx0bm9kZS5pZCA9IGAke1RFU1RWSUVXSUR9LS0ke25vZGUuaWR9YDtcblx0XHR9KTtcblx0XHQvLyBhcHBseSBmbGV4IGNoYW5nZXNcblx0XHRyZXN1bHRYTUwgPSBhd2FpdCBhcHBseUZsZXhDaGFuZ2VzKGFWYXJpYW50RGVwZW5kZW50Q29udHJvbENoYW5nZXMsIG9NZXRhTW9kZWwsIHJlc3VsdFhNTCwgY3JlYXRlQ2hhbmdlc09iamVjdCk7XG5cdFx0Ly9Bc3NlcnQgdGhhdCBhbGwgY2hhbmdlcyBoYXZlIGJlZW4gYXBwbGllZFxuXHRcdGNvbnN0IGNoYW5nZXNBcHBsaWVkID0gZ2V0Q2hhbmdlc0Zyb21YTUwocmVzdWx0WE1MKTtcblx0XHRleHBlY3QoY2hhbmdlc0FwcGxpZWQubGVuZ3RoKS50b0JlKGFWYXJpYW50RGVwZW5kZW50Q29udHJvbENoYW5nZXMubGVuZ3RoKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0WE1MO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRlbXBsYXRlZFhNTCA9IGFzeW5jIGZ1bmN0aW9uIChcblx0eG1sSW5wdXQ6IHN0cmluZyxcblx0c01ldGFkYXRhVXJsOiBzdHJpbmcsXG5cdG1CaW5kaW5nQ29udGV4dHM6IHsgW3g6IHN0cmluZ106IGFueTsgZW50aXR5U2V0Pzogc3RyaW5nIH0sXG5cdG1Nb2RlbHM6IHsgW3g6IHN0cmluZ106IGFueSB9LFxuXHRhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzPzogYW55W10sXG5cdGNyZWF0ZUNoYW5nZXNPYmplY3Q/OiBGdW5jdGlvblxuKSB7XG5cdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRpbmdSZXN1bHQoXG5cdFx0eG1sSW5wdXQsXG5cdFx0c01ldGFkYXRhVXJsLFxuXHRcdG1CaW5kaW5nQ29udGV4dHMsXG5cdFx0bU1vZGVscyxcblx0XHRhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzLFxuXHRcdGNyZWF0ZUNoYW5nZXNPYmplY3Rcblx0KTtcblx0cmV0dXJuIHNlcmlhbGl6ZVhNTCh0ZW1wbGF0ZWRYTUwpO1xufTtcblxuLyoqXG4gKiBQcm9jZXNzIHRoZSByZXF1ZXN0ZWQgWE1MIGZyYWdtZW50IHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuXG4gKlxuICogQHBhcmFtIG5hbWUgRnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIHRlc3RlZC5cbiAqIEBwYXJhbSB0ZXN0RGF0YSBUZXN0IGRhdGEgY29uc2lzdGluZ1xuICogQHJldHVybnMgVGVtcGxhdGVkIGZyYWdtZW50IGFzIHN0cmluZ1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0ZyYWdtZW50KG5hbWU6IHN0cmluZywgdGVzdERhdGE6IHsgW21vZGVsOiBzdHJpbmddOiBvYmplY3QgfSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdGNvbnN0IGlucHV0WG1sID0gYDxyb290Pjxjb3JlOkZyYWdtZW50IGZyYWdtZW50TmFtZT1cIiR7bmFtZX1cIiB0eXBlPVwiWE1MXCIgeG1sbnM6Y29yZT1cInNhcC51aS5jb3JlXCIgLz48L3Jvb3Q+YDtcblx0Y29uc3QgcGFyc2VyID0gbmV3IHdpbmRvdy5ET01QYXJzZXIoKTtcblx0Y29uc3QgaW5wdXREb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGlucHV0WG1sLCBcInRleHQveG1sXCIpO1xuXG5cdC8vIGJ1aWxkIG1vZGVsIGFuZCBiaW5kaW5ncyBmb3IgZ2l2ZW4gdGVzdCBkYXRhXG5cdGNvbnN0IHNldHRpbmdzID0ge1xuXHRcdG1vZGVsczoge30gYXMgeyBbbmFtZTogc3RyaW5nXTogSlNPTk1vZGVsIH0sXG5cdFx0YmluZGluZ0NvbnRleHRzOiB7fSBhcyB7IFtuYW1lOiBzdHJpbmddOiBvYmplY3QgfVxuXHR9O1xuXHRmb3IgKGNvbnN0IG1vZGVsIGluIHRlc3REYXRhKSB7XG5cdFx0Y29uc3QganNvbk1vZGVsID0gbmV3IEpTT05Nb2RlbCgpO1xuXHRcdGpzb25Nb2RlbC5zZXREYXRhKHRlc3REYXRhW21vZGVsXSk7XG5cdFx0c2V0dGluZ3MubW9kZWxzW21vZGVsXSA9IGpzb25Nb2RlbDtcblx0XHRzZXR0aW5ncy5iaW5kaW5nQ29udGV4dHNbbW9kZWxdID0gc2V0dGluZ3MubW9kZWxzW21vZGVsXS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgYXMgQ29udGV4dDtcblx0fVxuXG5cdC8vIGV4ZWN1dGUgdGhlIHByZS1wcm9jZXNzb3Jcblx0Y29uc3QgcmVzdWx0RG9jID0gYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3MoaW5wdXREb2MuZmlyc3RFbGVtZW50Q2hpbGQsIHsgbmFtZSB9LCBzZXR0aW5ncyk7XG5cblx0Ly8gZXhjbHVkZSBuZXN0ZWQgZnJhZ21lbnRzIGZyb20gdGVzdCBzbmFwc2hvdHNcblx0Y29uc3QgZnJhZ21lbnRzID0gcmVzdWx0RG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiY29yZTpGcmFnbWVudFwiKTtcblx0aWYgKGZyYWdtZW50cz8ubGVuZ3RoID4gMCkge1xuXHRcdGZvciAoY29uc3QgZnJhZ21lbnQgb2YgZnJhZ21lbnRzKSB7XG5cdFx0XHRmcmFnbWVudC5pbm5lckhUTUwgPSBcIlwiO1xuXHRcdH1cblx0fVxuXG5cdC8vIEtlZXAgdGhlIGZyYWdtZW50IHJlc3VsdCBhcyBjaGlsZCBvZiByb290IG5vZGUgd2hlbiBmcmFnbWVudCBnZW5lcmF0ZXMgbXVsdGlwbGUgcm9vdCBjb250cm9sc1xuXHRjb25zdCB4bWxSZXN1bHQgPSByZXN1bHREb2MuY2hpbGRyZW4ubGVuZ3RoID4gMSA/IHJlc3VsdERvYy5vdXRlckhUTUwgOiByZXN1bHREb2MuaW5uZXJIVE1MO1xuXG5cdHJldHVybiBmb3JtYXRYbWwoeG1sUmVzdWx0LCB7XG5cdFx0ZmlsdGVyOiAobm9kZTogYW55KSA9PiBub2RlLnR5cGUgIT09IFwiQ29tbWVudFwiXG5cdH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplQ29udHJvbChjb250cm9sVG9TZXJpYWxpemU6IENvbnRyb2wgfCBDb250cm9sW10pIHtcblx0bGV0IHRhYkNvdW50ID0gMDtcblx0ZnVuY3Rpb24gZ2V0VGFiKHRvQWRkOiBudW1iZXIgPSAwKSB7XG5cdFx0bGV0IHRhYiA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0YWJDb3VudCArIHRvQWRkOyBpKyspIHtcblx0XHRcdHRhYiArPSBcIlxcdFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGFiO1xuXHR9XG5cdGNvbnN0IHNlcmlhbGl6ZURlbGVnYXRlID0ge1xuXHRcdHN0YXJ0OiBmdW5jdGlvbiAoY29udHJvbDogYW55LCBzQWdncmVnYXRpb25OYW1lOiBzdHJpbmcpIHtcblx0XHRcdGxldCBjb250cm9sRGV0YWlsID0gXCJcIjtcblx0XHRcdGlmIChzQWdncmVnYXRpb25OYW1lKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLmdldFBhcmVudCgpKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5kZXhJblBhcmVudCA9IChjb250cm9sLmdldFBhcmVudCgpLmdldEFnZ3JlZ2F0aW9uKHNBZ2dyZWdhdGlvbk5hbWUpIGFzIE1hbmFnZWRPYmplY3RbXSkuaW5kZXhPZihjb250cm9sKTtcblx0XHRcdFx0XHRpZiAoaW5kZXhJblBhcmVudCA+IDApIHtcblx0XHRcdFx0XHRcdGNvbnRyb2xEZXRhaWwgKz0gYCxcXG4ke2dldFRhYigpfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250cm9sRGV0YWlsICs9IGAke2NvbnRyb2wuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9KGA7XG5cdFx0XHRyZXR1cm4gY29udHJvbERldGFpbDtcblx0XHR9LFxuXHRcdGVuZDogZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIFwifSlcIjtcblx0XHR9LFxuXHRcdG1pZGRsZTogZnVuY3Rpb24gKGNvbnRyb2w6IGFueSkge1xuXHRcdFx0bGV0IGRhdGEgPSBge2lkOiAke2NvbnRyb2wuZ2V0SWQoKX1gO1xuXHRcdFx0Zm9yIChjb25zdCBvQ29udHJvbEtleSBpbiBjb250cm9sLm1Qcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLm1Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG9Db250cm9sS2V5KSkge1xuXHRcdFx0XHRcdGRhdGEgKz0gYCxcXG4ke2dldFRhYigpfSAke29Db250cm9sS2V5fTogJHtjb250cm9sLm1Qcm9wZXJ0aWVzW29Db250cm9sS2V5XX1gO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wubUJpbmRpbmdJbmZvcy5oYXNPd25Qcm9wZXJ0eShvQ29udHJvbEtleSkpIHtcblx0XHRcdFx0XHRjb25zdCBiaW5kaW5nRGV0YWlsID0gY29udHJvbC5tQmluZGluZ0luZm9zW29Db250cm9sS2V5XTtcblx0XHRcdFx0XHRkYXRhICs9IGAsXFxuJHtnZXRUYWIoKX0gJHtvQ29udHJvbEtleX06IGZvcm1hdHRlcigke2JpbmRpbmdEZXRhaWwucGFydHMubWFwKFxuXHRcdFx0XHRcdFx0KGJpbmRpbmdJbmZvOiBhbnkpID0+IGBcXG4ke2dldFRhYigxKX0ke2JpbmRpbmdJbmZvLm1vZGVsID8gYmluZGluZ0luZm8ubW9kZWwgOiBcIlwifT4ke2JpbmRpbmdJbmZvLnBhdGh9YFxuXHRcdFx0XHRcdCl9KWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3Qgb0NvbnRyb2xLZXkgaW4gY29udHJvbC5tQXNzb2NpYXRpb25zKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLm1Bc3NvY2lhdGlvbnMuaGFzT3duUHJvcGVydHkob0NvbnRyb2xLZXkpKSB7XG5cdFx0XHRcdFx0ZGF0YSArPSBgLFxcbiR7Z2V0VGFiKCl9ICR7b0NvbnRyb2xLZXl9OiAke2NvbnRyb2wubUFzc29jaWF0aW9uc1tvQ29udHJvbEtleV1bMF19YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZGF0YSArPSBgYDtcblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH0sXG5cdFx0c3RhcnRBZ2dyZWdhdGlvbjogZnVuY3Rpb24gKGNvbnRyb2w6IGFueSwgc05hbWU6IHN0cmluZykge1xuXHRcdFx0bGV0IG91dCA9IGAsXFxuJHtnZXRUYWIoKX0ke3NOYW1lfWA7XG5cdFx0XHR0YWJDb3VudCsrO1xuXG5cdFx0XHRpZiAoY29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXSkge1xuXHRcdFx0XHRvdXQgKz0gYD17IHBhdGg6JyR7Y29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXS5wYXRofScsIHRlbXBsYXRlOlxcbiR7Z2V0VGFiKCl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG91dCArPSBgPVtcXG4ke2dldFRhYigpfWA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3V0O1xuXHRcdH0sXG5cdFx0ZW5kQWdncmVnYXRpb246IGZ1bmN0aW9uIChjb250cm9sOiBhbnksIHNOYW1lOiBzdHJpbmcpIHtcblx0XHRcdHRhYkNvdW50LS07XG5cdFx0XHRpZiAoY29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXSkge1xuXHRcdFx0XHRyZXR1cm4gYFxcbiR7Z2V0VGFiKCl9fWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYFxcbiR7Z2V0VGFiKCl9XWA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoQXJyYXkuaXNBcnJheShjb250cm9sVG9TZXJpYWxpemUpKSB7XG5cdFx0cmV0dXJuIGNvbnRyb2xUb1NlcmlhbGl6ZS5tYXAoKGNvbnRyb2xUb1JlbmRlcjogQ29udHJvbCkgPT4ge1xuXHRcdFx0cmV0dXJuIG5ldyBTZXJpYWxpemVyKGNvbnRyb2xUb1JlbmRlciwgc2VyaWFsaXplRGVsZWdhdGUpLnNlcmlhbGl6ZSgpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBuZXcgU2VyaWFsaXplcihjb250cm9sVG9TZXJpYWxpemUsIHNlcmlhbGl6ZURlbGVnYXRlKS5zZXJpYWxpemUoKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXdhaXRlcigpIHtcblx0bGV0IGZuUmVzb2x2ZSE6IEZ1bmN0aW9uO1xuXHRjb25zdCBteVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdGZuUmVzb2x2ZSA9IHJlc29sdmU7XG5cdH0pO1xuXHRyZXR1cm4geyBwcm9taXNlOiBteVByb21pc2UsIHJlc29sdmU6IGZuUmVzb2x2ZSB9O1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvYkE7QUFDQTtB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
682
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcm9jZXNzRnJhZ21lbnQiLCJuYW1lIiwidGVzdERhdGEiLCJpbnB1dFhtbCIsInBhcnNlciIsIndpbmRvdyIsIkRPTVBhcnNlciIsImlucHV0RG9jIiwicGFyc2VGcm9tU3RyaW5nIiwic2V0dGluZ3MiLCJtb2RlbHMiLCJiaW5kaW5nQ29udGV4dHMiLCJtb2RlbCIsImpzb25Nb2RlbCIsIkpTT05Nb2RlbCIsInNldERhdGEiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsIlhNTFByZXByb2Nlc3NvciIsInByb2Nlc3MiLCJmaXJzdEVsZW1lbnRDaGlsZCIsInJlc3VsdERvYyIsImZyYWdtZW50cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwibGVuZ3RoIiwiZnJhZ21lbnQiLCJpbm5lckhUTUwiLCJ4bWxSZXN1bHQiLCJjaGlsZHJlbiIsIm91dGVySFRNTCIsImZvcm1hdFhtbCIsImZpbHRlciIsIm5vZGUiLCJ0eXBlIiwicmVxdWlyZSIsIkxvZyIsInNldExldmVsIiwiamVzdCIsInNldFRpbWVvdXQiLCJuYW1lU3BhY2VNYXAiLCJzZWxlY3QiLCJ4cGF0aCIsInVzZU5hbWVzcGFjZXMiLCJyZWdpc3Rlck1hY3JvIiwibWFjcm9NZXRhZGF0YSIsInJlZ2lzdGVyQnVpbGRpbmdCbG9jayIsInVucmVnaXN0ZXJNYWNybyIsInBsdWdJbiIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJ1blhQYXRoUXVlcnkiLCJzZWxlY3RvciIsInhtbGRvbSIsImV4cGVjdCIsImV4dGVuZCIsInRvSGF2ZUNvbnRyb2wiLCJub2RlcyIsIm1lc3NhZ2UiLCJvdXRwdXRYbWwiLCJzZXJpYWxpemVYTUwiLCJwYXNzIiwidG9Ob3RIYXZlQ29udHJvbCIsImZvcm1hdEJ1aWxkaW5nQmxvY2tYTUwiLCJ4bWxTdHJpbmciLCJBcnJheSIsImlzQXJyYXkiLCJqb2luIiwieG1sRm9ybWF0dGVkIiwiZm9ybWF0WE1MIiwicmVwbGFjZSIsImdldENvbnRyb2xBdHRyaWJ1dGUiLCJjb250cm9sU2VsZWN0b3IiLCJhdHRyaWJ1dGVOYW1lIiwieG1sRG9tIiwic2VyaWFsaXplciIsIlhNTFNlcmlhbGl6ZXIiLCJzZXJpYWxpemVUb1N0cmluZyIsImZvcm1hdCIsInhtbFdoaXRlc3BhY2VTZW5zaXRpdml0eSIsImNvbXBpbGVDRFMiLCJjZHNVcmwiLCJvcHRpb25zIiwiZWRteEZpbGVOYW1lIiwicGF0aCIsImJhc2VuYW1lIiwiY2RzU3RyaW5nIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlZG14Q29udGVudCIsImNkczJlZG14IiwiZGlyIiwicmVzb2x2ZSIsImVkbXhGaWxlUGF0aCIsIm1rZGlyU3luYyIsInJlY3Vyc2l2ZSIsIndyaXRlRmlsZVN5bmMiLCJjZHMiLCJzZXJ2aWNlIiwic291cmNlcyIsImluY2x1ZGVzIiwiY3NuIiwiY29tcGlsZXIiLCJjb21waWxlU291cmNlcyIsImVkbXhPcHRpb25zIiwib2RhdGFGb3JlaWduS2V5cyIsIm9kYXRhRm9ybWF0Iiwib2RhdGFDb250YWlubWVudCIsImVkbXgiLCJ0byIsIkVycm9yIiwiZ2V0RmFrZVNpZGVFZmZlY3RzU2VydmljZSIsIm9NZXRhTW9kZWwiLCJvU2VydmljZUNvbnRleHQiLCJzY29wZU9iamVjdCIsInNjb3BlVHlwZSIsIlNpZGVFZmZlY3RzRmFjdG9yeSIsImNyZWF0ZUluc3RhbmNlIiwidGhlbiIsIm9TZXJ2aWNlSW5zdGFuY2UiLCJvSmVzdFNpZGVFZmZlY3RzU2VydmljZSIsImdldEludGVyZmFjZSIsImdldENvbnRleHQiLCJnZXRNb2RlbCIsImdldE1ldGFNb2RlbCIsImdldEZha2VEaWFnbm9zdGljcyIsImlzc3VlcyIsImFkZElzc3VlIiwiaXNzdWVDYXRlZ29yeSIsImlzc3VlU2V2ZXJpdHkiLCJkZXRhaWxzIiwicHVzaCIsImdldElzc3VlcyIsImNoZWNrSWZJc3N1ZUV4aXN0cyIsImZpbmQiLCJpc3N1ZSIsImdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0IiwiY29udmVydGVkVHlwZXMiLCJtYW5pZmVzdFNldHRpbmdzIiwiZW50aXR5U2V0IiwiZW50aXR5U2V0cyIsImVzIiwiZGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSIsIkNvbnZlcnRlckNvbnRleHQiLCJtZXJnZSIsIm1ldGFNb2RlbENhY2hlIiwic01ldGFkYXRhVXJsIiwib1JlcXVlc3RvciIsIl9NZXRhZGF0YVJlcXVlc3RvciIsImNyZWF0ZSIsIk9EYXRhTWV0YU1vZGVsIiwidW5kZWZpbmVkIiwiZmV0Y2hFbnRpdHlDb250YWluZXIiLCJwcm9wZXJ0eSIsInRhcmdldFBhdGgiLCJzdGFydGluZ0VudGl0eVNldCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwidGFyZ2V0T2JqZWN0IiwidGFyZ2V0RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJjb250ZXh0TG9jYXRpb24iLCJldmFsdWF0ZUJpbmRpbmciLCJiaW5kaW5nU3RyaW5nIiwiYmluZGluZ0VsZW1lbnQiLCJCaW5kaW5nUGFyc2VyIiwiY29tcGxleFBhcnNlciIsImFyZ3MiLCJmb3JtYXR0ZXIiLCJhcHBseSIsImV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbCIsIm1vZGVsQ29udGVudCIsIm5hbWVkTW9kZWxzQ29udGVudCIsInRleHQiLCJJbnZpc2libGVUZXh0IiwiYmluZFByb3BlcnR5IiwiZGVmYXVsdE1vZGVsIiwic2V0TW9kZWwiLCJzZXRCaW5kaW5nQ29udGV4dCIsIk9iamVjdCIsImVudHJpZXMiLCJjb250ZW50IiwiZ2V0VGV4dCIsIlRFU1RWSUVXSUQiLCJhcHBseUZsZXhDaGFuZ2VzIiwiYVZhcmlhbnREZXBlbmRlbnRDb250cm9sQ2hhbmdlcyIsInJlc3VsdFhNTCIsImNyZWF0ZUNoYW5nZXNPYmplY3QiLCJjaGFuZ2VzIiwiYXBwSWQiLCJvTWFuaWZlc3QiLCJpZCIsImNyb3NzTmF2aWdhdGlvbiIsIm91dGJvdW5kcyIsIm9BcHBDb21wb25lbnQiLCJnZXREaWFnbm9zdGljcyIsImZuIiwibW9ja1JldHVyblZhbHVlIiwiZ2V0Q29tcG9uZW50RGF0YSIsImdldE1hbmlmZXN0T2JqZWN0IiwiZ2V0RW50cnkiLCJzcHlPbiIsIkFwcFN0b3JhZ2UiLCJQcm9taXNlIiwiQ29tcG9uZW50IiwiVXRpbHMiLCJGbGV4U3RhdGUiLCJpbml0aWFsaXplIiwiY29tcG9uZW50SWQiLCJYbWxQcmVwcm9jZXNzb3IiLCJnZXRDaGFuZ2VzRnJvbVhNTCIsInhtbCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmbGF0TWFwIiwiZSIsImF0dHJpYnV0ZXMiLCJtYXAiLCJhIiwiYXR0ciIsImdldFRlbXBsYXRpbmdSZXN1bHQiLCJ4bWxJbnB1dCIsIm1CaW5kaW5nQ29udGV4dHMiLCJtTW9kZWxzIiwidGVtcGxhdGVkWG1sIiwieG1sRG9jIiwiaGFzT3duUHJvcGVydHkiLCJhc3NpZ24iLCJUZW1wbGF0ZU1vZGVsIiwia2V5cyIsImZvckVhY2giLCJzTW9kZWxOYW1lIiwiaXNUZW1wbGF0ZU1vZGVsIiwiZGF0YSIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsIm1ldGFNb2RlbCIsInNLZXkiLCJnZXRPYmplY3QiLCJ0b0JlRGVmaW5lZCIsIm9Nb2RlbCIsImNoYW5nZXNBcHBsaWVkIiwidG9CZSIsImdldFRlbXBsYXRlZFhNTCIsInNlcmlhbGl6ZUNvbnRyb2wiLCJjb250cm9sVG9TZXJpYWxpemUiLCJ0YWJDb3VudCIsImdldFRhYiIsInRvQWRkIiwidGFiIiwiaSIsInNlcmlhbGl6ZURlbGVnYXRlIiwic3RhcnQiLCJjb250cm9sIiwic0FnZ3JlZ2F0aW9uTmFtZSIsImNvbnRyb2xEZXRhaWwiLCJnZXRQYXJlbnQiLCJpbmRleEluUGFyZW50IiwiZ2V0QWdncmVnYXRpb24iLCJpbmRleE9mIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZW5kIiwibWlkZGxlIiwiZ2V0SWQiLCJvQ29udHJvbEtleSIsIm1Qcm9wZXJ0aWVzIiwibUJpbmRpbmdJbmZvcyIsImJpbmRpbmdEZXRhaWwiLCJwYXJ0cyIsImJpbmRpbmdJbmZvIiwibUFzc29jaWF0aW9ucyIsInN0YXJ0QWdncmVnYXRpb24iLCJzTmFtZSIsIm91dCIsImVuZEFnZ3JlZ2F0aW9uIiwiY29udHJvbFRvUmVuZGVyIiwiU2VyaWFsaXplciIsInNlcmlhbGl6ZSIsImNyZWF0ZUF3YWl0ZXIiLCJmblJlc29sdmUiLCJteVByb21pc2UiLCJwcm9taXNlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJKZXN0VGVtcGxhdGluZ0hlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFueUFubm90YXRpb24sIENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgY29tcGlsZXIgZnJvbSBcIkBzYXAvY2RzLWNvbXBpbGVyXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgUmVxdWlyZWRPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7IHJlZ2lzdGVyQnVpbGRpbmdCbG9jayB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrUnVudGltZVwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBJRGlhZ25vc3RpY3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2lkZUVmZmVjdHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFRlbXBsYXRlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCBCaW5kaW5nUGFyc2VyIGZyb20gXCJzYXAvdWkvYmFzZS9CaW5kaW5nUGFyc2VyXCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IEludmlzaWJsZVRleHQgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVRleHRcIjtcbmltcG9ydCBTZXJpYWxpemVyIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL3NlcmlhbGl6ZXIvU2VyaWFsaXplclwiO1xuaW1wb3J0IFhNTFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9YTUxQcmVwcm9jZXNzb3JcIjtcbmltcG9ydCBGbGV4U3RhdGUgZnJvbSBcInNhcC91aS9mbC9hcHBseS9faW50ZXJuYWwvZmxleFN0YXRlL0ZsZXhTdGF0ZVwiO1xuaW1wb3J0IFhtbFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2ZsL2FwcGx5L19pbnRlcm5hbC9wcmVwcm9jZXNzb3JzL1htbFByZXByb2Nlc3NvclwiO1xuaW1wb3J0IEFwcFN0b3JhZ2UgZnJvbSBcInNhcC91aS9mbC9pbml0aWFsL19pbnRlcm5hbC9TdG9yYWdlXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSBcInNhcC91aS9mbC9VdGlsc1wiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBKU09OTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9qc29uL0pTT05Nb2RlbFwiO1xuaW1wb3J0IE1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01ldGFNb2RlbFwiO1xuaW1wb3J0IF9NZXRhZGF0YVJlcXVlc3RvciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L2xpYi9fTWV0YWRhdGFSZXF1ZXN0b3JcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgeHBhdGggZnJvbSBcInhwYXRoXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuY29uc3QgZm9ybWF0WG1sID0gcmVxdWlyZShcInhtbC1mb3JtYXR0ZXJcIik7XG5cbkxvZy5zZXRMZXZlbCgxIGFzIGFueSwgXCJzYXAudWkuY29yZS51dGlsLlhNTFByZXByb2Nlc3NvclwiKTtcbmplc3Quc2V0VGltZW91dCg0MDAwMCk7XG5cbmNvbnN0IG5hbWVTcGFjZU1hcCA9IHtcblx0XCJtYWNyb3NcIjogXCJzYXAuZmUubWFjcm9zXCIsXG5cdFwibWFjcm9cIjogXCJzYXAuZmUubWFjcm9zXCIsXG5cdFwibWFjcm9GaWVsZFwiOiBcInNhcC5mZS5tYWNyb3MuZmllbGRcIixcblx0XCJtYWNyb2RhdGFcIjogXCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUuQ3VzdG9tRGF0YS8xXCIsXG5cdFwibG9nXCI6IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiLFxuXHRcInVuaXR0ZXN0XCI6IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvcHJlcHJvY2Vzc29yZXh0ZW5zaW9uL3NhcC5mZS51bml0dGVzdGluZy8xXCIsXG5cdFwiY29udHJvbFwiOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xzXCIsXG5cdFwiY29yZVwiOiBcInNhcC51aS5jb3JlXCIsXG5cdFwibVwiOiBcInNhcC5tXCIsXG5cdFwiZlwiOiBcInNhcC51aS5sYXlvdXQuZm9ybVwiLFxuXHRcImludGVybmFsTWFjcm9cIjogXCJzYXAuZmUubWFjcm9zLmludGVybmFsXCIsXG5cdFwibWRjXCI6IFwic2FwLnVpLm1kY1wiLFxuXHRcIm1kY2F0XCI6IFwic2FwLnVpLm1kYy5hY3Rpb250b29sYmFyXCIsXG5cdFwibWRjRmllbGRcIjogXCJzYXAudWkubWRjLmZpZWxkXCIsXG5cdFwibWRjVGFibGVcIjogXCJzYXAudWkubWRjLnRhYmxlXCIsXG5cdFwidVwiOiBcInNhcC51aS51bmlmaWVkXCIsXG5cdFwibWFjcm9NaWNyb0NoYXJ0XCI6IFwic2FwLmZlLm1hY3Jvcy5taWNyb2NoYXJ0XCIsXG5cdFwibWljcm9DaGFydFwiOiBcInNhcC5zdWl0ZS51aS5taWNyb2NoYXJ0XCIsXG5cdFwibWFjcm9UYWJsZVwiOiBcInNhcC5mZS5tYWNyb3MudGFibGVcIlxufTtcbmNvbnN0IHNlbGVjdCA9IHhwYXRoLnVzZU5hbWVzcGFjZXMobmFtZVNwYWNlTWFwKTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyTWFjcm8gPSBmdW5jdGlvbiAobWFjcm9NZXRhZGF0YTogYW55KSB7XG5cdHJlZ2lzdGVyQnVpbGRpbmdCbG9jayhtYWNyb01ldGFkYXRhKTtcbn07XG5leHBvcnQgY29uc3QgdW5yZWdpc3Rlck1hY3JvID0gZnVuY3Rpb24gKG1hY3JvTWV0YWRhdGE6IGFueSkge1xuXHRYTUxQcmVwcm9jZXNzb3IucGx1Z0luKG51bGwsIG1hY3JvTWV0YWRhdGEubmFtZXNwYWNlLCBtYWNyb01ldGFkYXRhLm5hbWUpO1xuXHRpZiAobWFjcm9NZXRhZGF0YS5wdWJsaWNOYW1lc3BhY2UpIHtcblx0XHRYTUxQcmVwcm9jZXNzb3IucGx1Z0luKG51bGwsIG1hY3JvTWV0YWRhdGEucHVibGljTmFtZXNwYWNlLCBtYWNyb01ldGFkYXRhLm5hbWUpO1xuXHR9XG59O1xuZXhwb3J0IGNvbnN0IHJ1blhQYXRoUXVlcnkgPSBmdW5jdGlvbiAoc2VsZWN0b3I6IHN0cmluZywgeG1sZG9tOiBOb2RlIHwgdW5kZWZpbmVkKSB7XG5cdHJldHVybiBzZWxlY3Qoc2VsZWN0b3IsIHhtbGRvbSk7XG59O1xuXG5leHBlY3QuZXh0ZW5kKHtcblx0dG9IYXZlQ29udHJvbCh4bWxkb20sIHNlbGVjdG9yKSB7XG5cdFx0Y29uc3Qgbm9kZXMgPSBydW5YUGF0aFF1ZXJ5KGAvcm9vdCR7c2VsZWN0b3J9YCwgeG1sZG9tKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bWVzc2FnZTogKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvdXRwdXRYbWwgPSBzZXJpYWxpemVYTUwoeG1sZG9tKTtcblx0XHRcdFx0cmV0dXJuIGBkaWQgbm90IGZpbmQgY29udHJvbHMgbWF0Y2hpbmcgJHtzZWxlY3Rvcn0gaW4gZ2VuZXJhdGVkIHhtbDpcXG4gJHtvdXRwdXRYbWx9YDtcblx0XHRcdH0sXG5cdFx0XHRwYXNzOiBub2RlcyAmJiBub2Rlcy5sZW5ndGggPj0gMVxuXHRcdH07XG5cdH0sXG5cdHRvTm90SGF2ZUNvbnRyb2woeG1sZG9tLCBzZWxlY3Rvcikge1xuXHRcdGNvbnN0IG5vZGVzID0gcnVuWFBhdGhRdWVyeShgL3Jvb3Qke3NlbGVjdG9yfWAsIHhtbGRvbSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG1lc3NhZ2U6ICgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3V0cHV0WG1sID0gc2VyaWFsaXplWE1MKHhtbGRvbSk7XG5cdFx0XHRcdHJldHVybiBgVGhlcmUgaXMgYSBjb250cm9sIG1hdGNoaW5nICR7c2VsZWN0b3J9IGluIGdlbmVyYXRlZCB4bWw6XFxuICR7b3V0cHV0WG1sfWA7XG5cdFx0XHR9LFxuXHRcdFx0cGFzczogbm9kZXMgJiYgbm9kZXMubGVuZ3RoID09PSAwXG5cdFx0fTtcblx0fVxufSk7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRCdWlsZGluZ0Jsb2NrWE1MID0gZnVuY3Rpb24gKHhtbFN0cmluZzogc3RyaW5nIHwgc3RyaW5nW10pIHtcblx0aWYgKEFycmF5LmlzQXJyYXkoeG1sU3RyaW5nKSkge1xuXHRcdHhtbFN0cmluZyA9IHhtbFN0cmluZy5qb2luKFwiXCIpO1xuXHR9XG5cdGxldCB4bWxGb3JtYXR0ZWQgPSBmb3JtYXRYTUwoeG1sU3RyaW5nKTtcblx0eG1sRm9ybWF0dGVkID0geG1sRm9ybWF0dGVkLnJlcGxhY2UoL3VpZC0taWQtWzAtOV17MTN9LVswLTldezEsMn0vZywgXCJ1aWQtLWlkXCIpO1xuXHRyZXR1cm4geG1sRm9ybWF0dGVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRyb2xBdHRyaWJ1dGUgPSBmdW5jdGlvbiAoY29udHJvbFNlbGVjdG9yOiBzdHJpbmcsIGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgeG1sRG9tOiBOb2RlKSB7XG5cdGNvbnN0IHNlbGVjdG9yID0gYHN0cmluZygvcm9vdCR7Y29udHJvbFNlbGVjdG9yfS9AJHthdHRyaWJ1dGVOYW1lfSlgO1xuXHRyZXR1cm4gcnVuWFBhdGhRdWVyeShzZWxlY3RvciwgeG1sRG9tKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVYTUwgPSBmdW5jdGlvbiAoeG1sRG9tOiBOb2RlKSB7XG5cdGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgd2luZG93LlhNTFNlcmlhbGl6ZXIoKTtcblx0Y29uc3QgeG1sU3RyaW5nID0gc2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyh4bWxEb20pO1xuXHRyZXR1cm4gZm9ybWF0WE1MKHhtbFN0cmluZyk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0WE1MID0gZnVuY3Rpb24gKHhtbFN0cmluZzogc3RyaW5nKSB7XG5cdHJldHVybiBmb3JtYXQoXG5cdFx0eG1sU3RyaW5nLFxuXHRcdHsgcGFyc2VyOiBcInhtbFwiLCB4bWxXaGl0ZXNwYWNlU2Vuc2l0aXZpdHk6IFwiaWdub3JlXCIgfSBhcyBQYXJ0aWFsPFJlcXVpcmVkT3B0aW9ucz4gLyogb3B0aW9ucyBieSB0aGUgUHJldHRpZXIgWE1MIHBsdWdpbiAqL1xuXHQpO1xufTtcblxuLyoqXG4gKiBDb21waWxlIGEgQ0RTIGZpbGUgaW50byBhbiBFRE1YIGZpbGUuXG4gKlxuICogQHBhcmFtIGNkc1VybCBUaGUgcGF0aCB0byB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBDRFMgZGVmaW5pdGlvbi4gVGhpcyBmaWxlIG11c3QgZGVjbGFyZSB0aGUgbmFtZXNwYWNlXG4gKiBzYXAuZmUudGVzdCBhbmQgYSBzZXJ2aWNlIEplc3RTZXJ2aWNlXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBjcmVhdGluZyB0aGUgRURNWCBvdXRwdXRcbiAqIEBwYXJhbSBlZG14RmlsZU5hbWUgQWxsb3dzIHlvdSB0byBvdmVycmlkZSB0aGUgbmFtZSBvZiB0aGUgY29tcGlsZWQgRURNWCBtZXRhZGF0YSBmaWxlXG4gKiBAcmV0dXJucyBUaGUgcGF0aCBvZiB0aGUgZ2VuZXJhdGVkIEVETVhcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBpbGVDRFMgPSBmdW5jdGlvbiAoXG5cdGNkc1VybDogc3RyaW5nLFxuXHRvcHRpb25zOiBjb21waWxlci5PRGF0YU9wdGlvbnMgPSB7fSxcblx0ZWRteEZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShjZHNVcmwpLnJlcGxhY2UoXCIuY2RzXCIsIFwiLnhtbFwiKVxuKSB7XG5cdGNvbnN0IGNkc1N0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhjZHNVcmwsIFwidXRmLThcIik7XG5cdGNvbnN0IGVkbXhDb250ZW50ID0gY2RzMmVkbXgoY2RzU3RyaW5nLCBcInNhcC5mZS50ZXN0Lkplc3RTZXJ2aWNlXCIsIG9wdGlvbnMpO1xuXHRjb25zdCBkaXIgPSBwYXRoLnJlc29sdmUoY2RzVXJsLCBcIi4uXCIsIFwiZ2VuXCIpO1xuXG5cdGNvbnN0IGVkbXhGaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShkaXIsIGVkbXhGaWxlTmFtZSk7XG5cblx0ZnMubWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0ZnMud3JpdGVGaWxlU3luYyhlZG14RmlsZVBhdGgsIGVkbXhDb250ZW50KTtcblx0cmV0dXJuIGVkbXhGaWxlUGF0aDtcbn07XG5cbi8qKlxuICogQ29tcGlsZSBDRFMgdG8gRURNWC5cbiAqXG4gKiBAcGFyYW0gY2RzIFRoZSBDRFMgbW9kZWwuIEl0IG11c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSBzZXJ2aWNlLlxuICogQHBhcmFtIHNlcnZpY2UgVGhlIGZ1bGx5LXF1YWxpZmllZCBuYW1lIG9mIHRoZSBzZXJ2aWNlIHRvIGJlIGNvbXBpbGVkLiBEZWZhdWx0cyB0byBcInNhcC5mZS50ZXN0Lkplc3RTZXJ2aWNlXCIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBjcmVhdGluZyB0aGUgRURNWCBvdXRwdXRcbiAqIEByZXR1cm5zIFRoZSBjb21waWxlZCBzZXJ2aWNlIG1vZGVsIGFzIEVETVguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjZHMyZWRteChjZHM6IHN0cmluZywgc2VydmljZSA9IFwic2FwLmZlLnRlc3QuSmVzdFNlcnZpY2VcIiwgb3B0aW9uczogY29tcGlsZXIuT0RhdGFPcHRpb25zID0ge30pIHtcblx0Y29uc3Qgc291cmNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgXCJzb3VyY2UuY2RzXCI6IGNkcyB9O1xuXG5cdC8vIGFsbG93IHRvIGluY2x1ZGUgc3R1ZmYgZnJvbSBAc2FwL2Nkcy9jb21tb25cblx0aWYgKGNkcy5pbmNsdWRlcyhcIidAc2FwL2Nkcy9jb21tb24nXCIpKSB7XG5cdFx0c291cmNlc1tcImNvbW1vbi5jZHNcIl0gPSBmcy5yZWFkRmlsZVN5bmMocmVxdWlyZS5yZXNvbHZlKFwiQHNhcC9jZHMvY29tbW9uLmNkc1wiKSwgXCJ1dGYtOFwiKTtcblx0fVxuXG5cdGNvbnN0IGNzbiA9IGNvbXBpbGVyLmNvbXBpbGVTb3VyY2VzKHNvdXJjZXMsIHt9KTtcblxuXHRjb25zdCBlZG14T3B0aW9uczogY29tcGlsZXIuT0RhdGFPcHRpb25zID0ge1xuXHRcdG9kYXRhRm9yZWlnbktleXM6IHRydWUsXG5cdFx0b2RhdGFGb3JtYXQ6IFwic3RydWN0dXJlZFwiLFxuXHRcdG9kYXRhQ29udGFpbm1lbnQ6IGZhbHNlLFxuXHRcdC4uLm9wdGlvbnMsXG5cdFx0c2VydmljZTogc2VydmljZVxuXHR9O1xuXG5cdGNvbnN0IGVkbXggPSBjb21waWxlci50by5lZG14KGNzbiwgZWRteE9wdGlvbnMpO1xuXHRpZiAoIWVkbXgpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGF0aW9uIGZhaWxlZC4gSGludDogTWFrZSBzdXJlIHRoYXQgdGhlIENEUyBtb2RlbCBkZWZpbmVzIHNlcnZpY2UgJHtzZXJ2aWNlfS5gKTtcblx0fVxuXHRyZXR1cm4gZWRteDtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZha2VTaWRlRWZmZWN0c1NlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiAob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpOiBQcm9taXNlPGFueT4ge1xuXHRjb25zdCBvU2VydmljZUNvbnRleHQgPSB7IHNjb3BlT2JqZWN0OiB7fSwgc2NvcGVUeXBlOiBcIlwiLCBzZXR0aW5nczoge30gfTtcblx0cmV0dXJuIG5ldyBTaWRlRWZmZWN0c0ZhY3RvcnkoKS5jcmVhdGVJbnN0YW5jZShvU2VydmljZUNvbnRleHQpLnRoZW4oZnVuY3Rpb24gKG9TZXJ2aWNlSW5zdGFuY2U6IGFueSkge1xuXHRcdGNvbnN0IG9KZXN0U2lkZUVmZmVjdHNTZXJ2aWNlID0gb1NlcnZpY2VJbnN0YW5jZS5nZXRJbnRlcmZhY2UoKTtcblx0XHRvSmVzdFNpZGVFZmZlY3RzU2VydmljZS5nZXRDb250ZXh0ID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0c2NvcGVPYmplY3Q6IHtcblx0XHRcdFx0XHRnZXRNb2RlbDogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0Z2V0TWV0YU1vZGVsOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIG9NZXRhTW9kZWw7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH07XG5cdFx0cmV0dXJuIG9KZXN0U2lkZUVmZmVjdHNTZXJ2aWNlO1xuXHR9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGYWtlRGlhZ25vc3RpY3MgPSBmdW5jdGlvbiAoKTogSURpYWdub3N0aWNzIHtcblx0Y29uc3QgaXNzdWVzOiBhbnlbXSA9IFtdO1xuXHRyZXR1cm4ge1xuXHRcdGFkZElzc3VlKGlzc3VlQ2F0ZWdvcnk6IElzc3VlQ2F0ZWdvcnksIGlzc3VlU2V2ZXJpdHk6IElzc3VlU2V2ZXJpdHksIGRldGFpbHM6IHN0cmluZyk6IHZvaWQge1xuXHRcdFx0aXNzdWVzLnB1c2goe1xuXHRcdFx0XHRpc3N1ZUNhdGVnb3J5LFxuXHRcdFx0XHRpc3N1ZVNldmVyaXR5LFxuXHRcdFx0XHRkZXRhaWxzXG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdGdldElzc3VlcygpOiBhbnlbXSB7XG5cdFx0XHRyZXR1cm4gaXNzdWVzO1xuXHRcdH0sXG5cdFx0Y2hlY2tJZklzc3VlRXhpc3RzKGlzc3VlQ2F0ZWdvcnk6IElzc3VlQ2F0ZWdvcnksIGlzc3VlU2V2ZXJpdHk6IElzc3VlU2V2ZXJpdHksIGRldGFpbHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIGlzc3Vlcy5maW5kKChpc3N1ZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gaXNzdWUuaXNzdWVDYXRlZ29yeSA9PT0gaXNzdWVDYXRlZ29yeSAmJiBpc3N1ZS5pc3N1ZVNldmVyaXR5ID09PSBpc3N1ZVNldmVyaXR5ICYmIGlzc3VlLmRldGFpbHMgPT09IGRldGFpbHM7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udmVydGVyQ29udGV4dEZvclRlc3QgPSBmdW5jdGlvbiAoXG5cdGNvbnZlcnRlZFR5cGVzOiBDb252ZXJ0ZWRNZXRhZGF0YSxcblx0bWFuaWZlc3RTZXR0aW5nczogTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MgfCBPYmplY3RQYWdlTWFuaWZlc3RTZXR0aW5nc1xuKSB7XG5cdGNvbnN0IGVudGl0eVNldCA9IGNvbnZlcnRlZFR5cGVzLmVudGl0eVNldHMuZmluZCgoZXMpID0+IGVzLm5hbWUgPT09IG1hbmlmZXN0U2V0dGluZ3MuZW50aXR5U2V0KTtcblx0Y29uc3QgZGF0YU1vZGVsUGF0aCA9IGdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eShlbnRpdHlTZXQgYXMgRW50aXR5U2V0LCBjb252ZXJ0ZWRUeXBlcywgZW50aXR5U2V0KTtcblx0cmV0dXJuIG5ldyBDb252ZXJ0ZXJDb250ZXh0KGNvbnZlcnRlZFR5cGVzLCBtYW5pZmVzdFNldHRpbmdzLCBnZXRGYWtlRGlhZ25vc3RpY3MoKSwgbWVyZ2UsIGRhdGFNb2RlbFBhdGgpO1xufTtcbmNvbnN0IG1ldGFNb2RlbENhY2hlOiBhbnkgPSB7fTtcbmV4cG9ydCBjb25zdCBnZXRNZXRhTW9kZWwgPSBhc3luYyBmdW5jdGlvbiAoc01ldGFkYXRhVXJsOiBzdHJpbmcpIHtcblx0Y29uc3Qgb1JlcXVlc3RvciA9IF9NZXRhZGF0YVJlcXVlc3Rvci5jcmVhdGUoe30sIFwiNC4wXCIsIHt9KTtcblx0aWYgKCFtZXRhTW9kZWxDYWNoZVtzTWV0YWRhdGFVcmxdKSB7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG5ldyAoT0RhdGFNZXRhTW9kZWwgYXMgYW55KShvUmVxdWVzdG9yLCBzTWV0YWRhdGFVcmwsIHVuZGVmaW5lZCwgbnVsbCk7XG5cdFx0YXdhaXQgb01ldGFNb2RlbC5mZXRjaEVudGl0eUNvbnRhaW5lcigpO1xuXHRcdG1ldGFNb2RlbENhY2hlW3NNZXRhZGF0YVVybF0gPSBvTWV0YU1vZGVsO1xuXHR9XG5cblx0cmV0dXJuIG1ldGFNb2RlbENhY2hlW3NNZXRhZGF0YVVybF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZnVuY3Rpb24gKFxuXHRlbnRpdHlTZXQ6IEVudGl0eVNldCxcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLFxuXHRwcm9wZXJ0eT86IFByb3BlcnR5IHwgRW50aXR5U2V0IHwgQW55QW5ub3RhdGlvblxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGNvbnN0IHRhcmdldFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggPSB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IGVudGl0eVNldCxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW10sXG5cdFx0dGFyZ2V0T2JqZWN0OiBwcm9wZXJ0eSxcblx0XHR0YXJnZXRFbnRpdHlTZXQ6IGVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBlbnRpdHlTZXQuZW50aXR5VHlwZSxcblx0XHRjb252ZXJ0ZWRUeXBlczogY29udmVydGVkVHlwZXNcblx0fTtcblx0dGFyZ2V0UGF0aC5jb250ZXh0TG9jYXRpb24gPSB0YXJnZXRQYXRoO1xuXHRyZXR1cm4gdGFyZ2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBldmFsdWF0ZUJpbmRpbmcgPSBmdW5jdGlvbiAoYmluZGluZ1N0cmluZzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuXHRjb25zdCBiaW5kaW5nRWxlbWVudCA9IEJpbmRpbmdQYXJzZXIuY29tcGxleFBhcnNlcihiaW5kaW5nU3RyaW5nKTtcblx0cmV0dXJuIGJpbmRpbmdFbGVtZW50LmZvcm1hdHRlci5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xufTtcblxudHlwZSBNb2RlbENvbnRlbnQgPSB7XG5cdFtuYW1lOiBzdHJpbmddOiBhbnk7XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIGEgYmluZGluZyBhZ2FpbnN0IGEgbW9kZWwuXG4gKlxuICogQHBhcmFtIGJpbmRpbmdTdHJpbmcgVGhlIGJpbmRpbmcgc3RyaW5nLlxuICogQHBhcmFtIG1vZGVsQ29udGVudCBDb250ZW50IG9mIHRoZSBkZWZhdWx0IG1vZGVsIHRvIHVzZSBmb3IgZXZhbHVhdGlvbi5cbiAqIEBwYXJhbSBuYW1lZE1vZGVsc0NvbnRlbnQgQ29udGVudHMgb2YgYWRkaXRpb25hbCwgbmFtZWQgbW9kZWxzIHRvIHVzZS5cbiAqIEByZXR1cm5zIFRoZSBldmFsdWF0ZWQgYmluZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbChcblx0YmluZGluZ1N0cmluZzogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRtb2RlbENvbnRlbnQ6IE1vZGVsQ29udGVudCxcblx0bmFtZWRNb2RlbHNDb250ZW50PzogeyBbbW9kZWxOYW1lOiBzdHJpbmddOiBNb2RlbENvbnRlbnQgfVxuKTogc3RyaW5nIHtcblx0Y29uc3QgYmluZGluZ0VsZW1lbnQgPSBCaW5kaW5nUGFyc2VyLmNvbXBsZXhQYXJzZXIoYmluZGluZ1N0cmluZyk7XG5cdGNvbnN0IHRleHQgPSBuZXcgSW52aXNpYmxlVGV4dCgpO1xuXHR0ZXh0LmJpbmRQcm9wZXJ0eShcInRleHRcIiwgYmluZGluZ0VsZW1lbnQpO1xuXG5cdGNvbnN0IGRlZmF1bHRNb2RlbCA9IG5ldyBKU09OTW9kZWwobW9kZWxDb250ZW50KTtcblx0dGV4dC5zZXRNb2RlbChkZWZhdWx0TW9kZWwpO1xuXHR0ZXh0LnNldEJpbmRpbmdDb250ZXh0KGRlZmF1bHRNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgYXMgQ29udGV4dCk7XG5cblx0aWYgKG5hbWVkTW9kZWxzQ29udGVudCkge1xuXHRcdGZvciAoY29uc3QgW25hbWUsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKG5hbWVkTW9kZWxzQ29udGVudCkpIHtcblx0XHRcdGNvbnN0IG1vZGVsID0gbmV3IEpTT05Nb2RlbChjb250ZW50KTtcblx0XHRcdHRleHQuc2V0TW9kZWwobW9kZWwsIG5hbWUpO1xuXHRcdFx0dGV4dC5zZXRCaW5kaW5nQ29udGV4dChtb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgYXMgQ29udGV4dCwgbmFtZSk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRleHQuZ2V0VGV4dCgpO1xufVxuXG5jb25zdCBURVNUVklFV0lEID0gXCJ0ZXN0Vmlld0lkXCI7XG5cbmV4cG9ydCBjb25zdCBhcHBseUZsZXhDaGFuZ2VzID0gYXN5bmMgZnVuY3Rpb24gKFxuXHRhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzOiBhbnlbXSxcblx0b01ldGFNb2RlbDogTWV0YU1vZGVsLFxuXHRyZXN1bHRYTUw6IGFueSxcblx0Y3JlYXRlQ2hhbmdlc09iamVjdDogRnVuY3Rpb25cbikge1xuXHRjb25zdCBjaGFuZ2VzID0gY3JlYXRlQ2hhbmdlc09iamVjdChURVNUVklFV0lELCBhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzKTtcblx0Y29uc3QgYXBwSWQgPSBcInNvbWVDb21wb25lbnRcIjtcblx0Y29uc3Qgb01hbmlmZXN0ID0ge1xuXHRcdFwic2FwLmFwcFwiOiB7XG5cdFx0XHRpZDogYXBwSWQsXG5cdFx0XHR0eXBlOiBcImFwcGxpY2F0aW9uXCIsXG5cdFx0XHRjcm9zc05hdmlnYXRpb246IHtcblx0XHRcdFx0b3V0Ym91bmRzOiBbXVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0Y29uc3Qgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50ID0ge1xuXHRcdGdldERpYWdub3N0aWNzOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKGdldEZha2VEaWFnbm9zdGljcygpKSxcblx0XHRnZXRNb2RlbDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG5cdFx0XHRnZXRNZXRhTW9kZWw6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUob01ldGFNb2RlbClcblx0XHR9KSxcblx0XHRnZXRDb21wb25lbnREYXRhOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHt9KSxcblx0XHRnZXRNYW5pZmVzdE9iamVjdDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG5cdFx0XHRnZXRFbnRyeTogZnVuY3Rpb24gKG5hbWU6IHN0cmluZykge1xuXHRcdFx0XHRyZXR1cm4gKG9NYW5pZmVzdCBhcyBhbnkpW25hbWVdO1xuXHRcdFx0fVxuXHRcdH0pXG5cdH0gYXMgdW5rbm93biBhcyBBcHBDb21wb25lbnQ7XG5cdC8vZmFrZSBjaGFuZ2VzXG5cdGplc3Quc3B5T24oQXBwU3RvcmFnZSwgXCJsb2FkRmxleERhdGFcIikubW9ja1JldHVyblZhbHVlKFByb21pc2UucmVzb2x2ZShjaGFuZ2VzKSk7XG5cdGplc3Quc3B5T24oQ29tcG9uZW50LCBcImdldFwiKS5tb2NrUmV0dXJuVmFsdWUob0FwcENvbXBvbmVudCk7XG5cdGplc3Quc3B5T24oVXRpbHMsIFwiZ2V0QXBwQ29tcG9uZW50Rm9yQ29udHJvbFwiKS5tb2NrUmV0dXJuVmFsdWUob0FwcENvbXBvbmVudCk7XG5cdGF3YWl0IEZsZXhTdGF0ZS5pbml0aWFsaXplKHtcblx0XHRjb21wb25lbnRJZDogYXBwSWRcblx0fSk7XG5cdHJlc3VsdFhNTCA9IGF3YWl0IFhtbFByZXByb2Nlc3Nvci5wcm9jZXNzKHJlc3VsdFhNTCwgeyBuYW1lOiBcIlRlc3QgRnJhZ21lbnRcIiwgY29tcG9uZW50SWQ6IGFwcElkLCBpZDogVEVTVFZJRVdJRCB9KTtcblx0cmV0dXJuIHJlc3VsdFhNTDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDaGFuZ2VzRnJvbVhNTCA9ICh4bWw6IGFueSkgPT5cblx0Wy4uLnhtbC5xdWVyeVNlbGVjdG9yQWxsKFwiKlwiKV1cblx0XHQuZmxhdE1hcCgoZSkgPT4gWy4uLmUuYXR0cmlidXRlc10ubWFwKChhKSA9PiBhLm5hbWUpKVxuXHRcdC5maWx0ZXIoKGF0dHIpID0+IGF0dHIuaW5jbHVkZXMoXCJzYXAudWkuZmwuYXBwbGllZENoYW5nZXNcIikpO1xuXG5leHBvcnQgY29uc3QgZ2V0VGVtcGxhdGluZ1Jlc3VsdCA9IGFzeW5jIGZ1bmN0aW9uIChcblx0eG1sSW5wdXQ6IHN0cmluZyxcblx0c01ldGFkYXRhVXJsOiBzdHJpbmcsXG5cdG1CaW5kaW5nQ29udGV4dHM6IHsgW3g6IHN0cmluZ106IGFueTsgZW50aXR5U2V0Pzogc3RyaW5nIH0sXG5cdG1Nb2RlbHM6IHsgW3g6IHN0cmluZ106IGFueSB9LFxuXHRhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzPzogYW55W10sXG5cdGNyZWF0ZUNoYW5nZXNPYmplY3Q/OiBGdW5jdGlvblxuKSB7XG5cdGNvbnN0IHRlbXBsYXRlZFhtbCA9IGA8cm9vdD4ke3htbElucHV0fTwvcm9vdD5gO1xuXHRjb25zdCBwYXJzZXIgPSBuZXcgd2luZG93LkRPTVBhcnNlcigpO1xuXHRjb25zdCB4bWxEb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHRlbXBsYXRlZFhtbCwgXCJ0ZXh0L3htbFwiKTtcblx0Ly8gVG8gZW5zdXJlIG91ciBtYWNybyBjYW4gdXNlICNzZXRCaW5kaW5nQ29udGV4dCB3ZSBlbnN1cmUgdGhlcmUgaXMgYSBwcmUgZXhpc3RpbmcgSlNPTk1vZGVsIGZvciBjb252ZXJ0ZXJDb250ZXh0XG5cdC8vIGlmIG5vdCBhbHJlYWR5IHBhc3NlZCB0byB0ZWggdGVtcGxhdGluZ1xuXG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBhd2FpdCBnZXRNZXRhTW9kZWwoc01ldGFkYXRhVXJsKTtcblx0aWYgKCFtTW9kZWxzLmhhc093blByb3BlcnR5KFwiY29udmVydGVyQ29udGV4dFwiKSkge1xuXHRcdG1Nb2RlbHMgPSBPYmplY3QuYXNzaWduKG1Nb2RlbHMsIHsgXCJjb252ZXJ0ZXJDb250ZXh0XCI6IG5ldyBUZW1wbGF0ZU1vZGVsKHt9LCBvTWV0YU1vZGVsKSB9KTtcblx0fVxuXG5cdE9iamVjdC5rZXlzKG1Nb2RlbHMpLmZvckVhY2goZnVuY3Rpb24gKHNNb2RlbE5hbWUpIHtcblx0XHRpZiAobU1vZGVsc1tzTW9kZWxOYW1lXSAmJiBtTW9kZWxzW3NNb2RlbE5hbWVdLmlzVGVtcGxhdGVNb2RlbCkge1xuXHRcdFx0bU1vZGVsc1tzTW9kZWxOYW1lXSA9IG5ldyBUZW1wbGF0ZU1vZGVsKG1Nb2RlbHNbc01vZGVsTmFtZV0uZGF0YSwgb01ldGFNb2RlbCk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBvUHJlcHJvY2Vzc29yU2V0dGluZ3M6IGFueSA9IHtcblx0XHRtb2RlbHM6IE9iamVjdC5hc3NpZ24oXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbFxuXHRcdFx0fSxcblx0XHRcdG1Nb2RlbHNcblx0XHQpLFxuXHRcdGJpbmRpbmdDb250ZXh0czoge31cblx0fTtcblxuXHQvL0luamVjdCBtb2RlbHMgYW5kIGJpbmRpbmdDb250ZXh0c1xuXHRPYmplY3Qua2V5cyhtQmluZGluZ0NvbnRleHRzKS5mb3JFYWNoKGZ1bmN0aW9uIChzS2V5KSB7XG5cdFx0LyogQXNzZXJ0IHRvIG1ha2Ugc3VyZSB0aGUgYW5ub3RhdGlvbnMgYXJlIGluIHRoZSB0ZXN0IG1ldGFkYXRhIC0+IGF2b2lkIG1pc2xlYWRpbmcgdGVzdHMgKi9cblx0XHRleHBlY3QodHlwZW9mIG9NZXRhTW9kZWwuZ2V0T2JqZWN0KG1CaW5kaW5nQ29udGV4dHNbc0tleV0pKS50b0JlRGVmaW5lZCgpO1xuXHRcdGNvbnN0IG9Nb2RlbCA9IG1Nb2RlbHNbc0tleV0gfHwgb01ldGFNb2RlbDtcblx0XHRvUHJlcHJvY2Vzc29yU2V0dGluZ3MuYmluZGluZ0NvbnRleHRzW3NLZXldID0gb01vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1CaW5kaW5nQ29udGV4dHNbc0tleV0pOyAvL1ZhbHVlIGlzIHNQYXRoXG5cdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzLm1vZGVsc1tzS2V5XSA9IG9Nb2RlbDtcblx0fSk7XG5cblx0Ly9UaGlzIGNvbnRleHQgZm9yIG1hY3JvIHRlc3Rpbmdcblx0aWYgKG9QcmVwcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHNbXCJ0aGlzXCJdKSB7XG5cdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzLmJpbmRpbmdDb250ZXh0c1tcInRoaXNcIl0gPSBvUHJlcHJvY2Vzc29yU2V0dGluZ3MubW9kZWxzW1widGhpc1wiXS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIik7XG5cdH1cblxuXHRsZXQgcmVzdWx0WE1MID0gYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3MoeG1sRG9jLmZpcnN0RWxlbWVudENoaWxkISwgeyBuYW1lOiBcIlRlc3QgRnJhZ21lbnRcIiB9LCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MpO1xuXG5cdGlmIChhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzICYmIGNyZWF0ZUNoYW5nZXNPYmplY3QpIHtcblx0XHQvLyBwcmVmaXggSWRzXG5cdFx0Wy4uLnJlc3VsdFhNTC5xdWVyeVNlbGVjdG9yQWxsKFwiW2lkXVwiKV0uZm9yRWFjaCgobm9kZSkgPT4ge1xuXHRcdFx0bm9kZS5pZCA9IGAke1RFU1RWSUVXSUR9LS0ke25vZGUuaWR9YDtcblx0XHR9KTtcblx0XHQvLyBhcHBseSBmbGV4IGNoYW5nZXNcblx0XHRyZXN1bHRYTUwgPSBhd2FpdCBhcHBseUZsZXhDaGFuZ2VzKGFWYXJpYW50RGVwZW5kZW50Q29udHJvbENoYW5nZXMsIG9NZXRhTW9kZWwsIHJlc3VsdFhNTCwgY3JlYXRlQ2hhbmdlc09iamVjdCk7XG5cdFx0Ly9Bc3NlcnQgdGhhdCBhbGwgY2hhbmdlcyBoYXZlIGJlZW4gYXBwbGllZFxuXHRcdGNvbnN0IGNoYW5nZXNBcHBsaWVkID0gZ2V0Q2hhbmdlc0Zyb21YTUwocmVzdWx0WE1MKTtcblx0XHRleHBlY3QoY2hhbmdlc0FwcGxpZWQubGVuZ3RoKS50b0JlKGFWYXJpYW50RGVwZW5kZW50Q29udHJvbENoYW5nZXMubGVuZ3RoKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0WE1MO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRlbXBsYXRlZFhNTCA9IGFzeW5jIGZ1bmN0aW9uIChcblx0eG1sSW5wdXQ6IHN0cmluZyxcblx0c01ldGFkYXRhVXJsOiBzdHJpbmcsXG5cdG1CaW5kaW5nQ29udGV4dHM6IHsgW3g6IHN0cmluZ106IGFueTsgZW50aXR5U2V0Pzogc3RyaW5nIH0sXG5cdG1Nb2RlbHM6IHsgW3g6IHN0cmluZ106IGFueSB9LFxuXHRhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzPzogYW55W10sXG5cdGNyZWF0ZUNoYW5nZXNPYmplY3Q/OiBGdW5jdGlvblxuKSB7XG5cdGNvbnN0IHRlbXBsYXRlZFhNTCA9IGF3YWl0IGdldFRlbXBsYXRpbmdSZXN1bHQoXG5cdFx0eG1sSW5wdXQsXG5cdFx0c01ldGFkYXRhVXJsLFxuXHRcdG1CaW5kaW5nQ29udGV4dHMsXG5cdFx0bU1vZGVscyxcblx0XHRhVmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzLFxuXHRcdGNyZWF0ZUNoYW5nZXNPYmplY3Rcblx0KTtcblx0cmV0dXJuIHNlcmlhbGl6ZVhNTCh0ZW1wbGF0ZWRYTUwpO1xufTtcblxuLyoqXG4gKiBQcm9jZXNzIHRoZSByZXF1ZXN0ZWQgWE1MIGZyYWdtZW50IHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuXG4gKlxuICogQHBhcmFtIG5hbWUgRnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIHRlc3RlZC5cbiAqIEBwYXJhbSB0ZXN0RGF0YSBUZXN0IGRhdGEgY29uc2lzdGluZ1xuICogQHJldHVybnMgVGVtcGxhdGVkIGZyYWdtZW50IGFzIHN0cmluZ1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0ZyYWdtZW50KG5hbWU6IHN0cmluZywgdGVzdERhdGE6IHsgW21vZGVsOiBzdHJpbmddOiBvYmplY3QgfSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdGNvbnN0IGlucHV0WG1sID0gYDxyb290Pjxjb3JlOkZyYWdtZW50IGZyYWdtZW50TmFtZT1cIiR7bmFtZX1cIiB0eXBlPVwiWE1MXCIgeG1sbnM6Y29yZT1cInNhcC51aS5jb3JlXCIgLz48L3Jvb3Q+YDtcblx0Y29uc3QgcGFyc2VyID0gbmV3IHdpbmRvdy5ET01QYXJzZXIoKTtcblx0Y29uc3QgaW5wdXREb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGlucHV0WG1sLCBcInRleHQveG1sXCIpO1xuXG5cdC8vIGJ1aWxkIG1vZGVsIGFuZCBiaW5kaW5ncyBmb3IgZ2l2ZW4gdGVzdCBkYXRhXG5cdGNvbnN0IHNldHRpbmdzID0ge1xuXHRcdG1vZGVsczoge30gYXMgeyBbbmFtZTogc3RyaW5nXTogSlNPTk1vZGVsIH0sXG5cdFx0YmluZGluZ0NvbnRleHRzOiB7fSBhcyB7IFtuYW1lOiBzdHJpbmddOiBvYmplY3QgfVxuXHR9O1xuXHRmb3IgKGNvbnN0IG1vZGVsIGluIHRlc3REYXRhKSB7XG5cdFx0Y29uc3QganNvbk1vZGVsID0gbmV3IEpTT05Nb2RlbCgpO1xuXHRcdGpzb25Nb2RlbC5zZXREYXRhKHRlc3REYXRhW21vZGVsXSk7XG5cdFx0c2V0dGluZ3MubW9kZWxzW21vZGVsXSA9IGpzb25Nb2RlbDtcblx0XHRzZXR0aW5ncy5iaW5kaW5nQ29udGV4dHNbbW9kZWxdID0gc2V0dGluZ3MubW9kZWxzW21vZGVsXS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgYXMgQ29udGV4dDtcblx0fVxuXG5cdC8vIGV4ZWN1dGUgdGhlIHByZS1wcm9jZXNzb3Jcblx0Y29uc3QgcmVzdWx0RG9jID0gYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3MoaW5wdXREb2MuZmlyc3RFbGVtZW50Q2hpbGQsIHsgbmFtZSB9LCBzZXR0aW5ncyk7XG5cblx0Ly8gZXhjbHVkZSBuZXN0ZWQgZnJhZ21lbnRzIGZyb20gdGVzdCBzbmFwc2hvdHNcblx0Y29uc3QgZnJhZ21lbnRzID0gcmVzdWx0RG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiY29yZTpGcmFnbWVudFwiKTtcblx0aWYgKGZyYWdtZW50cz8ubGVuZ3RoID4gMCkge1xuXHRcdGZvciAoY29uc3QgZnJhZ21lbnQgb2YgZnJhZ21lbnRzKSB7XG5cdFx0XHRmcmFnbWVudC5pbm5lckhUTUwgPSBcIlwiO1xuXHRcdH1cblx0fVxuXG5cdC8vIEtlZXAgdGhlIGZyYWdtZW50IHJlc3VsdCBhcyBjaGlsZCBvZiByb290IG5vZGUgd2hlbiBmcmFnbWVudCBnZW5lcmF0ZXMgbXVsdGlwbGUgcm9vdCBjb250cm9sc1xuXHRjb25zdCB4bWxSZXN1bHQgPSByZXN1bHREb2MuY2hpbGRyZW4ubGVuZ3RoID4gMSA/IHJlc3VsdERvYy5vdXRlckhUTUwgOiByZXN1bHREb2MuaW5uZXJIVE1MO1xuXG5cdHJldHVybiBmb3JtYXRYbWwoeG1sUmVzdWx0LCB7XG5cdFx0ZmlsdGVyOiAobm9kZTogYW55KSA9PiBub2RlLnR5cGUgIT09IFwiQ29tbWVudFwiXG5cdH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplQ29udHJvbChjb250cm9sVG9TZXJpYWxpemU6IENvbnRyb2wgfCBDb250cm9sW10pIHtcblx0bGV0IHRhYkNvdW50ID0gMDtcblx0ZnVuY3Rpb24gZ2V0VGFiKHRvQWRkOiBudW1iZXIgPSAwKSB7XG5cdFx0bGV0IHRhYiA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0YWJDb3VudCArIHRvQWRkOyBpKyspIHtcblx0XHRcdHRhYiArPSBcIlxcdFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGFiO1xuXHR9XG5cdGNvbnN0IHNlcmlhbGl6ZURlbGVnYXRlID0ge1xuXHRcdHN0YXJ0OiBmdW5jdGlvbiAoY29udHJvbDogYW55LCBzQWdncmVnYXRpb25OYW1lOiBzdHJpbmcpIHtcblx0XHRcdGxldCBjb250cm9sRGV0YWlsID0gXCJcIjtcblx0XHRcdGlmIChzQWdncmVnYXRpb25OYW1lKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLmdldFBhcmVudCgpKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5kZXhJblBhcmVudCA9IChjb250cm9sLmdldFBhcmVudCgpLmdldEFnZ3JlZ2F0aW9uKHNBZ2dyZWdhdGlvbk5hbWUpIGFzIE1hbmFnZWRPYmplY3RbXSk/LmluZGV4T2Y/Lihjb250cm9sKTtcblx0XHRcdFx0XHRpZiAoaW5kZXhJblBhcmVudCA+IDApIHtcblx0XHRcdFx0XHRcdGNvbnRyb2xEZXRhaWwgKz0gYCxcXG4ke2dldFRhYigpfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250cm9sRGV0YWlsICs9IGAke2NvbnRyb2wuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9KGA7XG5cdFx0XHRyZXR1cm4gY29udHJvbERldGFpbDtcblx0XHR9LFxuXHRcdGVuZDogZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIFwifSlcIjtcblx0XHR9LFxuXHRcdG1pZGRsZTogZnVuY3Rpb24gKGNvbnRyb2w6IGFueSkge1xuXHRcdFx0bGV0IGRhdGEgPSBge2lkOiAke2NvbnRyb2wuZ2V0SWQoKX1gO1xuXHRcdFx0Zm9yIChjb25zdCBvQ29udHJvbEtleSBpbiBjb250cm9sLm1Qcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLm1Qcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG9Db250cm9sS2V5KSkge1xuXHRcdFx0XHRcdGRhdGEgKz0gYCxcXG4ke2dldFRhYigpfSAke29Db250cm9sS2V5fTogJHtjb250cm9sLm1Qcm9wZXJ0aWVzW29Db250cm9sS2V5XX1gO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wubUJpbmRpbmdJbmZvcy5oYXNPd25Qcm9wZXJ0eShvQ29udHJvbEtleSkpIHtcblx0XHRcdFx0XHRjb25zdCBiaW5kaW5nRGV0YWlsID0gY29udHJvbC5tQmluZGluZ0luZm9zW29Db250cm9sS2V5XTtcblx0XHRcdFx0XHRkYXRhICs9IGAsXFxuJHtnZXRUYWIoKX0gJHtvQ29udHJvbEtleX06IGZvcm1hdHRlcigke2JpbmRpbmdEZXRhaWwucGFydHMubWFwKFxuXHRcdFx0XHRcdFx0KGJpbmRpbmdJbmZvOiBhbnkpID0+IGBcXG4ke2dldFRhYigxKX0ke2JpbmRpbmdJbmZvLm1vZGVsID8gYmluZGluZ0luZm8ubW9kZWwgOiBcIlwifT4ke2JpbmRpbmdJbmZvLnBhdGh9YFxuXHRcdFx0XHRcdCl9KWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3Qgb0NvbnRyb2xLZXkgaW4gY29udHJvbC5tQXNzb2NpYXRpb25zKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLm1Bc3NvY2lhdGlvbnMuaGFzT3duUHJvcGVydHkob0NvbnRyb2xLZXkpKSB7XG5cdFx0XHRcdFx0ZGF0YSArPSBgLFxcbiR7Z2V0VGFiKCl9ICR7b0NvbnRyb2xLZXl9OiAke2NvbnRyb2wubUFzc29jaWF0aW9uc1tvQ29udHJvbEtleV1bMF19YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZGF0YSArPSBgYDtcblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH0sXG5cdFx0c3RhcnRBZ2dyZWdhdGlvbjogZnVuY3Rpb24gKGNvbnRyb2w6IGFueSwgc05hbWU6IHN0cmluZykge1xuXHRcdFx0bGV0IG91dCA9IGAsXFxuJHtnZXRUYWIoKX0ke3NOYW1lfWA7XG5cdFx0XHR0YWJDb3VudCsrO1xuXG5cdFx0XHRpZiAoY29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXSkge1xuXHRcdFx0XHRvdXQgKz0gYD17IHBhdGg6JyR7Y29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXS5wYXRofScsIHRlbXBsYXRlOlxcbiR7Z2V0VGFiKCl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG91dCArPSBgPVtcXG4ke2dldFRhYigpfWA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3V0O1xuXHRcdH0sXG5cdFx0ZW5kQWdncmVnYXRpb246IGZ1bmN0aW9uIChjb250cm9sOiBhbnksIHNOYW1lOiBzdHJpbmcpIHtcblx0XHRcdHRhYkNvdW50LS07XG5cdFx0XHRpZiAoY29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXSkge1xuXHRcdFx0XHRyZXR1cm4gYFxcbiR7Z2V0VGFiKCl9fWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYFxcbiR7Z2V0VGFiKCl9XWA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoQXJyYXkuaXNBcnJheShjb250cm9sVG9TZXJpYWxpemUpKSB7XG5cdFx0cmV0dXJuIGNvbnRyb2xUb1NlcmlhbGl6ZS5tYXAoKGNvbnRyb2xUb1JlbmRlcjogQ29udHJvbCkgPT4ge1xuXHRcdFx0cmV0dXJuIG5ldyBTZXJpYWxpemVyKGNvbnRyb2xUb1JlbmRlciwgc2VyaWFsaXplRGVsZWdhdGUpLnNlcmlhbGl6ZSgpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBuZXcgU2VyaWFsaXplcihjb250cm9sVG9TZXJpYWxpemUsIHNlcmlhbGl6ZURlbGVnYXRlKS5zZXJpYWxpemUoKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXdhaXRlcigpIHtcblx0bGV0IGZuUmVzb2x2ZSE6IEZ1bmN0aW9uO1xuXHRjb25zdCBteVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdGZuUmVzb2x2ZSA9IHJlc29sdmU7XG5cdH0pO1xuXHRyZXR1cm4geyBwcm9taXNlOiBteVByb21pc2UsIHJlc29sdmU6IGZuUmVzb2x2ZSB9O1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFvYkE7QUFD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
@@ -491,7 +491,7 @@ export function serializeControl(controlToSerialize: Control | Control[]) {
491
491
  let controlDetail = "";
492
492
  if (sAggregationName) {
493
493
  if (control.getParent()) {
494
- const indexInParent = (control.getParent().getAggregation(sAggregationName) as ManagedObject[]).indexOf(control);
494
+ const indexInParent = (control.getParent().getAggregation(sAggregationName) as ManagedObject[])?.indexOf?.(control);
495
495
  if (indexInParent > 0) {
496
496
  controlDetail += `,\n${getTab()}`;
497
497
  }
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InternalEditFlow", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/SideEffects", "sap/ui/base/Event", "sap/ui/core/mvc/Controller", "sap/ui/core/mvc/View", "sap/ui/model/CompositeBinding", "sap/ui/model/odata/v4/Context", "sap/ui/model/odata/v4/ODataContextBinding", "sap/ui/model/odata/v4/ODataListBinding", "sap/ui/model/odata/v4/ODataMetaModel", "sap/ui/model/odata/v4/ODataModel", "sap/ui/model/odata/v4/ODataPropertyBinding"], function (generic, EditFlow, InternalEditFlow, InternalRouting, SideEffects, Event, Controller, View, CompositeBinding, Context, ODataContextBinding, ODataListBinding, ODataMetaModel, ODataModel, ODataPropertyBinding) {
5
+ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerextensions/EditFlow", "sap/fe/core/controllerextensions/InternalEditFlow", "sap/fe/core/controllerextensions/InternalRouting", "sap/fe/core/controllerextensions/Share", "sap/fe/core/controllerextensions/SideEffects", "sap/ui/base/Event", "sap/ui/core/mvc/Controller", "sap/ui/core/mvc/View", "sap/ui/model/CompositeBinding", "sap/ui/model/odata/v4/Context", "sap/ui/model/odata/v4/ODataContextBinding", "sap/ui/model/odata/v4/ODataListBinding", "sap/ui/model/odata/v4/ODataMetaModel", "sap/ui/model/odata/v4/ODataModel", "sap/ui/model/odata/v4/ODataPropertyBinding"], function (generic, EditFlow, InternalEditFlow, InternalRouting, Share, SideEffects, Event, Controller, View, CompositeBinding, Context, ODataContextBinding, ODataListBinding, ODataMetaModel, ODataModel, ODataPropertyBinding) {
6
6
  "use strict";
7
7
 
8
8
  var _exports = {};
@@ -450,7 +450,8 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
450
450
  mocked._routing = mock(InternalRouting);
451
451
  mocked._editFlow = mock(InternalEditFlow);
452
452
  mocked._sideEffects = mock(SideEffects);
453
- mocked.editFlow = mock(EditFlow); // Default Behavior
453
+ mocked.editFlow = mock(EditFlow);
454
+ mocked.share = mock(Share); // Default Behavior
454
455
 
455
456
  mocked.mock.getView.mockReturnValue(createMockView());
456
457
  mocked.mock.isA.mockReturnValue(false);
@@ -488,4 +489,4 @@ sap.ui.define(["@sap-ux/jest-mock-ui5/dist/generic", "sap/fe/core/controllerexte
488
489
  _exports.mockMVC = mockMVC;
489
490
  return _exports;
490
491
  }, false);
491
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVNb2NrQ29udGV4dCIsIm9Db250ZXh0RGF0YSIsIm9CaW5kaW5nIiwiaXNJbmFjdGl2ZSIsIm1vY2tlZCIsIm1vY2siLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsIkNvbnRleHQiLCJjcmVhdGVOZXdDb250ZXh0IiwiX2lzS2VwdEFsaXZlIiwiX2NvbnRleHREYXRhIiwiX29CaW5kaW5nIiwiX2lzSW5hY3RpdmUiLCJpc0EiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJzQ2xhc3NOYW1lIiwiZ2V0UHJvcGVydHkiLCJrZXkiLCJyZXF1ZXN0UHJvcGVydHkiLCJrZXlPcktleXMiLCJBcnJheSIsImlzQXJyYXkiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1hcCIsInJlcXVlc3RPYmplY3QiLCJzZXRQcm9wZXJ0eSIsInZhbHVlIiwiZ2V0T2JqZWN0IiwicGF0aCIsInJlc3VsdCIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwicmVkdWNlIiwic3VtIiwicGFydCIsImdldFBhdGgiLCJnZXRCaW5kaW5nIiwiZ2V0TW9kZWwiLCJzZXRLZWVwQWxpdmUiLCJib29sIiwiX2ZuT25CZWZvcmVEZXN0cm95IiwiX2JSZXF1ZXN0TWVzc2FnZXMiLCJpc0tlZXBBbGl2ZSIsIk1vY2tDb250ZXh0IiwiY3JlYXRlTW9ja0V2ZW50IiwicGFyYW1zIiwiRXZlbnQiLCJfcGFyYW1zIiwiZ2V0UGFyYW1ldGVyIiwibmFtZSIsIk1vY2tFdmVudCIsImNyZWF0ZU1vY2tMaXN0QmluZGluZyIsImFDb250ZXh0RGF0YSIsIm9Nb2NrTW9kZWwiLCJPRGF0YUxpc3RCaW5kaW5nIiwiX2FNb2NrQ29udGV4dHMiLCJjb250ZXh0RGF0YSIsIl9tb2NrTW9kZWwiLCJzZXRNb2RlbCIsIm1vZGVsIiwicmVxdWVzdENvbnRleHRzIiwiZ2V0Q3VycmVudENvbnRleHRzIiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIm1vY2tSZXR1cm5WYWx1ZSIsIk1vY2tMaXN0QmluZGluZyIsImNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmciLCJPRGF0YVByb3BlcnR5QmluZGluZyIsIl92YWx1ZSIsIl9wYXRoIiwiZ2V0VmFsdWUiLCJNb2NrUHJvcGVydHlCaW5kaW5nIiwiY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmciLCJhQmluZGluZ3MiLCJDb21wb3NpdGVCaW5kaW5nIiwiX2FCaW5kaW5ncyIsImdldEJpbmRpbmdzIiwiYmluZGluZyIsIk1vY2tDb21wb3NpdGVCaW5kaW5nIiwiY3JlYXRlTW9ja0NvbnRleHRCaW5kaW5nIiwib0NvbnRleHQiLCJPRGF0YUNvbnRleHRCaW5kaW5nIiwibW9ja01vZGVsIiwib01vY2tDb250ZXh0IiwiZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCIsIm9Nb2RlbCIsImdldEJvdW5kQ29udGV4dCIsImV4ZWN1dGUiLCJtb2NrUmVzb2x2ZWRWYWx1ZSIsIk1vY2tDb250ZXh0QmluZGluZyIsImNyZWF0ZU1vY2tNZXRhTW9kZWwiLCJvTWV0YURhdGEiLCJPRGF0YU1ldGFNb2RlbCIsIm9NZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0Iiwic1BhdGgiLCIkcGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0TWV0YVBhdGgiLCJtZXRhbW9kZWwiLCJNb2NrTWV0YU1vZGVsIiwiY3JlYXRlTW9ja01vZGVsIiwib01vY2tMaXN0QmluZGluZyIsIm9Nb2NrQ29udGV4dEJpbmRpbmciLCJPRGF0YU1vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwic2V0TWV0YU1vZGVsIiwib01ldGFNb2RlbCIsImJpbmRMaXN0IiwiYmluZENvbnRleHQiLCJnZXRNZXRhTW9kZWwiLCJNb2NrTW9kZWwiLCJjcmVhdGVNb2NrTW9kZWxGcm9tTGlzdEJpbmRpbmciLCJjcmVhdGVNb2NrTW9kZWxGcm9tQ29udGV4dEJpbmRpbmciLCJ1bmRlZmluZWQiLCJjcmVhdGVNb2NrVmlldyIsIlZpZXciLCJNb2NrVmlldyIsImNyZWF0ZU1vY2tDb250cm9sbGVyIiwiQ29udHJvbGxlciIsIl9yb3V0aW5nIiwiSW50ZXJuYWxSb3V0aW5nIiwiX2VkaXRGbG93IiwiSW50ZXJuYWxFZGl0RmxvdyIsIl9zaWRlRWZmZWN0cyIsIlNpZGVFZmZlY3RzIiwiZWRpdEZsb3ciLCJFZGl0RmxvdyIsImdldFZpZXciLCJNb2NrQ29udHJvbGxlciIsIm1vY2tNVkMiLCJleGlzdGluZyIsInZpZXciLCJjb250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVUk1TW9ja0hlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFdpdGhNb2NrIH0gZnJvbSBcIkBzYXAtdXgvamVzdC1tb2NrLXVpNS9kaXN0L2dlbmVyaWNcIjtcbmltcG9ydCB7IG1vY2sgfSBmcm9tIFwiQHNhcC11eC9qZXN0LW1vY2stdWk1L2Rpc3QvZ2VuZXJpY1wiO1xuaW1wb3J0IEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IEludGVybmFsRWRpdEZsb3cgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IFNpZGVFZmZlY3RzIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9TaWRlRWZmZWN0c1wiO1xuaW1wb3J0IEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyXCI7XG5pbXBvcnQgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCBDb21wb3NpdGVCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvQ29tcG9zaXRlQmluZGluZ1wiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgT0RhdGFDb250ZXh0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhQ29udGV4dEJpbmRpbmdcIjtcbmltcG9ydCBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IE9EYXRhUHJvcGVydHlCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFQcm9wZXJ0eUJpbmRpbmdcIjtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tDb250ZXh0ID0gV2l0aE1vY2s8Q29udGV4dD4gJiB7XG5cdF9pc0tlcHRBbGl2ZTogYm9vbGVhbjtcblx0X2NvbnRleHREYXRhOiBhbnk7XG5cdF9vQmluZGluZzogYW55O1xuXHRfaXNJbmFjdGl2ZTogYm9vbGVhbjtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tDb250ZXh0LlxuICpcbiAqIEBwYXJhbSBvQ29udGV4dERhdGEgQSBtYXAgb2YgdGhlIGRpZmZlcmVudCBwcm9wZXJ0aWVzIG9mIHRoZSBjb250ZXh0LiBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgJyRwYXRoJyB3aWxsIGJlIHJldHVybmVkIGJ5IHRoZSAnZ2V0UGF0aCcgbWV0aG9kXG4gKiBAcGFyYW0gb0JpbmRpbmcgVGhlIGJpbmRpbmcgb2YgdGhlIGNvbnRleHRcbiAqIEBwYXJhbSBpc0luYWN0aXZlIElzIHRoZSBjb250ZXh0IGluaWFjdGl2ZSBvciBub3RcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tDb250ZXh0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrQ29udGV4dChvQ29udGV4dERhdGE/OiBhbnksIG9CaW5kaW5nPzogYW55LCBpc0luYWN0aXZlPzogYm9vbGVhbik6IE1vY2tDb250ZXh0IHtcblx0Ly8gVWdseSB3b3JrYXJvdW5kIHRvIGdldCBhIHByb3BlciBtb2NrIHBiamVjdCwgYXMgQ29udGV4dCBpc24ndCBwcm9wZXJseSBleHBvcnRlZCBmcm9tIFVJNVxuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9iamVjdC5nZXRQcm90b3R5cGVPZigoQ29udGV4dCBhcyBhbnkpLmNyZWF0ZU5ld0NvbnRleHQobnVsbCwgbnVsbCwgXCIvZVwiKSkpIGFzIE1vY2tDb250ZXh0O1xuXHRtb2NrZWQuX2lzS2VwdEFsaXZlID0gZmFsc2U7XG5cdG1vY2tlZC5fY29udGV4dERhdGEgPSBvQ29udGV4dERhdGEgfHwge307XG5cdG1vY2tlZC5fb0JpbmRpbmcgPSBvQmluZGluZztcblx0bW9ja2VkLl9pc0luYWN0aXZlID0gISFpc0luYWN0aXZlO1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0LkNvbnRleHRcIjtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldFByb3BlcnR5Lm1vY2tJbXBsZW1lbnRhdGlvbigoa2V5OiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9jb250ZXh0RGF0YVtrZXldO1xuXHR9KTtcblx0bW9ja2VkLm1vY2sucmVxdWVzdFByb3BlcnR5Lm1vY2tJbXBsZW1lbnRhdGlvbigoa2V5T3JLZXlzOiBzdHJpbmcgfCBzdHJpbmdbXSkgPT4ge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGtleU9yS2V5cykpIHtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoa2V5T3JLZXlzLm1hcCgoa2V5KSA9PiBtb2NrZWQuX2NvbnRleHREYXRhW2tleV0pKTtcblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShtb2NrZWQuX2NvbnRleHREYXRhW2tleU9yS2V5c10pO1xuXHR9KTtcblx0bW9ja2VkLm1vY2sucmVxdWVzdE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShtb2NrZWQuX2NvbnRleHREYXRhW2tleV0pO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suc2V0UHJvcGVydHkubW9ja0ltcGxlbWVudGF0aW9uKChrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuXHRcdG1vY2tlZC5fY29udGV4dERhdGFba2V5XSA9IHZhbHVlO1xuXHRcdHJldHVybiBtb2NrZWQuX2NvbnRleHREYXRhW2tleV07XG5cdH0pO1xuXG5cdG1vY2tlZC5tb2NrLmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHBhdGg6IHN0cmluZykgPT4ge1xuXHRcdGxldCByZXN1bHQgPSBwYXRoID8gbW9ja2VkLl9jb250ZXh0RGF0YVtwYXRoXSA6IG1vY2tlZC5fY29udGV4dERhdGE7XG5cblx0XHRpZiAoIXJlc3VsdCAmJiBwYXRoICYmIHBhdGguaW5kZXhPZihcIi9cIikgPiAtMSkge1xuXHRcdFx0Y29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcblx0XHRcdHJlc3VsdCA9IHBhcnRzLnJlZHVjZSgoc3VtLCBwYXJ0OiBhbnkpID0+IHtcblx0XHRcdFx0c3VtID0gcGFydCA/IHN1bVtwYXJ0XSA6IHN1bTtcblx0XHRcdFx0cmV0dXJuIHN1bTtcblx0XHRcdH0sIG1vY2tlZC5fY29udGV4dERhdGEpO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH0pO1xuXG5cdG1vY2tlZC5tb2NrLmdldFBhdGgubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5fY29udGV4dERhdGFbXCIkcGF0aFwiXSk7XG5cdG1vY2tlZC5tb2NrLmdldEJpbmRpbmcubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5fb0JpbmRpbmcpO1xuXHRtb2NrZWQubW9jay5nZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gbW9ja2VkLl9vQmluZGluZz8uZ2V0TW9kZWwoKSk7XG5cdG1vY2tlZC5tb2NrLnNldEtlZXBBbGl2ZS5tb2NrSW1wbGVtZW50YXRpb24oKGJvb2w6IGJvb2xlYW4sIF9mbk9uQmVmb3JlRGVzdHJveT86IGFueSwgX2JSZXF1ZXN0TWVzc2FnZXM/OiBib29sZWFuKSA9PiB7XG5cdFx0bW9ja2VkLl9pc0tlcHRBbGl2ZSA9IGJvb2w7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5pc0tlZXBBbGl2ZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gbW9ja2VkLl9pc0tlcHRBbGl2ZSk7XG5cdG1vY2tlZC5tb2NrLmlzSW5hY3RpdmUubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5faXNJbmFjdGl2ZSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tDb250ZXh0IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrQ29udGV4dDogbmV3IChvVmFsdWVzPzogYW55LCBvQmluZGluZz86IGFueSwgaXNJbmFjdGl2ZT86IGJvb2xlYW4pID0+IE1vY2tDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLmJhc2UuRXZlbnRcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja0V2ZW50ID0gV2l0aE1vY2s8RXZlbnQ+ICYge1xuXHRfcGFyYW1zOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja0V2ZW50LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgVGhlIHBhcmFtZXRlcnMgb2YgdGhlIGV2ZW50XG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrRXZlbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tFdmVudChwYXJhbXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogTW9ja0V2ZW50IHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhFdmVudCkgYXMgTW9ja0V2ZW50O1xuXHRtb2NrZWQuX3BhcmFtcyA9IHBhcmFtcyB8fCB7fTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmdldFBhcmFtZXRlci5tb2NrSW1wbGVtZW50YXRpb24oKG5hbWUpID0+IG1vY2tlZC5fcGFyYW1zW25hbWVdKTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja0V2ZW50IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrRXZlbnQ6IG5ldyAocGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkgPT4gTW9ja0V2ZW50ID0gY3JlYXRlTW9ja0V2ZW50IGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tMaXN0QmluZGluZyA9IFdpdGhNb2NrPE9EYXRhTGlzdEJpbmRpbmc+ICYge1xuXHRfYU1vY2tDb250ZXh0czogTW9ja0NvbnRleHRbXTtcblx0X21vY2tNb2RlbD86IE1vY2tNb2RlbDtcblxuXHQvKipcblx0ICogVXRpbGl0eSBtZXRob2QgdG8gc2V0IHRoZSBtb2RlbCBvZiB0aGUgTGlzdEJpbmRpbmdcblx0ICovXG5cdHNldE1vZGVsOiAobW9kZWw6IE1vY2tNb2RlbCkgPT4gdm9pZDtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tMaXN0QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gYUNvbnRleHREYXRhIEFuIGFycmF5IG9mIG9iamVjdHMgaG9sZGluZyB0aGUgZGlmZmVyZW50IHByb3BlcnRpZXMgb2YgdGhlIGNvbnRleHRzIHJlZmVyZW5jZWQgYnkgdGhlIExpc3RCaW5kaW5nXG4gKiBAcGFyYW0gb01vY2tNb2RlbCBUaGUgbW9kZWwgb2YgdGhlIExpc3RCaW5kaW5nXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTGlzdEJpbmRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tMaXN0QmluZGluZyhhQ29udGV4dERhdGE/OiBhbnlbXSwgb01vY2tNb2RlbD86IE1vY2tNb2RlbCk6IE1vY2tMaXN0QmluZGluZyB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soT0RhdGFMaXN0QmluZGluZykgYXMgTW9ja0xpc3RCaW5kaW5nO1xuXHRhQ29udGV4dERhdGEgPSBhQ29udGV4dERhdGEgfHwgW107XG5cdG1vY2tlZC5fYU1vY2tDb250ZXh0cyA9IGFDb250ZXh0RGF0YS5tYXAoKGNvbnRleHREYXRhKSA9PiB7XG5cdFx0cmV0dXJuIGNyZWF0ZU1vY2tDb250ZXh0KGNvbnRleHREYXRhLCBtb2NrZWQpO1xuXHR9KTtcblx0bW9ja2VkLl9tb2NrTW9kZWwgPSBvTW9ja01vZGVsO1xuXG5cdC8vIFV0aWxpdHkgQVBJXG5cdG1vY2tlZC5zZXRNb2RlbCA9IChtb2RlbDogTW9ja01vZGVsKSA9PiB7XG5cdFx0bW9ja2VkLl9tb2NrTW9kZWwgPSBtb2RlbDtcblx0fTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrSW1wbGVtZW50YXRpb24oKHNDbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCI7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5yZXF1ZXN0Q29udGV4dHMubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG1vY2tlZC5fYU1vY2tDb250ZXh0cyk7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRDdXJyZW50Q29udGV4dHMubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9hTW9ja0NvbnRleHRzO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0QWxsQ3VycmVudENvbnRleHRzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fYU1vY2tDb250ZXh0cztcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldE1vZGVsLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fbW9ja01vZGVsO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0VXBkYXRlR3JvdXBJZC5tb2NrUmV0dXJuVmFsdWUoXCJhdXRvXCIpO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrTGlzdEJpbmRpbmcgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1vY2tMaXN0QmluZGluZzogbmV3IChhQ29udGV4dHM/OiBhbnlbXSwgbW9ja01vZGVsPzogTW9ja01vZGVsKSA9PiBNb2NrTGlzdEJpbmRpbmcgPSBjcmVhdGVNb2NrTGlzdEJpbmRpbmcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhUHJvcGVydHlCaW5kaW5nXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tQcm9wZXJ0eUJpbmRpbmcgPSBXaXRoTW9jazxPRGF0YVByb3BlcnR5QmluZGluZz4gJiB7XG5cdF92YWx1ZT86IGFueTtcblx0X3BhdGg/OiBzdHJpbmc7XG5cdF9tb2NrTW9kZWw/OiBNb2NrTW9kZWw7XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrUHJvcGVydHlCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgcmV0dXJuZCBieSB0aGUgUHJvcGVydHlCaW5kaW5nXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBvZiB0aGUgUHJvcGVydHlCaW5kaW5nXG4gKiBAcGFyYW0gb01vY2tNb2RlbCBUaGUgbW9kZWwgb2YgdGhlIFByb3BlcnR5QmluZGluZ1xuICogQHJldHVybnMgQSBuZXcgTW9ja1Byb3BlcnR5QmluZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja1Byb3BlcnR5QmluZGluZyh2YWx1ZTogYW55LCBwYXRoPzogc3RyaW5nLCBvTW9ja01vZGVsPzogTW9ja01vZGVsKTogTW9ja1Byb3BlcnR5QmluZGluZyB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soT0RhdGFQcm9wZXJ0eUJpbmRpbmcpIGFzIE1vY2tQcm9wZXJ0eUJpbmRpbmc7XG5cdG1vY2tlZC5fbW9ja01vZGVsID0gb01vY2tNb2RlbDtcblx0bW9ja2VkLl92YWx1ZSA9IHZhbHVlO1xuXHRtb2NrZWQuX3BhdGggPSBwYXRoO1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhUHJvcGVydHlCaW5kaW5nXCI7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX21vY2tNb2RlbDtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldFZhbHVlLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fdmFsdWU7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRQYXRoLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fcGF0aDtcblx0fSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmcgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1vY2tQcm9wZXJ0eUJpbmRpbmc6IG5ldyAodmFsdWU6IGFueSwgb01vY2tNb2RlbD86IE1vY2tNb2RlbCkgPT4gTW9ja1Byb3BlcnR5QmluZGluZyA9IGNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLkNvbXBvc2l0ZUJpbmRpbmdcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja0NvbXBvc2l0ZUJpbmRpbmcgPSBXaXRoTW9jazxDb21wb3NpdGVCaW5kaW5nPiAmIHtcblx0X2FCaW5kaW5nczogTW9ja1Byb3BlcnR5QmluZGluZ1tdO1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja0NvbXBvc2l0ZUJpbmRpbmcuXG4gKlxuICogQHBhcmFtIGFCaW5kaW5ncyBUaGUgYmluZGluZ3Mgb2YgdGhlIENvbXBvc2l0ZUJpbmRpbmdcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tDb21wb3NpdGVCaW5kaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrQ29tcG9zaXRlQmluZGluZyhhQmluZGluZ3M6IE1vY2tQcm9wZXJ0eUJpbmRpbmdbXSk6IE1vY2tDb21wb3NpdGVCaW5kaW5nIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhDb21wb3NpdGVCaW5kaW5nKSBhcyBNb2NrQ29tcG9zaXRlQmluZGluZztcblx0bW9ja2VkLl9hQmluZGluZ3MgPSBhQmluZGluZ3M7XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5pc0EubW9ja0ltcGxlbWVudGF0aW9uKChzQ2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwuQ29tcG9zaXRlQmluZGluZ1wiO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0QmluZGluZ3MubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9hQmluZGluZ3M7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRWYWx1ZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX2FCaW5kaW5ncy5tYXAoKGJpbmRpbmcpID0+IGJpbmRpbmcuZ2V0VmFsdWUoKSk7XG5cdH0pO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrQ29tcG9zaXRlQmluZGluZyBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0NvbXBvc2l0ZUJpbmRpbmc6IG5ldyAoYUJpbmRpbmdzOiBNb2NrUHJvcGVydHlCaW5kaW5nW10pID0+IE1vY2tDb21wb3NpdGVCaW5kaW5nID0gY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhQ29udGV4dEJpbmRpbmdcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja0NvbnRleHRCaW5kaW5nID0gV2l0aE1vY2s8T0RhdGFDb250ZXh0QmluZGluZz4gJiB7XG5cdG9Nb2NrQ29udGV4dDogTW9ja0NvbnRleHQ7XG5cdGlzS2VwdEFsaXZlOiBib29sZWFuO1xuXHRtb2NrTW9kZWw/OiBNb2NrTW9kZWw7XG5cblx0LyoqXG5cdCAqIFV0aWxpdHkgbWV0aG9kIHRvIGFjY2VzcyB0aGUgaW50ZXJuYWwgTW9ja0NvbnRleHQgb2YgdGhlIENvbnRleHRCaW5kaW5nXG5cdCAqL1xuXHRnZXRJbnRlcm5hbE1vY2tDb250ZXh0OiAoKSA9PiBNb2NrQ29udGV4dDtcblx0LyoqXG5cdCAqIFV0aWxpdHkgbWV0aG9kIHRvIHNldCB0aGUgbW9kZWwgb2YgdGhlIENvbnRleHRCaW5kaW5nXG5cdCAqL1xuXHRzZXRNb2RlbDogKG9Nb2RlbDogTW9ja01vZGVsKSA9PiB2b2lkO1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja0NvbnRleHRCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSBvQ29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgQ29udGV4dEJpbmRpbmdcbiAqIEBwYXJhbSBvTW9ja01vZGVsIFRoZSBtb2RlbCBvZiB0aGUgQ29udGV4dEJpbmRpbmdcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tDb250ZXh0QmluZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbnRleHRCaW5kaW5nKG9Db250ZXh0PzogYW55LCBvTW9ja01vZGVsPzogTW9ja01vZGVsKTogTW9ja0NvbnRleHRCaW5kaW5nIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhPRGF0YUNvbnRleHRCaW5kaW5nKSBhcyBNb2NrQ29udGV4dEJpbmRpbmc7XG5cdG1vY2tlZC5tb2NrTW9kZWwgPSBvTW9ja01vZGVsO1xuXHRtb2NrZWQub01vY2tDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQob0NvbnRleHQgfHwge30sIG1vY2tlZCk7XG5cblx0Ly8gVXRpbGl0eSBBUElcblx0bW9ja2VkLmdldEludGVybmFsTW9ja0NvbnRleHQgPSAoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5vTW9ja0NvbnRleHQ7XG5cdH07XG5cdG1vY2tlZC5zZXRNb2RlbCA9IChvTW9kZWw6IE1vY2tNb2RlbCkgPT4ge1xuXHRcdG1vY2tlZC5tb2NrTW9kZWwgPSBvTW9kZWw7XG5cdH07XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5pc0EubW9ja0ltcGxlbWVudGF0aW9uKChzQ2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0Qm91bmRDb250ZXh0Lm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5vTW9ja0NvbnRleHQ7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQubW9ja01vZGVsO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZXhlY3V0ZS5tb2NrUmVzb2x2ZWRWYWx1ZSh0cnVlKTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbnRleHRCaW5kaW5nIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrQ29udGV4dEJpbmRpbmc6IG5ldyAob0NvbnRleHQ/OiBhbnksIG9Nb2NrTW9kZWw/OiBNb2NrTW9kZWwpID0+IE1vY2tDb250ZXh0QmluZGluZyA9IGNyZWF0ZU1vY2tDb250ZXh0QmluZGluZyBhcyBhbnk7XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIG1vY2sgYSBzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNZXRhTW9kZWxcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja01ldGFNb2RlbCA9IFdpdGhNb2NrPE9EYXRhTWV0YU1vZGVsPiAmIHtcblx0b01ldGFDb250ZXh0OiBNb2NrQ29udGV4dDtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tNZXRhTW9kZWwuXG4gKlxuICogQHBhcmFtIG9NZXRhRGF0YSBBIG1hcCBvZiB0aGUgZGlmZmVyZW50IG1ldGFkYXRhIHByb3BlcnRpZXMgb2YgdGhlIE1ldGFNb2RlbCAocGF0aCAtPiB2YWx1ZSkuXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTWV0YU1vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrTWV0YU1vZGVsKG9NZXRhRGF0YT86IGFueSk6IE1vY2tNZXRhTW9kZWwge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9EYXRhTWV0YU1vZGVsKSBhcyBNb2NrTWV0YU1vZGVsO1xuXHRtb2NrZWQub01ldGFDb250ZXh0ID0gY3JlYXRlTW9ja0NvbnRleHQob01ldGFEYXRhIHx8IHt9KTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmdldE1ldGFDb250ZXh0Lm1vY2tJbXBsZW1lbnRhdGlvbigoc1BhdGg6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBjcmVhdGVNb2NrQ29udGV4dCh7ICRwYXRoOiBzUGF0aCB9KTtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLm9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eShzUGF0aCk7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5jcmVhdGVCaW5kaW5nQ29udGV4dC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gY3JlYXRlTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSk7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRNZXRhUGF0aC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRjb25zdCBtZXRhbW9kZWwgPSBuZXcgT0RhdGFNZXRhTW9kZWwoKTtcblx0XHRyZXR1cm4gc1BhdGggPyBtZXRhbW9kZWwuZ2V0TWV0YVBhdGgoc1BhdGgpIDogc1BhdGg7XG5cdH0pO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrTWV0YU1vZGVsIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrTWV0YU1vZGVsOiBuZXcgKG9NZXRhRGF0YT86IGFueSkgPT4gTW9ja01ldGFNb2RlbCA9IGNyZWF0ZU1vY2tNZXRhTW9kZWwgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTW9kZWxcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja01vZGVsID0gV2l0aE1vY2s8T0RhdGFNb2RlbD4gJiB7XG5cdG9NZXRhTW9kZWw/OiBNb2NrTWV0YU1vZGVsO1xuXHRtb2NrTGlzdEJpbmRpbmc/OiBNb2NrTGlzdEJpbmRpbmc7XG5cdG1vY2tDb250ZXh0QmluZGluZz86IE1vY2tDb250ZXh0QmluZGluZztcblxuXHQvKipcblx0ICogVXRpbGl0eSBtZXRob2QgdG8gc2V0IHRoZSBtZXRhbW9kZWwgb2YgdGhlIE1vY2tNb2RlbFxuXHQgKi9cblx0c2V0TWV0YU1vZGVsOiAob01ldGFNb2RlbDogTW9ja01ldGFNb2RlbCkgPT4gdm9pZDtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tNb2RlbC5cbiAqXG4gKiBAcGFyYW0gb01vY2tMaXN0QmluZGluZyBBIGxpc3QgYmluZGluZyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBjYWxsaW5nIGJpbmRMaXN0LlxuICogQHBhcmFtIG9Nb2NrQ29udGV4dEJpbmRpbmcgQSBjb250ZXh0IGJpbmRpbmcgdGhhdCB3aWxsIGJlIHJldHVybmVkIHdoZW4gY2FsbGluZyBiaW5kQ29udGV4dC5cbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tNb2RlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja01vZGVsKG9Nb2NrTGlzdEJpbmRpbmc/OiBNb2NrTGlzdEJpbmRpbmcsIG9Nb2NrQ29udGV4dEJpbmRpbmc/OiBNb2NrQ29udGV4dEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9EYXRhTW9kZWwpIGFzIE1vY2tNb2RlbDtcblx0bW9ja2VkLm1vY2tMaXN0QmluZGluZyA9IG9Nb2NrTGlzdEJpbmRpbmc7XG5cdG1vY2tlZC5tb2NrQ29udGV4dEJpbmRpbmcgPSBvTW9ja0NvbnRleHRCaW5kaW5nO1xuXHRpZiAob01vY2tMaXN0QmluZGluZykge1xuXHRcdG9Nb2NrTGlzdEJpbmRpbmcuc2V0TW9kZWwobW9ja2VkKTtcblx0fVxuXHRpZiAob01vY2tDb250ZXh0QmluZGluZykge1xuXHRcdG9Nb2NrQ29udGV4dEJpbmRpbmcuc2V0TW9kZWwobW9ja2VkKTtcblx0fVxuXG5cdC8vIFV0aWxpdHkgQVBJXG5cdG1vY2tlZC5zZXRNZXRhTW9kZWwgPSAob01ldGFNb2RlbDogTW9ja01ldGFNb2RlbCkgPT4ge1xuXHRcdG1vY2tlZC5vTWV0YU1vZGVsID0gb01ldGFNb2RlbDtcblx0fTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmJpbmRMaXN0Lm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5tb2NrTGlzdEJpbmRpbmc7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5iaW5kQ29udGV4dC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQubW9ja0NvbnRleHRCaW5kaW5nO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0TWV0YU1vZGVsLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5vTWV0YU1vZGVsO1xuXHR9KTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja01vZGVsIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrTW9kZWw6IG5ldyAob01vY2tMaXN0QmluZGluZz86IE1vY2tMaXN0QmluZGluZywgb01vY2tDb250ZXh0QmluZGluZz86IE1vY2tDb250ZXh0QmluZGluZykgPT4gTW9ja01vZGVsID1cblx0Y3JlYXRlTW9ja01vZGVsIGFzIGFueTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja01vZGVsIHVzZWQgd2l0aCBhIGxpc3RCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSBvTW9ja0xpc3RCaW5kaW5nIEEgbGlzdCBiaW5kaW5nIHRoYXQgd2lsbCBiZSByZXR1cm5lZCB3aGVuIGNhbGxpbmcgYmluZExpc3QuXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tNb2RlbEZyb21MaXN0QmluZGluZyhvTW9ja0xpc3RCaW5kaW5nOiBNb2NrTGlzdEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRyZXR1cm4gY3JlYXRlTW9ja01vZGVsKG9Nb2NrTGlzdEJpbmRpbmcpO1xufVxuLyoqXG4gKiAgRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja01vZGVsIHVzZWQgd2l0aCBhIGNvbnRleHRCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSBvTW9ja0NvbnRleHRCaW5kaW5nIEEgY29udGV4dCBiaW5kaW5nIHRoYXQgd2lsbCBiZSByZXR1cm5lZCB3aGVuIGNhbGxpbmcgYmluZENvbnRleHQuXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tNb2RlbEZyb21Db250ZXh0QmluZGluZyhvTW9ja0NvbnRleHRCaW5kaW5nOiBNb2NrQ29udGV4dEJpbmRpbmcpOiBNb2NrTW9kZWwge1xuXHRyZXR1cm4gY3JlYXRlTW9ja01vZGVsKHVuZGVmaW5lZCwgb01vY2tDb250ZXh0QmluZGluZyk7XG59XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIG1vY2sgYSBzYXAudWkuY29yZS5tdmMuVmlld1xuICovXG5leHBvcnQgdHlwZSBNb2NrVmlldyA9IFdpdGhNb2NrPFZpZXc+O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrVmlldy5cbiAqXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrVmlld1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja1ZpZXcoKTogTW9ja1ZpZXcge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKFZpZXcpO1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLmNvcmUubXZjLlZpZXdcIjtcblx0fSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tWaWV3IGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrVmlldzogbmV3ICgpID0+IE1vY2tWaWV3ID0gY3JlYXRlTW9ja1ZpZXcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLmZlLmNvcmUuUGFnZUNvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja0NvbnRyb2xsZXIgPSBXaXRoTW9jazxDb250cm9sbGVyPiAmIHtcblx0X3JvdXRpbmc6IFdpdGhNb2NrPEludGVybmFsUm91dGluZz47XG5cdF9lZGl0RmxvdzogV2l0aE1vY2s8SW50ZXJuYWxFZGl0Rmxvdz47XG5cdF9zaWRlRWZmZWN0czogV2l0aE1vY2s8U2lkZUVmZmVjdHM+O1xuXHRlZGl0RmxvdzogV2l0aE1vY2s8RWRpdEZsb3c+O1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja0NvbnRyb2xsZXIuXG4gKlxuICogQHJldHVybnMgQSBuZXcgTW9ja0NvbnRyb2xsZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tDb250cm9sbGVyKCk6IE1vY2tDb250cm9sbGVyIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhDb250cm9sbGVyKSBhcyBNb2NrQ29udHJvbGxlcjtcblx0bW9ja2VkLl9yb3V0aW5nID0gbW9jayhJbnRlcm5hbFJvdXRpbmcpO1xuXHRtb2NrZWQuX2VkaXRGbG93ID0gbW9jayhJbnRlcm5hbEVkaXRGbG93KTtcblx0bW9ja2VkLl9zaWRlRWZmZWN0cyA9IG1vY2soU2lkZUVmZmVjdHMpO1xuXHRtb2NrZWQuZWRpdEZsb3cgPSBtb2NrKEVkaXRGbG93KTtcblxuXHQvLyBEZWZhdWx0IEJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmdldFZpZXcubW9ja1JldHVyblZhbHVlKGNyZWF0ZU1vY2tWaWV3KCkpO1xuXHRtb2NrZWQubW9jay5pc0EubW9ja1JldHVyblZhbHVlKGZhbHNlKTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gbW9ja0NvbnRyb2xsZXIgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1vY2tDb250cm9sbGVyOiBuZXcgKCkgPT4gTW9ja0NvbnRyb2xsZXIgPSBjcmVhdGVNb2NrQ29udHJvbGxlciBhcyBhbnk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTVZDTW9jayB7XG5cdG1vZGVsOiBNb2NrTW9kZWw7XG5cdHZpZXc6IE1vY2tWaWV3O1xuXHRjb250cm9sbGVyOiBNb2NrQ29udHJvbGxlcjtcbn1cbi8qKlxuICogR2VuZXJhdGUgbW9kZWwsIHZpZXcgYW5kIGNvbnRyb2xsZXIgbW9ja3MgdGhhdCByZWZlciB0byBlYWNoIG90aGVyLlxuICpcbiAqIEBwYXJhbSBleGlzdGluZyBPcHRpb25hbCBleGlzdGluZyBtb2NrZWQgaW5zdGFuY2VzIHRoYXQgc2hvdWxkIGJlIHVzZWRcbiAqIEByZXR1cm5zIE1vY2tlZCBtb2RlbCwgdmlldyBhbmQgY29udHJvbGxlciBpbnN0YW5jZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tNVkMoZXhpc3Rpbmc/OiBQYXJ0aWFsPE1WQ01vY2s+KTogTVZDTW9jayB7XG5cdGNvbnN0IG1vZGVsID0gZXhpc3Rpbmc/Lm1vZGVsIHx8IGNyZWF0ZU1vY2tNb2RlbCgpO1xuXHRjb25zdCB2aWV3ID0gZXhpc3Rpbmc/LnZpZXcgfHwgY3JlYXRlTW9ja1ZpZXcoKTtcblx0Y29uc3QgY29udHJvbGxlciA9IGV4aXN0aW5nPy5jb250cm9sbGVyIHx8IGNyZWF0ZU1vY2tDb250cm9sbGVyKCk7XG5cblx0dmlldy5tb2NrLmdldENvbnRyb2xsZXIubW9ja1JldHVyblZhbHVlKGNvbnRyb2xsZXIpO1xuXHR2aWV3Lm1vY2suZ2V0TW9kZWwubW9ja1JldHVyblZhbHVlKG1vZGVsKTtcblx0Y29udHJvbGxlci5tb2NrLmdldFZpZXcubW9ja1JldHVyblZhbHVlKHZpZXcpO1xuXG5cdHJldHVybiB7IG1vZGVsLCB2aWV3LCBjb250cm9sbGVyIH07XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7RUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNBLGlCQUFULENBQTJCQyxZQUEzQixFQUErQ0MsUUFBL0MsRUFBK0RDLFVBQS9ELEVBQWtHO0lBQ3hHO0lBQ0EsSUFBTUMsTUFBTSxHQUFHQyxJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsY0FBUCxDQUF1QkMsT0FBRCxDQUFpQkMsZ0JBQWpCLENBQWtDLElBQWxDLEVBQXdDLElBQXhDLEVBQThDLElBQTlDLENBQXRCLENBQUQsQ0FBbkI7SUFDQUwsTUFBTSxDQUFDTSxZQUFQLEdBQXNCLEtBQXRCO0lBQ0FOLE1BQU0sQ0FBQ08sWUFBUCxHQUFzQlYsWUFBWSxJQUFJLEVBQXRDO0lBQ0FHLE1BQU0sQ0FBQ1EsU0FBUCxHQUFtQlYsUUFBbkI7SUFDQUUsTUFBTSxDQUFDUyxXQUFQLEdBQXFCLENBQUMsQ0FBQ1YsVUFBdkIsQ0FOd0csQ0FReEc7O0lBQ0FDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUyxHQUFaLENBQWdCQyxrQkFBaEIsQ0FBbUMsVUFBQ0MsVUFBRCxFQUF3QjtNQUMxRCxPQUFPQSxVQUFVLEtBQUssK0JBQXRCO0lBQ0EsQ0FGRDtJQUdBWixNQUFNLENBQUNDLElBQVAsQ0FBWVksV0FBWixDQUF3QkYsa0JBQXhCLENBQTJDLFVBQUNHLEdBQUQsRUFBaUI7TUFDM0QsT0FBT2QsTUFBTSxDQUFDTyxZQUFQLENBQW9CTyxHQUFwQixDQUFQO0lBQ0EsQ0FGRDtJQUdBZCxNQUFNLENBQUNDLElBQVAsQ0FBWWMsZUFBWixDQUE0Qkosa0JBQTVCLENBQStDLFVBQUNLLFNBQUQsRUFBa0M7TUFDaEYsSUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLFNBQWQsQ0FBSixFQUE4QjtRQUM3QixPQUFPRyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JKLFNBQVMsQ0FBQ0ssR0FBVixDQUFjLFVBQUNQLEdBQUQ7VUFBQSxPQUFTZCxNQUFNLENBQUNPLFlBQVAsQ0FBb0JPLEdBQXBCLENBQVQ7UUFBQSxDQUFkLENBQWhCLENBQVA7TUFDQTs7TUFDRCxPQUFPSyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JwQixNQUFNLENBQUNPLFlBQVAsQ0FBb0JTLFNBQXBCLENBQWhCLENBQVA7SUFDQSxDQUxEO0lBTUFoQixNQUFNLENBQUNDLElBQVAsQ0FBWXFCLGFBQVosQ0FBMEJYLGtCQUExQixDQUE2QyxVQUFDRyxHQUFELEVBQWlCO01BQzdELE9BQU9LLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQnBCLE1BQU0sQ0FBQ08sWUFBUCxDQUFvQk8sR0FBcEIsQ0FBaEIsQ0FBUDtJQUNBLENBRkQ7SUFHQWQsTUFBTSxDQUFDQyxJQUFQLENBQVlzQixXQUFaLENBQXdCWixrQkFBeEIsQ0FBMkMsVUFBQ0csR0FBRCxFQUFjVSxLQUFkLEVBQTZCO01BQ3ZFeEIsTUFBTSxDQUFDTyxZQUFQLENBQW9CTyxHQUFwQixJQUEyQlUsS0FBM0I7TUFDQSxPQUFPeEIsTUFBTSxDQUFDTyxZQUFQLENBQW9CTyxHQUFwQixDQUFQO0lBQ0EsQ0FIRDtJQUtBZCxNQUFNLENBQUNDLElBQVAsQ0FBWXdCLFNBQVosQ0FBc0JkLGtCQUF0QixDQUF5QyxVQUFDZSxJQUFELEVBQWtCO01BQzFELElBQUlDLE1BQU0sR0FBR0QsSUFBSSxHQUFHMUIsTUFBTSxDQUFDTyxZQUFQLENBQW9CbUIsSUFBcEIsQ0FBSCxHQUErQjFCLE1BQU0sQ0FBQ08sWUFBdkQ7O01BRUEsSUFBSSxDQUFDb0IsTUFBRCxJQUFXRCxJQUFYLElBQW1CQSxJQUFJLENBQUNFLE9BQUwsQ0FBYSxHQUFiLElBQW9CLENBQUMsQ0FBNUMsRUFBK0M7UUFDOUMsSUFBTUMsS0FBSyxHQUFHSCxJQUFJLENBQUNJLEtBQUwsQ0FBVyxHQUFYLENBQWQ7UUFDQUgsTUFBTSxHQUFHRSxLQUFLLENBQUNFLE1BQU4sQ0FBYSxVQUFDQyxHQUFELEVBQU1DLElBQU4sRUFBb0I7VUFDekNELEdBQUcsR0FBR0MsSUFBSSxHQUFHRCxHQUFHLENBQUNDLElBQUQsQ0FBTixHQUFlRCxHQUF6QjtVQUNBLE9BQU9BLEdBQVA7UUFDQSxDQUhRLEVBR05oQyxNQUFNLENBQUNPLFlBSEQsQ0FBVDtNQUlBOztNQUVELE9BQU9vQixNQUFQO0lBQ0EsQ0FaRDtJQWNBM0IsTUFBTSxDQUFDQyxJQUFQLENBQVlpQyxPQUFaLENBQW9CdkIsa0JBQXBCLENBQXVDO01BQUEsT0FBTVgsTUFBTSxDQUFDTyxZQUFQLENBQW9CLE9BQXBCLENBQU47SUFBQSxDQUF2QztJQUNBUCxNQUFNLENBQUNDLElBQVAsQ0FBWWtDLFVBQVosQ0FBdUJ4QixrQkFBdkIsQ0FBMEM7TUFBQSxPQUFNWCxNQUFNLENBQUNRLFNBQWI7SUFBQSxDQUExQztJQUNBUixNQUFNLENBQUNDLElBQVAsQ0FBWW1DLFFBQVosQ0FBcUJ6QixrQkFBckIsQ0FBd0M7TUFBQTs7TUFBQSw0QkFBTVgsTUFBTSxDQUFDUSxTQUFiLHNEQUFNLGtCQUFrQjRCLFFBQWxCLEVBQU47SUFBQSxDQUF4QztJQUNBcEMsTUFBTSxDQUFDQyxJQUFQLENBQVlvQyxZQUFaLENBQXlCMUIsa0JBQXpCLENBQTRDLFVBQUMyQixJQUFELEVBQWdCQyxrQkFBaEIsRUFBMENDLGlCQUExQyxFQUEwRTtNQUNySHhDLE1BQU0sQ0FBQ00sWUFBUCxHQUFzQmdDLElBQXRCO0lBQ0EsQ0FGRDtJQUdBdEMsTUFBTSxDQUFDQyxJQUFQLENBQVl3QyxXQUFaLENBQXdCOUIsa0JBQXhCLENBQTJDO01BQUEsT0FBTVgsTUFBTSxDQUFDTSxZQUFiO0lBQUEsQ0FBM0M7SUFDQU4sTUFBTSxDQUFDQyxJQUFQLENBQVlGLFVBQVosQ0FBdUJZLGtCQUF2QixDQUEwQztNQUFBLE9BQU1YLE1BQU0sQ0FBQ1MsV0FBYjtJQUFBLENBQTFDO0lBRUEsT0FBT1QsTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTTBDLFdBQXFGLEdBQUc5QyxpQkFBOUY7RUFFUDtBQUNBO0FBQ0E7Ozs7RUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTK0MsZUFBVCxDQUF5QkMsTUFBekIsRUFBcUU7SUFDM0UsSUFBTTVDLE1BQU0sR0FBR0MsSUFBSSxDQUFDNEMsS0FBRCxDQUFuQjtJQUNBN0MsTUFBTSxDQUFDOEMsT0FBUCxHQUFpQkYsTUFBTSxJQUFJLEVBQTNCLENBRjJFLENBSTNFOztJQUNBNUMsTUFBTSxDQUFDQyxJQUFQLENBQVk4QyxZQUFaLENBQXlCcEMsa0JBQXpCLENBQTRDLFVBQUNxQyxJQUFEO01BQUEsT0FBVWhELE1BQU0sQ0FBQzhDLE9BQVAsQ0FBZUUsSUFBZixDQUFWO0lBQUEsQ0FBNUM7SUFFQSxPQUFPaEQsTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTWlELFNBQTZELEdBQUdOLGVBQXRFO0VBRVA7QUFDQTtBQUNBOzs7O0VBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTTyxxQkFBVCxDQUErQkMsWUFBL0IsRUFBcURDLFVBQXJELEVBQThGO0lBQ3BHLElBQU1wRCxNQUFNLEdBQUdDLElBQUksQ0FBQ29ELGdCQUFELENBQW5CO0lBQ0FGLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0lBQ0FuRCxNQUFNLENBQUNzRCxjQUFQLEdBQXdCSCxZQUFZLENBQUM5QixHQUFiLENBQWlCLFVBQUNrQyxXQUFELEVBQWlCO01BQ3pELE9BQU8zRCxpQkFBaUIsQ0FBQzJELFdBQUQsRUFBY3ZELE1BQWQsQ0FBeEI7SUFDQSxDQUZ1QixDQUF4QjtJQUdBQSxNQUFNLENBQUN3RCxVQUFQLEdBQW9CSixVQUFwQixDQU5vRyxDQVFwRzs7SUFDQXBELE1BQU0sQ0FBQ3lELFFBQVAsR0FBa0IsVUFBQ0MsS0FBRCxFQUFzQjtNQUN2QzFELE1BQU0sQ0FBQ3dELFVBQVAsR0FBb0JFLEtBQXBCO0lBQ0EsQ0FGRCxDQVRvRyxDQWFwRzs7O0lBQ0ExRCxNQUFNLENBQUNDLElBQVAsQ0FBWVMsR0FBWixDQUFnQkMsa0JBQWhCLENBQW1DLFVBQUNDLFVBQUQsRUFBd0I7TUFDMUQsT0FBT0EsVUFBVSxLQUFLLHdDQUF0QjtJQUNBLENBRkQ7SUFHQVosTUFBTSxDQUFDQyxJQUFQLENBQVkwRCxlQUFaLENBQTRCaEQsa0JBQTVCLENBQStDLFlBQU07TUFDcEQsT0FBT1EsT0FBTyxDQUFDQyxPQUFSLENBQWdCcEIsTUFBTSxDQUFDc0QsY0FBdkIsQ0FBUDtJQUNBLENBRkQ7SUFHQXRELE1BQU0sQ0FBQ0MsSUFBUCxDQUFZMkQsa0JBQVosQ0FBK0JqRCxrQkFBL0IsQ0FBa0QsWUFBTTtNQUN2RCxPQUFPWCxNQUFNLENBQUNzRCxjQUFkO0lBQ0EsQ0FGRDtJQUdBdEQsTUFBTSxDQUFDQyxJQUFQLENBQVk0RCxxQkFBWixDQUFrQ2xELGtCQUFsQyxDQUFxRCxZQUFNO01BQzFELE9BQU9YLE1BQU0sQ0FBQ3NELGNBQWQ7SUFDQSxDQUZEO0lBR0F0RCxNQUFNLENBQUNDLElBQVAsQ0FBWW1DLFFBQVosQ0FBcUJ6QixrQkFBckIsQ0FBd0MsWUFBTTtNQUM3QyxPQUFPWCxNQUFNLENBQUN3RCxVQUFkO0lBQ0EsQ0FGRDtJQUdBeEQsTUFBTSxDQUFDQyxJQUFQLENBQVk2RCxnQkFBWixDQUE2QkMsZUFBN0IsQ0FBNkMsTUFBN0M7SUFFQSxPQUFPL0QsTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTWdFLGVBQWtGLEdBQUdkLHFCQUEzRjtFQUVQO0FBQ0E7QUFDQTs7OztFQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTZSx5QkFBVCxDQUFtQ3pDLEtBQW5DLEVBQStDRSxJQUEvQyxFQUE4RDBCLFVBQTlELEVBQTJHO0lBQ2pILElBQU1wRCxNQUFNLEdBQUdDLElBQUksQ0FBQ2lFLG9CQUFELENBQW5CO0lBQ0FsRSxNQUFNLENBQUN3RCxVQUFQLEdBQW9CSixVQUFwQjtJQUNBcEQsTUFBTSxDQUFDbUUsTUFBUCxHQUFnQjNDLEtBQWhCO0lBQ0F4QixNQUFNLENBQUNvRSxLQUFQLEdBQWUxQyxJQUFmLENBSmlILENBTWpIOztJQUNBMUIsTUFBTSxDQUFDQyxJQUFQLENBQVlTLEdBQVosQ0FBZ0JDLGtCQUFoQixDQUFtQyxVQUFDQyxVQUFELEVBQXdCO01BQzFELE9BQU9BLFVBQVUsS0FBSyw0Q0FBdEI7SUFDQSxDQUZEO0lBR0FaLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZbUMsUUFBWixDQUFxQnpCLGtCQUFyQixDQUF3QyxZQUFNO01BQzdDLE9BQU9YLE1BQU0sQ0FBQ3dELFVBQWQ7SUFDQSxDQUZEO0lBR0F4RCxNQUFNLENBQUNDLElBQVAsQ0FBWW9FLFFBQVosQ0FBcUIxRCxrQkFBckIsQ0FBd0MsWUFBTTtNQUM3QyxPQUFPWCxNQUFNLENBQUNtRSxNQUFkO0lBQ0EsQ0FGRDtJQUdBbkUsTUFBTSxDQUFDQyxJQUFQLENBQVlpQyxPQUFaLENBQW9CdkIsa0JBQXBCLENBQXVDLFlBQU07TUFDNUMsT0FBT1gsTUFBTSxDQUFDb0UsS0FBZDtJQUNBLENBRkQ7SUFJQSxPQUFPcEUsTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTXNFLG1CQUFvRixHQUFHTCx5QkFBN0Y7RUFFUDtBQUNBO0FBQ0E7Ozs7RUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTTSwwQkFBVCxDQUFvQ0MsU0FBcEMsRUFBNEY7SUFDbEcsSUFBTXhFLE1BQU0sR0FBR0MsSUFBSSxDQUFDd0UsZ0JBQUQsQ0FBbkI7SUFDQXpFLE1BQU0sQ0FBQzBFLFVBQVAsR0FBb0JGLFNBQXBCLENBRmtHLENBSWxHOztJQUNBeEUsTUFBTSxDQUFDQyxJQUFQLENBQVlTLEdBQVosQ0FBZ0JDLGtCQUFoQixDQUFtQyxVQUFDQyxVQUFELEVBQXdCO01BQzFELE9BQU9BLFVBQVUsS0FBSywrQkFBdEI7SUFDQSxDQUZEO0lBR0FaLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZMEUsV0FBWixDQUF3QmhFLGtCQUF4QixDQUEyQyxZQUFNO01BQ2hELE9BQU9YLE1BQU0sQ0FBQzBFLFVBQWQ7SUFDQSxDQUZEO0lBR0ExRSxNQUFNLENBQUNDLElBQVAsQ0FBWW9FLFFBQVosQ0FBcUIxRCxrQkFBckIsQ0FBd0MsWUFBTTtNQUM3QyxPQUFPWCxNQUFNLENBQUMwRSxVQUFQLENBQWtCckQsR0FBbEIsQ0FBc0IsVUFBQ3VELE9BQUQ7UUFBQSxPQUFhQSxPQUFPLENBQUNQLFFBQVIsRUFBYjtNQUFBLENBQXRCLENBQVA7SUFDQSxDQUZEO0lBSUEsT0FBT3JFLE1BQVA7RUFDQTtFQUNEO0FBQ0E7QUFDQTs7OztFQUNPLElBQU02RSxvQkFBb0YsR0FBR04sMEJBQTdGO0VBRVA7QUFDQTtBQUNBOzs7O0VBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTTyx3QkFBVCxDQUFrQ0MsUUFBbEMsRUFBa0QzQixVQUFsRCxFQUE4RjtJQUNwRyxJQUFNcEQsTUFBTSxHQUFHQyxJQUFJLENBQUMrRSxtQkFBRCxDQUFuQjtJQUNBaEYsTUFBTSxDQUFDaUYsU0FBUCxHQUFtQjdCLFVBQW5CO0lBQ0FwRCxNQUFNLENBQUNrRixZQUFQLEdBQXNCdEYsaUJBQWlCLENBQUNtRixRQUFRLElBQUksRUFBYixFQUFpQi9FLE1BQWpCLENBQXZDLENBSG9HLENBS3BHOztJQUNBQSxNQUFNLENBQUNtRixzQkFBUCxHQUFnQyxZQUFNO01BQ3JDLE9BQU9uRixNQUFNLENBQUNrRixZQUFkO0lBQ0EsQ0FGRDs7SUFHQWxGLE1BQU0sQ0FBQ3lELFFBQVAsR0FBa0IsVUFBQzJCLE1BQUQsRUFBdUI7TUFDeENwRixNQUFNLENBQUNpRixTQUFQLEdBQW1CRyxNQUFuQjtJQUNBLENBRkQsQ0FUb0csQ0FhcEc7OztJQUNBcEYsTUFBTSxDQUFDQyxJQUFQLENBQVlTLEdBQVosQ0FBZ0JDLGtCQUFoQixDQUFtQyxVQUFDQyxVQUFELEVBQXdCO01BQzFELE9BQU9BLFVBQVUsS0FBSywyQ0FBdEI7SUFDQSxDQUZEO0lBR0FaLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZb0YsZUFBWixDQUE0QjFFLGtCQUE1QixDQUErQyxZQUFNO01BQ3BELE9BQU9YLE1BQU0sQ0FBQ2tGLFlBQWQ7SUFDQSxDQUZEO0lBR0FsRixNQUFNLENBQUNDLElBQVAsQ0FBWW1DLFFBQVosQ0FBcUJ6QixrQkFBckIsQ0FBd0MsWUFBTTtNQUM3QyxPQUFPWCxNQUFNLENBQUNpRixTQUFkO0lBQ0EsQ0FGRDtJQUdBakYsTUFBTSxDQUFDQyxJQUFQLENBQVlxRixPQUFaLENBQW9CQyxpQkFBcEIsQ0FBc0MsSUFBdEM7SUFFQSxPQUFPdkYsTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTXdGLGtCQUFzRixHQUFHVix3QkFBL0Y7RUFFUDtBQUNBO0FBQ0E7Ozs7RUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTVyxtQkFBVCxDQUE2QkMsU0FBN0IsRUFBNkQ7SUFDbkUsSUFBTTFGLE1BQU0sR0FBR0MsSUFBSSxDQUFDMEYsY0FBRCxDQUFuQjtJQUNBM0YsTUFBTSxDQUFDNEYsWUFBUCxHQUFzQmhHLGlCQUFpQixDQUFDOEYsU0FBUyxJQUFJLEVBQWQsQ0FBdkMsQ0FGbUUsQ0FJbkU7O0lBQ0ExRixNQUFNLENBQUNDLElBQVAsQ0FBWTRGLGNBQVosQ0FBMkJsRixrQkFBM0IsQ0FBOEMsVUFBQ21GLEtBQUQsRUFBbUI7TUFDaEUsT0FBT2xHLGlCQUFpQixDQUFDO1FBQUVtRyxLQUFLLEVBQUVEO01BQVQsQ0FBRCxDQUF4QjtJQUNBLENBRkQ7SUFHQTlGLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZd0IsU0FBWixDQUFzQmQsa0JBQXRCLENBQXlDLFVBQUNtRixLQUFELEVBQW1CO01BQzNELE9BQU85RixNQUFNLENBQUM0RixZQUFQLENBQW9CL0UsV0FBcEIsQ0FBZ0NpRixLQUFoQyxDQUFQO0lBQ0EsQ0FGRDtJQUdBOUYsTUFBTSxDQUFDQyxJQUFQLENBQVkrRixvQkFBWixDQUFpQ3JGLGtCQUFqQyxDQUFvRCxVQUFDbUYsS0FBRCxFQUFtQjtNQUN0RSxPQUFPbEcsaUJBQWlCLENBQUM7UUFBRW1HLEtBQUssRUFBRUQ7TUFBVCxDQUFELENBQXhCO0lBQ0EsQ0FGRDtJQUdBOUYsTUFBTSxDQUFDQyxJQUFQLENBQVlnRyxXQUFaLENBQXdCdEYsa0JBQXhCLENBQTJDLFVBQUNtRixLQUFELEVBQW1CO01BQzdELElBQU1JLFNBQVMsR0FBRyxJQUFJUCxjQUFKLEVBQWxCO01BQ0EsT0FBT0csS0FBSyxHQUFHSSxTQUFTLENBQUNELFdBQVYsQ0FBc0JILEtBQXRCLENBQUgsR0FBa0NBLEtBQTlDO0lBQ0EsQ0FIRDtJQUtBLE9BQU85RixNQUFQO0VBQ0E7RUFDRDtBQUNBO0FBQ0E7Ozs7RUFDTyxJQUFNbUcsYUFBcUQsR0FBR1YsbUJBQTlEO0VBRVA7QUFDQTtBQUNBOzs7O0VBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTVyxlQUFULENBQXlCQyxnQkFBekIsRUFBNkRDLG1CQUE3RCxFQUFrSDtJQUN4SCxJQUFNdEcsTUFBTSxHQUFHQyxJQUFJLENBQUNzRyxVQUFELENBQW5CO0lBQ0F2RyxNQUFNLENBQUN3RyxlQUFQLEdBQXlCSCxnQkFBekI7SUFDQXJHLE1BQU0sQ0FBQ3lHLGtCQUFQLEdBQTRCSCxtQkFBNUI7O0lBQ0EsSUFBSUQsZ0JBQUosRUFBc0I7TUFDckJBLGdCQUFnQixDQUFDNUMsUUFBakIsQ0FBMEJ6RCxNQUExQjtJQUNBOztJQUNELElBQUlzRyxtQkFBSixFQUF5QjtNQUN4QkEsbUJBQW1CLENBQUM3QyxRQUFwQixDQUE2QnpELE1BQTdCO0lBQ0EsQ0FUdUgsQ0FXeEg7OztJQUNBQSxNQUFNLENBQUMwRyxZQUFQLEdBQXNCLFVBQUNDLFVBQUQsRUFBK0I7TUFDcEQzRyxNQUFNLENBQUMyRyxVQUFQLEdBQW9CQSxVQUFwQjtJQUNBLENBRkQsQ0Fad0gsQ0FnQnhIOzs7SUFDQTNHLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZMkcsUUFBWixDQUFxQmpHLGtCQUFyQixDQUF3QyxZQUFNO01BQzdDLE9BQU9YLE1BQU0sQ0FBQ3dHLGVBQWQ7SUFDQSxDQUZEO0lBR0F4RyxNQUFNLENBQUNDLElBQVAsQ0FBWTRHLFdBQVosQ0FBd0JsRyxrQkFBeEIsQ0FBMkMsWUFBTTtNQUNoRCxPQUFPWCxNQUFNLENBQUN5RyxrQkFBZDtJQUNBLENBRkQ7SUFHQXpHLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZNkcsWUFBWixDQUF5Qm5HLGtCQUF6QixDQUE0QyxZQUFNO01BQ2pELE9BQU9YLE1BQU0sQ0FBQzJHLFVBQWQ7SUFDQSxDQUZEO0lBSUEsT0FBTzNHLE1BQVA7RUFDQTtFQUNEO0FBQ0E7QUFDQTs7OztFQUNPLElBQU0rRyxTQUEwRyxHQUN0SFgsZUFETTtFQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztFQUNPLFNBQVNZLDhCQUFULENBQXdDWCxnQkFBeEMsRUFBc0Y7SUFDNUYsT0FBT0QsZUFBZSxDQUFDQyxnQkFBRCxDQUF0QjtFQUNBO0VBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztFQUNPLFNBQVNZLGlDQUFULENBQTJDWCxtQkFBM0MsRUFBK0Y7SUFDckcsT0FBT0YsZUFBZSxDQUFDYyxTQUFELEVBQVlaLG1CQUFaLENBQXRCO0VBQ0E7RUFFRDtBQUNBO0FBQ0E7Ozs7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNhLGNBQVQsR0FBb0M7SUFDMUMsSUFBTW5ILE1BQU0sR0FBR0MsSUFBSSxDQUFDbUgsSUFBRCxDQUFuQixDQUQwQyxDQUcxQzs7SUFDQXBILE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUyxHQUFaLENBQWdCQyxrQkFBaEIsQ0FBbUMsVUFBQ0MsVUFBRCxFQUF3QjtNQUMxRCxPQUFPQSxVQUFVLEtBQUssc0JBQXRCO0lBQ0EsQ0FGRDtJQUlBLE9BQU9aLE1BQVA7RUFDQTtFQUNEO0FBQ0E7QUFDQTs7OztFQUNPLElBQU1xSCxRQUE0QixHQUFHRixjQUFyQztFQUVQO0FBQ0E7QUFDQTs7OztFQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTRyxvQkFBVCxHQUFnRDtJQUN0RCxJQUFNdEgsTUFBTSxHQUFHQyxJQUFJLENBQUNzSCxVQUFELENBQW5CO0lBQ0F2SCxNQUFNLENBQUN3SCxRQUFQLEdBQWtCdkgsSUFBSSxDQUFDd0gsZUFBRCxDQUF0QjtJQUNBekgsTUFBTSxDQUFDMEgsU0FBUCxHQUFtQnpILElBQUksQ0FBQzBILGdCQUFELENBQXZCO0lBQ0EzSCxNQUFNLENBQUM0SCxZQUFQLEdBQXNCM0gsSUFBSSxDQUFDNEgsV0FBRCxDQUExQjtJQUNBN0gsTUFBTSxDQUFDOEgsUUFBUCxHQUFrQjdILElBQUksQ0FBQzhILFFBQUQsQ0FBdEIsQ0FMc0QsQ0FPdEQ7O0lBQ0EvSCxNQUFNLENBQUNDLElBQVAsQ0FBWStILE9BQVosQ0FBb0JqRSxlQUFwQixDQUFvQ29ELGNBQWMsRUFBbEQ7SUFDQW5ILE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUyxHQUFaLENBQWdCcUQsZUFBaEIsQ0FBZ0MsS0FBaEM7SUFFQSxPQUFPL0QsTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTWlJLGNBQXdDLEdBQUdYLG9CQUFqRDs7O0VBT1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU1ksT0FBVCxDQUFpQkMsUUFBakIsRUFBdUQ7SUFDN0QsSUFBTXpFLEtBQUssR0FBRyxDQUFBeUUsUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixZQUFBQSxRQUFRLENBQUV6RSxLQUFWLEtBQW1CMEMsZUFBZSxFQUFoRDtJQUNBLElBQU1nQyxJQUFJLEdBQUcsQ0FBQUQsUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixZQUFBQSxRQUFRLENBQUVDLElBQVYsS0FBa0JqQixjQUFjLEVBQTdDO0lBQ0EsSUFBTWtCLFVBQVUsR0FBRyxDQUFBRixRQUFRLFNBQVIsSUFBQUEsUUFBUSxXQUFSLFlBQUFBLFFBQVEsQ0FBRUUsVUFBVixLQUF3QmYsb0JBQW9CLEVBQS9EO0lBRUFjLElBQUksQ0FBQ25JLElBQUwsQ0FBVXFJLGFBQVYsQ0FBd0J2RSxlQUF4QixDQUF3Q3NFLFVBQXhDO0lBQ0FELElBQUksQ0FBQ25JLElBQUwsQ0FBVW1DLFFBQVYsQ0FBbUIyQixlQUFuQixDQUFtQ0wsS0FBbkM7SUFDQTJFLFVBQVUsQ0FBQ3BJLElBQVgsQ0FBZ0IrSCxPQUFoQixDQUF3QmpFLGVBQXhCLENBQXdDcUUsSUFBeEM7SUFFQSxPQUFPO01BQUUxRSxLQUFLLEVBQUxBLEtBQUY7TUFBUzBFLElBQUksRUFBSkEsSUFBVDtNQUFlQyxVQUFVLEVBQVZBO0lBQWYsQ0FBUDtFQUNBIn0=
492
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVNb2NrQ29udGV4dCIsIm9Db250ZXh0RGF0YSIsIm9CaW5kaW5nIiwiaXNJbmFjdGl2ZSIsIm1vY2tlZCIsIm1vY2siLCJPYmplY3QiLCJnZXRQcm90b3R5cGVPZiIsIkNvbnRleHQiLCJjcmVhdGVOZXdDb250ZXh0IiwiX2lzS2VwdEFsaXZlIiwiX2NvbnRleHREYXRhIiwiX29CaW5kaW5nIiwiX2lzSW5hY3RpdmUiLCJpc0EiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJzQ2xhc3NOYW1lIiwiZ2V0UHJvcGVydHkiLCJrZXkiLCJyZXF1ZXN0UHJvcGVydHkiLCJrZXlPcktleXMiLCJBcnJheSIsImlzQXJyYXkiLCJQcm9taXNlIiwicmVzb2x2ZSIsIm1hcCIsInJlcXVlc3RPYmplY3QiLCJzZXRQcm9wZXJ0eSIsInZhbHVlIiwiZ2V0T2JqZWN0IiwicGF0aCIsInJlc3VsdCIsImluZGV4T2YiLCJwYXJ0cyIsInNwbGl0IiwicmVkdWNlIiwic3VtIiwicGFydCIsImdldFBhdGgiLCJnZXRCaW5kaW5nIiwiZ2V0TW9kZWwiLCJzZXRLZWVwQWxpdmUiLCJib29sIiwiX2ZuT25CZWZvcmVEZXN0cm95IiwiX2JSZXF1ZXN0TWVzc2FnZXMiLCJpc0tlZXBBbGl2ZSIsIk1vY2tDb250ZXh0IiwiY3JlYXRlTW9ja0V2ZW50IiwicGFyYW1zIiwiRXZlbnQiLCJfcGFyYW1zIiwiZ2V0UGFyYW1ldGVyIiwibmFtZSIsIk1vY2tFdmVudCIsImNyZWF0ZU1vY2tMaXN0QmluZGluZyIsImFDb250ZXh0RGF0YSIsIm9Nb2NrTW9kZWwiLCJPRGF0YUxpc3RCaW5kaW5nIiwiX2FNb2NrQ29udGV4dHMiLCJjb250ZXh0RGF0YSIsIl9tb2NrTW9kZWwiLCJzZXRNb2RlbCIsIm1vZGVsIiwicmVxdWVzdENvbnRleHRzIiwiZ2V0Q3VycmVudENvbnRleHRzIiwiZ2V0QWxsQ3VycmVudENvbnRleHRzIiwiZ2V0VXBkYXRlR3JvdXBJZCIsIm1vY2tSZXR1cm5WYWx1ZSIsIk1vY2tMaXN0QmluZGluZyIsImNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmciLCJPRGF0YVByb3BlcnR5QmluZGluZyIsIl92YWx1ZSIsIl9wYXRoIiwiZ2V0VmFsdWUiLCJNb2NrUHJvcGVydHlCaW5kaW5nIiwiY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmciLCJhQmluZGluZ3MiLCJDb21wb3NpdGVCaW5kaW5nIiwiX2FCaW5kaW5ncyIsImdldEJpbmRpbmdzIiwiYmluZGluZyIsIk1vY2tDb21wb3NpdGVCaW5kaW5nIiwiY3JlYXRlTW9ja0NvbnRleHRCaW5kaW5nIiwib0NvbnRleHQiLCJPRGF0YUNvbnRleHRCaW5kaW5nIiwibW9ja01vZGVsIiwib01vY2tDb250ZXh0IiwiZ2V0SW50ZXJuYWxNb2NrQ29udGV4dCIsIm9Nb2RlbCIsImdldEJvdW5kQ29udGV4dCIsImV4ZWN1dGUiLCJtb2NrUmVzb2x2ZWRWYWx1ZSIsIk1vY2tDb250ZXh0QmluZGluZyIsImNyZWF0ZU1vY2tNZXRhTW9kZWwiLCJvTWV0YURhdGEiLCJPRGF0YU1ldGFNb2RlbCIsIm9NZXRhQ29udGV4dCIsImdldE1ldGFDb250ZXh0Iiwic1BhdGgiLCIkcGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiZ2V0TWV0YVBhdGgiLCJtZXRhbW9kZWwiLCJNb2NrTWV0YU1vZGVsIiwiY3JlYXRlTW9ja01vZGVsIiwib01vY2tMaXN0QmluZGluZyIsIm9Nb2NrQ29udGV4dEJpbmRpbmciLCJPRGF0YU1vZGVsIiwibW9ja0xpc3RCaW5kaW5nIiwibW9ja0NvbnRleHRCaW5kaW5nIiwic2V0TWV0YU1vZGVsIiwib01ldGFNb2RlbCIsImJpbmRMaXN0IiwiYmluZENvbnRleHQiLCJnZXRNZXRhTW9kZWwiLCJNb2NrTW9kZWwiLCJjcmVhdGVNb2NrTW9kZWxGcm9tTGlzdEJpbmRpbmciLCJjcmVhdGVNb2NrTW9kZWxGcm9tQ29udGV4dEJpbmRpbmciLCJ1bmRlZmluZWQiLCJjcmVhdGVNb2NrVmlldyIsIlZpZXciLCJNb2NrVmlldyIsImNyZWF0ZU1vY2tDb250cm9sbGVyIiwiQ29udHJvbGxlciIsIl9yb3V0aW5nIiwiSW50ZXJuYWxSb3V0aW5nIiwiX2VkaXRGbG93IiwiSW50ZXJuYWxFZGl0RmxvdyIsIl9zaWRlRWZmZWN0cyIsIlNpZGVFZmZlY3RzIiwiZWRpdEZsb3ciLCJFZGl0RmxvdyIsInNoYXJlIiwiU2hhcmUiLCJnZXRWaWV3IiwiTW9ja0NvbnRyb2xsZXIiLCJtb2NrTVZDIiwiZXhpc3RpbmciLCJ2aWV3IiwiY29udHJvbGxlciIsImdldENvbnRyb2xsZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlVJNU1vY2tIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBXaXRoTW9jayB9IGZyb20gXCJAc2FwLXV4L2plc3QtbW9jay11aTUvZGlzdC9nZW5lcmljXCI7XG5pbXBvcnQgeyBtb2NrIH0gZnJvbSBcIkBzYXAtdXgvamVzdC1tb2NrLXVpNS9kaXN0L2dlbmVyaWNcIjtcbmltcG9ydCBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCBJbnRlcm5hbEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbEVkaXRGbG93XCI7XG5pbXBvcnQgSW50ZXJuYWxSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlcm5hbFJvdXRpbmdcIjtcbmltcG9ydCBTaGFyZSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2hhcmVcIjtcbmltcG9ydCBTaWRlRWZmZWN0cyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvU2lkZUVmZmVjdHNcIjtcbmltcG9ydCBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBDb250cm9sbGVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlclwiO1xuaW1wb3J0IFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgQ29tcG9zaXRlQmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL0NvbXBvc2l0ZUJpbmRpbmdcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IE9EYXRhQ29udGV4dEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCBPRGF0YVByb3BlcnR5QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhUHJvcGVydHlCaW5kaW5nXCI7XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIG1vY2sgYSBzYXAudWkubW9kZWwub2RhdGEudjQuQ29udGV4dFxuICovXG5leHBvcnQgdHlwZSBNb2NrQ29udGV4dCA9IFdpdGhNb2NrPENvbnRleHQ+ICYge1xuXHRfaXNLZXB0QWxpdmU6IGJvb2xlYW47XG5cdF9jb250ZXh0RGF0YTogYW55O1xuXHRfb0JpbmRpbmc6IGFueTtcblx0X2lzSW5hY3RpdmU6IGJvb2xlYW47XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrQ29udGV4dC5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHREYXRhIEEgbWFwIG9mIHRoZSBkaWZmZXJlbnQgcHJvcGVydGllcyBvZiB0aGUgY29udGV4dC4gVGhlIHZhbHVlIGZvciB0aGUga2V5ICckcGF0aCcgd2lsbCBiZSByZXR1cm5lZCBieSB0aGUgJ2dldFBhdGgnIG1ldGhvZFxuICogQHBhcmFtIG9CaW5kaW5nIFRoZSBiaW5kaW5nIG9mIHRoZSBjb250ZXh0XG4gKiBAcGFyYW0gaXNJbmFjdGl2ZSBJcyB0aGUgY29udGV4dCBpbmlhY3RpdmUgb3Igbm90XG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrQ29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbnRleHQob0NvbnRleHREYXRhPzogYW55LCBvQmluZGluZz86IGFueSwgaXNJbmFjdGl2ZT86IGJvb2xlYW4pOiBNb2NrQ29udGV4dCB7XG5cdC8vIFVnbHkgd29ya2Fyb3VuZCB0byBnZXQgYSBwcm9wZXIgbW9jayBwYmplY3QsIGFzIENvbnRleHQgaXNuJ3QgcHJvcGVybHkgZXhwb3J0ZWQgZnJvbSBVSTVcblx0Y29uc3QgbW9ja2VkID0gbW9jayhPYmplY3QuZ2V0UHJvdG90eXBlT2YoKENvbnRleHQgYXMgYW55KS5jcmVhdGVOZXdDb250ZXh0KG51bGwsIG51bGwsIFwiL2VcIikpKSBhcyBNb2NrQ29udGV4dDtcblx0bW9ja2VkLl9pc0tlcHRBbGl2ZSA9IGZhbHNlO1xuXHRtb2NrZWQuX2NvbnRleHREYXRhID0gb0NvbnRleHREYXRhIHx8IHt9O1xuXHRtb2NrZWQuX29CaW5kaW5nID0gb0JpbmRpbmc7XG5cdG1vY2tlZC5faXNJbmFjdGl2ZSA9ICEhaXNJbmFjdGl2ZTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrSW1wbGVtZW50YXRpb24oKHNDbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0XCI7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRQcm9wZXJ0eS5tb2NrSW1wbGVtZW50YXRpb24oKGtleTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fY29udGV4dERhdGFba2V5XTtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLnJlcXVlc3RQcm9wZXJ0eS5tb2NrSW1wbGVtZW50YXRpb24oKGtleU9yS2V5czogc3RyaW5nIHwgc3RyaW5nW10pID0+IHtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShrZXlPcktleXMpKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGtleU9yS2V5cy5tYXAoKGtleSkgPT4gbW9ja2VkLl9jb250ZXh0RGF0YVtrZXldKSk7XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUobW9ja2VkLl9jb250ZXh0RGF0YVtrZXlPcktleXNdKTtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLnJlcXVlc3RPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKChrZXk6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUobW9ja2VkLl9jb250ZXh0RGF0YVtrZXldKTtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLnNldFByb3BlcnR5Lm1vY2tJbXBsZW1lbnRhdGlvbigoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+IHtcblx0XHRtb2NrZWQuX2NvbnRleHREYXRhW2tleV0gPSB2YWx1ZTtcblx0XHRyZXR1cm4gbW9ja2VkLl9jb250ZXh0RGF0YVtrZXldO1xuXHR9KTtcblxuXHRtb2NrZWQubW9jay5nZXRPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKChwYXRoOiBzdHJpbmcpID0+IHtcblx0XHRsZXQgcmVzdWx0ID0gcGF0aCA/IG1vY2tlZC5fY29udGV4dERhdGFbcGF0aF0gOiBtb2NrZWQuX2NvbnRleHREYXRhO1xuXG5cdFx0aWYgKCFyZXN1bHQgJiYgcGF0aCAmJiBwYXRoLmluZGV4T2YoXCIvXCIpID4gLTEpIHtcblx0XHRcdGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdChcIi9cIik7XG5cdFx0XHRyZXN1bHQgPSBwYXJ0cy5yZWR1Y2UoKHN1bSwgcGFydDogYW55KSA9PiB7XG5cdFx0XHRcdHN1bSA9IHBhcnQgPyBzdW1bcGFydF0gOiBzdW07XG5cdFx0XHRcdHJldHVybiBzdW07XG5cdFx0XHR9LCBtb2NrZWQuX2NvbnRleHREYXRhKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9KTtcblxuXHRtb2NrZWQubW9jay5nZXRQYXRoLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBtb2NrZWQuX2NvbnRleHREYXRhW1wiJHBhdGhcIl0pO1xuXHRtb2NrZWQubW9jay5nZXRCaW5kaW5nLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBtb2NrZWQuX29CaW5kaW5nKTtcblx0bW9ja2VkLm1vY2suZ2V0TW9kZWwubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5fb0JpbmRpbmc/LmdldE1vZGVsKCkpO1xuXHRtb2NrZWQubW9jay5zZXRLZWVwQWxpdmUubW9ja0ltcGxlbWVudGF0aW9uKChib29sOiBib29sZWFuLCBfZm5PbkJlZm9yZURlc3Ryb3k/OiBhbnksIF9iUmVxdWVzdE1lc3NhZ2VzPzogYm9vbGVhbikgPT4ge1xuXHRcdG1vY2tlZC5faXNLZXB0QWxpdmUgPSBib29sO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suaXNLZWVwQWxpdmUubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IG1vY2tlZC5faXNLZXB0QWxpdmUpO1xuXHRtb2NrZWQubW9jay5pc0luYWN0aXZlLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBtb2NrZWQuX2lzSW5hY3RpdmUpO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrQ29udGV4dCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0NvbnRleHQ6IG5ldyAob1ZhbHVlcz86IGFueSwgb0JpbmRpbmc/OiBhbnksIGlzSW5hY3RpdmU/OiBib29sZWFuKSA9PiBNb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0IGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5iYXNlLkV2ZW50XG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tFdmVudCA9IFdpdGhNb2NrPEV2ZW50PiAmIHtcblx0X3BhcmFtczogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tFdmVudC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIFRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBldmVudFxuICogQHJldHVybnMgQSBuZXcgTW9ja0V2ZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrRXZlbnQocGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IE1vY2tFdmVudCB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soRXZlbnQpIGFzIE1vY2tFdmVudDtcblx0bW9ja2VkLl9wYXJhbXMgPSBwYXJhbXMgfHwge307XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5nZXRQYXJhbWV0ZXIubW9ja0ltcGxlbWVudGF0aW9uKChuYW1lKSA9PiBtb2NrZWQuX3BhcmFtc1tuYW1lXSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tFdmVudCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0V2ZW50OiBuZXcgKHBhcmFtcz86IHsgW2tleTogc3RyaW5nXTogYW55IH0pID0+IE1vY2tFdmVudCA9IGNyZWF0ZU1vY2tFdmVudCBhcyBhbnk7XG5cbi8qKlxuICogVXRpbGl0eSB0eXBlIHRvIG1vY2sgYSBzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1xuICovXG5leHBvcnQgdHlwZSBNb2NrTGlzdEJpbmRpbmcgPSBXaXRoTW9jazxPRGF0YUxpc3RCaW5kaW5nPiAmIHtcblx0X2FNb2NrQ29udGV4dHM6IE1vY2tDb250ZXh0W107XG5cdF9tb2NrTW9kZWw/OiBNb2NrTW9kZWw7XG5cblx0LyoqXG5cdCAqIFV0aWxpdHkgbWV0aG9kIHRvIHNldCB0aGUgbW9kZWwgb2YgdGhlIExpc3RCaW5kaW5nXG5cdCAqL1xuXHRzZXRNb2RlbDogKG1vZGVsOiBNb2NrTW9kZWwpID0+IHZvaWQ7XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrTGlzdEJpbmRpbmcuXG4gKlxuICogQHBhcmFtIGFDb250ZXh0RGF0YSBBbiBhcnJheSBvZiBvYmplY3RzIGhvbGRpbmcgdGhlIGRpZmZlcmVudCBwcm9wZXJ0aWVzIG9mIHRoZSBjb250ZXh0cyByZWZlcmVuY2VkIGJ5IHRoZSBMaXN0QmluZGluZ1xuICogQHBhcmFtIG9Nb2NrTW9kZWwgVGhlIG1vZGVsIG9mIHRoZSBMaXN0QmluZGluZ1xuICogQHJldHVybnMgQSBuZXcgTW9ja0xpc3RCaW5kaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrTGlzdEJpbmRpbmcoYUNvbnRleHREYXRhPzogYW55W10sIG9Nb2NrTW9kZWw/OiBNb2NrTW9kZWwpOiBNb2NrTGlzdEJpbmRpbmcge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9EYXRhTGlzdEJpbmRpbmcpIGFzIE1vY2tMaXN0QmluZGluZztcblx0YUNvbnRleHREYXRhID0gYUNvbnRleHREYXRhIHx8IFtdO1xuXHRtb2NrZWQuX2FNb2NrQ29udGV4dHMgPSBhQ29udGV4dERhdGEubWFwKChjb250ZXh0RGF0YSkgPT4ge1xuXHRcdHJldHVybiBjcmVhdGVNb2NrQ29udGV4dChjb250ZXh0RGF0YSwgbW9ja2VkKTtcblx0fSk7XG5cdG1vY2tlZC5fbW9ja01vZGVsID0gb01vY2tNb2RlbDtcblxuXHQvLyBVdGlsaXR5IEFQSVxuXHRtb2NrZWQuc2V0TW9kZWwgPSAobW9kZWw6IE1vY2tNb2RlbCkgPT4ge1xuXHRcdG1vY2tlZC5fbW9ja01vZGVsID0gbW9kZWw7XG5cdH07XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5pc0EubW9ja0ltcGxlbWVudGF0aW9uKChzQ2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gc0NsYXNzTmFtZSA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiO1xuXHR9KTtcblx0bW9ja2VkLm1vY2sucmVxdWVzdENvbnRleHRzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShtb2NrZWQuX2FNb2NrQ29udGV4dHMpO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0Q3VycmVudENvbnRleHRzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fYU1vY2tDb250ZXh0cztcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldEFsbEN1cnJlbnRDb250ZXh0cy5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX2FNb2NrQ29udGV4dHM7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX21vY2tNb2RlbDtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldFVwZGF0ZUdyb3VwSWQubW9ja1JldHVyblZhbHVlKFwiYXV0b1wiKTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja0xpc3RCaW5kaW5nIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrTGlzdEJpbmRpbmc6IG5ldyAoYUNvbnRleHRzPzogYW55W10sIG1vY2tNb2RlbD86IE1vY2tNb2RlbCkgPT4gTW9ja0xpc3RCaW5kaW5nID0gY3JlYXRlTW9ja0xpc3RCaW5kaW5nIGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YVByb3BlcnR5QmluZGluZ1xuICovXG5leHBvcnQgdHlwZSBNb2NrUHJvcGVydHlCaW5kaW5nID0gV2l0aE1vY2s8T0RhdGFQcm9wZXJ0eUJpbmRpbmc+ICYge1xuXHRfdmFsdWU/OiBhbnk7XG5cdF9wYXRoPzogc3RyaW5nO1xuXHRfbW9ja01vZGVsPzogTW9ja01vZGVsO1xufTtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja1Byb3BlcnR5QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHJldHVybmQgYnkgdGhlIFByb3BlcnR5QmluZGluZ1xuICogQHBhcmFtIHBhdGggVGhlIHBhdGggb2YgdGhlIFByb3BlcnR5QmluZGluZ1xuICogQHBhcmFtIG9Nb2NrTW9kZWwgVGhlIG1vZGVsIG9mIHRoZSBQcm9wZXJ0eUJpbmRpbmdcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tQcm9wZXJ0eUJpbmRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tQcm9wZXJ0eUJpbmRpbmcodmFsdWU6IGFueSwgcGF0aD86IHN0cmluZywgb01vY2tNb2RlbD86IE1vY2tNb2RlbCk6IE1vY2tQcm9wZXJ0eUJpbmRpbmcge1xuXHRjb25zdCBtb2NrZWQgPSBtb2NrKE9EYXRhUHJvcGVydHlCaW5kaW5nKSBhcyBNb2NrUHJvcGVydHlCaW5kaW5nO1xuXHRtb2NrZWQuX21vY2tNb2RlbCA9IG9Nb2NrTW9kZWw7XG5cdG1vY2tlZC5fdmFsdWUgPSB2YWx1ZTtcblx0bW9ja2VkLl9wYXRoID0gcGF0aDtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrSW1wbGVtZW50YXRpb24oKHNDbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YVByb3BlcnR5QmluZGluZ1wiO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0TW9kZWwubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9tb2NrTW9kZWw7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRWYWx1ZS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX3ZhbHVlO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0UGF0aC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQuX3BhdGg7XG5cdH0pO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrUHJvcGVydHlCaW5kaW5nIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBNb2NrUHJvcGVydHlCaW5kaW5nOiBuZXcgKHZhbHVlOiBhbnksIG9Nb2NrTW9kZWw/OiBNb2NrTW9kZWwpID0+IE1vY2tQcm9wZXJ0eUJpbmRpbmcgPSBjcmVhdGVNb2NrUHJvcGVydHlCaW5kaW5nIGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5Db21wb3NpdGVCaW5kaW5nXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tDb21wb3NpdGVCaW5kaW5nID0gV2l0aE1vY2s8Q29tcG9zaXRlQmluZGluZz4gJiB7XG5cdF9hQmluZGluZ3M6IE1vY2tQcm9wZXJ0eUJpbmRpbmdbXTtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tDb21wb3NpdGVCaW5kaW5nLlxuICpcbiAqIEBwYXJhbSBhQmluZGluZ3MgVGhlIGJpbmRpbmdzIG9mIHRoZSBDb21wb3NpdGVCaW5kaW5nXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrQ29tcG9zaXRlQmluZGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmcoYUJpbmRpbmdzOiBNb2NrUHJvcGVydHlCaW5kaW5nW10pOiBNb2NrQ29tcG9zaXRlQmluZGluZyB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soQ29tcG9zaXRlQmluZGluZykgYXMgTW9ja0NvbXBvc2l0ZUJpbmRpbmc7XG5cdG1vY2tlZC5fYUJpbmRpbmdzID0gYUJpbmRpbmdzO1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLkNvbXBvc2l0ZUJpbmRpbmdcIjtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldEJpbmRpbmdzLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5fYUJpbmRpbmdzO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0VmFsdWUubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLl9hQmluZGluZ3MubWFwKChiaW5kaW5nKSA9PiBiaW5kaW5nLmdldFZhbHVlKCkpO1xuXHR9KTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja0NvbXBvc2l0ZUJpbmRpbmcgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1vY2tDb21wb3NpdGVCaW5kaW5nOiBuZXcgKGFCaW5kaW5nczogTW9ja1Byb3BlcnR5QmluZGluZ1tdKSA9PiBNb2NrQ29tcG9zaXRlQmluZGluZyA9IGNyZWF0ZU1vY2tDb21wb3NpdGVCaW5kaW5nIGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUNvbnRleHRCaW5kaW5nXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tDb250ZXh0QmluZGluZyA9IFdpdGhNb2NrPE9EYXRhQ29udGV4dEJpbmRpbmc+ICYge1xuXHRvTW9ja0NvbnRleHQ6IE1vY2tDb250ZXh0O1xuXHRpc0tlcHRBbGl2ZTogYm9vbGVhbjtcblx0bW9ja01vZGVsPzogTW9ja01vZGVsO1xuXG5cdC8qKlxuXHQgKiBVdGlsaXR5IG1ldGhvZCB0byBhY2Nlc3MgdGhlIGludGVybmFsIE1vY2tDb250ZXh0IG9mIHRoZSBDb250ZXh0QmluZGluZ1xuXHQgKi9cblx0Z2V0SW50ZXJuYWxNb2NrQ29udGV4dDogKCkgPT4gTW9ja0NvbnRleHQ7XG5cdC8qKlxuXHQgKiBVdGlsaXR5IG1ldGhvZCB0byBzZXQgdGhlIG1vZGVsIG9mIHRoZSBDb250ZXh0QmluZGluZ1xuXHQgKi9cblx0c2V0TW9kZWw6IChvTW9kZWw6IE1vY2tNb2RlbCkgPT4gdm9pZDtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tDb250ZXh0QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIGNvbnRleHQgb2YgdGhlIENvbnRleHRCaW5kaW5nXG4gKiBAcGFyYW0gb01vY2tNb2RlbCBUaGUgbW9kZWwgb2YgdGhlIENvbnRleHRCaW5kaW5nXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrQ29udGV4dEJpbmRpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tDb250ZXh0QmluZGluZyhvQ29udGV4dD86IGFueSwgb01vY2tNb2RlbD86IE1vY2tNb2RlbCk6IE1vY2tDb250ZXh0QmluZGluZyB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soT0RhdGFDb250ZXh0QmluZGluZykgYXMgTW9ja0NvbnRleHRCaW5kaW5nO1xuXHRtb2NrZWQubW9ja01vZGVsID0gb01vY2tNb2RlbDtcblx0bW9ja2VkLm9Nb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KG9Db250ZXh0IHx8IHt9LCBtb2NrZWQpO1xuXG5cdC8vIFV0aWxpdHkgQVBJXG5cdG1vY2tlZC5nZXRJbnRlcm5hbE1vY2tDb250ZXh0ID0gKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQub01vY2tDb250ZXh0O1xuXHR9O1xuXHRtb2NrZWQuc2V0TW9kZWwgPSAob01vZGVsOiBNb2NrTW9kZWwpID0+IHtcblx0XHRtb2NrZWQubW9ja01vZGVsID0gb01vZGVsO1xuXHR9O1xuXG5cdC8vIERlZmF1bHQgYmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suaXNBLm1vY2tJbXBsZW1lbnRhdGlvbigoc0NsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHNDbGFzc05hbWUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhQ29udGV4dEJpbmRpbmdcIjtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldEJvdW5kQ29udGV4dC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQub01vY2tDb250ZXh0O1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0TW9kZWwubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLm1vY2tNb2RlbDtcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmV4ZWN1dGUubW9ja1Jlc29sdmVkVmFsdWUodHJ1ZSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tDb250ZXh0QmluZGluZyBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0NvbnRleHRCaW5kaW5nOiBuZXcgKG9Db250ZXh0PzogYW55LCBvTW9ja01vZGVsPzogTW9ja01vZGVsKSA9PiBNb2NrQ29udGV4dEJpbmRpbmcgPSBjcmVhdGVNb2NrQ29udGV4dEJpbmRpbmcgYXMgYW55O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTWV0YU1vZGVsXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tNZXRhTW9kZWwgPSBXaXRoTW9jazxPRGF0YU1ldGFNb2RlbD4gJiB7XG5cdG9NZXRhQ29udGV4dDogTW9ja0NvbnRleHQ7XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrTWV0YU1vZGVsLlxuICpcbiAqIEBwYXJhbSBvTWV0YURhdGEgQSBtYXAgb2YgdGhlIGRpZmZlcmVudCBtZXRhZGF0YSBwcm9wZXJ0aWVzIG9mIHRoZSBNZXRhTW9kZWwgKHBhdGggLT4gdmFsdWUpLlxuICogQHJldHVybnMgQSBuZXcgTW9ja01ldGFNb2RlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja01ldGFNb2RlbChvTWV0YURhdGE/OiBhbnkpOiBNb2NrTWV0YU1vZGVsIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhPRGF0YU1ldGFNb2RlbCkgYXMgTW9ja01ldGFNb2RlbDtcblx0bW9ja2VkLm9NZXRhQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KG9NZXRhRGF0YSB8fCB7fSk7XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5nZXRNZXRhQ29udGV4dC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gY3JlYXRlTW9ja0NvbnRleHQoeyAkcGF0aDogc1BhdGggfSk7XG5cdH0pO1xuXHRtb2NrZWQubW9jay5nZXRPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIG1vY2tlZC5vTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkoc1BhdGgpO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suY3JlYXRlQmluZGluZ0NvbnRleHQubW9ja0ltcGxlbWVudGF0aW9uKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIGNyZWF0ZU1vY2tDb250ZXh0KHsgJHBhdGg6IHNQYXRoIH0pO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suZ2V0TWV0YVBhdGgubW9ja0ltcGxlbWVudGF0aW9uKChzUGF0aDogc3RyaW5nKSA9PiB7XG5cdFx0Y29uc3QgbWV0YW1vZGVsID0gbmV3IE9EYXRhTWV0YU1vZGVsKCk7XG5cdFx0cmV0dXJuIHNQYXRoID8gbWV0YW1vZGVsLmdldE1ldGFQYXRoKHNQYXRoKSA6IHNQYXRoO1xuXHR9KTtcblxuXHRyZXR1cm4gbW9ja2VkO1xufVxuLyoqXG4gKiBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCB3ZSBrZWVwIGEgbmV3IG9wZXJhdG9yLiBVc2UgdGhlIGZhY3RvcnkgZnVuY3Rpb24gY3JlYXRlTW9ja01ldGFNb2RlbCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja01ldGFNb2RlbDogbmV3IChvTWV0YURhdGE/OiBhbnkpID0+IE1vY2tNZXRhTW9kZWwgPSBjcmVhdGVNb2NrTWV0YU1vZGVsIGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1vZGVsXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tNb2RlbCA9IFdpdGhNb2NrPE9EYXRhTW9kZWw+ICYge1xuXHRvTWV0YU1vZGVsPzogTW9ja01ldGFNb2RlbDtcblx0bW9ja0xpc3RCaW5kaW5nPzogTW9ja0xpc3RCaW5kaW5nO1xuXHRtb2NrQ29udGV4dEJpbmRpbmc/OiBNb2NrQ29udGV4dEJpbmRpbmc7XG5cblx0LyoqXG5cdCAqIFV0aWxpdHkgbWV0aG9kIHRvIHNldCB0aGUgbWV0YW1vZGVsIG9mIHRoZSBNb2NrTW9kZWxcblx0ICovXG5cdHNldE1ldGFNb2RlbDogKG9NZXRhTW9kZWw6IE1vY2tNZXRhTW9kZWwpID0+IHZvaWQ7XG59O1xuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBNb2NrTW9kZWwuXG4gKlxuICogQHBhcmFtIG9Nb2NrTGlzdEJpbmRpbmcgQSBsaXN0IGJpbmRpbmcgdGhhdCB3aWxsIGJlIHJldHVybmVkIHdoZW4gY2FsbGluZyBiaW5kTGlzdC5cbiAqIEBwYXJhbSBvTW9ja0NvbnRleHRCaW5kaW5nIEEgY29udGV4dCBiaW5kaW5nIHRoYXQgd2lsbCBiZSByZXR1cm5lZCB3aGVuIGNhbGxpbmcgYmluZENvbnRleHQuXG4gKiBAcmV0dXJucyBBIG5ldyBNb2NrTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tNb2RlbChvTW9ja0xpc3RCaW5kaW5nPzogTW9ja0xpc3RCaW5kaW5nLCBvTW9ja0NvbnRleHRCaW5kaW5nPzogTW9ja0NvbnRleHRCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhPRGF0YU1vZGVsKSBhcyBNb2NrTW9kZWw7XG5cdG1vY2tlZC5tb2NrTGlzdEJpbmRpbmcgPSBvTW9ja0xpc3RCaW5kaW5nO1xuXHRtb2NrZWQubW9ja0NvbnRleHRCaW5kaW5nID0gb01vY2tDb250ZXh0QmluZGluZztcblx0aWYgKG9Nb2NrTGlzdEJpbmRpbmcpIHtcblx0XHRvTW9ja0xpc3RCaW5kaW5nLnNldE1vZGVsKG1vY2tlZCk7XG5cdH1cblx0aWYgKG9Nb2NrQ29udGV4dEJpbmRpbmcpIHtcblx0XHRvTW9ja0NvbnRleHRCaW5kaW5nLnNldE1vZGVsKG1vY2tlZCk7XG5cdH1cblxuXHQvLyBVdGlsaXR5IEFQSVxuXHRtb2NrZWQuc2V0TWV0YU1vZGVsID0gKG9NZXRhTW9kZWw6IE1vY2tNZXRhTW9kZWwpID0+IHtcblx0XHRtb2NrZWQub01ldGFNb2RlbCA9IG9NZXRhTW9kZWw7XG5cdH07XG5cblx0Ly8gRGVmYXVsdCBiZWhhdmlvclxuXHRtb2NrZWQubW9jay5iaW5kTGlzdC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQubW9ja0xpc3RCaW5kaW5nO1xuXHR9KTtcblx0bW9ja2VkLm1vY2suYmluZENvbnRleHQubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcblx0XHRyZXR1cm4gbW9ja2VkLm1vY2tDb250ZXh0QmluZGluZztcblx0fSk7XG5cdG1vY2tlZC5tb2NrLmdldE1ldGFNb2RlbC5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4ge1xuXHRcdHJldHVybiBtb2NrZWQub01ldGFNb2RlbDtcblx0fSk7XG5cblx0cmV0dXJuIG1vY2tlZDtcbn1cbi8qKlxuICogRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgd2Uga2VlcCBhIG5ldyBvcGVyYXRvci4gVXNlIHRoZSBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZU1vY2tNb2RlbCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja01vZGVsOiBuZXcgKG9Nb2NrTGlzdEJpbmRpbmc/OiBNb2NrTGlzdEJpbmRpbmcsIG9Nb2NrQ29udGV4dEJpbmRpbmc/OiBNb2NrQ29udGV4dEJpbmRpbmcpID0+IE1vY2tNb2RlbCA9XG5cdGNyZWF0ZU1vY2tNb2RlbCBhcyBhbnk7XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tNb2RlbCB1c2VkIHdpdGggYSBsaXN0QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gb01vY2tMaXN0QmluZGluZyBBIGxpc3QgYmluZGluZyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBjYWxsaW5nIGJpbmRMaXN0LlxuICogQHJldHVybnMgQSBuZXcgTW9ja01vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrTW9kZWxGcm9tTGlzdEJpbmRpbmcob01vY2tMaXN0QmluZGluZzogTW9ja0xpc3RCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0cmV0dXJuIGNyZWF0ZU1vY2tNb2RlbChvTW9ja0xpc3RCaW5kaW5nKTtcbn1cbi8qKlxuICogIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tNb2RlbCB1c2VkIHdpdGggYSBjb250ZXh0QmluZGluZy5cbiAqXG4gKiBAcGFyYW0gb01vY2tDb250ZXh0QmluZGluZyBBIGNvbnRleHQgYmluZGluZyB0aGF0IHdpbGwgYmUgcmV0dXJuZWQgd2hlbiBjYWxsaW5nIGJpbmRDb250ZXh0LlxuICogQHJldHVybnMgQSBuZXcgTW9ja01vZGVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrTW9kZWxGcm9tQ29udGV4dEJpbmRpbmcob01vY2tDb250ZXh0QmluZGluZzogTW9ja0NvbnRleHRCaW5kaW5nKTogTW9ja01vZGVsIHtcblx0cmV0dXJuIGNyZWF0ZU1vY2tNb2RlbCh1bmRlZmluZWQsIG9Nb2NrQ29udGV4dEJpbmRpbmcpO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSB0byBtb2NrIGEgc2FwLnVpLmNvcmUubXZjLlZpZXdcbiAqL1xuZXhwb3J0IHR5cGUgTW9ja1ZpZXcgPSBXaXRoTW9jazxWaWV3Pjtcbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgTW9ja1ZpZXcuXG4gKlxuICogQHJldHVybnMgQSBuZXcgTW9ja1ZpZXdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tWaWV3KCk6IE1vY2tWaWV3IHtcblx0Y29uc3QgbW9ja2VkID0gbW9jayhWaWV3KTtcblxuXHQvLyBEZWZhdWx0IGJlaGF2aW9yXG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrSW1wbGVtZW50YXRpb24oKHNDbGFzc05hbWU6IHN0cmluZykgPT4ge1xuXHRcdHJldHVybiBzQ2xhc3NOYW1lID09PSBcInNhcC51aS5jb3JlLm12Yy5WaWV3XCI7XG5cdH0pO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVNb2NrVmlldyBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja1ZpZXc6IG5ldyAoKSA9PiBNb2NrVmlldyA9IGNyZWF0ZU1vY2tWaWV3IGFzIGFueTtcblxuLyoqXG4gKiBVdGlsaXR5IHR5cGUgdG8gbW9jayBhIHNhcC5mZS5jb3JlLlBhZ2VDb250cm9sbGVyXG4gKi9cbmV4cG9ydCB0eXBlIE1vY2tDb250cm9sbGVyID0gV2l0aE1vY2s8Q29udHJvbGxlcj4gJiB7XG5cdF9yb3V0aW5nOiBXaXRoTW9jazxJbnRlcm5hbFJvdXRpbmc+O1xuXHRfZWRpdEZsb3c6IFdpdGhNb2NrPEludGVybmFsRWRpdEZsb3c+O1xuXHRfc2lkZUVmZmVjdHM6IFdpdGhNb2NrPFNpZGVFZmZlY3RzPjtcblx0ZWRpdEZsb3c6IFdpdGhNb2NrPEVkaXRGbG93Pjtcblx0c2hhcmU6IFdpdGhNb2NrPFNoYXJlPjtcbn07XG4vKipcbiAqIEZhY3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IE1vY2tDb250cm9sbGVyLlxuICpcbiAqIEByZXR1cm5zIEEgbmV3IE1vY2tDb250cm9sbGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb2NrQ29udHJvbGxlcigpOiBNb2NrQ29udHJvbGxlciB7XG5cdGNvbnN0IG1vY2tlZCA9IG1vY2soQ29udHJvbGxlcikgYXMgTW9ja0NvbnRyb2xsZXI7XG5cdG1vY2tlZC5fcm91dGluZyA9IG1vY2soSW50ZXJuYWxSb3V0aW5nKTtcblx0bW9ja2VkLl9lZGl0RmxvdyA9IG1vY2soSW50ZXJuYWxFZGl0Rmxvdyk7XG5cdG1vY2tlZC5fc2lkZUVmZmVjdHMgPSBtb2NrKFNpZGVFZmZlY3RzKTtcblx0bW9ja2VkLmVkaXRGbG93ID0gbW9jayhFZGl0Rmxvdyk7XG5cdG1vY2tlZC5zaGFyZSA9IG1vY2soU2hhcmUpO1xuXG5cdC8vIERlZmF1bHQgQmVoYXZpb3Jcblx0bW9ja2VkLm1vY2suZ2V0Vmlldy5tb2NrUmV0dXJuVmFsdWUoY3JlYXRlTW9ja1ZpZXcoKSk7XG5cdG1vY2tlZC5tb2NrLmlzQS5tb2NrUmV0dXJuVmFsdWUoZmFsc2UpO1xuXG5cdHJldHVybiBtb2NrZWQ7XG59XG4vKipcbiAqIEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIHdlIGtlZXAgYSBuZXcgb3BlcmF0b3IuIFVzZSB0aGUgZmFjdG9yeSBmdW5jdGlvbiBtb2NrQ29udHJvbGxlciBpbnN0ZWFkLlxuICovXG5leHBvcnQgY29uc3QgTW9ja0NvbnRyb2xsZXI6IG5ldyAoKSA9PiBNb2NrQ29udHJvbGxlciA9IGNyZWF0ZU1vY2tDb250cm9sbGVyIGFzIGFueTtcblxuZXhwb3J0IGludGVyZmFjZSBNVkNNb2NrIHtcblx0bW9kZWw6IE1vY2tNb2RlbDtcblx0dmlldzogTW9ja1ZpZXc7XG5cdGNvbnRyb2xsZXI6IE1vY2tDb250cm9sbGVyO1xufVxuLyoqXG4gKiBHZW5lcmF0ZSBtb2RlbCwgdmlldyBhbmQgY29udHJvbGxlciBtb2NrcyB0aGF0IHJlZmVyIHRvIGVhY2ggb3RoZXIuXG4gKlxuICogQHBhcmFtIGV4aXN0aW5nIE9wdGlvbmFsIGV4aXN0aW5nIG1vY2tlZCBpbnN0YW5jZXMgdGhhdCBzaG91bGQgYmUgdXNlZFxuICogQHJldHVybnMgTW9ja2VkIG1vZGVsLCB2aWV3IGFuZCBjb250cm9sbGVyIGluc3RhbmNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja01WQyhleGlzdGluZz86IFBhcnRpYWw8TVZDTW9jaz4pOiBNVkNNb2NrIHtcblx0Y29uc3QgbW9kZWwgPSBleGlzdGluZz8ubW9kZWwgfHwgY3JlYXRlTW9ja01vZGVsKCk7XG5cdGNvbnN0IHZpZXcgPSBleGlzdGluZz8udmlldyB8fCBjcmVhdGVNb2NrVmlldygpO1xuXHRjb25zdCBjb250cm9sbGVyID0gZXhpc3Rpbmc/LmNvbnRyb2xsZXIgfHwgY3JlYXRlTW9ja0NvbnRyb2xsZXIoKTtcblxuXHR2aWV3Lm1vY2suZ2V0Q29udHJvbGxlci5tb2NrUmV0dXJuVmFsdWUoY29udHJvbGxlcik7XG5cdHZpZXcubW9jay5nZXRNb2RlbC5tb2NrUmV0dXJuVmFsdWUobW9kZWwpO1xuXHRjb250cm9sbGVyLm1vY2suZ2V0Vmlldy5tb2NrUmV0dXJuVmFsdWUodmlldyk7XG5cblx0cmV0dXJuIHsgbW9kZWwsIHZpZXcsIGNvbnRyb2xsZXIgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7OztFQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0EsaUJBQVQsQ0FBMkJDLFlBQTNCLEVBQStDQyxRQUEvQyxFQUErREMsVUFBL0QsRUFBa0c7SUFDeEc7SUFDQSxJQUFNQyxNQUFNLEdBQUdDLElBQUksQ0FBQ0MsTUFBTSxDQUFDQyxjQUFQLENBQXVCQyxPQUFELENBQWlCQyxnQkFBakIsQ0FBa0MsSUFBbEMsRUFBd0MsSUFBeEMsRUFBOEMsSUFBOUMsQ0FBdEIsQ0FBRCxDQUFuQjtJQUNBTCxNQUFNLENBQUNNLFlBQVAsR0FBc0IsS0FBdEI7SUFDQU4sTUFBTSxDQUFDTyxZQUFQLEdBQXNCVixZQUFZLElBQUksRUFBdEM7SUFDQUcsTUFBTSxDQUFDUSxTQUFQLEdBQW1CVixRQUFuQjtJQUNBRSxNQUFNLENBQUNTLFdBQVAsR0FBcUIsQ0FBQyxDQUFDVixVQUF2QixDQU53RyxDQVF4Rzs7SUFDQUMsTUFBTSxDQUFDQyxJQUFQLENBQVlTLEdBQVosQ0FBZ0JDLGtCQUFoQixDQUFtQyxVQUFDQyxVQUFELEVBQXdCO01BQzFELE9BQU9BLFVBQVUsS0FBSywrQkFBdEI7SUFDQSxDQUZEO0lBR0FaLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZWSxXQUFaLENBQXdCRixrQkFBeEIsQ0FBMkMsVUFBQ0csR0FBRCxFQUFpQjtNQUMzRCxPQUFPZCxNQUFNLENBQUNPLFlBQVAsQ0FBb0JPLEdBQXBCLENBQVA7SUFDQSxDQUZEO0lBR0FkLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZYyxlQUFaLENBQTRCSixrQkFBNUIsQ0FBK0MsVUFBQ0ssU0FBRCxFQUFrQztNQUNoRixJQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY0YsU0FBZCxDQUFKLEVBQThCO1FBQzdCLE9BQU9HLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQkosU0FBUyxDQUFDSyxHQUFWLENBQWMsVUFBQ1AsR0FBRDtVQUFBLE9BQVNkLE1BQU0sQ0FBQ08sWUFBUCxDQUFvQk8sR0FBcEIsQ0FBVDtRQUFBLENBQWQsQ0FBaEIsQ0FBUDtNQUNBOztNQUNELE9BQU9LLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQnBCLE1BQU0sQ0FBQ08sWUFBUCxDQUFvQlMsU0FBcEIsQ0FBaEIsQ0FBUDtJQUNBLENBTEQ7SUFNQWhCLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZcUIsYUFBWixDQUEwQlgsa0JBQTFCLENBQTZDLFVBQUNHLEdBQUQsRUFBaUI7TUFDN0QsT0FBT0ssT0FBTyxDQUFDQyxPQUFSLENBQWdCcEIsTUFBTSxDQUFDTyxZQUFQLENBQW9CTyxHQUFwQixDQUFoQixDQUFQO0lBQ0EsQ0FGRDtJQUdBZCxNQUFNLENBQUNDLElBQVAsQ0FBWXNCLFdBQVosQ0FBd0JaLGtCQUF4QixDQUEyQyxVQUFDRyxHQUFELEVBQWNVLEtBQWQsRUFBNkI7TUFDdkV4QixNQUFNLENBQUNPLFlBQVAsQ0FBb0JPLEdBQXBCLElBQTJCVSxLQUEzQjtNQUNBLE9BQU94QixNQUFNLENBQUNPLFlBQVAsQ0FBb0JPLEdBQXBCLENBQVA7SUFDQSxDQUhEO0lBS0FkLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZd0IsU0FBWixDQUFzQmQsa0JBQXRCLENBQXlDLFVBQUNlLElBQUQsRUFBa0I7TUFDMUQsSUFBSUMsTUFBTSxHQUFHRCxJQUFJLEdBQUcxQixNQUFNLENBQUNPLFlBQVAsQ0FBb0JtQixJQUFwQixDQUFILEdBQStCMUIsTUFBTSxDQUFDTyxZQUF2RDs7TUFFQSxJQUFJLENBQUNvQixNQUFELElBQVdELElBQVgsSUFBbUJBLElBQUksQ0FBQ0UsT0FBTCxDQUFhLEdBQWIsSUFBb0IsQ0FBQyxDQUE1QyxFQUErQztRQUM5QyxJQUFNQyxLQUFLLEdBQUdILElBQUksQ0FBQ0ksS0FBTCxDQUFXLEdBQVgsQ0FBZDtRQUNBSCxNQUFNLEdBQUdFLEtBQUssQ0FBQ0UsTUFBTixDQUFhLFVBQUNDLEdBQUQsRUFBTUMsSUFBTixFQUFvQjtVQUN6Q0QsR0FBRyxHQUFHQyxJQUFJLEdBQUdELEdBQUcsQ0FBQ0MsSUFBRCxDQUFOLEdBQWVELEdBQXpCO1VBQ0EsT0FBT0EsR0FBUDtRQUNBLENBSFEsRUFHTmhDLE1BQU0sQ0FBQ08sWUFIRCxDQUFUO01BSUE7O01BRUQsT0FBT29CLE1BQVA7SUFDQSxDQVpEO0lBY0EzQixNQUFNLENBQUNDLElBQVAsQ0FBWWlDLE9BQVosQ0FBb0J2QixrQkFBcEIsQ0FBdUM7TUFBQSxPQUFNWCxNQUFNLENBQUNPLFlBQVAsQ0FBb0IsT0FBcEIsQ0FBTjtJQUFBLENBQXZDO0lBQ0FQLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZa0MsVUFBWixDQUF1QnhCLGtCQUF2QixDQUEwQztNQUFBLE9BQU1YLE1BQU0sQ0FBQ1EsU0FBYjtJQUFBLENBQTFDO0lBQ0FSLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZbUMsUUFBWixDQUFxQnpCLGtCQUFyQixDQUF3QztNQUFBOztNQUFBLDRCQUFNWCxNQUFNLENBQUNRLFNBQWIsc0RBQU0sa0JBQWtCNEIsUUFBbEIsRUFBTjtJQUFBLENBQXhDO0lBQ0FwQyxNQUFNLENBQUNDLElBQVAsQ0FBWW9DLFlBQVosQ0FBeUIxQixrQkFBekIsQ0FBNEMsVUFBQzJCLElBQUQsRUFBZ0JDLGtCQUFoQixFQUEwQ0MsaUJBQTFDLEVBQTBFO01BQ3JIeEMsTUFBTSxDQUFDTSxZQUFQLEdBQXNCZ0MsSUFBdEI7SUFDQSxDQUZEO0lBR0F0QyxNQUFNLENBQUNDLElBQVAsQ0FBWXdDLFdBQVosQ0FBd0I5QixrQkFBeEIsQ0FBMkM7TUFBQSxPQUFNWCxNQUFNLENBQUNNLFlBQWI7SUFBQSxDQUEzQztJQUNBTixNQUFNLENBQUNDLElBQVAsQ0FBWUYsVUFBWixDQUF1Qlksa0JBQXZCLENBQTBDO01BQUEsT0FBTVgsTUFBTSxDQUFDUyxXQUFiO0lBQUEsQ0FBMUM7SUFFQSxPQUFPVCxNQUFQO0VBQ0E7RUFDRDtBQUNBO0FBQ0E7Ozs7RUFDTyxJQUFNMEMsV0FBcUYsR0FBRzlDLGlCQUE5RjtFQUVQO0FBQ0E7QUFDQTs7OztFQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVMrQyxlQUFULENBQXlCQyxNQUF6QixFQUFxRTtJQUMzRSxJQUFNNUMsTUFBTSxHQUFHQyxJQUFJLENBQUM0QyxLQUFELENBQW5CO0lBQ0E3QyxNQUFNLENBQUM4QyxPQUFQLEdBQWlCRixNQUFNLElBQUksRUFBM0IsQ0FGMkUsQ0FJM0U7O0lBQ0E1QyxNQUFNLENBQUNDLElBQVAsQ0FBWThDLFlBQVosQ0FBeUJwQyxrQkFBekIsQ0FBNEMsVUFBQ3FDLElBQUQ7TUFBQSxPQUFVaEQsTUFBTSxDQUFDOEMsT0FBUCxDQUFlRSxJQUFmLENBQVY7SUFBQSxDQUE1QztJQUVBLE9BQU9oRCxNQUFQO0VBQ0E7RUFDRDtBQUNBO0FBQ0E7Ozs7RUFDTyxJQUFNaUQsU0FBNkQsR0FBR04sZUFBdEU7RUFFUDtBQUNBO0FBQ0E7Ozs7RUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNPLHFCQUFULENBQStCQyxZQUEvQixFQUFxREMsVUFBckQsRUFBOEY7SUFDcEcsSUFBTXBELE1BQU0sR0FBR0MsSUFBSSxDQUFDb0QsZ0JBQUQsQ0FBbkI7SUFDQUYsWUFBWSxHQUFHQSxZQUFZLElBQUksRUFBL0I7SUFDQW5ELE1BQU0sQ0FBQ3NELGNBQVAsR0FBd0JILFlBQVksQ0FBQzlCLEdBQWIsQ0FBaUIsVUFBQ2tDLFdBQUQsRUFBaUI7TUFDekQsT0FBTzNELGlCQUFpQixDQUFDMkQsV0FBRCxFQUFjdkQsTUFBZCxDQUF4QjtJQUNBLENBRnVCLENBQXhCO0lBR0FBLE1BQU0sQ0FBQ3dELFVBQVAsR0FBb0JKLFVBQXBCLENBTm9HLENBUXBHOztJQUNBcEQsTUFBTSxDQUFDeUQsUUFBUCxHQUFrQixVQUFDQyxLQUFELEVBQXNCO01BQ3ZDMUQsTUFBTSxDQUFDd0QsVUFBUCxHQUFvQkUsS0FBcEI7SUFDQSxDQUZELENBVG9HLENBYXBHOzs7SUFDQTFELE1BQU0sQ0FBQ0MsSUFBUCxDQUFZUyxHQUFaLENBQWdCQyxrQkFBaEIsQ0FBbUMsVUFBQ0MsVUFBRCxFQUF3QjtNQUMxRCxPQUFPQSxVQUFVLEtBQUssd0NBQXRCO0lBQ0EsQ0FGRDtJQUdBWixNQUFNLENBQUNDLElBQVAsQ0FBWTBELGVBQVosQ0FBNEJoRCxrQkFBNUIsQ0FBK0MsWUFBTTtNQUNwRCxPQUFPUSxPQUFPLENBQUNDLE9BQVIsQ0FBZ0JwQixNQUFNLENBQUNzRCxjQUF2QixDQUFQO0lBQ0EsQ0FGRDtJQUdBdEQsTUFBTSxDQUFDQyxJQUFQLENBQVkyRCxrQkFBWixDQUErQmpELGtCQUEvQixDQUFrRCxZQUFNO01BQ3ZELE9BQU9YLE1BQU0sQ0FBQ3NELGNBQWQ7SUFDQSxDQUZEO0lBR0F0RCxNQUFNLENBQUNDLElBQVAsQ0FBWTRELHFCQUFaLENBQWtDbEQsa0JBQWxDLENBQXFELFlBQU07TUFDMUQsT0FBT1gsTUFBTSxDQUFDc0QsY0FBZDtJQUNBLENBRkQ7SUFHQXRELE1BQU0sQ0FBQ0MsSUFBUCxDQUFZbUMsUUFBWixDQUFxQnpCLGtCQUFyQixDQUF3QyxZQUFNO01BQzdDLE9BQU9YLE1BQU0sQ0FBQ3dELFVBQWQ7SUFDQSxDQUZEO0lBR0F4RCxNQUFNLENBQUNDLElBQVAsQ0FBWTZELGdCQUFaLENBQTZCQyxlQUE3QixDQUE2QyxNQUE3QztJQUVBLE9BQU8vRCxNQUFQO0VBQ0E7RUFDRDtBQUNBO0FBQ0E7Ozs7RUFDTyxJQUFNZ0UsZUFBa0YsR0FBR2QscUJBQTNGO0VBRVA7QUFDQTtBQUNBOzs7O0VBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNlLHlCQUFULENBQW1DekMsS0FBbkMsRUFBK0NFLElBQS9DLEVBQThEMEIsVUFBOUQsRUFBMkc7SUFDakgsSUFBTXBELE1BQU0sR0FBR0MsSUFBSSxDQUFDaUUsb0JBQUQsQ0FBbkI7SUFDQWxFLE1BQU0sQ0FBQ3dELFVBQVAsR0FBb0JKLFVBQXBCO0lBQ0FwRCxNQUFNLENBQUNtRSxNQUFQLEdBQWdCM0MsS0FBaEI7SUFDQXhCLE1BQU0sQ0FBQ29FLEtBQVAsR0FBZTFDLElBQWYsQ0FKaUgsQ0FNakg7O0lBQ0ExQixNQUFNLENBQUNDLElBQVAsQ0FBWVMsR0FBWixDQUFnQkMsa0JBQWhCLENBQW1DLFVBQUNDLFVBQUQsRUFBd0I7TUFDMUQsT0FBT0EsVUFBVSxLQUFLLDRDQUF0QjtJQUNBLENBRkQ7SUFHQVosTUFBTSxDQUFDQyxJQUFQLENBQVltQyxRQUFaLENBQXFCekIsa0JBQXJCLENBQXdDLFlBQU07TUFDN0MsT0FBT1gsTUFBTSxDQUFDd0QsVUFBZDtJQUNBLENBRkQ7SUFHQXhELE1BQU0sQ0FBQ0MsSUFBUCxDQUFZb0UsUUFBWixDQUFxQjFELGtCQUFyQixDQUF3QyxZQUFNO01BQzdDLE9BQU9YLE1BQU0sQ0FBQ21FLE1BQWQ7SUFDQSxDQUZEO0lBR0FuRSxNQUFNLENBQUNDLElBQVAsQ0FBWWlDLE9BQVosQ0FBb0J2QixrQkFBcEIsQ0FBdUMsWUFBTTtNQUM1QyxPQUFPWCxNQUFNLENBQUNvRSxLQUFkO0lBQ0EsQ0FGRDtJQUlBLE9BQU9wRSxNQUFQO0VBQ0E7RUFDRDtBQUNBO0FBQ0E7Ozs7RUFDTyxJQUFNc0UsbUJBQW9GLEdBQUdMLHlCQUE3RjtFQUVQO0FBQ0E7QUFDQTs7OztFQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNNLDBCQUFULENBQW9DQyxTQUFwQyxFQUE0RjtJQUNsRyxJQUFNeEUsTUFBTSxHQUFHQyxJQUFJLENBQUN3RSxnQkFBRCxDQUFuQjtJQUNBekUsTUFBTSxDQUFDMEUsVUFBUCxHQUFvQkYsU0FBcEIsQ0FGa0csQ0FJbEc7O0lBQ0F4RSxNQUFNLENBQUNDLElBQVAsQ0FBWVMsR0FBWixDQUFnQkMsa0JBQWhCLENBQW1DLFVBQUNDLFVBQUQsRUFBd0I7TUFDMUQsT0FBT0EsVUFBVSxLQUFLLCtCQUF0QjtJQUNBLENBRkQ7SUFHQVosTUFBTSxDQUFDQyxJQUFQLENBQVkwRSxXQUFaLENBQXdCaEUsa0JBQXhCLENBQTJDLFlBQU07TUFDaEQsT0FBT1gsTUFBTSxDQUFDMEUsVUFBZDtJQUNBLENBRkQ7SUFHQTFFLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZb0UsUUFBWixDQUFxQjFELGtCQUFyQixDQUF3QyxZQUFNO01BQzdDLE9BQU9YLE1BQU0sQ0FBQzBFLFVBQVAsQ0FBa0JyRCxHQUFsQixDQUFzQixVQUFDdUQsT0FBRDtRQUFBLE9BQWFBLE9BQU8sQ0FBQ1AsUUFBUixFQUFiO01BQUEsQ0FBdEIsQ0FBUDtJQUNBLENBRkQ7SUFJQSxPQUFPckUsTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTTZFLG9CQUFvRixHQUFHTiwwQkFBN0Y7RUFFUDtBQUNBO0FBQ0E7Ozs7RUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNPLHdCQUFULENBQWtDQyxRQUFsQyxFQUFrRDNCLFVBQWxELEVBQThGO0lBQ3BHLElBQU1wRCxNQUFNLEdBQUdDLElBQUksQ0FBQytFLG1CQUFELENBQW5CO0lBQ0FoRixNQUFNLENBQUNpRixTQUFQLEdBQW1CN0IsVUFBbkI7SUFDQXBELE1BQU0sQ0FBQ2tGLFlBQVAsR0FBc0J0RixpQkFBaUIsQ0FBQ21GLFFBQVEsSUFBSSxFQUFiLEVBQWlCL0UsTUFBakIsQ0FBdkMsQ0FIb0csQ0FLcEc7O0lBQ0FBLE1BQU0sQ0FBQ21GLHNCQUFQLEdBQWdDLFlBQU07TUFDckMsT0FBT25GLE1BQU0sQ0FBQ2tGLFlBQWQ7SUFDQSxDQUZEOztJQUdBbEYsTUFBTSxDQUFDeUQsUUFBUCxHQUFrQixVQUFDMkIsTUFBRCxFQUF1QjtNQUN4Q3BGLE1BQU0sQ0FBQ2lGLFNBQVAsR0FBbUJHLE1BQW5CO0lBQ0EsQ0FGRCxDQVRvRyxDQWFwRzs7O0lBQ0FwRixNQUFNLENBQUNDLElBQVAsQ0FBWVMsR0FBWixDQUFnQkMsa0JBQWhCLENBQW1DLFVBQUNDLFVBQUQsRUFBd0I7TUFDMUQsT0FBT0EsVUFBVSxLQUFLLDJDQUF0QjtJQUNBLENBRkQ7SUFHQVosTUFBTSxDQUFDQyxJQUFQLENBQVlvRixlQUFaLENBQTRCMUUsa0JBQTVCLENBQStDLFlBQU07TUFDcEQsT0FBT1gsTUFBTSxDQUFDa0YsWUFBZDtJQUNBLENBRkQ7SUFHQWxGLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZbUMsUUFBWixDQUFxQnpCLGtCQUFyQixDQUF3QyxZQUFNO01BQzdDLE9BQU9YLE1BQU0sQ0FBQ2lGLFNBQWQ7SUFDQSxDQUZEO0lBR0FqRixNQUFNLENBQUNDLElBQVAsQ0FBWXFGLE9BQVosQ0FBb0JDLGlCQUFwQixDQUFzQyxJQUF0QztJQUVBLE9BQU92RixNQUFQO0VBQ0E7RUFDRDtBQUNBO0FBQ0E7Ozs7RUFDTyxJQUFNd0Ysa0JBQXNGLEdBQUdWLHdCQUEvRjtFQUVQO0FBQ0E7QUFDQTs7OztFQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNXLG1CQUFULENBQTZCQyxTQUE3QixFQUE2RDtJQUNuRSxJQUFNMUYsTUFBTSxHQUFHQyxJQUFJLENBQUMwRixjQUFELENBQW5CO0lBQ0EzRixNQUFNLENBQUM0RixZQUFQLEdBQXNCaEcsaUJBQWlCLENBQUM4RixTQUFTLElBQUksRUFBZCxDQUF2QyxDQUZtRSxDQUluRTs7SUFDQTFGLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZNEYsY0FBWixDQUEyQmxGLGtCQUEzQixDQUE4QyxVQUFDbUYsS0FBRCxFQUFtQjtNQUNoRSxPQUFPbEcsaUJBQWlCLENBQUM7UUFBRW1HLEtBQUssRUFBRUQ7TUFBVCxDQUFELENBQXhCO0lBQ0EsQ0FGRDtJQUdBOUYsTUFBTSxDQUFDQyxJQUFQLENBQVl3QixTQUFaLENBQXNCZCxrQkFBdEIsQ0FBeUMsVUFBQ21GLEtBQUQsRUFBbUI7TUFDM0QsT0FBTzlGLE1BQU0sQ0FBQzRGLFlBQVAsQ0FBb0IvRSxXQUFwQixDQUFnQ2lGLEtBQWhDLENBQVA7SUFDQSxDQUZEO0lBR0E5RixNQUFNLENBQUNDLElBQVAsQ0FBWStGLG9CQUFaLENBQWlDckYsa0JBQWpDLENBQW9ELFVBQUNtRixLQUFELEVBQW1CO01BQ3RFLE9BQU9sRyxpQkFBaUIsQ0FBQztRQUFFbUcsS0FBSyxFQUFFRDtNQUFULENBQUQsQ0FBeEI7SUFDQSxDQUZEO0lBR0E5RixNQUFNLENBQUNDLElBQVAsQ0FBWWdHLFdBQVosQ0FBd0J0RixrQkFBeEIsQ0FBMkMsVUFBQ21GLEtBQUQsRUFBbUI7TUFDN0QsSUFBTUksU0FBUyxHQUFHLElBQUlQLGNBQUosRUFBbEI7TUFDQSxPQUFPRyxLQUFLLEdBQUdJLFNBQVMsQ0FBQ0QsV0FBVixDQUFzQkgsS0FBdEIsQ0FBSCxHQUFrQ0EsS0FBOUM7SUFDQSxDQUhEO0lBS0EsT0FBTzlGLE1BQVA7RUFDQTtFQUNEO0FBQ0E7QUFDQTs7OztFQUNPLElBQU1tRyxhQUFxRCxHQUFHVixtQkFBOUQ7RUFFUDtBQUNBO0FBQ0E7Ozs7RUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNXLGVBQVQsQ0FBeUJDLGdCQUF6QixFQUE2REMsbUJBQTdELEVBQWtIO0lBQ3hILElBQU10RyxNQUFNLEdBQUdDLElBQUksQ0FBQ3NHLFVBQUQsQ0FBbkI7SUFDQXZHLE1BQU0sQ0FBQ3dHLGVBQVAsR0FBeUJILGdCQUF6QjtJQUNBckcsTUFBTSxDQUFDeUcsa0JBQVAsR0FBNEJILG1CQUE1Qjs7SUFDQSxJQUFJRCxnQkFBSixFQUFzQjtNQUNyQkEsZ0JBQWdCLENBQUM1QyxRQUFqQixDQUEwQnpELE1BQTFCO0lBQ0E7O0lBQ0QsSUFBSXNHLG1CQUFKLEVBQXlCO01BQ3hCQSxtQkFBbUIsQ0FBQzdDLFFBQXBCLENBQTZCekQsTUFBN0I7SUFDQSxDQVR1SCxDQVd4SDs7O0lBQ0FBLE1BQU0sQ0FBQzBHLFlBQVAsR0FBc0IsVUFBQ0MsVUFBRCxFQUErQjtNQUNwRDNHLE1BQU0sQ0FBQzJHLFVBQVAsR0FBb0JBLFVBQXBCO0lBQ0EsQ0FGRCxDQVp3SCxDQWdCeEg7OztJQUNBM0csTUFBTSxDQUFDQyxJQUFQLENBQVkyRyxRQUFaLENBQXFCakcsa0JBQXJCLENBQXdDLFlBQU07TUFDN0MsT0FBT1gsTUFBTSxDQUFDd0csZUFBZDtJQUNBLENBRkQ7SUFHQXhHLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZNEcsV0FBWixDQUF3QmxHLGtCQUF4QixDQUEyQyxZQUFNO01BQ2hELE9BQU9YLE1BQU0sQ0FBQ3lHLGtCQUFkO0lBQ0EsQ0FGRDtJQUdBekcsTUFBTSxDQUFDQyxJQUFQLENBQVk2RyxZQUFaLENBQXlCbkcsa0JBQXpCLENBQTRDLFlBQU07TUFDakQsT0FBT1gsTUFBTSxDQUFDMkcsVUFBZDtJQUNBLENBRkQ7SUFJQSxPQUFPM0csTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTStHLFNBQTBHLEdBQ3RIWCxlQURNO0VBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0VBQ08sU0FBU1ksOEJBQVQsQ0FBd0NYLGdCQUF4QyxFQUFzRjtJQUM1RixPQUFPRCxlQUFlLENBQUNDLGdCQUFELENBQXRCO0VBQ0E7RUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0VBQ08sU0FBU1ksaUNBQVQsQ0FBMkNYLG1CQUEzQyxFQUErRjtJQUNyRyxPQUFPRixlQUFlLENBQUNjLFNBQUQsRUFBWVosbUJBQVosQ0FBdEI7RUFDQTtFQUVEO0FBQ0E7QUFDQTs7Ozs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU2EsY0FBVCxHQUFvQztJQUMxQyxJQUFNbkgsTUFBTSxHQUFHQyxJQUFJLENBQUNtSCxJQUFELENBQW5CLENBRDBDLENBRzFDOztJQUNBcEgsTUFBTSxDQUFDQyxJQUFQLENBQVlTLEdBQVosQ0FBZ0JDLGtCQUFoQixDQUFtQyxVQUFDQyxVQUFELEVBQXdCO01BQzFELE9BQU9BLFVBQVUsS0FBSyxzQkFBdEI7SUFDQSxDQUZEO0lBSUEsT0FBT1osTUFBUDtFQUNBO0VBQ0Q7QUFDQTtBQUNBOzs7O0VBQ08sSUFBTXFILFFBQTRCLEdBQUdGLGNBQXJDO0VBRVA7QUFDQTtBQUNBOzs7O0VBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNHLG9CQUFULEdBQWdEO0lBQ3RELElBQU10SCxNQUFNLEdBQUdDLElBQUksQ0FBQ3NILFVBQUQsQ0FBbkI7SUFDQXZILE1BQU0sQ0FBQ3dILFFBQVAsR0FBa0J2SCxJQUFJLENBQUN3SCxlQUFELENBQXRCO0lBQ0F6SCxNQUFNLENBQUMwSCxTQUFQLEdBQW1CekgsSUFBSSxDQUFDMEgsZ0JBQUQsQ0FBdkI7SUFDQTNILE1BQU0sQ0FBQzRILFlBQVAsR0FBc0IzSCxJQUFJLENBQUM0SCxXQUFELENBQTFCO0lBQ0E3SCxNQUFNLENBQUM4SCxRQUFQLEdBQWtCN0gsSUFBSSxDQUFDOEgsUUFBRCxDQUF0QjtJQUNBL0gsTUFBTSxDQUFDZ0ksS0FBUCxHQUFlL0gsSUFBSSxDQUFDZ0ksS0FBRCxDQUFuQixDQU5zRCxDQVF0RDs7SUFDQWpJLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZaUksT0FBWixDQUFvQm5FLGVBQXBCLENBQW9Db0QsY0FBYyxFQUFsRDtJQUNBbkgsTUFBTSxDQUFDQyxJQUFQLENBQVlTLEdBQVosQ0FBZ0JxRCxlQUFoQixDQUFnQyxLQUFoQztJQUVBLE9BQU8vRCxNQUFQO0VBQ0E7RUFDRDtBQUNBO0FBQ0E7Ozs7RUFDTyxJQUFNbUksY0FBd0MsR0FBR2Isb0JBQWpEOzs7RUFPUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTYyxPQUFULENBQWlCQyxRQUFqQixFQUF1RDtJQUM3RCxJQUFNM0UsS0FBSyxHQUFHLENBQUEyRSxRQUFRLFNBQVIsSUFBQUEsUUFBUSxXQUFSLFlBQUFBLFFBQVEsQ0FBRTNFLEtBQVYsS0FBbUIwQyxlQUFlLEVBQWhEO0lBQ0EsSUFBTWtDLElBQUksR0FBRyxDQUFBRCxRQUFRLFNBQVIsSUFBQUEsUUFBUSxXQUFSLFlBQUFBLFFBQVEsQ0FBRUMsSUFBVixLQUFrQm5CLGNBQWMsRUFBN0M7SUFDQSxJQUFNb0IsVUFBVSxHQUFHLENBQUFGLFFBQVEsU0FBUixJQUFBQSxRQUFRLFdBQVIsWUFBQUEsUUFBUSxDQUFFRSxVQUFWLEtBQXdCakIsb0JBQW9CLEVBQS9EO0lBRUFnQixJQUFJLENBQUNySSxJQUFMLENBQVV1SSxhQUFWLENBQXdCekUsZUFBeEIsQ0FBd0N3RSxVQUF4QztJQUNBRCxJQUFJLENBQUNySSxJQUFMLENBQVVtQyxRQUFWLENBQW1CMkIsZUFBbkIsQ0FBbUNMLEtBQW5DO0lBQ0E2RSxVQUFVLENBQUN0SSxJQUFYLENBQWdCaUksT0FBaEIsQ0FBd0JuRSxlQUF4QixDQUF3Q3VFLElBQXhDO0lBRUEsT0FBTztNQUFFNUUsS0FBSyxFQUFMQSxLQUFGO01BQVM0RSxJQUFJLEVBQUpBLElBQVQ7TUFBZUMsVUFBVSxFQUFWQTtJQUFmLENBQVA7RUFDQSJ9
@@ -3,6 +3,7 @@ import { mock } from "@sap-ux/jest-mock-ui5/dist/generic";
3
3
  import EditFlow from "sap/fe/core/controllerextensions/EditFlow";
4
4
  import InternalEditFlow from "sap/fe/core/controllerextensions/InternalEditFlow";
5
5
  import InternalRouting from "sap/fe/core/controllerextensions/InternalRouting";
6
+ import Share from "sap/fe/core/controllerextensions/Share";
6
7
  import SideEffects from "sap/fe/core/controllerextensions/SideEffects";
7
8
  import Event from "sap/ui/base/Event";
8
9
  import Controller from "sap/ui/core/mvc/Controller";
@@ -450,6 +451,7 @@ export type MockController = WithMock<Controller> & {
450
451
  _editFlow: WithMock<InternalEditFlow>;
451
452
  _sideEffects: WithMock<SideEffects>;
452
453
  editFlow: WithMock<EditFlow>;
454
+ share: WithMock<Share>;
453
455
  };
454
456
  /**
455
457
  * Factory function to create a new MockController.
@@ -462,6 +464,7 @@ export function createMockController(): MockController {
462
464
  mocked._editFlow = mock(InternalEditFlow);
463
465
  mocked._sideEffects = mock(SideEffects);
464
466
  mocked.editFlow = mock(EditFlow);
467
+ mocked.share = mock(Share);
465
468
 
466
469
  // Default Behavior
467
470
  mocked.mock.getView.mockReturnValue(createMockView());
@@ -176,12 +176,14 @@ sap.ui.define(
176
176
  * @ui5-restricted
177
177
  */
178
178
  HeaderActions.prototype.iExecuteSaveAsTile = function (sBookmarkTitle) {
179
- var sShareId = "fe::Share",
179
+ var oShareProperties = {
180
+ icon: "sap-icon://action"
181
+ },
180
182
  oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sObjectPageLayoutId);
181
183
 
182
184
  return this.prepareResult(
183
185
  oOverflowToolbarBuilder
184
- .doOnContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), OpaBuilder.Actions.press())
186
+ .doOnContent(OpaBuilder.Matchers.properties(oShareProperties), OpaBuilder.Actions.press())
185
187
  .description(Utils.formatMessage("Pressing header '{0}' Share button", this.getIdentifier()))
186
188
  .success(APIHelper.createSaveAsTileExecutorBuilder(sBookmarkTitle))
187
189
  .execute()
@@ -196,12 +198,14 @@ sap.ui.define(
196
198
  * @ui5-restricted
197
199
  */
198
200
  HeaderActions.prototype.iExecuteSendEmail = function () {
199
- var sShareId = "fe::Share",
201
+ var oShareProperties = {
202
+ icon: "sap-icon://action"
203
+ },
200
204
  oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sObjectPageLayoutId);
201
205
 
202
206
  return this.prepareResult(
203
207
  oOverflowToolbarBuilder
204
- .doOnContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), OpaBuilder.Actions.press())
208
+ .doOnContent(OpaBuilder.Matchers.properties(oShareProperties), OpaBuilder.Actions.press())
205
209
  .description(Utils.formatMessage("Pressing header '{0}' Share button", this.getIdentifier()))
206
210
  .success(APIHelper.createSendEmailExecutorBuilder())
207
211
  .execute()
@@ -402,15 +402,17 @@ sap.ui.define(
402
402
  */
403
403
  HeaderAssertions.prototype.iCheckSaveAsTile = function (mState) {
404
404
  var oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sObjectPageLayoutId),
405
- sShareId = "fe::Share";
405
+ oShareButtonProperties = {
406
+ icon: "sap-icon://action"
407
+ };
406
408
 
407
409
  if (mState && mState.visible === false) {
408
410
  oOverflowToolbarBuilder
409
- .hasContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), mState)
411
+ .hasContent(OpaBuilder.Matchers.properties(oShareButtonProperties), mState)
410
412
  .description(Utils.formatMessage("Checking header '{0}' Share button with state='{1}'", this.getIdentifier(), mState));
411
413
  } else {
412
414
  oOverflowToolbarBuilder
413
- .doOnContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), OpaBuilder.Actions.press())
415
+ .doOnContent(OpaBuilder.Matchers.properties(oShareButtonProperties), OpaBuilder.Actions.press())
414
416
  .description(Utils.formatMessage("Pressing header '{0}' Share button", this.getIdentifier()))
415
417
  .success(APIHelper.createSaveAsTileCheckBuilder(mState));
416
418
  }
@@ -427,15 +429,17 @@ sap.ui.define(
427
429
  */
428
430
  HeaderAssertions.prototype.iCheckSendEmail = function (mState) {
429
431
  var oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sObjectPageLayoutId),
430
- sShareId = "fe::Share";
432
+ oShareButtonProperties = {
433
+ icon: "sap-icon://action"
434
+ };
431
435
 
432
436
  if (mState && mState.visible === false) {
433
437
  oOverflowToolbarBuilder
434
- .hasContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), mState)
438
+ .hasContent(OpaBuilder.Matchers.properties(oShareButtonProperties), mState)
435
439
  .description(Utils.formatMessage("Checking header '{0}' Share button with state='{1}'", this.getIdentifier(), mState));
436
440
  } else {
437
441
  oOverflowToolbarBuilder
438
- .doOnContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), OpaBuilder.Actions.press())
442
+ .doOnContent(OpaBuilder.Matchers.properties(oShareButtonProperties), OpaBuilder.Actions.press())
439
443
  .description(Utils.formatMessage("Pressing header '{0}' Share button", this.getIdentifier()))
440
444
  .success(APIHelper.createSendEmailCheckBuilder(mState));
441
445
  }
@@ -61,15 +61,17 @@ sap.ui.define(
61
61
  */
62
62
  HeaderAssertionsLR.prototype.iCheckSaveAsTile = function (mState) {
63
63
  var oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sPageId),
64
- sShareId = "fe::Share";
64
+ oShareButtonProperties = {
65
+ icon: "sap-icon://action"
66
+ };
65
67
 
66
68
  if (mState && mState.visible === false) {
67
69
  oOverflowToolbarBuilder
68
- .hasContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), mState)
70
+ .hasContent(OpaBuilder.Matchers.properties(oShareButtonProperties), mState)
69
71
  .description(Utils.formatMessage("Checking header '{0}' Share button with state='{1}'", this.getIdentifier(), mState));
70
72
  } else {
71
73
  oOverflowToolbarBuilder
72
- .doOnContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), OpaBuilder.Actions.press())
74
+ .doOnContent(OpaBuilder.Matchers.properties(oShareButtonProperties), OpaBuilder.Actions.press())
73
75
  .description(Utils.formatMessage("Pressing header '{0}' Share button", this.getIdentifier()))
74
76
  .success(APIHelper.createSaveAsTileCheckBuilder(mState));
75
77
  }
@@ -86,15 +88,17 @@ sap.ui.define(
86
88
  */
87
89
  HeaderAssertionsLR.prototype.iCheckSendEmail = function (mState) {
88
90
  var oOverflowToolbarBuilder = this.createOverflowToolbarBuilder(this._sPageId),
89
- sShareId = "fe::Share";
91
+ oShareButtonProperties = {
92
+ icon: "sap-icon://action"
93
+ };
90
94
 
91
95
  if (mState && mState.visible === false) {
92
96
  oOverflowToolbarBuilder
93
- .hasContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), mState)
97
+ .hasContent(OpaBuilder.Matchers.properties(oShareButtonProperties), mState)
94
98
  .description(Utils.formatMessage("Checking header '{0}' Share button with state='{1}'", this.getIdentifier(), mState));
95
99
  } else {
96
100
  oOverflowToolbarBuilder
97
- .doOnContent(FEBuilder.Matchers.id(new RegExp(Utils.formatMessage("{0}$", sShareId))), OpaBuilder.Actions.press())
101
+ .doOnContent(OpaBuilder.Matchers.properties(oShareButtonProperties), OpaBuilder.Actions.press())
98
102
  .description(Utils.formatMessage("Pressing header '{0}' Share button", this.getIdentifier()))
99
103
  .success(APIHelper.createSendEmailCheckBuilder(mState));
100
104
  }
@@ -21,7 +21,7 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/core/library"], function (Core, _libr
21
21
  controls: [],
22
22
  elements: [],
23
23
  // eslint-disable-next-line no-template-curly-in-string
24
- version: "1.108.0",
24
+ version: "1.108.1",
25
25
  noLibraryCSS: true
26
26
  });
27
27
  return thisLib;