single-scripture-rcl 3.4.28-beta.1 → 3.4.28-beta.4

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.
@@ -96,9 +96,9 @@ var style = {
96
96
  width: '500px'
97
97
  };
98
98
 
99
- /**
100
- * create a short comparison verse ref object without all the verseData
101
- * @param verseRef
99
+ /**
100
+ * create a short comparison verse ref object without all the verseData
101
+ * @param verseRef
102
102
  */
103
103
  function compareObject(verseRef) {
104
104
  var _verseData$verseObjec;
@@ -114,10 +114,10 @@ function compareObject(verseRef) {
114
114
  };
115
115
  }
116
116
 
117
- /**
118
- * compare two verse refs to see if they are substantially similar
119
- * @param versesForRef1
120
- * @param versesForRef2
117
+ /**
118
+ * compare two verse refs to see if they are substantially similar
119
+ * @param versesForRef1
120
+ * @param versesForRef2
121
121
  */
122
122
  function areVersesSame(versesForRef1, versesForRef2) {
123
123
  versesForRef1 = versesForRef1 || [];
@@ -137,10 +137,10 @@ function areVersesSame(versesForRef1, versesForRef2) {
137
137
  return areSame;
138
138
  }
139
139
 
140
- /**
141
- * get the USFM for bookId from scriptureConfig.
142
- * @param {object} scriptureConfig
143
- * @param {string} bookId
140
+ /**
141
+ * get the USFM for bookId from scriptureConfig.
142
+ * @param {object} scriptureConfig
143
+ * @param {string} bookId
144
144
  */
145
145
  export var getCurrentBook = function getCurrentBook(scriptureConfig, bookId) {
146
146
  var _scriptureConfig$reso, _scriptureConfig$reso2, _bookName$toLowerCase;
@@ -191,8 +191,6 @@ export default function ScriptureCard(_ref2) {
191
191
  languageId = _ref2$resource.languageId,
192
192
  resourceId = _ref2$resource.resourceId,
193
193
  originalLanguageOwner = _ref2$resource.originalLanguageOwner,
194
- resourceRef = _ref2$resource.ref,
195
- resourceBranch = _ref2$resource.branch,
196
194
  resourceLink = _ref2.resourceLink,
197
195
  selectedQuote = _ref2.selectedQuote,
198
196
  server = _ref2.server,
@@ -320,8 +318,7 @@ export default function ScriptureCard(_ref2) {
320
318
  // @ts-ignore
321
319
  var cardResourceId = (scriptureConfig === null || scriptureConfig === void 0 || (_scriptureConfig$reso6 = scriptureConfig.resource) === null || _scriptureConfig$reso6 === void 0 ? void 0 : _scriptureConfig$reso6.projectId) || resourceId;
322
320
  // @ts-ignore
323
- // Priority: 1) resource prop branch/ref, 2) scriptureConfig ref, 3) appRef
324
- var ref_ = resourceBranch || resourceRef || (scriptureConfig === null || scriptureConfig === void 0 || (_scriptureConfig$reso7 = scriptureConfig.resource) === null || _scriptureConfig$reso7 === void 0 ? void 0 : _scriptureConfig$reso7.ref) || appRef;
321
+ var ref_ = (scriptureConfig === null || scriptureConfig === void 0 || (_scriptureConfig$reso7 = scriptureConfig.resource) === null || _scriptureConfig$reso7 === void 0 ? void 0 : _scriptureConfig$reso7.ref) || appRef;
325
322
  var canUseEditBranch = !!(loggedInUser && authentication && resourceId !== ORIGINAL_SOURCE && (
326
323
  // TRICKY if not original language and we have login data, then we can use the edit branch
327
324
  ref_ === 'master' || ref_.includes(loggedInUser))); // also make sure not a version tag
@@ -338,8 +335,7 @@ export default function ScriptureCard(_ref2) {
338
335
  owner: owner,
339
336
  onResourceError: onResourceError,
340
337
  server: server,
341
- useUserLocalStorage: useUserLocalStorage,
342
- initialBranch: resourceBranch || resourceRef
338
+ useUserLocalStorage: useUserLocalStorage
343
339
  }),
344
340
  _useUserBranch$state = _useUserBranch.state,
345
341
  branchDetermined = _useUserBranch$state.branchDetermined,
@@ -516,10 +512,10 @@ export default function ScriptureCard(_ref2) {
516
512
  }));
517
513
  }
518
514
 
519
- /**
520
- * set edit state for specific verse
521
- * @param {string} verseRef - reference of verse being edited or finished edit
522
- * @param {boolean} editing - true when editing
515
+ /**
516
+ * set edit state for specific verse
517
+ * @param {string} verseRef - reference of verse being edited or finished edit
518
+ * @param {boolean} editing - true when editing
523
519
  */
524
520
  function setEditVerse(verseRef, editing) {
525
521
  if (editing && verseRef !== editVerse) {
@@ -612,13 +608,13 @@ export default function ScriptureCard(_ref2) {
612
608
  workingResourceBranch: ref
613
609
  };
614
610
 
615
- /**
616
- * this gets called whenever a scripture pane has a change in save state
617
- * @param {number} currentIndex
618
- * @param {boolean} saved
619
- * @param {function} getChanges - will be called whenever user clicks save button
620
- * @param {function} clearChanges - will be called whenever save has completed
621
- * @param {object} state - current state of word alignment/edit
611
+ /**
612
+ * this gets called whenever a scripture pane has a change in save state
613
+ * @param {number} currentIndex
614
+ * @param {boolean} saved
615
+ * @param {function} getChanges - will be called whenever user clicks save button
616
+ * @param {function} clearChanges - will be called whenever save has completed
617
+ * @param {object} state - current state of word alignment/edit
622
618
  */
623
619
  function _setSavedChanges(currentIndex, saved, _ref3) {
624
620
  var _ref3$getChanges = _ref3.getChanges,
@@ -654,10 +650,10 @@ export default function ScriptureCard(_ref2) {
654
650
  }
655
651
  }
656
652
 
657
- /**
658
- * search chapter or verse chunk to line that starts with findItem
659
- * @param {number|string} findItem
660
- * @param {string[]} chunks
653
+ /**
654
+ * search chapter or verse chunk to line that starts with findItem
655
+ * @param {number|string} findItem
656
+ * @param {string[]} chunks
661
657
  */
662
658
  function findRefInArray(findItem, chunks) {
663
659
  var ref_ = findItem + '';
@@ -913,12 +909,12 @@ export default function ScriptureCard(_ref2) {
913
909
  }
914
910
  }, [startSave, editBranchReady, sha]);
915
911
 
916
- /**
917
- * convert updatedVerseObjects to USFM and merge into the bibleUsfm
918
- * @param {string} bibleUsfm - USFM of bible
919
- * @param {ScriptureReferenceType} ref - reference of verse to merge in
920
- * @param {VerseObjectsType} updatedVerseObjects - new verse in verseObject format
921
- * @param {number} cardNum
912
+ /**
913
+ * convert updatedVerseObjects to USFM and merge into the bibleUsfm
914
+ * @param {string} bibleUsfm - USFM of bible
915
+ * @param {ScriptureReferenceType} ref - reference of verse to merge in
916
+ * @param {VerseObjectsType} updatedVerseObjects - new verse in verseObject format
917
+ * @param {number} cardNum
922
918
  */
923
919
  function mergeVerseObjectsIntoBibleUsfm(bibleUsfm, ref, updatedVerseObjects, cardNum) {
924
920
  var newUsfm;
@@ -1539,9 +1535,9 @@ ScriptureCard.propTypes = {
1539
1535
  loggedInUser: PropTypes.string,
1540
1536
  /** function to minimize the card (optional) */
1541
1537
  onMinimize: PropTypes.func,
1542
- /** optional callback if error loading resource, parameter returned are:
1543
- * ({string} errorMessage, {boolean} isAccessError, {object} resourceStatus)
1544
- * - isAccessError - is true if this was an error trying to access file
1538
+ /** optional callback if error loading resource, parameter returned are:
1539
+ * ({string} errorMessage, {boolean} isAccessError, {object} resourceStatus)
1540
+ * - isAccessError - is true if this was an error trying to access file
1545
1541
  * - resourceStatus - is object containing details about problems fetching resource */
1546
1542
  onResourceError: PropTypes.func,
1547
1543
  /** the original scripture bookObjects for current book */
@@ -1565,11 +1561,7 @@ ScriptureCard.propTypes = {
1565
1561
  /** resourceId to use (e.g. ugnt) */
1566
1562
  resourceId: PropTypes.string.isRequired,
1567
1563
  /** repo owner for original languages such as unfoldingWord */
1568
- originalLanguageOwner: PropTypes.string.isRequired,
1569
- /** optional ref/branch to use */
1570
- ref: PropTypes.string,
1571
- /** optional branch to use (alias for ref) */
1572
- branch: PropTypes.string
1564
+ originalLanguageOwner: PropTypes.string.isRequired
1573
1565
  }),
1574
1566
  /** resourceLink */
1575
1567
  resourceLink: PropTypes.any,
@@ -1600,4 +1592,4 @@ ScriptureCard.propTypes = {
1600
1592
  /** use method for using local storage specific for user */
1601
1593
  useUserLocalStorage: PropTypes.func.isRequired
1602
1594
  };
1603
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc285IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTAiLCJfaHR0cENvbmZpZyIsIl9odHRwQ29uZmlnMiIsIl9hdXRoZW50aWNhdGlvbiR1c2VyIiwiX3ZlcnNlc0ZvclJlZjMiLCJfdmVyc2VzRm9yUmVmNCIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZV8iLCJyZWZlcmVuY2UiLCJfcmVmMiRyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZVJlZiIsInJlZiIsInJlc291cmNlQnJhbmNoIiwiYnJhbmNoIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJzYXZlSW5Qcm9ncmVzcyIsInVzZVJlZiIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY29udGV4dExpbmVzIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImVkaXRWZXJzZSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwicmVhZHlGb3JGZXRjaCIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzYXZlRGlmZlBhdGNoIiwic2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2VsZWN0aW9uc1JlZnMiLCJzaG93QWxpZ25tZW50UG9wdXAiLCJzdGFydFNhdmUiLCJ1cmxFcnJvciIsInVzaW5nVXNlckJyYW5jaCIsInVuc2F2ZWRDaGFuZ2VzTGlzdCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlc0ZvclJlZiIsInZlcnNlT2JqZWN0c01hcCIsInZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJfUmVhY3QkdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfdXNlVXNlckxvY2FsU3RvcmFnZSIsIl91c2VVc2VyTG9jYWxTdG9yYWdlMiIsImZvbnRTaXplIiwic2V0Rm9udFNpemUiLCJpc05UXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJfdXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRVcmxFcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoZWRSZXNvdXJjZSIsInJlcG8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiX3VzZVVzZXJCcmFuY2giLCJjYXJkSWQiLCJpbml0aWFsQnJhbmNoIiwiX3VzZVVzZXJCcmFuY2gkc3RhdGUiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsIl91c2VVc2VyQnJhbmNoJGFjdGlvbiIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwiX3VzZUJyYW5jaE1lcmdlciRzdGF0IiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwicmVsb2FkUmVzb3VyY2UiLCJjYWxsVXBkYXRlVXNlckJyYW5jaCIsImlzRXJyb3JEaWFsb2dPcGVuIiwib25DbG9zZUVycm9yRGlhbG9nIiwiaXNVcGRhdGVMb2FkaW5nIiwiaXNMb2FkaW5nIiwiZGlhbG9nTWVzc2FnZSIsImRpYWxvZ1RpdGxlIiwiZGlhbG9nTGluayIsImRpYWxvZ0xpbmtUb29sdGlwIiwib25NZXJnZSIsImxvZyIsIl91c2VNYXN0ZXJNZXJnZVByb3BzIiwiaXNNZXJnZUxvYWRpbmciLCJjYWxsTWVyZ2VVc2VyQnJhbmNoIiwidXNlRWZmZWN0IiwicHJldkNhcmRzTG9hZGluZyIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsIl9zY3JpcHR1cmVDb25maWckcmVzbzgiLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJpc0FjY2Vzc0Vycm9yIiwidmVyc2lvbiIsInVwZGF0ZVRpdGxlIiwiZ2V0U2NyaXB0dXJlU2VsZWN0b3IiLCJzY3JpcHR1cmVTZWxlY3Rpb25Db25maWciLCJjcmVhdGVFbGVtZW50IiwiZXJyb3JNZXNzYWdlIiwic2V0RWRpdFZlcnNlIiwiZWRpdGluZyIsImRpc2FibGVDaGFuZ2VCdXR0b25zIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJfdXNlQ2FyZFN0YXRlIiwiX3VzZUNhcmRTdGF0ZSRzdGF0ZSIsImhlYWRlcnMiLCJmaWx0ZXJzIiwiaXRlbUluZGV4IiwibWFya2Rvd25WaWV3IiwiX3VzZUNhcmRTdGF0ZSRhY3Rpb25zIiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwidXNlTWVtbyIsImZvbnRGYW1pbHkiLCJNYXRoIiwicm91bmQiLCJjb250ZW50U3R5bGUiLCJsaW5lSGVpZ2h0Iiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiX3JlZjMiLCJfcmVmMyRnZXRDaGFuZ2VzIiwiZ2V0Q2hhbmdlcyIsIl9yZWYzJGNsZWFyQ2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl9yZWYzJHN0YXRlIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJmaW5kUmVmSW5BcnJheSIsImZpbmRJdGVtIiwiY2h1bmtzIiwicmVmTGVuIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJjaHVuayIsImlkeCIsInN1YnN0cmluZyIsIm5leHRDaGFyIiwiZ2V0Qm9va05hbWUiLCJfc2NyaXB0dXJlQ29uZmlnJHJlZmUiLCJib29rQ2FwcyIsInRvVXBwZXJDYXNlIiwiZmlsZXBhdGgiLCJzaGEiLCJfdXNlRWRpdCIsImNvbnRlbnQiLCJjb25maWciLCJkb250Q3JlYXRlQnJhbmNoIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJlbWFpbCIsInVzZXIiLCJzYXZlRXJyb3IiLCJpc1NhdmVFcnJvciIsImlzRXJyb3IiLCJvblNhdmVFZGl0Iiwib25TYXZlRWRpdFBhdGNoIiwiY3VycmVudCIsIl9zYXZlU3VjY2VzZnVsIiwicHJldkNhcmRzU2F2aW5nIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJjYXJkSW5kZXgiLCJsb2dDaGFuZ2VkIiwiY29tbWVudCIsImluaXRpYWwiLCJmaW5hbCIsImRpZmYiLCJfc2F2ZUVkaXQiLCJfcmVmNCIsIl9jYWxsZWUiLCJ1cGxvYWRGdW5jdGlvbiIsInN1Y2Nlc3MiLCJyZXN1bHRzIiwiX3NhdmVDb250ZW50IiwiZmlsZVNoYSIsInNhdmVkQmlibGVVc2ZtIiwiZWRpdGVkQmlibGVVc2ZtIiwidXBUb0RhdGUiLCJuZXdDb250ZXh0TGluZXMiLCJkaWZmUGF0Y2giLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwic3BsaXQiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsImZyb250TWF0dGVyIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwicHJlZml4TGVuIiwiaW5kZXhPZiIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJfZ2V0UmVhZHlGb3JTYXZlIiwiX2NhbGxlZTIiLCJjcmVhdGVFZGl0QnJhbmNoIiwiYmlibGVVc2ZtSW5pdGlhbCIsImJpYmxlVXNmbU5ldyIsIm1lcmdlRmFpbCIsIl9jYXJkTnVtIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXyIsIl9zdGF0ZSIsIl9nZXRDaGFuZ2VzIiwiX3JlZjUiLCJfc2F2ZURpZmZQYXRjaCIsIl9zYXZlRnVsbEJpYmxlQ29udGVudCIsIm5ld0Jvb2tKc29uIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9jYXJkSW5kZXgiLCJfY2FyZE51bTIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8yIiwiX2dldENoYW5nZXMyIiwiX3N0YXRlMiIsIl9uZXdVc2ZtIiwiX2dldENoYW5nZXMzIiwibmV3VmVyc2VUZXh0IiwiX3JlZjYiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhcnNlSW50IiwidDAiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfcmVmNyIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMyIsIm9yaWdpbmFsVmVyc2VzIiwic3Vic3RpdHV0ZSIsInN0YXJ0VmVyc2UiLCJsYXN0VmVyc2UiLCJfdmVyc2UiLCJ2ZXJzZXMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwidmVyc2VJdGVtIiwidm8iLCJfYm9va1ZlcnNlT2JqZWN0JF9jaGEiLCJzZXQiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUyIiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwid29yZHMiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwiX3ZlcnNlc0ZvclJlZjIiLCJfcmVmOCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsIl9jdXJyZW50VmVyc2VEYXRhJHZlciIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfcmVmOSIsImJvb2tJZF8iLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImRldGVybWluaW5nQnJhbmNoIiwib25BbGlnbm1lbnRGaW5pc2giLCJzYXZpbmciLCJoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrIiwib25SZW5kZXJUb29sYmFyIiwiX3JlZjEwIiwibmV3SXRlbXMiLCJhbGxWZXJzZXNBbGlnbmVkIiwiZXZlcnkiLCJhbGlnblN0YXR1cyIsImFsaWduSWNvbiIsImFsaWduQnV0dG9uVGV4dCIsImNvbG9yIiwib25DbGljayIsImN1cnNvciIsIkZyYWdtZW50Iiwib3BlbiIsIm9uQ2xvc2UiLCJsaW5rIiwibGlua1Rvb2x0aXAiLCJzZWxlY3Rpb25Cb29rT2JqZWN0cyIsIm9uU2VsZWN0aW9ucyIsInJlZlN0cmluZyIsInNldHRpbmdzVGl0bGUiLCJnZXRDdXN0b21Db21wb25lbnQiLCJoaWRlTWFya2Rvd25Ub2dnbGUiLCJlZGl0YWJsZSIsIm9uVmVyc2VTZWxlY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwib2JqZWN0IiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsInNldEFyZVJlc291cmNlc0xvYWRpbmciLCJzZXRBcmVSZXNvdXJjZXNTYXZpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVDYXJkL1NjcmlwdHVyZUNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmZXRjaEJpYmxlQm9vayxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcbmltcG9ydCB7IGdldFBhdGNoIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZXMnXG5pbXBvcnQgeyBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCBWZXJzZU9iamVjdHNUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG4vKipcbiAqIGNyZWF0ZSBhIHNob3J0IGNvbXBhcmlzb24gdmVyc2UgcmVmIG9iamVjdCB3aXRob3V0IGFsbCB0aGUgdmVyc2VEYXRhXG4gKiBAcGFyYW0gdmVyc2VSZWZcbiAqL1xuZnVuY3Rpb24gY29tcGFyZU9iamVjdCh2ZXJzZVJlZikge1xuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZURhdGEsXG4gIH0gPSB2ZXJzZVJlZiB8fCB7fVxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gSlNPTi5zdHJpbmdpZnkodmVyc2VEYXRhLnZlcnNlT2JqZWN0cykgOiAnJ1xuICByZXR1cm4ge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VPYmplY3RzLFxuICB9XG59XG5cbi8qKlxuICogY29tcGFyZSB0d28gdmVyc2UgcmVmcyB0byBzZWUgaWYgdGhleSBhcmUgc3Vic3RhbnRpYWxseSBzaW1pbGFyXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMVxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjJcbiAqL1xuZnVuY3Rpb24gYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYxOiBhbnlbXSwgdmVyc2VzRm9yUmVmMjogYW55W10pIHtcbiAgdmVyc2VzRm9yUmVmMSA9IHZlcnNlc0ZvclJlZjEgfHwgW11cbiAgdmVyc2VzRm9yUmVmMiA9IHZlcnNlc0ZvclJlZjIgfHwgW11cbiAgbGV0IGFyZVNhbWUgPSBmYWxzZVxuXG4gIGlmICh2ZXJzZXNGb3JSZWYxLmxlbmd0aCA9PT0gdmVyc2VzRm9yUmVmMi5sZW5ndGgpIHtcbiAgICBhcmVTYW1lID0gdHJ1ZVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGw9IHZlcnNlc0ZvclJlZjEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCB2ZXJzZTEgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjFbaV0pXG4gICAgICBjb25zdCB2ZXJzZTIgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjJbaV0pXG4gICAgICBhcmVTYW1lID0gaXNFcXVhbCh2ZXJzZTEsIHZlcnNlMilcblxuICAgICAgaWYgKCFhcmVTYW1lKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZVNhbWVcbn1cblxuLyoqXG4gKiBnZXQgdGhlIFVTRk0gZm9yIGJvb2tJZCBmcm9tIHNjcmlwdHVyZUNvbmZpZy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBzY3JpcHR1cmVDb25maWdcbiAqIEBwYXJhbSB7c3RyaW5nfSBib29rSWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRCb29rID0gKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKSA9PiB7XG4gIGNvbnN0IGxhdGVzdEJpYmxlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucHJvamVjdElkXG4gIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxuICBsZXQgaXNCb29rVmFsaWQgPSBmYWxzZVxuICBjb25zdCBib29rTmFtZSA9IGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZShmaWxlbmFtZSlcbiAgaXNCb29rVmFsaWQgPSBib29rTmFtZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuICBpZiAoIWlzQm9va1ZhbGlkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYW5kIFVTRk0gZmlsZSBpcyAke2ZpbGVuYW1lfWApXG4gIH1cbiAgaWYgKGxhdGVzdEJpYmxlPy50b0xvd2VyQ2FzZSgpICE9PSBib29rSWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBidXQgZmV0Y2hlZCBwcm9qZWN0SWQgaXMgJHtsYXRlc3RCaWJsZX1gKVxuICAgIGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgfVxuICBpZiAoaXNCb29rVmFsaWQpIHtcbiAgICBjb25zdCBiaWJsZVVzZm0gPSBzY3JpcHR1cmVDb25maWc/LmJpYmxlVXNmbTtcbiAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICByZXR1cm4gYmlibGVVc2ZtXG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IoYGdldEN1cnJlbnRCb29rKCkgLSBCaWJsZSBVU0ZNIG1pc3NpbmdgKVxuICB9XG4gIGNvbnNvbGUuZXJyb3IoYGdldEN1cnJlbnRCb29rKCkgLSBFeHBlY3RlZCAke2Jvb2tJZH0gYnV0IGdvdCBmaWxlICR7ZmlsZW5hbWV9YClcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NyaXB0dXJlQ2FyZCh7XG4gIGFwcFJlZixcbiAgYXV0aGVudGljYXRpb24sXG4gIGJvb2tJbmRleCxcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBnZXRMYW5ndWFnZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGdyZWVrUmVwb1VybCxcbiAgaGVicmV3UmVwb1VybCxcbiAgaHR0cENvbmZpZyxcbiAgaWQsXG4gIGlzTlQsXG4gIGxvZ2dlZEluVXNlcixcbiAgb25NaW5pbWl6ZSxcbiAgb25SZXNvdXJjZUVycm9yLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICByZWZlcmVuY2U6IHJlZmVyZW5jZV8sXG4gIHJlc291cmNlOiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICByZWY6IHJlc291cmNlUmVmLFxuICAgIGJyYW5jaDogcmVzb3VyY2VCcmFuY2gsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRDYXJkc0xvYWRpbmdNZXJnZSxcbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlLFxuICBzZXRDYXJkc1NhdmluZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgdHJhbnNsYXRlLFxuICB0aXRsZSxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgdXBkYXRlTWVyZ2VTdGF0ZSxcbn0pIHtcbiAgY29uc3Qgc2F2ZUluUHJvZ3Jlc3MgPSBSZWFjdC51c2VSZWYoZmFsc2UpOyAvLyBBZGQgcmVmIHRvIHRyYWNrIHNhdmUgb3BlcmF0aW9uXG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZV8/LmJvb2tJZCB8fCByZWZlcmVuY2VfPy5wcm9qZWN0SWQgLy8gb2xkZXIgdmVyc2lvbnMgdXNlIHByb2plY3RJZCwgc28gZmFsbCBiYWNrIHRvIHRoYXRcbiAgY29uc3QgcmVmZXJlbmNlID0ge1xuICAgIGJvb2tJZCxcbiAgICBjaGFwdGVyOiByZWZlcmVuY2VfPy5jaGFwdGVyLFxuICAgIHZlcnNlOiByZWZlcmVuY2VfPy52ZXJzZSxcbiAgfVxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGNvbnRleHRMaW5lczogNCxcbiAgICBjdXJyZW50UmVmZXJlbmNlOiBudWxsLFxuICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgZWRpdFZlcnNlOiBudWxsLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNhdmVEaWZmUGF0Y2g6IGZhbHNlLFxuICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBudWxsLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzZWxlY3Rpb25zUmVmczogJycsXG4gICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgY29udGV4dExpbmVzLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGVkaXRWZXJzZSwgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBiZWluZyBlZGl0dGVkXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzZWxlY3Rpb25zUmVmcyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gUHJpb3JpdHk6IDEpIHJlc291cmNlIHByb3AgYnJhbmNoL3JlZiwgMikgc2NyaXB0dXJlQ29uZmlnIHJlZiwgMykgYXBwUmVmXG4gIGxldCByZWZfID0gcmVzb3VyY2VCcmFuY2ggfHwgcmVzb3VyY2VSZWYgfHwgc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLmluY2x1ZGVzKGxvZ2dlZEluVXNlcikpKSkgLy8gYWxzbyBtYWtlIHN1cmUgbm90IGEgdmVyc2lvbiB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGJyYW5jaERldGVybWluZWQsXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2gsXG4gICAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCxcbiAgICAgIGZpbmlzaEVkaXQsXG4gICAgfSxcbiAgfSA9IHVzZVVzZXJCcmFuY2goe1xuICAgIGFwcFJlZixcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSWQsXG4gICAgY2FyZElkOiBpZCxcbiAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG93bmVyLFxuICAgIG9uUmVzb3VyY2VFcnJvcixcbiAgICBzZXJ2ZXIsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICBpbml0aWFsQnJhbmNoOiByZXNvdXJjZUJyYW5jaCB8fCByZXNvdXJjZVJlZixcbiAgfSlcblxuICBjb25zdCBfdXNlQnJhbmNoTWVyZ2VyID0gdXNlQnJhbmNoTWVyZ2VyKHsgc2VydmVyLCBvd25lciwgcmVwbywgdXNlckJyYW5jaDogdXNlckVkaXRCcmFuY2hOYW1lLCB0b2tlbmlkOiBhdXRoZW50aWNhdGlvbj8udG9rZW4/LnNoYTEgfSlcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBtZXJnZVN0YXR1czogbWVyZ2VUb01hc3RlcixcbiAgICAgIHVwZGF0ZVN0YXR1czogbWVyZ2VGcm9tTWFzdGVyLFxuICAgIH0sXG4gIH0gPSBfdXNlQnJhbmNoTWVyZ2VyXG5cbiAgY29uc3QgdXBkYXRlQnV0dG9uUHJvcHMgPSB1c2VDb250ZW50VXBkYXRlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uVXBkYXRlOiAoKSA9PiB7XG4gICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4gc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpKVxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgIGlzRXJyb3JEaWFsb2dPcGVuLFxuICAgIG9uQ2xvc2VFcnJvckRpYWxvZyxcbiAgICBpc0xvYWRpbmc6IGlzVXBkYXRlTG9hZGluZyxcbiAgICBkaWFsb2dNZXNzYWdlLFxuICAgIGRpYWxvZ1RpdGxlLFxuICAgIGRpYWxvZ0xpbmssXG4gICAgZGlhbG9nTGlua1Rvb2x0aXAsXG4gIH0gPSB1cGRhdGVCdXR0b25Qcm9wc1xuXG4gIGNvbnN0IG9uTWVyZ2UgPSAoKSA9PiB7XG4gICAgZmluaXNoRWRpdCgpXG4gICAgY29uc29sZS5sb2coYG9uTWVyZ2UoKSBzd2l0Y2hpbmcgYmFjayB0byBtYXN0ZXIgYWZ0ZXIgbWVyZ2UgYXBwUmVmOmAsIGFwcFJlZilcbiAgICBzZXRTdGF0ZSh7XG4gICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgIHJlZjogYXBwUmVmLFxuICAgIH0pXG4gICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxLCAvLyB0cmlnZ2VyIHJlY2hlY2sgb2YgdXNlciBicmFuY2ggd2hpY2ggd2lsbCBzd2l0Y2ggdGhlIGJyYW5jaCBiYWNrIHRvIG1hc3RlclxuICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHsgaXNMb2FkaW5nOiBpc01lcmdlTG9hZGluZywgY2FsbE1lcmdlVXNlckJyYW5jaCB9ID0gdXNlTWFzdGVyTWVyZ2VQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25NZXJnZSxcbiAgfSlcblxuICAvLyBTaW5jZSBvcmlnaW5hbCB0ZXh0IChHcmVlay9IZWJyZXcpIHNob3VsZCBub3QgYmUgZWRpdGVkLCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGVtIGluIG1lcmdlIHN0YXRlIHNpbmNlIHVzZXIgd2lsbCBub3QgbWVyZ2UvcHVzaCBjaGFuZ2VzLlxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXJkUmVzb3VyY2VJZCAmJiAhdXNpbmdPcmlnaW5hbEJpYmxlKSB7XG4gICAgICB1cGRhdGVNZXJnZVN0YXRlICYmIHVwZGF0ZU1lcmdlU3RhdGUoXG4gICAgICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgICAgICBzY3JpcHR1cmVDb25maWcudGl0bGUsXG4gICAgICAgIG1lcmdlRnJvbU1hc3RlcixcbiAgICAgICAgbWVyZ2VUb01hc3RlcixcbiAgICAgICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgICAgIGNhbGxNZXJnZVVzZXJCcmFuY2gsXG4gICAgICApXG4gICAgfVxuICB9LFtjYXJkUmVzb3VyY2VJZCwgc2NyaXB0dXJlQ29uZmlnLnRpdGxlLCBtZXJnZUZyb21NYXN0ZXIsIG1lcmdlVG9NYXN0ZXJdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVXBkYXRlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc1VwZGF0ZUxvYWRpbmddKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTWVyZ2VMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc01lcmdlTG9hZGluZ10pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlLCBlZGl0VmVyc2U6IG51bGwgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdhaXRpbmcgZm9yIGJyYW5jaCBmZXRjaCB0byBjb21wbGV0ZVxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn1gKVxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgLyoqXG4gICAqIHNldCBlZGl0IHN0YXRlIGZvciBzcGVjaWZpYyB2ZXJzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2VSZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgYmVpbmcgZWRpdGVkIG9yIGZpbmlzaGVkIGVkaXRcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nIC0gdHJ1ZSB3aGVuIGVkaXRpbmdcbiAgICovXG4gIGZ1bmN0aW9uIHNldEVkaXRWZXJzZSh2ZXJzZVJlZiwgZWRpdGluZykge1xuICAgIGlmIChlZGl0aW5nICYmICh2ZXJzZVJlZiAhPT0gZWRpdFZlcnNlKSkgeyAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNldCBmbGFnIHRoYXQgd2UgYXJlIGVkaXRpbmcgdGhpcyB2ZXJzZVxuICAgICAgc2V0U3RhdGUoeyBlZGl0VmVyc2U6IHZlcnNlUmVmIH0pXG4gICAgfSBlbHNlIGlmICghZWRpdGluZyAmJiAodmVyc2VSZWYgPT09IGVkaXRWZXJzZSkpIHsgLy8gY2xlYXIgZWRpdCBmbGFnIGlmIGl0IGlzIGZvciBjdXJyZW50IGVkaXQgdmVyc2VcbiAgICAgIHNldFN0YXRlKHsgZWRpdFZlcnNlOiBudWxsIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGlzYWJsZUNoYW5nZUJ1dHRvbnMgPSAhIWVkaXRWZXJzZSAvLyB3ZSBkb24ndCB3YW50IHRvIGFsbG93IGNsaWNraW5nIG9uIGNoYW5nZSBidXR0b25zIHdoaWxlIGVkaXRpbmdcblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICAgIC4uLihpc0hlYnJldyA/IHtsaW5lSGVpZ2h0OiAnMi4wZW0nfSA6IHt9KVxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8uYm9va0lkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5ib29rSWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuICBjb25zdCBzaGEgPSBmZXRjaGVkUmVzb3VyY2U/LnNoYVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICAgIG9uU2F2ZUVkaXRQYXRjaCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgZW1haWw6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5lbWFpbCxcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IgJiYgIXN0YXJ0U2F2ZSkgeyAvLyBpZiBlcnJvciB0aGVuIHNob3cgYWZ0ZXIgc2F2ZSBjb21wbGV0ZXMsIHNpbmNlIHdlIG1heSByZXRyeVxuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZH1fJHtjYXJkUmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICAgIHNhdmVJblByb2dyZXNzLmN1cnJlbnQgPSBmYWxzZTsgLy8gUmVzZXQgdGhlIGZsYWcgb24gZXJyb3JcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yLCBzdGFydFNhdmVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBmdW5jdGlvbiBfc2F2ZVN1Y2Nlc2Z1bCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY29uc3Qge2NsZWFyQ2hhbmdlc30gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogbnVsbCxcbiAgICAgICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgfSlcbiAgICAgIGRlbGF5KDEwMCkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEsIHVzZXJFZGl0QnJhbmNoTmFtZSlcbiAgICAgIH0pXG4gICAgICBzYXZlSW5Qcm9ncmVzcy5jdXJyZW50ID0gZmFsc2U7IC8vIFJlc2V0IHRoZSBmbGFnIG9uIHN1Y2Nlc3NcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9nQ2hhbmdlZChjb21tZW50LCBpbml0aWFsLCBmaW5hbCwgZGlmZiwgc2hhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke2NvbW1lbnR9IC0gc2hhOmAsIHNoYSlcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGluaXRpYWxgLCBpbml0aWFsKVxuICAgICAgY29uc29sZS5lcnJvcihgZmluYWxgLCBmaW5hbClcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGRpZmZgLCBkaWZmKVxuICAgIH1cblxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBpZiAoc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBTYXZlIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNraXBwaW5nIGR1cGxpY2F0ZSBjYWxsJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IHRydWU7XG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgbGV0IHVwbG9hZEZ1bmN0aW9uID0gb25TYXZlRWRpdFxuICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgdXBsb2FkRnVuY3Rpb24gPSBvblNhdmVFZGl0UGF0Y2ggLy8gaWYgd2UgYXJlIHNlbmRpbmcgdXAgYSBkaWZmcGF0Y2gsIHdlIHdpbGwgdXNlIHRoaXMgbWV0aG9kXG4gICAgICB9XG5cbiAgICAgIGxldCBzdWNjZXNzID0gYXdhaXQgdXBsb2FkRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lKS50aGVuKHIgPT4gcikuY2F0Y2goKCkgPT4gZmFsc2UpLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICBsZXQgZXJyb3IgPSBzdWNjZXNzID8gbnVsbCA6ICdzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJ1xuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHsgLy8gaWYgc2F2ZSBmYWlsZWQsIGF0dGVtcHQgYSByZXRyeVxuICAgICAgICAvLyBsb2dDaGFuZ2VkKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQsIHNlbnQnLCBzYXZlRnVsbEJpYmxlQ29udGVudD8uaW5pdGlhbCwgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/Lm5ldywgc2F2ZUNvbnRlbnQsIHNoYSlcbiAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkLCByZXRyeWluZyAtIGNvbnRleHQgbGluZXMgYXJlICR7Y29udGV4dExpbmVzfSwgZGlmZjpcXG5gLCBzYXZlQ29udGVudClcbiAgICAgICAgYXdhaXQgZGVsYXkoNTAwKSAvLyBzaW5jZSB3ZSBoYWQgYW4gZXJyb3IsIHdhaXQgZm9yIGRhdGEgdG8gdXBkYXRlIG9uIHNlcnZlciBiZWZvcmUgZ2V0dGluZyB0aGUgbGF0ZXN0XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLy8gZmV0Y2ggdGhlIGxhdGVzdCBib29rIGNvbnRlbnQsIHNvIHdlIGNhbiB0ZWxsIGlmIGxhdGVzdCBjaGFuZ2VzIHdlcmUgc2F2ZWQgYW5kIGhhdmUgdGhlIGxhdGVzdCBmaWxlIHNoYVxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmV0Y2hCaWJsZUJvb2soc2VydmVyLCBodHRwQ29uZmlnLCBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlLCBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSlcbiAgICAgICAgZXJyb3IgPSByZXN1bHRzPy5lcnJvclxuICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gc2F2ZUNvbnRlbnRcbiAgICAgICAgbGV0IGZpbGVTaGEgPSBudWxsXG4gICAgICAgIGNvbnN0IHNhdmVkQmlibGVVc2ZtID0gcmVzdWx0cz8uYmlibGVVc2ZtXG4gICAgICAgIGNvbnN0IGVkaXRlZEJpYmxlVXNmbSA9IHNhdmVGdWxsQmlibGVDb250ZW50Py5uZXdcbiAgICAgICAgbGV0IHVwVG9EYXRlID0gc2F2ZWRCaWJsZVVzZm0gPT09IGVkaXRlZEJpYmxlVXNmbSAvLyBjaGVjayBpZiBuZXcgYmlibGUgY29udGVudCBkaWZmZXJzIGZyb20gbGF0ZXN0IG9uIHJlcG9cblxuICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgaWYgKHVwVG9EYXRlKSB7IC8vIGlmIHRoZSBkYXRhIHdlIGFyZSB0cnlpbmcgdG8gc2F2ZSBtYXRjaGVzIHdoYXQgaXMgbm93IG9uIHRoZSBzZXJ2ZXIgdGhlcmUgaXMgbm90aGluZyB0byBkb1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZGF0YSB3YXMgY29ycmVjdGx5IHVwbG9hZGVkLCBzbyBub3RoaW5nIG1vcmUgdG8gZG8nKVxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5ld0NvbnRleHRMaW5lcyA9IGNvbnRleHRMaW5lcyArIDFcbiAgICAgICAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgICAgICAgIGF3YWl0IGRlbGF5KDEwMCkgLy8gYWxsb3cgVUkgdG8gdXBkYXRlIGJlZm9yZSBydW5uaW5nIGNvbXB1dGF0aW9uYWxseSBleHBlbnNpdmUgZnVuY3Rpb25cbiAgICAgICAgICAgICAgLy8gcmVnZW5lcmF0ZSB0aGUgcGF0Y2ggYWdhaW5zdCB0aGUgbGF0ZXN0IGNvbnRlbnQgYW5kIGFkZCBtb3JlIGxpbmVzIG9mIGNvbnRleHRcbiAgICAgICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgaGF2ZSBub3RpY2VkIHRoYXQgRENTIHdpbGwgZmFpbCB0aGUgcGF0Y2ggc29tZXRpbWVzLCBidXQgaWYgd2UgaW5jcmVhc2UgdGhlIGNvbnRleHQgbGluZSBjb3VudCBpdCB3aWxsIHN1Y2NlZWQsIHNvIHdlIGFyZSBpbmNyZWFzaW5nIHRoZSBjb250ZXh0IGxpbmUgY291bnRcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gY29udGV4dCBsaW5lcyBhcmUgbm93ICR7bmV3Q29udGV4dExpbmVzfWApXG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKHNhdmVGdWxsQmlibGVDb250ZW50Py5maWxlbmFtZSwgc2F2ZWRCaWJsZVVzZm0sIGVkaXRlZEJpYmxlVXNmbSwgZmFsc2UsIG5ld0NvbnRleHRMaW5lcylcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoXG4gICAgICAgICAgICAgIGZpbGVTaGEgPSByZXN1bHRzPy5zaGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VjY2VzcyA9IGF3YWl0IHVwbG9hZEZ1bmN0aW9uKHVzZXJFZGl0QnJhbmNoTmFtZSwgX3NhdmVDb250ZW50LCBmaWxlU2hhKSAvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICBsb2dDaGFuZ2VkKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQgb24gc2Vjb25kIGF0dGVtcHQsIHNlbnQnLCBzYXZlZEJpYmxlVXNmbSwgZWRpdGVkQmlibGVVc2ZtLCBfc2F2ZUNvbnRlbnQsIGZpbGVTaGEpXG4gICAgICAgICAgICAgIGVycm9yID0gJ3NhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQgb24gc2Vjb25kIGF0dGVtcHQnXG4gICAgICAgICAgICAgIG5ld0NvbnRleHRMaW5lcysrIC8vIGlmIGZhaWxlZCBpbmNyZWFzZSB0aGUgY291bnQgZm9yIG5leHQgYXR0ZW1wdFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzdWNjZXNzZnVsIG9uIHNlY29uZCB3aXRoIGRpZmYnLCBfc2F2ZUNvbnRlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV3Q29udGV4dExpbmVzID4gMTApIHtcbiAgICAgICAgICAgICAgbmV3Q29udGV4dExpbmVzID0gNFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0U3RhdGUoe2NvbnRleHRMaW5lczogbmV3Q29udGV4dExpbmVzfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFlcnJvciAmJiBzdWNjZXNzKSB7IC8vIGlmIG5vIGVycm9yIG1lc3NhZ2UgYW5kIHNhdmUgd2FzIGEgc3VjY2Vzc1xuICAgICAgICByZXR1cm4gX3NhdmVTdWNjZXNmdWwoKSAvLyBub3RoaW5nIHRvIGRvXG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gJHtlcnJvciB8fCAndW5rbm93biBzYXZlIGVycm9yJ31gKVxuICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgc2V0U3RhdGUoe3N0YXJ0U2F2ZTogZmFsc2V9KVxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IGZhbHNlOyAvLyBSZXNldCB0aGUgZmxhZyBvbiBmYWlsdXJlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuXG4gIH0sIFtzdGFydFNhdmUsIGVkaXRCcmFuY2hSZWFkeSwgc2hhXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge1NjcmlwdHVyZVJlZmVyZW5jZVR5cGV9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtOiBzdHJpbmcsIHJlZjogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSwgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBsZXQgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcbiAgICAgIGNvbnN0IGZyb250TWF0dGVyID0gcmVmPy52ZXJzZSA9PT0gJ2Zyb250J1xuXG4gICAgICBpZiAoZnJvbnRNYXR0ZXIgfHwgdmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBuZXcgVVNGTSBmb3IgY2FyZCAke2NhcmROdW19LCB2ZXJzZSAke3JlZj8udmVyc2V9On0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBpZiAoZnJvbnRNYXR0ZXIpIHsgLy8gZnJvbnQgbWF0dGVyIGdvZXMgYmVmb3JlIGZpcnN0IHZlcnNlXG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1swXVxuICAgICAgICAgIGNvbnN0IHByZWZpeExlbiA9IG9sZFZlcnNlLmluZGV4T2YoJ1xcbicpIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBmcm9udCBtYXR0ZXIgdGV4dFxuICAgICAgICAgIHZlcnNlQ2h1bmtzWzBdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHByZWZpeExlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSB2ZXJzZSB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xuICAgICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICAgIGxldCBjcmVhdGVFZGl0QnJhbmNoID0gIV91c2luZ1VzZXJCcmFuY2hcblxuICAgICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgeWV0IHVzaW5nIHRoZSB1c2VyIGJyYW5jaCwgY3JlYXRlIGl0XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgICAgfSkgLy8gd2Ugd2lsbCBuZWVkIGEgbmV3IHNoYSBmb3IgYm9vay9icmFuY2hcblxuICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoJylcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZ2V0dGluZyB2ZXJzZSBjaGFuZ2VzYClcbiAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIGxldCBiaWJsZVVzZm1Jbml0aWFsID0gZ2V0Q3VycmVudEJvb2soc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpIC8vIGdldCBvcmlnaW5hbCBVU0ZNXG4gICAgICAgICAgbGV0IGJpYmxlVXNmbU5ldyA9IGJpYmxlVXNmbUluaXRpYWwgLy8gbWFrZSBhIGNvcHkgdG8gZWRpdFxuICAgICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwpIHtcbiAgICAgICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm1OZXcpIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbU5ldywgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBiaWJsZVVzZm1OZXcgPSBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHNhdmVEaWZmUGF0Y2ggPSBmYWxzZSAvLyBpZiB0cnVlIHRoZW4gd2Ugd2lsbCBzZW5kIHVwIGEgZGlmZnBhdGNoIGluc3RlYWQgb2YgdGhlIHdob2xlIGJvb2tcbiAgICAgICAgICBsZXQgX3NhdmVGdWxsQmlibGVDb250ZW50ID0gbnVsbFxuICAgICAgICAgIGxldCBfc2F2ZUNvbnRlbnQgPSBiaWJsZVVzZm1OZXdcblxuICAgICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7dmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNffSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICAgIH0gZWxzZSB7IC8vIGlmIG9ubHkgY2hhbmdlZCBhIGZldyB2ZXJzZXMsIHdlIHdpbGwganVzdCBtYWtlIGEgZGlmZnBhdGNoIGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUgJiYgYmlibGVVc2ZtTmV3ICYmIGJpYmxlVXNmbUluaXRpYWwpIHsgLy8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQgdG8gbWFrZSBhIHBhdGNoXG4gICAgICAgICAgICAgIGlmIChiaWJsZVVzZm1Jbml0aWFsID09PSBiaWJsZVVzZm1OZXcpIHsgLy8gaWYgbm8gZGF0YSBjaGFuZ2UsIHRoZW4gc2tpcCBzYXZlIGJlY2F1c2UgRENTIGNyYXNoZXMgb24gYW4gZW1wdHkgcGF0Y2hcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gdGhlcmUgaXMgbm90aGluZyB0byBzYXZlLCBza2lwcGluZ2ApXG4gICAgICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChmaWxlbmFtZSwgYmlibGVVc2ZtSW5pdGlhbCwgYmlibGVVc2ZtTmV3LCBmYWxzZSwgY29udGV4dExpbmVzKVxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoID0gdHJ1ZVxuICAgICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSBkaWZmUGF0Y2ggLy8gcmVwbGFjZSB3aG9sZSBib29rIGNvbnRlbnQgd2l0aCBqdXN0IHBhdGNoIGRhdGEgKG11Y2ggZmFzdGVyIHVwbG9hZHMpXG4gICAgICAgICAgICAgIF9zYXZlRnVsbEJpYmxlQ29udGVudCA9IHsgIC8vIGtlZXAgdHJhY2sgb2YgcGF0Y2ggZGF0YSBpbiBjYXNlIHdlIG5lZWQgdG8gcmV0cnkgc2F2ZVxuICAgICAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgICAgIGluaXRpYWw6IGJpYmxlVXNmbUluaXRpYWwsXG4gICAgICAgICAgICAgICAgbmV3OiBiaWJsZVVzZm1OZXcsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtTmV3KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtTmV3LnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBzYXZlQ29udGVudDogX3NhdmVDb250ZW50LFxuICAgICAgICAgICAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgICAgICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgICAgICAgICAgIHN0YXJ0U2F2ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGE6IGluY29ycmVjdCBib29rICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSZWFkeUZvclNhdmUoKVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyIH0gPSBfcmVmZXJlbmNlIHx8IHt9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICBsZXQgbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2VcbiAgICBjb25zdCBfbWFwID0gbmV3U2VsZWN0aW9uc1xuICAgIGNvbnN0IG9yaWdpbmFsQm9va0lkID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnNSZWZzID0gX21hcCA/IFsuLi5fbWFwLmtleXMoKV0uam9pbignOycpIDogJycgLy8gY29tYmluZSBhbGwgdGhlIHZlcnNlIHJlZmVyZW5jZXMgaW50byBhIHNpbmdsZSB2ZXJzZSByZWZlcmVuY2UgZm9yIHRoZSBzZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgY29uc3QgYm9va3NOb3RTYW1lID0gcmVmZXJlbmNlPy5ib29rSWQgIT09IGN1cnJlbnRSZWZlcmVuY2U/LmJvb2tJZFxuXG4gICAgaWYgKGJvb2tzTm90U2FtZSB8fCAhYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW1xuICAgIG93bmVyLFxuICAgIHJlc291cmNlSWQsXG4gICAgYm9va0lkLFxuICAgIGxhbmd1YWdlSWRfLFxuICAgIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gICAgc2VsZWN0ZWRRdW90ZSxcbiAgXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBjbGVhciBzZXR0aW5ncyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICB9KVxuICB9LCBbX3JlZmVyZW5jZV0pXG5cbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgYWxpZ25lZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHtcbiAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogeyAuLi5wcmV2U3RhdGUudmVyc2VzQWxpZ25tZW50U3RhdHVzLCBbYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBdOiBhbGlnbmVkIH0sXG4gICAgfSkpXG4gIH1cblxuICBsZXQgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0gPSBzY3JpcHR1cmVDb25maWcgfHwge31cbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkLl92ZXJzZXNGb3JSZWYgY2hhbmdlZGAsIHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSlcbiAgICB9XG4gIH0sIFtfdmVyc2VzRm9yUmVmXSlcblxuICBpZiAoIV92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkgeyAvLyBpZiBlbXB0eSBvZiByZWZlcmVuY2VzLCBjcmVhdGUgc2luZ2xlIGVtcHR5IHJlZmVyZW5jZVxuICAgIF92ZXJzZXNGb3JSZWYgPSBbeyAuLi5yZWZlcmVuY2UgfV1cbiAgfVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSBfdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgW11cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBib29rSWRfID0gY3VycmVudFJlZmVyZW5jZT8uYm9va0lkIHx8IGJvb2tJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIGJvb2tJZDogYm9va0lkXyxcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRFZGl0VmVyc2U9e3NldEVkaXRWZXJzZX1cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlQWxpZ25CdXR0b25DbGljayA9ICgpID0+IHtcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7IC8vIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB2ZXJzZXMgc2hvd24gaW4gY2FyZCwgbmVlZCB0byBwcm9tcHQgdXNlciBmb3Igd2hpY2ggdmVyc2UgdG8gYWxpZ25cbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkgeyAvLyBpZiBvbmx5IG9uZSB2ZXJzZSBpcyBzaG93biBvbiBjYXJkLCB0aGVuIGVkaXQgdGhhdCB2ZXJzZVxuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuXG4gICAgbGV0IGFsaWduSWNvbiA9IG51bGxcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcblxuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJyAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBWYWxpZCdcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29sb3IgPSBkaXNhYmxlQ2hhbmdlQnV0dG9ucyA/ICcjQkJCJyA6ICcjMDAwJyAvLyBncmF5IG91dCBidXR0b24gaWYgZGlzYWJsZWRcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj17Y29sb3J9IC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIEludmFsaWQnXG4gICAgfVxuXG4gICAgaWYgKHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHJlc291cmNlSWQgIT09ICdPUklHSU5BTF9TT1VSQ0UnKSB7XG4gICAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGlkPXtgYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9XG4gICAgICAgICAga2V5PSdjaGVja2luZy1idXR0b24nXG4gICAgICAgICAgb25DbGljaz17ZGlzYWJsZUNoYW5nZUJ1dHRvbnMgPyBudWxsIDogaGFuZGxlQWxpZ25CdXR0b25DbGlja31cbiAgICAgICAgICB0aXRsZT17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIGFyaWEtbGFiZWw9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FsaWduSWNvbn1cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIE9ubHkgc2hvdyB0aGUgdXBkYXRlIGZyb20gbWFpbiBidXR0b24gaWYgc2NyaXB0dXJlIGlzIG5vdCBvcmlnaW5hbCB0ZXh0LlxuICAgICF1c2luZ09yaWdpbmFsQmlibGUgJiYgbmV3SXRlbXMucHVzaChcbiAgICAgIDw+XG4gICAgICAgIDxVcGRhdGVCcmFuY2hCdXR0b24gey4uLnVwZGF0ZUJ1dHRvblByb3BzfSBpc0xvYWRpbmc9e2lzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmV9Lz5cbiAgICAgICAgPEVycm9yRGlhbG9nIHRpdGxlPXtkaWFsb2dUaXRsZX0gY29udGVudD17ZGlhbG9nTWVzc2FnZX0gb3Blbj17aXNFcnJvckRpYWxvZ09wZW59IG9uQ2xvc2U9e29uQ2xvc2VFcnJvckRpYWxvZ30gaXNMb2FkaW5nPXsgaXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZSB9IGxpbms9e2RpYWxvZ0xpbmt9IGxpbmtUb29sdGlwPXtkaWFsb2dMaW5rVG9vbHRpcH0gLz5cbiAgICAgIDwvPlxuICAgIClcblxuICAgIHJldHVybiBuZXdJdGVtc1xuICB9XG5cbiAgY29uc3Qgc2VsZWN0aW9uQm9va09iamVjdHMgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIGJvb2tPYmplY3Q9e3NlbGVjdGlvbkJvb2tPYmplY3RzIHx8IHt9fVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZSB8fCAnJ31cbiAgICAgIHJlZlN0cmluZz17c2VsZWN0aW9uc1JlZnN9XG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkLCBzY3JpcHR1cmVUaXRsZSkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtkaXNhYmxlQ2hhbmdlQnV0dG9ucyB8fCBzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc30gLy8gZ3JheSBvdXQgc2F2ZSBidXR0b24gaWYgZGlzYWJsZWQsIGlmIHNhdmluZywgb3IgaWYgbm8gdW5zYXZlZCBjaGFuZ2VzXG4gICAgICAgIG9uU2F2ZUVkaXQ9eygpID0+IHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IHRydWUgfSl9XG4gICAgICAgIG9uUmVuZGVyVG9vbGJhcj17b25SZW5kZXJUb29sYmFyfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwic2NyaXB0dXJlLXBhbmUtbGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIDxWZXJzZVNlbGVjdG9yUG9wdXBcbiAgICAgICAgcmVzb3VyY2VJZD17cmVzb3VyY2VJZH1cbiAgICAgICAgb3Blbj17c2hvd0FsaWdubWVudFBvcHVwfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UgfSl9XG4gICAgICAgIHZlcnNlc0ZvclJlZj17dmVyc2VzRm9yUmVmfVxuICAgICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3ZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgICAgb25WZXJzZVNlbGVjdD17KHZlcnNlKSA9PiBzZXRTdGF0ZSh7XG4gICAgICAgICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2UsXG4gICAgICAgICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgIDwvU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIHJlcG8gYnJhbmNoIG9yIHRhZyBzdWNoIGFzIG1hc3RlciAqL1xuICBhcHBSZWY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpbmRleCBmb3IgY3VycmVudCBib29rIChlLmcuICcwMScgZm9yICdnZW4nKSovXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIGJvb2sgSUQgdG8gdXNlLCBvbGRlciBsaWJyYXJpZXMgdXNlZCBwcm9qZWN0SWQgKi9cbiAgICBib29rSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogb2xkZXIgbGlicmFyaWVzIHVzZWQgcHJvamVjdElkIGluc3RlYWQgb2YgYm9va0lkICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIG9wdGlvbmFsIHJlZi9icmFuY2ggdG8gdXNlICovXG4gICAgcmVmOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKiBvcHRpb25hbCBicmFuY2ggdG8gdXNlIChhbGlhcyBmb3IgcmVmKSAqL1xuICAgIGJyYW5jaDogUHJvcFR5cGVzLnN0cmluZyxcbiAgfSksXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgbG9hZGluZyBzdGF0ZSAqL1xuICBzZXRBcmVSZXNvdXJjZXNMb2FkaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBzYXZpbmcgc3RhdGUqL1xuICBzZXRBcmVSZXNvdXJjZXNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgbWVyZ2Ugc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ01lcmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHVwZGF0ZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHNhdmluZyBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgdGhlIGNhcmQncyBtZXJnZSBzdGF0ZSBpbiBhcHAgKi9cbiAgdXBkYXRlTWVyZ2VTdGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxF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
1595
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc285IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTAiLCJfaHR0cENvbmZpZyIsIl9odHRwQ29uZmlnMiIsIl9hdXRoZW50aWNhdGlvbiR1c2VyIiwiX3ZlcnNlc0ZvclJlZjMiLCJfdmVyc2VzRm9yUmVmNCIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZV8iLCJyZWZlcmVuY2UiLCJfcmVmMiRyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0Q2FyZHNMb2FkaW5nTWVyZ2UiLCJzZXRDYXJkc0xvYWRpbmdVcGRhdGUiLCJzZXRDYXJkc1NhdmluZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsInNhdmVJblByb2dyZXNzIiwidXNlUmVmIiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJjaGVja0ZvckVkaXRCcmFuY2giLCJjb250ZXh0TGluZXMiLCJjdXJyZW50UmVmZXJlbmNlIiwiZWRpdEJyYW5jaFJlYWR5IiwiZWRpdFZlcnNlIiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJyZWFkeUZvckZldGNoIiwicmVmIiwic2F2ZUNsaWNrZWQiLCJzYXZlQ29udGVudCIsInNhdmVEaWZmUGF0Y2giLCJzYXZlRnVsbEJpYmxlQ29udGVudCIsInNlbGVjdGlvbnMiLCJNYXAiLCJzZWxlY3Rpb25zUmVmcyIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl91c2VVc2VyTG9jYWxTdG9yYWdlIiwiX3VzZVVzZXJMb2NhbFN0b3JhZ2UyIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsIl91c2VTY3JpcHR1cmVTZXR0aW5ncyIsInNldFVybEVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hlZFJlc291cmNlIiwicmVwbyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJfdXNlVXNlckJyYW5jaCIsImNhcmRJZCIsIl91c2VVc2VyQnJhbmNoJHN0YXRlIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfdXNlVXNlckJyYW5jaCRhY3Rpb24iLCJhY3Rpb25zIiwic3RhcnRFZGl0QnJhbmNoIiwic3RhcnRFZGl0IiwiZmluaXNoRWRpdCIsIl91c2VCcmFuY2hNZXJnZXIiLCJ1c2VyQnJhbmNoIiwidG9rZW5pZCIsInRva2VuIiwic2hhMSIsIl91c2VCcmFuY2hNZXJnZXIkc3RhdCIsIm1lcmdlVG9NYXN0ZXIiLCJtZXJnZVN0YXR1cyIsIm1lcmdlRnJvbU1hc3RlciIsInVwZGF0ZVN0YXR1cyIsInVwZGF0ZUJ1dHRvblByb3BzIiwiaXNTYXZpbmciLCJvblVwZGF0ZSIsInJlbG9hZFJlc291cmNlIiwiY2FsbFVwZGF0ZVVzZXJCcmFuY2giLCJpc0Vycm9yRGlhbG9nT3BlbiIsIm9uQ2xvc2VFcnJvckRpYWxvZyIsImlzVXBkYXRlTG9hZGluZyIsImlzTG9hZGluZyIsImRpYWxvZ01lc3NhZ2UiLCJkaWFsb2dUaXRsZSIsImRpYWxvZ0xpbmsiLCJkaWFsb2dMaW5rVG9vbHRpcCIsIm9uTWVyZ2UiLCJsb2ciLCJfdXNlTWFzdGVyTWVyZ2VQcm9wcyIsImlzTWVyZ2VMb2FkaW5nIiwiY2FsbE1lcmdlVXNlckJyYW5jaCIsInVzZUVmZmVjdCIsInByZXZDYXJkc0xvYWRpbmciLCJ3b3JraW5nUmVmIiwic2NyaXB0dXJlVGl0bGUiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc284IiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwiY3JlYXRlRWxlbWVudCIsImVycm9yTWVzc2FnZSIsInNldEVkaXRWZXJzZSIsImVkaXRpbmciLCJkaXNhYmxlQ2hhbmdlQnV0dG9ucyIsIm9uTWVudUNsb3NlIiwibGFuZ3VhZ2VJZF8iLCJsYW5ndWFnZSIsImRpcmVjdGlvbiIsIl9yZWZlcmVuY2UiLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiX3VzZUNhcmRTdGF0ZSIsIl91c2VDYXJkU3RhdGUkc3RhdGUiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsIl91c2VDYXJkU3RhdGUkYWN0aW9ucyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwibGluZUhlaWdodCIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJvcmlnaW5hbFJlcG9VcmwiLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiY3VycmVudFZlcnNlUmVmIiwiX3NldFNhdmVkQ2hhbmdlcyIsInNvdXJjZUxhbmd1YWdlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50SW5kZXgiLCJzYXZlZCIsIl9yZWYzIiwiX3JlZjMkZ2V0Q2hhbmdlcyIsImdldENoYW5nZXMiLCJfcmVmMyRjbGVhckNoYW5nZXMiLCJjbGVhckNoYW5nZXMiLCJfcmVmMyRzdGF0ZSIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJfaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiX3NjcmlwdHVyZUNvbmZpZyRyZWZlIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiX3VzZUVkaXQiLCJjb250ZW50IiwiY29uZmlnIiwiZG9udENyZWF0ZUJyYW5jaCIsInRpbWVvdXQiLCJzZXJ2ZXJUaW1lT3V0IiwiYXV0aG9yIiwiZW1haWwiLCJ1c2VyIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIm9uU2F2ZUVkaXRQYXRjaCIsImN1cnJlbnQiLCJfc2F2ZVN1Y2Nlc2Z1bCIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiY2FyZEluZGV4IiwibG9nQ2hhbmdlZCIsImNvbW1lbnQiLCJpbml0aWFsIiwiZmluYWwiLCJkaWZmIiwiX3NhdmVFZGl0IiwiX3JlZjQiLCJfY2FsbGVlIiwidXBsb2FkRnVuY3Rpb24iLCJzdWNjZXNzIiwicmVzdWx0cyIsIl9zYXZlQ29udGVudCIsImZpbGVTaGEiLCJzYXZlZEJpYmxlVXNmbSIsImVkaXRlZEJpYmxlVXNmbSIsInVwVG9EYXRlIiwibmV3Q29udGV4dExpbmVzIiwiZGlmZlBhdGNoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJmcm9udE1hdHRlciIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInByZWZpeExlbiIsImluZGV4T2YiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiX2dldFJlYWR5Rm9yU2F2ZSIsIl9jYWxsZWUyIiwiY3JlYXRlRWRpdEJyYW5jaCIsImJpYmxlVXNmbUluaXRpYWwiLCJiaWJsZVVzZm1OZXciLCJtZXJnZUZhaWwiLCJfY2FyZE51bSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8iLCJfc3RhdGUiLCJfZ2V0Q2hhbmdlcyIsIl9yZWY1IiwiX3NhdmVEaWZmUGF0Y2giLCJfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJuZXdCb29rSnNvbiIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJfY2FyZEluZGV4IiwiX2NhcmROdW0yIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCRfMiIsIl9nZXRDaGFuZ2VzMiIsIl9zdGF0ZTIiLCJfbmV3VXNmbSIsIl9nZXRDaGFuZ2VzMyIsIm5ld1ZlcnNlVGV4dCIsIl9yZWY2IiwiX3VwZGF0ZWRWZXJzZU9iamVjdHMiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTEiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwYXJzZUludCIsInQwIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3JlZjciLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTMiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInZlcnNlSXRlbSIsInZvIiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhIiwic2V0IiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMiIsInN1YlJlZiIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsIndvcmRzIiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsIl92ZXJzZXNGb3JSZWYyIiwiX3JlZjgiLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJfY3VycmVudFZlcnNlRGF0YSR2ZXIiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZjkiLCJib29rSWRfIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJkZXRlcm1pbmluZ0JyYW5jaCIsIm9uQWxpZ25tZW50RmluaXNoIiwic2F2aW5nIiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIl9yZWYxMCIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJjb2xvciIsIm9uQ2xpY2siLCJjdXJzb3IiLCJGcmFnbWVudCIsIm9wZW4iLCJvbkNsb3NlIiwibGluayIsImxpbmtUb29sdGlwIiwic2VsZWN0aW9uQm9va09iamVjdHMiLCJvblNlbGVjdGlvbnMiLCJyZWZTdHJpbmciLCJzZXR0aW5nc1RpdGxlIiwiZ2V0Q3VzdG9tQ29tcG9uZW50IiwiaGlkZU1hcmtkb3duVG9nZ2xlIiwiZWRpdGFibGUiLCJvblZlcnNlU2VsZWN0IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyaXB0dXJlQ2FyZC9TY3JpcHR1cmVDYXJkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcclxuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXHJcbmltcG9ydCB7IGNvcmUsIFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXIgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcclxuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xyXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnXHJcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xyXG5pbXBvcnQge1xyXG4gIENhcmQsXHJcbiAgRXJyb3JEaWFsb2csXHJcbiAgRVJST1JfU1RBVEUsXHJcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcclxuICBVcGRhdGVCcmFuY2hCdXR0b24sXHJcbiAgdXNlQnJhbmNoTWVyZ2VyLFxyXG4gIHVzZUNhcmRTdGF0ZSxcclxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXHJcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcclxuICB1c2VVc2VyQnJhbmNoLFxyXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcclxuLy8gQHRzLWlnbm9yZVxyXG5pbXBvcnQgeyBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYgfSBmcm9tICd1dy1xdW90ZS1oZWxwZXJzJ1xyXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcclxuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xyXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXHJcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXHJcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXHJcbmltcG9ydCB7XHJcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcclxuICBmZXRjaEJpYmxlQm9vayxcclxuICBmaXhPY2N1cnJlbmNlLFxyXG4gIGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSxcclxuICBnZXRSZXNvdXJjZUxpbmssXHJcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxyXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcclxuICBpc09yaWdpbmFsQmlibGUsXHJcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXHJcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXHJcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcclxuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcclxuaW1wb3J0IHtcclxuICBOVF9PUklHX0xBTkcsXHJcbiAgT1JJR0lOQUxfU09VUkNFLFxyXG4gIE9UX09SSUdfTEFORyxcclxufSBmcm9tICcuLi8uLi91dGlscydcclxuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xyXG5pbXBvcnQgeyBnZXRQYXRjaCB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGVzJ1xyXG5pbXBvcnQgeyBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCBWZXJzZU9iamVjdHNUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcblxyXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcclxuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcclxuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XHJcblxyXG4vKipcclxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcclxuICogQHBhcmFtIHZlcnNlUmVmXHJcbiAqL1xyXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XHJcbiAgY29uc3Qge1xyXG4gICAgY2hhcHRlcixcclxuICAgIHZlcnNlLFxyXG4gICAgdmVyc2VEYXRhLFxyXG4gIH0gPSB2ZXJzZVJlZiB8fCB7fVxyXG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXHJcbiAgcmV0dXJuIHtcclxuICAgIGNoYXB0ZXIsXHJcbiAgICB2ZXJzZSxcclxuICAgIHZlcnNlT2JqZWN0cyxcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjJcclxuICovXHJcbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XHJcbiAgdmVyc2VzRm9yUmVmMSA9IHZlcnNlc0ZvclJlZjEgfHwgW11cclxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxyXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcclxuXHJcbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xyXG4gICAgYXJlU2FtZSA9IHRydWVcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxyXG4gICAgICBjb25zdCB2ZXJzZTIgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjJbaV0pXHJcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxyXG5cclxuICAgICAgaWYgKCFhcmVTYW1lKSB7XHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGFyZVNhbWVcclxufVxyXG5cclxuLyoqXHJcbiAqIGdldCB0aGUgVVNGTSBmb3IgYm9va0lkIGZyb20gc2NyaXB0dXJlQ29uZmlnLlxyXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlQ29uZmlnXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBib29rSWRcclxuICovXHJcbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50Qm9vayA9IChzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgPT4ge1xyXG4gIGNvbnN0IGxhdGVzdEJpYmxlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucHJvamVjdElkXHJcbiAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXHJcbiAgbGV0IGlzQm9va1ZhbGlkID0gZmFsc2VcclxuICBjb25zdCBib29rTmFtZSA9IGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZShmaWxlbmFtZSlcclxuICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXHJcbiAgaWYgKCFpc0Jvb2tWYWxpZCkge1xyXG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYW5kIFVTRk0gZmlsZSBpcyAke2ZpbGVuYW1lfWApXHJcbiAgfVxyXG4gIGlmIChsYXRlc3RCaWJsZT8udG9Mb3dlckNhc2UoKSAhPT0gYm9va0lkKSB7XHJcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBidXQgZmV0Y2hlZCBwcm9qZWN0SWQgaXMgJHtsYXRlc3RCaWJsZX1gKVxyXG4gICAgaXNCb29rVmFsaWQgPSBmYWxzZVxyXG4gIH1cclxuICBpZiAoaXNCb29rVmFsaWQpIHtcclxuICAgIGNvbnN0IGJpYmxlVXNmbSA9IHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtO1xyXG4gICAgaWYgKGJpYmxlVXNmbSkge1xyXG4gICAgICByZXR1cm4gYmlibGVVc2ZtXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gQmlibGUgVVNGTSBtaXNzaW5nYClcclxuICB9XHJcbiAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEV4cGVjdGVkICR7Ym9va0lkfSBidXQgZ290IGZpbGUgJHtmaWxlbmFtZX1gKVxyXG4gIHJldHVybiBudWxsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xyXG4gIGFwcFJlZixcclxuICBhdXRoZW50aWNhdGlvbixcclxuICBib29rSW5kZXgsXHJcbiAgY2FyZE51bSxcclxuICBjbGFzc2VzLFxyXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcclxuICBnZXRMYW5ndWFnZSxcclxuICBnZXRMZXhpY29uRGF0YSxcclxuICBncmVla1JlcG9VcmwsXHJcbiAgaGVicmV3UmVwb1VybCxcclxuICBodHRwQ29uZmlnLFxyXG4gIGlkLFxyXG4gIGlzTlQsXHJcbiAgbG9nZ2VkSW5Vc2VyLFxyXG4gIG9uTWluaW1pemUsXHJcbiAgb25SZXNvdXJjZUVycm9yLFxyXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXHJcbiAgcmVmZXJlbmNlOiByZWZlcmVuY2VfLFxyXG4gIHJlc291cmNlOiB7XHJcbiAgICBvd25lcixcclxuICAgIGxhbmd1YWdlSWQsXHJcbiAgICByZXNvdXJjZUlkLFxyXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxyXG4gIH0sXHJcbiAgcmVzb3VyY2VMaW5rLFxyXG4gIHNlbGVjdGVkUXVvdGUsXHJcbiAgc2VydmVyLFxyXG4gIHNldENhcmRzTG9hZGluZ01lcmdlLFxyXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcclxuICBzZXRDYXJkc1NhdmluZyxcclxuICBzZXRTYXZlZENoYW5nZXMsXHJcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXHJcbiAgdHJhbnNsYXRlLFxyXG4gIHRpdGxlLFxyXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXHJcbiAgdXBkYXRlTWVyZ2VTdGF0ZSxcclxufSkge1xyXG4gIGNvbnN0IHNhdmVJblByb2dyZXNzID0gUmVhY3QudXNlUmVmKGZhbHNlKTsgLy8gQWRkIHJlZiB0byB0cmFjayBzYXZlIG9wZXJhdGlvblxyXG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZV8/LmJvb2tJZCB8fCByZWZlcmVuY2VfPy5wcm9qZWN0SWQgLy8gb2xkZXIgdmVyc2lvbnMgdXNlIHByb2plY3RJZCwgc28gZmFsbCBiYWNrIHRvIHRoYXRcclxuICBjb25zdCByZWZlcmVuY2UgPSB7XHJcbiAgICBib29rSWQsXHJcbiAgICBjaGFwdGVyOiByZWZlcmVuY2VfPy5jaGFwdGVyLFxyXG4gICAgdmVyc2U6IHJlZmVyZW5jZV8/LnZlcnNlLFxyXG4gIH1cclxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XHJcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXHJcbiAgICBjb250ZXh0TGluZXM6IDQsXHJcbiAgICBjdXJyZW50UmVmZXJlbmNlOiBudWxsLFxyXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcclxuICAgIGVkaXRWZXJzZTogbnVsbCxcclxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXHJcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZTogbnVsbCxcclxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxyXG4gICAgcmVmOiBhcHBSZWYsXHJcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXHJcbiAgICBzYXZlQ29udGVudDogbnVsbCxcclxuICAgIHNhdmVEaWZmUGF0Y2g6IGZhbHNlLFxyXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IG51bGwsXHJcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXHJcbiAgICBzZWxlY3Rpb25zUmVmczogJycsXHJcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxyXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcclxuICAgIHVybEVycm9yOiBudWxsLFxyXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcclxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXHJcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXHJcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXHJcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcclxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXHJcbiAgfSlcclxuICBjb25zdCB7XHJcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXHJcbiAgICBjb250ZXh0TGluZXMsXHJcbiAgICBjdXJyZW50UmVmZXJlbmNlLFxyXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxyXG4gICAgZWRpdFZlcnNlLCAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGJlaW5nIGVkaXR0ZWRcclxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcclxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxyXG4gICAgcmVhZHlGb3JGZXRjaCxcclxuICAgIHJlZixcclxuICAgIHNhdmVDbGlja2VkLFxyXG4gICAgc2F2ZUNvbnRlbnQsXHJcbiAgICBzYXZlRGlmZlBhdGNoLFxyXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXHJcbiAgICBzZWxlY3Rpb25zLFxyXG4gICAgc2VsZWN0aW9uc1JlZnMsXHJcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXHJcbiAgICBzdGFydFNhdmUsXHJcbiAgICB1cmxFcnJvcixcclxuICAgIHVzaW5nVXNlckJyYW5jaCxcclxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcclxuICAgIHZlcnNlT2JqZWN0c01hcCxcclxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXHJcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXHJcbiAgICB2ZXJzZXNGb3JSZWYsXHJcbiAgfSA9IHN0YXRlXHJcblxyXG4gIGNvbnN0IFtmb250U2l6ZSwgc2V0Rm9udFNpemVdID0gdXNlVXNlckxvY2FsU3RvcmFnZShLRVlfRk9OVF9TSVpFX0JBU0UgKyBjYXJkTnVtLCAxMDApXHJcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcclxuXHJcbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcclxuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcclxuICB9XHJcblxyXG4gIGh0dHBDb25maWcgPSB7XHJcbiAgICAuLi5odHRwQ29uZmlnLFxyXG4gICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXHJcbiAgICBub0NhY2hlOiB0cnVlLFxyXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcclxuXHJcbiAgY29uc3Qge1xyXG4gICAgaXNOZXdUZXN0YW1lbnQsXHJcbiAgICBzY3JpcHR1cmVDb25maWcsXHJcbiAgICBzZXRTY3JpcHR1cmUsXHJcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcclxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxyXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XHJcbiAgICBhcHBSZWY6IHJlZixcclxuICAgIGNhcmROdW0sXHJcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXHJcbiAgICBncmVla1JlcG9VcmwsXHJcbiAgICBoZWJyZXdSZXBvVXJsLFxyXG4gICAgaHR0cENvbmZpZyxcclxuICAgIGlzTlQsXHJcbiAgICBsYW5ndWFnZUlkLFxyXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxyXG4gICAgb3duZXIsXHJcbiAgICByZWFkeUZvckZldGNoLFxyXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcclxuICAgIHJlc291cmNlSWQsXHJcbiAgICByZXNvdXJjZUxpbmssXHJcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcclxuICAgIHNlcnZlcixcclxuICAgIHRpdGxlLFxyXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcclxuICAgIHdob2xlQm9vazogdHJ1ZSxcclxuICB9KVxyXG5cclxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcclxuICAvLyBAdHMtaWdub3JlXHJcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcclxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXHJcblxyXG5cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcclxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxyXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uaW5jbHVkZXMobG9nZ2VkSW5Vc2VyKSkpKSAvLyBhbHNvIG1ha2Ugc3VyZSBub3QgYSB2ZXJzaW9uIHRhZ1xyXG5cclxuICBjb25zdCB7XHJcbiAgICBzdGF0ZToge1xyXG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxyXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXHJcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCxcclxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxyXG4gICAgfSxcclxuICAgIGFjdGlvbnM6IHtcclxuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXHJcbiAgICAgIGZpbmlzaEVkaXQsXHJcbiAgICB9LFxyXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcclxuICAgIGFwcFJlZixcclxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxyXG4gICAgYm9va0lkLFxyXG4gICAgY2FyZElkOiBpZCxcclxuICAgIGNhcmRSZXNvdXJjZUlkLFxyXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxyXG4gICAgbGFuZ3VhZ2VJZCxcclxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXHJcbiAgICBvd25lcixcclxuICAgIG9uUmVzb3VyY2VFcnJvcixcclxuICAgIHNlcnZlcixcclxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXHJcbiAgfSlcclxuXHJcbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7IHNlcnZlciwgb3duZXIsIHJlcG8sIHVzZXJCcmFuY2g6IHVzZXJFZGl0QnJhbmNoTmFtZSwgdG9rZW5pZDogYXV0aGVudGljYXRpb24/LnRva2VuPy5zaGExIH0pXHJcbiAgY29uc3Qge1xyXG4gICAgc3RhdGU6IHtcclxuICAgICAgbWVyZ2VTdGF0dXM6IG1lcmdlVG9NYXN0ZXIsXHJcbiAgICAgIHVwZGF0ZVN0YXR1czogbWVyZ2VGcm9tTWFzdGVyLFxyXG4gICAgfSxcclxuICB9ID0gX3VzZUJyYW5jaE1lcmdlclxyXG5cclxuICBjb25zdCB1cGRhdGVCdXR0b25Qcm9wcyA9IHVzZUNvbnRlbnRVcGRhdGVQcm9wcyh7XHJcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxyXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxyXG4gICAgb25VcGRhdGU6ICgpID0+IHtcclxuICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKSlcclxuICAgIH0sXHJcbiAgfSlcclxuXHJcbiAgY29uc3Qge1xyXG4gICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXHJcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcclxuICAgIG9uQ2xvc2VFcnJvckRpYWxvZyxcclxuICAgIGlzTG9hZGluZzogaXNVcGRhdGVMb2FkaW5nLFxyXG4gICAgZGlhbG9nTWVzc2FnZSxcclxuICAgIGRpYWxvZ1RpdGxlLFxyXG4gICAgZGlhbG9nTGluayxcclxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxyXG4gIH0gPSB1cGRhdGVCdXR0b25Qcm9wc1xyXG5cclxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xyXG4gICAgZmluaXNoRWRpdCgpXHJcbiAgICBjb25zb2xlLmxvZyhgb25NZXJnZSgpIHN3aXRjaGluZyBiYWNrIHRvIG1hc3RlciBhZnRlciBtZXJnZSBhcHBSZWY6YCwgYXBwUmVmKVxyXG4gICAgc2V0U3RhdGUoe1xyXG4gICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcclxuICAgICAgcmVmOiBhcHBSZWYsXHJcbiAgICB9KVxyXG4gICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcclxuICAgICAgc2V0U3RhdGUoe1xyXG4gICAgICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSwgLy8gdHJpZ2dlciByZWNoZWNrIG9mIHVzZXIgYnJhbmNoIHdoaWNoIHdpbGwgc3dpdGNoIHRoZSBicmFuY2ggYmFjayB0byBtYXN0ZXJcclxuICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBjb25zdCB7IGlzTG9hZGluZzogaXNNZXJnZUxvYWRpbmcsIGNhbGxNZXJnZVVzZXJCcmFuY2ggfSA9IHVzZU1hc3Rlck1lcmdlUHJvcHMoe1xyXG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcclxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcclxuICAgIG9uTWVyZ2UsXHJcbiAgfSlcclxuXHJcbiAgLy8gU2luY2Ugb3JpZ2luYWwgdGV4dCAoR3JlZWsvSGVicmV3KSBzaG91bGQgbm90IGJlIGVkaXRlZCwgZG8gbm90IGluY2x1ZGVcclxuICAvLyB0aGVtIGluIG1lcmdlIHN0YXRlIHNpbmNlIHVzZXIgd2lsbCBub3QgbWVyZ2UvcHVzaCBjaGFuZ2VzLlxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAoY2FyZFJlc291cmNlSWQgJiYgIXVzaW5nT3JpZ2luYWxCaWJsZSkge1xyXG4gICAgICB1cGRhdGVNZXJnZVN0YXRlICYmIHVwZGF0ZU1lcmdlU3RhdGUoXHJcbiAgICAgICAgY2FyZFJlc291cmNlSWQsXHJcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnLnRpdGxlLFxyXG4gICAgICAgIG1lcmdlRnJvbU1hc3RlcixcclxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxyXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxyXG4gICAgICAgIGNhbGxNZXJnZVVzZXJCcmFuY2gsXHJcbiAgICAgIClcclxuICAgIH1cclxuICB9LFtjYXJkUmVzb3VyY2VJZCwgc2NyaXB0dXJlQ29uZmlnLnRpdGxlLCBtZXJnZUZyb21NYXN0ZXIsIG1lcmdlVG9NYXN0ZXJdKVxyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKGlzVXBkYXRlTG9hZGluZykge1xyXG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcclxuICAgIH1cclxuICB9LCBbaXNVcGRhdGVMb2FkaW5nXSlcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmIChpc01lcmdlTG9hZGluZykge1xyXG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXHJcbiAgICB9XHJcbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcclxuXHJcbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcclxuICBsZXQgc2NyaXB0dXJlVGl0bGVcclxuXHJcbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XHJcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcclxuICB9XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcclxuXHJcbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcclxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXHJcbiAgICB9XHJcbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXHJcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlLCBlZGl0VmVyc2U6IG51bGwgfSlcclxuICAgIH1cclxuICB9LCBbcmVmZXJlbmNlXSlcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXHJcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2ggJiYgYnJhbmNoRGV0ZXJtaW5lZCApIHtcclxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn1gKVxyXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxyXG4gICAgfVxyXG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXHJcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XHJcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXHJcbiAgICB9XHJcbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxyXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXHJcblxyXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xyXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcclxuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcclxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxyXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cclxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcclxuICAgIH1cclxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXHJcblxyXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcclxuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXHJcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcclxuICB9IGVsc2Uge1xyXG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXHJcbiAgfVxyXG5cclxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cclxuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcclxuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XHJcbiAgICAgIGxhYmVsLFxyXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXHJcbiAgICAgIHNldFNjcmlwdHVyZSxcclxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogc2V0IGVkaXQgc3RhdGUgZm9yIHNwZWNpZmljIHZlcnNlXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlUmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIGJlaW5nIGVkaXRlZCBvciBmaW5pc2hlZCBlZGl0XHJcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nIC0gdHJ1ZSB3aGVuIGVkaXRpbmdcclxuICAgKi9cclxuICBmdW5jdGlvbiBzZXRFZGl0VmVyc2UodmVyc2VSZWYsIGVkaXRpbmcpIHtcclxuICAgIGlmIChlZGl0aW5nICYmICh2ZXJzZVJlZiAhPT0gZWRpdFZlcnNlKSkgeyAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNldCBmbGFnIHRoYXQgd2UgYXJlIGVkaXRpbmcgdGhpcyB2ZXJzZVxyXG4gICAgICBzZXRTdGF0ZSh7IGVkaXRWZXJzZTogdmVyc2VSZWYgfSlcclxuICAgIH0gZWxzZSBpZiAoIWVkaXRpbmcgJiYgKHZlcnNlUmVmID09PSBlZGl0VmVyc2UpKSB7IC8vIGNsZWFyIGVkaXQgZmxhZyBpZiBpdCBpcyBmb3IgY3VycmVudCBlZGl0IHZlcnNlXHJcbiAgICAgIHNldFN0YXRlKHsgZWRpdFZlcnNlOiBudWxsIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBkaXNhYmxlQ2hhbmdlQnV0dG9ucyA9ICEhZWRpdFZlcnNlIC8vIHdlIGRvbid0IHdhbnQgdG8gYWxsb3cgY2xpY2tpbmcgb24gY2hhbmdlIGJ1dHRvbnMgd2hpbGUgZWRpdGluZ1xyXG5cclxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcclxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcclxuICB9XHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcclxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcclxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcclxuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcclxuXHJcbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxyXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xyXG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXHJcblxyXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxyXG4gIGNvbnN0IHtcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxyXG4gICAgfSxcclxuICAgIGFjdGlvbnM6IHtcclxuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXHJcbiAgICB9LFxyXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxyXG5cclxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcclxuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxyXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxyXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxyXG5cclxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XHJcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcclxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcclxuICAgIC4uLihpc0hlYnJldyA/IHtsaW5lSGVpZ2h0OiAnMi4wZW0nfSA6IHt9KVxyXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxyXG5cclxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cclxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxyXG5cclxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcclxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXHJcbiAgfVxyXG5cclxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxyXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcclxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcclxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xyXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXHJcbiAgICBib29rSW5kZXgsXHJcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXHJcbiAgICBlbmFibGVFZGl0LFxyXG4gICAgZW5hYmxlQWxpZ25tZW50LFxyXG4gICAgaHR0cENvbmZpZyxcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGlzTmV3VGVzdGFtZW50LFxyXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcclxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIG9yaWdpbmFsUmVwb1VybCxcclxuICAgIHNjcmlwdHVyZUNvbmZpZyxcclxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxyXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxyXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxyXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxyXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxyXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxyXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcclxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XHJcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxyXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcclxuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XHJcblxyXG4gICAgaWYgKHNhdmVkKSB7XHJcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcclxuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxyXG5cclxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xyXG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxyXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XHJcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cclxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXHJcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xyXG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcclxuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXHJcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcclxuICAgICAgaWYgKGlkeCA+IDApIHtcclxuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcclxuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxyXG5cclxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGluZGV4XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LmJvb2tJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UuYm9va0lkLnRvVXBwZXJDYXNlKCkgOiAnJ1xyXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcclxuICB9XHJcblxyXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxyXG4gIGNvbnN0IHNoYSA9IGZldGNoZWRSZXNvdXJjZT8uc2hhXHJcblxyXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxyXG4gIGNvbnN0IHtcclxuICAgIGVycm9yOiBzYXZlRXJyb3IsXHJcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcclxuICAgIG9uU2F2ZUVkaXQsXHJcbiAgICBvblNhdmVFZGl0UGF0Y2gsXHJcbiAgfSA9IHVzZUVkaXQoe1xyXG4gICAgc2hhLFxyXG4gICAgb3duZXIsXHJcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcclxuICAgIGNvbmZpZzoge1xyXG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcclxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcclxuICAgICAgZG9udENyZWF0ZUJyYW5jaDogdHJ1ZSxcclxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgMTAwMDAsXHJcbiAgICAgIHNlcnZlcixcclxuICAgIH0sXHJcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcclxuICAgIGVtYWlsOiBhdXRoZW50aWNhdGlvbj8udXNlcj8uZW1haWwsXHJcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxyXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXHJcbiAgICBmaWxlcGF0aCxcclxuICAgIHJlcG8sXHJcbiAgfSlcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxyXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvciAmJiAhc3RhcnRTYXZlKSB7IC8vIGlmIGVycm9yIHRoZW4gc2hvdyBhZnRlciBzYXZlIGNvbXBsZXRlcywgc2luY2Ugd2UgbWF5IHJldHJ5XHJcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxyXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZH1fJHtjYXJkUmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcclxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IGZhbHNlOyAvLyBSZXNldCB0aGUgZmxhZyBvbiBlcnJvclxyXG4gICAgfVxyXG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yLCBzdGFydFNhdmVdKVxyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXHJcbiAgICBmdW5jdGlvbiBfc2F2ZVN1Y2Nlc2Z1bCgpIHtcclxuICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXHJcbiAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcclxuICAgICAgc2V0U3RhdGUoe1xyXG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXHJcblxyXG4gICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcclxuICAgICAgICAgIGNvbnN0IHtjbGVhckNoYW5nZXN9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cclxuICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXHJcbiAgICAgIHNldFN0YXRlKHtcclxuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxyXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXHJcbiAgICAgICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgc2F2ZUNvbnRlbnQ6IG51bGwsXHJcbiAgICAgICAgcmVmOiB1c2VyRWRpdEJyYW5jaE5hbWUsXHJcbiAgICAgIH0pXHJcbiAgICAgIGRlbGF5KDEwMCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxyXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhLCB1c2VyRWRpdEJyYW5jaE5hbWUpXHJcbiAgICAgIH0pXHJcbiAgICAgIHNhdmVJblByb2dyZXNzLmN1cnJlbnQgPSBmYWxzZTsgLy8gUmVzZXQgdGhlIGZsYWcgb24gc3VjY2Vzc1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGxvZ0NoYW5nZWQoY29tbWVudCwgaW5pdGlhbCwgZmluYWwsIGRpZmYsIHNoYSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGAke2NvbW1lbnR9IC0gc2hhOmAsIHNoYSlcclxuICAgICAgY29uc29sZS5lcnJvcihgaW5pdGlhbGAsIGluaXRpYWwpXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGZpbmFsYCwgZmluYWwpXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGRpZmZgLCBkaWZmKVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXHJcbiAgICAgIGlmIChzYXZlSW5Qcm9ncmVzcy5jdXJyZW50KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gU2F2ZSBhbHJlYWR5IGluIHByb2dyZXNzLCBza2lwcGluZyBkdXBsaWNhdGUgY2FsbCcpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IHRydWU7XHJcbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXHJcbiAgICAgIGxldCB1cGxvYWRGdW5jdGlvbiA9IG9uU2F2ZUVkaXRcclxuICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcclxuICAgICAgICB1cGxvYWRGdW5jdGlvbiA9IG9uU2F2ZUVkaXRQYXRjaCAvLyBpZiB3ZSBhcmUgc2VuZGluZyB1cCBhIGRpZmZwYXRjaCwgd2Ugd2lsbCB1c2UgdGhpcyBtZXRob2RcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHN1Y2Nlc3MgPSBhd2FpdCB1cGxvYWRGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUpLnRoZW4ociA9PiByKS5jYXRjaCgoKSA9PiBmYWxzZSkvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcclxuICAgICAgbGV0IGVycm9yID0gc3VjY2VzcyA/IG51bGwgOiAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCdcclxuXHJcbiAgICAgIGlmICghc3VjY2VzcykgeyAvLyBpZiBzYXZlIGZhaWxlZCwgYXR0ZW1wdCBhIHJldHJ5XHJcbiAgICAgICAgLy8gbG9nQ2hhbmdlZCgnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkLCBzZW50Jywgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/LmluaXRpYWwsIHNhdmVGdWxsQmlibGVDb250ZW50Py5uZXcsIHNhdmVDb250ZW50LCBzaGEpXHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkLCByZXRyeWluZyAtIGNvbnRleHQgbGluZXMgYXJlICR7Y29udGV4dExpbmVzfSwgZGlmZjpcXG5gLCBzYXZlQ29udGVudClcclxuICAgICAgICBhd2FpdCBkZWxheSg1MDApIC8vIHNpbmNlIHdlIGhhZCBhbiBlcnJvciwgd2FpdCBmb3IgZGF0YSB0byB1cGRhdGUgb24gc2VydmVyIGJlZm9yZSBnZXR0aW5nIHRoZSBsYXRlc3RcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgLy8gZmV0Y2ggdGhlIGxhdGVzdCBib29rIGNvbnRlbnQsIHNvIHdlIGNhbiB0ZWxsIGlmIGxhdGVzdCBjaGFuZ2VzIHdlcmUgc2F2ZWQgYW5kIGhhdmUgdGhlIGxhdGVzdCBmaWxlIHNoYVxyXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaEJpYmxlQm9vayhzZXJ2ZXIsIGh0dHBDb25maWcsIHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2UsIHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlKVxyXG4gICAgICAgIGVycm9yID0gcmVzdWx0cz8uZXJyb3JcclxuICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gc2F2ZUNvbnRlbnRcclxuICAgICAgICBsZXQgZmlsZVNoYSA9IG51bGxcclxuICAgICAgICBjb25zdCBzYXZlZEJpYmxlVXNmbSA9IHJlc3VsdHM/LmJpYmxlVXNmbVxyXG4gICAgICAgIGNvbnN0IGVkaXRlZEJpYmxlVXNmbSA9IHNhdmVGdWxsQmlibGVDb250ZW50Py5uZXdcclxuICAgICAgICBsZXQgdXBUb0RhdGUgPSBzYXZlZEJpYmxlVXNmbSA9PT0gZWRpdGVkQmlibGVVc2ZtIC8vIGNoZWNrIGlmIG5ldyBiaWJsZSBjb250ZW50IGRpZmZlcnMgZnJvbSBsYXRlc3Qgb24gcmVwb1xyXG5cclxuICAgICAgICBpZiAoIWVycm9yKSB7XHJcbiAgICAgICAgICBpZiAodXBUb0RhdGUpIHsgLy8gaWYgdGhlIGRhdGEgd2UgYXJlIHRyeWluZyB0byBzYXZlIG1hdGNoZXMgd2hhdCBpcyBub3cgb24gdGhlIHNlcnZlciB0aGVyZSBpcyBub3RoaW5nIHRvIGRvXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGRhdGEgd2FzIGNvcnJlY3RseSB1cGxvYWRlZCwgc28gbm90aGluZyBtb3JlIHRvIGRvJylcclxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWVcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdDb250ZXh0TGluZXMgPSBjb250ZXh0TGluZXMgKyAxXHJcbiAgICAgICAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XHJcbiAgICAgICAgICAgICAgYXdhaXQgZGVsYXkoMTAwKSAvLyBhbGxvdyBVSSB0byB1cGRhdGUgYmVmb3JlIHJ1bm5pbmcgY29tcHV0YXRpb25hbGx5IGV4cGVuc2l2ZSBmdW5jdGlvblxyXG4gICAgICAgICAgICAgIC8vIHJlZ2VuZXJhdGUgdGhlIHBhdGNoIGFnYWluc3QgdGhlIGxhdGVzdCBjb250ZW50IGFuZCBhZGQgbW9yZSBsaW5lcyBvZiBjb250ZXh0XHJcbiAgICAgICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgaGF2ZSBub3RpY2VkIHRoYXQgRENTIHdpbGwgZmFpbCB0aGUgcGF0Y2ggc29tZXRpbWVzLCBidXQgaWYgd2UgaW5jcmVhc2UgdGhlIGNvbnRleHQgbGluZSBjb3VudCBpdCB3aWxsIHN1Y2NlZWQsIHNvIHdlIGFyZSBpbmNyZWFzaW5nIHRoZSBjb250ZXh0IGxpbmUgY291bnRcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBjb250ZXh0IGxpbmVzIGFyZSBub3cgJHtuZXdDb250ZXh0TGluZXN9YClcclxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChzYXZlRnVsbEJpYmxlQ29udGVudD8uZmlsZW5hbWUsIHNhdmVkQmlibGVVc2ZtLCBlZGl0ZWRCaWJsZVVzZm0sIGZhbHNlLCBuZXdDb250ZXh0TGluZXMpXHJcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoXHJcbiAgICAgICAgICAgICAgZmlsZVNoYSA9IHJlc3VsdHM/LnNoYVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzdWNjZXNzID0gYXdhaXQgdXBsb2FkRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lLCBfc2F2ZUNvbnRlbnQsIGZpbGVTaGEpIC8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxyXG4gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICBsb2dDaGFuZ2VkKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQgb24gc2Vjb25kIGF0dGVtcHQsIHNlbnQnLCBzYXZlZEJpYmxlVXNmbSwgZWRpdGVkQmlibGVVc2ZtLCBfc2F2ZUNvbnRlbnQsIGZpbGVTaGEpXHJcbiAgICAgICAgICAgICAgZXJyb3IgPSAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCdcclxuICAgICAgICAgICAgICBuZXdDb250ZXh0TGluZXMrKyAvLyBpZiBmYWlsZWQgaW5jcmVhc2UgdGhlIGNvdW50IGZvciBuZXh0IGF0dGVtcHRcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHN1Y2Nlc3NmdWwgb24gc2Vjb25kIHdpdGggZGlmZicsIF9zYXZlQ29udGVudClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobmV3Q29udGV4dExpbmVzID4gMTApIHtcclxuICAgICAgICAgICAgICBuZXdDb250ZXh0TGluZXMgPSA0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0U3RhdGUoe2NvbnRleHRMaW5lczogbmV3Q29udGV4dExpbmVzfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghZXJyb3IgJiYgc3VjY2VzcykgeyAvLyBpZiBubyBlcnJvciBtZXNzYWdlIGFuZCBzYXZlIHdhcyBhIHN1Y2Nlc3NcclxuICAgICAgICByZXR1cm4gX3NhdmVTdWNjZXNmdWwoKSAvLyBub3RoaW5nIHRvIGRvXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gJHtlcnJvciB8fCAndW5rbm93biBzYXZlIGVycm9yJ31gKVxyXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXHJcbiAgICAgIHNldFN0YXRlKHtzdGFydFNhdmU6IGZhbHNlfSlcclxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IGZhbHNlOyAvLyBSZXNldCB0aGUgZmxhZyBvbiBmYWlsdXJlXHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGFydFNhdmUpIHtcclxuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcclxuICAgICAgfSBlbHNlIGlmICghc2hhKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcclxuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxyXG4gICAgICAgIF9zYXZlRWRpdCgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxyXG5cclxuICAvKipcclxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcclxuICAgKiBAcGFyYW0ge1NjcmlwdHVyZVJlZmVyZW5jZVR5cGV9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxyXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcclxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm06IHN0cmluZywgcmVmOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCB1cGRhdGVkVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlLCBjYXJkTnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBuZXdVc2ZtXHJcbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcclxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcclxuXHJcbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcclxuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cclxuICAgICAgbGV0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXHJcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcclxuICAgICAgY29uc3QgZnJvbnRNYXR0ZXIgPSByZWY/LnZlcnNlID09PSAnZnJvbnQnXHJcblxyXG4gICAgICBpZiAoZnJvbnRNYXR0ZXIgfHwgdmVyc2VJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXHJcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gbmV3IFVTRk0gZm9yIGNhcmQgJHtjYXJkTnVtfSwgdmVyc2UgJHtyZWY/LnZlcnNlfTp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcclxuICAgICAgICBpZiAoZnJvbnRNYXR0ZXIpIHsgLy8gZnJvbnQgbWF0dGVyIGdvZXMgYmVmb3JlIGZpcnN0IHZlcnNlXHJcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzWzBdXHJcbiAgICAgICAgICBjb25zdCBwcmVmaXhMZW4gPSBvbGRWZXJzZS5pbmRleE9mKCdcXG4nKSAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgZnJvbnQgbWF0dGVyIHRleHRcclxuICAgICAgICAgIHZlcnNlQ2h1bmtzWzBdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHByZWZpeExlbiArIDEpICsgbmV3VmVyc2VVc2ZtXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cclxuICAgICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSB2ZXJzZSB0ZXh0XHJcbiAgICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxyXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VXNmbVxyXG4gIH1cclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxyXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xyXG4gICAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcclxuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXHJcblxyXG4gICAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxyXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcclxuICAgICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxyXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxyXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcclxuICAgICAgICAgIHNldFN0YXRlKHtcclxuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcclxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXHJcbiAgICAgICAgICAgIHNoYTogbnVsbCxcclxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXHJcblxyXG4gICAgICAgICAgY29uc3QgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcclxuXHJcbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcclxuICAgICAgICAgICAgc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcclxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBlcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCcpXHJcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcclxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZ2V0dGluZyB2ZXJzZSBjaGFuZ2VzYClcclxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXHJcblxyXG4gICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IGJpYmxlVXNmbUluaXRpYWwgPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgLy8gZ2V0IG9yaWdpbmFsIFVTRk1cclxuICAgICAgICAgIGxldCBiaWJsZVVzZm1OZXcgPSBiaWJsZVVzZm1Jbml0aWFsIC8vIG1ha2UgYSBjb3B5IHRvIGVkaXRcclxuICAgICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxyXG5cclxuICAgICAgICAgIGlmIChiaWJsZVVzZm1Jbml0aWFsKSB7XHJcbiAgICAgICAgICAgIGxldCBjYXJkTnVtID0gMFxyXG5cclxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XHJcbiAgICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcclxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXHJcbiAgICAgICAgICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgICAgICAgIHJlZixcclxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcclxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbU5ldykgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcclxuICAgICAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm1OZXcsIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAobmV3VXNmbSkge1xyXG4gICAgICAgICAgICAgICAgICBiaWJsZVVzZm1OZXcgPSBuZXdVc2ZtXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgbGV0IHNhdmVEaWZmUGF0Y2ggPSBmYWxzZSAvLyBpZiB0cnVlIHRoZW4gd2Ugd2lsbCBzZW5kIHVwIGEgZGlmZnBhdGNoIGluc3RlYWQgb2YgdGhlIHdob2xlIGJvb2tcclxuICAgICAgICAgIGxldCBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQgPSBudWxsXHJcbiAgICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gYmlibGVVc2ZtTmV3XHJcblxyXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXHJcbiAgICAgICAgICAgIGxldCBuZXdCb29rSnNvblxyXG5cclxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcclxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXHJcbiAgICAgICAgICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcclxuICAgICAgICAgICAgICAgICAgcmVmLFxyXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxyXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXHJcblxyXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7dmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNffSlcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxyXG4gICAgICAgICAgfSBlbHNlIHsgLy8gaWYgb25seSBjaGFuZ2VkIGEgZmV3IHZlcnNlcywgd2Ugd2lsbCBqdXN0IG1ha2UgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3aG9sZSBib29rXHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxyXG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUgJiYgYmlibGVVc2ZtTmV3ICYmIGJpYmxlVXNmbUluaXRpYWwpIHsgLy8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQgdG8gbWFrZSBhIHBhdGNoXHJcbiAgICAgICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwgPT09IGJpYmxlVXNmbU5ldykgeyAvLyBpZiBubyBkYXRhIGNoYW5nZSwgdGhlbiBza2lwIHNhdmUgYmVjYXVzZSBEQ1MgY3Jhc2hlcyBvbiBhbiBlbXB0eSBwYXRjaFxyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHRoZXJlIGlzIG5vdGhpbmcgdG8gc2F2ZSwgc2tpcHBpbmdgKVxyXG4gICAgICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcclxuICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChmaWxlbmFtZSwgYmlibGVVc2ZtSW5pdGlhbCwgYmlibGVVc2ZtTmV3LCBmYWxzZSwgY29udGV4dExpbmVzKVxyXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2ggPSB0cnVlXHJcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoIC8vIHJlcGxhY2Ugd2hvbGUgYm9vayBjb250ZW50IHdpdGgganVzdCBwYXRjaCBkYXRhIChtdWNoIGZhc3RlciB1cGxvYWRzKVxyXG4gICAgICAgICAgICAgIF9zYXZlRnVsbEJpYmxlQ29udGVudCA9IHsgIC8vIGtlZXAgdHJhY2sgb2YgcGF0Y2ggZGF0YSBpbiBjYXNlIHdlIG5lZWQgdG8gcmV0cnkgc2F2ZVxyXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUsXHJcbiAgICAgICAgICAgICAgICBpbml0aWFsOiBiaWJsZVVzZm1Jbml0aWFsLFxyXG4gICAgICAgICAgICAgICAgbmV3OiBiaWJsZVVzZm1OZXcsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbU5ldykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtTmV3LnN1YnN0cmluZygwLCAxMDApfS4uLmApXHJcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXHJcbiAgICAgICAgICAgIHNldFN0YXRlKHtcclxuICAgICAgICAgICAgICBzYXZlQ29udGVudDogX3NhdmVDb250ZW50LFxyXG4gICAgICAgICAgICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcclxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoLFxyXG4gICAgICAgICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgc3RhcnRTYXZlOiB0cnVlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YTogaW5jb3JyZWN0IGJvb2sgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWApXHJcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YSAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcclxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRSZWFkeUZvclNhdmUoKVxyXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXHJcblxyXG4gIC8vIEB0cy1pZ25vcmVcclxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxyXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcclxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2VcclxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXHJcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxyXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcclxuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxyXG5cclxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXHJcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXHJcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxyXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcclxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXHJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXHJcbiAgICApIHtcclxuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxyXG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XHJcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cclxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXHJcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXHJcblxyXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXHJcbiAgICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICAgIGNoYXB0ZXIsXHJcbiAgICAgICAgICAgIHZlcnNlLFxyXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXHJcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXHJcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcclxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxyXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxyXG5cclxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcclxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxyXG5cclxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcclxuXHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcclxuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XHJcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxyXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxyXG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXHJcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXHJcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXHJcblxyXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xyXG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcclxuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxyXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXHJcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXHJcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcclxuXHJcbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xyXG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxyXG5cclxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxyXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XHJcbiAgICAgICAgICAgICkpKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcclxuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxyXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cclxuXHJcbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXHJcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcclxuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnNSZWZzID0gX21hcCA/IFsuLi5fbWFwLmtleXMoKV0uam9pbignOycpIDogJycgLy8gY29tYmluZSBhbGwgdGhlIHZlcnNlIHJlZmVyZW5jZXMgaW50byBhIHNpbmdsZSB2ZXJzZSByZWZlcmVuY2UgZm9yIHRoZSBzZWxlY3Rpb25zXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYm9va3NOb3RTYW1lID0gcmVmZXJlbmNlPy5ib29rSWQgIT09IGN1cnJlbnRSZWZlcmVuY2U/LmJvb2tJZFxyXG5cclxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xyXG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXHJcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxyXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XHJcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XHJcbiAgICAgIGlmICghYXJlTWFwc1RoZVNhbWUoc2VsZWN0aW9ucyB8fCAobmV3IE1hcCgpKSwgbmV3U2VsZWN0aW9ucykpIHtcclxuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcclxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXHJcbiAgICB9XHJcbiAgfSwgW1xyXG4gICAgb3duZXIsXHJcbiAgICByZXNvdXJjZUlkLFxyXG4gICAgYm9va0lkLFxyXG4gICAgbGFuZ3VhZ2VJZF8sXHJcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcclxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXHJcbiAgICBzZWxlY3RlZFF1b3RlLFxyXG4gIF0pXHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxyXG4gICAgc2V0U3RhdGUoe1xyXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXHJcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXHJcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXHJcbiAgICB9KVxyXG4gIH0sIFtfcmVmZXJlbmNlXSlcclxuXHJcbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgYWxpZ25lZDogYm9vbGVhbikgPT4ge1xyXG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xyXG4gICAgICAuLi5wcmV2U3RhdGUsXHJcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogeyAuLi5wcmV2U3RhdGUudmVyc2VzQWxpZ25tZW50U3RhdHVzLCBbYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBdOiBhbGlnbmVkIH0sXHJcbiAgICB9KSlcclxuICB9XHJcblxyXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XHJcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkLl92ZXJzZXNGb3JSZWYgY2hhbmdlZGAsIHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSlcclxuICAgIH1cclxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXHJcblxyXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXHJcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXHJcbiAgfVxyXG5cclxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcclxuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgW11cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XHJcbiAgICBjb25zdCBib29rSWRfID0gY3VycmVudFJlZmVyZW5jZT8uYm9va0lkIHx8IGJvb2tJZFxyXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcclxuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcclxuICAgICAgY2hhcHRlcixcclxuICAgICAgYm9va0lkOiBib29rSWRfLFxyXG4gICAgICB2ZXJzZSxcclxuICAgIH1cclxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xyXG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxyXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxyXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxyXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXHJcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxyXG4gICAgfVxyXG5cclxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxyXG5cclxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XHJcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8U2NyaXB0dXJlUGFuZVxyXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XHJcbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XHJcbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cclxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XHJcbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XHJcbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxyXG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cclxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XHJcbiAgICAgICAgaXNOVD17aXNOVF99XHJcbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XHJcbiAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxyXG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XHJcbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxyXG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cclxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XHJcbiAgICAgICAgc2V0RWRpdFZlcnNlPXtzZXRFZGl0VmVyc2V9XHJcbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxyXG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxyXG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxyXG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxyXG4gICAgICAvPlxyXG4gICAgKVxyXG4gIH0pXHJcblxyXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7IC8vIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB2ZXJzZXMgc2hvd24gaW4gY2FyZCwgbmVlZCB0byBwcm9tcHQgdXNlciBmb3Igd2hpY2ggdmVyc2UgdG8gYWxpZ25cclxuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcclxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHsgLy8gaWYgb25seSBvbmUgdmVyc2UgaXMgc2hvd24gb24gY2FyZCwgdGhlbiBlZGl0IHRoYXQgdmVyc2VcclxuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcclxuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxyXG5cclxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcclxuXHJcbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxyXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xyXG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXHJcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcclxuXHJcbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xyXG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJyAvPlxyXG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgY29sb3IgPSBkaXNhYmxlQ2hhbmdlQnV0dG9ucyA/ICcjQkJCJyA6ICcjMDAwJyAvLyBncmF5IG91dCBidXR0b24gaWYgZGlzYWJsZWRcclxuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPXtjb2xvcn0gLz5cclxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xyXG4gICAgICBuZXdJdGVtcy5wdXNoKFxyXG4gICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxyXG4gICAgICAgICAga2V5PSdjaGVja2luZy1idXR0b24nXHJcbiAgICAgICAgICBvbkNsaWNrPXtkaXNhYmxlQ2hhbmdlQnV0dG9ucyA/IG51bGwgOiBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxyXG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cclxuICAgICAgICAgIGFyaWEtbGFiZWw9e2FsaWduQnV0dG9uVGV4dH1cclxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2FsaWduSWNvbn1cclxuICAgICAgICA8L0ljb25CdXR0b24+XHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICAvLyBPbmx5IHNob3cgdGhlIHVwZGF0ZSBmcm9tIG1haW4gYnV0dG9uIGlmIHNjcmlwdHVyZSBpcyBub3Qgb3JpZ2luYWwgdGV4dC5cclxuICAgICF1c2luZ09yaWdpbmFsQmlibGUgJiYgbmV3SXRlbXMucHVzaChcclxuICAgICAgPD5cclxuICAgICAgICA8VXBkYXRlQnJhbmNoQnV0dG9uIHsuLi51cGRhdGVCdXR0b25Qcm9wc30gaXNMb2FkaW5nPXtpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlfS8+XHJcbiAgICAgICAgPEVycm9yRGlhbG9nIHRpdGxlPXtkaWFsb2dUaXRsZX0gY29udGVudD17ZGlhbG9nTWVzc2FnZX0gb3Blbj17aXNFcnJvckRpYWxvZ09wZW59IG9uQ2xvc2U9e29uQ2xvc2VFcnJvckRpYWxvZ30gaXNMb2FkaW5nPXsgaXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZSB9IGxpbms9e2RpYWxvZ0xpbmt9IGxpbmtUb29sdGlwPXtkaWFsb2dMaW5rVG9vbHRpcH0gLz5cclxuICAgICAgPC8+XHJcbiAgICApXHJcblxyXG4gICAgcmV0dXJuIG5ld0l0ZW1zXHJcbiAgfVxyXG5cclxuICBjb25zdCBzZWxlY3Rpb25Cb29rT2JqZWN0cyA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxyXG4gICAgICBib29rT2JqZWN0PXtzZWxlY3Rpb25Cb29rT2JqZWN0cyB8fCB7fX1cclxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cclxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcclxuICAgICAgfX1cclxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlIHx8ICcnfVxyXG4gICAgICByZWZTdHJpbmc9e3NlbGVjdGlvbnNSZWZzfVxyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxyXG4gICAgPlxyXG4gICAgICA8Q2FyZFxyXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XHJcbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxyXG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XHJcbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxyXG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XHJcbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cclxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxyXG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cclxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cclxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxyXG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cclxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cclxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cclxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cclxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxyXG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxyXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cclxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCwgc2NyaXB0dXJlVGl0bGUpIDogbnVsbH1cclxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XHJcbiAgICAgICAgc2F2ZWQ9e2Rpc2FibGVDaGFuZ2VCdXR0b25zIHx8IHN0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfSAvLyBncmF5IG91dCBzYXZlIGJ1dHRvbiBpZiBkaXNhYmxlZCwgaWYgc2F2aW5nLCBvciBpZiBubyB1bnNhdmVkIGNoYW5nZXNcclxuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxyXG4gICAgICAgIG9uUmVuZGVyVG9vbGJhcj17b25SZW5kZXJUb29sYmFyfVxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cclxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L0NhcmQ+XHJcbiAgICAgIDxWZXJzZVNlbGVjdG9yUG9wdXBcclxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxyXG4gICAgICAgIG9wZW49e3Nob3dBbGlnbm1lbnRQb3B1cH1cclxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UgfSl9XHJcbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XHJcbiAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XHJcbiAgICAgICAgb25WZXJzZVNlbGVjdD17KHZlcnNlKSA9PiBzZXRTdGF0ZSh7XHJcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcclxuICAgICAgICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXHJcbiAgICAgICAgfSl9XHJcbiAgICAgIC8+XHJcbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XHJcbiAgKVxyXG59XHJcblxyXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcclxuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXHJcbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXHJcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cclxuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcclxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xyXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcclxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXHJcbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxyXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xyXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXHJcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cclxuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxyXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xyXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxyXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xyXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcclxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXHJcbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxyXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXHJcbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcclxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xyXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXHJcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cclxuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcclxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xyXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXHJcbiAgLyoqIHVzZXItbmFtZSAqL1xyXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcclxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xyXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxyXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxyXG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcclxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXHJcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xyXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xyXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXHJcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xyXG4gICAgLyoqIGJvb2sgSUQgdG8gdXNlLCBvbGRlciBsaWJyYXJpZXMgdXNlZCBwcm9qZWN0SWQgKi9cclxuICAgIGJvb2tJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxyXG4gICAgLyoqIG9sZGVyIGxpYnJhcmllcyB1c2VkIHByb2plY3RJZCBpbnN0ZWFkIG9mIGJvb2tJZCAqL1xyXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLFxyXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cclxuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxyXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXHJcbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXHJcbiAgfSksXHJcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xyXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xyXG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xyXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxyXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXHJcbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxyXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXHJcbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXHJcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xyXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXHJcbiAgfSksXHJcbiAgLyoqIHJlc291cmNlTGluayAqL1xyXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcclxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xyXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXHJcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXHJcbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXHJcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBsb2FkaW5nIHN0YXRlICovXHJcbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBzYXZpbmcgc3RhdGUqL1xyXG4gIHNldEFyZVJlc291cmNlc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xyXG4gIHNldENhcmRzTG9hZGluZ01lcmdlOiBQcm9wVHlwZXMuZnVuYyxcclxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgdXBkYXRlIHN0YXR1cyAqL1xyXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHNhdmluZyBzdGF0dXMgKi9cclxuICBzZXRDYXJkc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXHJcbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcclxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xyXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcclxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXHJcbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcclxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xyXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXHJcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB0aGUgY2FyZCdzIG1lcmdlIHN0YXRlIGluIGFwcCAqL1xyXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxyXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXHJcbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcclxufVxyXG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1QkFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFPLFdBQUEsOEJBQUFDLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBQyxN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
package/package.json CHANGED
@@ -1,109 +1,108 @@
1
- {
2
- "name": "single-scripture-rcl",
3
- "description": "A React Component Library for Rendering a Single Scripture Resource.",
4
- "version": "3.4.28-beta.1",
5
- "repository": {
6
- "type": "git",
7
- "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
8
- },
9
- "license": "MIT",
10
- "main": "dist/index.js",
11
- "files": [
12
- "dist/*"
13
- ],
14
- "scripts": {
15
- "test": "jest",
16
- "start": "styleguidist server NODE_OPTIONS=--max_old_space_size=4096",
17
- "build": "styleguidist build",
18
- "prepublishOnly": "rm -fr ./dist && babel ./src --out-dir ./dist -s inline --extensions \".ts,.tsx,.js\"",
19
- "pack-next": "yarn version --prerelease --no-git-tag-version && yarn && yarn run prepublishOnly && yarn pack"
20
- },
21
- "peerDependencies": {
22
- "@material-ui/core": "4.11.0",
23
- "@material-ui/icons": "^4.9.1",
24
- "@material-ui/lab": "4.0.0-alpha.56",
25
- "bible-reference-range": "^1.1.0",
26
- "gitea-react-toolkit": "^1.11.0",
27
- "prop-types": "^15.x",
28
- "react": "^17.x",
29
- "react-dom": "^17.x",
30
- "react-icons": "^4.8.0",
31
- "scripture-resources-rcl": "^5.5.8",
32
- "tc-ui-toolkit": "^5.3.3",
33
- "translation-helps-rcl": "^3.6.3-beta.3",
34
- "word-aligner": "^1.0.0",
35
- "word-aligner-rcl": "^0.9.2"
36
- },
37
- "devDependencies": {
38
- "@babel/cli": "^7.23.0",
39
- "@babel/core": "^7.23.2",
40
- "@babel/plugin-proposal-class-properties": "^7.18.6",
41
- "@babel/preset-env": "^7.23.2",
42
- "@babel/preset-flow": "^7.22.15",
43
- "@babel/preset-react": "^7.22.15",
44
- "@emotion/react": "^11.10.5",
45
- "@emotion/styled": "^11.10.5",
46
- "@jest/globals": "^29.4.2",
47
- "@material-ui/core": "^4.11.2",
48
- "@material-ui/icons": "^4.11.2",
49
- "@material-ui/lab": "^4.0.0-alpha.57",
50
- "@mui/icons-material": "5.11.0",
51
- "@mui/lab": "5.0.0-alpha.119",
52
- "@mui/material": "5.11.8",
53
- "@mui/styles": "5.11.7",
54
- "@testing-library/react": "12.1.2",
55
- "@types/jest": "^29.5.4",
56
- "@typescript-eslint/eslint-plugin": "^4.14.1",
57
- "@unfoldingword/eslint-config": "1.3.0",
58
- "babel-loader": "^8.1.0",
59
- "babel-plugin-transform-class-properties": "^6.24.1",
60
- "bible-reference-range": "^1.1.0",
61
- "core-js": "3.7.0",
62
- "css-loader": "^5.0.1",
63
- "eslint": "^7.16.0",
64
- "eslint-config-prettier": "6.15.0",
65
- "eslint-config-react-app": "^6.0.0",
66
- "eslint-config-recommended": "4.1.0",
67
- "eslint-plugin-chai-friendly": "0.6.0",
68
- "eslint-plugin-cypress": "2.11.2",
69
- "eslint-plugin-flowtype": "^5.2.0",
70
- "eslint-plugin-import": "2.22.1",
71
- "eslint-plugin-jest": "24.1.3",
72
- "eslint-plugin-jsdoc": "^31.4.0",
73
- "eslint-plugin-jsx-a11y": "^6.4.1",
74
- "eslint-plugin-prettier": "3.1.4",
75
- "eslint-plugin-react": "7.21.5",
76
- "eslint-plugin-react-hooks": "^4.2.0",
77
- "fs-extra": "^11.1.1",
78
- "gitea-react-toolkit": "1.11.0",
79
- "jest": "^29.6.4",
80
- "path-extra": "^4.3.0",
81
- "prop-types": "^15.7.2",
82
- "react": "^17.0.1",
83
- "react-dom": "^17.0.1",
84
- "react-icons": "^4.8.0",
85
- "react-styleguidist": "11.2.0",
86
- "scripture-resources-rcl": "^5.5.8",
87
- "style-loader": "^2.0.0",
88
- "tc-ui-toolkit": "^5.3.3",
89
- "translation-helps-rcl": "^3.6.3-beta.3",
90
- "ts-jest": "^29.1.1",
91
- "use-deep-compare-effect": "1.8.1",
92
- "usfm-js": "3.4.2",
93
- "webpack": "^4.44.2",
94
- "word-aligner": "^1.0.0",
95
- "word-aligner-rcl": "0.9.2"
96
- },
97
- "dependencies": {
98
- "@react-hookz/deep-equal": "^1.0.4",
99
- "@types/react": "^17.0.0",
100
- "@types/react-dom": "^17.0.0",
101
- "diff": "^5.2.0",
102
- "lodash": "^4.17.21",
103
- "react-docgen-typescript": "^1.20.5",
104
- "source-map-loader": "^1.1.3",
105
- "styled-components": "^5.2.1",
106
- "ts-loader": "^8.0.12",
107
- "typescript": "^5.2.2"
108
- }
109
- }
1
+ {
2
+ "name": "single-scripture-rcl",
3
+ "description": "A React Component Library for Rendering a Single Scripture Resource.",
4
+ "version": "3.4.28-beta.4",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
8
+ },
9
+ "license": "MIT",
10
+ "main": "dist/index.js",
11
+ "files": [
12
+ "dist/*"
13
+ ],
14
+ "scripts": {
15
+ "test": "jest",
16
+ "start": "styleguidist server NODE_OPTIONS=--max_old_space_size=4096",
17
+ "build": "styleguidist build",
18
+ "prepublishOnly": "rm -fr ./dist && babel ./src --out-dir ./dist -s inline --extensions \".ts,.tsx,.js\"",
19
+ "pack-next": "yarn version --prerelease --no-git-tag-version && yarn && yarn run prepublishOnly && yarn pack"
20
+ },
21
+ "peerDependencies": {
22
+ "@material-ui/core": "4.11.0",
23
+ "@material-ui/icons": "^4.9.1",
24
+ "@material-ui/lab": "4.0.0-alpha.56",
25
+ "bible-reference-range": "^1.1.0",
26
+ "gitea-react-toolkit": "^1.11.0",
27
+ "prop-types": "^15.x",
28
+ "react": "^17.x",
29
+ "react-dom": "^17.x",
30
+ "react-icons": "^4.8.0",
31
+ "scripture-resources-rcl": "^5.5.8",
32
+ "tc-ui-toolkit": "^5.3.3",
33
+ "translation-helps-rcl": "3.6.3-beta.8",
34
+ "word-aligner": "^1.0.0",
35
+ "word-aligner-rcl": "^0.9.2"
36
+ },
37
+ "devDependencies": {
38
+ "@babel/cli": "^7.23.0",
39
+ "@babel/core": "^7.23.2",
40
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
41
+ "@babel/preset-env": "^7.23.2",
42
+ "@babel/preset-flow": "^7.22.15",
43
+ "@babel/preset-react": "^7.22.15",
44
+ "@emotion/react": "^11.10.5",
45
+ "@emotion/styled": "^11.10.5",
46
+ "@jest/globals": "^29.4.2",
47
+ "@material-ui/core": "^4.11.2",
48
+ "@material-ui/icons": "^4.11.2",
49
+ "@material-ui/lab": "^4.0.0-alpha.57",
50
+ "@mui/icons-material": "5.11.0",
51
+ "@mui/lab": "5.0.0-alpha.119",
52
+ "@mui/material": "5.11.8",
53
+ "@mui/styles": "5.11.7",
54
+ "@types/jest": "^29.5.4",
55
+ "@typescript-eslint/eslint-plugin": "^4.14.1",
56
+ "@unfoldingword/eslint-config": "1.3.0",
57
+ "babel-loader": "^8.1.0",
58
+ "babel-plugin-transform-class-properties": "^6.24.1",
59
+ "bible-reference-range": "^1.1.0",
60
+ "core-js": "3.7.0",
61
+ "css-loader": "^5.0.1",
62
+ "eslint": "^7.16.0",
63
+ "eslint-config-prettier": "6.15.0",
64
+ "eslint-config-react-app": "^6.0.0",
65
+ "eslint-config-recommended": "4.1.0",
66
+ "eslint-plugin-chai-friendly": "0.6.0",
67
+ "eslint-plugin-cypress": "2.11.2",
68
+ "eslint-plugin-flowtype": "^5.2.0",
69
+ "eslint-plugin-import": "2.22.1",
70
+ "eslint-plugin-jest": "24.1.3",
71
+ "eslint-plugin-jsdoc": "^31.4.0",
72
+ "eslint-plugin-jsx-a11y": "^6.4.1",
73
+ "eslint-plugin-prettier": "3.1.4",
74
+ "eslint-plugin-react": "7.21.5",
75
+ "eslint-plugin-react-hooks": "^4.2.0",
76
+ "fs-extra": "^11.1.1",
77
+ "gitea-react-toolkit": "1.11.0",
78
+ "jest": "^29.6.4",
79
+ "path-extra": "^4.3.0",
80
+ "prop-types": "^15.7.2",
81
+ "react": "^17.0.1",
82
+ "react-dom": "^17.0.1",
83
+ "react-icons": "^4.8.0",
84
+ "react-styleguidist": "11.2.0",
85
+ "scripture-resources-rcl": "^5.5.8",
86
+ "style-loader": "^2.0.0",
87
+ "tc-ui-toolkit": "^5.3.3",
88
+ "translation-helps-rcl": "3.6.3-beta.8",
89
+ "ts-jest": "^29.1.1",
90
+ "use-deep-compare-effect": "1.8.1",
91
+ "usfm-js": "3.4.2",
92
+ "webpack": "^4.44.2",
93
+ "word-aligner": "^1.0.0",
94
+ "word-aligner-rcl": "0.9.2"
95
+ },
96
+ "dependencies": {
97
+ "@react-hookz/deep-equal": "^1.0.4",
98
+ "@types/react": "^17.0.0",
99
+ "@types/react-dom": "^17.0.0",
100
+ "diff": "^5.2.0",
101
+ "lodash": "^4.17.21",
102
+ "react-docgen-typescript": "^1.20.5",
103
+ "source-map-loader": "^1.1.3",
104
+ "styled-components": "^5.2.1",
105
+ "ts-loader": "^8.0.12",
106
+ "typescript": "^5.2.2"
107
+ }
108
+ }