tc-checking-tool-rcl 0.9.115 → 0.9.117

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.
@@ -579,7 +579,7 @@ var Checker = function Checker(_ref) {
579
579
  setState({
580
580
  newVerseText: null,
581
581
  newTags: [],
582
- mode: "default"
582
+ mode: 'default'
583
583
  });
584
584
  };
585
585
 
@@ -597,7 +597,7 @@ var Checker = function Checker(_ref) {
597
597
  setState({
598
598
  newVerseText: null,
599
599
  newTags: [],
600
- mode: "default",
600
+ mode: 'default',
601
601
  isVerseChanged: false
602
602
  });
603
603
  editTargetVerse(chapter, verseRef, before, newVerseText);
@@ -756,8 +756,12 @@ var Checker = function Checker(_ref) {
756
756
  _newCheckingData.selections = false;
757
757
  _newCheckingData.invalidated = false;
758
758
  } else {
759
+ if (tempSelections.length <= 0) {
760
+ _newCheckingData.selections = false;
761
+ } else {
762
+ _newCheckingData.selections = tempSelections;
763
+ }
759
764
  _newCheckingData.nothingToSelect = false;
760
- _newCheckingData.selections = tempSelections;
761
765
  _newCheckingData.invalidated = false;
762
766
  }
763
767
  setLocalCheckingData(_newCheckingData);
@@ -1191,8 +1195,8 @@ var Checker = function Checker(_ref) {
1191
1195
  _paneSettings = [];
1192
1196
  }
1193
1197
  var _toolsSettings = (initialSettings === null || initialSettings === void 0 ? void 0 : initialSettings.toolsSettings) || {
1194
- 'CheckArea': {
1195
- 'fontSize': 100
1198
+ CheckArea: {
1199
+ fontSize: 100
1196
1200
  }
1197
1201
  };
1198
1202
  var _manifest = (initialSettings === null || initialSettings === void 0 ? void 0 : initialSettings.manifest) || {
@@ -1371,4 +1375,4 @@ Checker.propTypes = {
1371
1375
  translate: _propTypes["default"].func.isRequired
1372
1376
  };
1373
1377
  var _default = exports["default"] = Checker;
1374
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXNmbUhlbHBlcnMiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc2VsZWN0aW9uSGVscGVyIiwiX3Byb3BUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX0dyb3VwTWVudUNvbXBvbmVudCIsIl93b3JkQWxpZ25lckxpYiIsIl9kZWVwRXF1YWwiLCJfdHdBcnRpY2xlSGVscGVycyIsIl9DaGVja0luZm9DYXJkIiwiX3RuQXJ0aWNsZUhlbHBlcnMiLCJfU2NyaXB0dXJlUGFuZSIsIl9Qb3BvdmVyQ29udGFpbmVyIiwiX0Jvb2tzT2ZUaGVCaWJsZSIsIl9jb21wbGV4U2NyaXB0Rm9udHMiLCJfVHJhbnNsYXRpb25IZWxwcyIsInRIZWxwc0hlbHBlcnMiLCJfVmVyc2VDaGVjayIsIl9jaGVja0luZm9DYXJkSGVscGVycyIsImUiLCJfX2VzTW9kdWxlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJUeXBlRXJyb3IiLCJhIiwidSIsIm5leHQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiZnJvbSIsIl9hcnJheUxpa2VUb0FycmF5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibCIsImxvY2FsU3R5bGVzIiwiY29udGFpbmVyRGl2IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImhlaWdodCIsImNlbnRlckRpdiIsIm92ZXJmbG93WCIsIm1hcmdpbkxlZnQiLCJzY3JpcHR1cmVQYW5lRGl2IiwiZmxleFNocmluayIsInBhZGRpbmdCb3R0b20iLCJ0cmFuc2xhdGlvbldvcmRzIiwiZXhwb3J0cyIsInRyYW5zbGF0aW9uTm90ZXMiLCJtYXhpbXVtU2VsZWN0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJDaGVja2VyIiwiX3JlZiIsIl90YXJnZXRMYW5ndWFnZURldGFpbCIsIl90YXJnZXRMYW5ndWFnZURldGFpbDIiLCJfdGFyZ2V0X2xhbmd1YWdlJGJvb2siLCJhbGlnbmVkR2xCaWJsZSIsImJpYmxlc18iLCJiaWJsZXMiLCJjaGFuZ2VkQ3VycmVudENoZWNrIiwiY2hhbmdlVGFyZ2V0VmVyc2UiLCJjaGVja2luZ0RhdGEiLCJjaGVja1R5cGUiLCJjb250ZXh0SWQiLCJnZXRMZXhpY29uRGF0YSIsImdsV29yZHNEYXRhIiwiaW5pdGlhbFNldHRpbmdzIiwic2F2ZUNoZWNraW5nRGF0YSIsInNhdmVTZXR0aW5ncyIsInNob3dEb2N1bWVudCIsInN0eWxlcyIsInRhcmdldEJpYmxlXyIsInRhcmdldEJpYmxlIiwidGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzIiwidHJhbnNsYXRlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwYW5lU2V0dGluZ3MiLCJwYW5lS2V5U2V0dGluZ3MiLCJ0b29sc1NldHRpbmdzIiwibWFuaWZlc3QiLCJfdXNlU3RhdGUyIiwic2V0dGluZ3MiLCJfc2V0U2V0dGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNldEJpYmxlcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2V0VGFyZ2V0QmlibGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInRlbXBDaGVja2luZ0RhdGEiLCJzZXRUZW1wQ2hlY2tpbmdEYXRhIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJsb2NhbENoZWNraW5nRGF0YSIsInNldExvY2FsQ2hlY2tpbmdEYXRhIiwiX3VzZVN0YXRlMSIsImFsaWduZWRHTFRleHQiLCJhcnRpY2xlIiwiY3VycmVudENoZWNrIiwiY3VycmVudENoZWNraW5nRGF0YSIsImdyb3VwVGl0bGUiLCJncm91cFBocmFzZSIsImdyb3Vwc0RhdGEiLCJncm91cHNJbmRleCIsImlzQ29tbWVudENoYW5nZWQiLCJpc1ZlcnNlQ2hhbmdlZCIsIm1vZGUiLCJuZXdWZXJzZVRleHQiLCJwb3BvdmVyUHJvcHMiLCJwb3BvdmVyVmlzaWJpbGl0eSIsInNob3dIZWxwc01vZGFsIiwic2hvd0hlbHBzIiwibmV3VGFncyIsInZlcnNlVGV4dCIsIl91c2VTdGF0ZTEwIiwic3RhdGUiLCJfc2V0U3RhdGUiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiZ2V0Q3VycmVudFZhbHVlRm9yIiwia2V5IiwiZ2V0VGVtcFZhbHVlRm9yIiwiY3VycmVudFNlbGVjdGlvbnMiLCJ0ZW1wU2VsZWN0aW9ucyIsInRlbXBOb3RoaW5nVG9TZWxlY3QiLCJjdXJyZW50Tm90aGluZ1RvU2VsZWN0IiwiZ3JvdXBzRGF0YUxvYWRlZCIsInVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zIiwibmV3U2VsZWN0aW9ucyIsIm5vdGhpbmdUb1NlbGVjdCIsIm5vU2VsZWN0aW9ucyIsIm5ld01vZGUiLCJ1c2VFZmZlY3QiLCJoYXZlRGF0YSIsImdyb3Vwc0RhdGFJbml0aWFsaXplZCIsImZsYXR0ZW5lZEdyb3VwRGF0YSIsImdyb3VwRGF0YUhlbHBlcnMiLCJmbGF0dGVuR3JvdXBEYXRhIiwicGFyc2VUblRvSW5kZXgiLCJwYXJzZVR3VG9JbmRleCIsImNoZWNrIiwiZmluZENoZWNrIiwibW9kaWZpZWQiLCJ2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MiLCJpbnZhbGlkYXRlZCIsImNvbmNhdCIsIl9zYXZlQ2hlY2tpbmdEYXRhIiwidXBkYXRlQ29udGV4dCIsInNlbGVjdGlvbnMiLCJuZXdDaGVjayIsImdyb3Vwc0luZGV4XyIsInVuZGVmaW5lZCIsInJlZmVyZW5jZSIsInZlcnNlSGVscGVycyIsImdldFZlcnNlVGV4dEZyb21CaWJsZSIsImdldEFsaWduZWRHTFRleHQiLCJnZXRUaXRsZUZyb21JbmRleCIsImdyb3VwSWQiLCJvY2N1cnJlbmNlTm90ZSIsImdldFBocmFzZUZyb21UdyIsImdyb3VwRGF0YSIsImFydGljbGVzIiwiX2FydGljbGUiLCJhcnRpY2xlSWQiLCJncm91cHNJZHMiLCJfaSIsIl9ncm91cHNJZHMiLCJfZ3JvdXBJZCIsImdyb3VwIiwiY3VycmVudEFydGljbGVNYXJrZG93biIsImNvbnZlcnRNYXJrZG93bkxpbmtzIiwiZ2F0ZXdheUxhbmd1YWdlSWQiLCJjb21tZW50VGV4dCIsImJvb2tJZCIsImJvb2siLCJpZCIsImJvb2tOYW1lIiwiYm9va0RldGFpbHMiLCJ0YXJnZXRMYW5ndWFnZUZvbnQiLCJwcm9qZWN0Rm9udCIsImN1cnJlbnRDb250ZXh0SWQiLCJzZXRUb29sU2V0dGluZ3MiLCJOQU1FU1BBQ0UiLCJmaWVsZE5hbWUiLCJmaWVsZFZhbHVlIiwiX3Rvb2xzU2V0dGluZ3MiLCJjb21wb25lbnRTZXR0aW5ncyIsInNldFNldHRpbmdzIiwiX3NhdmVTZXR0aW5ncyIsIl9zZXR0aW5ncyIsIm5ld1NldHRpbmdzIiwiX3BhbmVTZXR0aW5ncyIsIl9wYW5lU2V0dGluZyIsIl9wYW5lS2V5U2V0dGluZ3MiLCJfaTIiLCJfa2V5cyIsImRvU2F2ZSIsInNldFRvb2xTZXR0aW5nc1NjcmlwdHVyZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGFuZ3VhZ2VJZCIsImJpYmxlSWQiLCJvd25lciIsImVyciIsImFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCIsIl9tYW5pZmVzdCIsImFwcFNldHRpbmdzIiwiX2FwcFNldHRpbmdzIiwib3BlbkFsZXJ0RGlhbG9nIiwiY2hlY2tJZlZlcnNlQ2hhbmdlZCIsIl9uZXdWZXJzZVRleHQiLCJ0YXJnZXQiLCJfaXNWZXJzZUNoYW5nZWQiLCJoYW5kbGVFZGl0VmVyc2UiLCJjYW5jZWxFZGl0VmVyc2UiLCJzYXZlRWRpdFZlcnNlIiwiX2N1cnJlbnRDb250ZXh0SWQkcmVmIiwiY2hhcHRlciIsInZlcnNlIiwidmVyc2VSZWYiLCJ2ZXJzZVNwYW4iLCJiZWZvcmUiLCJlZGl0VGFyZ2V0VmVyc2UiLCJoYW5kbGVHb1RvTmV4dCIsIm5leHRDaGVjayIsImZpbmROZXh0Q2hlY2siLCJjaGFuZ2VDdXJyZW50Q2hlY2tfIiwiaGFuZGxlR29Ub1ByZXZpb3VzIiwicHJldmlvdXNDaGVjayIsImZpbmRQcmV2aW91c0NoZWNrIiwiaGFuZGxlVGFnc0NoZWNrYm94IiwidGFnIiwiY3VycmVudFRhZ3MiLCJ0YWdJbmRleCIsImluZGV4T2YiLCJfbmV3VGFncyIsImNvcHkiLCJzcGxpY2UiLCJ2YWxpZGF0ZVNlbGVjdGlvbnMiLCJ2ZXJzZVRleHRfIiwic2VsZWN0aW9uc18iLCJzZWxlY3Rpb25zSGVscGVycyIsInZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zIiwidW5maWx0ZXJlZFZlcnNlVGV4dCIsInVzZU1lbW8iLCJ1bmZpbHRlcmVkVmVyc2VUZXh0XyIsIl90YXJnZXRCaWJsZSRjaGFwdGVyIiwidmVyc2VEYXRhIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJzZXRUZW1wQ2hlY2tpbmdJdGVtIiwibmV3Q2hlY2tpbmdEYXRhIiwiY2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZSIsInRvZ2dsZU5vdGhpbmdUb1NlbGVjdCIsInNlbGVjdCIsIm5ld0NvbnRleHQiLCJub0NoZWNrIiwibmV3Q29udGV4dElkIiwic2VsZWN0aW9uc1VuY2hhbmdlZCIsImlzRXF1YWwiLCJkaXJlY3Rpb24iLCJib29rbWFya0VuYWJsZWQiLCJpc1ZlcnNlRWRpdGVkIiwiaXNWZXJzZUludmFsaWRhdGVkIiwiX3NhdmVTZWxlY3Rpb24iLCJfY2xvbmVEYXRhRm9yU2F2aW5nIiwiY2xvbmVEYXRhRm9yU2F2aW5nIiwiY2hlY2tJbkdyb3Vwc0RhdGEiLCJfY3VycmVudENoZWNrIiwiX25ld0NoZWNraW5nRGF0YSIsImRlbGV0ZVRlbXBDaGVja2luZ0RhdGEiLCJ1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YSIsIl9ncm91cHNEYXRhIiwiXyIsImNsb25lRGVlcCIsImNhdGVnb3J5IiwibmV3Q2hlY2tEYXRhIiwiX2kzIiwiX09iamVjdCRrZXlzIiwibmV3Q2hlY2tpbmdWYWx1ZSIsIl9zYXZlRGF0YSIsIm5ld0RhdGEiLCJfY2xvbmVEYXRhRm9yU2F2aW5nMiIsIl9pNCIsIl9PYmplY3Qka2V5czIiLCJjaGFuZ2VkRGF0YSIsIl9pNSIsIl9PYmplY3Qka2V5czMiLCJfdGVtcENoZWNraW5nRGF0YSIsImNhbmNlbFNlbGVjdGlvbiIsImNsZWFyU2VsZWN0aW9uIiwidG9nZ2xlQm9va21hcmsiLCJyZW1pbmRlcnMiLCJjaGFuZ2VNb2RlIiwiY2hlY2tJZkNvbW1lbnRDaGFuZ2VkIiwibmV3Y29tbWVudCIsIm9sZGNvbW1lbnQiLCJjYW5jZWxDb21tZW50Iiwic2F2ZUNvbW1lbnQiLCJuZXdDb21tZW50IiwiY29tbWVudHMiLCJoYW5kbGVDb21tZW50IiwicHJldmVudERlZmF1bHQiLCJyZWFkeVRvRGlzcGxheUNoZWNrZXIiLCJnZXRMZXhpY29uRGF0YV8iLCJsZXhpY29uSWQiLCJlbnRyeUlkIiwibGV4aWNvbkRhdGEiLCJvbkNsb3NlUG9wb3ZlciIsInNob3dQb3BvdmVyIiwidGl0bGUiLCJib2R5VGV4dCIsInBvc2l0aW9uQ29vcmQiLCJ0b2dnbGVIZWxwc01vZGFsIiwiX3Nob3dIZWxwc01vZGFsIiwidG9nZ2xlSGVscHMiLCJfc2hvd0hlbHBzIiwic2F2ZUJpYmxlVG9LZXkiLCJrZXlHcm91cCIsIm9sZFZlcnNlVGV4dCIsIl9iaWJsZXMiLCJfdGFyZ2V0QmlibGUiLCJ0YXJnZXRCb29rIiwidGFyZ2V0Q2hhcHRlciIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJjdXJyZW50Q2hhcHRlckRhdGEiLCJjdXJyZW50VmVyc2VEYXRhIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwiQWxpZ25tZW50SGVscGVycyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzIiwidXBkYXRlU2V0dGluZ3MiLCJyZW1vdmVVc2ZtTWFya2VycyIsInZlcnNlRWRpdHMiLCJ2YWxpZGF0ZUFsbFNlbGVjdGlvbnNGb3JWZXJzZSIsIl9jdXJyZW50Q2hlY2skY29udGV4dCIsIl9jaGVjayRjb250ZXh0SWQiLCJjdXJyZW50Q2hlY2tJZCIsImNoZWNrSWQiLCJuZXdCaWJsZXMiLCJfdGFyZ2V0QmlibGUkbWFuaWZlc3QiLCJfdGFyZ2V0QmlibGUkbWFuaWZlc3QyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImJpYmxlIiwiTlRfT1JJR19MQU5HIiwiT1RfT1JJR19MQU5HIiwiaW5pdGlhbFBhbmVTZXR0aW5ncyIsImxhbmdLZXkiLCJwYW5lIiwibGFuZ3VhZ2VfbmFtZSIsImR1Ymxpbl9jb3JlIiwibGFuZ3VhZ2UiLCJfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSIsImxhbmciLCJnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIiwidGFyZ2V0X2xhbmd1YWdlIiwicHJvamVjdCIsImV4cGFuZGVkU2NyaXB0dXJlUGFuZVRpdGxlIiwic3R5bGVQcm9wcyIsIl9jaGVja2VyU3R5bGVzIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwiY2hhbmdlQ3VycmVudENvbnRleHRJZCIsImNvbXBsZXhTY3JpcHRGb250cyIsImN1cnJlbnRQYW5lU2V0dGluZ3MiLCJlZGl0VmVyc2VSZWYiLCJnZXRBdmFpbGFibGVTY3JpcHR1cmVQYW5lU2VsZWN0aW9ucyIsIm1ha2VTdXJlQmlibGVzTG9hZGVkRm9yVG9vbCIsInByb2plY3REZXRhaWxzUmVkdWNlciIsIm9uRXhwYW5kZWRTY3JpcHR1cmVQYW5lU2hvdyIsIm9uTGlua0NsaWNrIiwib25TZWVNb3JlQ2xpY2siLCJwaHJhc2UiLCJzZWVNb3JlTGFiZWwiLCJzaG93U2VlTW9yZUJ1dHRvbiIsImRpYWxvZ01vZGFsVmlzaWJpbGl0eSIsImhhbmRsZU9wZW5EaWFsb2ciLCJoYW5kbGVDbG9zZURpYWxvZyIsImhhbmRsZVNraXAiLCJsb2NhbE5vdGhpbmdUb1NlbGVjdCIsInNhdmVTZWxlY3Rpb24iLCJ0YWdzIiwibW9kYWxBcnRpY2xlIiwiZXhwYW5kZWRIZWxwc0J1dHRvbkhvdmVyVGV4dCIsIm1vZGFsVGl0bGUiLCJpc1Nob3dIZWxwc0V4cGFuZGVkIiwib3BlbkV4cGFuZGVkSGVscHNNb2RhbCIsInNpZGViYXJUb2dnbGUiLCJpc1Nob3dIZWxwc1NpZGViYXIiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYm9vbCIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvQ2hlY2tlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogQGZpbGUgQ2hlY2tlci5qc1xuICpcbiAqIEBzeW5vcHNpc1xuICogVGhpcyBpcyB0aGUgbWFpbiBjaGVja2luZyBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhbiBpbnRlZ3JhdGVkIGludGVyZmFjZSBmb3IgQmlibGUgdHJhbnNsYXRpb24gY2hlY2tpbmcuXG4gKiBJdCBzdXBwb3J0cyBib3RoIFRyYW5zbGF0aW9uIE5vdGVzIChUTikgYW5kIFRyYW5zbGF0aW9uIFdvcmRzIChUVykgY2hlY2tpbmcgd29ya2Zsb3dzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIENoZWNrZXIgY29tcG9uZW50IGlzIGEgY29tcHJlaGVuc2l2ZSB0b29sIGZvciBtYW5hZ2luZyBhbmQgcHJlc2VudGluZyBCaWJsZSBjaGVja2luZyBkYXRhIGFuZCB0cmFuc2xhdGlvbnMuXG4gKiBJdCBoYW5kbGVzOlxuICogLSBMb2FkaW5nIGFuZCBkaXNwbGF5aW5nIGNoZWNraW5nIGRhdGEgKHRyYW5zbGF0aW9uIG5vdGVzIG9yIHRyYW5zbGF0aW9uIHdvcmRzKVxuICogLSBNYW5hZ2luZyB1c2VyIHNlbGVjdGlvbnMgYW5kIGFubm90YXRpb25zIGluIHZlcnNlc1xuICogLSBQcm92aWRpbmcgbXVsdGktcGFuZSBTY3JpcHR1cmUgdmlld2luZyB3aXRoIHZhcmlvdXMgQmlibGUgcmVzb3VyY2VzXG4gKiAtIEhhbmRsaW5nIHZlcnNlIGVkaXRpbmcgYW5kIHZhbGlkYXRpb25cbiAqIC0gTWFuYWdpbmcgY29tbWVudHMsIGJvb2ttYXJrcywgYW5kIHRhZ3MgZm9yIGNoZWNrc1xuICogLSBOYXZpZ2F0aW5nIGJldHdlZW4gY2hlY2tzIChuZXh0L3ByZXZpb3VzKVxuICogLSBEaXNwbGF5aW5nIHRyYW5zbGF0aW9uIGhlbHBzIGluIGFuIGludGVncmF0ZWQgc2lkZWJhclxuICogLSBQZXJzaXN0aW5nIHVzZXIgc2V0dGluZ3MgYW5kIGNoZWNraW5nIHByb2dyZXNzXG4gKlxuICogVGhlIGNvbXBvbmVudCBtYWludGFpbnMgY29tcGxleCBzdGF0ZSBpbmNsdWRpbmc6XG4gKiAtIEN1cnJlbnQgY2hlY2sgZGF0YSBhbmQgY29udGV4dFxuICogLSBVc2VyIHNlbGVjdGlvbnMgYW5kIHRlbXBvcmFyeSBjaGFuZ2VzXG4gKiAtIFBhbmUgc2V0dGluZ3MgZm9yIFNjcmlwdHVyZSBkaXNwbGF5XG4gKiAtIFRvb2wtc3BlY2lmaWMgc2V0dGluZ3NcbiAqIC0gVUkgc3RhdGUgKG1vZGVzLCBtb2RhbHMsIHBvcG92ZXJzKVxuICpcbiAqIEByZXF1aXJlbWVudHNcbiAqIC0gUmVhY3QgMTguMy4xK1xuICogLSB3b3JkLWFsaWduZXItbGliIGZvciB2ZXJzZSBhbmQgYWxpZ25tZW50IGhlbHBlcnNcbiAqIC0gZGVlcC1lcXVhbCBmb3Igb2JqZWN0IGNvbXBhcmlzb25cbiAqIC0gbG9kYXNoIGZvciBkZWVwIGNsb25pbmdcbiAqIC0gTWF0ZXJpYWwtVUkgY29tcG9uZW50cyBmb3IgVUkgZWxlbWVudHNcbiAqXG4gKiBAZGVwZW5kZW5jaWVzXG4gKiAtIEdyb3VwTWVudUNvbXBvbmVudDogTmF2aWdhdGlvbiBtZW51IGZvciBjaGVja3NcbiAqIC0gQ2hlY2tJbmZvQ2FyZDogRGlzcGxheXMgY2hlY2sgdGl0bGUgYW5kIHBocmFzZVxuICogLSBTY3JpcHR1cmVQYW5lOiBNdWx0aS1wYW5lIFNjcmlwdHVyZSB2aWV3ZXJcbiAqIC0gVHJhbnNsYXRpb25IZWxwczogU2lkZWJhciBmb3IgdHJhbnNsYXRpb24gaGVscCBhcnRpY2xlc1xuICogLSBWZXJzZUNoZWNrOiBNYWluIGNoZWNraW5nIGludGVyZmFjZSBmb3IgdmVyc2VzXG4gKiAtIFBvcG92ZXJDb250YWluZXI6IERpc3BsYXlzIGNvbnRleHR1YWwgaW5mb3JtYXRpb25cbiAqL1xuaW1wb3J0IHsgcmVtb3ZlVXNmbU1hcmtlcnMgfSBmcm9tICcuLi91dGlscy91c2ZtSGVscGVycydcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MgfSBmcm9tICcuLi91dGlscy9zZWxlY3Rpb25IZWxwZXInXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgR3JvdXBNZW51Q29tcG9uZW50IGZyb20gJy4vR3JvdXBNZW51Q29tcG9uZW50J1xuaW1wb3J0IHtcbiAgZ3JvdXBEYXRhSGVscGVycyxcbiAgc2VsZWN0aW9uc0hlbHBlcnMsXG4gIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMsXG4gIHZlcnNlSGVscGVycyxcbiAgQWxpZ25tZW50SGVscGVycyxcbiAgXG59IGZyb20gJ3dvcmQtYWxpZ25lci1saWInXG5pbXBvcnQgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHtcbiAgZmluZENoZWNrLFxuICBmaW5kTmV4dENoZWNrLFxuICBmaW5kUHJldmlvdXNDaGVjayxcbiAgZ2V0QWxpZ25lZEdMVGV4dCxcbiAgZ2V0UGhyYXNlRnJvbVR3LFxuICBnZXRUaXRsZUZyb21JbmRleCxcbiAgXG4gIHBhcnNlVHdUb0luZGV4XG59IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNsYXRpb25IZWxwcy90d0FydGljbGVIZWxwZXJzJ1xuaW1wb3J0IENoZWNrSW5mb0NhcmQgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9DaGVja0luZm9DYXJkJ1xuaW1wb3J0IHsgcGFyc2VUblRvSW5kZXggfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zbGF0aW9uSGVscHMvdG5BcnRpY2xlSGVscGVycydcbmltcG9ydCBTY3JpcHR1cmVQYW5lIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvU2NyaXB0dXJlUGFuZSdcbmltcG9ydCBQb3BvdmVyQ29udGFpbmVyIGZyb20gJy4uL2NvbnRhaW5lcnMvUG9wb3ZlckNvbnRhaW5lcidcbmltcG9ydCB7IE5UX09SSUdfTEFORywgT1RfT1JJR19MQU5HIH0gZnJvbSAnLi4vY29tbW9uL0Jvb2tzT2ZUaGVCaWJsZSdcbmltcG9ydCBjb21wbGV4U2NyaXB0Rm9udHMgZnJvbSAnLi4vY29tbW9uL2NvbXBsZXhTY3JpcHRGb250cydcbmltcG9ydCBUcmFuc2xhdGlvbkhlbHBzIGZyb20gJy4uL3RjX3VpX3Rvb2xraXQvVHJhbnNsYXRpb25IZWxwcydcbmltcG9ydCAqIGFzIHRIZWxwc0hlbHBlcnMgZnJvbSAnLi4vaGVscGVycy90SGVscHNIZWxwZXJzJ1xuaW1wb3J0IFZlcnNlQ2hlY2sgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9WZXJzZUNoZWNrJ1xuaW1wb3J0IHsgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZSB9IGZyb20gJy4uL2hlbHBlcnMvY2hlY2tJbmZvQ2FyZEhlbHBlcnMnXG5cbmNvbnN0IGxvY2FsU3R5bGVzID0ge1xuICBjb250YWluZXJEaXY6e1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICB3aWR0aDogJzk3dncnLFxuICAgIGhlaWdodDogJzY1dncnLFxuICB9LFxuICBjZW50ZXJEaXY6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgd2lkdGg6ICc4NSUnLFxuICAgIG92ZXJmbG93WDogJ2F1dG8nLFxuICAgIG1hcmdpbkxlZnQ6ICcxMHB4JyxcbiAgfSxcbiAgc2NyaXB0dXJlUGFuZURpdjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4U2hyaW5rOiAnMCcsXG4gICAgaGVpZ2h0OiAnMjUwcHgnLFxuICAgIHBhZGRpbmdCb3R0b206ICcyMHB4JyxcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2xhdGlvbldvcmRzID0gJ3RyYW5zbGF0aW9uV29yZHMnXG5leHBvcnQgY29uc3QgdHJhbnNsYXRpb25Ob3RlcyA9ICd0cmFuc2xhdGlvbk5vdGVzJ1xuY29uc3QgbWF4aW11bVNlbGVjdGlvbnMgPSAxMFxuXG5jb25zb2xlLmxvZygnQ2hlY2tlci5qcyAtIHN0YXJ0dXAnKVxuY29uc3QgbmFtZSA9ICdDaGVja2VyJ1xuXG4vKipcbiAqIEBuYW1lc3BhY2UgQ2hlY2tlclxuICogVGhlIENoZWNrZXIgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhbmQgcHJlc2VudGluZyBCaWJsZSBjaGVja2luZyBkYXRhIGFuZCB0cmFuc2xhdGlvbnMuXG4gKiBJdCBoYW5kbGVzIHN0YXRlIHVwZGF0ZXMsIHNldHRpbmdzIG1hbmFnZW1lbnQsIGFuZCBlbnN1cmVzIHRoZSBuZWNlc3NhcnkgZGF0YSBpcyBsb2FkZWQgYW5kIGRpc3BsYXllZCB0byB0aGUgdXNlci5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycyAtIEFuIG9iamVjdCB3aXRoIGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBDaGVja2VyIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmFsaWduZWRHbEJpYmxlIC0gVGhlIGFsaWduZWQgR2F0ZXdheSBMYW5ndWFnZSBCaWJsZSBkYXRhIHVzZWQgZm9yIHRyYW5zbGF0aW9ucy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmJpYmxlcyAtIEJpYmxlIGRhdGEgZm9yIHZhcmlvdXMgbGFuZ3VhZ2VzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5jaGFuZ2VkQ3VycmVudENoZWNrIC0gY2FsbGJhY2sgdG8gbm90aWZ5IG9mIGNoYW5nZXMgaW4gY29udGV4dC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuY2hhbmdlVGFyZ2V0VmVyc2UgLSBBIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY3VycmVudCB2ZXJzZSBiZWluZyBjaGVja2VkLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuY2hlY2tpbmdEYXRhIC0gRGF0YSByZWxhdGVkIHRvIGNoZWNrcyAoZS5nLiwgdHJhbnNsYXRpb24gbm90ZXMgb3IgdHJhbnNsYXRpb24gd29yZHMpLlxuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtZXRlcnMuY2hlY2tUeXBlIC0gVGhlIHR5cGUgb2YgY2hlY2sgYmVpbmcgcGVyZm9ybWVkIChlLmcuLCB0cmFuc2xhdGlvbiBub3RlcywgdHJhbnNsYXRpb24gd29yZHMpLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuY29udGV4dElkIC0gT2JqZWN0IGNvbnRhaW5pbmcgbWV0YWRhdGEgYWJvdXQgdGhlIGN1cnJlbnQgZ3JvdXAvdmVyc2UgYmVpbmcgd29ya2VkIG9uLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5nZXRMZXhpY29uRGF0YSAtIEZ1bmN0aW9uIHRvIHJldHJpZXZlIGxleGljb24gZGF0YS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmdsV29yZHNEYXRhIC0gRGF0YSByZWxhdGVkIHRvIEdhdGV3YXkgTGFuZ3VhZ2Ugd29yZHMgYW5kIGFsaWdubWVudCBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLmluaXRpYWxTZXR0aW5ncyAtIFRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciB0aGUgQ2hlY2tlciBjb21wb25lbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnNhdmVDaGVja2luZ0RhdGEgLSBGdW5jdGlvbiB0byBzYXZlIHRoZSBtb2RpZmllZCBjaGVja2luZyBkYXRhLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5zYXZlU2V0dGluZ3MgLSBGdW5jdGlvbiB0byBwZXJzaXN0IHVzZXIncyBjb21wb25lbnQgc2V0dGluZ3MuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnNob3dEb2N1bWVudCAtIEZ1bmN0aW9uIHRvIGRpc3BsYXkgYSBkb2N1bWVudCBpbiB0aGUgaW50ZXJmYWNlLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuc3R5bGVzIC0gU3R5bGluZyBpbmZvcm1hdGlvbiB0byBjdXN0b21pemUgdGhlIGNvbXBvbmVudCdzIGFwcGVhcmFuY2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy50YXJnZXRCaWJsZSAtIFRoZSB0YXJnZXQgQmlibGUgZGF0YSBmb3IgdGhlIHdvcmtpbmcgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy50YXJnZXRMYW5ndWFnZURldGFpbHMgLSBNZXRhZGF0YSBhYm91dCB0aGUgdGFyZ2V0IGxhbmd1YWdlLCBpbmNsdWRpbmcgYm9vayBhbmQgbGFuZ3VhZ2Utc3BlY2lmaWMgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMudHJhbnNsYXRlIC0gQSBmdW5jdGlvbiB1c2VkIGZvciBzdHJpbmcgdHJhbnNsYXRpb25zIGluIHRoZSBVSS5cbiAqL1xuY29uc3QgQ2hlY2tlciA9ICh7XG4gIGFsaWduZWRHbEJpYmxlLFxuICBiaWJsZXM6IGJpYmxlc18sXG4gIGNoYW5nZWRDdXJyZW50Q2hlY2ssXG4gIGNoYW5nZVRhcmdldFZlcnNlLFxuICBjaGVja2luZ0RhdGEsXG4gIGNoZWNrVHlwZSxcbiAgY29udGV4dElkLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ2xXb3Jkc0RhdGEsXG4gIGluaXRpYWxTZXR0aW5ncyxcbiAgc2F2ZUNoZWNraW5nRGF0YSxcbiAgc2F2ZVNldHRpbmdzLFxuICBzaG93RG9jdW1lbnQsXG4gIHN0eWxlcyxcbiAgdGFyZ2V0QmlibGU6IHRhcmdldEJpYmxlXyxcbiAgdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzLFxuICB0cmFuc2xhdGUsXG59KSA9PiB7XG4gIC8vIE1haW4gc2V0dGluZ3Mgc3RhdGUgLSBpbmNsdWRlcyBwYW5lIGNvbmZpZ3VyYXRpb24sIHRvb2wgc2V0dGluZ3MsIGFuZCBtYW5pZmVzdCBkYXRhXG4gIGNvbnN0IFtzZXR0aW5ncywgX3NldFNldHRpbmdzXSA9IHVzZVN0YXRlKHtcbiAgICBwYW5lU2V0dGluZ3M6IFtdLFxuICAgIHBhbmVLZXlTZXR0aW5nczoge30sXG4gICAgdG9vbHNTZXR0aW5nczoge30sXG4gICAgbWFuaWZlc3Q6IHt9XG4gIH0pXG4gIGNvbnN0IHtcbiAgICBwYW5lU2V0dGluZ3MsXG4gICAgcGFuZUtleVNldHRpbmdzLFxuICAgIHRvb2xzU2V0dGluZ3MsXG4gICAgbWFuaWZlc3RcbiAgfSA9IHNldHRpbmdzXG5cbiAgLy8gQmlibGUgZGF0YSBvcmdhbml6ZWQgYnkgbGFuZ3VhZ2UgYW5kIElEXG4gIGNvbnN0IFtiaWJsZXMsIHNldEJpYmxlc10gPSB1c2VTdGF0ZSh7IH0pXG5cbiAgLy8gQ3VycmVudCB0YXJnZXQgQmlibGUgYmVpbmcgY2hlY2tlZFxuICBjb25zdCBbdGFyZ2V0QmlibGUsIHNldFRhcmdldEJpYmxlXSA9IHVzZVN0YXRlKHRhcmdldEJpYmxlXylcblxuICAvLyBUZW1wb3JhcnkgY2hlY2tpbmcgZGF0YSBmb3IgdW5zYXZlZCBjaGFuZ2VzXG4gIGNvbnN0IFt0ZW1wQ2hlY2tpbmdEYXRhLCBzZXRUZW1wQ2hlY2tpbmdEYXRhXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgLy8gTG9jYWwgY2hlY2tpbmcgZGF0YSBmb3IgY3VycmVudCBzZXNzaW9uXG4gIGNvbnN0IFtsb2NhbENoZWNraW5nRGF0YSwgc2V0TG9jYWxDaGVja2luZ0RhdGFdID0gdXNlU3RhdGUobnVsbClcblxuICAvLyBNYWluIGNvbXBvbmVudCBzdGF0ZVxuICBjb25zdCBbc3RhdGUsIF9zZXRTdGF0ZV0gPSB1c2VTdGF0ZSh7XG4gICAgYWxpZ25lZEdMVGV4dDogJycsIC8vIEdhdGV3YXkgTGFuZ3VhZ2UgdGV4dCBhbGlnbmVkIHRvIG9yaWdpbmFsXG4gICAgYXJ0aWNsZTogbnVsbCwgLy8gQ3VycmVudCB0cmFuc2xhdGlvbiBoZWxwIGFydGljbGVcbiAgICBjdXJyZW50Q2hlY2s6IG51bGwsIC8vIEN1cnJlbnQgY2hlY2sgYmVpbmcgd29ya2VkIG9uXG4gICAgY3VycmVudENoZWNraW5nRGF0YTogbnVsbCwgLy8gQWxsIGNoZWNraW5nIGRhdGEgZm9yIGN1cnJlbnQgYm9va1xuICAgIGdyb3VwVGl0bGU6ICcnLCAvLyBUaXRsZSBvZiBjdXJyZW50IGNoZWNrIGdyb3VwXG4gICAgZ3JvdXBQaHJhc2U6ICcnLCAvLyBQaHJhc2Ugb3Igb2NjdXJyZW5jZSBub3RlIGZvciBjdXJyZW50IGNoZWNrXG4gICAgZ3JvdXBzRGF0YTogbnVsbCwgLy8gRmxhdHRlbmVkIGdyb3VwIGRhdGEgZm9yIGFsbCBjaGVja3NcbiAgICBncm91cHNJbmRleDogbnVsbCwgLy8gSW5kZXggb2YgYWxsIGNoZWNrIGdyb3Vwc1xuICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLCAvLyBXaGV0aGVyIGNvbW1lbnQgaGFzIHVuc2F2ZWQgY2hhbmdlc1xuICAgIGlzVmVyc2VDaGFuZ2VkOiBmYWxzZSwgLy8gV2hldGhlciB2ZXJzZSBoYXMgdW5zYXZlZCBjaGFuZ2VzXG4gICAgbW9kZTogJ2RlZmF1bHQnLCAvLyBDdXJyZW50IFVJIG1vZGUgKGRlZmF1bHQsIHNlbGVjdCwgZWRpdCwgY29tbWVudClcbiAgICBuZXdWZXJzZVRleHQ6IG51bGwsIC8vIE5ldyB2ZXJzZSB0ZXh0IGR1cmluZyBlZGl0aW5nXG4gICAgcG9wb3ZlclByb3BzOiB7XG4gICAgICBwb3BvdmVyVmlzaWJpbGl0eTogZmFsc2VcbiAgICB9LFxuICAgIHNob3dIZWxwc01vZGFsOiBmYWxzZSwgLy8gV2hldGhlciBoZWxwcyBtb2RhbCBpcyBzaG93blxuICAgIHNob3dIZWxwczogdHJ1ZSwgLy8gV2hldGhlciBoZWxwcyBzaWRlYmFyIGlzIHNob3duXG4gICAgbmV3VGFnczogbnVsbCwgLy8gTmV3IHRhZ3MgYmVpbmcgYWRkZWRcbiAgICB2ZXJzZVRleHQ6ICcnLCAvLyBDdXJyZW50IHZlcnNlIHRleHRcbiAgfSlcblxuICBjb25zdCB7XG4gICAgYWxpZ25lZEdMVGV4dCxcbiAgICBhcnRpY2xlLFxuICAgIGN1cnJlbnRDaGVjayxcbiAgICBjdXJyZW50Q2hlY2tpbmdEYXRhLFxuICAgIGdyb3VwVGl0bGUsXG4gICAgZ3JvdXBQaHJhc2UsXG4gICAgZ3JvdXBzRGF0YSxcbiAgICBncm91cHNJbmRleCxcbiAgICBpc0NvbW1lbnRDaGFuZ2VkLFxuICAgIGlzVmVyc2VDaGFuZ2VkLFxuICAgIG1vZGUsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHBvcG92ZXJQcm9wcyxcbiAgICBzaG93SGVscHNNb2RhbCxcbiAgICBzaG93SGVscHMsXG4gICAgbmV3VGFncyxcbiAgICB2ZXJzZVRleHQsXG4gIH0gPSBzdGF0ZVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBzdGF0ZSBvYmplY3Qgd2l0aCBuZXcgdmFsdWVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZSAtIE9iamVjdCBjb250YWluaW5nIHN0YXRlIHByb3BlcnRpZXMgdG8gdXBkYXRlXG4gICAqL1xuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIF9zZXRTdGF0ZShwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHNhdmVkIHZhbHVlIGZvciBhIGNoZWNrIHByb3BlcnR5XG4gICAqIEZhbGxzIGJhY2sgdG8gbG9jYWwgY2hlY2tpbmcgZGF0YSBpZiBhdmFpbGFibGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHJldHVybnMgeyp9IEN1cnJlbnQgdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIGdldEN1cnJlbnRWYWx1ZUZvcihrZXkpIHtcbiAgICBpZiAobG9jYWxDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiBsb2NhbENoZWNraW5nRGF0YVtrZXldXG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50Q2hlY2s/LltrZXldXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdGVtcG9yYXJ5ICh1bnNhdmVkKSB2YWx1ZSBmb3IgYSBjaGVjayBwcm9wZXJ0eVxuICAgKiBGYWxscyBiYWNrIHRocm91Z2ggbG9jYWwgY2hlY2tpbmcgZGF0YSB0byBjdXJyZW50IGNoZWNrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEByZXR1cm5zIHsqfSBUZW1wb3JhcnkgdmFsdWVcbiAgICovXG4gIGZ1bmN0aW9uIGdldFRlbXBWYWx1ZUZvcihrZXkpIHtcbiAgICBpZiAodGVtcENoZWNraW5nRGF0YT8uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgcmV0dXJuIHRlbXBDaGVja2luZ0RhdGFba2V5XVxuICAgIH1cbiAgICByZXR1cm4gZ2V0Q3VycmVudFZhbHVlRm9yKGtleSlcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb25zID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdzZWxlY3Rpb25zJykgfHwgW11cbiAgY29uc3QgdGVtcFNlbGVjdGlvbnMgPSBnZXRUZW1wVmFsdWVGb3IoJ3NlbGVjdGlvbnMnKSB8fCBbXVxuICBjb25zdCB0ZW1wTm90aGluZ1RvU2VsZWN0ID0gZ2V0VGVtcFZhbHVlRm9yKCdub3RoaW5nVG9TZWxlY3QnKVxuICBjb25zdCBjdXJyZW50Tm90aGluZ1RvU2VsZWN0ID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdub3RoaW5nVG9TZWxlY3QnKVxuICBjb25zdCBncm91cHNEYXRhTG9hZGVkID0gISFncm91cHNEYXRhXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIFVJIG1vZGUgYmFzZWQgb24gc2VsZWN0aW9ucyBzdGF0ZVxuICAgKiBTd2l0Y2hlcyB0byAnc2VsZWN0JyBtb2RlIGlmIG5vIHNlbGVjdGlvbnMgYW5kIG5vdGhpbmcgaXMgbWFya2VkIGFzIHVuc2VsZWN0YWJsZVxuICAgKiBAcGFyYW0ge0FycmF5fSBuZXdTZWxlY3Rpb25zIC0gQ3VycmVudCBzZWxlY3Rpb25zIGFycmF5XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm90aGluZ1RvU2VsZWN0IC0gV2hldGhlciB2ZXJzZSBpcyBtYXJrZWQgYXMgaGF2aW5nIG5vdGhpbmcgdG8gc2VsZWN0XG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVNb2RlRm9yU2VsZWN0aW9ucyhuZXdTZWxlY3Rpb25zLCBub3RoaW5nVG9TZWxlY3QpIHtcbiAgICBjb25zdCBub1NlbGVjdGlvbnMgPSAoIW5ld1NlbGVjdGlvbnM/Lmxlbmd0aClcbiAgICBjb25zdCBuZXdNb2RlID0gbm9TZWxlY3Rpb25zICYmICFub3RoaW5nVG9TZWxlY3QgPyAnc2VsZWN0JyA6ICdkZWZhdWx0J1xuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6IG5ld01vZGVcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCBob29rIHRvIGluaXRpYWxpemUgY2hlY2tpbmcgZGF0YSB3aGVuIGNoZWNraW5nRGF0YSBvciBnbFdvcmRzRGF0YSBjaGFuZ2VzXG4gICAqIEZsYXR0ZW5zIGdyb3VwIGRhdGEsIGNyZWF0ZXMgaW5kZXgsIGZpbmRzIGluaXRpYWwgY2hlY2ssIGFuZCB2YWxpZGF0ZXMgYWxsIGNoZWNrc1xuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYXZlRGF0YSA9IGNoZWNraW5nRGF0YSAmJiBPYmplY3Qua2V5cyhjaGVja2luZ0RhdGEpLmxlbmd0aCAmJiBnbFdvcmRzRGF0YSAmJiBPYmplY3Qua2V5cyhnbFdvcmRzRGF0YSkubGVuZ3RoXG4gICAgY29uc3QgZ3JvdXBzRGF0YUluaXRpYWxpemVkID0gZ3JvdXBzRGF0YSAmJiBPYmplY3Qua2V5cyhncm91cHNEYXRhKS5sZW5ndGhcbiAgICBpZiAoaGF2ZURhdGEgJiYgIWdyb3Vwc0RhdGFJbml0aWFsaXplZCkge1xuICAgICAgbGV0IGZsYXR0ZW5lZEdyb3VwRGF0YSA9IG51bGxcbiAgICAgIGxldCBncm91cHNJbmRleCA9IG51bGxcbiAgICAgIGlmIChjaGVja2luZ0RhdGEpIHtcbiAgICAgICAgZmxhdHRlbmVkR3JvdXBEYXRhID0gZ3JvdXBEYXRhSGVscGVycy5mbGF0dGVuR3JvdXBEYXRhKGNoZWNraW5nRGF0YSlcbiAgICAgIH1cblxuICAgICAgaWYgKGdsV29yZHNEYXRhKSB7XG4gICAgICAgIGlmIChjaGVja1R5cGUgPT09IHRyYW5zbGF0aW9uTm90ZXMpIHtcbiAgICAgICAgICBncm91cHNJbmRleCA9IHBhcnNlVG5Ub0luZGV4KGdsV29yZHNEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3Vwc0luZGV4ID0gcGFyc2VUd1RvSW5kZXgoZ2xXb3Jkc0RhdGEpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hlY2sgPSBmaW5kQ2hlY2soZmxhdHRlbmVkR3JvdXBEYXRhLCBjb250ZXh0SWQsIHRydWUpXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgZ3JvdXBzRGF0YTogZmxhdHRlbmVkR3JvdXBEYXRhLFxuICAgICAgICBncm91cHNJbmRleCxcbiAgICAgICAgY3VycmVudENoZWNraW5nRGF0YTogY2hlY2tpbmdEYXRhLFxuICAgICAgICBjdXJyZW50Q2hlY2s6IGNoZWNrLFxuICAgICAgICBtb2RpZmllZDogZmFsc2UsXG4gICAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgICAgfVxuICAgICAgY29uc29sZS5sb2coJ2RlYnVnJyx0YXJnZXRCaWJsZSxmbGF0dGVuZWRHcm91cERhdGEpXG4gICAgICAvLyB2YWxpZGF0ZSBhbGwgY2hlY2tzXG4gICAgICB2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3ModGFyZ2V0QmlibGUsIGZsYXR0ZW5lZEdyb3VwRGF0YSwgKGNoZWNrLCBpbnZhbGlkYXRlZCkgPT4ge1xuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zYXZlRWRpdFZlcnNlIC0gY2hlY2sgdmFsaWRhdGlvbiBjaGFuZ2VkYCwgY2hlY2spXG4gICAgICAgICAgX3NhdmVDaGVja2luZ0RhdGEoY2hlY2ssIHsgaW52YWxpZGF0ZWQgfSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG5cbiAgICAgIGlmIChmbGF0dGVuZWRHcm91cERhdGEgJiYgY2hlY2s/LmNvbnRleHRJZCkge1xuICAgICAgICB1cGRhdGVDb250ZXh0KGNoZWNrLCBncm91cHNJbmRleClcbiAgICAgICAgdXBkYXRlTW9kZUZvclNlbGVjdGlvbnMoY2hlY2s/LnNlbGVjdGlvbnMsIGNoZWNrPy5ub3RoaW5nVG9TZWxlY3QpXG4gICAgICB9XG4gICAgfVxuICB9LCBbY29udGV4dElkLCBjaGVja2luZ0RhdGEsIGdsV29yZHNEYXRhXSk7XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbnRleHQgYW5kIHJlbGF0ZWQgZGF0YSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY2hlY2sgYW5kIGdyb3VwIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gbmV3Q2hlY2sgLSBUaGUgbmV3IGNoZWNrIG9iamVjdCBjb250YWluaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbZ3JvdXBzSW5kZXhfPWdyb3Vwc0luZGV4XSAtIEFuIG9wdGlvbmFsIGdyb3VwIGluZGV4IG9iamVjdCwgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbCB2YXJpYWJsZSBgZ3JvdXBzSW5kZXhgLlxuICAgKiBAcmV0dXJuIHt2b2lkfSBEb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4gVXBkYXRlcyB0aGUgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIHdpdGggbmV3IGNvbnRleHQgZGF0YS5cbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZUNvbnRleHQobmV3Q2hlY2ssIGdyb3Vwc0luZGV4XyA9IGdyb3Vwc0luZGV4KSB7XG4gICAgY29uc3QgY29udGV4dElkID0gbmV3Q2hlY2s/LmNvbnRleHRJZFxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IGNvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgdmVyc2VUZXh0ID0gdmVyc2VIZWxwZXJzLmdldFZlcnNlVGV4dEZyb21CaWJsZSh0YXJnZXRCaWJsZSwgcmVmZXJlbmNlKVxuICAgIGNvbnN0IGFsaWduZWRHTFRleHQgPSBnZXRBbGlnbmVkR0xUZXh0KGFsaWduZWRHbEJpYmxlLCBjb250ZXh0SWQpO1xuICAgIGNvbnNvbGUubG9nKGFsaWduZWRHTFRleHQpXG4gICAgY29uc3QgZ3JvdXBUaXRsZSA9IGdldFRpdGxlRnJvbUluZGV4KGdyb3Vwc0luZGV4XywgY29udGV4dElkPy5ncm91cElkKVxuICAgIGNvbnN0IGdyb3VwUGhyYXNlID1cbiAgICAgIGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlc1xuICAgICAgICA/IGNvbnRleHRJZD8ub2NjdXJyZW5jZU5vdGVcbiAgICAgICAgOiBnZXRQaHJhc2VGcm9tVHcoZ2xXb3Jkc0RhdGEsIGNvbnRleHRJZD8uZ3JvdXBJZClcblxuICAgIGxldCBncm91cERhdGFcbiAgICBpZiAoZ2xXb3Jkc0RhdGEpIHtcbiAgICAgIGlmIChjaGVja1R5cGUgPT09IHRyYW5zbGF0aW9uTm90ZXMpIHtcbiAgICAgICAgZ3JvdXBEYXRhID0ge1xuICAgICAgICAgIHRyYW5zbGF0ZToge1xuICAgICAgICAgICAgYXJ0aWNsZXM6IGdsV29yZHNEYXRhPy50cmFuc2xhdGVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwRGF0YSA9IHtcbiAgICAgICAgICAuLi5nbFdvcmRzRGF0YSxcbiAgICAgICAgICBtYW5pZmVzdDoge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBfYXJ0aWNsZVxuICAgIGNvbnN0IGFydGljbGVJZCA9IGNvbnRleHRJZD8uZ3JvdXBJZFxuICAgIGNvbnN0IGdyb3Vwc0lkcyA9IE9iamVjdC5rZXlzKGdyb3VwRGF0YSlcbiAgICBmb3IgKGNvbnN0IF9ncm91cElkIG9mIGdyb3Vwc0lkcykge1xuICAgICAgY29uc3QgZ3JvdXAgPSBncm91cERhdGFbX2dyb3VwSWRdXG4gICAgICBjb25zdCBhcnRpY2xlcyA9IGdyb3VwPy5hcnRpY2xlcyB8fCB7fVxuICAgICAgX2FydGljbGUgPSBhcnRpY2xlcz8uW2FydGljbGVJZF0gfHwgbnVsbFxuICAgICAgaWYgKF9hcnRpY2xlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcnRpY2xlTWFya2Rvd24gPSB0SGVscHNIZWxwZXJzLmNvbnZlcnRNYXJrZG93bkxpbmtzKF9hcnRpY2xlLCBnYXRld2F5TGFuZ3VhZ2VJZCk7XG4gICAgICAgIF9hcnRpY2xlID0gY3VycmVudEFydGljbGVNYXJrZG93blxuICAgICAgICAvLyBjb25zdCB0SGVscHNNb2RhbE1hcmtkb3duID0gdEhlbHBzSGVscGVycy5jb252ZXJ0TWFya2Rvd25MaW5rcyhtb2RhbEFydGljbGUsIGdhdGV3YXlMYW5ndWFnZUNvZGUsIGFydGljbGVDYXRlZ29yeSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0U3RhdGUoe1xuICAgICAgYWxpZ25lZEdMVGV4dCxcbiAgICAgIGN1cnJlbnRDaGVjazogbmV3Q2hlY2ssXG4gICAgICB2ZXJzZVRleHQsXG4gICAgICBncm91cFRpdGxlLFxuICAgICAgZ3JvdXBQaHJhc2UsXG4gICAgICBhcnRpY2xlOiBfYXJ0aWNsZVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb21tZW50VGV4dCA9IGdldEN1cnJlbnRWYWx1ZUZvcignY29tbWVudHMnKSB8fCAnJ1xuICBjb25zdCBib29rSWQgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmJvb2s/LmlkXG4gIGNvbnN0IGJvb2tOYW1lID0gdGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzPy5ib29rPy5uYW1lXG4gIGNvbnN0IGJvb2tEZXRhaWxzID0ge1xuICAgIGlkOiBib29rSWQsXG4gICAgbmFtZTogYm9va05hbWVcbiAgfTtcbiAgY29uc3QgZ2F0ZXdheUxhbmd1YWdlSWQgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmdhdGV3YXlMYW5ndWFnZUlkXG4gIGNvbnN0IHRhcmdldExhbmd1YWdlRm9udCA9IG1hbmlmZXN0Py5wcm9qZWN0Rm9udCB8fCAnJ1xuICBjb25zdCBjdXJyZW50Q29udGV4dElkID0gY3VycmVudENoZWNrPy5jb250ZXh0SWRcblxuICAvKipcbiAgICogVXBkYXRlcyB0b29sLXNwZWNpZmljIHNldHRpbmdzIGFuZCBwZXJzaXN0cyB0aGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZSAoZS5nLiwgJ1NjcmlwdHVyZVBhbmUnKVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmllbGRWYWx1ZSAtIFNldHRpbmcgdmFsdWVcbiAgICovXG4gIGNvbnN0IHNldFRvb2xTZXR0aW5ncyA9IChOQU1FU1BBQ0UsIGZpZWxkTmFtZSwgZmllbGRWYWx1ZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNldFRvb2xTZXR0aW5ncyAke2ZpZWxkTmFtZX09JHtmaWVsZFZhbHVlfWApXG4gICAgaWYgKHRvb2xzU2V0dGluZ3MpIHtcbiAgICAgIC8vIERlZXAgY2xvbmluZyBvYmplY3QgdG8gYXZvaWQgbW9kaWZ5aW5nIG9yaWdpbmFsIG9iamVjdFxuICAgICAgY29uc3QgX3Rvb2xzU2V0dGluZ3MgPSB7IC4uLnRvb2xzU2V0dGluZ3MgfTtcbiAgICAgIGxldCBjb21wb25lbnRTZXR0aW5ncyA9IF90b29sc1NldHRpbmdzPy5bTkFNRVNQQUNFXVxuICAgICAgaWYgKCFjb21wb25lbnRTZXR0aW5ncykge1xuICAgICAgICBjb21wb25lbnRTZXR0aW5ncyA9IHsgfVxuICAgICAgICBfdG9vbHNTZXR0aW5nc1tOQU1FU1BBQ0VdID0gY29tcG9uZW50U2V0dGluZ3NcbiAgICAgIH1cbiAgICAgIGNvbXBvbmVudFNldHRpbmdzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlXG4gICAgICBzZXRTZXR0aW5ncyh7IHRvb2xzU2V0dGluZ3M6IF90b29sc1NldHRpbmdzIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIHNldHRpbmdzIHRvIHN0b3JhZ2UgYWZ0ZXIgcmVtb3ZpbmcgQmlibGUgZGF0YSB0byByZWR1Y2Ugc2l6ZVxuICAgKiBDcmVhdGVzIHNoYWxsb3cgY29waWVzIHRvIGF2b2lkIG1vZGlmeWluZyBvcmlnaW5hbCBvYmplY3RzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfc2V0dGluZ3MgLSBTZXR0aW5ncyBvYmplY3QgdG8gc2F2ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gX3NhdmVTZXR0aW5ncyhfc2V0dGluZ3MpIHtcbiAgICBpZiAoc2F2ZVNldHRpbmdzICYmIF9zZXR0aW5ncykge1xuICAgICAgY29uc3QgbmV3U2V0dGluZ3MgPSB7IC4uLl9zZXR0aW5ncyB9XG4gICAgICBkZWxldGUgbmV3U2V0dGluZ3MubWFuaWZlc3RcbiAgICAgIGNvbnN0IF9wYW5lU2V0dGluZ3MgPSBbIC4uLm5ld1NldHRpbmdzLnBhbmVTZXR0aW5ncyBdXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IF9wYW5lU2V0dGluZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgX3BhbmVTZXR0aW5nID0gey4uLl9wYW5lU2V0dGluZ3NbaV19IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5nc1tpXSA9IF9wYW5lU2V0dGluZ1xuICAgICAgfVxuICAgICAgbmV3U2V0dGluZ3MucGFuZVNldHRpbmdzID0gX3BhbmVTZXR0aW5nc1xuXG4gICAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0geyAuLi5uZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgfVxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKF9wYW5lS2V5U2V0dGluZ3MpXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGNvbnN0IF9wYW5lU2V0dGluZyA9IHsuLi5fcGFuZUtleVNldHRpbmdzW2tleV19IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVLZXlTZXR0aW5nc1trZXldID0gX3BhbmVTZXR0aW5nXG4gICAgICB9XG4gICAgICBuZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgPSBfcGFuZUtleVNldHRpbmdzXG5cbiAgICAgIHNhdmVTZXR0aW5ncyhuZXdTZXR0aW5ncylcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZXR0aW5ncyBzdGF0ZSBhbmQgb3B0aW9uYWxseSBwZXJzaXN0cyB0aGVtXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTZXR0aW5ncyAtIE5ldyBzZXR0aW5ncyB0byBtZXJnZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvU2F2ZSAtIFdoZXRoZXIgdG8gcGVyc2lzdCBzZXR0aW5nc1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0U2V0dGluZ3MobmV3U2V0dGluZ3MsIGRvU2F2ZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgX3NldHRpbmdzID0ge1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAuLi5uZXdTZXR0aW5nc1xuICAgIH1cblxuICAgIF9zZXRTZXR0aW5ncyhfc2V0dGluZ3MpXG4gICAgZG9TYXZlICYmIF9zYXZlU2V0dGluZ3MoX3NldHRpbmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgU2NyaXB0dXJlIHBhbmUgc2V0dGluZ3Mgd2l0aCBuZXcgcGFuZSBjb25maWd1cmF0aW9uc1xuICAgKiBNYWludGFpbnMgYSBrZXktYmFzZWQgbG9va3VwIGZvciBwYW5lIHNldHRpbmdzIGJ5IGxhbmd1YWdlL2JpYmxlL293bmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7QXJyYXl9IF9wYW5lU2V0dGluZ3MgLSBBcnJheSBvZiBwYW5lIHNldHRpbmcgb2JqZWN0c1xuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBfcGFuZVNldHRpbmdzKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlICR7ZmllbGROYW1lfWAsIF9wYW5lU2V0dGluZ3MpXG4gICAgY29uc3QgX3BhbmVLZXlTZXR0aW5ncyA9IHsuLi5wYW5lS2V5U2V0dGluZ3N9XG5cbiAgICBmb3IgKGNvbnN0IHBhbmVTZXR0aW5ncyBvZiBfcGFuZVNldHRpbmdzKSB7XG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gcGFuZVNldHRpbmdzPy5sYW5ndWFnZUlkXG4gICAgICBjb25zdCBrZXkgPSBgJHtsYW5ndWFnZUlkfS8ke3BhbmVTZXR0aW5ncz8uYmlibGVJZH0vJHtwYW5lU2V0dGluZ3M/Lm93bmVyfWBcbiAgICAgIF9wYW5lS2V5U2V0dGluZ3Nba2V5XSA9IHBhbmVTZXR0aW5nc1xuICAgIH1cblxuICAgIGNvbnN0IF9zZXR0aW5ncyA9IHtcbiAgICAgIHBhbmVTZXR0aW5nczogX3BhbmVTZXR0aW5ncyxcbiAgICAgIHBhbmVLZXlTZXR0aW5nczogX3BhbmVLZXlTZXR0aW5ncyxcbiAgICB9XG5cbiAgICBzZXRTZXR0aW5ncyhfc2V0dGluZ3MsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHByb3BlcnR5IHRvIHRoZSBtYW5pZmVzdCBhbmQgYXBwIHNldHRpbmdzXG4gICAqIFVzZWQgZm9yIHBlcnNpc3RpbmcgdXNlciBwcmVmZXJlbmNlcyBsaWtlIGZvbnRzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmllbGRWYWx1ZSAtIFByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBjb25zdCBhZGRPYmplY3RQcm9wZXJ0eVRvTWFuaWZlc3QgPSAoZmllbGROYW1lLCBmaWVsZFZhbHVlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tYWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0ICR7ZmllbGROYW1lfT0ke2ZpZWxkVmFsdWV9YClcbiAgICBpZiAobWFuaWZlc3QpIHtcbiAgICAgIGNvbnN0IF9tYW5pZmVzdCA9IHtcbiAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFZhbHVlXG4gICAgICB9XG5cbiAgICAgIC8vIGFsc28gc2F2ZSB0aGlzIGluIGFwcFNldHRpbmdzXG4gICAgICBjb25zdCBhcHBTZXR0aW5ncyA9IHNldHRpbmdzLmFwcFNldHRpbmdzIHx8IHt9XG4gICAgICBjb25zdCBfYXBwU2V0dGluZ3MgPSB7XG4gICAgICAgIC4uLmFwcFNldHRpbmdzLFxuICAgICAgICBbZmllbGROYW1lXTogZmllbGRWYWx1ZVxuICAgICAgfVxuXG4gICAgICBzZXRTZXR0aW5ncyh7XG4gICAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICAgIGFwcFNldHRpbmdzOiBfYXBwU2V0dGluZ3NcbiAgICAgIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLy8gRXZlbnQgaGFuZGxlcnMgZm9yIHZhcmlvdXMgdXNlciBhY3Rpb25zXG5cbiAgLyoqXG4gICAqIE9wZW5zIGFuIGFsZXJ0IGRpYWxvZyAocGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24pXG4gICAqL1xuICBjb25zdCBvcGVuQWxlcnREaWFsb2cgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tb3BlbkFsZXJ0RGlhbG9nYCkgLy8gVE9ETyAtIGZsZXNoIG91dFxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB2ZXJzZSBjb250ZW50IGhhcyBjaGFuZ2VkIGZyb20gb3JpZ2luYWxcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50XG4gICAqL1xuICBjb25zdCBjaGVja0lmVmVyc2VDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGVja0lmVmVyc2VDaGFuZ2VkYClcbiAgICBjb25zdCBfbmV3VmVyc2VUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBjb25zdCBfaXNWZXJzZUNoYW5nZWQgPSBfbmV3VmVyc2VUZXh0ICE9PSB2ZXJzZVRleHRcbiAgICBzZXRTdGF0ZSh7IGlzVmVyc2VDaGFuZ2VkOiBfaXNWZXJzZUNoYW5nZWQgfSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB2ZXJzZSB0ZXh0IGVkaXRpbmdcbiAgICogQHBhcmFtIHtFdmVudH0gZSAtIElucHV0IGV2ZW50IHdpdGggbmV3IHZlcnNlIHRleHRcbiAgICovXG4gIGNvbnN0IGhhbmRsZUVkaXRWZXJzZSA9IChlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlRWRpdFZlcnNlYClcbiAgICBjb25zdCBfbmV3VmVyc2VUZXh0ID0gZS50YXJnZXQudmFsdWVcbiAgICBzZXRTdGF0ZSh7IG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWxzIHZlcnNlIGVkaXRpbmcgYW5kIHJlc2V0cyBzdGF0ZVxuICAgKi9cbiAgY29uc3QgY2FuY2VsRWRpdFZlcnNlID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNhbmNlbEVkaXRWZXJzZWApXG4gICAgc2V0U3RhdGUoeyBuZXdWZXJzZVRleHQ6IG51bGwsIG5ld1RhZ3M6IFtdLCBtb2RlOiBcImRlZmF1bHRcIiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBlZGl0ZWQgdmVyc2UgdGV4dCBhbmQgdXBkYXRlcyBhbGlnbm1lbnRzXG4gICAqIE1hcmtzIGNoZWNrIGFzIGhhdmluZyB2ZXJzZSBlZGl0c1xuICAgKi9cbiAgY29uc3Qgc2F2ZUVkaXRWZXJzZSA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zYXZlRWRpdFZlcnNlYClcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBjdXJyZW50Q29udGV4dElkLnJlZmVyZW5jZTtcbiAgICBjb25zdCB2ZXJzZVJlZiA9IGN1cnJlbnRDb250ZXh0SWQudmVyc2VTcGFuIHx8IHZlcnNlOyAvLyBpZiBpbiB2ZXJzZSBzcGFuLCB1c2UgaXRcbiAgICBjb25zdCBiZWZvcmUgPSB0YXJnZXRCaWJsZVtjaGFwdGVyXVt2ZXJzZVJlZl07XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgICBuZXdUYWdzOiBbXSxcbiAgICAgIG1vZGU6IFwiZGVmYXVsdFwiLFxuICAgICAgaXNWZXJzZUNoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICAgIGVkaXRUYXJnZXRWZXJzZShjaGFwdGVyLCB2ZXJzZVJlZiwgYmVmb3JlLCBuZXdWZXJzZVRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBjaGVjayBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUdvVG9OZXh0KCkge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWhhbmRsZUdvVG9OZXh0YClcbiAgICBjb25zdCBuZXh0Q2hlY2sgPSBmaW5kTmV4dENoZWNrKGdyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgIGNoYW5nZUN1cnJlbnRDaGVja18obmV4dENoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgY2hlY2sgaW4gdGhlIHNlcXVlbmNlXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVHb1RvUHJldmlvdXMoKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlR29Ub1ByZXZpb3VzYClcbiAgICBjb25zdCBwcmV2aW91c0NoZWNrID0gZmluZFByZXZpb3VzQ2hlY2soZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgY2hhbmdlQ3VycmVudENoZWNrXyhwcmV2aW91c0NoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2hlY2tib3ggY2hhbmdlcyBmb3IgdGFnc1xuICAgKiBBZGRzIG9yIHJlbW92ZXMgdGFncyBmcm9tIHRoZSBjdXJyZW50IGxpc3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIFRhZyBpZGVudGlmaWVyXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWdzQ2hlY2tib3ggPSAodGFnKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlVGFnc0NoZWNrYm94YCwgdGFnKVxuICAgIGNvbnN0IGN1cnJlbnRUYWdzID0gbmV3VGFncyB8fCBbXVxuICAgIGNvbnN0IHRhZ0luZGV4ID0gY3VycmVudFRhZ3MuaW5kZXhPZih0YWcpO1xuICAgIGxldCBfbmV3VGFncztcblxuICAgIGlmICh0YWdJbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBjb3B5ID0gY3VycmVudFRhZ3Muc2xpY2UoMCk7XG4gICAgICBjb3B5LnNwbGljZSh0YWdJbmRleCwgMSk7XG4gICAgICBfbmV3VGFncyA9IGNvcHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9uZXdUYWdzID0gWy4uLmN1cnJlbnRUYWdzLCB0YWddO1xuICAgIH1cblxuICAgIHNldFN0YXRlKHsgbmV3VGFnczogX25ld1RhZ3MgfSk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHNlbGVjdGlvbnMgYWdhaW5zdCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVRleHRfIC0gVmVyc2UgdGV4dCB0byB2YWxpZGF0ZSBhZ2FpbnN0XG4gICAqIEBwYXJhbSB7QXJyYXl9IHNlbGVjdGlvbnNfIC0gU2VsZWN0aW9ucyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBzZWxlY3Rpb25zIGFyZSB2YWxpZFxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVTZWxlY3Rpb25zID0gKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdmFsaWRhdGVTZWxlY3Rpb25zYCwgc2VsZWN0aW9uc18pXG4gICAgcmV0dXJuIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKVxuICB9XG5cbiAgLyoqXG4gICAqIE1lbW9pemVkIGNvbXB1dGF0aW9uIG9mIHVuZmlsdGVyZWQgdmVyc2UgdGV4dCBpbmNsdWRpbmcgVVNGTSBtYXJrZXJzXG4gICAqIFVzZWQgZm9yIGRpc3BsYXlpbmcgYW5kIGVkaXRpbmcgY29tcGxldGUgdmVyc2UgZGF0YVxuICAgKi9cbiAgY29uc3QgdW5maWx0ZXJlZFZlcnNlVGV4dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCB1bmZpbHRlcmVkVmVyc2VUZXh0XyA9ICcnXG4gICAgY29uc3QgcmVmZXJlbmNlID0gY3VycmVudENvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgY2hhcHRlciA9IHJlZmVyZW5jZT8uY2hhcHRlclxuICAgIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICAgIGlmIChjaGFwdGVyICYmIHZlcnNlKSB7XG4gICAgICBjb25zdCB2ZXJzZURhdGEgPSB0YXJnZXRCaWJsZT8uW2NoYXB0ZXJdPy5bdmVyc2VdXG4gICAgICBpZiAodmVyc2VEYXRhKSB7XG4gICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gdmVyc2VEYXRhXG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2VEYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHZlcnNlRGF0YSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmZpbHRlcmVkVmVyc2VUZXh0X1xuICB9LCBbdGFyZ2V0QmlibGUsIGN1cnJlbnRDb250ZXh0SWRdKVxuXG4gIC8qKlxuICAgKiBTZXRzIGEgdGVtcG9yYXJ5IHZhbHVlIGZvciBhIGNoZWNraW5nIGRhdGEgcHJvcGVydHlcbiAgICogVXNlZCBmb3IgdHJhY2tpbmcgdW5zYXZlZCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgLSBQcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgY29uc3Qgc2V0VGVtcENoZWNraW5nSXRlbSA9IChrZXksIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3Q2hlY2tpbmdEYXRhID0gdGVtcENoZWNraW5nRGF0YSA/IHsuLi50ZW1wQ2hlY2tpbmdEYXRhfSA6IHt9XG4gICAgbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSB2YWx1ZVxuICAgIHNldFRlbXBDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgc2VsZWN0aW9ucyBpbiB0ZW1wb3Jhcnkgc3RhdGUgd2l0aG91dCBzYXZpbmdcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0aW9ucyAtIE5ldyBzZWxlY3Rpb25zIGFycmF5XG4gICAqL1xuICBjb25zdCBjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlID0gKHNlbGVjdGlvbnMpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlYCwgc2VsZWN0aW9ucylcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdzZWxlY3Rpb25zJywgc2VsZWN0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBcIm5vdGhpbmcgdG8gc2VsZWN0XCIgZmxhZyBmb3IgY3VycmVudCBjaGVja1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNlbGVjdCAtIE5ldyBzdGF0ZSB2YWx1ZVxuICAgKi9cbiAgY29uc3QgdG9nZ2xlTm90aGluZ1RvU2VsZWN0ID0gKHNlbGVjdCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZU5vdGhpbmdUb1NlbGVjdGAsIHNlbGVjdClcbiAgICBzZXRUZW1wQ2hlY2tpbmdJdGVtKCdub3RoaW5nVG9TZWxlY3QnLCBzZWxlY3QpXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgY3VycmVudCBjaGVjayBiZWluZyB3b3JrZWQgb25cbiAgICogVmFsaWRhdGVzIGZvciB1bnNhdmVkIGNoYW5nZXMgYmVmb3JlIHN3aXRjaGluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3Q29udGV4dCAtIE5ldyBjaGVjayBjb250ZXh0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9DaGVjayAtIFNraXAgdmFsaWRhdGlvbiBpZiB0cnVlXG4gICAqL1xuICBjb25zdCBjaGFuZ2VDdXJyZW50Q2hlY2tfID0gKG5ld0NvbnRleHQsIG5vQ2hlY2sgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IG5ld0NvbnRleHRJZCA9IG5ld0NvbnRleHQ/LmNvbnRleHRJZFxuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZUN1cnJlbnRDb250ZXh0SWRgLCBuZXdDb250ZXh0SWQpXG5cbiAgICBjb25zdCBzZWxlY3Rpb25zVW5jaGFuZ2VkID0gaXNFcXVhbChjdXJyZW50U2VsZWN0aW9ucywgdGVtcFNlbGVjdGlvbnMpXG4gICAgaWYgKG5vQ2hlY2sgfHwgc2VsZWN0aW9uc1VuY2hhbmdlZCkge1xuICAgICAgaWYgKG5ld0NvbnRleHRJZCkge1xuICAgICAgICBsZXQgY2hlY2sgPSBmaW5kQ2hlY2soZ3JvdXBzRGF0YSwgbmV3Q29udGV4dElkLCBmYWxzZSlcbiAgICAgICAgdXBkYXRlQ29udGV4dChuZXdDb250ZXh0KVxuICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShudWxsKVxuICAgICAgICAgIHNldFRlbXBDaGVja2luZ0RhdGEobnVsbClcbiAgICAgICAgICB1cGRhdGVNb2RlRm9yU2VsZWN0aW9ucyhjaGVjay5zZWxlY3Rpb25zLCBjaGVjay5ub3RoaW5nVG9TZWxlY3QpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coJ0NoZWNrZXIuY2hhbmdlQ3VycmVudENvbnRleHRJZCAtIHVuc2F2ZWQgY2hhbmdlcycpXG4gICAgfVxuICAgIGNoYW5nZWRDdXJyZW50Q2hlY2sgJiYgY2hhbmdlZEN1cnJlbnRDaGVjayhuZXdDb250ZXh0KVxuICB9XG5cbiAgY29uc3QgZGlyZWN0aW9uID0gJ2x0cidcbiAgY29uc3QgYm9va21hcmtFbmFibGVkID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdyZW1pbmRlcnMnKVxuICBjb25zdCBpc1ZlcnNlRWRpdGVkID0gISFnZXRDdXJyZW50VmFsdWVGb3IoJ3ZlcnNlRWRpdHMnKVxuICBjb25zdCBpc1ZlcnNlSW52YWxpZGF0ZWQgPSAhIWdldEN1cnJlbnRWYWx1ZUZvcignaW52YWxpZGF0ZWQnKVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgKiBWYWxpZGF0ZXMgZm9yIHVuc2F2ZWQgY2hhbmdlcyBiZWZvcmUgc3dpdGNoaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdDb250ZXh0IC0gTmV3IGNoZWNrIGNvbnRleHRcbiAgICogQHBhcmFtIHtib29sZWFufSBub0NoZWNrIC0gU2tpcCB2YWxpZGF0aW9uIGlmIHRydWVcbiAgICovXG4gIGNvbnN0IF9zYXZlU2VsZWN0aW9uID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LV9zYXZlU2VsZWN0aW9uIHBlcnNpc3QgdG8gZmlsZWApXG4gICAgY29uc3QgeyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfSA9IGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgaWYgKHRlbXBOb3RoaW5nVG9TZWxlY3QpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSB0ZW1wTm90aGluZ1RvU2VsZWN0XG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuc2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuaW52YWxpZGF0ZWQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSBmYWxzZVxuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLnNlbGVjdGlvbnMgPSB0ZW1wU2VsZWN0aW9uc1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLmludmFsaWRhdGVkID0gZmFsc2VcbiAgICAgIH1cblxuICAgICAgc2V0TG9jYWxDaGVja2luZ0RhdGEoX25ld0NoZWNraW5nRGF0YSlcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ25vdGhpbmdUb1NlbGVjdCcpXG4gICAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ2ludmFsaWRhdGVkJylcblxuICAgICAgdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoX2N1cnJlbnRDaGVjaywgY2hlY2tJbkdyb3Vwc0RhdGEsIF9uZXdDaGVja2luZ0RhdGEpXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvbmVzIGN1cnJlbnQgZGF0YSBzdHJ1Y3R1cmVzIGZvciBzYXZpbmcgbW9kaWZpY2F0aW9uc1xuICAgKiBDcmVhdGVzIGRlZXAgY29waWVzIHRvIGF2b2lkIG11dGF0aW5nIG9yaWdpbmFsIHN0YXRlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IE9iamVjdCBjb250YWluaW5nIGNsb25lZCBkYXRhIHN0cnVjdHVyZXNcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNsb25lRGF0YUZvclNhdmluZygpIHtcbiAgICBjb25zdCBfZ3JvdXBzRGF0YSA9IF8uY2xvbmVEZWVwKGdyb3Vwc0RhdGEpXG4gICAgY29uc3QgY2hlY2tJbkdyb3Vwc0RhdGEgPSBmaW5kQ2hlY2soX2dyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQpXG4gICAgbGV0IF9jdXJyZW50Q2hlY2tcbiAgICBsZXQgbmV3U3RhdGVcbiAgICBsZXQgX25ld0NoZWNraW5nRGF0YVxuICAgIGlmIChjaGVja0luR3JvdXBzRGF0YSkge1xuICAgICAgLy8gc2F2ZSB0aGUgc2VsZWN0aW9uIGNoYW5nZXNcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2hlY2tJbkdyb3Vwc0RhdGEuY2F0ZWdvcnlcbiAgICAgIGNvbnN0IG5ld0NoZWNrRGF0YSA9IF8uY2xvbmVEZWVwKGN1cnJlbnRDaGVja2luZ0RhdGEpXG4gICAgICBfY3VycmVudENoZWNrID0gZmluZENoZWNrKG5ld0NoZWNrRGF0YVtjYXRlZ29yeV0sIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgICAgbmV3U3RhdGUgPSB7XG4gICAgICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IG5ld0NoZWNrRGF0YSxcbiAgICAgICAgY3VycmVudENoZWNrOiBfY3VycmVudENoZWNrLFxuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YSxcbiAgICAgICAgbW9kZTogJ2RlZmF1bHQnLFxuICAgICAgICBtb2RpZmllZDogdHJ1ZVxuICAgICAgfVxuICAgICAgX25ld0NoZWNraW5nRGF0YSA9IGxvY2FsQ2hlY2tpbmdEYXRhID8gey4uLmxvY2FsQ2hlY2tpbmdEYXRhfSA6IHt9XG4gICAgfVxuICAgIHJldHVybiB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBtdWx0aXBsZSBwcm9wZXJ0aWVzIGluIGNoZWNrIGRhdGEgb2JqZWN0c1xuICAgKiBNb2RpZmllcyBib3RoIHRoZSBjdXJyZW50IGNoZWNrIGFuZCBncm91cHMgZGF0YVxuICAgKiBAcGFyYW0ge29iamVjdH0gX2N1cnJlbnRDaGVjayAtIEN1cnJlbnQgY2hlY2sgb2JqZWN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjaGVja0luR3JvdXBzRGF0YSAtIENoZWNrIGluIGdyb3VwcyBkYXRhIHN0cnVjdHVyZVxuICAgKiBAcGFyYW0ge29iamVjdH0gX25ld0NoZWNraW5nRGF0YSAtIE5ldyBkYXRhIHRvIGFwcGx5XG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShfY3VycmVudENoZWNrLCBjaGVja0luR3JvdXBzRGF0YSwgX25ld0NoZWNraW5nRGF0YSkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKF9uZXdDaGVja2luZ0RhdGEpKSB7XG4gICAgICBjb25zdCBuZXdDaGVja2luZ1ZhbHVlID0gX25ld0NoZWNraW5nRGF0YVtrZXldXG4gICAgICBfY3VycmVudENoZWNrW2tleV0gPSBuZXdDaGVja2luZ1ZhbHVlXG4gICAgICBjaGVja0luR3JvdXBzRGF0YVtrZXldID0gbmV3Q2hlY2tpbmdWYWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0cyBtdWx0aXBsZSBjaGVjayBwcm9wZXJ0eSBjaGFuZ2VzIHRvIGZpbGVcbiAgICogQ2xvbmVzIGRhdGEsIGFwcGxpZXMgY2hhbmdlcywgdXBkYXRlcyBzdGF0ZSwgYW5kIHNhdmVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdEYXRhIC0gT2JqZWN0IHdpdGggcHJvcGVydHkgbmFtZXMgYW5kIHZhbHVlcyB0byB1cGRhdGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0IF9zYXZlRGF0YSA9IChuZXdEYXRhKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVEYXRhIHBlcnNpc3QgdG8gZmlsZWApXG4gICAgY29uc3QgeyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfSA9IGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmV3RGF0YSkpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YVtrZXldID0gbmV3RGF0YVtrZXldXG4gICAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoa2V5KVxuICAgICAgfVxuICAgICAgc2V0TG9jYWxDaGVja2luZ0RhdGEoX25ld0NoZWNraW5nRGF0YSlcblxuICAgICAgdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoX2N1cnJlbnRDaGVjaywgY2hlY2tJbkdyb3Vwc0RhdGEsIF9uZXdDaGVja2luZ0RhdGEpXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgIHNhdmVDaGVja2luZ0RhdGEgJiYgc2F2ZUNoZWNraW5nRGF0YShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgY2hhbmdlcyB0byBhIHNwZWNpZmljIGNoZWNrIChtYXkgbm90IGJlIGN1cnJlbnQgY2hlY2spXG4gICAqIE9ubHkgc2F2ZXMgaWYgZGF0YSBhY3R1YWxseSBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjaGVjayAtIENoZWNrIG9iamVjdCB0byB1cGRhdGVcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0RhdGEgLSBOZXcgZGF0YSB0byBhcHBseVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBkYXRhIHdhcyBjaGFuZ2VkXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdCBfc2F2ZUNoZWNraW5nRGF0YSA9IChjaGVjaywgbmV3RGF0YSkgPT4ge1xuICAgIGxldCBjaGFuZ2VkRGF0YSA9IGZhbHNlXG4gICAgaWYgKGNoZWNrKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdEYXRhKSkge1xuICAgICAgICBpZiAoY2hlY2tba2V5XSAhPT0gbmV3RGF0YVtrZXldKSB7XG4gICAgICAgICAgY2hlY2tba2V5XSA9IG5ld0RhdGFba2V5XVxuICAgICAgICAgIGNoYW5nZWREYXRhID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2VkRGF0YSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1fc2F2ZUNoZWNraW5nRGF0YSBwZXJzaXN0IGNoYW5nZXMgdG8gZmlsZWAsIGNoZWNrKVxuICAgICAgICBjb25zdCBuZXdDaGVja2luZ0RhdGEgPSB7XG4gICAgICAgICAgY3VycmVudENoZWNrOiBjaGVjayxcbiAgICAgICAgfVxuICAgICAgICBzYXZlQ2hlY2tpbmdEYXRhICYmIHNhdmVDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlZERhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgcHJvcGVydHkgZnJvbSB0ZW1wb3JhcnkgY2hlY2tpbmcgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZSB0byByZW1vdmVcbiAgICovXG4gIGZ1bmN0aW9uIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoa2V5KSB7XG4gICAgaWYgKHRlbXBDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIGNvbnN0IF90ZW1wQ2hlY2tpbmdEYXRhID0gey4uLnRlbXBDaGVja2luZ0RhdGF9XG4gICAgICBkZWxldGUgX3RlbXBDaGVja2luZ0RhdGFba2V5XVxuICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShfdGVtcENoZWNraW5nRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBzZWxlY3Rpb24gbW9kZSB3aXRob3V0IHNhdmluZyBjaGFuZ2VzXG4gICAqL1xuICBjb25zdCBjYW5jZWxTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsU2VsZWN0aW9uYClcbiAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCdcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGN1cnJlbnQgc2VsZWN0aW9uc1xuICAgKi9cbiAgY29uc3QgY2xlYXJTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2xlYXJTZWxlY3Rpb25gKVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ3NlbGVjdGlvbnMnLCBbXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGJvb2ttYXJrL3JlbWluZGVyIGZsYWcgZm9yIGN1cnJlbnQgY2hlY2tcbiAgICovXG4gIGNvbnN0IHRvZ2dsZUJvb2ttYXJrID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZUJvb2ttYXJrYClcbiAgICBfc2F2ZURhdGEoe1xuICAgICAgcmVtaW5kZXJzOiAhZ2V0VGVtcFZhbHVlRm9yKCdyZW1pbmRlcnMnKVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlcyB0aGUgVUkgbW9kZSAoZGVmYXVsdCwgc2VsZWN0LCBlZGl0LCBjb21tZW50KVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSAtIE5ldyBtb2RlIGlkZW50aWZpZXJcbiAgICovXG4gIGNvbnN0IGNoYW5nZU1vZGUgPSAobW9kZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoYW5nZU1vZGVgLCBtb2RlKVxuICAgIHNldFN0YXRlKHsgbW9kZSB9KVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBjb21tZW50IHRleHQgaGFzIGNoYW5nZWQgZnJvbSBzYXZlZCB2YWx1ZVxuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnRcbiAgICovXG4gIGZ1bmN0aW9uIGNoZWNrSWZDb21tZW50Q2hhbmdlZChlKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hlY2tJZkNvbW1lbnRDaGFuZ2VkYClcbiAgICBjb25zdCBuZXdjb21tZW50ID0gZS50YXJnZXQudmFsdWUgfHwgJyc7XG4gICAgY29uc3Qgb2xkY29tbWVudCA9IGNvbW1lbnRUZXh0IHx8ICcnO1xuICAgIGNvbnN0IGlzQ29tbWVudENoYW5nZWQgPSBuZXdjb21tZW50ICE9PSBvbGRjb21tZW50XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBjb21tZW50IGVkaXRpbmcgd2l0aG91dCBzYXZpbmdcbiAgICovXG4gIGNvbnN0IGNhbmNlbENvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsQ29tbWVudGApXG4gICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnY29tbWVudHMnKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGNvbW1lbnQgY2hhbmdlcyB0byBwZXJzaXN0ZW50IHN0b3JhZ2VcbiAgICovXG4gIGNvbnN0IHNhdmVDb21tZW50ID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXNhdmVDb21tZW50YClcbiAgICBjb25zdCBuZXdDb21tZW50ID0gZ2V0VGVtcFZhbHVlRm9yKCdjb21tZW50cycpXG4gICAgX3NhdmVEYXRhKHsgY29tbWVudHM6IG5ld0NvbW1lbnQgfSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNvbW1lbnQgdGV4dCBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudCB3aXRoIG5ldyBjb21tZW50XG4gICAqL1xuICBjb25zdCBoYW5kbGVDb21tZW50ID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlQ29tbWVudGApXG4gICAgY29uc3QgbmV3Q29tbWVudCA9IGUudGFyZ2V0LnZhbHVlXG4gICAgc2V0VGVtcENoZWNraW5nSXRlbSgnY29tbWVudHMnLCBuZXdDb21tZW50KVxuICAgIHNldFN0YXRlKHtcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZWFkeVRvRGlzcGxheUNoZWNrZXIgPSBncm91cHNEYXRhICYmIGdyb3Vwc0luZGV4ICYmIGN1cnJlbnRDb250ZXh0SWQgJiYgdmVyc2VUZXh0XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldExleGljb25EYXRhIGNhbGxiYWNrIHdpdGggbG9nZ2luZ1xuICAgKiBAcGFyYW0ge3N0cmluZ30gbGV4aWNvbklkIC0gTGV4aWNvbiBpZGVudGlmaWVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRyeUlkIC0gRW50cnkgaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBMZXhpY29uIGRhdGFcbiAgICovXG4gIGNvbnN0IGdldExleGljb25EYXRhXyA9IChsZXhpY29uSWQsIGVudHJ5SWQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1nZXRMZXhpY29uRGF0YV9gLCB7bGV4aWNvbklkLCBlbnRyeUlkfSlcbiAgICBjb25zdCBsZXhpY29uRGF0YSA9IGdldExleGljb25EYXRhICYmIGdldExleGljb25EYXRhKGxleGljb25JZCwgZW50cnlJZClcbiAgICByZXR1cm4gbGV4aWNvbkRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHBvcG92ZXIgZGlzcGxheVxuICAgKi9cbiAgY29uc3Qgb25DbG9zZVBvcG92ZXIgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tb25DbG9zZVBvcG92ZXJgKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgICBwb3BvdmVyVmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhIHBvcG92ZXIgd2l0aCB0aXRsZSBhbmQgY29udGVudCBhdCBzcGVjaWZpZWQgcG9zaXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIC0gUG9wb3ZlciB0aXRsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm9keVRleHQgLSBQb3BvdmVyIGNvbnRlbnRcbiAgICogQHBhcmFtIHtvYmplY3R9IHBvc2l0aW9uQ29vcmQgLSBQb3NpdGlvbiBjb29yZGluYXRlc1xuICAgKi9cbiAgY29uc3Qgc2hvd1BvcG92ZXIgPSAodGl0bGUsIGJvZHlUZXh0LCBwb3NpdGlvbkNvb3JkKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2hvd1BvcG92ZXJgLCB0aXRsZSlcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBwb3BvdmVyUHJvcHM6IHtcbiAgICAgICAgcG9wb3ZlclZpc2liaWxpdHk6IHRydWUsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBib2R5VGV4dCxcbiAgICAgICAgcG9zaXRpb25Db29yZCxcbiAgICAgICAgb25DbG9zZVBvcG92ZXI6ICgpID0+IG9uQ2xvc2VQb3BvdmVyKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIGV4cGFuZGVkIHRyYW5zbGF0aW9uIGhlbHBzIG1vZGFsXG4gICAqL1xuICBjb25zdCB0b2dnbGVIZWxwc01vZGFsID0gKCkgPT4ge1xuICAgIGNvbnN0IF9zaG93SGVscHNNb2RhbCA9ICFzaG93SGVscHNNb2RhbFxuICAgIHNldFN0YXRlKHtcbiAgICAgIHNob3dIZWxwc01vZGFsOiBfc2hvd0hlbHBzTW9kYWxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHRyYW5zbGF0aW9uIGhlbHBzIHNpZGViYXIgdmlzaWJpbGl0eVxuICAgKi9cbiAgY29uc3QgdG9nZ2xlSGVscHMgPSAoKSA9PiB7XG4gICAgY29uc3QgX3Nob3dIZWxwcyA9ICFzaG93SGVscHNcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBzaG93SGVscHM6IF9zaG93SGVscHNcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBCaWJsZSBib29rIHRvIHRoZSBiaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQ3JlYXRlcyBsYW5ndWFnZSBncm91cCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBiaWJsZXMgLSBCaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIExhbmd1YWdlIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVJZCAtIEJpYmxlIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtvYmplY3R9IGJvb2sgLSBCb29rIGRhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVCaWJsZVRvS2V5KGJpYmxlcywga2V5LCBiaWJsZUlkLCBib29rKSB7XG4gICAgbGV0IGtleUdyb3VwID0gYmlibGVzW2tleV1cbiAgICBpZiAoIWtleUdyb3VwKSB7IC8vIGlmIGdyb3VwIGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgbmV3XG4gICAgICBrZXlHcm91cCA9IHt9XG4gICAgICBiaWJsZXNba2V5XSA9IGtleUdyb3VwXG4gICAgfVxuICAgIGtleUdyb3VwW2JpYmxlSWRdID0gYm9va1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdmVyc2UgY29udGVudCBpbiB0YXJnZXQgQmlibGVcbiAgICogSGFuZGxlcyBVU0ZNIGNvbnZlcnNpb24sIGFsaWdubWVudCB1cGRhdGVzLCBhbmQgdmFsaWRhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhcHRlciAtIENoYXB0ZXIgbnVtYmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZSAtIFZlcnNlIG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkVmVyc2VUZXh0IC0gT3JpZ2luYWwgdmVyc2UgdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gTmV3IHZlcnNlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIGVkaXRUYXJnZXRWZXJzZShjaGFwdGVyLCB2ZXJzZSwgb2xkVmVyc2VUZXh0LCBuZXdWZXJzZVRleHQpIHtcbiAgICBjb25zb2xlLmxvZyhgZWRpdFRhcmdldFZlcnNlICR7Y2hhcHRlcn06JHt2ZXJzZX0gLSBjaGFuZ2VkIHRvICR7bmV3VmVyc2VUZXh0fWApXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gZmlyc3QgdXBkYXRlIGNvbXBvbmVudCBzdGF0ZVxuXG4gICAgY29uc3QgX2JpYmxlcyA9IFsgLi4uYmlibGVzX11cbiAgICBjb25zdCBfdGFyZ2V0QmlibGUgPSB7Li4uX2JpYmxlc1swXX1cbiAgICBfYmlibGVzWzBdID0gX3RhcmdldEJpYmxlXG4gICAgY29uc3QgdGFyZ2V0Qm9vayA9IHsuLi5fdGFyZ2V0QmlibGU/LmJvb2t9XG4gICAgX3RhcmdldEJpYmxlLmJvb2sgPSB0YXJnZXRCb29rXG4gICAgY29uc3QgdGFyZ2V0Q2hhcHRlciA9IHsuLi50YXJnZXRCb29rW2NoYXB0ZXJdfVxuICAgIHRhcmdldEJvb2tbY2hhcHRlcl0gPSB0YXJnZXRDaGFwdGVyXG4gICAgdGFyZ2V0Q2hhcHRlclt2ZXJzZV0gPSBuZXdWZXJzZVRleHRcblxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIG5vdyBhcHBseSBuZXcgdmVyc2UgdGV4dCB0byBzZWxlY3RlZCBhbGlnbmVkIHZlcnNlIGFuZCBjYWxsIGJhY2sgdG8gZXh0ZW5zaW9uIHRvIHNhdmVcblxuICAgIGxldCBfbmV3VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0XG4gICAgaWYgKHR5cGVvZiBfbmV3VmVyc2VUZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgX25ld1ZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShfbmV3VmVyc2VUZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyRGF0YSA9IHRhcmdldEJpYmxlPy5bY2hhcHRlcl1cbiAgICBjb25zdCBjdXJyZW50VmVyc2VEYXRhID0gY3VycmVudENoYXB0ZXJEYXRhPy5bdmVyc2VdXG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlRGF0YSwgX25ld1ZlcnNlVGV4dClcbiAgICB0YXJnZXRDaGFwdGVyW3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHMgfTsgLy8gc2F2ZVxuXG4gICAgdXBkYXRlU2V0dGluZ3MoX2JpYmxlcywgdGFyZ2V0Qm9vaylcblxuICAgIGNvbnN0IHZlcnNlVGV4dCA9IHJlbW92ZVVzZm1NYXJrZXJzKF9uZXdWZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VUZXh0XG4gICAgfSlcblxuICAgIGNoYW5nZVRhcmdldFZlcnNlICYmIGNoYW5nZVRhcmdldFZlcnNlKGNoYXB0ZXIsIHZlcnNlLCBuZXdWZXJzZVRleHQsIHRhcmdldFZlcnNlT2JqZWN0cylcbiAgICBfc2F2ZURhdGEoeyB2ZXJzZUVkaXRzOiB0cnVlIH0pXG5cbiAgICBjb25zdCBfZ3JvdXBzRGF0YSA9IF8uY2xvbmVEZWVwKGdyb3Vwc0RhdGEpXG4gICAgbGV0IGNoYW5nZWREYXRhID0gZmFsc2VcbiAgICBzZWxlY3Rpb25zSGVscGVycy52YWxpZGF0ZUFsbFNlbGVjdGlvbnNGb3JWZXJzZShuZXdWZXJzZVRleHQsIGJvb2tJZCwgY2hhcHRlciwgdmVyc2UsIF9ncm91cHNEYXRhLCAoY2hlY2ssIGludmFsaWRhdGVkKSA9PiB7XG4gICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgY29uc3QgY3VycmVudENoZWNrSWQgPSBjdXJyZW50Q2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuICAgICAgICBjb25zdCBjaGVja0lkID0gY2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuXG4gICAgICAgIGlmIChjaGVja0lkID09PSBjdXJyZW50Q2hlY2tJZCkge1xuICAgICAgICAgIC8vIG5lZWQgdG8gdXBkYXRlIGN1cnJlbnQgY2hlY2tcbiAgICAgICAgICBfc2F2ZURhdGEoe1xuICAgICAgICAgICAgaW52YWxpZGF0ZWQsXG4gICAgICAgICAgICB2ZXJzZUVkaXRzOiB0cnVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGVjayB2YWxpZGF0ZWQsIHN0YXRlIGNoYW5nZWQ6IGludmFsaWQ6ICR7aW52YWxpZGF0ZWR9YCwgY2hlY2spXG4gICAgICAgIGNoYW5nZWREYXRhID0gY2hhbmdlZERhdGEgfHwgX3NhdmVDaGVja2luZ0RhdGEoY2hlY2ssIHsgaW52YWxpZGF0ZWQsIHZlcnNlRWRpdHM6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGNoYW5nZWREYXRhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGFuZ2VzIGRldGVjdGVkIHVwZGF0aW5nIGdyb3Vwc0RhdGFgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyBzZXR0aW5ncyB3aXRoIG5ldyBCaWJsZSBkYXRhIGFuZCBwYW5lIGNvbmZpZ3VyYXRpb25zXG4gICAqIE9yZ2FuaXplcyBCaWJsZXMgYnkgbGFuZ3VhZ2UgYW5kIGluaXRpYWxpemVzIHBhbmUgc2V0dGluZ3NcbiAgICogQHBhcmFtIHtBcnJheX0gbmV3QmlibGVzIC0gQXJyYXkgb2YgQmlibGUgb2JqZWN0c1xuICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0QmlibGUgLSBUYXJnZXQgQmlibGUgZGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3MobmV3QmlibGVzLCB0YXJnZXRCaWJsZSkge1xuICAgIGNvbnN0IF9iaWJsZXMgPSB7fVxuICAgIGxldCBfcGFuZVNldHRpbmdzID0gW11cbiAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5wYW5lS2V5U2V0dGluZ3MgfHwge31cbiAgICBpZiAobmV3QmlibGVzPy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYmlibGUgb2YgbmV3QmlibGVzKSB7XG4gICAgICAgIGxldCBsYW5ndWFnZUlkID0gYmlibGU/Lmxhbmd1YWdlSWRcbiAgICAgICAgY29uc3Qgb3duZXIgPSBiaWJsZT8ub3duZXJcbiAgICAgICAgY29uc3QgYm9vayA9IGJpYmxlPy5ib29rXG4gICAgICAgIGNvbnN0IGJpYmxlSWQgPSBiaWJsZT8uYmlibGVJZFxuICAgICAgICBpZiAobGFuZ3VhZ2VJZCA9PT0gTlRfT1JJR19MQU5HIHx8IGxhbmd1YWdlSWQgPT09IE9UX09SSUdfTEFORykge1xuICAgICAgICAgIGxhbmd1YWdlSWQgPSAnb3JpZ2luYWxMYW5ndWFnZSdcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBgJHtsYW5ndWFnZUlkfS8ke2JpYmxlSWR9LyR7b3duZXJ9YFxuICAgICAgICBjb25zdCBpbml0aWFsUGFuZVNldHRpbmdzID0gX3BhbmVLZXlTZXR0aW5ncz8uW2tleV1cbiAgICAgICAgY29uc3QgbGFuZ0tleSA9IGAke2xhbmd1YWdlSWR9XyR7b3duZXJ9YFxuICAgICAgICBzYXZlQmlibGVUb0tleShfYmlibGVzLCBsYW5nS2V5LCBiaWJsZUlkLCBib29rKVxuICAgICAgICBzYXZlQmlibGVUb0tleShfYmlibGVzLCBsYW5ndWFnZUlkLCBiaWJsZUlkLCBib29rKSAvLyBhbHNvIHNhdmUgYXMgZGVmYXVsdCBmb3IgbGFuZ3VhZ2Ugd2l0aG91dCBvd25lclxuICAgICAgICBjb25zdCBwYW5lID0gaW5pdGlhbFBhbmVTZXR0aW5ncyB8fCB7XG4gICAgICAgICAgLi4uYmlibGUsXG4gICAgICAgICAgbGFuZ3VhZ2VJZFxuICAgICAgICB9XG4gICAgICAgIF9wYW5lU2V0dGluZ3MucHVzaChwYW5lKVxuICAgICAgICBpZiAoIWluaXRpYWxQYW5lU2V0dGluZ3MpIHtcbiAgICAgICAgICBfcGFuZUtleVNldHRpbmdzW2tleV0gPSBwYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3BhbmVTZXR0aW5ncyA9IFtdXG4gICAgfVxuXG4gICAgY29uc3QgX3Rvb2xzU2V0dGluZ3MgPSBpbml0aWFsU2V0dGluZ3M/LnRvb2xzU2V0dGluZ3MgfHxcbiAgICB7XG4gICAgICAnQ2hlY2tBcmVhJzoge1xuICAgICAgICAnZm9udFNpemUnOiAxMDBcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgX21hbmlmZXN0ID0gaW5pdGlhbFNldHRpbmdzPy5tYW5pZmVzdCB8fFxuICAgIHtcbiAgICAgIGxhbmd1YWdlX25hbWU6IHRhcmdldEJpYmxlPy5tYW5pZmVzdD8uZHVibGluX2NvcmU/Lmxhbmd1YWdlPy50aXRsZSB8fCAnQ3VycmVudCcsXG4gICAgICBwcm9qZWN0Rm9udDogdGFyZ2V0QmlibGU/Lm1hbmlmZXN0Py5wcm9qZWN0Rm9udCB8fCAnJ1xuICAgIH1cblxuICAgIGNvbnN0IGFwcFNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5hcHBTZXR0aW5ncyB8fCB7fVxuICAgIF9tYW5pZmVzdCA9IHtcbiAgICAgIC4uLl9tYW5pZmVzdCxcbiAgICAgIC4uLmFwcFNldHRpbmdzIC8vIG9sZGVyIGNvZGUgaXMgbG9va2luZyBmb3IgYXBwU2V0dGluZ3MgaW4gbWFuaWZlc3RcbiAgICB9XG5cbiAgICBzZXRCaWJsZXMoX2JpYmxlcylcbiAgICBzZXRUYXJnZXRCaWJsZSh0YXJnZXRCaWJsZSlcbiAgICBzZXRTZXR0aW5ncyh7XG4gICAgICBwYW5lU2V0dGluZ3M6IF9wYW5lU2V0dGluZ3MsXG4gICAgICBwYW5lS2V5U2V0dGluZ3M6IF9wYW5lS2V5U2V0dGluZ3MsXG4gICAgICB0b29sc1NldHRpbmdzOiBfdG9vbHNTZXR0aW5ncyxcbiAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICBuZXdDb21tZW50OiAnJyxcbiAgICAgIGFwcFNldHRpbmdzLFxuICAgIH0sIGZhbHNlKVxuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2Ugd2l0aCBjdXJyZW50IEJpYmxlcyBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5nIC0gTGFuZ3VhZ2UgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gQmlibGUgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJvb2sgLSBCb29rIElEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyIC0gQ2hhcHRlciBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlIC0gVmVyc2UgbnVtYmVyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFNjcmlwdHVyZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShsYW5nLCBpZCwgYm9vaywgY2hhcHRlciwgdmVyc2UpIHtcbiAgICByZXR1cm4gZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShiaWJsZXMsIGxhbmcsIGlkLCBib29rLCBjaGFwdGVyLCB2ZXJzZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgaG9vayB0byB1cGRhdGUgc2V0dGluZ3Mgd2hlbiBCaWJsZXMgb3IgdGFyZ2V0IEJpYmxlIGNoYW5nZXNcbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU2V0dGluZ3MoYmlibGVzXywgdGFyZ2V0QmlibGVfKVxuICB9LCBbYmlibGVzXywgdGFyZ2V0QmlibGVfXSlcblxuICAvLyBidWlsZCB0aGUgdGl0bGVcbiAgY29uc3QgeyB0YXJnZXRfbGFuZ3VhZ2UsIHByb2plY3QgfSA9IG1hbmlmZXN0O1xuICBsZXQgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUgPSBwcm9qZWN0Py50aXRsZSB8fCAnJztcblxuICBpZiAodGFyZ2V0X2xhbmd1YWdlPy5ib29rPy5uYW1lKSB7XG4gICAgZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUgPSB0YXJnZXRfbGFuZ3VhZ2UuYm9vay5uYW1lO1xuICB9XG5cblxuICBjb25zdCBzdHlsZVByb3BzID0gc3R5bGVzIHx8IHt9XG4gIGNvbnN0IF9jaGVja2VyU3R5bGVzID0ge1xuICAgIC4uLmxvY2FsU3R5bGVzLmNvbnRhaW5lckRpdixcbiAgICAuLi5zdHlsZVByb3BzLFxuICB9XG5jb25zb2xlLmxvZyhiaWJsZXMpXG4gIHJldHVybiAoXG4gICAgcmVhZHlUb0Rpc3BsYXlDaGVja2VyID9cbiAgICAgIDxkaXYgaWQ9J2NoZWNrZXInIHN0eWxlPXtfY2hlY2tlclN0eWxlc30+XG4gICAgICAgIDxHcm91cE1lbnVDb21wb25lbnRcbiAgICAgICAgICBib29rTmFtZT17Ym9va05hbWV9XG4gICAgICAgICAgY2hhbmdlQ3VycmVudENvbnRleHRJZD17Y2hhbmdlQ3VycmVudENoZWNrX31cbiAgICAgICAgICBjb250ZXh0SWQ9e2N1cnJlbnRDb250ZXh0SWR9XG4gICAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgICAgZ3JvdXBzRGF0YT17Z3JvdXBzRGF0YX1cbiAgICAgICAgICBncm91cHNJbmRleD17Z3JvdXBzSW5kZXh9XG4gICAgICAgICAgdGFyZ2V0TGFuZ3VhZ2VGb250PXt0YXJnZXRMYW5ndWFnZUZvbnR9XG4gICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgc3R5bGU9e2xvY2FsU3R5bGVzLmNlbnRlckRpdn0+XG4gICAgICAgICAgeyBiaWJsZXMgJiYgT2JqZWN0LmtleXMoYmlibGVzKS5sZW5ndGggJiZcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e2xvY2FsU3R5bGVzLnNjcmlwdHVyZVBhbmVEaXZ9PlxuICAgICAgICAgICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICAgICAgICAgIGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdD17YWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0fVxuICAgICAgICAgICAgICAgIGJpYmxlcz17YmlibGVzfVxuICAgICAgICAgICAgICAgIGNvbXBsZXhTY3JpcHRGb250cz17Y29tcGxleFNjcmlwdEZvbnRzfVxuICAgICAgICAgICAgICAgIGNvbnRleHRJZD17Y3VycmVudENvbnRleHRJZH1cbiAgICAgICAgICAgICAgICBjdXJyZW50UGFuZVNldHRpbmdzPXtwYW5lU2V0dGluZ3N9XG4gICAgICAgICAgICAgICAgZWRpdFZlcnNlUmVmPXtudWxsfVxuICAgICAgICAgICAgICAgIGVkaXRUYXJnZXRWZXJzZT17ZWRpdFRhcmdldFZlcnNlfVxuICAgICAgICAgICAgICAgIGV4cGFuZGVkU2NyaXB0dXJlUGFuZVRpdGxlPXtleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZX1cbiAgICAgICAgICAgICAgICBnZXRBdmFpbGFibGVTY3JpcHR1cmVQYW5lU2VsZWN0aW9ucz17bnVsbH1cbiAgICAgICAgICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGFffVxuICAgICAgICAgICAgICAgIG1ha2VTdXJlQmlibGVzTG9hZGVkRm9yVG9vbD17bnVsbH1cbiAgICAgICAgICAgICAgICBwcm9qZWN0RGV0YWlsc1JlZHVjZXI9e3sgbWFuaWZlc3QgfX1cbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25zPXtjdXJyZW50U2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgICBzZXRUb29sU2V0dGluZ3M9e3NldFRvb2xTZXR0aW5nc1NjcmlwdHVyZX1cbiAgICAgICAgICAgICAgICBzaG93UG9wb3Zlcj17c2hvd1BvcG92ZXJ9XG4gICAgICAgICAgICAgICAgb25FeHBhbmRlZFNjcmlwdHVyZVBhbmVTaG93PXtudWxsfVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgICAgPENoZWNrSW5mb0NhcmRcbiAgICAgICAgICAgICAgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZT17X2dldFNjcmlwdHVyZUZyb21SZWZlcmVuY2V9XG4gICAgICAgICAgICAgIG9uTGlua0NsaWNrPXsoKSA9PiBmYWxzZX1cbiAgICAgICAgICAgICAgb25TZWVNb3JlQ2xpY2s9eygpID0+IGZhbHNlfVxuICAgICAgICAgICAgICBwaHJhc2U9e2dyb3VwUGhyYXNlfVxuICAgICAgICAgICAgICBzZWVNb3JlTGFiZWw9e3RyYW5zbGF0ZSgnc2VlX21vcmUnKX1cbiAgICAgICAgICAgICAgc2hvd1NlZU1vcmVCdXR0b249e2ZhbHNlfVxuICAgICAgICAgICAgICB0aXRsZT17Z3JvdXBUaXRsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VmVyc2VDaGVja1xuICAgICAgICAgICAgICBhbGlnbmVkR0xUZXh0PXthbGlnbmVkR0xUZXh0fVxuICAgICAgICAgICAgICBib29rRGV0YWlscz17Ym9va0RldGFpbHN9XG4gICAgICAgICAgICAgIGJvb2ttYXJrRW5hYmxlZD17Ym9va21hcmtFbmFibGVkfVxuICAgICAgICAgICAgICBjYW5jZWxFZGl0VmVyc2U9e2NhbmNlbEVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgY2FuY2VsQ29tbWVudD17Y2FuY2VsQ29tbWVudH1cbiAgICAgICAgICAgICAgY2FuY2VsU2VsZWN0aW9uPXtjYW5jZWxTZWxlY3Rpb259XG4gICAgICAgICAgICAgIGNoYW5nZU1vZGU9e2NoYW5nZU1vZGV9XG4gICAgICAgICAgICAgIGNoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGU9e2NoYW5nZVNlbGVjdGlvbnNJbkxvY2FsU3RhdGV9XG4gICAgICAgICAgICAgIGNoZWNrSWZDb21tZW50Q2hhbmdlZD17Y2hlY2tJZkNvbW1lbnRDaGFuZ2VkfVxuICAgICAgICAgICAgICBjaGVja0lmVmVyc2VDaGFuZ2VkPXtjaGVja0lmVmVyc2VDaGFuZ2VkfVxuICAgICAgICAgICAgICBjbGVhclNlbGVjdGlvbj17Y2xlYXJTZWxlY3Rpb259XG4gICAgICAgICAgICAgIGNvbW1lbnRUZXh0PXtjb21tZW50VGV4dH1cbiAgICAgICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgICAgICBkaWFsb2dNb2RhbFZpc2liaWxpdHkgPSB7ZmFsc2V9XG4gICAgICAgICAgICAgIGlzQ29tbWVudENoYW5nZWQ9e2lzQ29tbWVudENoYW5nZWR9XG4gICAgICAgICAgICAgIGlzVmVyc2VDaGFuZ2VkPXtpc1ZlcnNlQ2hhbmdlZH1cbiAgICAgICAgICAgICAgaXNWZXJzZUVkaXRlZD17aXNWZXJzZUVkaXRlZH1cbiAgICAgICAgICAgICAgaGFuZGxlRWRpdFZlcnNlPXtoYW5kbGVFZGl0VmVyc2V9XG4gICAgICAgICAgICAgIGhhbmRsZUdvVG9OZXh0PXtoYW5kbGVHb1RvTmV4dH1cbiAgICAgICAgICAgICAgaGFuZGxlR29Ub1ByZXZpb3VzPXtoYW5kbGVHb1RvUHJldmlvdXN9XG4gICAgICAgICAgICAgIGhhbmRsZU9wZW5EaWFsb2c9e251bGx9XG4gICAgICAgICAgICAgIGlzVmVyc2VJbnZhbGlkYXRlZD17aXNWZXJzZUludmFsaWRhdGVkfVxuICAgICAgICAgICAgICBoYW5kbGVDbG9zZURpYWxvZz17bnVsbH1cbiAgICAgICAgICAgICAgaGFuZGxlQ29tbWVudD17aGFuZGxlQ29tbWVudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2tpcD17bnVsbH1cbiAgICAgICAgICAgICAgaGFuZGxlVGFnc0NoZWNrYm94PXtoYW5kbGVUYWdzQ2hlY2tib3h9XG4gICAgICAgICAgICAgIGxvY2FsTm90aGluZ1RvU2VsZWN0PXt0ZW1wTm90aGluZ1RvU2VsZWN0fVxuICAgICAgICAgICAgICBtYW5pZmVzdD17bWFuaWZlc3R9XG4gICAgICAgICAgICAgIG1heGltdW1TZWxlY3Rpb25zPXttYXhpbXVtU2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgbW9kZT17bW9kZX1cbiAgICAgICAgICAgICAgbmV3U2VsZWN0aW9ucz17dGVtcFNlbGVjdGlvbnN9XG4gICAgICAgICAgICAgIG5vdGhpbmdUb1NlbGVjdD17Y3VycmVudE5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgb3BlbkFsZXJ0RGlhbG9nPXtvcGVuQWxlcnREaWFsb2d9XG4gICAgICAgICAgICAgIHNhdmVDb21tZW50PXtzYXZlQ29tbWVudH1cbiAgICAgICAgICAgICAgc2F2ZUVkaXRWZXJzZT17c2F2ZUVkaXRWZXJzZX1cbiAgICAgICAgICAgICAgc2F2ZVNlbGVjdGlvbj17X3NhdmVTZWxlY3Rpb259XG4gICAgICAgICAgICAgIHNlbGVjdGlvbnM9e2N1cnJlbnRTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICBzZXRUb29sU2V0dGluZ3M9e3NldFRvb2xTZXR0aW5nc31cbiAgICAgICAgICAgICAgdGFncz17bmV3VGFncyB8fCBbXX1cbiAgICAgICAgICAgICAgdGFyZ2V0QmlibGU9e3RhcmdldEJpYmxlfVxuICAgICAgICAgICAgICB0YXJnZXRMYW5ndWFnZURldGFpbHM9e3RhcmdldExhbmd1YWdlRGV0YWlsc31cbiAgICAgICAgICAgICAgdG9nZ2xlQm9va21hcms9e3RvZ2dsZUJvb2ttYXJrfVxuICAgICAgICAgICAgICB0b2dnbGVOb3RoaW5nVG9TZWxlY3Q9e3RvZ2dsZU5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICAgICAgdG9vbHNTZXR0aW5ncz17dG9vbHNTZXR0aW5nc31cbiAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHQ9e3VuZmlsdGVyZWRWZXJzZVRleHR9XG4gICAgICAgICAgICAgIHZhbGlkYXRlU2VsZWN0aW9ucz17dmFsaWRhdGVTZWxlY3Rpb25zfVxuICAgICAgICAgICAgICB2ZXJzZVRleHQ9e3ZlcnNlVGV4dH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7c2hvd0RvY3VtZW50ICYmIDxUcmFuc2xhdGlvbkhlbHBzXG4gICAgICAgICAgbW9kYWxBcnRpY2xlPXthcnRpY2xlfVxuICAgICAgICAgIGFydGljbGU9e2FydGljbGV9XG4gICAgICAgICAgZXhwYW5kZWRIZWxwc0J1dHRvbkhvdmVyVGV4dD17J0NsaWNrIHRvIHNob3cgZXhwYW5kZWQgaGVscCBwYW5lJ31cbiAgICAgICAgICBtb2RhbFRpdGxlPXsndHJhbnNsYXRpb25IZWxwcyd9XG4gICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgaXNTaG93SGVscHNFeHBhbmRlZD17c2hvd0hlbHBzTW9kYWx9XG4gICAgICAgICAgb3BlbkV4cGFuZGVkSGVscHNNb2RhbD17dG9nZ2xlSGVscHNNb2RhbH1cbiAgICAgICAgICBzaWRlYmFyVG9nZ2xlPXt0b2dnbGVIZWxwc31cbiAgICAgICAgICBpc1Nob3dIZWxwc1NpZGViYXI9e3Nob3dIZWxwc31cbiAgICAgICAgLz59XG4gICAgICAgIHtwb3BvdmVyUHJvcHM/LnBvcG92ZXJWaXNpYmlsaXR5ICYmXG4gICAgICAgICAgPFBvcG92ZXJDb250YWluZXIgey4uLnBvcG92ZXJQcm9wc30gLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA6XG4gICAgICAnV2FpdGluZyBmb3IgRGF0YSdcbiAgKTtcbn07XG5cbkNoZWNrZXIucHJvcFR5cGVzID0ge1xuICBzdHlsZXM6UHJvcFR5cGVzLm9iamVjdCxcbiAgYWxpZ25lZEdsQmlibGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGJpYmxlczogUHJvcFR5cGVzLmFycmF5LFxuICBjaGFuZ2VUYXJnZXRWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoZWNraW5nRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjaGVja1R5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbnRleHRJZDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnbFdvcmRzRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIGluaXRpYWxTZXR0aW5nczogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2F2ZUNoZWNraW5nRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIHNhdmVTZXR0aW5nczogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dEb2N1bWVudDogUHJvcFR5cGVzLmJvb2wsXG4gIHRhcmdldEJpYmxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHRhcmdldExhbmd1YWdlRGV0YWlsczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59O1xuZXhwb3J0IGRlZmF1bHQgQ2hlY2tlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQTBDQSxJQUFBQSxZQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFB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
1378
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXNmbUhlbHBlcnMiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfc2VsZWN0aW9uSGVscGVyIiwiX3Byb3BUeXBlcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfbG9kYXNoIiwiX0dyb3VwTWVudUNvbXBvbmVudCIsIl93b3JkQWxpZ25lckxpYiIsIl9kZWVwRXF1YWwiLCJfdHdBcnRpY2xlSGVscGVycyIsIl9DaGVja0luZm9DYXJkIiwiX3RuQXJ0aWNsZUhlbHBlcnMiLCJfU2NyaXB0dXJlUGFuZSIsIl9Qb3BvdmVyQ29udGFpbmVyIiwiX0Jvb2tzT2ZUaGVCaWJsZSIsIl9jb21wbGV4U2NyaXB0Rm9udHMiLCJfVHJhbnNsYXRpb25IZWxwcyIsInRIZWxwc0hlbHBlcnMiLCJfVmVyc2VDaGVjayIsIl9jaGVja0luZm9DYXJkSGVscGVycyIsImUiLCJfX2VzTW9kdWxlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJzZXQiLCJfdCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJUeXBlRXJyb3IiLCJhIiwidSIsIm5leHQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiZnJvbSIsIl9hcnJheUxpa2VUb0FycmF5Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlN0cmluZyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibCIsImxvY2FsU3R5bGVzIiwiY29udGFpbmVyRGl2IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImhlaWdodCIsImNlbnRlckRpdiIsIm92ZXJmbG93WCIsIm1hcmdpbkxlZnQiLCJzY3JpcHR1cmVQYW5lRGl2IiwiZmxleFNocmluayIsInBhZGRpbmdCb3R0b20iLCJ0cmFuc2xhdGlvbldvcmRzIiwiZXhwb3J0cyIsInRyYW5zbGF0aW9uTm90ZXMiLCJtYXhpbXVtU2VsZWN0aW9ucyIsImNvbnNvbGUiLCJsb2ciLCJDaGVja2VyIiwiX3JlZiIsIl90YXJnZXRMYW5ndWFnZURldGFpbCIsIl90YXJnZXRMYW5ndWFnZURldGFpbDIiLCJfdGFyZ2V0X2xhbmd1YWdlJGJvb2siLCJhbGlnbmVkR2xCaWJsZSIsImJpYmxlc18iLCJiaWJsZXMiLCJjaGFuZ2VkQ3VycmVudENoZWNrIiwiY2hhbmdlVGFyZ2V0VmVyc2UiLCJjaGVja2luZ0RhdGEiLCJjaGVja1R5cGUiLCJjb250ZXh0SWQiLCJnZXRMZXhpY29uRGF0YSIsImdsV29yZHNEYXRhIiwiaW5pdGlhbFNldHRpbmdzIiwic2F2ZUNoZWNraW5nRGF0YSIsInNhdmVTZXR0aW5ncyIsInNob3dEb2N1bWVudCIsInN0eWxlcyIsInRhcmdldEJpYmxlXyIsInRhcmdldEJpYmxlIiwidGFyZ2V0TGFuZ3VhZ2VEZXRhaWxzIiwidHJhbnNsYXRlIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwYW5lU2V0dGluZ3MiLCJwYW5lS2V5U2V0dGluZ3MiLCJ0b29sc1NldHRpbmdzIiwibWFuaWZlc3QiLCJfdXNlU3RhdGUyIiwic2V0dGluZ3MiLCJfc2V0U2V0dGluZ3MiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsInNldEJpYmxlcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2V0VGFyZ2V0QmlibGUiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInRlbXBDaGVja2luZ0RhdGEiLCJzZXRUZW1wQ2hlY2tpbmdEYXRhIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJsb2NhbENoZWNraW5nRGF0YSIsInNldExvY2FsQ2hlY2tpbmdEYXRhIiwiX3VzZVN0YXRlMSIsImFsaWduZWRHTFRleHQiLCJhcnRpY2xlIiwiY3VycmVudENoZWNrIiwiY3VycmVudENoZWNraW5nRGF0YSIsImdyb3VwVGl0bGUiLCJncm91cFBocmFzZSIsImdyb3Vwc0RhdGEiLCJncm91cHNJbmRleCIsImlzQ29tbWVudENoYW5nZWQiLCJpc1ZlcnNlQ2hhbmdlZCIsIm1vZGUiLCJuZXdWZXJzZVRleHQiLCJwb3BvdmVyUHJvcHMiLCJwb3BvdmVyVmlzaWJpbGl0eSIsInNob3dIZWxwc01vZGFsIiwic2hvd0hlbHBzIiwibmV3VGFncyIsInZlcnNlVGV4dCIsIl91c2VTdGF0ZTEwIiwic3RhdGUiLCJfc2V0U3RhdGUiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiZ2V0Q3VycmVudFZhbHVlRm9yIiwia2V5IiwiZ2V0VGVtcFZhbHVlRm9yIiwiY3VycmVudFNlbGVjdGlvbnMiLCJ0ZW1wU2VsZWN0aW9ucyIsInRlbXBOb3RoaW5nVG9TZWxlY3QiLCJjdXJyZW50Tm90aGluZ1RvU2VsZWN0IiwiZ3JvdXBzRGF0YUxvYWRlZCIsInVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zIiwibmV3U2VsZWN0aW9ucyIsIm5vdGhpbmdUb1NlbGVjdCIsIm5vU2VsZWN0aW9ucyIsIm5ld01vZGUiLCJ1c2VFZmZlY3QiLCJoYXZlRGF0YSIsImdyb3Vwc0RhdGFJbml0aWFsaXplZCIsImZsYXR0ZW5lZEdyb3VwRGF0YSIsImdyb3VwRGF0YUhlbHBlcnMiLCJmbGF0dGVuR3JvdXBEYXRhIiwicGFyc2VUblRvSW5kZXgiLCJwYXJzZVR3VG9JbmRleCIsImNoZWNrIiwiZmluZENoZWNrIiwibW9kaWZpZWQiLCJ2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MiLCJpbnZhbGlkYXRlZCIsImNvbmNhdCIsIl9zYXZlQ2hlY2tpbmdEYXRhIiwidXBkYXRlQ29udGV4dCIsInNlbGVjdGlvbnMiLCJuZXdDaGVjayIsImdyb3Vwc0luZGV4XyIsInVuZGVmaW5lZCIsInJlZmVyZW5jZSIsInZlcnNlSGVscGVycyIsImdldFZlcnNlVGV4dEZyb21CaWJsZSIsImdldEFsaWduZWRHTFRleHQiLCJnZXRUaXRsZUZyb21JbmRleCIsImdyb3VwSWQiLCJvY2N1cnJlbmNlTm90ZSIsImdldFBocmFzZUZyb21UdyIsImdyb3VwRGF0YSIsImFydGljbGVzIiwiX2FydGljbGUiLCJhcnRpY2xlSWQiLCJncm91cHNJZHMiLCJfaSIsIl9ncm91cHNJZHMiLCJfZ3JvdXBJZCIsImdyb3VwIiwiY3VycmVudEFydGljbGVNYXJrZG93biIsImNvbnZlcnRNYXJrZG93bkxpbmtzIiwiZ2F0ZXdheUxhbmd1YWdlSWQiLCJjb21tZW50VGV4dCIsImJvb2tJZCIsImJvb2siLCJpZCIsImJvb2tOYW1lIiwiYm9va0RldGFpbHMiLCJ0YXJnZXRMYW5ndWFnZUZvbnQiLCJwcm9qZWN0Rm9udCIsImN1cnJlbnRDb250ZXh0SWQiLCJzZXRUb29sU2V0dGluZ3MiLCJOQU1FU1BBQ0UiLCJmaWVsZE5hbWUiLCJmaWVsZFZhbHVlIiwiX3Rvb2xzU2V0dGluZ3MiLCJjb21wb25lbnRTZXR0aW5ncyIsInNldFNldHRpbmdzIiwiX3NhdmVTZXR0aW5ncyIsIl9zZXR0aW5ncyIsIm5ld1NldHRpbmdzIiwiX3BhbmVTZXR0aW5ncyIsIl9wYW5lU2V0dGluZyIsIl9wYW5lS2V5U2V0dGluZ3MiLCJfaTIiLCJfa2V5cyIsImRvU2F2ZSIsInNldFRvb2xTZXR0aW5nc1NjcmlwdHVyZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwibGFuZ3VhZ2VJZCIsImJpYmxlSWQiLCJvd25lciIsImVyciIsImFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCIsIl9tYW5pZmVzdCIsImFwcFNldHRpbmdzIiwiX2FwcFNldHRpbmdzIiwib3BlbkFsZXJ0RGlhbG9nIiwiY2hlY2tJZlZlcnNlQ2hhbmdlZCIsIl9uZXdWZXJzZVRleHQiLCJ0YXJnZXQiLCJfaXNWZXJzZUNoYW5nZWQiLCJoYW5kbGVFZGl0VmVyc2UiLCJjYW5jZWxFZGl0VmVyc2UiLCJzYXZlRWRpdFZlcnNlIiwiX2N1cnJlbnRDb250ZXh0SWQkcmVmIiwiY2hhcHRlciIsInZlcnNlIiwidmVyc2VSZWYiLCJ2ZXJzZVNwYW4iLCJiZWZvcmUiLCJlZGl0VGFyZ2V0VmVyc2UiLCJoYW5kbGVHb1RvTmV4dCIsIm5leHRDaGVjayIsImZpbmROZXh0Q2hlY2siLCJjaGFuZ2VDdXJyZW50Q2hlY2tfIiwiaGFuZGxlR29Ub1ByZXZpb3VzIiwicHJldmlvdXNDaGVjayIsImZpbmRQcmV2aW91c0NoZWNrIiwiaGFuZGxlVGFnc0NoZWNrYm94IiwidGFnIiwiY3VycmVudFRhZ3MiLCJ0YWdJbmRleCIsImluZGV4T2YiLCJfbmV3VGFncyIsImNvcHkiLCJzcGxpY2UiLCJ2YWxpZGF0ZVNlbGVjdGlvbnMiLCJ2ZXJzZVRleHRfIiwic2VsZWN0aW9uc18iLCJzZWxlY3Rpb25zSGVscGVycyIsInZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zIiwidW5maWx0ZXJlZFZlcnNlVGV4dCIsInVzZU1lbW8iLCJ1bmZpbHRlcmVkVmVyc2VUZXh0XyIsIl90YXJnZXRCaWJsZSRjaGFwdGVyIiwidmVyc2VEYXRhIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJzZXRUZW1wQ2hlY2tpbmdJdGVtIiwibmV3Q2hlY2tpbmdEYXRhIiwiY2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZSIsInRvZ2dsZU5vdGhpbmdUb1NlbGVjdCIsInNlbGVjdCIsIm5ld0NvbnRleHQiLCJub0NoZWNrIiwibmV3Q29udGV4dElkIiwic2VsZWN0aW9uc1VuY2hhbmdlZCIsImlzRXF1YWwiLCJkaXJlY3Rpb24iLCJib29rbWFya0VuYWJsZWQiLCJpc1ZlcnNlRWRpdGVkIiwiaXNWZXJzZUludmFsaWRhdGVkIiwiX3NhdmVTZWxlY3Rpb24iLCJfY2xvbmVEYXRhRm9yU2F2aW5nIiwiY2xvbmVEYXRhRm9yU2F2aW5nIiwiY2hlY2tJbkdyb3Vwc0RhdGEiLCJfY3VycmVudENoZWNrIiwiX25ld0NoZWNraW5nRGF0YSIsImRlbGV0ZVRlbXBDaGVja2luZ0RhdGEiLCJ1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YSIsIl9ncm91cHNEYXRhIiwiXyIsImNsb25lRGVlcCIsImNhdGVnb3J5IiwibmV3Q2hlY2tEYXRhIiwiX2kzIiwiX09iamVjdCRrZXlzIiwibmV3Q2hlY2tpbmdWYWx1ZSIsIl9zYXZlRGF0YSIsIm5ld0RhdGEiLCJfY2xvbmVEYXRhRm9yU2F2aW5nMiIsIl9pNCIsIl9PYmplY3Qka2V5czIiLCJjaGFuZ2VkRGF0YSIsIl9pNSIsIl9PYmplY3Qka2V5czMiLCJfdGVtcENoZWNraW5nRGF0YSIsImNhbmNlbFNlbGVjdGlvbiIsImNsZWFyU2VsZWN0aW9uIiwidG9nZ2xlQm9va21hcmsiLCJyZW1pbmRlcnMiLCJjaGFuZ2VNb2RlIiwiY2hlY2tJZkNvbW1lbnRDaGFuZ2VkIiwibmV3Y29tbWVudCIsIm9sZGNvbW1lbnQiLCJjYW5jZWxDb21tZW50Iiwic2F2ZUNvbW1lbnQiLCJuZXdDb21tZW50IiwiY29tbWVudHMiLCJoYW5kbGVDb21tZW50IiwicHJldmVudERlZmF1bHQiLCJyZWFkeVRvRGlzcGxheUNoZWNrZXIiLCJnZXRMZXhpY29uRGF0YV8iLCJsZXhpY29uSWQiLCJlbnRyeUlkIiwibGV4aWNvbkRhdGEiLCJvbkNsb3NlUG9wb3ZlciIsInNob3dQb3BvdmVyIiwidGl0bGUiLCJib2R5VGV4dCIsInBvc2l0aW9uQ29vcmQiLCJ0b2dnbGVIZWxwc01vZGFsIiwiX3Nob3dIZWxwc01vZGFsIiwidG9nZ2xlSGVscHMiLCJfc2hvd0hlbHBzIiwic2F2ZUJpYmxlVG9LZXkiLCJrZXlHcm91cCIsIm9sZFZlcnNlVGV4dCIsIl9iaWJsZXMiLCJfdGFyZ2V0QmlibGUiLCJ0YXJnZXRCb29rIiwidGFyZ2V0Q2hhcHRlciIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJjdXJyZW50Q2hhcHRlckRhdGEiLCJjdXJyZW50VmVyc2VEYXRhIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwiQWxpZ25tZW50SGVscGVycyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzIiwidXBkYXRlU2V0dGluZ3MiLCJyZW1vdmVVc2ZtTWFya2VycyIsInZlcnNlRWRpdHMiLCJ2YWxpZGF0ZUFsbFNlbGVjdGlvbnNGb3JWZXJzZSIsIl9jdXJyZW50Q2hlY2skY29udGV4dCIsIl9jaGVjayRjb250ZXh0SWQiLCJjdXJyZW50Q2hlY2tJZCIsImNoZWNrSWQiLCJuZXdCaWJsZXMiLCJfdGFyZ2V0QmlibGUkbWFuaWZlc3QiLCJfdGFyZ2V0QmlibGUkbWFuaWZlc3QyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImJpYmxlIiwiTlRfT1JJR19MQU5HIiwiT1RfT1JJR19MQU5HIiwiaW5pdGlhbFBhbmVTZXR0aW5ncyIsImxhbmdLZXkiLCJwYW5lIiwiQ2hlY2tBcmVhIiwiZm9udFNpemUiLCJsYW5ndWFnZV9uYW1lIiwiZHVibGluX2NvcmUiLCJsYW5ndWFnZSIsIl9nZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIiwibGFuZyIsImdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2UiLCJ0YXJnZXRfbGFuZ3VhZ2UiLCJwcm9qZWN0IiwiZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGUiLCJzdHlsZVByb3BzIiwiX2NoZWNrZXJTdHlsZXMiLCJjcmVhdGVFbGVtZW50Iiwic3R5bGUiLCJjaGFuZ2VDdXJyZW50Q29udGV4dElkIiwiY29tcGxleFNjcmlwdEZvbnRzIiwiY3VycmVudFBhbmVTZXR0aW5ncyIsImVkaXRWZXJzZVJlZiIsImdldEF2YWlsYWJsZVNjcmlwdHVyZVBhbmVTZWxlY3Rpb25zIiwibWFrZVN1cmVCaWJsZXNMb2FkZWRGb3JUb29sIiwicHJvamVjdERldGFpbHNSZWR1Y2VyIiwib25FeHBhbmRlZFNjcmlwdHVyZVBhbmVTaG93Iiwib25MaW5rQ2xpY2siLCJvblNlZU1vcmVDbGljayIsInBocmFzZSIsInNlZU1vcmVMYWJlbCIsInNob3dTZWVNb3JlQnV0dG9uIiwiZGlhbG9nTW9kYWxWaXNpYmlsaXR5IiwiaGFuZGxlT3BlbkRpYWxvZyIsImhhbmRsZUNsb3NlRGlhbG9nIiwiaGFuZGxlU2tpcCIsImxvY2FsTm90aGluZ1RvU2VsZWN0Iiwic2F2ZVNlbGVjdGlvbiIsInRhZ3MiLCJtb2RhbEFydGljbGUiLCJleHBhbmRlZEhlbHBzQnV0dG9uSG92ZXJUZXh0IiwibW9kYWxUaXRsZSIsImlzU2hvd0hlbHBzRXhwYW5kZWQiLCJvcGVuRXhwYW5kZWRIZWxwc01vZGFsIiwic2lkZWJhclRvZ2dsZSIsImlzU2hvd0hlbHBzU2lkZWJhciIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJib29sIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGVja2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGUgQ2hlY2tlci5qc1xuICpcbiAqIEBzeW5vcHNpc1xuICogVGhpcyBpcyB0aGUgbWFpbiBjaGVja2luZyBjb21wb25lbnQgdGhhdCBwcm92aWRlcyBhbiBpbnRlZ3JhdGVkIGludGVyZmFjZSBmb3IgQmlibGUgdHJhbnNsYXRpb24gY2hlY2tpbmcuXG4gKiBJdCBzdXBwb3J0cyBib3RoIFRyYW5zbGF0aW9uIE5vdGVzIChUTikgYW5kIFRyYW5zbGF0aW9uIFdvcmRzIChUVykgY2hlY2tpbmcgd29ya2Zsb3dzLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIENoZWNrZXIgY29tcG9uZW50IGlzIGEgY29tcHJlaGVuc2l2ZSB0b29sIGZvciBtYW5hZ2luZyBhbmQgcHJlc2VudGluZyBCaWJsZSBjaGVja2luZyBkYXRhIGFuZCB0cmFuc2xhdGlvbnMuXG4gKiBJdCBoYW5kbGVzOlxuICogLSBMb2FkaW5nIGFuZCBkaXNwbGF5aW5nIGNoZWNraW5nIGRhdGEgKHRyYW5zbGF0aW9uIG5vdGVzIG9yIHRyYW5zbGF0aW9uIHdvcmRzKVxuICogLSBNYW5hZ2luZyB1c2VyIHNlbGVjdGlvbnMgYW5kIGFubm90YXRpb25zIGluIHZlcnNlc1xuICogLSBQcm92aWRpbmcgbXVsdGktcGFuZSBTY3JpcHR1cmUgdmlld2luZyB3aXRoIHZhcmlvdXMgQmlibGUgcmVzb3VyY2VzXG4gKiAtIEhhbmRsaW5nIHZlcnNlIGVkaXRpbmcgYW5kIHZhbGlkYXRpb25cbiAqIC0gTWFuYWdpbmcgY29tbWVudHMsIGJvb2ttYXJrcywgYW5kIHRhZ3MgZm9yIGNoZWNrc1xuICogLSBOYXZpZ2F0aW5nIGJldHdlZW4gY2hlY2tzIChuZXh0L3ByZXZpb3VzKVxuICogLSBEaXNwbGF5aW5nIHRyYW5zbGF0aW9uIGhlbHBzIGluIGFuIGludGVncmF0ZWQgc2lkZWJhclxuICogLSBQZXJzaXN0aW5nIHVzZXIgc2V0dGluZ3MgYW5kIGNoZWNraW5nIHByb2dyZXNzXG4gKlxuICogVGhlIGNvbXBvbmVudCBtYWludGFpbnMgY29tcGxleCBzdGF0ZSBpbmNsdWRpbmc6XG4gKiAtIEN1cnJlbnQgY2hlY2sgZGF0YSBhbmQgY29udGV4dFxuICogLSBVc2VyIHNlbGVjdGlvbnMgYW5kIHRlbXBvcmFyeSBjaGFuZ2VzXG4gKiAtIFBhbmUgc2V0dGluZ3MgZm9yIFNjcmlwdHVyZSBkaXNwbGF5XG4gKiAtIFRvb2wtc3BlY2lmaWMgc2V0dGluZ3NcbiAqIC0gVUkgc3RhdGUgKG1vZGVzLCBtb2RhbHMsIHBvcG92ZXJzKVxuICpcbiAqIEByZXF1aXJlbWVudHNcbiAqIC0gUmVhY3QgMTguMy4xK1xuICogLSB3b3JkLWFsaWduZXItbGliIGZvciB2ZXJzZSBhbmQgYWxpZ25tZW50IGhlbHBlcnNcbiAqIC0gZGVlcC1lcXVhbCBmb3Igb2JqZWN0IGNvbXBhcmlzb25cbiAqIC0gbG9kYXNoIGZvciBkZWVwIGNsb25pbmdcbiAqIC0gTWF0ZXJpYWwtVUkgY29tcG9uZW50cyBmb3IgVUkgZWxlbWVudHNcbiAqXG4gKiBAZGVwZW5kZW5jaWVzXG4gKiAtIEdyb3VwTWVudUNvbXBvbmVudDogTmF2aWdhdGlvbiBtZW51IGZvciBjaGVja3NcbiAqIC0gQ2hlY2tJbmZvQ2FyZDogRGlzcGxheXMgY2hlY2sgdGl0bGUgYW5kIHBocmFzZVxuICogLSBTY3JpcHR1cmVQYW5lOiBNdWx0aS1wYW5lIFNjcmlwdHVyZSB2aWV3ZXJcbiAqIC0gVHJhbnNsYXRpb25IZWxwczogU2lkZWJhciBmb3IgdHJhbnNsYXRpb24gaGVscCBhcnRpY2xlc1xuICogLSBWZXJzZUNoZWNrOiBNYWluIGNoZWNraW5nIGludGVyZmFjZSBmb3IgdmVyc2VzXG4gKiAtIFBvcG92ZXJDb250YWluZXI6IERpc3BsYXlzIGNvbnRleHR1YWwgaW5mb3JtYXRpb25cbiAqL1xuaW1wb3J0IHsgcmVtb3ZlVXNmbU1hcmtlcnMgfSBmcm9tICcuLi91dGlscy91c2ZtSGVscGVycydcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MgfSBmcm9tICcuLi91dGlscy9zZWxlY3Rpb25IZWxwZXInXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgR3JvdXBNZW51Q29tcG9uZW50IGZyb20gJy4vR3JvdXBNZW51Q29tcG9uZW50J1xuaW1wb3J0IHtcbiAgZ3JvdXBEYXRhSGVscGVycyxcbiAgc2VsZWN0aW9uc0hlbHBlcnMsXG4gIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMsXG4gIHZlcnNlSGVscGVycyxcbiAgQWxpZ25tZW50SGVscGVycyxcbn0gZnJvbSAnd29yZC1hbGlnbmVyLWxpYidcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBmaW5kQ2hlY2ssXG4gIGZpbmROZXh0Q2hlY2ssXG4gIGZpbmRQcmV2aW91c0NoZWNrLFxuICBnZXRBbGlnbmVkR0xUZXh0LFxuICBnZXRQaHJhc2VGcm9tVHcsXG4gIGdldFRpdGxlRnJvbUluZGV4LFxuICBwYXJzZVR3VG9JbmRleCxcbn0gZnJvbSAnLi4vaGVscGVycy90cmFuc2xhdGlvbkhlbHBzL3R3QXJ0aWNsZUhlbHBlcnMnXG5pbXBvcnQgQ2hlY2tJbmZvQ2FyZCBmcm9tICcuLi90Y191aV90b29sa2l0L0NoZWNrSW5mb0NhcmQnXG5pbXBvcnQgeyBwYXJzZVRuVG9JbmRleCB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNsYXRpb25IZWxwcy90bkFydGljbGVIZWxwZXJzJ1xuaW1wb3J0IFNjcmlwdHVyZVBhbmUgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9TY3JpcHR1cmVQYW5lJ1xuaW1wb3J0IFBvcG92ZXJDb250YWluZXIgZnJvbSAnLi4vY29udGFpbmVycy9Qb3BvdmVyQ29udGFpbmVyJ1xuaW1wb3J0IHsgTlRfT1JJR19MQU5HLCBPVF9PUklHX0xBTkcgfSBmcm9tICcuLi9jb21tb24vQm9va3NPZlRoZUJpYmxlJ1xuaW1wb3J0IGNvbXBsZXhTY3JpcHRGb250cyBmcm9tICcuLi9jb21tb24vY29tcGxleFNjcmlwdEZvbnRzJ1xuaW1wb3J0IFRyYW5zbGF0aW9uSGVscHMgZnJvbSAnLi4vdGNfdWlfdG9vbGtpdC9UcmFuc2xhdGlvbkhlbHBzJ1xuaW1wb3J0ICogYXMgdEhlbHBzSGVscGVycyBmcm9tICcuLi9oZWxwZXJzL3RIZWxwc0hlbHBlcnMnXG5pbXBvcnQgVmVyc2VDaGVjayBmcm9tICcuLi90Y191aV90b29sa2l0L1ZlcnNlQ2hlY2snXG5pbXBvcnQgeyBnZXRTY3JpcHR1cmVGcm9tUmVmZXJlbmNlIH0gZnJvbSAnLi4vaGVscGVycy9jaGVja0luZm9DYXJkSGVscGVycydcblxuY29uc3QgbG9jYWxTdHlsZXMgPSB7XG4gIGNvbnRhaW5lckRpdjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICB3aWR0aDogJzk3dncnLFxuICAgIGhlaWdodDogJzY1dncnLFxuICB9LFxuICBjZW50ZXJEaXY6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgd2lkdGg6ICc4NSUnLFxuICAgIG92ZXJmbG93WDogJ2F1dG8nLFxuICAgIG1hcmdpbkxlZnQ6ICcxMHB4JyxcbiAgfSxcbiAgc2NyaXB0dXJlUGFuZURpdjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4U2hyaW5rOiAnMCcsXG4gICAgaGVpZ2h0OiAnMjUwcHgnLFxuICAgIHBhZGRpbmdCb3R0b206ICcyMHB4JyxcbiAgfSxcbn1cblxuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9uV29yZHMgPSAndHJhbnNsYXRpb25Xb3JkcydcbmV4cG9ydCBjb25zdCB0cmFuc2xhdGlvbk5vdGVzID0gJ3RyYW5zbGF0aW9uTm90ZXMnXG5jb25zdCBtYXhpbXVtU2VsZWN0aW9ucyA9IDEwXG5cbmNvbnNvbGUubG9nKCdDaGVja2VyLmpzIC0gc3RhcnR1cCcpXG5jb25zdCBuYW1lID0gJ0NoZWNrZXInXG5cbi8qKlxuICogQG5hbWVzcGFjZSBDaGVja2VyXG4gKiBUaGUgQ2hlY2tlciBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGFuZCBwcmVzZW50aW5nIEJpYmxlIGNoZWNraW5nIGRhdGEgYW5kIHRyYW5zbGF0aW9ucy5cbiAqIEl0IGhhbmRsZXMgc3RhdGUgdXBkYXRlcywgc2V0dGluZ3MgbWFuYWdlbWVudCwgYW5kIGVuc3VyZXMgdGhlIG5lY2Vzc2FyeSBkYXRhIGlzIGxvYWRlZCBhbmQgZGlzcGxheWVkIHRvIHRoZSB1c2VyLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzIC0gQW4gb2JqZWN0IHdpdGggaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVycyBmb3IgdGhlIENoZWNrZXIgY29tcG9uZW50LlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuYWxpZ25lZEdsQmlibGUgLSBUaGUgYWxpZ25lZCBHYXRld2F5IExhbmd1YWdlIEJpYmxlIGRhdGEgdXNlZCBmb3IgdHJhbnNsYXRpb25zLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuYmlibGVzIC0gQmlibGUgZGF0YSBmb3IgdmFyaW91cyBsYW5ndWFnZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLmNoYW5nZWRDdXJyZW50Q2hlY2sgLSBjYWxsYmFjayB0byBub3RpZnkgb2YgY2hhbmdlcyBpbiBjb250ZXh0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy5jaGFuZ2VUYXJnZXRWZXJzZSAtIEEgZnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBjdXJyZW50IHZlcnNlIGJlaW5nIGNoZWNrZWQuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5jaGVja2luZ0RhdGEgLSBEYXRhIHJlbGF0ZWQgdG8gY2hlY2tzIChlLmcuLCB0cmFuc2xhdGlvbiBub3RlcyBvciB0cmFuc2xhdGlvbiB3b3JkcykuXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1ldGVycy5jaGVja1R5cGUgLSBUaGUgdHlwZSBvZiBjaGVjayBiZWluZyBwZXJmb3JtZWQgKGUuZy4sIHRyYW5zbGF0aW9uIG5vdGVzLCB0cmFuc2xhdGlvbiB3b3JkcykuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5jb250ZXh0SWQgLSBPYmplY3QgY29udGFpbmluZyBtZXRhZGF0YSBhYm91dCB0aGUgY3VycmVudCBncm91cC92ZXJzZSBiZWluZyB3b3JrZWQgb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLmdldExleGljb25EYXRhIC0gRnVuY3Rpb24gdG8gcmV0cmlldmUgbGV4aWNvbiBkYXRhLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuZ2xXb3Jkc0RhdGEgLSBEYXRhIHJlbGF0ZWQgdG8gR2F0ZXdheSBMYW5ndWFnZSB3b3JkcyBhbmQgYWxpZ25tZW50IGluZm9ybWF0aW9uLlxuICogQHBhcmFtIHtvYmplY3R9IHBhcmFtZXRlcnMuaW5pdGlhbFNldHRpbmdzIC0gVGhlIGluaXRpYWwgY29uZmlndXJhdGlvbiB2YWx1ZXMgZm9yIHRoZSBDaGVja2VyIGNvbXBvbmVudC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuc2F2ZUNoZWNraW5nRGF0YSAtIEZ1bmN0aW9uIHRvIHNhdmUgdGhlIG1vZGlmaWVkIGNoZWNraW5nIGRhdGEuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbWV0ZXJzLnNhdmVTZXR0aW5ncyAtIEZ1bmN0aW9uIHRvIHBlcnNpc3QgdXNlcidzIGNvbXBvbmVudCBzZXR0aW5ncy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHBhcmFtZXRlcnMuc2hvd0RvY3VtZW50IC0gRnVuY3Rpb24gdG8gZGlzcGxheSBhIGRvY3VtZW50IGluIHRoZSBpbnRlcmZhY2UuXG4gKiBAcGFyYW0ge29iamVjdH0gcGFyYW1ldGVycy5zdHlsZXMgLSBTdHlsaW5nIGluZm9ybWF0aW9uIHRvIGN1c3RvbWl6ZSB0aGUgY29tcG9uZW50J3MgYXBwZWFyYW5jZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLnRhcmdldEJpYmxlIC0gVGhlIHRhcmdldCBCaWJsZSBkYXRhIGZvciB0aGUgd29ya2luZyBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbWV0ZXJzLnRhcmdldExhbmd1YWdlRGV0YWlscyAtIE1ldGFkYXRhIGFib3V0IHRoZSB0YXJnZXQgbGFuZ3VhZ2UsIGluY2x1ZGluZyBib29rIGFuZCBsYW5ndWFnZS1zcGVjaWZpYyBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1ldGVycy50cmFuc2xhdGUgLSBBIGZ1bmN0aW9uIHVzZWQgZm9yIHN0cmluZyB0cmFuc2xhdGlvbnMgaW4gdGhlIFVJLlxuICovXG5jb25zdCBDaGVja2VyID0gKHtcbiAgYWxpZ25lZEdsQmlibGUsXG4gIGJpYmxlczogYmlibGVzXyxcbiAgY2hhbmdlZEN1cnJlbnRDaGVjayxcbiAgY2hhbmdlVGFyZ2V0VmVyc2UsXG4gIGNoZWNraW5nRGF0YSxcbiAgY2hlY2tUeXBlLFxuICBjb250ZXh0SWQsXG4gIGdldExleGljb25EYXRhLFxuICBnbFdvcmRzRGF0YSxcbiAgaW5pdGlhbFNldHRpbmdzLFxuICBzYXZlQ2hlY2tpbmdEYXRhLFxuICBzYXZlU2V0dGluZ3MsXG4gIHNob3dEb2N1bWVudCxcbiAgc3R5bGVzLFxuICB0YXJnZXRCaWJsZTogdGFyZ2V0QmlibGVfLFxuICB0YXJnZXRMYW5ndWFnZURldGFpbHMsXG4gIHRyYW5zbGF0ZSxcbn0pID0+IHtcbiAgLy8gTWFpbiBzZXR0aW5ncyBzdGF0ZSAtIGluY2x1ZGVzIHBhbmUgY29uZmlndXJhdGlvbiwgdG9vbCBzZXR0aW5ncywgYW5kIG1hbmlmZXN0IGRhdGFcbiAgY29uc3QgW3NldHRpbmdzLCBfc2V0U2V0dGluZ3NdID0gdXNlU3RhdGUoe1xuICAgIHBhbmVTZXR0aW5nczogW10sXG4gICAgcGFuZUtleVNldHRpbmdzOiB7fSxcbiAgICB0b29sc1NldHRpbmdzOiB7fSxcbiAgICBtYW5pZmVzdDoge30sXG4gIH0pXG4gIGNvbnN0IHsgcGFuZVNldHRpbmdzLCBwYW5lS2V5U2V0dGluZ3MsIHRvb2xzU2V0dGluZ3MsIG1hbmlmZXN0IH0gPSBzZXR0aW5nc1xuXG4gIC8vIEJpYmxlIGRhdGEgb3JnYW5pemVkIGJ5IGxhbmd1YWdlIGFuZCBJRFxuICBjb25zdCBbYmlibGVzLCBzZXRCaWJsZXNdID0gdXNlU3RhdGUoe30pXG5cbiAgLy8gQ3VycmVudCB0YXJnZXQgQmlibGUgYmVpbmcgY2hlY2tlZFxuICBjb25zdCBbdGFyZ2V0QmlibGUsIHNldFRhcmdldEJpYmxlXSA9IHVzZVN0YXRlKHRhcmdldEJpYmxlXylcblxuICAvLyBUZW1wb3JhcnkgY2hlY2tpbmcgZGF0YSBmb3IgdW5zYXZlZCBjaGFuZ2VzXG4gIGNvbnN0IFt0ZW1wQ2hlY2tpbmdEYXRhLCBzZXRUZW1wQ2hlY2tpbmdEYXRhXSA9IHVzZVN0YXRlKG51bGwpXG5cbiAgLy8gTG9jYWwgY2hlY2tpbmcgZGF0YSBmb3IgY3VycmVudCBzZXNzaW9uXG4gIGNvbnN0IFtsb2NhbENoZWNraW5nRGF0YSwgc2V0TG9jYWxDaGVja2luZ0RhdGFdID0gdXNlU3RhdGUobnVsbClcblxuICAvLyBNYWluIGNvbXBvbmVudCBzdGF0ZVxuICBjb25zdCBbc3RhdGUsIF9zZXRTdGF0ZV0gPSB1c2VTdGF0ZSh7XG4gICAgYWxpZ25lZEdMVGV4dDogJycsIC8vIEdhdGV3YXkgTGFuZ3VhZ2UgdGV4dCBhbGlnbmVkIHRvIG9yaWdpbmFsXG4gICAgYXJ0aWNsZTogbnVsbCwgLy8gQ3VycmVudCB0cmFuc2xhdGlvbiBoZWxwIGFydGljbGVcbiAgICBjdXJyZW50Q2hlY2s6IG51bGwsIC8vIEN1cnJlbnQgY2hlY2sgYmVpbmcgd29ya2VkIG9uXG4gICAgY3VycmVudENoZWNraW5nRGF0YTogbnVsbCwgLy8gQWxsIGNoZWNraW5nIGRhdGEgZm9yIGN1cnJlbnQgYm9va1xuICAgIGdyb3VwVGl0bGU6ICcnLCAvLyBUaXRsZSBvZiBjdXJyZW50IGNoZWNrIGdyb3VwXG4gICAgZ3JvdXBQaHJhc2U6ICcnLCAvLyBQaHJhc2Ugb3Igb2NjdXJyZW5jZSBub3RlIGZvciBjdXJyZW50IGNoZWNrXG4gICAgZ3JvdXBzRGF0YTogbnVsbCwgLy8gRmxhdHRlbmVkIGdyb3VwIGRhdGEgZm9yIGFsbCBjaGVja3NcbiAgICBncm91cHNJbmRleDogbnVsbCwgLy8gSW5kZXggb2YgYWxsIGNoZWNrIGdyb3Vwc1xuICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLCAvLyBXaGV0aGVyIGNvbW1lbnQgaGFzIHVuc2F2ZWQgY2hhbmdlc1xuICAgIGlzVmVyc2VDaGFuZ2VkOiBmYWxzZSwgLy8gV2hldGhlciB2ZXJzZSBoYXMgdW5zYXZlZCBjaGFuZ2VzXG4gICAgbW9kZTogJ2RlZmF1bHQnLCAvLyBDdXJyZW50IFVJIG1vZGUgKGRlZmF1bHQsIHNlbGVjdCwgZWRpdCwgY29tbWVudClcbiAgICBuZXdWZXJzZVRleHQ6IG51bGwsIC8vIE5ldyB2ZXJzZSB0ZXh0IGR1cmluZyBlZGl0aW5nXG4gICAgcG9wb3ZlclByb3BzOiB7XG4gICAgICBwb3BvdmVyVmlzaWJpbGl0eTogZmFsc2UsXG4gICAgfSxcbiAgICBzaG93SGVscHNNb2RhbDogZmFsc2UsIC8vIFdoZXRoZXIgaGVscHMgbW9kYWwgaXMgc2hvd25cbiAgICBzaG93SGVscHM6IHRydWUsIC8vIFdoZXRoZXIgaGVscHMgc2lkZWJhciBpcyBzaG93blxuICAgIG5ld1RhZ3M6IG51bGwsIC8vIE5ldyB0YWdzIGJlaW5nIGFkZGVkXG4gICAgdmVyc2VUZXh0OiAnJywgLy8gQ3VycmVudCB2ZXJzZSB0ZXh0XG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGFsaWduZWRHTFRleHQsXG4gICAgYXJ0aWNsZSxcbiAgICBjdXJyZW50Q2hlY2ssXG4gICAgY3VycmVudENoZWNraW5nRGF0YSxcbiAgICBncm91cFRpdGxlLFxuICAgIGdyb3VwUGhyYXNlLFxuICAgIGdyb3Vwc0RhdGEsXG4gICAgZ3JvdXBzSW5kZXgsXG4gICAgaXNDb21tZW50Q2hhbmdlZCxcbiAgICBpc1ZlcnNlQ2hhbmdlZCxcbiAgICBtb2RlLFxuICAgIG5ld1ZlcnNlVGV4dCxcbiAgICBwb3BvdmVyUHJvcHMsXG4gICAgc2hvd0hlbHBzTW9kYWwsXG4gICAgc2hvd0hlbHBzLFxuICAgIG5ld1RhZ3MsXG4gICAgdmVyc2VUZXh0LFxuICB9ID0gc3RhdGVcblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgc3RhdGUgb2JqZWN0IHdpdGggbmV3IHZhbHVlc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBPYmplY3QgY29udGFpbmluZyBzdGF0ZSBwcm9wZXJ0aWVzIHRvIHVwZGF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBfc2V0U3RhdGUocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCBzYXZlZCB2YWx1ZSBmb3IgYSBjaGVjayBwcm9wZXJ0eVxuICAgKiBGYWxscyBiYWNrIHRvIGxvY2FsIGNoZWNraW5nIGRhdGEgaWYgYXZhaWxhYmxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBQcm9wZXJ0eSBuYW1lXG4gICAqIEByZXR1cm5zIHsqfSBDdXJyZW50IHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDdXJyZW50VmFsdWVGb3Ioa2V5KSB7XG4gICAgaWYgKGxvY2FsQ2hlY2tpbmdEYXRhPy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gbG9jYWxDaGVja2luZ0RhdGFba2V5XVxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudENoZWNrPy5ba2V5XVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRlbXBvcmFyeSAodW5zYXZlZCkgdmFsdWUgZm9yIGEgY2hlY2sgcHJvcGVydHlcbiAgICogRmFsbHMgYmFjayB0aHJvdWdoIGxvY2FsIGNoZWNraW5nIGRhdGEgdG8gY3VycmVudCBjaGVja1xuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZVxuICAgKiBAcmV0dXJucyB7Kn0gVGVtcG9yYXJ5IHZhbHVlXG4gICAqL1xuICBmdW5jdGlvbiBnZXRUZW1wVmFsdWVGb3Ioa2V5KSB7XG4gICAgaWYgKHRlbXBDaGVja2luZ0RhdGE/Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIHJldHVybiB0ZW1wQ2hlY2tpbmdEYXRhW2tleV1cbiAgICB9XG4gICAgcmV0dXJuIGdldEN1cnJlbnRWYWx1ZUZvcihrZXkpXG4gIH1cblxuICBjb25zdCBjdXJyZW50U2VsZWN0aW9ucyA9IGdldEN1cnJlbnRWYWx1ZUZvcignc2VsZWN0aW9ucycpIHx8IFtdXG4gIGNvbnN0IHRlbXBTZWxlY3Rpb25zID0gZ2V0VGVtcFZhbHVlRm9yKCdzZWxlY3Rpb25zJykgfHwgW11cbiAgY29uc3QgdGVtcE5vdGhpbmdUb1NlbGVjdCA9IGdldFRlbXBWYWx1ZUZvcignbm90aGluZ1RvU2VsZWN0JylcbiAgY29uc3QgY3VycmVudE5vdGhpbmdUb1NlbGVjdCA9IGdldEN1cnJlbnRWYWx1ZUZvcignbm90aGluZ1RvU2VsZWN0JylcbiAgY29uc3QgZ3JvdXBzRGF0YUxvYWRlZCA9ICEhZ3JvdXBzRGF0YVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBVSSBtb2RlIGJhc2VkIG9uIHNlbGVjdGlvbnMgc3RhdGVcbiAgICogU3dpdGNoZXMgdG8gJ3NlbGVjdCcgbW9kZSBpZiBubyBzZWxlY3Rpb25zIGFuZCBub3RoaW5nIGlzIG1hcmtlZCBhcyB1bnNlbGVjdGFibGVcbiAgICogQHBhcmFtIHtBcnJheX0gbmV3U2VsZWN0aW9ucyAtIEN1cnJlbnQgc2VsZWN0aW9ucyBhcnJheVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vdGhpbmdUb1NlbGVjdCAtIFdoZXRoZXIgdmVyc2UgaXMgbWFya2VkIGFzIGhhdmluZyBub3RoaW5nIHRvIHNlbGVjdFxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlTW9kZUZvclNlbGVjdGlvbnMobmV3U2VsZWN0aW9ucywgbm90aGluZ1RvU2VsZWN0KSB7XG4gICAgY29uc3Qgbm9TZWxlY3Rpb25zID0gIW5ld1NlbGVjdGlvbnM/Lmxlbmd0aFxuICAgIGNvbnN0IG5ld01vZGUgPSBub1NlbGVjdGlvbnMgJiYgIW5vdGhpbmdUb1NlbGVjdCA/ICdzZWxlY3QnIDogJ2RlZmF1bHQnXG4gICAgc2V0U3RhdGUoe1xuICAgICAgbW9kZTogbmV3TW9kZSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEVmZmVjdCBob29rIHRvIGluaXRpYWxpemUgY2hlY2tpbmcgZGF0YSB3aGVuIGNoZWNraW5nRGF0YSBvciBnbFdvcmRzRGF0YSBjaGFuZ2VzXG4gICAqIEZsYXR0ZW5zIGdyb3VwIGRhdGEsIGNyZWF0ZXMgaW5kZXgsIGZpbmRzIGluaXRpYWwgY2hlY2ssIGFuZCB2YWxpZGF0ZXMgYWxsIGNoZWNrc1xuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYXZlRGF0YSA9XG4gICAgICBjaGVja2luZ0RhdGEgJiZcbiAgICAgIE9iamVjdC5rZXlzKGNoZWNraW5nRGF0YSkubGVuZ3RoICYmXG4gICAgICBnbFdvcmRzRGF0YSAmJlxuICAgICAgT2JqZWN0LmtleXMoZ2xXb3Jkc0RhdGEpLmxlbmd0aFxuICAgIGNvbnN0IGdyb3Vwc0RhdGFJbml0aWFsaXplZCA9IGdyb3Vwc0RhdGEgJiYgT2JqZWN0LmtleXMoZ3JvdXBzRGF0YSkubGVuZ3RoXG4gICAgaWYgKGhhdmVEYXRhICYmICFncm91cHNEYXRhSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGxldCBmbGF0dGVuZWRHcm91cERhdGEgPSBudWxsXG4gICAgICBsZXQgZ3JvdXBzSW5kZXggPSBudWxsXG4gICAgICBpZiAoY2hlY2tpbmdEYXRhKSB7XG4gICAgICAgIGZsYXR0ZW5lZEdyb3VwRGF0YSA9IGdyb3VwRGF0YUhlbHBlcnMuZmxhdHRlbkdyb3VwRGF0YShjaGVja2luZ0RhdGEpXG4gICAgICB9XG5cbiAgICAgIGlmIChnbFdvcmRzRGF0YSkge1xuICAgICAgICBpZiAoY2hlY2tUeXBlID09PSB0cmFuc2xhdGlvbk5vdGVzKSB7XG4gICAgICAgICAgZ3JvdXBzSW5kZXggPSBwYXJzZVRuVG9JbmRleChnbFdvcmRzRGF0YSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBncm91cHNJbmRleCA9IHBhcnNlVHdUb0luZGV4KGdsV29yZHNEYXRhKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNoZWNrID0gZmluZENoZWNrKGZsYXR0ZW5lZEdyb3VwRGF0YSwgY29udGV4dElkLCB0cnVlKVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGdyb3Vwc0RhdGE6IGZsYXR0ZW5lZEdyb3VwRGF0YSxcbiAgICAgICAgZ3JvdXBzSW5kZXgsXG4gICAgICAgIGN1cnJlbnRDaGVja2luZ0RhdGE6IGNoZWNraW5nRGF0YSxcbiAgICAgICAgY3VycmVudENoZWNrOiBjaGVjayxcbiAgICAgICAgbW9kaWZpZWQ6IGZhbHNlLFxuICAgICAgICBpc0NvbW1lbnRDaGFuZ2VkOiBmYWxzZSxcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCdkZWJ1ZycsIHRhcmdldEJpYmxlLCBmbGF0dGVuZWRHcm91cERhdGEpXG4gICAgICAvLyB2YWxpZGF0ZSBhbGwgY2hlY2tzXG4gICAgICB2YWxpZGF0ZVNlbGVjdGlvbnNGb3JBbGxDaGVja3MoXG4gICAgICAgIHRhcmdldEJpYmxlLFxuICAgICAgICBmbGF0dGVuZWRHcm91cERhdGEsXG4gICAgICAgIChjaGVjaywgaW52YWxpZGF0ZWQpID0+IHtcbiAgICAgICAgICBpZiAoY2hlY2spIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICBgJHtuYW1lfS1zYXZlRWRpdFZlcnNlIC0gY2hlY2sgdmFsaWRhdGlvbiBjaGFuZ2VkYCxcbiAgICAgICAgICAgICAgY2hlY2tcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIF9zYXZlQ2hlY2tpbmdEYXRhKGNoZWNrLCB7IGludmFsaWRhdGVkIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG5cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuXG4gICAgICBpZiAoZmxhdHRlbmVkR3JvdXBEYXRhICYmIGNoZWNrPy5jb250ZXh0SWQpIHtcbiAgICAgICAgdXBkYXRlQ29udGV4dChjaGVjaywgZ3JvdXBzSW5kZXgpXG4gICAgICAgIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKGNoZWNrPy5zZWxlY3Rpb25zLCBjaGVjaz8ubm90aGluZ1RvU2VsZWN0KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2NvbnRleHRJZCwgY2hlY2tpbmdEYXRhLCBnbFdvcmRzRGF0YV0pXG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIGNvbnRleHQgYW5kIHJlbGF0ZWQgZGF0YSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY2hlY2sgYW5kIGdyb3VwIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gbmV3Q2hlY2sgLSBUaGUgbmV3IGNoZWNrIG9iamVjdCBjb250YWluaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbZ3JvdXBzSW5kZXhfPWdyb3Vwc0luZGV4XSAtIEFuIG9wdGlvbmFsIGdyb3VwIGluZGV4IG9iamVjdCwgZGVmYXVsdHMgdG8gdGhlIGdsb2JhbCB2YXJpYWJsZSBgZ3JvdXBzSW5kZXhgLlxuICAgKiBAcmV0dXJuIHt2b2lkfSBEb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4gVXBkYXRlcyB0aGUgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIHdpdGggbmV3IGNvbnRleHQgZGF0YS5cbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZUNvbnRleHQobmV3Q2hlY2ssIGdyb3Vwc0luZGV4XyA9IGdyb3Vwc0luZGV4KSB7XG4gICAgY29uc3QgY29udGV4dElkID0gbmV3Q2hlY2s/LmNvbnRleHRJZFxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IGNvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgdmVyc2VUZXh0ID0gdmVyc2VIZWxwZXJzLmdldFZlcnNlVGV4dEZyb21CaWJsZSh0YXJnZXRCaWJsZSwgcmVmZXJlbmNlKVxuICAgIGNvbnN0IGFsaWduZWRHTFRleHQgPSBnZXRBbGlnbmVkR0xUZXh0KGFsaWduZWRHbEJpYmxlLCBjb250ZXh0SWQpXG4gICAgY29uc29sZS5sb2coYWxpZ25lZEdMVGV4dClcbiAgICBjb25zdCBncm91cFRpdGxlID0gZ2V0VGl0bGVGcm9tSW5kZXgoZ3JvdXBzSW5kZXhfLCBjb250ZXh0SWQ/Lmdyb3VwSWQpXG4gICAgY29uc3QgZ3JvdXBQaHJhc2UgPVxuICAgICAgY2hlY2tUeXBlID09PSB0cmFuc2xhdGlvbk5vdGVzXG4gICAgICAgID8gY29udGV4dElkPy5vY2N1cnJlbmNlTm90ZVxuICAgICAgICA6IGdldFBocmFzZUZyb21UdyhnbFdvcmRzRGF0YSwgY29udGV4dElkPy5ncm91cElkKVxuXG4gICAgbGV0IGdyb3VwRGF0YVxuICAgIGlmIChnbFdvcmRzRGF0YSkge1xuICAgICAgaWYgKGNoZWNrVHlwZSA9PT0gdHJhbnNsYXRpb25Ob3Rlcykge1xuICAgICAgICBncm91cERhdGEgPSB7XG4gICAgICAgICAgdHJhbnNsYXRlOiB7XG4gICAgICAgICAgICBhcnRpY2xlczogZ2xXb3Jkc0RhdGE/LnRyYW5zbGF0ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncm91cERhdGEgPSB7XG4gICAgICAgICAgLi4uZ2xXb3Jkc0RhdGEsXG4gICAgICAgICAgbWFuaWZlc3Q6IHt9LFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IF9hcnRpY2xlXG4gICAgY29uc3QgYXJ0aWNsZUlkID0gY29udGV4dElkPy5ncm91cElkXG4gICAgY29uc3QgZ3JvdXBzSWRzID0gT2JqZWN0LmtleXMoZ3JvdXBEYXRhKVxuICAgIGZvciAoY29uc3QgX2dyb3VwSWQgb2YgZ3JvdXBzSWRzKSB7XG4gICAgICBjb25zdCBncm91cCA9IGdyb3VwRGF0YVtfZ3JvdXBJZF1cbiAgICAgIGNvbnN0IGFydGljbGVzID0gZ3JvdXA/LmFydGljbGVzIHx8IHt9XG4gICAgICBfYXJ0aWNsZSA9IGFydGljbGVzPy5bYXJ0aWNsZUlkXSB8fCBudWxsXG4gICAgICBpZiAoX2FydGljbGUpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEFydGljbGVNYXJrZG93biA9IHRIZWxwc0hlbHBlcnMuY29udmVydE1hcmtkb3duTGlua3MoXG4gICAgICAgICAgX2FydGljbGUsXG4gICAgICAgICAgZ2F0ZXdheUxhbmd1YWdlSWRcbiAgICAgICAgKVxuICAgICAgICBfYXJ0aWNsZSA9IGN1cnJlbnRBcnRpY2xlTWFya2Rvd25cbiAgICAgICAgLy8gY29uc3QgdEhlbHBzTW9kYWxNYXJrZG93biA9IHRIZWxwc0hlbHBlcnMuY29udmVydE1hcmtkb3duTGlua3MobW9kYWxBcnRpY2xlLCBnYXRld2F5TGFuZ3VhZ2VDb2RlLCBhcnRpY2xlQ2F0ZWdvcnkpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldFN0YXRlKHtcbiAgICAgIGFsaWduZWRHTFRleHQsXG4gICAgICBjdXJyZW50Q2hlY2s6IG5ld0NoZWNrLFxuICAgICAgdmVyc2VUZXh0LFxuICAgICAgZ3JvdXBUaXRsZSxcbiAgICAgIGdyb3VwUGhyYXNlLFxuICAgICAgYXJ0aWNsZTogX2FydGljbGUsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnRUZXh0ID0gZ2V0Q3VycmVudFZhbHVlRm9yKCdjb21tZW50cycpIHx8ICcnXG4gIGNvbnN0IGJvb2tJZCA9IHRhcmdldExhbmd1YWdlRGV0YWlscz8uYm9vaz8uaWRcbiAgY29uc3QgYm9va05hbWUgPSB0YXJnZXRMYW5ndWFnZURldGFpbHM/LmJvb2s/Lm5hbWVcbiAgY29uc3QgYm9va0RldGFpbHMgPSB7XG4gICAgaWQ6IGJvb2tJZCxcbiAgICBuYW1lOiBib29rTmFtZSxcbiAgfVxuICBjb25zdCBnYXRld2F5TGFuZ3VhZ2VJZCA9IHRhcmdldExhbmd1YWdlRGV0YWlscz8uZ2F0ZXdheUxhbmd1YWdlSWRcbiAgY29uc3QgdGFyZ2V0TGFuZ3VhZ2VGb250ID0gbWFuaWZlc3Q/LnByb2plY3RGb250IHx8ICcnXG4gIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSBjdXJyZW50Q2hlY2s/LmNvbnRleHRJZFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRvb2wtc3BlY2lmaWMgc2V0dGluZ3MgYW5kIHBlcnNpc3RzIHRoZW1cbiAgICogQHBhcmFtIHtzdHJpbmd9IE5BTUVTUEFDRSAtIFRvb2wgbmFtZXNwYWNlIChlLmcuLCAnU2NyaXB0dXJlUGFuZScpXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZE5hbWUgLSBTZXR0aW5nIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWVsZFZhbHVlIC0gU2V0dGluZyB2YWx1ZVxuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBmaWVsZFZhbHVlKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzICR7ZmllbGROYW1lfT0ke2ZpZWxkVmFsdWV9YClcbiAgICBpZiAodG9vbHNTZXR0aW5ncykge1xuICAgICAgLy8gRGVlcCBjbG9uaW5nIG9iamVjdCB0byBhdm9pZCBtb2RpZnlpbmcgb3JpZ2luYWwgb2JqZWN0XG4gICAgICBjb25zdCBfdG9vbHNTZXR0aW5ncyA9IHsgLi4udG9vbHNTZXR0aW5ncyB9XG4gICAgICBsZXQgY29tcG9uZW50U2V0dGluZ3MgPSBfdG9vbHNTZXR0aW5ncz8uW05BTUVTUEFDRV1cbiAgICAgIGlmICghY29tcG9uZW50U2V0dGluZ3MpIHtcbiAgICAgICAgY29tcG9uZW50U2V0dGluZ3MgPSB7fVxuICAgICAgICBfdG9vbHNTZXR0aW5nc1tOQU1FU1BBQ0VdID0gY29tcG9uZW50U2V0dGluZ3NcbiAgICAgIH1cbiAgICAgIGNvbXBvbmVudFNldHRpbmdzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlXG4gICAgICBzZXRTZXR0aW5ncyh7IHRvb2xzU2V0dGluZ3M6IF90b29sc1NldHRpbmdzIH0sIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3RzIHNldHRpbmdzIHRvIHN0b3JhZ2UgYWZ0ZXIgcmVtb3ZpbmcgQmlibGUgZGF0YSB0byByZWR1Y2Ugc2l6ZVxuICAgKiBDcmVhdGVzIHNoYWxsb3cgY29waWVzIHRvIGF2b2lkIG1vZGlmeWluZyBvcmlnaW5hbCBvYmplY3RzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfc2V0dGluZ3MgLSBTZXR0aW5ncyBvYmplY3QgdG8gc2F2ZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gX3NhdmVTZXR0aW5ncyhfc2V0dGluZ3MpIHtcbiAgICBpZiAoc2F2ZVNldHRpbmdzICYmIF9zZXR0aW5ncykge1xuICAgICAgY29uc3QgbmV3U2V0dGluZ3MgPSB7IC4uLl9zZXR0aW5ncyB9XG4gICAgICBkZWxldGUgbmV3U2V0dGluZ3MubWFuaWZlc3RcbiAgICAgIGNvbnN0IF9wYW5lU2V0dGluZ3MgPSBbLi4ubmV3U2V0dGluZ3MucGFuZVNldHRpbmdzXVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBfcGFuZVNldHRpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IF9wYW5lU2V0dGluZyA9IHsgLi4uX3BhbmVTZXR0aW5nc1tpXSB9IC8vIHNoYWxsb3cgY29weVxuICAgICAgICBpZiAoX3BhbmVTZXR0aW5nPy5ib29rKSB7XG4gICAgICAgICAgZGVsZXRlIF9wYW5lU2V0dGluZy5ib29rIC8vIHJlbW92ZSBhbGwgdGhlIGJvb2sgZGF0YSBiZWZvcmUgc2F2aW5nXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5nc1tpXSA9IF9wYW5lU2V0dGluZ1xuICAgICAgfVxuICAgICAgbmV3U2V0dGluZ3MucGFuZVNldHRpbmdzID0gX3BhbmVTZXR0aW5nc1xuXG4gICAgICBjb25zdCBfcGFuZUtleVNldHRpbmdzID0geyAuLi5uZXdTZXR0aW5ncy5wYW5lS2V5U2V0dGluZ3MgfVxuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKF9wYW5lS2V5U2V0dGluZ3MpXG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGNvbnN0IF9wYW5lU2V0dGluZyA9IHsgLi4uX3BhbmVLZXlTZXR0aW5nc1trZXldIH0gLy8gc2hhbGxvdyBjb3B5XG4gICAgICAgIGlmIChfcGFuZVNldHRpbmc/LmJvb2spIHtcbiAgICAgICAgICBkZWxldGUgX3BhbmVTZXR0aW5nLmJvb2sgLy8gcmVtb3ZlIGFsbCB0aGUgYm9vayBkYXRhIGJlZm9yZSBzYXZpbmdcbiAgICAgICAgfVxuICAgICAgICBfcGFuZUtleVNldHRpbmdzW2tleV0gPSBfcGFuZVNldHRpbmdcbiAgICAgIH1cbiAgICAgIG5ld1NldHRpbmdzLnBhbmVLZXlTZXR0aW5ncyA9IF9wYW5lS2V5U2V0dGluZ3NcblxuICAgICAgc2F2ZVNldHRpbmdzKG5ld1NldHRpbmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHNldHRpbmdzIHN0YXRlIGFuZCBvcHRpb25hbGx5IHBlcnNpc3RzIHRoZW1cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1NldHRpbmdzIC0gTmV3IHNldHRpbmdzIHRvIG1lcmdlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG9TYXZlIC0gV2hldGhlciB0byBwZXJzaXN0IHNldHRpbmdzXG4gICAqL1xuICBmdW5jdGlvbiBzZXRTZXR0aW5ncyhuZXdTZXR0aW5ncywgZG9TYXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBfc2V0dGluZ3MgPSB7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIC4uLm5ld1NldHRpbmdzLFxuICAgIH1cblxuICAgIF9zZXRTZXR0aW5ncyhfc2V0dGluZ3MpXG4gICAgZG9TYXZlICYmIF9zYXZlU2V0dGluZ3MoX3NldHRpbmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgU2NyaXB0dXJlIHBhbmUgc2V0dGluZ3Mgd2l0aCBuZXcgcGFuZSBjb25maWd1cmF0aW9uc1xuICAgKiBNYWludGFpbnMgYSBrZXktYmFzZWQgbG9va3VwIGZvciBwYW5lIHNldHRpbmdzIGJ5IGxhbmd1YWdlL2JpYmxlL293bmVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBOQU1FU1BBQ0UgLSBUb29sIG5hbWVzcGFjZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmllbGROYW1lIC0gU2V0dGluZyBmaWVsZCBuYW1lXG4gICAqIEBwYXJhbSB7QXJyYXl9IF9wYW5lU2V0dGluZ3MgLSBBcnJheSBvZiBwYW5lIHNldHRpbmcgb2JqZWN0c1xuICAgKi9cbiAgY29uc3Qgc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlID0gKE5BTUVTUEFDRSwgZmllbGROYW1lLCBfcGFuZVNldHRpbmdzKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2V0VG9vbFNldHRpbmdzU2NyaXB0dXJlICR7ZmllbGROYW1lfWAsIF9wYW5lU2V0dGluZ3MpXG4gICAgY29uc3QgX3BhbmVLZXlTZXR0aW5ncyA9IHsgLi4ucGFuZUtleVNldHRpbmdzIH1cblxuICAgIGZvciAoY29uc3QgcGFuZVNldHRpbmdzIG9mIF9wYW5lU2V0dGluZ3MpIHtcbiAgICAgIGNvbnN0IGxhbmd1YWdlSWQgPSBwYW5lU2V0dGluZ3M/Lmxhbmd1YWdlSWRcbiAgICAgIGNvbnN0IGtleSA9IGAke2xhbmd1YWdlSWR9LyR7cGFuZVNldHRpbmdzPy5iaWJsZUlkfS8ke3BhbmVTZXR0aW5ncz8ub3duZXJ9YFxuICAgICAgX3BhbmVLZXlTZXR0aW5nc1trZXldID0gcGFuZVNldHRpbmdzXG4gICAgfVxuXG4gICAgY29uc3QgX3NldHRpbmdzID0ge1xuICAgICAgcGFuZVNldHRpbmdzOiBfcGFuZVNldHRpbmdzLFxuICAgICAgcGFuZUtleVNldHRpbmdzOiBfcGFuZUtleVNldHRpbmdzLFxuICAgIH1cblxuICAgIHNldFNldHRpbmdzKF9zZXR0aW5ncywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgcHJvcGVydHkgdG8gdGhlIG1hbmlmZXN0IGFuZCBhcHAgc2V0dGluZ3NcbiAgICogVXNlZCBmb3IgcGVyc2lzdGluZyB1c2VyIHByZWZlcmVuY2VzIGxpa2UgZm9udHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkTmFtZSAtIFByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWVsZFZhbHVlIC0gUHJvcGVydHkgdmFsdWVcbiAgICovXG4gIGNvbnN0IGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCA9IChmaWVsZE5hbWUsIGZpZWxkVmFsdWUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGAke25hbWV9LWFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdCAke2ZpZWxkTmFtZX09JHtmaWVsZFZhbHVlfWBcbiAgICApXG4gICAgaWYgKG1hbmlmZXN0KSB7XG4gICAgICBjb25zdCBfbWFuaWZlc3QgPSB7XG4gICAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgICBbZmllbGROYW1lXTogZmllbGRWYWx1ZSxcbiAgICAgIH1cblxuICAgICAgLy8gYWxzbyBzYXZlIHRoaXMgaW4gYXBwU2V0dGluZ3NcbiAgICAgIGNvbnN0IGFwcFNldHRpbmdzID0gc2V0dGluZ3MuYXBwU2V0dGluZ3MgfHwge31cbiAgICAgIGNvbnN0IF9hcHBTZXR0aW5ncyA9IHtcbiAgICAgICAgLi4uYXBwU2V0dGluZ3MsXG4gICAgICAgIFtmaWVsZE5hbWVdOiBmaWVsZFZhbHVlLFxuICAgICAgfVxuXG4gICAgICBzZXRTZXR0aW5ncyhcbiAgICAgICAge1xuICAgICAgICAgIG1hbmlmZXN0OiBfbWFuaWZlc3QsXG4gICAgICAgICAgYXBwU2V0dGluZ3M6IF9hcHBTZXR0aW5ncyxcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIC8vIEV2ZW50IGhhbmRsZXJzIGZvciB2YXJpb3VzIHVzZXIgYWN0aW9uc1xuXG4gIC8qKlxuICAgKiBPcGVucyBhbiBhbGVydCBkaWFsb2cgKHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uKVxuICAgKi9cbiAgY29uc3Qgb3BlbkFsZXJ0RGlhbG9nID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LW9wZW5BbGVydERpYWxvZ2ApIC8vIFRPRE8gLSBmbGVzaCBvdXRcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdmVyc2UgY29udGVudCBoYXMgY2hhbmdlZCBmcm9tIG9yaWdpbmFsXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudFxuICAgKi9cbiAgY29uc3QgY2hlY2tJZlZlcnNlQ2hhbmdlZCA9IGUgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWNoZWNrSWZWZXJzZUNoYW5nZWRgKVxuICAgIGNvbnN0IF9uZXdWZXJzZVRleHQgPSBlLnRhcmdldC52YWx1ZVxuICAgIGNvbnN0IF9pc1ZlcnNlQ2hhbmdlZCA9IF9uZXdWZXJzZVRleHQgIT09IHZlcnNlVGV4dFxuICAgIHNldFN0YXRlKHsgaXNWZXJzZUNoYW5nZWQ6IF9pc1ZlcnNlQ2hhbmdlZCB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdmVyc2UgdGV4dCBlZGl0aW5nXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudCB3aXRoIG5ldyB2ZXJzZSB0ZXh0XG4gICAqL1xuICBjb25zdCBoYW5kbGVFZGl0VmVyc2UgPSBlID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1oYW5kbGVFZGl0VmVyc2VgKVxuICAgIGNvbnN0IF9uZXdWZXJzZVRleHQgPSBlLnRhcmdldC52YWx1ZVxuICAgIHNldFN0YXRlKHsgbmV3VmVyc2VUZXh0OiBfbmV3VmVyc2VUZXh0IH0pXG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyB2ZXJzZSBlZGl0aW5nIGFuZCByZXNldHMgc3RhdGVcbiAgICovXG4gIGNvbnN0IGNhbmNlbEVkaXRWZXJzZSA9ICgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jYW5jZWxFZGl0VmVyc2VgKVxuICAgIHNldFN0YXRlKHsgbmV3VmVyc2VUZXh0OiBudWxsLCBuZXdUYWdzOiBbXSwgbW9kZTogJ2RlZmF1bHQnIH0pXG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgZWRpdGVkIHZlcnNlIHRleHQgYW5kIHVwZGF0ZXMgYWxpZ25tZW50c1xuICAgKiBNYXJrcyBjaGVjayBhcyBoYXZpbmcgdmVyc2UgZWRpdHNcbiAgICovXG4gIGNvbnN0IHNhdmVFZGl0VmVyc2UgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2F2ZUVkaXRWZXJzZWApXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gY3VycmVudENvbnRleHRJZC5yZWZlcmVuY2VcbiAgICBjb25zdCB2ZXJzZVJlZiA9IGN1cnJlbnRDb250ZXh0SWQudmVyc2VTcGFuIHx8IHZlcnNlIC8vIGlmIGluIHZlcnNlIHNwYW4sIHVzZSBpdFxuICAgIGNvbnN0IGJlZm9yZSA9IHRhcmdldEJpYmxlW2NoYXB0ZXJdW3ZlcnNlUmVmXVxuXG4gICAgc2V0U3RhdGUoe1xuICAgICAgbmV3VmVyc2VUZXh0OiBudWxsLFxuICAgICAgbmV3VGFnczogW10sXG4gICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgICBpc1ZlcnNlQ2hhbmdlZDogZmFsc2UsXG4gICAgfSlcbiAgICBlZGl0VGFyZ2V0VmVyc2UoY2hhcHRlciwgdmVyc2VSZWYsIGJlZm9yZSwgbmV3VmVyc2VUZXh0KVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgbmV4dCBjaGVjayBpbiB0aGUgc2VxdWVuY2VcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUdvVG9OZXh0KCkge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWhhbmRsZUdvVG9OZXh0YClcbiAgICBjb25zdCBuZXh0Q2hlY2sgPSBmaW5kTmV4dENoZWNrKGdyb3Vwc0RhdGEsIGN1cnJlbnRDb250ZXh0SWQsIGZhbHNlKVxuICAgIGNoYW5nZUN1cnJlbnRDaGVja18obmV4dENoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgY2hlY2sgaW4gdGhlIHNlcXVlbmNlXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVHb1RvUHJldmlvdXMoKSB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0taGFuZGxlR29Ub1ByZXZpb3VzYClcbiAgICBjb25zdCBwcmV2aW91c0NoZWNrID0gZmluZFByZXZpb3VzQ2hlY2soZ3JvdXBzRGF0YSwgY3VycmVudENvbnRleHRJZCwgZmFsc2UpXG4gICAgY2hhbmdlQ3VycmVudENoZWNrXyhwcmV2aW91c0NoZWNrLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgY2hlY2tib3ggY2hhbmdlcyBmb3IgdGFnc1xuICAgKiBBZGRzIG9yIHJlbW92ZXMgdGFncyBmcm9tIHRoZSBjdXJyZW50IGxpc3RcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIFRhZyBpZGVudGlmaWVyXG4gICAqL1xuICBjb25zdCBoYW5kbGVUYWdzQ2hlY2tib3ggPSB0YWcgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWhhbmRsZVRhZ3NDaGVja2JveGAsIHRhZylcbiAgICBjb25zdCBjdXJyZW50VGFncyA9IG5ld1RhZ3MgfHwgW11cbiAgICBjb25zdCB0YWdJbmRleCA9IGN1cnJlbnRUYWdzLmluZGV4T2YodGFnKVxuICAgIGxldCBfbmV3VGFnc1xuXG4gICAgaWYgKHRhZ0luZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGNvcHkgPSBjdXJyZW50VGFncy5zbGljZSgwKVxuICAgICAgY29weS5zcGxpY2UodGFnSW5kZXgsIDEpXG4gICAgICBfbmV3VGFncyA9IGNvcHlcbiAgICB9IGVsc2Uge1xuICAgICAgX25ld1RhZ3MgPSBbLi4uY3VycmVudFRhZ3MsIHRhZ11cbiAgICB9XG5cbiAgICBzZXRTdGF0ZSh7IG5ld1RhZ3M6IF9uZXdUYWdzIH0pXG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHNlbGVjdGlvbnMgYWdhaW5zdCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVRleHRfIC0gVmVyc2UgdGV4dCB0byB2YWxpZGF0ZSBhZ2FpbnN0XG4gICAqIEBwYXJhbSB7QXJyYXl9IHNlbGVjdGlvbnNfIC0gU2VsZWN0aW9ucyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBzZWxlY3Rpb25zIGFyZSB2YWxpZFxuICAgKi9cbiAgY29uc3QgdmFsaWRhdGVTZWxlY3Rpb25zID0gKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdmFsaWRhdGVTZWxlY3Rpb25zYCwgc2VsZWN0aW9uc18pXG4gICAgcmV0dXJuIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlVmVyc2VTZWxlY3Rpb25zKHZlcnNlVGV4dF8sIHNlbGVjdGlvbnNfKVxuICB9XG5cbiAgLyoqXG4gICAqIE1lbW9pemVkIGNvbXB1dGF0aW9uIG9mIHVuZmlsdGVyZWQgdmVyc2UgdGV4dCBpbmNsdWRpbmcgVVNGTSBtYXJrZXJzXG4gICAqIFVzZWQgZm9yIGRpc3BsYXlpbmcgYW5kIGVkaXRpbmcgY29tcGxldGUgdmVyc2UgZGF0YVxuICAgKi9cbiAgY29uc3QgdW5maWx0ZXJlZFZlcnNlVGV4dCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGxldCB1bmZpbHRlcmVkVmVyc2VUZXh0XyA9ICcnXG4gICAgY29uc3QgcmVmZXJlbmNlID0gY3VycmVudENvbnRleHRJZD8ucmVmZXJlbmNlXG4gICAgY29uc3QgY2hhcHRlciA9IHJlZmVyZW5jZT8uY2hhcHRlclxuICAgIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICAgIGlmIChjaGFwdGVyICYmIHZlcnNlKSB7XG4gICAgICBjb25zdCB2ZXJzZURhdGEgPSB0YXJnZXRCaWJsZT8uW2NoYXB0ZXJdPy5bdmVyc2VdXG4gICAgICBpZiAodmVyc2VEYXRhKSB7XG4gICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID0gdmVyc2VEYXRhXG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2VEYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHVuZmlsdGVyZWRWZXJzZVRleHRfID1cbiAgICAgICAgICAgIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh2ZXJzZURhdGEpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5maWx0ZXJlZFZlcnNlVGV4dF9cbiAgfSwgW3RhcmdldEJpYmxlLCBjdXJyZW50Q29udGV4dElkXSlcblxuICAvKipcbiAgICogU2V0cyBhIHRlbXBvcmFyeSB2YWx1ZSBmb3IgYSBjaGVja2luZyBkYXRhIHByb3BlcnR5XG4gICAqIFVzZWQgZm9yIHRyYWNraW5nIHVuc2F2ZWQgY2hhbmdlc1xuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gUHJvcGVydHkgbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlIC0gUHJvcGVydHkgdmFsdWVcbiAgICovXG4gIGNvbnN0IHNldFRlbXBDaGVja2luZ0l0ZW0gPSAoa2V5LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0NoZWNraW5nRGF0YSA9IHRlbXBDaGVja2luZ0RhdGEgPyB7IC4uLnRlbXBDaGVja2luZ0RhdGEgfSA6IHt9XG4gICAgbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSB2YWx1ZVxuICAgIHNldFRlbXBDaGVja2luZ0RhdGEobmV3Q2hlY2tpbmdEYXRhKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgc2VsZWN0aW9ucyBpbiB0ZW1wb3Jhcnkgc3RhdGUgd2l0aG91dCBzYXZpbmdcbiAgICogQHBhcmFtIHtBcnJheX0gc2VsZWN0aW9ucyAtIE5ldyBzZWxlY3Rpb25zIGFycmF5XG4gICAqL1xuICBjb25zdCBjaGFuZ2VTZWxlY3Rpb25zSW5Mb2NhbFN0YXRlID0gc2VsZWN0aW9ucyA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZWAsIHNlbGVjdGlvbnMpXG4gICAgc2V0VGVtcENoZWNraW5nSXRlbSgnc2VsZWN0aW9ucycsIHNlbGVjdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgXCJub3RoaW5nIHRvIHNlbGVjdFwiIGZsYWcgZm9yIGN1cnJlbnQgY2hlY2tcbiAgICogQHBhcmFtIHtib29sZWFufSBzZWxlY3QgLSBOZXcgc3RhdGUgdmFsdWVcbiAgICovXG4gIGNvbnN0IHRvZ2dsZU5vdGhpbmdUb1NlbGVjdCA9IHNlbGVjdCA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tdG9nZ2xlTm90aGluZ1RvU2VsZWN0YCwgc2VsZWN0KVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ25vdGhpbmdUb1NlbGVjdCcsIHNlbGVjdClcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IGNoZWNrIGJlaW5nIHdvcmtlZCBvblxuICAgKiBWYWxpZGF0ZXMgZm9yIHVuc2F2ZWQgY2hhbmdlcyBiZWZvcmUgc3dpdGNoaW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdDb250ZXh0IC0gTmV3IGNoZWNrIGNvbnRleHRcbiAgICogQHBhcmFtIHtib29sZWFufSBub0NoZWNrIC0gU2tpcCB2YWxpZGF0aW9uIGlmIHRydWVcbiAgICovXG4gIGNvbnN0IGNoYW5nZUN1cnJlbnRDaGVja18gPSAobmV3Q29udGV4dCwgbm9DaGVjayA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgbmV3Q29udGV4dElkID0gbmV3Q29udGV4dD8uY29udGV4dElkXG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlQ3VycmVudENvbnRleHRJZGAsIG5ld0NvbnRleHRJZClcblxuICAgIGNvbnN0IHNlbGVjdGlvbnNVbmNoYW5nZWQgPSBpc0VxdWFsKGN1cnJlbnRTZWxlY3Rpb25zLCB0ZW1wU2VsZWN0aW9ucylcbiAgICBpZiAobm9DaGVjayB8fCBzZWxlY3Rpb25zVW5jaGFuZ2VkKSB7XG4gICAgICBpZiAobmV3Q29udGV4dElkKSB7XG4gICAgICAgIGxldCBjaGVjayA9IGZpbmRDaGVjayhncm91cHNEYXRhLCBuZXdDb250ZXh0SWQsIGZhbHNlKVxuICAgICAgICB1cGRhdGVDb250ZXh0KG5ld0NvbnRleHQpXG4gICAgICAgIGlmIChjaGVjaykge1xuICAgICAgICAgIHNldExvY2FsQ2hlY2tpbmdEYXRhKG51bGwpXG4gICAgICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShudWxsKVxuICAgICAgICAgIHVwZGF0ZU1vZGVGb3JTZWxlY3Rpb25zKGNoZWNrLnNlbGVjdGlvbnMsIGNoZWNrLm5vdGhpbmdUb1NlbGVjdClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygnQ2hlY2tlci5jaGFuZ2VDdXJyZW50Q29udGV4dElkIC0gdW5zYXZlZCBjaGFuZ2VzJylcbiAgICB9XG4gICAgY2hhbmdlZEN1cnJlbnRDaGVjayAmJiBjaGFuZ2VkQ3VycmVudENoZWNrKG5ld0NvbnRleHQpXG4gIH1cblxuICBjb25zdCBkaXJlY3Rpb24gPSAnbHRyJ1xuICBjb25zdCBib29rbWFya0VuYWJsZWQgPSBnZXRDdXJyZW50VmFsdWVGb3IoJ3JlbWluZGVycycpXG4gIGNvbnN0IGlzVmVyc2VFZGl0ZWQgPSAhIWdldEN1cnJlbnRWYWx1ZUZvcigndmVyc2VFZGl0cycpXG4gIGNvbnN0IGlzVmVyc2VJbnZhbGlkYXRlZCA9ICEhZ2V0Q3VycmVudFZhbHVlRm9yKCdpbnZhbGlkYXRlZCcpXG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIGN1cnJlbnQgY2hlY2sgYmVpbmcgd29ya2VkIG9uXG4gICAqIFZhbGlkYXRlcyBmb3IgdW5zYXZlZCBjaGFuZ2VzIGJlZm9yZSBzd2l0Y2hpbmdcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld0NvbnRleHQgLSBOZXcgY2hlY2sgY29udGV4dFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG5vQ2hlY2sgLSBTa2lwIHZhbGlkYXRpb24gaWYgdHJ1ZVxuICAgKi9cbiAgY29uc3QgX3NhdmVTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVTZWxlY3Rpb24gcGVyc2lzdCB0byBmaWxlYClcbiAgICBjb25zdCB7IGNoZWNrSW5Hcm91cHNEYXRhLCBfY3VycmVudENoZWNrLCBuZXdTdGF0ZSwgX25ld0NoZWNraW5nRGF0YSB9ID1cbiAgICAgIGNsb25lRGF0YUZvclNhdmluZygpXG5cbiAgICBpZiAoX2N1cnJlbnRDaGVjayAmJiBuZXdTdGF0ZSkge1xuICAgICAgaWYgKHRlbXBOb3RoaW5nVG9TZWxlY3QpIHtcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5ub3RoaW5nVG9TZWxlY3QgPSB0ZW1wTm90aGluZ1RvU2VsZWN0XG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuc2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEuaW52YWxpZGF0ZWQgPSBmYWxzZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRlbXBTZWxlY3Rpb25zLmxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgX25ld0NoZWNraW5nRGF0YS5zZWxlY3Rpb25zID0gZmFsc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhLnNlbGVjdGlvbnMgPSB0ZW1wU2VsZWN0aW9uc1xuICAgICAgICB9XG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGEubm90aGluZ1RvU2VsZWN0ID0gZmFsc2VcbiAgICAgICAgX25ld0NoZWNraW5nRGF0YS5pbnZhbGlkYXRlZCA9IGZhbHNlXG4gICAgICAgIFxuICAgICAgfVxuXG4gICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShfbmV3Q2hlY2tpbmdEYXRhKVxuICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnbm90aGluZ1RvU2VsZWN0JylcbiAgICAgIGRlbGV0ZVRlbXBDaGVja2luZ0RhdGEoJ3NlbGVjdGlvbnMnKVxuICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnaW52YWxpZGF0ZWQnKVxuXG4gICAgICB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShcbiAgICAgICAgX2N1cnJlbnRDaGVjayxcbiAgICAgICAgY2hlY2tJbkdyb3Vwc0RhdGEsXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGFcbiAgICAgIClcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICBzYXZlQ2hlY2tpbmdEYXRhICYmIHNhdmVDaGVja2luZ0RhdGEobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsb25lcyBjdXJyZW50IGRhdGEgc3RydWN0dXJlcyBmb3Igc2F2aW5nIG1vZGlmaWNhdGlvbnNcbiAgICogQ3JlYXRlcyBkZWVwIGNvcGllcyB0byBhdm9pZCBtdXRhdGluZyBvcmlnaW5hbCBzdGF0ZVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyBjbG9uZWQgZGF0YSBzdHJ1Y3R1cmVzXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjbG9uZURhdGFGb3JTYXZpbmcoKSB7XG4gICAgY29uc3QgX2dyb3Vwc0RhdGEgPSBfLmNsb25lRGVlcChncm91cHNEYXRhKVxuICAgIGNvbnN0IGNoZWNrSW5Hcm91cHNEYXRhID0gZmluZENoZWNrKF9ncm91cHNEYXRhLCBjdXJyZW50Q29udGV4dElkKVxuICAgIGxldCBfY3VycmVudENoZWNrXG4gICAgbGV0IG5ld1N0YXRlXG4gICAgbGV0IF9uZXdDaGVja2luZ0RhdGFcbiAgICBpZiAoY2hlY2tJbkdyb3Vwc0RhdGEpIHtcbiAgICAgIC8vIHNhdmUgdGhlIHNlbGVjdGlvbiBjaGFuZ2VzXG4gICAgICBjb25zdCBjYXRlZ29yeSA9IGNoZWNrSW5Hcm91cHNEYXRhLmNhdGVnb3J5XG4gICAgICBjb25zdCBuZXdDaGVja0RhdGEgPSBfLmNsb25lRGVlcChjdXJyZW50Q2hlY2tpbmdEYXRhKVxuICAgICAgX2N1cnJlbnRDaGVjayA9IGZpbmRDaGVjayhuZXdDaGVja0RhdGFbY2F0ZWdvcnldLCBjdXJyZW50Q29udGV4dElkLCBmYWxzZSlcbiAgICAgIG5ld1N0YXRlID0ge1xuICAgICAgICBjdXJyZW50Q2hlY2tpbmdEYXRhOiBuZXdDaGVja0RhdGEsXG4gICAgICAgIGN1cnJlbnRDaGVjazogX2N1cnJlbnRDaGVjayxcbiAgICAgICAgZ3JvdXBzRGF0YTogX2dyb3Vwc0RhdGEsXG4gICAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgICAgbW9kaWZpZWQ6IHRydWUsXG4gICAgICB9XG4gICAgICBfbmV3Q2hlY2tpbmdEYXRhID0gbG9jYWxDaGVja2luZ0RhdGEgPyB7IC4uLmxvY2FsQ2hlY2tpbmdEYXRhIH0gOiB7fVxuICAgIH1cbiAgICByZXR1cm4geyBjaGVja0luR3JvdXBzRGF0YSwgX2N1cnJlbnRDaGVjaywgbmV3U3RhdGUsIF9uZXdDaGVja2luZ0RhdGEgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgbXVsdGlwbGUgcHJvcGVydGllcyBpbiBjaGVjayBkYXRhIG9iamVjdHNcbiAgICogTW9kaWZpZXMgYm90aCB0aGUgY3VycmVudCBjaGVjayBhbmQgZ3JvdXBzIGRhdGFcbiAgICogQHBhcmFtIHtvYmplY3R9IF9jdXJyZW50Q2hlY2sgLSBDdXJyZW50IGNoZWNrIG9iamVjdFxuICAgKiBAcGFyYW0ge29iamVjdH0gY2hlY2tJbkdyb3Vwc0RhdGEgLSBDaGVjayBpbiBncm91cHMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQHBhcmFtIHtvYmplY3R9IF9uZXdDaGVja2luZ0RhdGEgLSBOZXcgZGF0YSB0byBhcHBseVxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlVmFsdWVzSW5DaGVja0RhdGEoXG4gICAgX2N1cnJlbnRDaGVjayxcbiAgICBjaGVja0luR3JvdXBzRGF0YSxcbiAgICBfbmV3Q2hlY2tpbmdEYXRhXG4gICkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKF9uZXdDaGVja2luZ0RhdGEpKSB7XG4gICAgICBjb25zdCBuZXdDaGVja2luZ1ZhbHVlID0gX25ld0NoZWNraW5nRGF0YVtrZXldXG4gICAgICBfY3VycmVudENoZWNrW2tleV0gPSBuZXdDaGVja2luZ1ZhbHVlXG4gICAgICBjaGVja0luR3JvdXBzRGF0YVtrZXldID0gbmV3Q2hlY2tpbmdWYWx1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0cyBtdWx0aXBsZSBjaGVjayBwcm9wZXJ0eSBjaGFuZ2VzIHRvIGZpbGVcbiAgICogQ2xvbmVzIGRhdGEsIGFwcGxpZXMgY2hhbmdlcywgdXBkYXRlcyBzdGF0ZSwgYW5kIHNhdmVzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdEYXRhIC0gT2JqZWN0IHdpdGggcHJvcGVydHkgbmFtZXMgYW5kIHZhbHVlcyB0byB1cGRhdGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGNvbnN0IF9zYXZlRGF0YSA9IG5ld0RhdGEgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LV9zYXZlRGF0YSBwZXJzaXN0IHRvIGZpbGVgKVxuICAgIGNvbnN0IHsgY2hlY2tJbkdyb3Vwc0RhdGEsIF9jdXJyZW50Q2hlY2ssIG5ld1N0YXRlLCBfbmV3Q2hlY2tpbmdEYXRhIH0gPVxuICAgICAgY2xvbmVEYXRhRm9yU2F2aW5nKClcblxuICAgIGlmIChfY3VycmVudENoZWNrICYmIG5ld1N0YXRlKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuZXdEYXRhKSkge1xuICAgICAgICBfbmV3Q2hlY2tpbmdEYXRhW2tleV0gPSBuZXdEYXRhW2tleV1cbiAgICAgICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YShrZXkpXG4gICAgICB9XG4gICAgICBzZXRMb2NhbENoZWNraW5nRGF0YShfbmV3Q2hlY2tpbmdEYXRhKVxuXG4gICAgICB1cGRhdGVWYWx1ZXNJbkNoZWNrRGF0YShcbiAgICAgICAgX2N1cnJlbnRDaGVjayxcbiAgICAgICAgY2hlY2tJbkdyb3Vwc0RhdGEsXG4gICAgICAgIF9uZXdDaGVja2luZ0RhdGFcbiAgICAgIClcblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICBzYXZlQ2hlY2tpbmdEYXRhICYmIHNhdmVDaGVja2luZ0RhdGEobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmVzIGNoYW5nZXMgdG8gYSBzcGVjaWZpYyBjaGVjayAobWF5IG5vdCBiZSBjdXJyZW50IGNoZWNrKVxuICAgKiBPbmx5IHNhdmVzIGlmIGRhdGEgYWN0dWFsbHkgY2hhbmdlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gY2hlY2sgLSBDaGVjayBvYmplY3QgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdEYXRhIC0gTmV3IGRhdGEgdG8gYXBwbHlcbiAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgZGF0YSB3YXMgY2hhbmdlZFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgY29uc3QgX3NhdmVDaGVja2luZ0RhdGEgPSAoY2hlY2ssIG5ld0RhdGEpID0+IHtcbiAgICBsZXQgY2hhbmdlZERhdGEgPSBmYWxzZVxuICAgIGlmIChjaGVjaykge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobmV3RGF0YSkpIHtcbiAgICAgICAgaWYgKGNoZWNrW2tleV0gIT09IG5ld0RhdGFba2V5XSkge1xuICAgICAgICAgIGNoZWNrW2tleV0gPSBuZXdEYXRhW2tleV1cbiAgICAgICAgICBjaGFuZ2VkRGF0YSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlZERhdGEpIHtcbiAgICAgICAgY29uc29sZS5sb2coYCR7bmFtZX0tX3NhdmVDaGVja2luZ0RhdGEgcGVyc2lzdCBjaGFuZ2VzIHRvIGZpbGVgLCBjaGVjaylcbiAgICAgICAgY29uc3QgbmV3Q2hlY2tpbmdEYXRhID0ge1xuICAgICAgICAgIGN1cnJlbnRDaGVjazogY2hlY2ssXG4gICAgICAgIH1cbiAgICAgICAgc2F2ZUNoZWNraW5nRGF0YSAmJiBzYXZlQ2hlY2tpbmdEYXRhKG5ld0NoZWNraW5nRGF0YSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoYW5nZWREYXRhXG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBhIHByb3BlcnR5IGZyb20gdGVtcG9yYXJ5IGNoZWNraW5nIGRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFByb3BlcnR5IG5hbWUgdG8gcmVtb3ZlXG4gICAqL1xuICBmdW5jdGlvbiBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKGtleSkge1xuICAgIGlmICh0ZW1wQ2hlY2tpbmdEYXRhPy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBjb25zdCBfdGVtcENoZWNraW5nRGF0YSA9IHsgLi4udGVtcENoZWNraW5nRGF0YSB9XG4gICAgICBkZWxldGUgX3RlbXBDaGVja2luZ0RhdGFba2V5XVxuICAgICAgc2V0VGVtcENoZWNraW5nRGF0YShfdGVtcENoZWNraW5nRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBzZWxlY3Rpb24gbW9kZSB3aXRob3V0IHNhdmluZyBjaGFuZ2VzXG4gICAqL1xuICBjb25zdCBjYW5jZWxTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsU2VsZWN0aW9uYClcbiAgICBkZWxldGVUZW1wQ2hlY2tpbmdEYXRhKCdzZWxlY3Rpb25zJylcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBtb2RlOiAnZGVmYXVsdCcsXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIGN1cnJlbnQgc2VsZWN0aW9uc1xuICAgKi9cbiAgY29uc3QgY2xlYXJTZWxlY3Rpb24gPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2xlYXJTZWxlY3Rpb25gKVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ3NlbGVjdGlvbnMnLCBbXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIGJvb2ttYXJrL3JlbWluZGVyIGZsYWcgZm9yIGN1cnJlbnQgY2hlY2tcbiAgICovXG4gIGNvbnN0IHRvZ2dsZUJvb2ttYXJrID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LXRvZ2dsZUJvb2ttYXJrYClcbiAgICBfc2F2ZURhdGEoe1xuICAgICAgcmVtaW5kZXJzOiAhZ2V0VGVtcFZhbHVlRm9yKCdyZW1pbmRlcnMnKSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZXMgdGhlIFVJIG1vZGUgKGRlZmF1bHQsIHNlbGVjdCwgZWRpdCwgY29tbWVudClcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGUgLSBOZXcgbW9kZSBpZGVudGlmaWVyXG4gICAqL1xuICBjb25zdCBjaGFuZ2VNb2RlID0gbW9kZSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2hhbmdlTW9kZWAsIG1vZGUpXG4gICAgc2V0U3RhdGUoeyBtb2RlIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGNvbW1lbnQgdGV4dCBoYXMgY2hhbmdlZCBmcm9tIHNhdmVkIHZhbHVlXG4gICAqIEBwYXJhbSB7RXZlbnR9IGUgLSBJbnB1dCBldmVudFxuICAgKi9cbiAgZnVuY3Rpb24gY2hlY2tJZkNvbW1lbnRDaGFuZ2VkKGUpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1jaGVja0lmQ29tbWVudENoYW5nZWRgKVxuICAgIGNvbnN0IG5ld2NvbW1lbnQgPSBlLnRhcmdldC52YWx1ZSB8fCAnJ1xuICAgIGNvbnN0IG9sZGNvbW1lbnQgPSBjb21tZW50VGV4dCB8fCAnJ1xuICAgIGNvbnN0IGlzQ29tbWVudENoYW5nZWQgPSBuZXdjb21tZW50ICE9PSBvbGRjb21tZW50XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQ2FuY2VscyBjb21tZW50IGVkaXRpbmcgd2l0aG91dCBzYXZpbmdcbiAgICovXG4gIGNvbnN0IGNhbmNlbENvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tY2FuY2VsQ29tbWVudGApXG4gICAgZGVsZXRlVGVtcENoZWNraW5nRGF0YSgnY29tbWVudHMnKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogU2F2ZXMgY29tbWVudCBjaGFuZ2VzIHRvIHBlcnNpc3RlbnQgc3RvcmFnZVxuICAgKi9cbiAgY29uc3Qgc2F2ZUNvbW1lbnQgPSAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYCR7bmFtZX0tc2F2ZUNvbW1lbnRgKVxuICAgIGNvbnN0IG5ld0NvbW1lbnQgPSBnZXRUZW1wVmFsdWVGb3IoJ2NvbW1lbnRzJylcbiAgICBfc2F2ZURhdGEoeyBjb21tZW50czogbmV3Q29tbWVudCB9KVxuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vZGU6ICdkZWZhdWx0JyxcbiAgICAgIGlzQ29tbWVudENoYW5nZWQ6IGZhbHNlLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBjb21tZW50IHRleHQgY2hhbmdlc1xuICAgKiBAcGFyYW0ge0V2ZW50fSBlIC0gSW5wdXQgZXZlbnQgd2l0aCBuZXcgY29tbWVudFxuICAgKi9cbiAgY29uc3QgaGFuZGxlQ29tbWVudCA9IGUgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWhhbmRsZUNvbW1lbnRgKVxuICAgIGNvbnN0IG5ld0NvbW1lbnQgPSBlLnRhcmdldC52YWx1ZVxuICAgIHNldFRlbXBDaGVja2luZ0l0ZW0oJ2NvbW1lbnRzJywgbmV3Q29tbWVudClcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBpc0NvbW1lbnRDaGFuZ2VkOiB0cnVlLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCByZWFkeVRvRGlzcGxheUNoZWNrZXIgPVxuICAgIGdyb3Vwc0RhdGEgJiYgZ3JvdXBzSW5kZXggJiYgY3VycmVudENvbnRleHRJZCAmJiB2ZXJzZVRleHRcblxuICAvKipcbiAgICogV3JhcHBlciBmb3IgZ2V0TGV4aWNvbkRhdGEgY2FsbGJhY2sgd2l0aCBsb2dnaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXhpY29uSWQgLSBMZXhpY29uIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudHJ5SWQgLSBFbnRyeSBpZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IExleGljb24gZGF0YVxuICAgKi9cbiAgY29uc3QgZ2V0TGV4aWNvbkRhdGFfID0gKGxleGljb25JZCwgZW50cnlJZCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LWdldExleGljb25EYXRhX2AsIHsgbGV4aWNvbklkLCBlbnRyeUlkIH0pXG4gICAgY29uc3QgbGV4aWNvbkRhdGEgPSBnZXRMZXhpY29uRGF0YSAmJiBnZXRMZXhpY29uRGF0YShsZXhpY29uSWQsIGVudHJ5SWQpXG4gICAgcmV0dXJuIGxleGljb25EYXRhXG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSBwb3BvdmVyIGRpc3BsYXlcbiAgICovXG4gIGNvbnN0IG9uQ2xvc2VQb3BvdmVyID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGAke25hbWV9LW9uQ2xvc2VQb3BvdmVyYClcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBwb3BvdmVyUHJvcHM6IHtcbiAgICAgICAgcG9wb3ZlclZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgcG9wb3ZlciB3aXRoIHRpdGxlIGFuZCBjb250ZW50IGF0IHNwZWNpZmllZCBwb3NpdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBQb3BvdmVyIHRpdGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBib2R5VGV4dCAtIFBvcG92ZXIgY29udGVudFxuICAgKiBAcGFyYW0ge29iamVjdH0gcG9zaXRpb25Db29yZCAtIFBvc2l0aW9uIGNvb3JkaW5hdGVzXG4gICAqL1xuICBjb25zdCBzaG93UG9wb3ZlciA9ICh0aXRsZSwgYm9keVRleHQsIHBvc2l0aW9uQ29vcmQpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgJHtuYW1lfS1zaG93UG9wb3ZlcmAsIHRpdGxlKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHBvcG92ZXJQcm9wczoge1xuICAgICAgICBwb3BvdmVyVmlzaWJpbGl0eTogdHJ1ZSxcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIGJvZHlUZXh0LFxuICAgICAgICBwb3NpdGlvbkNvb3JkLFxuICAgICAgICBvbkNsb3NlUG9wb3ZlcjogKCkgPT4gb25DbG9zZVBvcG92ZXIoKSxcbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBleHBhbmRlZCB0cmFuc2xhdGlvbiBoZWxwcyBtb2RhbFxuICAgKi9cbiAgY29uc3QgdG9nZ2xlSGVscHNNb2RhbCA9ICgpID0+IHtcbiAgICBjb25zdCBfc2hvd0hlbHBzTW9kYWwgPSAhc2hvd0hlbHBzTW9kYWxcbiAgICBzZXRTdGF0ZSh7XG4gICAgICBzaG93SGVscHNNb2RhbDogX3Nob3dIZWxwc01vZGFsLFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdHJhbnNsYXRpb24gaGVscHMgc2lkZWJhciB2aXNpYmlsaXR5XG4gICAqL1xuICBjb25zdCB0b2dnbGVIZWxwcyA9ICgpID0+IHtcbiAgICBjb25zdCBfc2hvd0hlbHBzID0gIXNob3dIZWxwc1xuICAgIHNldFN0YXRlKHtcbiAgICAgIHNob3dIZWxwczogX3Nob3dIZWxwcyxcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBCaWJsZSBib29rIHRvIHRoZSBiaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQ3JlYXRlcyBsYW5ndWFnZSBncm91cCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBiaWJsZXMgLSBCaWJsZXMgZGF0YSBzdHJ1Y3R1cmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIExhbmd1YWdlIGtleVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVJZCAtIEJpYmxlIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIHtvYmplY3R9IGJvb2sgLSBCb29rIGRhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVCaWJsZVRvS2V5KGJpYmxlcywga2V5LCBiaWJsZUlkLCBib29rKSB7XG4gICAgbGV0IGtleUdyb3VwID0gYmlibGVzW2tleV1cbiAgICBpZiAoIWtleUdyb3VwKSB7XG4gICAgICAvLyBpZiBncm91cCBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIG5ld1xuICAgICAga2V5R3JvdXAgPSB7fVxuICAgICAgYmlibGVzW2tleV0gPSBrZXlHcm91cFxuICAgIH1cbiAgICBrZXlHcm91cFtiaWJsZUlkXSA9IGJvb2tcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHZlcnNlIGNvbnRlbnQgaW4gdGFyZ2V0IEJpYmxlXG4gICAqIEhhbmRsZXMgVVNGTSBjb252ZXJzaW9uLCBhbGlnbm1lbnQgdXBkYXRlcywgYW5kIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXIgLSBDaGFwdGVyIG51bWJlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2UgLSBWZXJzZSBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9sZFZlcnNlVGV4dCAtIE9yaWdpbmFsIHZlcnNlIHRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dCAtIE5ldyB2ZXJzZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBlZGl0VGFyZ2V0VmVyc2UoY2hhcHRlciwgdmVyc2UsIG9sZFZlcnNlVGV4dCwgbmV3VmVyc2VUZXh0KSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBgZWRpdFRhcmdldFZlcnNlICR7Y2hhcHRlcn06JHt2ZXJzZX0gLSBjaGFuZ2VkIHRvICR7bmV3VmVyc2VUZXh0fWBcbiAgICApXG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gZmlyc3QgdXBkYXRlIGNvbXBvbmVudCBzdGF0ZVxuXG4gICAgY29uc3QgX2JpYmxlcyA9IFsuLi5iaWJsZXNfXVxuICAgIGNvbnN0IF90YXJnZXRCaWJsZSA9IHsgLi4uX2JpYmxlc1swXSB9XG4gICAgX2JpYmxlc1swXSA9IF90YXJnZXRCaWJsZVxuICAgIGNvbnN0IHRhcmdldEJvb2sgPSB7IC4uLl90YXJnZXRCaWJsZT8uYm9vayB9XG4gICAgX3RhcmdldEJpYmxlLmJvb2sgPSB0YXJnZXRCb29rXG4gICAgY29uc3QgdGFyZ2V0Q2hhcHRlciA9IHsgLi4udGFyZ2V0Qm9va1tjaGFwdGVyXSB9XG4gICAgdGFyZ2V0Qm9va1tjaGFwdGVyXSA9IHRhcmdldENoYXB0ZXJcbiAgICB0YXJnZXRDaGFwdGVyW3ZlcnNlXSA9IG5ld1ZlcnNlVGV4dFxuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIG5vdyBhcHBseSBuZXcgdmVyc2UgdGV4dCB0byBzZWxlY3RlZCBhbGlnbmVkIHZlcnNlIGFuZCBjYWxsIGJhY2sgdG8gZXh0ZW5zaW9uIHRvIHNhdmVcblxuICAgIGxldCBfbmV3VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0XG4gICAgaWYgKHR5cGVvZiBfbmV3VmVyc2VUZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgX25ld1ZlcnNlVGV4dCA9XG4gICAgICAgIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShfbmV3VmVyc2VUZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyRGF0YSA9IHRhcmdldEJpYmxlPy5bY2hhcHRlcl1cbiAgICBjb25zdCBjdXJyZW50VmVyc2VEYXRhID0gY3VycmVudENoYXB0ZXJEYXRhPy5bdmVyc2VdXG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9XG4gICAgICBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKFxuICAgICAgICBjdXJyZW50VmVyc2VEYXRhLFxuICAgICAgICBfbmV3VmVyc2VUZXh0XG4gICAgICApXG4gICAgdGFyZ2V0Q2hhcHRlclt2ZXJzZV0gPSB7IHZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzIH0gLy8gc2F2ZVxuXG4gICAgdXBkYXRlU2V0dGluZ3MoX2JpYmxlcywgdGFyZ2V0Qm9vaylcblxuICAgIGNvbnN0IHZlcnNlVGV4dCA9IHJlbW92ZVVzZm1NYXJrZXJzKF9uZXdWZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VUZXh0LFxuICAgIH0pXG5cbiAgICBjaGFuZ2VUYXJnZXRWZXJzZSAmJlxuICAgICAgY2hhbmdlVGFyZ2V0VmVyc2UoY2hhcHRlciwgdmVyc2UsIG5ld1ZlcnNlVGV4dCwgdGFyZ2V0VmVyc2VPYmplY3RzKVxuICAgIF9zYXZlRGF0YSh7IHZlcnNlRWRpdHM6IHRydWUgfSlcblxuICAgIGNvbnN0IF9ncm91cHNEYXRhID0gXy5jbG9uZURlZXAoZ3JvdXBzRGF0YSlcbiAgICBsZXQgY2hhbmdlZERhdGEgPSBmYWxzZVxuICAgIHNlbGVjdGlvbnNIZWxwZXJzLnZhbGlkYXRlQWxsU2VsZWN0aW9uc0ZvclZlcnNlKFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgYm9va0lkLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHZlcnNlLFxuICAgICAgX2dyb3Vwc0RhdGEsXG4gICAgICAoY2hlY2ssIGludmFsaWRhdGVkKSA9PiB7XG4gICAgICAgIGlmIChjaGVjaykge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRDaGVja0lkID0gY3VycmVudENoZWNrPy5jb250ZXh0SWQ/LmNoZWNrSWRcbiAgICAgICAgICBjb25zdCBjaGVja0lkID0gY2hlY2s/LmNvbnRleHRJZD8uY2hlY2tJZFxuXG4gICAgICAgICAgaWYgKGNoZWNrSWQgPT09IGN1cnJlbnRDaGVja0lkKSB7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIHVwZGF0ZSBjdXJyZW50IGNoZWNrXG4gICAgICAgICAgICBfc2F2ZURhdGEoe1xuICAgICAgICAgICAgICBpbnZhbGlkYXRlZCxcbiAgICAgICAgICAgICAgdmVyc2VFZGl0czogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgJHtuYW1lfS1lZGl0VGFyZ2V0VmVyc2UgLSBjaGVjayB2YWxpZGF0ZWQsIHN0YXRlIGNoYW5nZWQ6IGludmFsaWQ6ICR7aW52YWxpZGF0ZWR9YCxcbiAgICAgICAgICAgIGNoZWNrXG4gICAgICAgICAgKVxuICAgICAgICAgIGNoYW5nZWREYXRhID1cbiAgICAgICAgICAgIGNoYW5nZWREYXRhIHx8XG4gICAgICAgICAgICBfc2F2ZUNoZWNraW5nRGF0YShjaGVjaywgeyBpbnZhbGlkYXRlZCwgdmVyc2VFZGl0czogdHJ1ZSB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuXG4gICAgaWYgKGNoYW5nZWREYXRhKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYCR7bmFtZX0tZWRpdFRhcmdldFZlcnNlIC0gY2hhbmdlcyBkZXRlY3RlZCB1cGRhdGluZyBncm91cHNEYXRhYFxuICAgICAgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBncm91cHNEYXRhOiBfZ3JvdXBzRGF0YSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgc2V0dGluZ3Mgd2l0aCBuZXcgQmlibGUgZGF0YSBhbmQgcGFuZSBjb25maWd1cmF0aW9uc1xuICAgKiBPcmdhbml6ZXMgQmlibGVzIGJ5IGxhbmd1YWdlIGFuZCBpbml0aWFsaXplcyBwYW5lIHNldHRpbmdzXG4gICAqIEBwYXJhbSB7QXJyYXl9IG5ld0JpYmxlcyAtIEFycmF5IG9mIEJpYmxlIG9iamVjdHNcbiAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldEJpYmxlIC0gVGFyZ2V0IEJpYmxlIGRhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVNldHRpbmdzKG5ld0JpYmxlcywgdGFyZ2V0QmlibGUpIHtcbiAgICBjb25zdCBfYmlibGVzID0ge31cbiAgICBsZXQgX3BhbmVTZXR0aW5ncyA9IFtdXG4gICAgY29uc3QgX3BhbmVLZXlTZXR0aW5ncyA9IGluaXRpYWxTZXR0aW5ncz8ucGFuZUtleVNldHRpbmdzIHx8IHt9XG4gICAgaWYgKG5ld0JpYmxlcz8ubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IGJpYmxlIG9mIG5ld0JpYmxlcykge1xuICAgICAgICBsZXQgbGFuZ3VhZ2VJZCA9IGJpYmxlPy5sYW5ndWFnZUlkXG4gICAgICAgIGNvbnN0IG93bmVyID0gYmlibGU/Lm93bmVyXG4gICAgICAgIGNvbnN0IGJvb2sgPSBiaWJsZT8uYm9va1xuICAgICAgICBjb25zdCBiaWJsZUlkID0gYmlibGU/LmJpYmxlSWRcbiAgICAgICAgaWYgKGxhbmd1YWdlSWQgPT09IE5UX09SSUdfTEFORyB8fCBsYW5ndWFnZUlkID09PSBPVF9PUklHX0xBTkcpIHtcbiAgICAgICAgICBsYW5ndWFnZUlkID0gJ29yaWdpbmFsTGFuZ3VhZ2UnXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5ID0gYCR7bGFuZ3VhZ2VJZH0vJHtiaWJsZUlkfS8ke293bmVyfWBcbiAgICAgICAgY29uc3QgaW5pdGlhbFBhbmVTZXR0aW5ncyA9IF9wYW5lS2V5U2V0dGluZ3M/LltrZXldXG4gICAgICAgIGNvbnN0IGxhbmdLZXkgPSBgJHtsYW5ndWFnZUlkfV8ke293bmVyfWBcbiAgICAgICAgc2F2ZUJpYmxlVG9LZXkoX2JpYmxlcywgbGFuZ0tleSwgYmlibGVJZCwgYm9vaylcbiAgICAgICAgc2F2ZUJpYmxlVG9LZXkoX2JpYmxlcywgbGFuZ3VhZ2VJZCwgYmlibGVJZCwgYm9vaykgLy8gYWxzbyBzYXZlIGFzIGRlZmF1bHQgZm9yIGxhbmd1YWdlIHdpdGhvdXQgb3duZXJcbiAgICAgICAgY29uc3QgcGFuZSA9IGluaXRpYWxQYW5lU2V0dGluZ3MgfHwge1xuICAgICAgICAgIC4uLmJpYmxlLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgIH1cbiAgICAgICAgX3BhbmVTZXR0aW5ncy5wdXNoKHBhbmUpXG4gICAgICAgIGlmICghaW5pdGlhbFBhbmVTZXR0aW5ncykge1xuICAgICAgICAgIF9wYW5lS2V5U2V0dGluZ3Nba2V5XSA9IHBhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfcGFuZVNldHRpbmdzID0gW11cbiAgICB9XG5cbiAgICBjb25zdCBfdG9vbHNTZXR0aW5ncyA9IGluaXRpYWxTZXR0aW5ncz8udG9vbHNTZXR0aW5ncyB8fCB7XG4gICAgICBDaGVja0FyZWE6IHtcbiAgICAgICAgZm9udFNpemU6IDEwMCxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgbGV0IF9tYW5pZmVzdCA9IGluaXRpYWxTZXR0aW5ncz8ubWFuaWZlc3QgfHwge1xuICAgICAgbGFuZ3VhZ2VfbmFtZTpcbiAgICAgICAgdGFyZ2V0QmlibGU/Lm1hbmlmZXN0Py5kdWJsaW5fY29yZT8ubGFuZ3VhZ2U/LnRpdGxlIHx8ICdDdXJyZW50JyxcbiAgICAgIHByb2plY3RGb250OiB0YXJnZXRCaWJsZT8ubWFuaWZlc3Q/LnByb2plY3RGb250IHx8ICcnLFxuICAgIH1cblxuICAgIGNvbnN0IGFwcFNldHRpbmdzID0gaW5pdGlhbFNldHRpbmdzPy5hcHBTZXR0aW5ncyB8fCB7fVxuICAgIF9tYW5pZmVzdCA9IHtcbiAgICAgIC4uLl9tYW5pZmVzdCxcbiAgICAgIC4uLmFwcFNldHRpbmdzLCAvLyBvbGRlciBjb2RlIGlzIGxvb2tpbmcgZm9yIGFwcFNldHRpbmdzIGluIG1hbmlmZXN0XG4gICAgfVxuXG4gICAgc2V0QmlibGVzKF9iaWJsZXMpXG4gICAgc2V0VGFyZ2V0QmlibGUodGFyZ2V0QmlibGUpXG4gICAgc2V0U2V0dGluZ3MoXG4gICAgICB7XG4gICAgICAgIHBhbmVTZXR0aW5nczogX3BhbmVTZXR0aW5ncyxcbiAgICAgICAgcGFuZUtleVNldHRpbmdzOiBfcGFuZUtleVNldHRpbmdzLFxuICAgICAgICB0b29sc1NldHRpbmdzOiBfdG9vbHNTZXR0aW5ncyxcbiAgICAgICAgbWFuaWZlc3Q6IF9tYW5pZmVzdCxcbiAgICAgICAgbmV3Q29tbWVudDogJycsXG4gICAgICAgIGFwcFNldHRpbmdzLFxuICAgICAgfSxcbiAgICAgIGZhbHNlXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgZm9yIGdldFNjcmlwdHVyZUZyb21SZWZlcmVuY2Ugd2l0aCBjdXJyZW50IEJpYmxlcyBkYXRhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsYW5nIC0gTGFuZ3VhZ2UgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIC0gQmlibGUgSURcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJvb2sgLSBCb29rIElEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFwdGVyIC0gQ2hhcHRlciBudW1iZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlIC0gVmVyc2UgbnVtYmVyXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFNjcmlwdHVyZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShsYW5nLCBpZCwgYm9vaywgY2hhcHRlciwgdmVyc2UpIHtcbiAgICByZXR1cm4gZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZShiaWJsZXMsIGxhbmcsIGlkLCBib29rLCBjaGFwdGVyLCB2ZXJzZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZlY3QgaG9vayB0byB1cGRhdGUgc2V0dGluZ3Mgd2hlbiBCaWJsZXMgb3IgdGFyZ2V0IEJpYmxlIGNoYW5nZXNcbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdXBkYXRlU2V0dGluZ3MoYmlibGVzXywgdGFyZ2V0QmlibGVfKVxuICB9LCBbYmlibGVzXywgdGFyZ2V0QmlibGVfXSlcblxuICAvLyBidWlsZCB0aGUgdGl0bGVcbiAgY29uc3QgeyB0YXJnZXRfbGFuZ3VhZ2UsIHByb2plY3QgfSA9IG1hbmlmZXN0XG4gIGxldCBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZSA9IHByb2plY3Q/LnRpdGxlIHx8ICcnXG5cbiAgaWYgKHRhcmdldF9sYW5ndWFnZT8uYm9vaz8ubmFtZSkge1xuICAgIGV4cGFuZGVkU2NyaXB0dXJlUGFuZVRpdGxlID0gdGFyZ2V0X2xhbmd1YWdlLmJvb2submFtZVxuICB9XG5cbiAgY29uc3Qgc3R5bGVQcm9wcyA9IHN0eWxlcyB8fCB7fVxuICBjb25zdCBfY2hlY2tlclN0eWxlcyA9IHtcbiAgICAuLi5sb2NhbFN0eWxlcy5jb250YWluZXJEaXYsXG4gICAgLi4uc3R5bGVQcm9wcyxcbiAgfVxuICBjb25zb2xlLmxvZyhiaWJsZXMpXG4gIHJldHVybiByZWFkeVRvRGlzcGxheUNoZWNrZXIgPyAoXG4gICAgPGRpdiBpZD0nY2hlY2tlcicgc3R5bGU9e19jaGVja2VyU3R5bGVzfT5cbiAgICAgIDxHcm91cE1lbnVDb21wb25lbnRcbiAgICAgICAgYm9va05hbWU9e2Jvb2tOYW1lfVxuICAgICAgICBjaGFuZ2VDdXJyZW50Q29udGV4dElkPXtjaGFuZ2VDdXJyZW50Q2hlY2tffVxuICAgICAgICBjb250ZXh0SWQ9e2N1cnJlbnRDb250ZXh0SWR9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBncm91cHNEYXRhPXtncm91cHNEYXRhfVxuICAgICAgICBncm91cHNJbmRleD17Z3JvdXBzSW5kZXh9XG4gICAgICAgIHRhcmdldExhbmd1YWdlRm9udD17dGFyZ2V0TGFuZ3VhZ2VGb250fVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgIC8+XG4gICAgICA8ZGl2IHN0eWxlPXtsb2NhbFN0eWxlcy5jZW50ZXJEaXZ9PlxuICAgICAgICB7YmlibGVzICYmIE9iamVjdC5rZXlzKGJpYmxlcykubGVuZ3RoICYmIChcbiAgICAgICAgICA8ZGl2IHN0eWxlPXtsb2NhbFN0eWxlcy5zY3JpcHR1cmVQYW5lRGl2fT5cbiAgICAgICAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgICAgICAgIGFkZE9iamVjdFByb3BlcnR5VG9NYW5pZmVzdD17YWRkT2JqZWN0UHJvcGVydHlUb01hbmlmZXN0fVxuICAgICAgICAgICAgICBiaWJsZXM9e2JpYmxlc31cbiAgICAgICAgICAgICAgY29tcGxleFNjcmlwdEZvbnRzPXtjb21wbGV4U2NyaXB0Rm9udHN9XG4gICAgICAgICAgICAgIGNvbnRleHRJZD17Y3VycmVudENvbnRleHRJZH1cbiAgICAgICAgICAgICAgY3VycmVudFBhbmVTZXR0aW5ncz17cGFuZVNldHRpbmdzfVxuICAgICAgICAgICAgICBlZGl0VmVyc2VSZWY9e251bGx9XG4gICAgICAgICAgICAgIGVkaXRUYXJnZXRWZXJzZT17ZWRpdFRhcmdldFZlcnNlfVxuICAgICAgICAgICAgICBleHBhbmRlZFNjcmlwdHVyZVBhbmVUaXRsZT17ZXhwYW5kZWRTY3JpcHR1cmVQYW5lVGl0bGV9XG4gICAgICAgICAgICAgIGdldEF2YWlsYWJsZVNjcmlwdHVyZVBhbmVTZWxlY3Rpb25zPXtudWxsfVxuICAgICAgICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGFffVxuICAgICAgICAgICAgICBtYWtlU3VyZUJpYmxlc0xvYWRlZEZvclRvb2w9e251bGx9XG4gICAgICAgICAgICAgIHByb2plY3REZXRhaWxzUmVkdWNlcj17eyBtYW5pZmVzdCB9fVxuICAgICAgICAgICAgICBzZWxlY3Rpb25zPXtjdXJyZW50U2VsZWN0aW9uc31cbiAgICAgICAgICAgICAgc2V0VG9vbFNldHRpbmdzPXtzZXRUb29sU2V0dGluZ3NTY3JpcHR1cmV9XG4gICAgICAgICAgICAgIHNob3dQb3BvdmVyPXtzaG93UG9wb3Zlcn1cbiAgICAgICAgICAgICAgb25FeHBhbmRlZFNjcmlwdHVyZVBhbmVTaG93PXtudWxsfVxuICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIDxDaGVja0luZm9DYXJkXG4gICAgICAgICAgZ2V0U2NyaXB0dXJlRnJvbVJlZmVyZW5jZT17X2dldFNjcmlwdHVyZUZyb21SZWZlcmVuY2V9XG4gICAgICAgICAgb25MaW5rQ2xpY2s9eygpID0+IGZhbHNlfVxuICAgICAgICAgIG9uU2VlTW9yZUNsaWNrPXsoKSA9PiBmYWxzZX1cbiAgICAgICAgICBwaHJhc2U9e2dyb3VwUGhyYXNlfVxuICAgICAgICAgIHNlZU1vcmVMYWJlbD17dHJhbnNsYXRlKCdzZWVfbW9yZScpfVxuICAgICAgICAgIHNob3dTZWVNb3JlQnV0dG9uPXtmYWxzZX1cbiAgICAgICAgICB0aXRsZT17Z3JvdXBUaXRsZX1cbiAgICAgICAgLz5cbiAgICAgICAgPFZlcnNlQ2hlY2tcbiAgICAgICAgICBhbGlnbmVkR0xUZXh0PXthbGlnbmVkR0xUZXh0fVxuICAgICAgICAgIGJvb2tEZXRhaWxzPXtib29rRGV0YWlsc31cbiAgICAgICAgICBib29rbWFya0VuYWJsZWQ9e2Jvb2ttYXJrRW5hYmxlZH1cbiAgICAgICAgICBjYW5jZWxFZGl0VmVyc2U9e2NhbmNlbEVkaXRWZXJzZX1cbiAgICAgICAgICBjYW5jZWxDb21tZW50PXtjYW5jZWxDb21tZW50fVxuICAgICAgICAgIGNhbmNlbFNlbGVjdGlvbj17Y2FuY2VsU2VsZWN0aW9ufVxuICAgICAgICAgIGNoYW5nZU1vZGU9e2NoYW5nZU1vZGV9XG4gICAgICAgICAgY2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZT17Y2hhbmdlU2VsZWN0aW9uc0luTG9jYWxTdGF0ZX1cbiAgICAgICAgICBjaGVja0lmQ29tbWVudENoYW5nZWQ9e2NoZWNrSWZDb21tZW50Q2hhbmdlZH1cbiAgICAgICAgICBjaGVja0lmVmVyc2VDaGFuZ2VkPXtjaGVja0lmVmVyc2VDaGFuZ2VkfVxuICAgICAgICAgIGNsZWFyU2VsZWN0aW9uPXtjbGVhclNlbGVjdGlvbn1cbiAgICAgICAgICBjb21tZW50VGV4dD17Y29tbWVudFRleHR9XG4gICAgICAgICAgY29udGV4dElkPXtjdXJyZW50Q29udGV4dElkfVxuICAgICAgICAgIGRpYWxvZ01vZGFsVmlzaWJpbGl0eT17ZmFsc2V9XG4gICAgICAgICAgaXNDb21tZW50Q2hhbmdlZD17aXNDb21tZW50Q2hhbmdlZH1cbiAgICAgICAgICBpc1ZlcnNlQ2hhbmdlZD17aXNWZXJzZUNoYW5nZWR9XG4gICAgICAgICAgaXNWZXJzZUVkaXRlZD17aXNWZXJzZUVkaXRlZH1cbiAgICAgICAgICBoYW5kbGVFZGl0VmVyc2U9e2hhbmRsZUVkaXRWZXJzZX1cbiAgICAgICAgICBoYW5kbGVHb1RvTmV4dD17aGFuZGxlR29Ub05leHR9XG4gICAgICAgICAgaGFuZGxlR29Ub1ByZXZpb3VzPXtoYW5kbGVHb1RvUHJldmlvdXN9XG4gICAgICAgICAgaGFuZGxlT3BlbkRpYWxvZz17bnVsbH1cbiAgICAgICAgICBpc1ZlcnNlSW52YWxpZGF0ZWQ9e2lzVmVyc2VJbnZhbGlkYXRlZH1cbiAgICAgICAgICBoYW5kbGVDbG9zZURpYWxvZz17bnVsbH1cbiAgICAgICAgICBoYW5kbGVDb21tZW50PXtoYW5kbGVDb21tZW50fVxuICAgICAgICAgIGhhbmRsZVNraXA9e251bGx9XG4gICAgICAgICAgaGFuZGxlVGFnc0NoZWNrYm94PXtoYW5kbGVUYWdzQ2hlY2tib3h9XG4gICAgICAgICAgbG9jYWxOb3RoaW5nVG9TZWxlY3Q9e3RlbXBOb3RoaW5nVG9TZWxlY3R9XG4gICAgICAgICAgbWFuaWZlc3Q9e21hbmlmZXN0fVxuICAgICAgICAgIG1heGltdW1TZWxlY3Rpb25zPXttYXhpbXVtU2VsZWN0aW9uc31cbiAgICAgICAgICBtb2RlPXttb2RlfVxuICAgICAgICAgIG5ld1NlbGVjdGlvbnM9e3RlbXBTZWxlY3Rpb25zfVxuICAgICAgICAgIG5vdGhpbmdUb1NlbGVjdD17Y3VycmVudE5vdGhpbmdUb1NlbGVjdH1cbiAgICAgICAgICBvcGVuQWxlcnREaWFsb2c9e29wZW5BbGVydERpYWxvZ31cbiAgICAgICAgICBzYXZlQ29tbWVudD17c2F2ZUNvbW1lbnR9XG4gICAgICAgICAgc2F2ZUVkaXRWZXJzZT17c2F2ZUVkaXRWZXJzZX1cbiAgICAgICAgICBzYXZlU2VsZWN0aW9uPXtfc2F2ZVNlbGVjdGlvbn1cbiAgICAgICAgICBzZWxlY3Rpb25zPXtjdXJyZW50U2VsZWN0aW9uc31cbiAgICAgICAgICBzZXRUb29sU2V0dGluZ3M9e3NldFRvb2xTZXR0aW5nc31cbiAgICAgICAgICB0YWdzPXtuZXdUYWdzIHx8IFtdfVxuICAgICAgICAgIHRhcmdldEJpYmxlPXt0YXJnZXRCaWJsZX1cbiAgICAgICAgICB0YXJnZXRMYW5ndWFnZURldGFpbHM9e3RhcmdldExhbmd1YWdlRGV0YWlsc31cbiAgICAgICAgICB0b2dnbGVCb29rbWFyaz17dG9nZ2xlQm9va21hcmt9XG4gICAgICAgICAgdG9nZ2xlTm90aGluZ1RvU2VsZWN0PXt0b2dnbGVOb3RoaW5nVG9TZWxlY3R9XG4gICAgICAgICAgdG9vbHNTZXR0aW5ncz17dG9vbHNTZXR0aW5nc31cbiAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICB1bmZpbHRlcmVkVmVyc2VUZXh0PXt1bmZpbHRlcmVkVmVyc2VUZXh0fVxuICAgICAgICAgIHZhbGlkYXRlU2VsZWN0aW9ucz17dmFsaWRhdGVTZWxlY3Rpb25zfVxuICAgICAgICAgIHZlcnNlVGV4dD17dmVyc2VUZXh0fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICB7c2hvd0RvY3VtZW50ICYmIChcbiAgICAgICAgPFRyYW5zbGF0aW9uSGVscHNcbiAgICAgICAgICBtb2RhbEFydGljbGU9e2FydGljbGV9XG4gICAgICAgICAgYXJ0aWNsZT17YXJ0aWNsZX1cbiAgICAgICAgICBleHBhbmRlZEhlbHBzQnV0dG9uSG92ZXJUZXh0PXsnQ2xpY2sgdG8gc2hvdyBleHBhbmRlZCBoZWxwIHBhbmUnfVxuICAgICAgICAgIG1vZGFsVGl0bGU9eyd0cmFuc2xhdGlvbkhlbHBzJ31cbiAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICBpc1Nob3dIZWxwc0V4cGFuZGVkPXtzaG93SGVscHNNb2RhbH1cbiAgICAgICAgICBvcGVuRXhwYW5kZWRIZWxwc01vZGFsPXt0b2dnbGVIZWxwc01vZGFsfVxuICAgICAgICAgIHNpZGViYXJUb2dnbGU9e3RvZ2dsZUhlbHBzfVxuICAgICAgICAgIGlzU2hvd0hlbHBzU2lkZWJhcj17c2hvd0hlbHBzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyUHJvcHM/LnBvcG92ZXJWaXNpYmlsaXR5ICYmIChcbiAgICAgICAgPFBvcG92ZXJDb250YWluZXIgey4uLnBvcG92ZXJQcm9wc30gLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICkgOiAoXG4gICAgJ1dhaXRpbmcgZm9yIERhdGEnXG4gIClcbn1cblxuQ2hlY2tlci5wcm9wVHlwZXMgPSB7XG4gIHN0eWxlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgYWxpZ25lZEdsQmlibGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIGJpYmxlczogUHJvcFR5cGVzLmFycmF5LFxuICBjaGFuZ2VUYXJnZXRWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNoZWNraW5nRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjaGVja1R5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNvbnRleHRJZDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnbFdvcmRzRGF0YTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIGluaXRpYWxTZXR0aW5nczogUHJvcFR5cGVzLm9iamVjdCxcbiAgc2F2ZUNoZWNraW5nRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIHNhdmVTZXR0aW5nczogUHJvcFR5cGVzLmZ1bmMsXG4gIHNob3dEb2N1bWVudDogUHJvcFR5cGVzLmJvb2wsXG4gIHRhcmdldEJpYmxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHRhcmdldExhbmd1YWdlRGV0YWlsczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG5leHBvcnQgZGVmYXVsdCBDaGVja2VyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUF5Q0EsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQUQsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFPLG1CQUFBLEdBQUFGLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBUSxlQUFBLEdBQUFSLE9BQUE7QUFPQSxJQUFBUyxVQUFBLEdBQUFKLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBVSxpQkFBQSxHQUFBVixPQUFBO0FBU0EsSUFBQVcsY0FBQSxHQUFBTixzQkFBQSxDQUFBTCxPQUFBO0FBQ0EsSUFBQVksaUJBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLGNBQUEsR0FBQVIsc0JBQUEsQ0FBQUwsT0FBQTtBQUNBLElBQUFjLGlCQUFBLEdBQUFULHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBZSxnQkFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLG1CQUFBLEdBQUFYLHNCQUFBLENBQUFMLE9BQUE7QUFDQSxJQUFBaUIsaUJBQUEsR0FBQVosc0JBQUEsQ0FBQUwsT0FBQTtBQUNB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tc-checking-tool-rcl",
3
- "version": "0.9.115",
3
+ "version": "0.9.117",
4
4
  "main": "dist",
5
5
  "source": "dist/index.js",
6
6
  "repository": "https://github.com/unfoldingWord-box/checking-tool-rcl.git",
@@ -68,7 +68,7 @@
68
68
  "usfm-js": "^2",
69
69
  "uw-tsv-parser": "1.0.3",
70
70
  "word-aligner": "1.0.3",
71
- "word-aligner-lib": "1.0.0",
71
+ "word-aligner-lib": "1.0.1",
72
72
  "wordmap-lexer": "^0.3.6"
73
73
  },
74
74
  "resolutions": {