@projectcor/maia-components 2.11.82 → 2.11.83

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.
@@ -510,20 +510,25 @@ export var useChatManager = function useChatManager(_ref3) {
510
510
  streamingPlaceholderIdRef.current = null;
511
511
  activeStreamChatIdRef.current = null;
512
512
  removeMessage(tempMessageId);
513
- var message = errorMessage === "Access denied: You don't have permission to access this agent" ? t('chat.errorAccessDenied') : errorMessage === 'invalid_request_error' && errorRawMessage !== null && errorRawMessage !== void 0 && errorRawMessage.includes('prompt is too long') ? t('chat.errorPromptTooLong', {
514
- used: (_errorRawMessage$matc = (_errorRawMessage$matc2 = errorRawMessage.match(/(\d+) tokens/)) === null || _errorRawMessage$matc2 === void 0 ? void 0 : _errorRawMessage$matc2[1]) !== null && _errorRawMessage$matc !== void 0 ? _errorRawMessage$matc : ''
513
+ var isAccessDenied = errorMessage === "Access denied: You don't have permission to access this agent";
514
+ var isPromptTooLong = errorMessage === 'invalid_request_error' && (errorRawMessage === null || errorRawMessage === void 0 ? void 0 : errorRawMessage.includes('prompt is too long'));
515
+ var message = isAccessDenied ? t('chat.errorAccessDenied') : isPromptTooLong ? t('chat.errorPromptTooLong', {
516
+ used: (_errorRawMessage$matc = errorRawMessage === null || errorRawMessage === void 0 || (_errorRawMessage$matc2 = errorRawMessage.match(/(\d+) tokens/)) === null || _errorRawMessage$matc2 === void 0 ? void 0 : _errorRawMessage$matc2[1]) !== null && _errorRawMessage$matc !== void 0 ? _errorRawMessage$matc : ''
515
517
  }) : t('chat.error');
516
- addMessage({
518
+ addMessage(_objectSpread(_objectSpread({
517
519
  id: "answer-".concat(currentMessageId.current),
518
520
  message: message,
519
- isError: true,
521
+ isError: true
522
+ }, !isAccessDenied && !isPromptTooLong ? {
523
+ suggestions: [t('chat.retry')]
524
+ } : {}), {}, {
520
525
  date: new Date(),
521
526
  user: {
522
527
  id: 'assistant',
523
528
  name: 'Assistant'
524
529
  },
525
530
  role: ChatHistoryRole.ASSISTANT
526
- });
531
+ }));
527
532
  isProcessingRef.current = false;
528
533
  }, [addMessage, removeMessage, t]);
529
534
  var handleStreamUpdate = useCallback(function (content, sources, memorySessionId) {
@@ -1390,4 +1395,4 @@ export var useChatManager = function useChatManager(_ref3) {
1390
1395
  isDisabled: waitingResponse || isContinuingStream || loadingMessages
1391
1396
  };
1392
1397
  };
1393
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJmZXRjaEFnZW50RGV0YWlsIiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJzdHJlYW1pbmdTdG9yZSIsImlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJpZCIsIl9vYmplY3RTcHJlYWQiLCJjbGllbnRJZCIsIm5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50Iiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwidHlwZSIsIm1pbWVUeXBlIiwibWltZV90eXBlIiwiZnVsbEZpbGVOYW1lIiwiaW5jbHVkZXMiLCJudW1lcmljU2l6ZSIsInNpemUiLCJmaWxlIiwiRmlsZSIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJ1cmxfZmlsZSIsInJvbGUiLCJleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MiLCJwZW5kaW5nQWN0aW9ucyIsImlkcyIsInB1c2hJZCIsInJhdyIsIm4iLCJwYXJzZUludCIsIlN0cmluZyIsImlzTmFOIiwicHVzaCIsImZvckVhY2giLCJhY3Rpb24iLCJfcmVjJHRhc2tfaWQiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidGFza19pZCIsInRhc2tfaWRzIiwidGFza3MiLCJ0IiwiX3RyZWMkdGFza19pZCIsInRyZWMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInRvb2xfbmFtZSIsIl9yZWMkdGFza19pZDIiLCJsaXN0IiwidGlkIiwiZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMiLCJfcmVjJGFnZW50X2lkIiwiZWRpdEFjdGlvbiIsImZpbmQiLCJhIiwidG9Mb3dlckNhc2UiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUiLCJ0b29sTmFtZSIsIl9yZWYiLCJfcmVjJGFnZW50X2lkMiIsImV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCIsInRleHQiLCJsYWJlbGVkIiwibWF0Y2giLCJib2xkIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsInRvU3RyaW5nIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJzcGxpdCIsIl9saW5lJHNwbGl0MiIsIl9zbGljZWRUb0FycmF5IiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJyZXBsYWNlIiwiZGF0YVN0ciIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJwYXJzZUVycm9yIiwiY29uc29sZSIsImVycm9yIiwicHJvY2Vzc1NTRVN0cmVhbSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50Iiwic3RyZWFtU2V0dGxlZCIsIm5vdGlmeUNvbXBsZXRlIiwiaGFuZGxlTGluZSIsImlzUmVhZGVyRG9uZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiaSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiX2hhbmRsZUxpbmUiLCJldmVudERhdGEiLCJvblRoaW5raW5nIiwiY29udGVudCIsIm9uVG9rZW4iLCJtZXNzYWdlIiwib25Ob2RlIiwiZmluYWxDb250ZW50IiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwiaXNNYW51YWxBcHByb3ZhbCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImNhbGwiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfZXZlbnREYXRhJGFnZW50X2lkIiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImNvbXBsZXRlZEFnZW50SWQiLCJvbkNvbXBsZXRlIiwicmVhZCIsInNlbnQiLCJhYnJ1cHQiLCJkZWNvZGUiLCJzdHJlYW0iLCJwb3AiLCJsZW5ndGgiLCJzdG9wIiwiX3giLCJfeDIiLCJfeDMiLCJhcHBseSIsImFyZ3VtZW50cyIsInVzZUNoYXRNYW5hZ2VyIiwiX3JlZjMiLCJpbml0aWFsQ2hhdElkIiwiY2hhdElkIiwidXNlckluaXRpYWxNZXNzYWdlIiwiX3JlZjMkYWdlbnRzIiwiYWdlbnRzIiwiX3VzZVQiLCJfdXNlR2xvYmFsQ29udGV4dCIsInByb2plY3QiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50IiwidGFzayIsInNldFRhc2siLCJhZ2VudCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0IiwiZXZlbnQiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZVN0YWJsZUNhbGxiYWNrcyIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwiX2NoaXBzUHJvamVjdCRwcm9qZWN0IiwiX2NoaXBzUHJvamVjdCRwcm9qZWN0MiIsIl9wcm9qZWN0JGlkIiwiX2NsaWVudCRpZCIsIl90YXNrJGlkIiwiaW5mbyIsImNoaXBzUHJvamVjdE5hbWUiLCJwcm9qZWN0TmFtZSIsInByb2plY3RQcm9wSWQiLCJ0YXNrSWQiLCJjdXJyZW50TWVzc2FnZUlkIiwiY3VycmVudFVzZXJRdWVzdGlvbiIsImN1cnJlbnRDaGF0SWQiLCJyZXBvcnRlZEV2ZW50IiwibWVzc2FnZXNSZWYiLCJsYXN0TWFudWFsQXBwcm92YWxSZWYiLCJoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYiLCJhY3RpdmVTdHJlYW1DaGF0SWRSZWYiLCJhYm9ydFN0cmVhbVNpbGVudGx5UmVmIiwiY2xlYXJTdHJlYW1VaVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVMb2FkaW5ncyIsInNldEFjdGl2ZUxvYWRpbmdzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0NvbnRpbnVpbmdTdHJlYW0iLCJzZXRJc0NvbnRpbnVpbmdTdHJlYW0iLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsImNvbnRleHRSZWYiLCJfdXNlQ2hhdE1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJsb2FkTWVzc2FnZXMiLCJhZGRNZXNzYWdlIiwicmVtb3ZlTWVzc2FnZSIsImhhbmRsZVNjcm9sbCIsImN1c3RvbUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJjbGVhciIsImhhbmRsZVN0cmVhbUVycm9yIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3JSYXdNZXNzYWdlIiwiX2Vycm9yUmF3TWVzc2FnZSRtYXRjIiwiX2Vycm9yUmF3TWVzc2FnZSRtYXRjMiIsInRlbXBNZXNzYWdlSWQiLCJ1c2VkIiwiaXNFcnJvciIsImRhdGUiLCJEYXRlIiwidXNlciIsIkFTU0lTVEFOVCIsImhhbmRsZVN0cmVhbVVwZGF0ZSIsInN0YXJ0Iiwic2V0VGV4dCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcHJldmlvdXNNZXNzYWdlJGFwcHIiLCJfd2luZG93JHRhc2tQYW5lbCIsIl9jcmVhdGVBZ2VudEZvbGxvd1VwIiwiX2VkaXRBZ2VudEZvbGxvd1VwIiwidGFza1VybFJlZ2V4IiwibWF0Y2hlcyIsImNvbnRlbnRUb0FkZCIsInByZXZpb3VzTWVzc2FnZSIsImhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UiLCJUQVNLX0NSRUFUSU9OX1RPT0xTIiwiVEFTS19FRElUX1RPT0xTIiwiVEFTS19ERUxFVEVfVE9PTFMiLCJ3YXNUYXNrQ3JlYXRpb24iLCJ3YXNUYXNrRWRpdCIsIndhc1Rhc2tEZWxldGUiLCJ3YXNDcmVhdGVBZ2VudEFwcHJvdmVkIiwid2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCIsImNyZWF0ZUFnZW50Rm9sbG93VXAiLCJjb25maWd1cmVkQWdlbnRJZCIsIndhc0VkaXRBZ2VudEFwcHJvdmVkIiwiZWRpdEFnZW50Rm9sbG93VXAiLCJmcm9tU3RyZWFtIiwiZnJvbUFyZ3MiLCJyZXNvbHZlZEFnZW50SWQiLCJ0YXNrSWRzRnJvbVVybHMiLCJ0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsIiwidGFza0lkc0Zyb21EZWxldGlvblRleHQiLCJ0YXNrSWRzRm9yRGFzaGJvYXJkIiwic2hvdWxkU3luY0Rhc2hib2FyZCIsInRhc2tJZHMiLCJ0YWIiLCJ0YWJTZWdtZW50IiwibGFzdFByb2plY3RNZXNzYWdlIiwiY29udGV4dFByb2plY3RJZFJhdyIsImNvbnRleHRQcm9qZWN0SWQiLCJwYXRoTWF0Y2giLCJyb3V0ZVByb2plY3RJZCIsImlzT25Qcm9qZWN0Um91dGUiLCJfd2luZG93JG5ld1Byb2plY3REYXMiLCJfd2luZG93JG5ld1Byb2plY3REYXMyIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzMyIsIl93aW5kb3ckbmV3UHJvamVjdERhczQiLCJfd2luZG93JG5ld1Byb2plY3REYXM1IiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNiIsIm9wZW5UYXNrUGFuZWxJZCIsIm1hbnVhbEFwcHJvdmFsIiwibWFudWFsV2FzVGFza0VkaXQiLCJtYW51YWxXYXNUYXNrRGVsZXRlIiwiX21hbnVhbEFwcHJvdmFsJHRvb2xBIiwibWFudWFsUHNldWRvQWN0aW9uIiwiYWZmZWN0ZWRUYXNrSWRzIiwiX3dpbmRvdyR0YXNrUGFuZWwyIiwiX3dpbmRvdyR0YXNrUGFuZWwyJHJlIiwiX2NvbnRleHQyIiwiUmVnRXhwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWF0Y2hBbGwiLCJtIiwiYXQiLCJhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsInNvbWUiLCJhcHByb3ZhbFN0YXR1cyIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJhaUNoYXRIaXRsT3B0aW9uIiwiYWdlbnRfdHlwZSIsImFjdGlvbl90eXBlIiwiZGVjaXNpb24iLCJvcHRpb24iLCJjcmVhdGVkX2FnZW50X2lkIiwidXJsIiwibXNnIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsImVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZCIsImRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQiLCJ0YXNrUGFuZWwiLCJ0b29sQXJncyIsInJlZmV0Y2hUYXNrIiwidGhlbiIsImNoYXRBZ2VudCIsImVyciIsIl94NCIsIl94NSIsIl94NiIsIl94NyIsIl94OCIsIl94OSIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QiLCJoaXRsQ29udGV4dCIsIm1lc3NhZ2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIm1lc3NhZ2VUZXh0IiwidGhyZWFkSWRzIiwidGhyZWFkX2lkIiwiX2FwcHJvdmFsJHBlbmRpbmdfYWN0MiIsIl9yZWY1IiwiX3Rvb2xfbmFtZSIsIl90b29sX2FyZ3MiLCJmaXJzdEFjdGlvbiIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdHJlYW1BY3Rpdml0eSIsInVwZGF0ZVN0cmVhbUFjdGl2aXR5Iiwic3RvcFN0cmVhbWluZyIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJjdXJyZW50UHJvamVjdCIsInNlbmRNZXNzYWdlIiwiX3JlZjYiLCJfY2FsbGVlMyIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsIl9tZXNzYWdlc1JlZiRjdXJyZW50IiwiX25vcm1hbGl6ZVNlbmRNZXNzYWdlIiwiZWZmZWN0aXZlTWVudGlvbnMiLCJjb250ZXh0TWVzc2FnZSIsInBheWxvYWRGdWFJZCIsInBheWxvYWRTY0lkIiwicGF5bG9hZENvbnRleHREYXRhIiwiZGlzcGxheU1lc3NhZ2UiLCJuZXdNZXNzYWdlSWQiLCJsYXN0TWVzc2FnZVdpdGhQcm9qZWN0IiwiY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJJZCIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsIl9jb250ZXh0UmVmJGN1cnJlbnQkcCIsImhpc3RvcnkiLCJfY29udGV4dFJlZiRjdXJyZW50IiwiY3R4Q2hpcHNQcm9qZWN0IiwiY3R4VGFzayIsInByb2plY3RUb1JlcXVlc3QiLCJwcm9qZWN0cyIsInBheWxvYWRGYXFJZCIsInBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCIsInBheWxvYWREYXRhIiwiX2NvbnRleHQzIiwiY29udGV4dERhdGEiLCJwbUFpVHlwZWRUZXh0IiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwiYWdlbnRUeXBlIiwibGFuZyIsInVzZXJJZCIsImxhc3ROYW1lIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsImFnZW50TmFtZSIsImZlZUlkIiwidGFza05hbWUiLCJlbnRpdHkiLCJhZ2VudEVudGl0eSIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl94MTMiLCJfeDE0IiwiY2hhbmdlUHJvamVjdCIsIl9wcm9qZWN0JGlkMiIsIl9jaGlwc1Byb2plY3QkcHJvamVjdDMiLCJvcHRpb25JZCIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjciLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94MTUiLCJfeDE2IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWY4IiwiX2NhbGxlZTUiLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImxvYWRpbmdLZXkiLCJpbml0aWFsQWN0aXZpdHkiLCJleGlzdGluZ01lc3NhZ2UiLCJuZXdTdGF0dXMiLCJfdCIsIl9jb250ZXh0NSIsIl9tJGFwcHJvdmFsIiwiX2RlZmluZVByb3BlcnR5IiwiT3JjaGVzdHJhdG9yIiwiY29udGludWVUaHJlYWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwib2siLCJhY3Rpdml0eSIsInBoYXNlIiwiY3VycmVudFRocmVhZElkIiwibm9kZUFjdGl2aXR5IiwidXNlUmVzdW1pbmdGYWxsYmFjayIsIm5ld0xvYWRpbmdzIiwiYXBwcm92YWxQYXlsb2FkIiwiZmluaXNoIiwiX3gxNyIsIl94MTgiLCJfeDE5IiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl91c2VySW5pdGlhbE1lc3NhZ2UkbSIsIl91c2VySW5pdGlhbE1lc3NhZ2UkYSIsIl9yZWYwIiwiX3Jlc29sdmVQcm9qZWN0VG9SZXF1IiwiX2N0eFByb2plY3QkaWQiLCJfY3R4Q2xpZW50JGlkIiwiX2N0eFRhc2skaWQiLCJfY3R4Q2hpcHNQcm9qZWN0JHByb2oiLCJoYXNJbml0aWFsTWVzc2FnZSIsImhhc0luaXRpYWxBdHRhY2htZW50cyIsImhhc0luaXRpYWxGYXEiLCJoYXNJbml0aWFsRnVhIiwiaGFzSW5pdGlhbFNjIiwiX2NvbnRleHRSZWYkY3VycmVudDIiLCJfY29udGV4dDYiLCJCb29sZWFuIiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiwgQ29udGV4dE1lc3NhZ2UsIGJ1aWxkQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZUZvckRpc3BsYXkgfSBmcm9tICcuLi8uLi91dGlscy9mb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2UnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuaW1wb3J0IHsgZmV0Y2hBZ2VudERldGFpbCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2ZldGNoQWdlbnREZXRhaWwnXG5pbXBvcnQgeyBidWlsZEhpdGxBY3Rpb25UeXBlTGlzdCwgZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZSB9IGZyb20gJy4uLy4uL3V0aWxzL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5IH0gZnJvbSAnLi4vLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQge1xuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbiAgdHlwZSBIaXRsRXhlY3V0aW9uQ29udGV4dCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB7IHN0cmVhbWluZ1N0b3JlIH0gZnJvbSAnLi4vdXNlU3RyZWFtaW5nTWVzc2FnZSdcbmltcG9ydCB7IGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCwgbWVyZ2VTdHJlYW1DaHVuayB9IGZyb20gJy4uLy4uL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQnXG5cbnR5cGUgQXR0YWNobWVudHNPck9wdGlvbnMgPSBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zXG5cbmNvbnN0IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyA9IChhdHRhY2htZW50c09yT3B0aW9ucz86IEF0dGFjaG1lbnRzT3JPcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGF0dGFjaG1lbnRzT3JPcHRpb25zKSkge1xuICAgIHJldHVybiB7IGF0dGFjaG1lbnRzOiBhdHRhY2htZW50c09yT3B0aW9ucywgb3B0aW9uczoge30gYXMgU2VuZE1lc3NhZ2VPcHRpb25zIH1cbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IGF0dGFjaG1lbnRzT3JPcHRpb25zID8/IHt9XG4gIHJldHVybiB7IGF0dGFjaG1lbnRzOiBvcHRpb25zLmF0dGFjaG1lbnRzID8/IFtdLCBvcHRpb25zIH1cbn1cblxuLyoqIGNoaXBzUHJvamVjdCBlcyBsYSBmdWVudGUgZGUgdmVyZGFkIGRlbCBwaW4gdmlzaWJsZTsgc2kgbm8gaGF5IHBpbiwgcmVzdGF1cmFyIGRlc2RlIGhpc3RvcmlhbC4gKi9cbmNvbnN0IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0ID0gKFxuICBjaGlwc1Byb2plY3Q6IHsgcHJvamVjdElkPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBsYXN0TWVzc2FnZVByb2plY3RJZDogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGNoaXBzUHJvamVjdElkID0gY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsXG4gIGlmIChjaGlwc1Byb2plY3RJZCAhPSBudWxsICYmIE51bWJlci5pc0Zpbml0ZShjaGlwc1Byb2plY3RJZCkpIHtcbiAgICByZXR1cm4gY2hpcHNQcm9qZWN0SWRcbiAgfVxuICBpZiAobGFzdE1lc3NhZ2VQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuY29uc3QgcmVzb2x2ZUNsaWVudFBheWxvYWQgPSAoXG4gIGN0eENsaWVudDogeyBpZD86IG51bWJlcjsgbmFtZT86IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgY3R4UHJvamVjdDogUHJvamVjdCB8IG51bGwgfCB1bmRlZmluZWRcbik6IHsgY2xpZW50SWQ/OiBudW1iZXI7IGNsaWVudE5hbWU/OiBzdHJpbmcgfSA9PiB7XG4gIGlmIChjdHhDbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IGN0eENsaWVudC5pZCwgLi4uKGN0eENsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhDbGllbnQubmFtZSB9IDoge30pIH1cbiAgfVxuICBpZiAoY3R4UHJvamVjdD8uY2xpZW50SWQgIT0gbnVsbCkge1xuICAgIHJldHVybiB7IGNsaWVudElkOiBOdW1iZXIoY3R4UHJvamVjdC5jbGllbnRJZCkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnQ/LmlkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNsaWVudElkOiBjdHhQcm9qZWN0LmNsaWVudC5pZCxcbiAgICAgIC4uLihjdHhQcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjdHhQcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSksXG4gICAgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG5jb25zdCBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyA9IChyYXdBdHRhY2htZW50czogdW5rbm93bik6IEF0dGFjaG1lbnRGaWxlW10gPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkocmF3QXR0YWNobWVudHMpKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cblxuICByZXR1cm4gcmF3QXR0YWNobWVudHNcbiAgICAuZmlsdGVyKChhdHRhY2htZW50KTogYXR0YWNobWVudCBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWF0dGFjaG1lbnQgJiYgdHlwZW9mIGF0dGFjaG1lbnQgPT09ICdvYmplY3QnKVxuICAgIC5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBuYW1lID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQubmFtZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5uYW1lLnRyaW0oKSA/IGF0dGFjaG1lbnQubmFtZS50cmltKCkgOiBgZmlsZS0ke2luZGV4ICsgMX1gXG4gICAgICBjb25zdCB0eXBlID0gdHlwZW9mIGF0dGFjaG1lbnQudHlwZSA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC50eXBlLnRyaW0oKSA/IGF0dGFjaG1lbnQudHlwZS50cmltKCkgOiAncGRmJ1xuICAgICAgY29uc3QgbWltZVR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC5taW1lX3R5cGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC5taW1lX3R5cGUgOiAnJ1xuICAgICAgY29uc3QgZnVsbEZpbGVOYW1lID0gbmFtZS5pbmNsdWRlcygnLicpID8gbmFtZSA6IGAke25hbWV9LiR7dHlwZX1gXG4gICAgICBjb25zdCBudW1lcmljU2l6ZSA9XG4gICAgICAgIHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInXG4gICAgICAgICAgPyBhdHRhY2htZW50LnNpemVcbiAgICAgICAgICA6IE51bWJlci5pc0Zpbml0ZShOdW1iZXIoYXR0YWNobWVudC5zaXplKSlcbiAgICAgICAgICAgID8gTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICAgICAgICAgIDogMFxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlOiBuZXcgRmlsZShbXSwgZnVsbEZpbGVOYW1lLCB7IHR5cGU6IG1pbWVUeXBlIH0pLFxuICAgICAgICBpZDpcbiAgICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5pZCA9PT0gJ3N0cmluZycgJiYgYXR0YWNobWVudC5pZC50cmltKClcbiAgICAgICAgICAgID8gYXR0YWNobWVudC5pZFxuICAgICAgICAgICAgOiBgYXNzaXN0YW50LWZpbGUtJHtpbmRleH0tJHtmdWxsRmlsZU5hbWV9YCxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2l6ZTogbnVtZXJpY1NpemUsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVybF9vcmlnaW5hbDogdHlwZW9mIGF0dGFjaG1lbnQudXJsX29yaWdpbmFsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX29yaWdpbmFsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfdGh1bWJuYWlsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfdGh1bWJuYWlsID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXJsX2ZpbGU6IHR5cGVvZiBhdHRhY2htZW50LnVybF9maWxlID09PSAnc3RyaW5nJyA/IGF0dGFjaG1lbnQudXJsX2ZpbGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHJvbGU6IGF0dGFjaG1lbnQucm9sZSA9PT0gJ2Fzc2lzdGFudCcgPyAnYXNzaXN0YW50JyA6ICd1c2VyJyxcbiAgICAgIH1cbiAgICB9KVxufVxuXG4vKiogRXh0cmFlIHRhc2tfaWRzIGRlIGxvcyB0b29sX2FyZ3MgZGUgcGVuZGluZ19hY3Rpb25zLCBjdWJyaWVuZG8gbGFzIGZvcm1hcyBjb211bmVzOlxuICogIC0gYHsgdGFza19pZCB9YCBvIGB7IGlkIH1gXG4gKiAgLSBgeyB0YXNrX2lkczogW10gfWBcbiAqICAtIGB7IHRhc2tzOiBbeyB0YXNrX2lkfGlkIH0sIC4uLl0gfWBcbiAqICDDmnRpbCBwYXJhIHRvb2xzIGRlIGVkaXQvYXNzaWduL2RlbGV0ZSBjdWFuZG8gbGEgcmVzcHVlc3RhIGRlbCBMTE0gbm8gaW5jbHV5ZSBVUkxzIC90YXNrcy8uLi4vZGV0YWlsLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tUGVuZGluZ0FjdGlvbnNBcmdzKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBjb25zdCBwdXNoSWQgPSAocmF3OiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHJhdyA9PSBudWxsKSByZXR1cm5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICB9XG4gIHBlbmRpbmdBY3Rpb25zLmZvckVhY2goYWN0aW9uID0+IHtcbiAgICBpZiAoIWFjdGlvbiB8fCB0eXBlb2YgYWN0aW9uICE9PSAnb2JqZWN0JykgcmV0dXJuXG4gICAgY29uc3QgYXJncyA9IGFjdGlvbi50b29sX2FyZ3NcbiAgICBpZiAoIShhcmdzICYmIHR5cGVvZiBhcmdzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShhcmdzKSkpIHJldHVyblxuICAgIGNvbnN0IHJlYyA9IGFyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBwdXNoSWQocmVjLnRhc2tfaWQgPz8gcmVjLmlkKVxuICAgIGlmIChBcnJheS5pc0FycmF5KHJlYy50YXNrX2lkcykpIHtcbiAgICAgIHJlYy50YXNrX2lkcy5mb3JFYWNoKHB1c2hJZClcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tzKSkge1xuICAgICAgcmVjLnRhc2tzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0KSkge1xuICAgICAgICAgIGNvbnN0IHRyZWMgPSB0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgICAgcHVzaElkKHRyZWMudGFza19pZCA/PyB0cmVjLmlkKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG4vKiogdGFza19pZCAvIHRhc2tfaWRzIGVuIHBlbmRpbmdfYWN0aW9ucyBkZSBkZWxldGVfKiAobGEgcmVzcHVlc3RhIHB1ZWRlIG5vIGluY2x1aXIgVVJMcyAvdGFza3Mv4oCmL2RldGFpbCkuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogbnVtYmVyW10ge1xuICBjb25zdCBpZHM6IG51bWJlcltdID0gW11cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmIChhY3Rpb24udG9vbF9uYW1lID09PSAnZGVsZXRlX3Rhc2snKSB7XG4gICAgICBjb25zdCByYXcgPSByZWMudGFza19pZCA/PyByZWMuaWRcbiAgICAgIGlmIChyYXcgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHJhdyksIDEwKVxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihuKSkgaWRzLnB1c2gobilcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFza3NfYmF0Y2gnKSB7XG4gICAgICBjb25zdCBsaXN0ID0gcmVjLnRhc2tfaWRzXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgICAgICBsaXN0LmZvckVhY2godGlkID0+IHtcbiAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQoU3RyaW5nKHRpZCksIDEwKVxuICAgICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcbiAgcmV0dXJuIGlkc1xufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21FZGl0QWdlbnRQZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVkaXRBY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnZWRpdF9hZ2VudCcpXG4gIGlmIChcbiAgICAhZWRpdEFjdGlvbiB8fFxuICAgICFlZGl0QWN0aW9uLnRvb2xfYXJncyB8fFxuICAgIHR5cGVvZiBlZGl0QWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHxcbiAgICBBcnJheS5pc0FycmF5KGVkaXRBY3Rpb24udG9vbF9hcmdzKVxuICApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGVkaXRBY3Rpb24udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gIGNvbnN0IHJhdyA9IHJlYy5hZ2VudF9pZCA/PyByZWMuYWdlbnRJZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuZnVuY3Rpb24gZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10sIHRvb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgYWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuZmluZChhID0+IChhLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gdG9vbE5hbWUudG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFhY3Rpb24gfHwgIWFjdGlvbi50b29sX2FyZ3MgfHwgdHlwZW9mIGFjdGlvbi50b29sX2FyZ3MgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkoYWN0aW9uLnRvb2xfYXJncykpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IHJlYyA9IGFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkID8/IHJlYy5pZFxuICByZXR1cm4gcmF3ICE9IG51bGwgPyBTdHJpbmcocmF3KSA6IG51bGxcbn1cblxuLyoqIMOabHRpbW8gcmVjdXJzbyBzaSBubyBoYXkgbGlua3MgbmkgdG9vbF9hcmdzIHBhcnNlYWJsZXMgKHAuIGVqLiBcIklEICoqNzU5NzEwNioqXCIpLiAqL1xuZnVuY3Rpb24gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KHRleHQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3QgbGFiZWxlZCA9IHRleHQubWF0Y2goL1xcYklEXFxzKlxcKlxcKihcXGQrKVxcKlxcKi9pKVxuICBpZiAobGFiZWxlZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChsYWJlbGVkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICBjb25zdCBib2xkID0gdGV4dC5tYXRjaCgvXFwqXFwqKFxcZHs1LH0pXFwqXFwqLylcbiAgaWYgKGJvbGQpIHtcbiAgICBjb25zdCBuID0gcGFyc2VJbnQoYm9sZFsxXSwgMTApXG4gICAgcmV0dXJuIE51bWJlci5pc05hTihuKSA/IFtdIDogW25dXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgcGFyc2VTU0VMaW5lID0gKGxpbmU6IHN0cmluZyk6IHsgZXZlbnRUeXBlOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfSB8IG51bGwgPT4ge1xuICBpZiAoIWxpbmUudHJpbSgpKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG4gICAgcmV0dXJuIHsgZXZlbnRUeXBlLCBkYXRhIH1cbiAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NTU0VTdHJlYW0gPSBhc3luYyAoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgY2FsbGJhY2tzOiB7XG4gICAgb25UaGlua2luZzogKCkgPT4gdm9pZFxuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkNvbXBsZXRlOiAoXG4gICAgICBmaW5hbENvbnRlbnQ6IHN0cmluZyxcbiAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgY3VycmVudFRocmVhZElkOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICApID0+IHZvaWRcbiAgICBvbkVycm9yOiAoZXJyb3I6IGFueSwgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZD86IChhcHByb3ZhbDogYW55LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBzdHJlYW1TZXR0bGVkID0gZmFsc2VcblxuICBjb25zdCBub3RpZnlDb21wbGV0ZSA9IChldmVudERhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBmaW5hbENvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIGlmIChzdHJlYW1TZXR0bGVkKSByZXR1cm5cbiAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgIGNvbnN0IHNvdXJjZXMgPSBldmVudERhdGEuc291cmNlcyB8fCBudWxsXG4gICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKGV2ZW50RGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5hdHRhY2htZW50cykgPyBldmVudERhdGEuYXR0YWNobWVudHMgOiBudWxsXG4gICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSBBcnJheS5pc0FycmF5KGV2ZW50RGF0YS5zdWdnZXN0X3JlcGx5KVxuICAgICAgPyAoZXZlbnREYXRhLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW10pXG4gICAgICA6IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLnN1Z2dlc3Rpb25zKVxuICAgICAgICA/IChldmVudERhdGEuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW10pXG4gICAgICAgIDogbnVsbFxuICAgIGNvbnN0IGFnZW50SWRSYXcgPSBldmVudERhdGEuYWdlbnRfaWQgPz8gZXZlbnREYXRhLmFnZW50SWRcbiAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICBjYWxsYmFja3Mub25Db21wbGV0ZShmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgdGhyZWFkSWQsIGF0dGFjaG1lbnRzLCBzdWdnZXN0aW9ucywgY29tcGxldGVkQWdlbnRJZClcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUxpbmUobGluZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTU0VMaW5lKGxpbmUpXG4gICAgaWYgKCFwYXJzZWQpIHJldHVyblxuXG4gICAgY29uc3QgeyBldmVudFR5cGUsIGRhdGEgfSA9IHBhcnNlZFxuICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuICAgIGlmIChzdHJlYW1TZXR0bGVkICYmIGV2ZW50VHlwZSAhPT0gJ2Vycm9yJykgcmV0dXJuXG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAndGhpbmtpbmcnKSB7XG4gICAgICBjYWxsYmFja3Mub25UaGlua2luZygpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICd0b2tlbicpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSB0eXBlb2YgZXZlbnREYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZXZlbnREYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNvbnRlbnQpXG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZXZlbnREYXRhKSkge1xuICAgICAgICBub3RpZnlDb21wbGV0ZShldmVudERhdGEsIGNvbnRlbnQgfHwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNhbGxiYWNrcy5vbk5vZGUoZXZlbnREYXRhLm1lc3NhZ2UsIHRocmVhZElkKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAoZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgIG5vdGlmeUNvbXBsZXRlKGV2ZW50RGF0YSwgZmluYWxDb250ZW50KVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnYXBwcm92YWxfcmVxdWlyZWQnKSB7XG4gICAgICAvLyBNYW51YWwgYXBwcm92YWw6IGVsIHN0cmVhbSBzaWd1ZSAobm9kZS90b2tlbi9jb21wbGV0ZSB5IG3DoXMgSElUTCkuXG4gICAgICAvLyBTb2xvIGVsIGFwcHJvdmFsIHBhdXNhZG8gKGJvdMOzbikgY2llcnJhIGVsIHByb2Nlc2FtaWVudG8gZGUgZXZlbnRvcy5cbiAgICAgIGNvbnN0IGlzTWFudWFsQXBwcm92YWwgPSBldmVudERhdGEubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkID09PSB0cnVlXG4gICAgICBpZiAoIWlzTWFudWFsQXBwcm92YWwpIHtcbiAgICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrcy5vbkFwcHJvdmFsUmVxdWlyZWQ/LihldmVudERhdGEsIGFjY3VtdWxhdGVkQ29udGVudCwgdGhyZWFkSWQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgICBjYWxsYmFja3Mub25FcnJvcihldmVudERhdGEuZXJyb3IsIHRocmVhZElkKVxuICAgIH1cbiAgfVxuXG4gIGxldCBpc1JlYWRlckRvbmUgPSBmYWxzZVxuXG4gIHdoaWxlICghaXNSZWFkZXJEb25lKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIGlzUmVhZGVyRG9uZSA9IHRydWVcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBoYW5kbGVMaW5lKGxpbmVzW2ldKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1hbmFnZXIgPSAoe1xuICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgb25FcnJvcixcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWFuYWdlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHtcbiAgICBwcm9qZWN0LFxuICAgIHNldFByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHNldENsaWVudCxcbiAgICB0YXNrLFxuICAgIHNldFRhc2ssXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IGN1cnJlbnRVc2VyIH0gPSB1c2VTdGFibGVDYWxsYmFja3MoYXV0aFVzZXIpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcblxuICAvLyBERUJVRzogcmFzdHJlYXIgY3XDoW5kbyBjYW1iaWEgZWwgY29udGV4dG8gZ2xvYmFsIHBhcmEgY29ycmVsYWNpb25hciBjb24gbG9zIGVudsOtb3MgYWwgb3JjaGVzdHJhdG9yXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIGNvbnRleHQgQ0hBTkdFRDonLCB7XG4gICAgICBjaGlwc1Byb2plY3RJZDogY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPz8gbnVsbCxcbiAgICAgIGNoaXBzUHJvamVjdE5hbWU6IGNoaXBzUHJvamVjdD8ucHJvamVjdE5hbWUgPz8gbnVsbCxcbiAgICAgIHByb2plY3RQcm9wSWQ6IHByb2plY3Q/LmlkID8/IG51bGwsXG4gICAgICBjbGllbnRJZDogY2xpZW50Py5pZCA/PyBudWxsLFxuICAgICAgdGFza0lkOiB0YXNrPy5pZCA/PyBudWxsLFxuICAgIH0pXG4gIH0sIFtjaGlwc1Byb2plY3Q/LnByb2plY3RJZCwgcHJvamVjdD8uaWQsIGNsaWVudD8uaWQsIHRhc2s/LmlkXSlcbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPENoYXRNZXNzYWdlW10+KFtdKVxuICAvKipcbiAgICogR3VhcmRhIGluZm8gZGVsIMO6bHRpbW8gYXBwcm92YWwgbWFudWFsIChjdWFuZG8gZWwgdXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiIGVuIGx1Z2FyXG4gICAqIGRlIGNsaWNrZWFyIGVsIGJvdMOzbikuIEVuIG1hbnVhbCBhcHByb3ZhbCwgYGhhbmRsZUFwcHJvdmFsUmVxdWlyZWRgIHJldG9ybmEgZWFybHlcbiAgICogc2luIGFncmVnYXIgdW4gbWVuc2FqZSBjb24gYGFwcHJvdmFsYCwgYXPDrSBxdWUgbGEgbMOzZ2ljYSBkZSByZWZldGNoIGVuIGBvblN0cmVhbUZpbmlzaGBcbiAgICogbm8gbG8gZGV0ZWN0YSB2w61hIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWxgLiBMbyBndWFyZGFtb3MgYWPDoSBwYXJhIGNvbnN1bWlybG8gZGVzcHXDqXMuXG4gICAqL1xuICBjb25zdCBsYXN0TWFudWFsQXBwcm92YWxSZWYgPSB1c2VSZWY8e1xuICAgIHRvb2xOYW1lOiBzdHJpbmdcbiAgICB0b29sQXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsXG4gIH0gfCBudWxsPihudWxsKVxuICAvKiogQ29udGV4dG8gZGVsIG1lbnNhamUgZGUgYXByb2JhY2nDs24gcHJldmlvIGFsIGVqZWN1dGFyIGNvbnRpbnVlLXRocmVhZC4gKi9cbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYgPSB1c2VSZWY8SGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1Byb2Nlc3NpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGZpcnN0VGltZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgLyoqIElkIGRlbCBwbGFjZWhvbGRlciBkZWwgbWVuc2FqZSBlbiBzdHJlYW1pbmcgYWN0aXZvIChzaSBoYXkpLiAqL1xuICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIC8qKlxuICAgKiBDaGF0IGFsIHF1ZSBwZXJ0ZW5lY2UgZWwgc3RyZWFtIGFjdHVhbG1lbnRlIGFjdGl2by4gU2kgY2FtYmlhIGVsIGNoYXRcbiAgICogbWllbnRyYXMgdW4gc3RyZWFtIGVzdMOhIGVuIHZ1ZWxvLCBkZXNjYXJ0YW1vcyBsb3MgdG9rZW5zIHJlc2lkdWFsZXNcbiAgICogcXVlIHB1ZWRhbiBsbGVnYXIgYW50ZXMgZGUgcXVlIGVsIGFib3J0IHNlIGNvbXBsZXRlLlxuICAgKi9cbiAgY29uc3QgYWN0aXZlU3RyZWFtQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIC8qKiBTZXR0ZXIgaW5kaXJlY3RvIHBhcmEgYWJvcnRhciBlbCBzdHJlYW0gYW50ZXMgZGUgcXVlIGVsIGhvb2sgZGVcbiAgICogb3JxdWVzdGFkb3IgZXN0w6kgaW5pY2lhbGl6YWRvIChzZSBsaW5rZWEgbcOhcyBhYmFqbykuICovXG4gIGNvbnN0IGFib3J0U3RyZWFtU2lsZW50bHlSZWYgPSB1c2VSZWY8KCkgPT4gdm9pZD4oKCkgPT4gdW5kZWZpbmVkKVxuICBjb25zdCBjbGVhclN0cmVhbVVpUmVmID0gdXNlUmVmPCgpID0+IHZvaWQ+KCgpID0+IHVuZGVmaW5lZClcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcbiAgY29uc3QgW2lzQ29udGludWluZ1N0cmVhbSwgc2V0SXNDb250aW51aW5nU3RyZWFtXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGlzV2ViU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzV2ViU2VhcmNoQWN0aXZlKVxuICBjb25zdCBpc0RlZXBTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNEZWVwU2VhcmNoQWN0aXZlKVxuICAvKiogRXZpdGEgY2xvc3VyZXMgb2Jzb2xldGFzIGN1YW5kbyBlbCBmb290ZXIgY29uc2VydmEgc2VuZE1lc3NhZ2UgZW50cmUgcmVuZGVycy4gKi9cbiAgY29uc3QgY29udGV4dFJlZiA9IHVzZVJlZih7IGNoaXBzUHJvamVjdCwgcHJvamVjdCwgY2xpZW50LCB0YXNrIH0pXG4gIGNvbnRleHRSZWYuY3VycmVudCA9IHsgY2hpcHNQcm9qZWN0LCBwcm9qZWN0LCBjbGllbnQsIHRhc2sgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIGNvbnN0IHsgbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBsb2FkTWVzc2FnZXMsIGFkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGhhbmRsZVNjcm9sbCB9ID1cbiAgICB1c2VDaGF0TWVzc2FnZXMoe1xuICAgICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgICAgb25FcnJvcixcbiAgICAgIGFnZW50cyxcbiAgICB9KVxuXG4gIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywge1xuICAgICAgZGV0YWlsOiB7IGxvYWRpbmdNZXNzYWdlcyB9LFxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgfSwgW2xvYWRpbmdNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIFNpIGhheSB1biBzdHJlYW0gZW4gY3Vyc28sIGFib3J0YXJsbyBzaWxlbmNpb3NhbWVudGUgcGFyYSBxdWUgbG9zXG4gICAgICAvLyB0b2tlbnMgcmVzaWR1YWxlcyBubyBzZSBlc2NyaWJhbiBlbiBlbCBjaGF0IG51ZXZvLlxuICAgICAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50KClcblxuICAgICAgLy8gTGltcGlhciBjb250ZXh0byBnbG9iYWwgYWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG5cbiAgICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG5cbiAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFRhc2ssIGxvYWRNZXNzYWdlc10pXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtRXJyb3IgPSB1c2VDYWxsYmFjayhcbiAgICAoZXJyb3JNZXNzYWdlPzogc3RyaW5nLCBlcnJvclJhd01lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICBlcnJvck1lc3NhZ2UgPT09IFwiQWNjZXNzIGRlbmllZDogWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBhZ2VudFwiXG4gICAgICAgICAgPyB0KCdjaGF0LmVycm9yQWNjZXNzRGVuaWVkJylcbiAgICAgICAgICA6IGVycm9yTWVzc2FnZSA9PT0gJ2ludmFsaWRfcmVxdWVzdF9lcnJvcicgJiYgZXJyb3JSYXdNZXNzYWdlPy5pbmNsdWRlcygncHJvbXB0IGlzIHRvbyBsb25nJylcbiAgICAgICAgICAgID8gdCgnY2hhdC5lcnJvclByb21wdFRvb0xvbmcnLCB7IHVzZWQ6IGVycm9yUmF3TWVzc2FnZS5tYXRjaCgvKFxcZCspIHRva2Vucy8pPy5bMV0gPz8gJycgfSlcbiAgICAgICAgICAgIDogdCgnY2hhdC5lcnJvcicpXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIFNpIGVsIGNoYXQgY2FtYmnDsyBtaWVudHJhcyBlbCBzdHJlYW0gZXN0YWJhIGVuIHZ1ZWxvLCBkZXNjYXJ0YXIgZWxcbiAgICAgIC8vIHRva2VuIHJlc2lkdWFsOiBubyBkZWJlIHBpbnRhcnNlIGVuIGVsIG51ZXZvIGNoYXQuXG4gICAgICBpZiAoYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgIT0gbnVsbCAmJiBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuXG4gICAgICAvLyBQcmltZXJhIGxsYW1hZGEgZGUgZXN0ZSBzdHJlYW06IGluc2VydGFtb3MgZWwgcGxhY2Vob2xkZXIgZW4gZWxcbiAgICAgIC8vIGFycmF5IGRlIGBtZXNzYWdlc2AgdW5hIMO6bmljYSB2ZXouIExhcyBsbGFtYWRhcyBzdWJzaWd1aWVudGVzIHlhIG5vXG4gICAgICAvLyB0b2NhbiBgbWVzc2FnZXNgOyBlbCB0ZXh0byB2aXZlIGVuIGVsIHN0cmVhbWluZ1N0b3JlIChleHRlcm5vKSwgcG9yXG4gICAgICAvLyBsbyBxdWUgUmVhY3Qgbm8gcmUtcmVuZGVyaXphIGVsIMOhcmJvbCBjb21wbGV0byBlbiBjYWRhIHRva2VuLlxuICAgICAgaWYgKHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCAhPT0gdGVtcE1lc3NhZ2VJZCkge1xuICAgICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSB0ZW1wTWVzc2FnZUlkXG4gICAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gY3VycmVudENoYXRJZC5jdXJyZW50XG4gICAgICAgIHN0cmVhbWluZ1N0b3JlLnN0YXJ0KHRlbXBNZXNzYWdlSWQpXG4gICAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICAgIGlkOiB0ZW1wTWVzc2FnZUlkLFxuICAgICAgICAgIG1lc3NhZ2U6ICcnLFxuICAgICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgc3RyZWFtaW5nU3RvcmUuc2V0VGV4dCh0ZW1wTWVzc2FnZUlkLCBjb250ZW50KVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1GaW5pc2ggPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgICBzb3VyY2VzOiBhbnksXG4gICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgIHJhd0F0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBjb21wbGV0ZWRBZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gbm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMocmF3QXR0YWNobWVudHMpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBjb25zdCBUQVNLX0NSRUFUSU9OX1RPT0xTID0gWydjcmVhdGVfdGFzaycsICdjcmVhdGVfdGFza3NfYmF0Y2gnLCAnY2xvbmVfdGFzayddXG4gICAgICBjb25zdCBUQVNLX0VESVRfVE9PTFMgPSBbXG4gICAgICAgICdlZGl0X3Rhc2snLFxuICAgICAgICAnZWRpdF90YXNrc19iYXRjaCcsXG4gICAgICAgICd0YXNrX2Fzc2lnbicsXG4gICAgICAgICd0YXNrX3VuYXNzaWduJyxcbiAgICAgICAgJ3VwZGF0ZV90YXNrX3R5cGUnLFxuICAgICAgICAndXBkYXRlX2VzdGltYXRlZF9ob3VycycsXG4gICAgICAgICdhc3NpZ25fdGFza19sYWJlbCcsXG4gICAgICBdXG4gICAgICBjb25zdCBUQVNLX0RFTEVURV9UT09MUyA9IFsnZGVsZXRlX3Rhc2snLCAnZGVsZXRlX3Rhc2tzX2JhdGNoJ11cbiAgICAgIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zIHx8IFtdXG4gICAgICBjb25zdCB3YXNUYXNrQ3JlYXRpb24gPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0NSRUFUSU9OX1RPT0xTLmluY2x1ZGVzKGFjdGlvbi50b29sX25hbWUpKVxuICAgICAgY29uc3Qgd2FzVGFza0VkaXQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0VESVRfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRGVsZXRlID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNDcmVhdGVBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBhY3Rpb24udG9vbF9uYW1lID09PSAnY3JlYXRlX2FnZW50JylcbiAgICAgIGNvbnN0IHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IChhY3Rpb24udG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICBsZXQgY3JlYXRlQWdlbnRGb2xsb3dVcDogeyBhZ2VudElkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZFxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiYgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpKSB7XG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7IGFnZW50SWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHdhc0NvbmZpZ3VyZUFnZW50QWNjZXNzQXBwcm92ZWQgJiZcbiAgICAgICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgJiZcbiAgICAgICAgKGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKSB8fFxuICAgICAgICAgIGV4dHJhY3RBZ2VudElkRnJvbVBlbmRpbmdBY3Rpb25zQnlUb29sTmFtZShwZW5kaW5nQWN0aW9ucywgJ2NvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MnKSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjb25maWd1cmVkQWdlbnRJZCA9XG4gICAgICAgICAgY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpXG4gICAgICAgIGNyZWF0ZUFnZW50Rm9sbG93VXAgPSB7XG4gICAgICAgICAgYWdlbnRJZDogY29uZmlndXJlZEFnZW50SWQgYXMgc3RyaW5nLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh3YXNDcmVhdGVBZ2VudEFwcHJvdmVkKSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5haUNoYXRIaXRsT3B0aW9uLCB7XG4gICAgICAgICAgYWdlbnRfdHlwZTogZ2V0SGl0bEFuYWx5dGljc0FnZW50VHlwZShhZ2VudCksXG4gICAgICAgICAgYWN0aW9uX3R5cGU6IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0KHBlbmRpbmdBY3Rpb25zKSxcbiAgICAgICAgICBkZWNpc2lvbjogJ2FjY2VwdCcsXG4gICAgICAgICAgb3B0aW9uOiAnY3JlYXRlX2FnZW50JyxcbiAgICAgICAgICAuLi4oY29tcGxldGVkQWdlbnRJZD8udHJpbSgpID8geyBjcmVhdGVkX2FnZW50X2lkOiBjb21wbGV0ZWRBZ2VudElkLnRyaW0oKSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB3YXNFZGl0QWdlbnRBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcblxuICAgICAgbGV0IGVkaXRBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzRWRpdEFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgY29uc3QgZnJvbVN0cmVhbSA9IGNvbXBsZXRlZEFnZW50SWQ/LnRyaW0oKVxuICAgICAgICBjb25zdCBmcm9tQXJncyA9IGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgICBjb25zdCByZXNvbHZlZEFnZW50SWQgPSBmcm9tU3RyZWFtIHx8IGZyb21BcmdzXG4gICAgICAgIGlmIChyZXNvbHZlZEFnZW50SWQpIHtcbiAgICAgICAgICBlZGl0QWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogcmVzb2x2ZWRBZ2VudElkIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbVVybHMgPSBtYXRjaGVzLm1hcChtYXRjaCA9PiBwYXJzZUludChtYXRjaFsxXSwgMTApKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbCA9IGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuICAgICAgY29uc3QgdGFza0lkc0Zyb21EZWxldGlvblRleHQgPVxuICAgICAgICB3YXNUYXNrRGVsZXRlICYmIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPT09IDAgJiYgdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbC5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IGV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dChjb250ZW50KVxuICAgICAgICAgIDogW11cbiAgICAgIGNvbnN0IHRhc2tJZHNGb3JEYXNoYm9hcmQgPVxuICAgICAgICB0YXNrSWRzRnJvbVVybHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGFza0lkc0Zyb21VcmxzXG4gICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gdGFza0lkc0Zyb21EZWxldGVBcHByb3ZhbFxuICAgICAgICAgICAgOiB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dFxuXG4gICAgICBjb25zdCBzaG91bGRTeW5jRGFzaGJvYXJkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICAod2FzVGFza0NyZWF0aW9uIHx8IHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUpICYmXG4gICAgICAgIHRhc2tJZHNGb3JEYXNoYm9hcmQubGVuZ3RoID4gMFxuXG4gICAgICBpZiAoc2hvdWxkU3luY0Rhc2hib2FyZCkge1xuICAgICAgICBjb25zdCB0YXNrSWRzID0gdGFza0lkc0ZvckRhc2hib2FyZFxuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQodGFza0lkc1swXSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgICB1cmwucmVwbGFjZSgvXFwvKGRldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpKD89JHxcXD8pLywgdGFiU2VnbWVudClcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0UHJvamVjdE1lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWRSYXcgPSBwcm9qZWN0Py5pZCB8fCBsYXN0UHJvamVjdE1lc3NhZ2U/LnByb2plY3RJZFxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gY29udGV4dFByb2plY3RJZFJhdyA/IHBhcnNlSW50KFN0cmluZyhjb250ZXh0UHJvamVjdElkUmF3KSwgMTApIDogbnVsbFxuICAgICAgICBjb25zdCBwYXRoTWF0Y2ggPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC9wcm9qZWN0c1xcLyhcXGQrKVxcLy8pXG4gICAgICAgIGNvbnN0IHJvdXRlUHJvamVjdElkID0gcGF0aE1hdGNoID8gcGFyc2VJbnQocGF0aE1hdGNoWzFdLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IGlzT25Qcm9qZWN0Um91dGUgPSBjb250ZXh0UHJvamVjdElkICYmIHJvdXRlUHJvamVjdElkICYmIGNvbnRleHRQcm9qZWN0SWQgPT09IHJvdXRlUHJvamVjdElkXG5cbiAgICAgICAgaWYgKGlzT25Qcm9qZWN0Um91dGUpIHtcbiAgICAgICAgICBpZiAod2FzVGFza0NyZWF0aW9uKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0VkaXQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5lZGl0RXhpc3RpbmdUYXNrSW5EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH0gZWxzZSBpZiAod2FzVGFza0RlbGV0ZSkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmRlbGV0ZUV4aXN0aW5nVGFza0Zyb21EYXNoYm9hcmQ/Lih0YXNrSWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSZWZldGNoIGRlbCB0YXNrIHBhbmVsIHNpIGVzdMOhIGFiaWVydG8geSBsYSB0b29sIGFwcm9iYWRhIGVkaXTDsy9ib3Jyw7MgZXNhIHRhcmVhLlxuICAgICAgLy8gQ3VicmUgbG9zIGRvcyBmbHVqb3MgZGUgYXBwcm92YWw6XG4gICAgICAvLyAgIDEpIEFwcHJvdmFsIHBvciBib3TDs24g4oaSIGBwcmV2aW91c01lc3NhZ2UuYXBwcm92YWwucGVuZGluZ19hY3Rpb25zYCAodsOtYSBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlKVxuICAgICAgLy8gICAyKSBNYW51YWwgYXBwcm92YWwgKHVzdWFyaW8gdGlwZWEgXCJzaVwiL1wibm9cIikg4oaSIGBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudGBcbiAgICAgIGNvbnN0IG9wZW5UYXNrUGFuZWxJZCA9IHdpbmRvdy50YXNrUGFuZWw/LnRhc2tJZFxuICAgICAgY29uc3QgbWFudWFsQXBwcm92YWwgPSBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudFxuICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSBudWxsIC8vIGNvbnN1bWlyIHVuYSBzb2xhIHZlelxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0VkaXQgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhtYW51YWxBcHByb3ZhbC50b29sTmFtZSlcbiAgICAgIGNvbnN0IG1hbnVhbFdhc1Rhc2tEZWxldGUgPSAhIW1hbnVhbEFwcHJvdmFsICYmIFRBU0tfREVMRVRFX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuXG4gICAgICBpZiAob3BlblRhc2tQYW5lbElkICYmICh3YXNUYXNrRWRpdCB8fCB3YXNUYXNrRGVsZXRlIHx8IG1hbnVhbFdhc1Rhc2tFZGl0IHx8IG1hbnVhbFdhc1Rhc2tEZWxldGUpKSB7XG4gICAgICAgIGNvbnN0IG1hbnVhbFBzZXVkb0FjdGlvbjogUGVuZGluZ0FjdGlvbiB8IG51bGwgPSBtYW51YWxBcHByb3ZhbFxuICAgICAgICAgID8gKHsgdG9vbF9uYW1lOiBtYW51YWxBcHByb3ZhbC50b29sTmFtZSwgdG9vbF9hcmdzOiBtYW51YWxBcHByb3ZhbC50b29sQXJncyA/PyB7fSB9IGFzIFBlbmRpbmdBY3Rpb24pXG4gICAgICAgICAgOiBudWxsXG4gICAgICAgIGNvbnN0IGFmZmVjdGVkVGFza0lkcyA9IFtcbiAgICAgICAgICAuLi5leHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tVXJscyxcbiAgICAgICAgICAuLi50YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLFxuICAgICAgICAgIC4uLihtYW51YWxQc2V1ZG9BY3Rpb24gPyBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MoW21hbnVhbFBzZXVkb0FjdGlvbl0pIDogW10pLFxuICAgICAgICBdLm1hcChTdHJpbmcpXG4gICAgICAgIGlmIChhZmZlY3RlZFRhc2tJZHMuaW5jbHVkZXMoU3RyaW5nKG9wZW5UYXNrUGFuZWxJZCkpKSB7XG4gICAgICAgICAgd2luZG93LnRhc2tQYW5lbD8ucmVmZXRjaFRhc2s/LigpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYW5zd2VyLSR7bWVtb3J5U2Vzc2lvbklkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGNvbnRlbnRUb0FkZCxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIHNvdXJjZXMsXG4gICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBzdWdnZXN0aW9ucyB8fCBbXSxcbiAgICAgICAgLi4uKGNyZWF0ZUFnZW50Rm9sbG93VXAgPyB7IGNyZWF0ZUFnZW50Rm9sbG93VXAgfSA6IHt9KSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChjcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkKSB7XG4gICAgICAgIGZldGNoQWdlbnREZXRhaWwoY3JlYXRlQWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7IGFnZW50OiBjaGF0QWdlbnQgfSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3VzZUNoYXRNYW5hZ2VyXSBObyBzZSBwdWRvIGHDsWFkaXIgZWwgYWdlbnRlIHJlY2nDqW4gY3JlYWRvIGFsIGxpc3RhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGVkaXRBZ2VudEZvbGxvd1VwPy5hZ2VudElkKSB7XG4gICAgICAgIGZldGNoQWdlbnREZXRhaWwoZWRpdEFnZW50Rm9sbG93VXAuYWdlbnRJZClcbiAgICAgICAgICAudGhlbihjaGF0QWdlbnQgPT4ge1xuICAgICAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gcmVmcmVzY2FyIGVsIGFnZW50ZSBlZGl0YWRvJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGlmIChmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIHByb2plY3QsIGdldFRhYlRhc2tEZWZhdWx0LCBldmVudCwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1TdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNsZWFyU3RyZWFtVWlSZWYuY3VycmVudCgpXG4gICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LWNhbmNlbGxlZGAsXG4gICAgICBtZXNzYWdlOiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgfSlcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgfSwgNTAwKVxuICB9LCBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICBjb25zdCBoaXRsQ29udGV4dDogSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gICAgICAgIG1lc3NhZ2VJZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucz8ubWFwKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkKSxcbiAgICAgIH1cbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBoaXRsQ29udGV4dFxuXG4gICAgICBpZiAoYXBwcm92YWwubWFudWFsX2FwcHJvdmFsX2RldGVjdGVkKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWN0aW9uID0gYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5bMF1cbiAgICAgICAgY29uc3QgdG9vbE5hbWUgPSAoYXBwcm92YWwgYXMgeyB0b29sX25hbWU/OiBzdHJpbmcgfSkudG9vbF9uYW1lID8/IGZpcnN0QWN0aW9uPy50b29sX25hbWUgPz8gJydcbiAgICAgICAgY29uc3QgdG9vbEFyZ3MgPVxuICAgICAgICAgICgoYXBwcm92YWwgYXMgeyB0b29sX2FyZ3M/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9KS50b29sX2FyZ3MgPz9cbiAgICAgICAgICAgIChmaXJzdEFjdGlvbj8udG9vbF9hcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkKSkgfHxcbiAgICAgICAgICBudWxsXG4gICAgICAgIGlmICh0b29sTmFtZSkge1xuICAgICAgICAgIGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50ID0geyB0b29sTmFtZSwgdG9vbEFyZ3MgfVxuICAgICAgICB9XG4gICAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIEFkZCBhIG1lc3NhZ2Ugd2l0aCB0aGUgYXBwcm92YWwgcmVxdWVzdFxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZTogYWNjdW11bGF0ZWRDb250ZW50IHx8ICcnLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIGFwcHJvdmFsU3RhdHVzOiAncGVuZGluZycsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2VdXG4gIClcblxuICBjb25zdCB7XG4gICAgYXNrTWFpYSxcbiAgICBpc0xvYWRpbmc6IHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgc3RvcFN0cmVhbWluZyxcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5LFxuICB9ID0gdXNlT3JjaGVzdHJhdG9yU3RyZWFtKHtcbiAgICBvbkVycm9yOiBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICBvblN0cmVhbVVwZGF0ZTogaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgIG9uRmluaXNoU3RyZWFtOiBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgb25TdG9wOiBoYW5kbGVTdHJlYW1TdG9wLFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZDogaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZixcbiAgfSlcblxuICAvLyBNYW50ZW5lbW9zIGVsIHNldHRlciBtw6FzIHJlY2llbnRlIGVuIHVuYSByZWYgcGFyYSBxdWUgcHVlZGEgdXNhcnNlIGRlc2RlXG4gIC8vIGVmZWN0b3MgZGVmaW5pZG9zIGFudGVzIGVuIGVsIGFyY2hpdm8gKGNhbWJpbyBkZSBjaGF0LCByZXNldCwgZXRjLikuXG4gIGFib3J0U3RyZWFtU2lsZW50bHlSZWYuY3VycmVudCA9IGFib3J0U3RyZWFtU2lsZW50bHlcbiAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50ID0gKCkgPT4ge1xuICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0QWN0aXZlTG9hZGluZ3Moe30pXG4gICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gIH1cblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudEZpbGVbXSB8IFNlbmRNZXNzYWdlT3B0aW9ucyxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCB8fCB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGF0dGFjaG1lbnRzLCBvcHRpb25zIH0gPSBub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MoYXR0YWNobWVudHNPck9wdGlvbnMpXG4gICAgICAvLyBMYXMgbWVudGlvbnMgcHVlZGVuIHZlbmlyIHbDrWEgNXRvIHBhcsOhbWV0cm8gKGNhbGwgcG9zaXRpb25hbCBkZXNkZSBlbCBmb290ZXIpXG4gICAgICAvLyBvIHbDrWEgU2VuZE1lc3NhZ2VPcHRpb25zIChjYWxsIHByb2dyYW3DoXRpY28pLiBFbCBwYXLDoW1ldHJvIGV4cGzDrWNpdG8gZ2FuYS5cbiAgICAgIGNvbnN0IGVmZmVjdGl2ZU1lbnRpb25zID0gbWVudGlvbnMgPz8gb3B0aW9ucy5tZW50aW9uc1xuICAgICAgY29uc3QgY29udGV4dE1lc3NhZ2U6IENvbnRleHRNZXNzYWdlIHwgdW5kZWZpbmVkID0gYnVpbGRDb250ZXh0TWVzc2FnZShlZmZlY3RpdmVNZW50aW9ucylcbiAgICAgIGNvbnN0IHBheWxvYWRGdWFJZCA9IGZ1YUlkID8/IG9wdGlvbnMuZnVhSWRcbiAgICAgIGNvbnN0IHBheWxvYWRTY0lkID0gc2NJZCA/PyBvcHRpb25zLnNjSWRcbiAgICAgIGNvbnN0IHBheWxvYWRDb250ZXh0RGF0YSA9IG9wdGlvbnMuY29udGV4dERhdGFcbiAgICAgIGNvbnN0IGRpc3BsYXlNZXNzYWdlID0gZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheShtZXNzYWdlLCB7XG4gICAgICAgIGZ1YUlkOiBwYXlsb2FkRnVhSWQsXG4gICAgICAgIHNjSWQ6IHBheWxvYWRTY0lkLFxuICAgICAgfSlcblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIC8vIE5vIGFncmVnYXIgcHJvamVjdElkIGFsIG1lbnNhamUgZGVsIHVzdWFyaW8gLSBzZSBkZXRlcm1pbmFyw6EgZGVzcHXDqXNcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2U6IGRpc3BsYXlNZXNzYWdlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLlVTRVIsXG4gICAgICAgIHNvdXJjZXM6IGF0dGFjaG1lbnRzLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICB9KVxuXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlcklkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogc3RyZWFtaW5nUGxhY2Vob2xkZXJJZCxcbiAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiBhZ2VudD8ubmFtZSB8fCAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSlcblxuICAgICAgbGV0IGZpbmFsTWVzc2FnZSA9IG1lc3NhZ2VcblxuICAgICAgaWYgKG1lc3NhZ2UgPT09IHQoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpKSB7XG4gICAgICAgIGZpbmFsTWVzc2FnZSA9IGBGQVE6ICR7dCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJyl9IC0gVGlwbyBkZSByZW50YWJpbGlkYWQ6ICR7XG4gICAgICAgICAgb3B0aW9ucy5wcm9qZWN0Q2hhbmdlZD8uaW5jb21lVHlwZSB8fCBjb250ZXh0UmVmLmN1cnJlbnQucHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBjb25zdCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBwcm9qZWN0OiBjdHhQcm9qZWN0LFxuICAgICAgICBjbGllbnQ6IGN0eENsaWVudCxcbiAgICAgICAgdGFzazogY3R4VGFzayxcbiAgICAgIH0gPSBjb250ZXh0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlUHJvamVjdElkID0gbGFzdE1lc3NhZ2VXaXRoUHJvamVjdD8ucHJvamVjdElkXG4gICAgICBjb25zdCBwcm9qZWN0VG9SZXF1ZXN0ID0gcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QoY3R4Q2hpcHNQcm9qZWN0LCBsYXN0TWVzc2FnZVByb2plY3RJZClcblxuICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIHNlbmRNZXNzYWdlIGNvbnRleHQgcmVzb2x1dGlvbjonLCB7XG4gICAgICAgIGNoaXBzUHJvamVjdDogY3R4Q2hpcHNQcm9qZWN0LFxuICAgICAgICBjaGlwc1Byb2plY3RJZDogY3R4Q2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPyBOdW1iZXIoY3R4Q2hpcHNQcm9qZWN0LnByb2plY3RJZCkgOiBudWxsLFxuICAgICAgICBsYXN0TWVzc2FnZVByb2plY3RJZCxcbiAgICAgICAgcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgY2xpZW50SWQ6IGN0eENsaWVudD8uaWQsXG4gICAgICAgIHRhc2tJZDogY3R4VGFzaz8uaWQsXG4gICAgICAgIHByb2plY3RQcm9wSWQ6IGN0eFByb2plY3Q/LmlkLFxuICAgICAgICBhZ2VudFR5cGU6IGFnZW50Py50eXBlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKFtwcm9qZWN0VG9SZXF1ZXN0XSlcblxuICAgICAgY29uc3QgcGF5bG9hZEZhcUlkID0gZmFxSWQgPz8gb3B0aW9ucy5mYXFJZFxuICAgICAgY29uc3QgcGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkID0gYWdlbnRTdWdnZXN0aW9uSWQgPz8gb3B0aW9ucy5hZ2VudFN1Z2dlc3Rpb25JZFxuXG4gICAgICBjb25zdCBwYXlsb2FkRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogZmluYWxNZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lOiBhdXRoVXNlci5sYXN0TmFtZSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4oY3R4UHJvamVjdD8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihjdHhQcm9qZWN0LmZlZUlkKSB9IDoge30pLFxuICAgICAgICAuLi5yZXNvbHZlQ2xpZW50UGF5bG9hZChjdHhDbGllbnQsIGN0eFByb2plY3QpLFxuICAgICAgICAuLi4ocHJvamVjdHM/Lmxlbmd0aCA/IHsgcHJvamVjdE5hbWU6IHByb2plY3RzWzBdLm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihhdHRhY2htZW50cy5sZW5ndGggPiAwID8geyBhdHRhY2htZW50cyB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZhcUlkID8geyBmYXFJZDogcGF5bG9hZEZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkOiBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGdWFJZCA/IHsgZnVhSWQ6IHBheWxvYWRGdWFJZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZFNjSWQgPyB7IHNjSWQ6IHBheWxvYWRTY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8uZW50aXR5ICE9IG51bGwgPyB7IGFnZW50RW50aXR5OiBhZ2VudC5lbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkQ29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiBwYXlsb2FkQ29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cblxuICAgICAgYXNrTWFpYShwYXlsb2FkRGF0YSlcbiAgICB9LFxuICAgIFtcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBldmVudCxcbiAgICAgIGFza01haWEsXG4gICAgICBwcm9qZWN0LFxuICAgICAgY2xpZW50LFxuICAgICAgdGFzayxcbiAgICAgIGNoaXBzUHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgXVxuICApXG5cbiAgY29uc3QgY2hhbmdlUHJvamVjdCA9IHVzZUNhbGxiYWNrKFxuICAgIChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICAgIGlmICghY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSByZXR1cm5cblxuICAgICAgaWYgKG9wdGlvbi5pZCAhPT0gcHJvamVjdD8uaWQpIHtcbiAgICAgICAgc2V0UHJvamVjdChvcHRpb24pXG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9qZWN0ICYmIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkge1xuICAgICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIH0pKVxuXG4gICAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNYW5hZ2VyXSBQQVRIPWNoYW5nZVByb2plY3Qg4oCUIHVzYSBvcHRpb24uaWQgZGlyZWN0byAoTk8gY2hpcHNQcm9qZWN0KTonLCB7XG4gICAgICAgICAgb3B0aW9uSWQ6IG9wdGlvbi5pZCxcbiAgICAgICAgICBwcm9qZWN0UHJvcElkOiBwcm9qZWN0Py5pZCA/PyBudWxsLFxuICAgICAgICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgICAgIGFnZW50VHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgYXNrTWFpYSh7XG4gICAgICAgICAgbWVzc2FnZTogY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50LFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgcHJvamVjdElkOiBvcHRpb24uaWQsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmlyc3ROYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgLi4uKG9wdGlvbj8uZmVlSWQgIT0gbnVsbCA/IHsgZmVlSWQ6IE51bWJlcihvcHRpb24uZmVlSWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKG9wdGlvbj8uY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IE51bWJlcihvcHRpb24uY2xpZW50SWQpIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmUsIGFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlRmVlZGJhY2sgPSB1c2VDYWxsYmFjayhhc3luYyAoZmVlZGJhY2tQcm9wOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLkNoYXRzLndhc0hlbHBmdWxDaGF0KGNoYXRNZXNzYWdlSWQsIGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQKVxuICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gY2hhdE1lc3NhZ2VJZCAmJiBtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgd2FzSGVscGZ1bDogZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxEZWNpc2lvbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIHRocmVhZElkczogc3RyaW5nW10sXG4gICAgICBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcsXG4gICAgICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgICApID0+IHtcbiAgICAgIGlmICghdGhyZWFkSWRzPy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gdGhyZWFkX2lkcyBwcm92aWRlZCBmb3IgYXBwcm92YWwgZGVjaXNpb24nKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGFsZ3VubyBkZSBlc3RvcyB0aHJlYWRJZHMgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gdGhyZWFkSWRzLmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICAgICAgKVxuXG4gICAgICBpZiAoIW1lc3NhZ2VXaXRoQXBwcm92YWwgfHwgIW1lc3NhZ2VXaXRoQXBwcm92YWwuYXBwcm92YWwpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gc2UgZW5jb250csOzIG1lbnNhamUgY29uIGFwcHJvdmFsIHBhcmEgdGhyZWFkX2lkczonLCB0aHJlYWRJZHMpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG4gICAgICBjb25zdCBsb2FkaW5nS2V5ID0gdGhyZWFkSWRzWzBdXG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICBtZXNzYWdlVGV4dDogbWVzc2FnZVdpdGhBcHByb3ZhbC5tZXNzYWdlLFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgcGVuZGluZ0FjdGlvbnM6IGFwcHJvdmFsLnBlbmRpbmdfYWN0aW9ucyxcbiAgICAgICAgdGhyZWFkSWRzLFxuICAgICAgfVxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG5cbiAgICAgIGNvbnN0IGluaXRpYWxBY3Rpdml0eSA9IHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxDb250ZXh0KVxuXG4gICAgICAvLyBVcGRhdGUgbWVzc2FnZSBzdGF0dXMgaW1tZWRpYXRlbHlcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IG1lc3NhZ2VJZCkge1xuICAgICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgICB9KVxuXG4gICAgICAvLyBUcmlnZ2VyIHJlLXJlbmRlclxuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT4gbS5pZCA9PT0gbWVzc2FnZUlkKVxuICAgICAgaWYgKGV4aXN0aW5nTWVzc2FnZSkge1xuICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgYWRkTWVzc2FnZSh7IC4uLmV4aXN0aW5nTWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9KVxuICAgICAgfVxuXG4gICAgICAvLyBDYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIEFMTCB0aHJlYWRfaWRzIGluIGEgc2luZ2xlIHJlcXVlc3RcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKHRydWUpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICAvLyBBZGQgbG9hZGluZ1xuICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBbbG9hZGluZ0tleV06IGluaXRpYWxBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgfSkpXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShpbml0aWFsQWN0aXZpdHkpXG5cbiAgICAgIC8vIE1hcmNhIHNpIGVsIHN0cmVhbSBjZXJyw7MgdsOtYSB1biBldmVudG8gdGVybWluYWwgKGNvbXBsZXRlL2FwcHJvdmFsL2Vycm9yKS5cbiAgICAgIC8vIFNpIGVsIGJhY2tlbmQgY2llcnJhIGxhIGNvbmV4acOzbiBzaW4gZW1pdGlybG8sIGxpbXBpYW1vcyBlbCBpbmRpY2Fkb3IgZW4gZWxcbiAgICAgIC8vIGBmaW5hbGx5YCBwYXJhIHF1ZSBubyBxdWVkZSB0cmFiYWRvIGVuIFwiRXNjcmliaWVuZG8gbGEgcmVzcHVlc3RhXCIuXG4gICAgICBsZXQgc3RyZWFtU2V0dGxlZCA9IGZhbHNlXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoe1xuICAgICAgICAgIHRocmVhZElkcywgLy8gU2VuZCBhbGwgYWN0aW9uIHRocmVhZF9pZHMgYXQgb25jZVxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBzdHJlYW1cbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgbG9hZGluZ0tleSwge1xuICAgICAgICAgIG9uVGhpbmtpbmc6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSA9IHtcbiAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShhY3Rpdml0eSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVBY3Rpdml0eSA9IHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50LFxuICAgICAgICAgICAgICBjdXJyZW50VGhyZWFkSWQsXG4gICAgICAgICAgICAgIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9XG4gICAgICAgICAgICApXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShub2RlQWN0aXZpdHkpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyZW50VGhyZWFkSWRdOiBub2RlQWN0aXZpdHkubWVzc2FnZSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Db21wbGV0ZTogKFxuICAgICAgICAgICAgZmluYWxDb250ZW50OiBzdHJpbmcsXG4gICAgICAgICAgICBzb3VyY2VzOiBhbnksXG4gICAgICAgICAgICBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZyxcbiAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nLFxuICAgICAgICAgICAgYXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICAgICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgICAgICAgIGFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRmluaXNoKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCBhdHRhY2htZW50cywgc3VnZ2VzdGlvbnMsIGFnZW50SWQpXG4gICAgICAgICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQXBwcm92YWxSZXF1aXJlZDogKGFwcHJvdmFsUGF5bG9hZDogYW55LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIC8vIEFwcHJvdmFsIHBhdXNhZG8gKGJvdMOzbik6IGNpZXJyYSBlc3RlIGNvbnRpbnVlLXRocmVhZC5cbiAgICAgICAgICAgIC8vIE1hbnVhbCBhcHByb3ZhbDogZWwgU1NFIHNpZ3VlIGNvbiBub2RlL3Rva2VuL2NvbXBsZXRlICh5IG3DoXMgSElUTCkuXG4gICAgICAgICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gYXBwcm92YWxQYXlsb2FkPy5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgICAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlQXBwcm92YWxSZXF1aXJlZChhcHByb3ZhbFBheWxvYWQgYXMgQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICAvLyBSZWQgZGUgc2VndXJpZGFkOiBzaSBlbCBzdHJlYW0gY2VycsOzIHNpbiBldmVudG8gdGVybWluYWwsIGVsIGluZGljYWRvclxuICAgICAgICAvLyAocC4gZWouIFwiRXNjcmliaWVuZG8gbGEgcmVzcHVlc3RhXCIpIHF1ZWRhcsOtYSB0cmFiYWRvLiBMbyBsaW1waWFtb3MgYXF1w60uXG4gICAgICAgIGlmICghc3RyZWFtU2V0dGxlZCkge1xuICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgIGlmICghKGxvYWRpbmdLZXkgaW4gcHJldikpIHJldHVybiBwcmV2XG4gICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbbG9hZGluZ0tleV1cbiAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICBhZGRNZXNzYWdlLFxuICAgICAgaGFuZGxlU3RyZWFtRXJyb3IsXG4gICAgICBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgICBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHksXG4gICAgICB0LFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGluaXRpYWxpemVDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBpZiAoaW5pdGlhbENoYXRJZCkge1xuICAgICAgYXdhaXQgbG9hZE1lc3NhZ2VzKClcbiAgICB9IGVsc2UgaWYgKHVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgY29uc3QgaGFzSW5pdGlhbE1lc3NhZ2UgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5tZXNzYWdlPy50cmltKCkpXG4gICAgICBjb25zdCBoYXNJbml0aWFsQXR0YWNobWVudHMgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5hdHRhY2htZW50cz8ubGVuZ3RoKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEZhcSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmZhcUlkKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbEZ1YSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkKVxuICAgICAgY29uc3QgaGFzSW5pdGlhbFNjID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZClcblxuICAgICAgaWYgKCFoYXNJbml0aWFsTWVzc2FnZSAmJiAhaGFzSW5pdGlhbEF0dGFjaG1lbnRzICYmICFoYXNJbml0aWFsRmFxICYmICFoYXNJbml0aWFsRnVhICYmICFoYXNJbml0aWFsU2MpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICB0YXNrOiBjdHhUYXNrLFxuICAgICAgfSA9IGNvbnRleHRSZWYuY3VycmVudFxuICAgICAgY29uc3QgcHJvamVjdFRvUmVxdWVzdCA9IHJlc29sdmVQcm9qZWN0VG9SZXF1ZXN0KGN0eENoaXBzUHJvamVjdCwgbnVsbCkgPz8gY3R4UHJvamVjdD8uaWQgPz8gbnVsbFxuXG4gICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWFuYWdlcl0gUEFUSD1pbml0aWFsaXplQ2hhdC91c2VySW5pdGlhbE1lc3NhZ2Ug4oCUIGNvbnRleHRSZWYgcmVzb2x1dGlvbjonLCB7XG4gICAgICAgIHByb2plY3RQcm9wSWQ6IGN0eFByb2plY3Q/LmlkID8/IG51bGwsXG4gICAgICAgIGNsaWVudElkOiBjdHhDbGllbnQ/LmlkID8/IG51bGwsXG4gICAgICAgIHRhc2tJZDogY3R4VGFzaz8uaWQgPz8gbnVsbCxcbiAgICAgICAgY2hpcHNQcm9qZWN0SWQ6IGN0eENoaXBzUHJvamVjdD8ucHJvamVjdElkID8/IG51bGwsXG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGFnZW50VHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuXG4gICAgICBhc2tNYWlhKHtcbiAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lISxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihjdHhQcm9qZWN0Py5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKGN0eFByb2plY3QuZmVlSWQpIH0gOiB7fSksXG4gICAgICAgIC4uLnJlc29sdmVDbGllbnRQYXlsb2FkKGN0eENsaWVudCwgY3R4UHJvamVjdCksXG4gICAgICAgIC4uLihjdHhQcm9qZWN0Py5uYW1lID8geyBwcm9qZWN0TmFtZTogY3R4UHJvamVjdC5uYW1lIH0gOiB7fSksXG4gICAgICAgIC4uLihjdHhUYXNrPy5pZCAhPSBudWxsXG4gICAgICAgICAgPyB7IHRhc2tJZDogTnVtYmVyKGN0eFRhc2suaWQpLCAuLi4oY3R4VGFzay5uYW1lID8geyB0YXNrTmFtZTogY3R4VGFzay5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgIDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgPyB7IGZhcUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5hZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkID8geyBmdWFJZDogdXNlckluaXRpYWxNZXNzYWdlLmZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCA/IHsgc2NJZDogdXNlckluaXRpYWxNZXNzYWdlLnNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIC4uLihidWlsZENvbnRleHRNZXNzYWdlKHVzZXJJbml0aWFsTWVzc2FnZS5tZW50aW9ucylcbiAgICAgICAgICA/IHsgY29udGV4dE1lc3NhZ2U6IGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhOiB1c2VySW5pdGlhbE1lc3NhZ2UuY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXG4gICAgaW5pdGlhbENoYXRJZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50KClcbiAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICBjdXJyZW50Q2hhdElkLmN1cnJlbnQgPSB1dWlkdjQoKVxuICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN0b3BHZW5lcmF0aW9uID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0b3BTdHJlYW1pbmcoKVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlOiB3YWl0aW5nUmVzcG9uc2UgfHwgaXNDb250aW51aW5nU3RyZWFtLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgaXNDb250aW51aW5nU3RyZWFtIHx8IGxvYWRpbmdNZXNzYWdlcyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsV0FBVyxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDaEUsU0FBU0MsRUFBRSxJQUFJQyxNQUFNLFFBQVEsTUFBTTtBQUNuQyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxJQUFJLFFBQVEsU0FBUztBQUc5QixTQUFTQyxPQUFPLFFBQWlCLHdCQUF3QjtBQUN6RCxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBQ3RDLFNBQVNDLFFBQVEsUUFBUSw0REFBNEQ7QUFDckYsU0FBdUNDLGVBQWUsUUFBd0Msa0JBQWtCO0FBQ2hILFNBQXlDQyxtQkFBbUIsUUFBUSw0QkFBNEI7QUFDaEcsU0FBU0Msa0NBQWtDLFFBQVEsc0NBQXNDO0FBR3pGLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7QUFDNUMsU0FBU0MsaUJBQWlCLFFBQVEsc0JBQXNCO0FBQ3hELFNBQVNDLHNCQUFzQixRQUFRLDBCQUEwQjtBQUNqRSxTQUFTQyxnQkFBZ0IsUUFBUSw2Q0FBNkM7QUFDOUUsU0FBU0MsdUJBQXVCLEVBQUVDLHlCQUF5QixRQUFRLDJCQUEyQjtBQUU5RixTQUNFQyx5QkFBeUIsRUFDekJDLHdCQUF3QixFQUN4QkMsNkJBQTZCLEVBQzdCQyxnQ0FBZ0MsUUFFM0Isb0NBQW9DO0FBQzNDLFNBQVNDLGNBQWMsUUFBUSx3QkFBd0I7QUFDdkQsU0FBU0Msd0JBQXdCLEVBQUVDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUl6RixJQUFNQyx3QkFBd0IsR0FBRyxT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
1398
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsImJ1aWxkQ29udGV4dE1lc3NhZ2UiLCJmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5IiwidXNlUHJvamVjdHMiLCJ1c2VUYWJUYXNrRGVmYXVsdCIsIlRBU0tfVVJMX1JFR0VYX1BBVFRFUk4iLCJmZXRjaEFnZW50RGV0YWlsIiwiYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QiLCJnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJzdHJlYW1pbmdTdG9yZSIsImlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCIsIm1lcmdlU3RyZWFtQ2h1bmsiLCJub3JtYWxpemVTZW5kTWVzc2FnZUFyZ3MiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5IiwiYXR0YWNobWVudHMiLCJvcHRpb25zIiwicmVzb2x2ZVByb2plY3RUb1JlcXVlc3QiLCJjaGlwc1Byb2plY3QiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsImNoaXBzUHJvamVjdElkIiwicHJvamVjdElkIiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJwYXJzZWQiLCJyZXNvbHZlQ2xpZW50UGF5bG9hZCIsImN0eENsaWVudCIsImN0eFByb2plY3QiLCJfY3R4UHJvamVjdCRjbGllbnQiLCJpZCIsIl9vYmplY3RTcHJlYWQiLCJjbGllbnRJZCIsIm5hbWUiLCJjbGllbnROYW1lIiwiY2xpZW50Iiwibm9ybWFsaXplQXNzaXN0YW50QXR0YWNobWVudHMiLCJyYXdBdHRhY2htZW50cyIsImZpbHRlciIsImF0dGFjaG1lbnQiLCJfdHlwZW9mIiwibWFwIiwiaW5kZXgiLCJ0cmltIiwiY29uY2F0IiwidHlwZSIsIm1pbWVUeXBlIiwibWltZV90eXBlIiwiZnVsbEZpbGVOYW1lIiwiaW5jbHVkZXMiLCJudW1lcmljU2l6ZSIsInNpemUiLCJmaWxlIiwiRmlsZSIsInVybF9vcmlnaW5hbCIsInVuZGVmaW5lZCIsInVybF90aHVtYm5haWwiLCJ1cmxfZmlsZSIsInJvbGUiLCJleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MiLCJwZW5kaW5nQWN0aW9ucyIsImlkcyIsInB1c2hJZCIsInJhdyIsIm4iLCJwYXJzZUludCIsIlN0cmluZyIsImlzTmFOIiwicHVzaCIsImZvckVhY2giLCJhY3Rpb24iLCJfcmVjJHRhc2tfaWQiLCJhcmdzIiwidG9vbF9hcmdzIiwicmVjIiwidGFza19pZCIsInRhc2tfaWRzIiwidGFza3MiLCJ0IiwiX3RyZWMkdGFza19pZCIsInRyZWMiLCJleHRyYWN0VGFza0lkc0Zyb21EZWxldGVQZW5kaW5nQWN0aW9ucyIsInRvb2xfbmFtZSIsIl9yZWMkdGFza19pZDIiLCJsaXN0IiwidGlkIiwiZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMiLCJfcmVjJGFnZW50X2lkIiwiZWRpdEFjdGlvbiIsImZpbmQiLCJhIiwidG9Mb3dlckNhc2UiLCJhZ2VudF9pZCIsImFnZW50SWQiLCJleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUiLCJ0b29sTmFtZSIsIl9yZWYiLCJfcmVjJGFnZW50X2lkMiIsImV4dHJhY3RUYXNrSWRzRnJvbUFzc2lzdGFudERlbGV0aW9uVGV4dCIsInRleHQiLCJsYWJlbGVkIiwibWF0Y2giLCJib2xkIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsInRvU3RyaW5nIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJzcGxpdCIsIl9saW5lJHNwbGl0MiIsIl9zbGljZWRUb0FycmF5IiwiZXZlbnRMaW5lIiwiZGF0YUxpbmUiLCJldmVudFR5cGUiLCJyZXBsYWNlIiwiZGF0YVN0ciIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJwYXJzZUVycm9yIiwiY29uc29sZSIsImVycm9yIiwicHJvY2Vzc1NTRVN0cmVhbSIsIl9yZWYyIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50Iiwic3RyZWFtU2V0dGxlZCIsIm5vdGlmeUNvbXBsZXRlIiwiaGFuZGxlTGluZSIsImlzUmVhZGVyRG9uZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiaSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiX2hhbmRsZUxpbmUiLCJldmVudERhdGEiLCJvblRoaW5raW5nIiwiY29udGVudCIsIm9uVG9rZW4iLCJtZXNzYWdlIiwib25Ob2RlIiwiZmluYWxDb250ZW50IiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwiaXNNYW51YWxBcHByb3ZhbCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsIm9uQXBwcm92YWxSZXF1aXJlZCIsImNhbGwiLCJvbkVycm9yIiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfZXZlbnREYXRhJGFnZW50X2lkIiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImNvbXBsZXRlZEFnZW50SWQiLCJvbkNvbXBsZXRlIiwicmVhZCIsInNlbnQiLCJhYnJ1cHQiLCJkZWNvZGUiLCJzdHJlYW0iLCJwb3AiLCJsZW5ndGgiLCJzdG9wIiwiX3giLCJfeDIiLCJfeDMiLCJhcHBseSIsImFyZ3VtZW50cyIsInVzZUNoYXRNYW5hZ2VyIiwiX3JlZjMiLCJpbml0aWFsQ2hhdElkIiwiY2hhdElkIiwidXNlckluaXRpYWxNZXNzYWdlIiwiX3JlZjMkYWdlbnRzIiwiYWdlbnRzIiwiX3VzZVQiLCJfdXNlR2xvYmFsQ29udGV4dCIsInByb2plY3QiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50IiwidGFzayIsInNldFRhc2siLCJhZ2VudCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwic2V0Q2hpcHNQcm9qZWN0IiwiZXZlbnQiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZVN0YWJsZUNhbGxiYWNrcyIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwiX2NoaXBzUHJvamVjdCRwcm9qZWN0IiwiX2NoaXBzUHJvamVjdCRwcm9qZWN0MiIsIl9wcm9qZWN0JGlkIiwiX2NsaWVudCRpZCIsIl90YXNrJGlkIiwiaW5mbyIsImNoaXBzUHJvamVjdE5hbWUiLCJwcm9qZWN0TmFtZSIsInByb2plY3RQcm9wSWQiLCJ0YXNrSWQiLCJjdXJyZW50TWVzc2FnZUlkIiwiY3VycmVudFVzZXJRdWVzdGlvbiIsImN1cnJlbnRDaGF0SWQiLCJyZXBvcnRlZEV2ZW50IiwibWVzc2FnZXNSZWYiLCJsYXN0TWFudWFsQXBwcm92YWxSZWYiLCJoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsInN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYiLCJhY3RpdmVTdHJlYW1DaGF0SWRSZWYiLCJhYm9ydFN0cmVhbVNpbGVudGx5UmVmIiwiY2xlYXJTdHJlYW1VaVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVMb2FkaW5ncyIsInNldEFjdGl2ZUxvYWRpbmdzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc0NvbnRpbnVpbmdTdHJlYW0iLCJzZXRJc0NvbnRpbnVpbmdTdHJlYW0iLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsImNvbnRleHRSZWYiLCJfdXNlQ2hhdE1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJsb2FkTWVzc2FnZXMiLCJhZGRNZXNzYWdlIiwicmVtb3ZlTWVzc2FnZSIsImhhbmRsZVNjcm9sbCIsImN1c3RvbUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJjbGVhciIsImhhbmRsZVN0cmVhbUVycm9yIiwiZXJyb3JNZXNzYWdlIiwiZXJyb3JSYXdNZXNzYWdlIiwiX2Vycm9yUmF3TWVzc2FnZSRtYXRjIiwiX2Vycm9yUmF3TWVzc2FnZSRtYXRjMiIsInRlbXBNZXNzYWdlSWQiLCJpc0FjY2Vzc0RlbmllZCIsImlzUHJvbXB0VG9vTG9uZyIsInVzZWQiLCJpc0Vycm9yIiwiZGF0ZSIsIkRhdGUiLCJ1c2VyIiwiQVNTSVNUQU5UIiwiaGFuZGxlU3RyZWFtVXBkYXRlIiwic3RhcnQiLCJzZXRUZXh0IiwiaGFuZGxlU3RyZWFtRmluaXNoIiwiX3JlZjQiLCJfY2FsbGVlMiIsIl9wcmV2aW91c01lc3NhZ2UkYXBwciIsIl93aW5kb3ckdGFza1BhbmVsIiwiX2NyZWF0ZUFnZW50Rm9sbG93VXAiLCJfZWRpdEFnZW50Rm9sbG93VXAiLCJ0YXNrVXJsUmVnZXgiLCJtYXRjaGVzIiwiY29udGVudFRvQWRkIiwicHJldmlvdXNNZXNzYWdlIiwiaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSIsIlRBU0tfQ1JFQVRJT05fVE9PTFMiLCJUQVNLX0VESVRfVE9PTFMiLCJUQVNLX0RFTEVURV9UT09MUyIsIndhc1Rhc2tDcmVhdGlvbiIsIndhc1Rhc2tFZGl0Iiwid2FzVGFza0RlbGV0ZSIsIndhc0NyZWF0ZUFnZW50QXBwcm92ZWQiLCJ3YXNDb25maWd1cmVBZ2VudEFjY2Vzc0FwcHJvdmVkIiwiY3JlYXRlQWdlbnRGb2xsb3dVcCIsImNvbmZpZ3VyZWRBZ2VudElkIiwid2FzRWRpdEFnZW50QXBwcm92ZWQiLCJlZGl0QWdlbnRGb2xsb3dVcCIsImZyb21TdHJlYW0iLCJmcm9tQXJncyIsInJlc29sdmVkQWdlbnRJZCIsInRhc2tJZHNGcm9tVXJscyIsInRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwiLCJ0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCIsInRhc2tJZHNGb3JEYXNoYm9hcmQiLCJzaG91bGRTeW5jRGFzaGJvYXJkIiwidGFza0lkcyIsInRhYiIsInRhYlNlZ21lbnQiLCJsYXN0UHJvamVjdE1lc3NhZ2UiLCJjb250ZXh0UHJvamVjdElkUmF3IiwiY29udGV4dFByb2plY3RJZCIsInBhdGhNYXRjaCIsInJvdXRlUHJvamVjdElkIiwiaXNPblByb2plY3RSb3V0ZSIsIl93aW5kb3ckbmV3UHJvamVjdERhcyIsIl93aW5kb3ckbmV3UHJvamVjdERhczIiLCJfd2luZG93JG5ld1Byb2plY3REYXMzIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzNCIsIl93aW5kb3ckbmV3UHJvamVjdERhczUiLCJfd2luZG93JG5ld1Byb2plY3REYXM2Iiwib3BlblRhc2tQYW5lbElkIiwibWFudWFsQXBwcm92YWwiLCJtYW51YWxXYXNUYXNrRWRpdCIsIm1hbnVhbFdhc1Rhc2tEZWxldGUiLCJfbWFudWFsQXBwcm92YWwkdG9vbEEiLCJtYW51YWxQc2V1ZG9BY3Rpb24iLCJhZmZlY3RlZFRhc2tJZHMiLCJfd2luZG93JHRhc2tQYW5lbDIiLCJfd2luZG93JHRhc2tQYW5lbDIkcmUiLCJfY29udGV4dDIiLCJSZWdFeHAiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJtYXRjaEFsbCIsIm0iLCJhdCIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwic29tZSIsImFwcHJvdmFsU3RhdHVzIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsImFpQ2hhdEhpdGxPcHRpb24iLCJhZ2VudF90eXBlIiwiYWN0aW9uX3R5cGUiLCJkZWNpc2lvbiIsIm9wdGlvbiIsImNyZWF0ZWRfYWdlbnRfaWQiLCJ1cmwiLCJtc2ciLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwibmV3UHJvamVjdERhc2hib2FyZCIsImFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkIiwiZWRpdEV4aXN0aW5nVGFza0luRGFzaGJvYXJkIiwiZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZCIsInRhc2tQYW5lbCIsInRvb2xBcmdzIiwicmVmZXRjaFRhc2siLCJ0aGVuIiwiY2hhdEFnZW50IiwiZXJyIiwiX3g0IiwiX3g1IiwiX3g2IiwiX3g3IiwiX3g4IiwiX3g5IiwiaGFuZGxlU3RyZWFtU3RvcCIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJzZXRUaW1lb3V0IiwiaGFuZGxlQXBwcm92YWxSZXF1aXJlZCIsIl9hcHByb3ZhbCRwZW5kaW5nX2FjdCIsImhpdGxDb250ZXh0IiwibWVzc2FnZUlkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwibWVzc2FnZVRleHQiLCJ0aHJlYWRJZHMiLCJ0aHJlYWRfaWQiLCJfYXBwcm92YWwkcGVuZGluZ19hY3QyIiwiX3JlZjUiLCJfdG9vbF9uYW1lIiwiX3Rvb2xfYXJncyIsImZpcnN0QWN0aW9uIiwiX3VzZU9yY2hlc3RyYXRvclN0cmVhIiwib25TdHJlYW1VcGRhdGUiLCJvbkZpbmlzaFN0cmVhbSIsIm9uU3RvcCIsImFza01haWEiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsInN0cmVhbUFjdGl2aXR5IiwidXBkYXRlU3RyZWFtQWN0aXZpdHkiLCJzdG9wU3RyZWFtaW5nIiwiYWJvcnRTdHJlYW1TaWxlbnRseSIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmNiIsIl9jYWxsZWUzIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJfbm9ybWFsaXplU2VuZE1lc3NhZ2UiLCJlZmZlY3RpdmVNZW50aW9ucyIsImNvbnRleHRNZXNzYWdlIiwicGF5bG9hZEZ1YUlkIiwicGF5bG9hZFNjSWQiLCJwYXlsb2FkQ29udGV4dERhdGEiLCJkaXNwbGF5TWVzc2FnZSIsIm5ld01lc3NhZ2VJZCIsImxhc3RNZXNzYWdlV2l0aFByb2plY3QiLCJjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMiLCJzdHJlYW1pbmdQbGFjZWhvbGRlcklkIiwiZmluYWxNZXNzYWdlIiwiX29wdGlvbnMkcHJvamVjdENoYW5nIiwiX2NvbnRleHRSZWYkY3VycmVudCRwIiwiaGlzdG9yeSIsIl9jb250ZXh0UmVmJGN1cnJlbnQiLCJjdHhDaGlwc1Byb2plY3QiLCJjdHhUYXNrIiwicHJvamVjdFRvUmVxdWVzdCIsInByb2plY3RzIiwicGF5bG9hZEZhcUlkIiwicGF5bG9hZEFnZW50U3VnZ2VzdGlvbklkIiwicGF5bG9hZERhdGEiLCJfY29udGV4dDMiLCJjb250ZXh0RGF0YSIsInBtQWlUeXBlZFRleHQiLCJVU0VSIiwicHJvamVjdENoYW5nZWQiLCJpbmNvbWVUeXBlIiwiaGlzdG9yeU1lc3NhZ2UiLCJhZ2VudFR5cGUiLCJsYW5nIiwidXNlcklkIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjb21wYW55X2lkIiwiYWdlbnROYW1lIiwiZmVlSWQiLCJ0YXNrTmFtZSIsImVudGl0eSIsImFnZW50RW50aXR5IiwiX3gwIiwiX3gxIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsIl94MTQiLCJjaGFuZ2VQcm9qZWN0IiwiX3Byb2plY3QkaWQyIiwiX2NoaXBzUHJvamVjdCRwcm9qZWN0MyIsIm9wdGlvbklkIiwiaGFuZGxlRmVlZGJhY2siLCJfcmVmNyIsIl9jYWxsZWU0IiwiZmVlZGJhY2tQcm9wIiwiY2hhdE1lc3NhZ2VJZCIsIl9jb250ZXh0NCIsIkNoYXRzIiwid2FzSGVscGZ1bENoYXQiLCJUSFVNQlNfVVAiLCJ3YXNIZWxwZnVsIiwiX3gxNSIsIl94MTYiLCJoYW5kbGVBcHByb3ZhbERlY2lzaW9uIiwiX3JlZjgiLCJfY2FsbGVlNSIsImVkaXRlZEFjdGlvbnMiLCJtZXNzYWdlV2l0aEFwcHJvdmFsIiwibG9hZGluZ0tleSIsImluaXRpYWxBY3Rpdml0eSIsImV4aXN0aW5nTWVzc2FnZSIsIm5ld1N0YXR1cyIsIl90IiwiX2NvbnRleHQ1IiwiX20kYXBwcm92YWwiLCJfZGVmaW5lUHJvcGVydHkiLCJPcmNoZXN0cmF0b3IiLCJjb250aW51ZVRocmVhZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJvayIsImFjdGl2aXR5IiwicGhhc2UiLCJjdXJyZW50VGhyZWFkSWQiLCJub2RlQWN0aXZpdHkiLCJ1c2VSZXN1bWluZ0ZhbGxiYWNrIiwibmV3TG9hZGluZ3MiLCJhcHByb3ZhbFBheWxvYWQiLCJmaW5pc2giLCJfeDE3IiwiX3gxOCIsIl94MTkiLCJpbml0aWFsaXplQ2hhdCIsIl9jYWxsZWU2IiwiX3VzZXJJbml0aWFsTWVzc2FnZSRtIiwiX3VzZXJJbml0aWFsTWVzc2FnZSRhIiwiX3JlZjAiLCJfcmVzb2x2ZVByb2plY3RUb1JlcXUiLCJfY3R4UHJvamVjdCRpZCIsIl9jdHhDbGllbnQkaWQiLCJfY3R4VGFzayRpZCIsIl9jdHhDaGlwc1Byb2plY3QkcHJvaiIsImhhc0luaXRpYWxNZXNzYWdlIiwiaGFzSW5pdGlhbEF0dGFjaG1lbnRzIiwiaGFzSW5pdGlhbEZhcSIsImhhc0luaXRpYWxGdWEiLCJoYXNJbml0aWFsU2MiLCJfY29udGV4dFJlZiRjdXJyZW50MiIsIl9jb250ZXh0NiIsIkJvb2xlYW4iLCJyZXNldENoYXQiLCJzdG9wR2VuZXJhdGlvbiIsImlzRGlzYWJsZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1hbmFnZXIvdXNlQ2hhdE1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmFkaXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0ZWQtb3B0aW9uYWwtY2hhaW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyB1c2VDaGF0TWVzc2FnZXMgfSBmcm9tICcuLi91c2VDaGF0TWVzc2FnZXMnXG5pbXBvcnQgeyB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gfSBmcm9tICcuLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VPcHRpb25zLCBVc2VDaGF0TWFuYWdlclByb3BzIH0gZnJvbSAnLi91c2VDaGF0TWFuYWdlci5pbnRlcmZhY2UnXG5pbXBvcnQgeyB1c2VVc2VyLCBDT1JVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uL3VzZUV2ZW50J1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZVVzZXIsIENoYXRIaXN0b3J5Um9sZSwgQXBwcm92YWxSZXF1ZXN0LCBQZW5kaW5nQWN0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uLCBDb250ZXh0TWVzc2FnZSwgYnVpbGRDb250ZXh0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZm9ybWF0UXVpY2tBY3Rpb25NZXNzYWdlRm9yRGlzcGxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1hdFF1aWNrQWN0aW9uTWVzc2FnZSdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5pbXBvcnQgeyBmZXRjaEFnZW50RGV0YWlsIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZmV0Y2hBZ2VudERldGFpbCdcbmltcG9ydCB7IGJ1aWxkSGl0bEFjdGlvblR5cGVMaXN0LCBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHkgfSBmcm9tICcuLi8uLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB7XG4gIGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UsXG4gIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxuICB0eXBlIEhpdGxFeGVjdXRpb25Db250ZXh0LFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgc3RyZWFtaW5nU3RvcmUgfSBmcm9tICcuLi91c2VTdHJlYW1pbmdNZXNzYWdlJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcblxudHlwZSBBdHRhY2htZW50c09yT3B0aW9ucyA9IEF0dGFjaG1lbnRGaWxlW10gfCBTZW5kTWVzc2FnZU9wdGlvbnNcblxuY29uc3Qgbm9ybWFsaXplU2VuZE1lc3NhZ2VBcmdzID0gKGF0dGFjaG1lbnRzT3JPcHRpb25zPzogQXR0YWNobWVudHNPck9wdGlvbnMpID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXR0YWNobWVudHNPck9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHsgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzT3JPcHRpb25zLCBvcHRpb25zOiB7fSBhcyBTZW5kTWVzc2FnZU9wdGlvbnMgfVxuICB9XG5cbiAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gYXR0YWNobWVudHNPck9wdGlvbnMgPz8ge31cbiAgcmV0dXJuIHsgYXR0YWNobWVudHM6IG9wdGlvbnMuYXR0YWNobWVudHMgPz8gW10sIG9wdGlvbnMgfVxufVxuXG4vKiogY2hpcHNQcm9qZWN0IGVzIGxhIGZ1ZW50ZSBkZSB2ZXJkYWQgZGVsIHBpbiB2aXNpYmxlOyBzaSBubyBoYXkgcGluLCByZXN0YXVyYXIgZGVzZGUgaGlzdG9yaWFsLiAqL1xuY29uc3QgcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QgPSAoXG4gIGNoaXBzUHJvamVjdDogeyBwcm9qZWN0SWQ/OiBzdHJpbmcgfSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGxhc3RNZXNzYWdlUHJvamVjdElkOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBudW1iZXIgfCBudWxsID0+IHtcbiAgY29uc3QgY2hpcHNQcm9qZWN0SWQgPSBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/IE51bWJlcihjaGlwc1Byb2plY3QucHJvamVjdElkKSA6IG51bGxcbiAgaWYgKGNoaXBzUHJvamVjdElkICE9IG51bGwgJiYgTnVtYmVyLmlzRmluaXRlKGNoaXBzUHJvamVjdElkKSkge1xuICAgIHJldHVybiBjaGlwc1Byb2plY3RJZFxuICB9XG4gIGlmIChsYXN0TWVzc2FnZVByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUocGFyc2VkKSA/IHBhcnNlZCA6IG51bGxcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5jb25zdCByZXNvbHZlQ2xpZW50UGF5bG9hZCA9IChcbiAgY3R4Q2xpZW50OiB7IGlkPzogbnVtYmVyOyBuYW1lPzogc3RyaW5nIH0gfCBudWxsIHwgdW5kZWZpbmVkLFxuICBjdHhQcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogeyBjbGllbnRJZD86IG51bWJlcjsgY2xpZW50TmFtZT86IHN0cmluZyB9ID0+IHtcbiAgaWYgKGN0eENsaWVudD8uaWQpIHtcbiAgICByZXR1cm4geyBjbGllbnRJZDogY3R4Q2xpZW50LmlkLCAuLi4oY3R4Q2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGN0eENsaWVudC5uYW1lIH0gOiB7fSkgfVxuICB9XG4gIGlmIChjdHhQcm9qZWN0Py5jbGllbnRJZCAhPSBudWxsKSB7XG4gICAgcmV0dXJuIHsgY2xpZW50SWQ6IE51bWJlcihjdHhQcm9qZWN0LmNsaWVudElkKSB9XG4gIH1cbiAgaWYgKGN0eFByb2plY3Q/LmNsaWVudD8uaWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2xpZW50SWQ6IGN0eFByb2plY3QuY2xpZW50LmlkLFxuICAgICAgLi4uKGN0eFByb2plY3QuY2xpZW50Lm5hbWUgPyB7IGNsaWVudE5hbWU6IGN0eFByb2plY3QuY2xpZW50Lm5hbWUgfSA6IHt9KSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHt9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2lzdGFudEF0dGFjaG1lbnRzID0gKHJhd0F0dGFjaG1lbnRzOiB1bmtub3duKTogQXR0YWNobWVudEZpbGVbXSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXdBdHRhY2htZW50cykpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIHJldHVybiByYXdBdHRhY2htZW50c1xuICAgIC5maWx0ZXIoKGF0dGFjaG1lbnQpOiBhdHRhY2htZW50IGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+ICEhYXR0YWNobWVudCAmJiB0eXBlb2YgYXR0YWNobWVudCA9PT0gJ29iamVjdCcpXG4gICAgLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICB0eXBlb2YgYXR0YWNobWVudC5uYW1lID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50Lm5hbWUudHJpbSgpID8gYXR0YWNobWVudC5uYW1lLnRyaW0oKSA6IGBmaWxlLSR7aW5kZXggKyAxfWBcbiAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgYXR0YWNobWVudC50eXBlID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LnR5cGUudHJpbSgpID8gYXR0YWNobWVudC50eXBlLnRyaW0oKSA6ICdwZGYnXG4gICAgICBjb25zdCBtaW1lVHlwZSA9IHR5cGVvZiBhdHRhY2htZW50Lm1pbWVfdHlwZSA9PT0gJ3N0cmluZycgPyBhdHRhY2htZW50Lm1pbWVfdHlwZSA6ICcnXG4gICAgICBjb25zdCBmdWxsRmlsZU5hbWUgPSBuYW1lLmluY2x1ZGVzKCcuJykgPyBuYW1lIDogYCR7bmFtZX0uJHt0eXBlfWBcbiAgICAgIGNvbnN0IG51bWVyaWNTaXplID1cbiAgICAgICAgdHlwZW9mIGF0dGFjaG1lbnQuc2l6ZSA9PT0gJ251bWJlcidcbiAgICAgICAgICA/IGF0dGFjaG1lbnQuc2l6ZVxuICAgICAgICAgIDogTnVtYmVyLmlzRmluaXRlKE51bWJlcihhdHRhY2htZW50LnNpemUpKVxuICAgICAgICAgICAgPyBOdW1iZXIoYXR0YWNobWVudC5zaXplKVxuICAgICAgICAgICAgOiAwXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGU6IG5ldyBGaWxlKFtdLCBmdWxsRmlsZU5hbWUsIHsgdHlwZTogbWltZVR5cGUgfSksXG4gICAgICAgIGlkOlxuICAgICAgICAgIHR5cGVvZiBhdHRhY2htZW50LmlkID09PSAnc3RyaW5nJyAmJiBhdHRhY2htZW50LmlkLnRyaW0oKVxuICAgICAgICAgICAgPyBhdHRhY2htZW50LmlkXG4gICAgICAgICAgICA6IGBhc3Npc3RhbnQtZmlsZS0ke2luZGV4fS0ke2Z1bGxGaWxlTmFtZX1gLFxuICAgICAgICBuYW1lLFxuICAgICAgICBzaXplOiBudW1lcmljU2l6ZSxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXJsX29yaWdpbmFsOiB0eXBlb2YgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfb3JpZ2luYWwgOiB1bmRlZmluZWQsXG4gICAgICAgIHVybF90aHVtYm5haWw6IHR5cGVvZiBhdHRhY2htZW50LnVybF90aHVtYm5haWwgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfdGh1bWJuYWlsIDogdW5kZWZpbmVkLFxuICAgICAgICB1cmxfZmlsZTogdHlwZW9mIGF0dGFjaG1lbnQudXJsX2ZpbGUgPT09ICdzdHJpbmcnID8gYXR0YWNobWVudC51cmxfZmlsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcm9sZTogYXR0YWNobWVudC5yb2xlID09PSAnYXNzaXN0YW50JyA/ICdhc3Npc3RhbnQnIDogJ3VzZXInLFxuICAgICAgfVxuICAgIH0pXG59XG5cbi8qKiBFeHRyYWUgdGFza19pZHMgZGUgbG9zIHRvb2xfYXJncyBkZSBwZW5kaW5nX2FjdGlvbnMsIGN1YnJpZW5kbyBsYXMgZm9ybWFzIGNvbXVuZXM6XG4gKiAgLSBgeyB0YXNrX2lkIH1gIG8gYHsgaWQgfWBcbiAqICAtIGB7IHRhc2tfaWRzOiBbXSB9YFxuICogIC0gYHsgdGFza3M6IFt7IHRhc2tfaWR8aWQgfSwgLi4uXSB9YFxuICogIMOadGlsIHBhcmEgdG9vbHMgZGUgZWRpdC9hc3NpZ24vZGVsZXRlIGN1YW5kbyBsYSByZXNwdWVzdGEgZGVsIExMTSBubyBpbmNsdXllIFVSTHMgL3Rhc2tzLy4uLi9kZXRhaWwuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21QZW5kaW5nQWN0aW9uc0FyZ3MocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSk6IG51bWJlcltdIHtcbiAgY29uc3QgaWRzOiBudW1iZXJbXSA9IFtdXG4gIGNvbnN0IHB1c2hJZCA9IChyYXc6IHVua25vd24pID0+IHtcbiAgICBpZiAocmF3ID09IG51bGwpIHJldHVyblxuICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gIH1cbiAgcGVuZGluZ0FjdGlvbnMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGlmICghYWN0aW9uIHx8IHR5cGVvZiBhY3Rpb24gIT09ICdvYmplY3QnKSByZXR1cm5cbiAgICBjb25zdCBhcmdzID0gYWN0aW9uLnRvb2xfYXJnc1xuICAgIGlmICghKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGFyZ3MpKSkgcmV0dXJuXG4gICAgY29uc3QgcmVjID0gYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIHB1c2hJZChyZWMudGFza19pZCA/PyByZWMuaWQpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVjLnRhc2tfaWRzKSkge1xuICAgICAgcmVjLnRhc2tfaWRzLmZvckVhY2gocHVzaElkKVxuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWMudGFza3MpKSB7XG4gICAgICByZWMudGFza3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgICAgaWYgKHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgY29uc3QgdHJlYyA9IHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgICAgICBwdXNoSWQodHJlYy50YXNrX2lkID8/IHRyZWMuaWQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbi8qKiB0YXNrX2lkIC8gdGFza19pZHMgZW4gcGVuZGluZ19hY3Rpb25zIGRlIGRlbGV0ZV8qIChsYSByZXNwdWVzdGEgcHVlZGUgbm8gaW5jbHVpciBVUkxzIC90YXNrcy/igKYvZGV0YWlsKS4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RUYXNrSWRzRnJvbURlbGV0ZVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBudW1iZXJbXSB7XG4gIGNvbnN0IGlkczogbnVtYmVyW10gPSBbXVxuICBwZW5kaW5nQWN0aW9ucy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgaWYgKCFhY3Rpb24gfHwgdHlwZW9mIGFjdGlvbiAhPT0gJ29iamVjdCcpIHJldHVyblxuICAgIGNvbnN0IGFyZ3MgPSBhY3Rpb24udG9vbF9hcmdzXG4gICAgaWYgKCEoYXJncyAmJiB0eXBlb2YgYXJncyA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpKSByZXR1cm5cbiAgICBjb25zdCByZWMgPSBhcmdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKGFjdGlvbi50b29sX25hbWUgPT09ICdkZWxldGVfdGFzaycpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHJlYy50YXNrX2lkID8/IHJlYy5pZFxuICAgICAgaWYgKHJhdyAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcocmF3KSwgMTApXG4gICAgICAgIGlmICghTnVtYmVyLmlzTmFOKG4pKSBpZHMucHVzaChuKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWN0aW9uLnRvb2xfbmFtZSA9PT0gJ2RlbGV0ZV90YXNrc19iYXRjaCcpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSByZWMudGFza19pZHNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCh0aWQgPT4ge1xuICAgICAgICAgIGNvbnN0IG4gPSBwYXJzZUludChTdHJpbmcodGlkKSwgMTApXG4gICAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obikpIGlkcy5wdXNoKG4pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuICByZXR1cm4gaWRzXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RBZ2VudElkRnJvbUVkaXRBZ2VudFBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZWRpdEFjdGlvbiA9IHBlbmRpbmdBY3Rpb25zLmZpbmQoYSA9PiAoYS50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdlZGl0X2FnZW50JylcbiAgaWYgKFxuICAgICFlZGl0QWN0aW9uIHx8XG4gICAgIWVkaXRBY3Rpb24udG9vbF9hcmdzIHx8XG4gICAgdHlwZW9mIGVkaXRBY3Rpb24udG9vbF9hcmdzICE9PSAnb2JqZWN0JyB8fFxuICAgIEFycmF5LmlzQXJyYXkoZWRpdEFjdGlvbi50b29sX2FyZ3MpXG4gICkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gZWRpdEFjdGlvbi50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgY29uc3QgcmF3ID0gcmVjLmFnZW50X2lkID8/IHJlYy5hZ2VudElkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG5mdW5jdGlvbiBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnM6IFBlbmRpbmdBY3Rpb25bXSwgdG9vbE5hbWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBhY3Rpb24gPSBwZW5kaW5nQWN0aW9ucy5maW5kKGEgPT4gKGEudG9vbF9uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSB0b29sTmFtZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoIWFjdGlvbiB8fCAhYWN0aW9uLnRvb2xfYXJncyB8fCB0eXBlb2YgYWN0aW9uLnRvb2xfYXJncyAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShhY3Rpb24udG9vbF9hcmdzKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgcmVjID0gYWN0aW9uLnRvb2xfYXJncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBjb25zdCByYXcgPSByZWMuYWdlbnRfaWQgPz8gcmVjLmFnZW50SWQgPz8gcmVjLmlkXG4gIHJldHVybiByYXcgIT0gbnVsbCA/IFN0cmluZyhyYXcpIDogbnVsbFxufVxuXG4vKiogw5psdGltbyByZWN1cnNvIHNpIG5vIGhheSBsaW5rcyBuaSB0b29sX2FyZ3MgcGFyc2VhYmxlcyAocC4gZWouIFwiSUQgKio3NTk3MTA2KipcIikuICovXG5mdW5jdGlvbiBleHRyYWN0VGFza0lkc0Zyb21Bc3Npc3RhbnREZWxldGlvblRleHQodGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICBjb25zdCBsYWJlbGVkID0gdGV4dC5tYXRjaCgvXFxiSURcXHMqXFwqXFwqKFxcZCspXFwqXFwqL2kpXG4gIGlmIChsYWJlbGVkKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGxhYmVsZWRbMV0sIDEwKVxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4obikgPyBbXSA6IFtuXVxuICB9XG4gIGNvbnN0IGJvbGQgPSB0ZXh0Lm1hdGNoKC9cXCpcXCooXFxkezUsfSlcXCpcXCovKVxuICBpZiAoYm9sZCkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChib2xkWzFdLCAxMClcbiAgICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gW10gOiBbbl1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuY29uc3QgdXNlU3RhYmxlQ2FsbGJhY2tzID0gKGF1dGhVc2VyOiBDT1JVc2VyKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlUmVmPENoYXRNZXNzYWdlVXNlcj4oe1xuICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gIH0pXG5cbiAgaWYgKFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuaWQgIT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50Lm5hbWUgIT09IGF1dGhVc2VyLmZpcnN0TmFtZSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQuYXZhdGFyICE9PSBhdXRoVXNlci5waWN0dXJlXG4gICkge1xuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQgPSB7XG4gICAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgIG5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50VXNlcjogY3VycmVudFVzZXIuY3VycmVudCxcbiAgfVxufVxuXG5jb25zdCBwYXJzZVNTRUxpbmUgPSAobGluZTogc3RyaW5nKTogeyBldmVudFR5cGU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9IHwgbnVsbCA9PiB7XG4gIGlmICghbGluZS50cmltKCkpIHJldHVybiBudWxsXG5cbiAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcbiAgICByZXR1cm4geyBldmVudFR5cGUsIGRhdGEgfVxuICB9IGNhdGNoIChwYXJzZUVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgcGFyc2luZyBTU0UgZGF0YTonLCBwYXJzZUVycm9yLCBkYXRhU3RyKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgcHJvY2Vzc1NTRVN0cmVhbSA9IGFzeW5jIChcbiAgcmVzcG9uc2U6IFJlc3BvbnNlLFxuICB0aHJlYWRJZDogc3RyaW5nLFxuICBjYWxsYmFja3M6IHtcbiAgICBvblRoaW5raW5nOiAoKSA9PiB2b2lkXG4gICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQ29tcGxldGU6IChcbiAgICAgIGZpbmFsQ29udGVudDogc3RyaW5nLFxuICAgICAgc291cmNlczogYW55LFxuICAgICAgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsXG4gICAgICBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogYW55W10gfCBudWxsLFxuICAgICAgc3VnZ2VzdGlvbnM/OiBzdHJpbmdbXSB8IG51bGwsXG4gICAgICBhZ2VudElkPzogc3RyaW5nIHwgbnVsbFxuICAgICkgPT4gdm9pZFxuICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCB0aHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkPzogKGFwcHJvdmFsOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICB9XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IHN0cmVhbVNldHRsZWQgPSBmYWxzZVxuXG4gIGNvbnN0IG5vdGlmeUNvbXBsZXRlID0gKGV2ZW50RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGZpbmFsQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKHN0cmVhbVNldHRsZWQpIHJldHVyblxuICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgY29uc3Qgc291cmNlcyA9IGV2ZW50RGF0YS5zb3VyY2VzIHx8IG51bGxcbiAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLmF0dGFjaG1lbnRzKSA/IGV2ZW50RGF0YS5hdHRhY2htZW50cyA6IG51bGxcbiAgICBjb25zdCBzdWdnZXN0aW9ucyA9IEFycmF5LmlzQXJyYXkoZXZlbnREYXRhLnN1Z2dlc3RfcmVwbHkpXG4gICAgICA/IChldmVudERhdGEuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXSlcbiAgICAgIDogQXJyYXkuaXNBcnJheShldmVudERhdGEuc3VnZ2VzdGlvbnMpXG4gICAgICAgID8gKGV2ZW50RGF0YS5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXSlcbiAgICAgICAgOiBudWxsXG4gICAgY29uc3QgYWdlbnRJZFJhdyA9IGV2ZW50RGF0YS5hZ2VudF9pZCA/PyBldmVudERhdGEuYWdlbnRJZFxuICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPSBhZ2VudElkUmF3ICE9IG51bGwgJiYgU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSAhPT0gJycgPyBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpIDogbnVsbFxuICAgIGNhbGxiYWNrcy5vbkNvbXBsZXRlKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCB0aHJlYWRJZCwgYXR0YWNobWVudHMsIHN1Z2dlc3Rpb25zLCBjb21wbGV0ZWRBZ2VudElkKVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTGluZShsaW5lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVNTRUxpbmUobGluZSlcbiAgICBpZiAoIXBhcnNlZCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IGV2ZW50VHlwZSwgZGF0YSB9ID0gcGFyc2VkXG4gICAgY29uc3QgZXZlbnREYXRhID0gZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuXG4gICAgaWYgKHN0cmVhbVNldHRsZWQgJiYgZXZlbnRUeXBlICE9PSAnZXJyb3InKSByZXR1cm5cblxuICAgIGlmIChldmVudFR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgIGNhbGxiYWNrcy5vblRoaW5raW5nKClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ3Rva2VuJykge1xuICAgICAgY29uc3QgY29udGVudCA9IHR5cGVvZiBldmVudERhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBldmVudERhdGEuY29udGVudCA6ICcnXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY29udGVudClcbiAgICAgIGNhbGxiYWNrcy5vblRva2VuKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gdHlwZW9mIGV2ZW50RGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50RGF0YS5jb250ZW50IDogJydcbiAgICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjb250ZW50KVxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChldmVudERhdGEpKSB7XG4gICAgICAgIG5vdGlmeUNvbXBsZXRlKGV2ZW50RGF0YSwgY29udGVudCB8fCBhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdub2RlJykge1xuICAgICAgaWYgKGV2ZW50RGF0YS5tZXNzYWdlICYmIHR5cGVvZiBldmVudERhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShldmVudERhdGEubWVzc2FnZSwgdGhyZWFkSWQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChldmVudERhdGEuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgbm90aWZ5Q29tcGxldGUoZXZlbnREYXRhLCBmaW5hbENvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdhcHByb3ZhbF9yZXF1aXJlZCcpIHtcbiAgICAgIC8vIE1hbnVhbCBhcHByb3ZhbDogZWwgc3RyZWFtIHNpZ3VlIChub2RlL3Rva2VuL2NvbXBsZXRlIHkgbcOhcyBISVRMKS5cbiAgICAgIC8vIFNvbG8gZWwgYXBwcm92YWwgcGF1c2FkbyAoYm90w7NuKSBjaWVycmEgZWwgcHJvY2VzYW1pZW50byBkZSBldmVudG9zLlxuICAgICAgY29uc3QgaXNNYW51YWxBcHByb3ZhbCA9IGV2ZW50RGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICBzdHJlYW1TZXR0bGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgY2FsbGJhY2tzLm9uQXBwcm92YWxSZXF1aXJlZD8uKGV2ZW50RGF0YSwgYWNjdW11bGF0ZWRDb250ZW50LCB0aHJlYWRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgc3RyZWFtU2V0dGxlZCA9IHRydWVcbiAgICAgIGNhbGxiYWNrcy5vbkVycm9yKGV2ZW50RGF0YS5lcnJvciwgdGhyZWFkSWQpXG4gICAgfVxuICB9XG5cbiAgbGV0IGlzUmVhZGVyRG9uZSA9IGZhbHNlXG5cbiAgd2hpbGUgKCFpc1JlYWRlckRvbmUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICBpZiAoZG9uZSkge1xuICAgICAgaXNSZWFkZXJEb25lID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGhhbmRsZUxpbmUobGluZXNbaV0pXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWFuYWdlciA9ICh7XG4gIGNoYXRJZDogaW5pdGlhbENoYXRJZCxcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBvbkVycm9yLFxuICBhZ2VudHMgPSBbXSxcbn06IFVzZUNoYXRNYW5hZ2VyUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgYXV0aFVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3Qge1xuICAgIHByb2plY3QsXG4gICAgc2V0UHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgc2V0Q2xpZW50LFxuICAgIHRhc2ssXG4gICAgc2V0VGFzayxcbiAgICBhZ2VudCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuXG4gIC8vIERFQlVHOiByYXN0cmVhciBjdcOhbmRvIGNhbWJpYSBlbCBjb250ZXh0byBnbG9iYWwgcGFyYSBjb3JyZWxhY2lvbmFyIGNvbiBsb3MgZW52w61vcyBhbCBvcmNoZXN0cmF0b3JcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWFuYWdlcl0gY29udGV4dCBDSEFOR0VEOicsIHtcbiAgICAgIGNoaXBzUHJvamVjdElkOiBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgY2hpcHNQcm9qZWN0TmFtZTogY2hpcHNQcm9qZWN0Py5wcm9qZWN0TmFtZSA/PyBudWxsLFxuICAgICAgcHJvamVjdFByb3BJZDogcHJvamVjdD8uaWQgPz8gbnVsbCxcbiAgICAgIGNsaWVudElkOiBjbGllbnQ/LmlkID8/IG51bGwsXG4gICAgICB0YXNrSWQ6IHRhc2s/LmlkID8/IG51bGwsXG4gICAgfSlcbiAgfSwgW2NoaXBzUHJvamVjdD8ucHJvamVjdElkLCBwcm9qZWN0Py5pZCwgY2xpZW50Py5pZCwgdGFzaz8uaWRdKVxuICBjb25zdCBjdXJyZW50TWVzc2FnZUlkID0gdXNlUmVmKHV1aWR2NCgpKVxuICBjb25zdCBjdXJyZW50VXNlclF1ZXN0aW9uID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSB1c2VSZWYoaW5pdGlhbENoYXRJZCB8fCB1dWlkdjQoKSlcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIC8qKlxuICAgKiBHdWFyZGEgaW5mbyBkZWwgw7psdGltbyBhcHByb3ZhbCBtYW51YWwgKGN1YW5kbyBlbCB1c3VhcmlvIHRpcGVhIFwic2lcIi9cIm5vXCIgZW4gbHVnYXJcbiAgICogZGUgY2xpY2tlYXIgZWwgYm90w7NuKS4gRW4gbWFudWFsIGFwcHJvdmFsLCBgaGFuZGxlQXBwcm92YWxSZXF1aXJlZGAgcmV0b3JuYSBlYXJseVxuICAgKiBzaW4gYWdyZWdhciB1biBtZW5zYWplIGNvbiBgYXBwcm92YWxgLCBhc8OtIHF1ZSBsYSBsw7NnaWNhIGRlIHJlZmV0Y2ggZW4gYG9uU3RyZWFtRmluaXNoYFxuICAgKiBubyBsbyBkZXRlY3RhIHbDrWEgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbGAuIExvIGd1YXJkYW1vcyBhY8OhIHBhcmEgY29uc3VtaXJsbyBkZXNwdcOpcy5cbiAgICovXG4gIGNvbnN0IGxhc3RNYW51YWxBcHByb3ZhbFJlZiA9IHVzZVJlZjx7XG4gICAgdG9vbE5hbWU6IHN0cmluZ1xuICAgIHRvb2xBcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IG51bGxcbiAgfSB8IG51bGw+KG51bGwpXG4gIC8qKiBDb250ZXh0byBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBwcmV2aW8gYWwgZWplY3V0YXIgY29udGludWUtdGhyZWFkLiAqL1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiA9IHVzZVJlZjxIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICAvKiogSWQgZGVsIHBsYWNlaG9sZGVyIGRlbCBtZW5zYWplIGVuIHN0cmVhbWluZyBhY3Rpdm8gKHNpIGhheSkuICovXG4gIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqXG4gICAqIENoYXQgYWwgcXVlIHBlcnRlbmVjZSBlbCBzdHJlYW0gYWN0dWFsbWVudGUgYWN0aXZvLiBTaSBjYW1iaWEgZWwgY2hhdFxuICAgKiBtaWVudHJhcyB1biBzdHJlYW0gZXN0w6EgZW4gdnVlbG8sIGRlc2NhcnRhbW9zIGxvcyB0b2tlbnMgcmVzaWR1YWxlc1xuICAgKiBxdWUgcHVlZGFuIGxsZWdhciBhbnRlcyBkZSBxdWUgZWwgYWJvcnQgc2UgY29tcGxldGUuXG4gICAqL1xuICBjb25zdCBhY3RpdmVTdHJlYW1DaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgLyoqIFNldHRlciBpbmRpcmVjdG8gcGFyYSBhYm9ydGFyIGVsIHN0cmVhbSBhbnRlcyBkZSBxdWUgZWwgaG9vayBkZVxuICAgKiBvcnF1ZXN0YWRvciBlc3TDqSBpbmljaWFsaXphZG8gKHNlIGxpbmtlYSBtw6FzIGFiYWpvKS4gKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseVJlZiA9IHVzZVJlZjwoKSA9PiB2b2lkPigoKSA9PiB1bmRlZmluZWQpXG4gIGNvbnN0IGNsZWFyU3RyZWFtVWlSZWYgPSB1c2VSZWY8KCkgPT4gdm9pZD4oKCkgPT4gdW5kZWZpbmVkKVxuICBjb25zdCBbYWN0aXZlTG9hZGluZ3MsIHNldEFjdGl2ZUxvYWRpbmdzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KVxuICBjb25zdCBbaXNDb250aW51aW5nU3RyZWFtLCBzZXRJc0NvbnRpbnVpbmdTdHJlYW1dID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgaXNXZWJTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc0RlZXBTZWFyY2hBY3RpdmUpXG4gIC8qKiBFdml0YSBjbG9zdXJlcyBvYnNvbGV0YXMgY3VhbmRvIGVsIGZvb3RlciBjb25zZXJ2YSBzZW5kTWVzc2FnZSBlbnRyZSByZW5kZXJzLiAqL1xuICBjb25zdCBjb250ZXh0UmVmID0gdXNlUmVmKHsgY2hpcHNQcm9qZWN0LCBwcm9qZWN0LCBjbGllbnQsIHRhc2sgfSlcbiAgY29udGV4dFJlZi5jdXJyZW50ID0geyBjaGlwc1Byb2plY3QsIHByb2plY3QsIGNsaWVudCwgdGFzayB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgY29uc3QgeyBsb2FkaW5nTWVzc2FnZXMsIG1lc3NhZ2VzLCBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsIGxvYWRNZXNzYWdlcywgYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgaGFuZGxlU2Nyb2xsIH0gPVxuICAgIHVzZUNoYXRNZXNzYWdlcyh7XG4gICAgICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQgfHwgY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgY3VycmVudFVzZXIsXG4gICAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgICBvbkVycm9yLFxuICAgICAgYWdlbnRzLFxuICAgIH0pXG5cbiAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgnY2hhdC1sb2FkaW5nLW1lc3NhZ2VzLWNoYW5nZWQnLCB7XG4gICAgICBkZXRhaWw6IHsgbG9hZGluZ01lc3NhZ2VzIH0sXG4gICAgfSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICB9LCBbbG9hZGluZ01lc3NhZ2VzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbml0aWFsQ2hhdElkICYmIGluaXRpYWxDaGF0SWQgIT09IGN1cnJlbnRDaGF0SWQuY3VycmVudCkge1xuICAgICAgLy8gU2kgaGF5IHVuIHN0cmVhbSBlbiBjdXJzbywgYWJvcnRhcmxvIHNpbGVuY2lvc2FtZW50ZSBwYXJhIHF1ZSBsb3NcbiAgICAgIC8vIHRva2VucyByZXNpZHVhbGVzIG5vIHNlIGVzY3JpYmFuIGVuIGVsIGNoYXQgbnVldm8uXG4gICAgICBhYm9ydFN0cmVhbVNpbGVudGx5UmVmLmN1cnJlbnQoKVxuXG4gICAgICAvLyBMaW1waWFyIGNvbnRleHRvIGdsb2JhbCBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgIHNldFRhc2sobnVsbClcblxuICAgICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gaW5pdGlhbENoYXRJZFxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcblxuICAgICAgbG9hZE1lc3NhZ2VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsQ2hhdElkLCBwcm9qZWN0LCBzZXRQcm9qZWN0LCBzZXRDbGllbnQsIHNldENoaXBzUHJvamVjdCwgc2V0VGFzaywgbG9hZE1lc3NhZ2VzXSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIGVycm9yUmF3TWVzc2FnZT86IHN0cmluZykgPT4ge1xuICAgICAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50KClcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdTdG9yZS5jbGVhcigpXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgICAgY29uc3QgaXNBY2Nlc3NEZW5pZWQgPSBlcnJvck1lc3NhZ2UgPT09IFwiQWNjZXNzIGRlbmllZDogWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBhZ2VudFwiXG4gICAgICBjb25zdCBpc1Byb21wdFRvb0xvbmcgPVxuICAgICAgICBlcnJvck1lc3NhZ2UgPT09ICdpbnZhbGlkX3JlcXVlc3RfZXJyb3InICYmIGVycm9yUmF3TWVzc2FnZT8uaW5jbHVkZXMoJ3Byb21wdCBpcyB0b28gbG9uZycpXG4gICAgICBjb25zdCBtZXNzYWdlID0gaXNBY2Nlc3NEZW5pZWRcbiAgICAgICAgPyB0KCdjaGF0LmVycm9yQWNjZXNzRGVuaWVkJylcbiAgICAgICAgOiBpc1Byb21wdFRvb0xvbmdcbiAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JQcm9tcHRUb29Mb25nJywgeyB1c2VkOiBlcnJvclJhd01lc3NhZ2U/Lm1hdGNoKC8oXFxkKykgdG9rZW5zLyk/LlsxXSA/PyAnJyB9KVxuICAgICAgICAgIDogdCgnY2hhdC5lcnJvcicpXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICAvLyBDaGlwIFwiUmVpbnRlbnRhclwiIHNvbG8gZW4gZWwgZXJyb3IgZ2Vuw6lyaWNvIChwLiBlai4gNTAwKTsgbm8gYXBsaWNhIGEgYWNjZXNzIGRlbmllZCBuaSBwcm9tcHQgdG9vIGxvbmcuXG4gICAgICAgIC4uLighaXNBY2Nlc3NEZW5pZWQgJiYgIWlzUHJvbXB0VG9vTG9uZyA/IHsgc3VnZ2VzdGlvbnM6IFt0KCdjaGF0LnJldHJ5JyldIH0gOiB7fSksXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCB0XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU3RyZWFtVXBkYXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbnRlbnQ6IHN0cmluZywgc291cmNlczogYW55LCBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZykgPT4ge1xuICAgICAgLy8gU2kgZWwgY2hhdCBjYW1iacOzIG1pZW50cmFzIGVsIHN0cmVhbSBlc3RhYmEgZW4gdnVlbG8sIGRlc2NhcnRhciBlbFxuICAgICAgLy8gdG9rZW4gcmVzaWR1YWw6IG5vIGRlYmUgcGludGFyc2UgZW4gZWwgbnVldm8gY2hhdC5cbiAgICAgIGlmIChhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCAhPSBudWxsICYmIGFjdGl2ZVN0cmVhbUNoYXRJZFJlZi5jdXJyZW50ICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG5cbiAgICAgIC8vIFByaW1lcmEgbGxhbWFkYSBkZSBlc3RlIHN0cmVhbTogaW5zZXJ0YW1vcyBlbCBwbGFjZWhvbGRlciBlbiBlbFxuICAgICAgLy8gYXJyYXkgZGUgYG1lc3NhZ2VzYCB1bmEgw7puaWNhIHZlei4gTGFzIGxsYW1hZGFzIHN1YnNpZ3VpZW50ZXMgeWEgbm9cbiAgICAgIC8vIHRvY2FuIGBtZXNzYWdlc2A7IGVsIHRleHRvIHZpdmUgZW4gZWwgc3RyZWFtaW5nU3RvcmUgKGV4dGVybm8pLCBwb3JcbiAgICAgIC8vIGxvIHF1ZSBSZWFjdCBubyByZS1yZW5kZXJpemEgZWwgw6FyYm9sIGNvbXBsZXRvIGVuIGNhZGEgdG9rZW4uXG4gICAgICBpZiAoc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ICE9PSB0ZW1wTWVzc2FnZUlkKSB7XG4gICAgICAgIHN0cmVhbWluZ1BsYWNlaG9sZGVySWRSZWYuY3VycmVudCA9IHRlbXBNZXNzYWdlSWRcbiAgICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBjdXJyZW50Q2hhdElkLmN1cnJlbnRcbiAgICAgICAgc3RyZWFtaW5nU3RvcmUuc3RhcnQodGVtcE1lc3NhZ2VJZClcbiAgICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgICAgaWQ6IHRlbXBNZXNzYWdlSWQsXG4gICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICAgIHNvdXJjZXMsXG4gICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBzdHJlYW1pbmdTdG9yZS5zZXRUZXh0KHRlbXBNZXNzYWdlSWQsIGNvbnRlbnQpXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUZpbmlzaCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChcbiAgICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgcmF3QXR0YWNobWVudHM/OiBhbnlbXSB8IG51bGwsXG4gICAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbCxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQ/OiBzdHJpbmcgfCBudWxsXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBub3JtYWxpemVBc3Npc3RhbnRBdHRhY2htZW50cyhyYXdBdHRhY2htZW50cylcblxuICAgICAgLy8gRGV0ZWN0YXIgdG9kYXMgbGFzIFVSTHMgZGUgdGFyZWFzICguLi4vdGFza3MvMTIzL2RldGFpbHxtZXNzYWdlfG1lc3NhZ2VzfGZpbGVzfGhpc3Rvcnl8aG91cnMpXG4gICAgICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgICAgIGNvbnN0IG1hdGNoZXMgPSBbLi4uY29udGVudC5tYXRjaEFsbCh0YXNrVXJsUmVnZXgpXVxuXG4gICAgICBsZXQgY29udGVudFRvQWRkID0gY29udGVudFxuICAgICAgY29uc3QgcHJldmlvdXNNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobSA9PiBtLmlkICE9PSB0ZW1wTWVzc2FnZUlkKS5hdCgtMSlcbiAgICAgIGNvbnN0IGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsICE9IG51bGxcbiAgICAgIGNvbnN0IFRBU0tfQ1JFQVRJT05fVE9PTFMgPSBbJ2NyZWF0ZV90YXNrJywgJ2NyZWF0ZV90YXNrc19iYXRjaCcsICdjbG9uZV90YXNrJ11cbiAgICAgIGNvbnN0IFRBU0tfRURJVF9UT09MUyA9IFtcbiAgICAgICAgJ2VkaXRfdGFzaycsXG4gICAgICAgICdlZGl0X3Rhc2tzX2JhdGNoJyxcbiAgICAgICAgJ3Rhc2tfYXNzaWduJyxcbiAgICAgICAgJ3Rhc2tfdW5hc3NpZ24nLFxuICAgICAgICAndXBkYXRlX3Rhc2tfdHlwZScsXG4gICAgICAgICd1cGRhdGVfZXN0aW1hdGVkX2hvdXJzJyxcbiAgICAgICAgJ2Fzc2lnbl90YXNrX2xhYmVsJyxcbiAgICAgIF1cbiAgICAgIGNvbnN0IFRBU0tfREVMRVRFX1RPT0xTID0gWydkZWxldGVfdGFzaycsICdkZWxldGVfdGFza3NfYmF0Y2gnXVxuICAgICAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsPy5wZW5kaW5nX2FjdGlvbnMgfHwgW11cbiAgICAgIGNvbnN0IHdhc1Rhc2tDcmVhdGlvbiA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfQ1JFQVRJT05fVE9PTFMuaW5jbHVkZXMoYWN0aW9uLnRvb2xfbmFtZSkpXG4gICAgICBjb25zdCB3YXNUYXNrRWRpdCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiYgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IFRBU0tfRURJVF9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc1Rhc2tEZWxldGUgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiBUQVNLX0RFTEVURV9UT09MUy5pbmNsdWRlcyhhY3Rpb24udG9vbF9uYW1lKSlcbiAgICAgIGNvbnN0IHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgIHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWxTdGF0dXMgPT09ICdhcHByb3ZlZCcgJiZcbiAgICAgICAgcGVuZGluZ0FjdGlvbnMuc29tZSgoYWN0aW9uOiBhbnkpID0+IGFjdGlvbi50b29sX25hbWUgPT09ICdjcmVhdGVfYWdlbnQnKVxuICAgICAgY29uc3Qgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCA9XG4gICAgICAgIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UgJiZcbiAgICAgICAgcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbFN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJlxuICAgICAgICBwZW5kaW5nQWN0aW9ucy5zb21lKChhY3Rpb246IGFueSkgPT4gKGFjdGlvbi50b29sX25hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgIGxldCBjcmVhdGVBZ2VudEZvbGxvd1VwOiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgdW5kZWZpbmVkXG4gICAgICBpZiAod2FzQ3JlYXRlQWdlbnRBcHByb3ZlZCAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJiBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkpIHtcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHsgYWdlbnRJZDogY29tcGxldGVkQWdlbnRJZC50cmltKCkgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgd2FzQ29uZmlndXJlQWdlbnRBY2Nlc3NBcHByb3ZlZCAmJlxuICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyAmJlxuICAgICAgICAoY29tcGxldGVkQWdlbnRJZD8udHJpbSgpIHx8XG4gICAgICAgICAgZXh0cmFjdEFnZW50SWRGcm9tUGVuZGluZ0FjdGlvbnNCeVRvb2xOYW1lKHBlbmRpbmdBY3Rpb25zLCAnY29uZmlndXJlX2FnZW50X2FjY2VzcycpKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ3VyZWRBZ2VudElkID1cbiAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgfHxcbiAgICAgICAgICBleHRyYWN0QWdlbnRJZEZyb21QZW5kaW5nQWN0aW9uc0J5VG9vbE5hbWUocGVuZGluZ0FjdGlvbnMsICdjb25maWd1cmVfYWdlbnRfYWNjZXNzJylcbiAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcCA9IHtcbiAgICAgICAgICBhZ2VudElkOiBjb25maWd1cmVkQWdlbnRJZCBhcyBzdHJpbmcsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHdhc0NyZWF0ZUFnZW50QXBwcm92ZWQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdEhpdGxPcHRpb24sIHtcbiAgICAgICAgICBhZ2VudF90eXBlOiBnZXRIaXRsQW5hbHl0aWNzQWdlbnRUeXBlKGFnZW50KSxcbiAgICAgICAgICBhY3Rpb25fdHlwZTogYnVpbGRIaXRsQWN0aW9uVHlwZUxpc3QocGVuZGluZ0FjdGlvbnMpLFxuICAgICAgICAgIGRlY2lzaW9uOiAnYWNjZXB0JyxcbiAgICAgICAgICBvcHRpb246ICdjcmVhdGVfYWdlbnQnLFxuICAgICAgICAgIC4uLihjb21wbGV0ZWRBZ2VudElkPy50cmltKCkgPyB7IGNyZWF0ZWRfYWdlbnRfaWQ6IGNvbXBsZXRlZEFnZW50SWQudHJpbSgpIH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHdhc0VkaXRBZ2VudEFwcHJvdmVkID1cbiAgICAgICAgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSAmJlxuICAgICAgICBwcmV2aW91c01lc3NhZ2U/LmFwcHJvdmFsU3RhdHVzID09PSAnYXBwcm92ZWQnICYmXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zLnNvbWUoKGFjdGlvbjogYW55KSA9PiAoYWN0aW9uLnRvb2xfbmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ2VkaXRfYWdlbnQnKVxuXG4gICAgICBsZXQgZWRpdEFnZW50Rm9sbG93VXA6IHsgYWdlbnRJZDogc3RyaW5nIH0gfCB1bmRlZmluZWRcbiAgICAgIGlmICh3YXNFZGl0QWdlbnRBcHByb3ZlZCkge1xuICAgICAgICBjb25zdCBmcm9tU3RyZWFtID0gY29tcGxldGVkQWdlbnRJZD8udHJpbSgpXG4gICAgICAgIGNvbnN0IGZyb21BcmdzID0gZXh0cmFjdEFnZW50SWRGcm9tRWRpdEFnZW50UGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICAgIGNvbnN0IHJlc29sdmVkQWdlbnRJZCA9IGZyb21TdHJlYW0gfHwgZnJvbUFyZ3NcbiAgICAgICAgaWYgKHJlc29sdmVkQWdlbnRJZCkge1xuICAgICAgICAgIGVkaXRBZ2VudEZvbGxvd1VwID0geyBhZ2VudElkOiByZXNvbHZlZEFnZW50SWQgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tJZHNGcm9tVXJscyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsID0gZXh0cmFjdFRhc2tJZHNGcm9tRGVsZXRlUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG4gICAgICBjb25zdCB0YXNrSWRzRnJvbURlbGV0aW9uVGV4dCA9XG4gICAgICAgIHdhc1Rhc2tEZWxldGUgJiYgdGFza0lkc0Zyb21VcmxzLmxlbmd0aCA9PT0gMCAmJiB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gZXh0cmFjdFRhc2tJZHNGcm9tQXNzaXN0YW50RGVsZXRpb25UZXh0KGNvbnRlbnQpXG4gICAgICAgICAgOiBbXVxuICAgICAgY29uc3QgdGFza0lkc0ZvckRhc2hib2FyZCA9XG4gICAgICAgIHRhc2tJZHNGcm9tVXJscy5sZW5ndGggPiAwXG4gICAgICAgICAgPyB0YXNrSWRzRnJvbVVybHNcbiAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyB0YXNrSWRzRnJvbURlbGV0ZUFwcHJvdmFsXG4gICAgICAgICAgICA6IHRhc2tJZHNGcm9tRGVsZXRpb25UZXh0XG5cbiAgICAgIGNvbnN0IHNob3VsZFN5bmNEYXNoYm9hcmQgPVxuICAgICAgICBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlICYmXG4gICAgICAgICh3YXNUYXNrQ3JlYXRpb24gfHwgd2FzVGFza0VkaXQgfHwgd2FzVGFza0RlbGV0ZSkgJiZcbiAgICAgICAgdGFza0lkc0ZvckRhc2hib2FyZC5sZW5ndGggPiAwXG5cbiAgICAgIGlmIChzaG91bGRTeW5jRGFzaGJvYXJkKSB7XG4gICAgICAgIGNvbnN0IHRhc2tJZHMgPSB0YXNrSWRzRm9yRGFzaGJvYXJkXG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCh0YXNrSWRzWzBdKVxuICAgICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgICBjb250ZW50VG9BZGQgPSBjb250ZW50LnJlcGxhY2UodGFza1VybFJlZ2V4LCB1cmwgPT5cbiAgICAgICAgICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhc3RQcm9qZWN0TWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBjb250ZXh0UHJvamVjdElkUmF3ID8gcGFyc2VJbnQoU3RyaW5nKGNvbnRleHRQcm9qZWN0SWRSYXcpLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXlxcL3Byb2plY3RzXFwvKFxcZCspXFwvLylcbiAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgaXNPblByb2plY3RSb3V0ZSA9IGNvbnRleHRQcm9qZWN0SWQgJiYgcm91dGVQcm9qZWN0SWQgJiYgY29udGV4dFByb2plY3RJZCA9PT0gcm91dGVQcm9qZWN0SWRcblxuICAgICAgICBpZiAoaXNPblByb2plY3RSb3V0ZSkge1xuICAgICAgICAgIGlmICh3YXNUYXNrQ3JlYXRpb24pIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkPy5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRWRpdCkge1xuICAgICAgICAgICAgd2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmVkaXRFeGlzdGluZ1Rhc2tJbkRhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfSBlbHNlIGlmICh3YXNUYXNrRGVsZXRlKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uZGVsZXRlRXhpc3RpbmdUYXNrRnJvbURhc2hib2FyZD8uKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFJlZmV0Y2ggZGVsIHRhc2sgcGFuZWwgc2kgZXN0w6EgYWJpZXJ0byB5IGxhIHRvb2wgYXByb2JhZGEgZWRpdMOzL2JvcnLDsyBlc2EgdGFyZWEuXG4gICAgICAvLyBDdWJyZSBsb3MgZG9zIGZsdWpvcyBkZSBhcHByb3ZhbDpcbiAgICAgIC8vICAgMSkgQXBwcm92YWwgcG9yIGJvdMOzbiDihpIgYHByZXZpb3VzTWVzc2FnZS5hcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnNgICh2w61hIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpXG4gICAgICAvLyAgIDIpIE1hbnVhbCBhcHByb3ZhbCAodXN1YXJpbyB0aXBlYSBcInNpXCIvXCJub1wiKSDihpIgYGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50YFxuICAgICAgY29uc3Qgb3BlblRhc2tQYW5lbElkID0gd2luZG93LnRhc2tQYW5lbD8udGFza0lkXG4gICAgICBjb25zdCBtYW51YWxBcHByb3ZhbCA9IGxhc3RNYW51YWxBcHByb3ZhbFJlZi5jdXJyZW50XG4gICAgICBsYXN0TWFudWFsQXBwcm92YWxSZWYuY3VycmVudCA9IG51bGwgLy8gY29uc3VtaXIgdW5hIHNvbGEgdmV6XG4gICAgICBjb25zdCBtYW51YWxXYXNUYXNrRWRpdCA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19FRElUX1RPT0xTLmluY2x1ZGVzKG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lKVxuICAgICAgY29uc3QgbWFudWFsV2FzVGFza0RlbGV0ZSA9ICEhbWFudWFsQXBwcm92YWwgJiYgVEFTS19ERUxFVEVfVE9PTFMuaW5jbHVkZXMobWFudWFsQXBwcm92YWwudG9vbE5hbWUpXG5cbiAgICAgIGlmIChvcGVuVGFza1BhbmVsSWQgJiYgKHdhc1Rhc2tFZGl0IHx8IHdhc1Rhc2tEZWxldGUgfHwgbWFudWFsV2FzVGFza0VkaXQgfHwgbWFudWFsV2FzVGFza0RlbGV0ZSkpIHtcbiAgICAgICAgY29uc3QgbWFudWFsUHNldWRvQWN0aW9uOiBQZW5kaW5nQWN0aW9uIHwgbnVsbCA9IG1hbnVhbEFwcHJvdmFsXG4gICAgICAgICAgPyAoeyB0b29sX25hbWU6IG1hbnVhbEFwcHJvdmFsLnRvb2xOYW1lLCB0b29sX2FyZ3M6IG1hbnVhbEFwcHJvdmFsLnRvb2xBcmdzID8/IHt9IH0gYXMgUGVuZGluZ0FjdGlvbilcbiAgICAgICAgICA6IG51bGxcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRUYXNrSWRzID0gW1xuICAgICAgICAgIC4uLmV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhwZW5kaW5nQWN0aW9ucyksXG4gICAgICAgICAgLi4udGFza0lkc0Zyb21VcmxzLFxuICAgICAgICAgIC4uLnRhc2tJZHNGcm9tRGVsZXRlQXBwcm92YWwsXG4gICAgICAgICAgLi4uKG1hbnVhbFBzZXVkb0FjdGlvbiA/IGV4dHJhY3RUYXNrSWRzRnJvbVBlbmRpbmdBY3Rpb25zQXJncyhbbWFudWFsUHNldWRvQWN0aW9uXSkgOiBbXSksXG4gICAgICAgIF0ubWFwKFN0cmluZylcbiAgICAgICAgaWYgKGFmZmVjdGVkVGFza0lkcy5pbmNsdWRlcyhTdHJpbmcob3BlblRhc2tQYW5lbElkKSkpIHtcbiAgICAgICAgICB3aW5kb3cudGFza1BhbmVsPy5yZWZldGNoVGFzaz8uKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHN1Z2dlc3Rpb25zIHx8IFtdLFxuICAgICAgICAuLi4oY3JlYXRlQWdlbnRGb2xsb3dVcCA/IHsgY3JlYXRlQWdlbnRGb2xsb3dVcCB9IDoge30pLFxuICAgICAgfSlcblxuICAgICAgaWYgKGNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChjcmVhdGVBZ2VudEZvbGxvd1VwLmFnZW50SWQpXG4gICAgICAgICAgLnRoZW4oY2hhdEFnZW50ID0+IHtcbiAgICAgICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudCgnbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHsgYWdlbnQ6IGNoYXRBZ2VudCB9LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbdXNlQ2hhdE1hbmFnZXJdIE5vIHNlIHB1ZG8gYcOxYWRpciBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8gYWwgbGlzdGFkbycsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAoZWRpdEFnZW50Rm9sbG93VXA/LmFnZW50SWQpIHtcbiAgICAgICAgZmV0Y2hBZ2VudERldGFpbChlZGl0QWdlbnRGb2xsb3dVcC5hZ2VudElkKVxuICAgICAgICAgIC50aGVuKGNoYXRBZ2VudCA9PiB7XG4gICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogeyBhZ2VudDogY2hhdEFnZW50IH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VDaGF0TWFuYWdlcl0gTm8gc2UgcHVkbyByZWZyZXNjYXIgZWwgYWdlbnRlIGVkaXRhZG8nLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHQsIGV2ZW50LCBhZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2xlYXJTdHJlYW1VaVJlZi5jdXJyZW50KClcbiAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgIHN0cmVhbWluZ1N0b3JlLmNsZWFyKClcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgYWRkTWVzc2FnZSh7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCB0XSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgICAgc3RyZWFtaW5nUGxhY2Vob2xkZXJJZFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIGNvbnN0IGhpdGxDb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCA9IHtcbiAgICAgICAgbWVzc2FnZUlkOiBgYXBwcm92YWwtJHthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9YCxcbiAgICAgICAgbWVzc2FnZVRleHQ6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgYXBwcm92YWwsXG4gICAgICAgIHBlbmRpbmdBY3Rpb25zOiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMsXG4gICAgICAgIHRocmVhZElkczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zPy5tYXAoYWN0aW9uID0+IGFjdGlvbi50aHJlYWRfaWQpLFxuICAgICAgfVxuICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IGhpdGxDb250ZXh0XG5cbiAgICAgIGlmIChhcHByb3ZhbC5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RBY3Rpb24gPSBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnM/LlswXVxuICAgICAgICBjb25zdCB0b29sTmFtZSA9IChhcHByb3ZhbCBhcyB7IHRvb2xfbmFtZT86IHN0cmluZyB9KS50b29sX25hbWUgPz8gZmlyc3RBY3Rpb24/LnRvb2xfbmFtZSA/PyAnJ1xuICAgICAgICBjb25zdCB0b29sQXJncyA9XG4gICAgICAgICAgKChhcHByb3ZhbCBhcyB7IHRvb2xfYXJncz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pLnRvb2xfYXJncyA/P1xuICAgICAgICAgICAgKGZpcnN0QWN0aW9uPy50b29sX2FyZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQpKSB8fFxuICAgICAgICAgIG51bGxcbiAgICAgICAgaWYgKHRvb2xOYW1lKSB7XG4gICAgICAgICAgbGFzdE1hbnVhbEFwcHJvdmFsUmVmLmN1cnJlbnQgPSB7IHRvb2xOYW1lLCB0b29sQXJncyB9XG4gICAgICAgIH1cbiAgICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGEgbWVzc2FnZSB3aXRoIHRoZSBhcHByb3ZhbCByZXF1ZXN0XG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlOiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgYXBwcm92YWxTdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIGlzTG9hZGluZzogd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxuICB9KVxuXG4gIC8vIE1hbnRlbmVtb3MgZWwgc2V0dGVyIG3DoXMgcmVjaWVudGUgZW4gdW5hIHJlZiBwYXJhIHF1ZSBwdWVkYSB1c2Fyc2UgZGVzZGVcbiAgLy8gZWZlY3RvcyBkZWZpbmlkb3MgYW50ZXMgZW4gZWwgYXJjaGl2byAoY2FtYmlvIGRlIGNoYXQsIHJlc2V0LCBldGMuKS5cbiAgYWJvcnRTdHJlYW1TaWxlbnRseVJlZi5jdXJyZW50ID0gYWJvcnRTdHJlYW1TaWxlbnRseVxuICBjbGVhclN0cmVhbVVpUmVmLmN1cnJlbnQgPSAoKSA9PiB7XG4gICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICBzZXRBY3RpdmVMb2FkaW5ncyh7fSlcbiAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50IHx8IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXR0YWNobWVudHMsIG9wdGlvbnMgfSA9IG5vcm1hbGl6ZVNlbmRNZXNzYWdlQXJncyhhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgIC8vIExhcyBtZW50aW9ucyBwdWVkZW4gdmVuaXIgdsOtYSA1dG8gcGFyw6FtZXRybyAoY2FsbCBwb3NpdGlvbmFsIGRlc2RlIGVsIGZvb3RlcilcbiAgICAgIC8vIG8gdsOtYSBTZW5kTWVzc2FnZU9wdGlvbnMgKGNhbGwgcHJvZ3JhbcOhdGljbykuIEVsIHBhcsOhbWV0cm8gZXhwbMOtY2l0byBnYW5hLlxuICAgICAgY29uc3QgZWZmZWN0aXZlTWVudGlvbnMgPSBtZW50aW9ucyA/PyBvcHRpb25zLm1lbnRpb25zXG4gICAgICBjb25zdCBjb250ZXh0TWVzc2FnZTogQ29udGV4dE1lc3NhZ2UgfCB1bmRlZmluZWQgPSBidWlsZENvbnRleHRNZXNzYWdlKGVmZmVjdGl2ZU1lbnRpb25zKVxuICAgICAgY29uc3QgcGF5bG9hZEZ1YUlkID0gZnVhSWQgPz8gb3B0aW9ucy5mdWFJZFxuICAgICAgY29uc3QgcGF5bG9hZFNjSWQgPSBzY0lkID8/IG9wdGlvbnMuc2NJZFxuICAgICAgY29uc3QgcGF5bG9hZENvbnRleHREYXRhID0gb3B0aW9ucy5jb250ZXh0RGF0YVxuICAgICAgY29uc3QgZGlzcGxheU1lc3NhZ2UgPSBmb3JtYXRRdWlja0FjdGlvbk1lc3NhZ2VGb3JEaXNwbGF5KG1lc3NhZ2UsIHtcbiAgICAgICAgZnVhSWQ6IHBheWxvYWRGdWFJZCxcbiAgICAgICAgc2NJZDogcGF5bG9hZFNjSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGNvbnN0IG5ld01lc3NhZ2VJZCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSBuZXdNZXNzYWdlSWRcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG1lc3NhZ2VcblxuICAgICAgaWYgKCFyZXBvcnRlZEV2ZW50LmN1cnJlbnQpIHtcbiAgICAgICAgZXZlbnQoRVZFTlRTLnBtQWlUeXBlZFRleHQpXG4gICAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGNvbnRleHRvIGdsb2JhbCBlc3TDoSBkZXNhY3R1YWxpemFkb1xuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VXaXRoUHJvamVjdCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcblxuICAgICAgY29uc3QgY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzID0gbWVzc2FnZXNSZWYuY3VycmVudD8uW21lc3NhZ2VzUmVmLmN1cnJlbnQubGVuZ3RoIC0gMV0/LmFnZW50SWRcblxuICAgICAgLy8gTm8gYWdyZWdhciBwcm9qZWN0SWQgYWwgbWVuc2FqZSBkZWwgdXN1YXJpbyAtIHNlIGRldGVybWluYXLDoSBkZXNwdcOpc1xuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBgcXVlc3Rpb24tJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZTogZGlzcGxheU1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogYXR0YWNobWVudHMsXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgIH0pXG5cbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG5cbiAgICAgIGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVySWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBzdHJlYW1pbmdQbGFjZWhvbGRlcklkXG4gICAgICBhY3RpdmVTdHJlYW1DaGF0SWRSZWYuY3VycmVudCA9IGN1cnJlbnRDaGF0SWQuY3VycmVudFxuICAgICAgYWRkTWVzc2FnZSh7XG4gICAgICAgIGlkOiBzdHJlYW1pbmdQbGFjZWhvbGRlcklkLFxuICAgICAgICBtZXNzYWdlOiAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6IGFnZW50Py5uYW1lIHx8ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuXG4gICAgICBsZXQgZmluYWxNZXNzYWdlID0gbWVzc2FnZVxuXG4gICAgICBpZiAobWVzc2FnZSA9PT0gdCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJykpIHtcbiAgICAgICAgZmluYWxNZXNzYWdlID0gYEZBUTogJHt0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKX0gLSBUaXBvIGRlIHJlbnRhYmlsaWRhZDogJHtcbiAgICAgICAgICBvcHRpb25zLnByb2plY3RDaGFuZ2VkPy5pbmNvbWVUeXBlIHx8IGNvbnRleHRSZWYuY3VycmVudC5wcm9qZWN0Py5pbmNvbWVUeXBlXG4gICAgICAgIH1gXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIHByb2plY3Q6IGN0eFByb2plY3QsXG4gICAgICAgIGNsaWVudDogY3R4Q2xpZW50LFxuICAgICAgICB0YXNrOiBjdHhUYXNrLFxuICAgICAgfSA9IGNvbnRleHRSZWYuY3VycmVudFxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcbiAgICAgIGNvbnN0IHByb2plY3RUb1JlcXVlc3QgPSByZXNvbHZlUHJvamVjdFRvUmVxdWVzdChjdHhDaGlwc1Byb2plY3QsIGxhc3RNZXNzYWdlUHJvamVjdElkKVxuXG4gICAgICBjb25zb2xlLmluZm8oJ1t1c2VDaGF0TWFuYWdlcl0gc2VuZE1lc3NhZ2UgY29udGV4dCByZXNvbHV0aW9uOicsIHtcbiAgICAgICAgY2hpcHNQcm9qZWN0OiBjdHhDaGlwc1Byb2plY3QsXG4gICAgICAgIGNoaXBzUHJvamVjdElkOiBjdHhDaGlwc1Byb2plY3Q/LnByb2plY3RJZCA/IE51bWJlcihjdHhDaGlwc1Byb2plY3QucHJvamVjdElkKSA6IG51bGwsXG4gICAgICAgIGxhc3RNZXNzYWdlUHJvamVjdElkLFxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBjbGllbnRJZDogY3R4Q2xpZW50Py5pZCxcbiAgICAgICAgdGFza0lkOiBjdHhUYXNrPy5pZCxcbiAgICAgICAgcHJvamVjdFByb3BJZDogY3R4UHJvamVjdD8uaWQsXG4gICAgICAgIGFnZW50VHlwZTogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRmFxSWQgPSBmYXFJZCA/PyBvcHRpb25zLmZhcUlkXG4gICAgICBjb25zdCBwYXlsb2FkQWdlbnRTdWdnZXN0aW9uSWQgPSBhZ2VudFN1Z2dlc3Rpb25JZCA/PyBvcHRpb25zLmFnZW50U3VnZ2VzdGlvbklkXG5cbiAgICAgIGNvbnN0IHBheWxvYWREYXRhID0ge1xuICAgICAgICBtZXNzYWdlOiBmaW5hbE1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWU6IGF1dGhVc2VyLmxhc3ROYW1lLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICBhZ2VudElkOiBjdXJyZW50QWdlbnRGcm9tTWVzc2FnZXMgfHwgYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihjdHhQcm9qZWN0Py5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKGN0eFByb2plY3QuZmVlSWQpIH0gOiB7fSksXG4gICAgICAgIC4uLnJlc29sdmVDbGllbnRQYXlsb2FkKGN0eENsaWVudCwgY3R4UHJvamVjdCksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oY3R4VGFzaz8uaWQgIT0gbnVsbFxuICAgICAgICAgID8geyB0YXNrSWQ6IE51bWJlcihjdHhUYXNrLmlkKSwgLi4uKGN0eFRhc2submFtZSA/IHsgdGFza05hbWU6IGN0eFRhc2submFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKGF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkRmFxSWQgPyB7IGZhcUlkOiBwYXlsb2FkRmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQ6IHBheWxvYWRBZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4ocGF5bG9hZEZ1YUlkID8geyBmdWFJZDogcGF5bG9hZEZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihwYXlsb2FkU2NJZCA/IHsgc2NJZDogcGF5bG9hZFNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50Py5lbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHk6IGFnZW50LmVudGl0eSB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LnR5cGUgIT0gbnVsbCA/IHsgYWdlbnRUeXBlOiBhZ2VudC50eXBlIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0TWVzc2FnZSA/IHsgY29udGV4dE1lc3NhZ2UgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRDb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGE6IHBheWxvYWRDb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfVxuXG4gICAgICBhc2tNYWlhKHBheWxvYWREYXRhKVxuICAgIH0sXG4gICAgW1xuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGV2ZW50LFxuICAgICAgYXNrTWFpYSxcbiAgICAgIHByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICB0YXNrLFxuICAgICAgY2hpcHNQcm9qZWN0LFxuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIHQsXG4gICAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBdXG4gIClcblxuICBjb25zdCBjaGFuZ2VQcm9qZWN0ID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHJldHVyblxuXG4gICAgICBpZiAob3B0aW9uLmlkICE9PSBwcm9qZWN0Py5pZCkge1xuICAgICAgICBzZXRQcm9qZWN0KG9wdGlvbilcbiAgICAgIH1cblxuICAgICAgaWYgKHByb2plY3QgJiYgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgfSkpXG5cbiAgICAgICAgY29uc29sZS5pbmZvKCdbdXNlQ2hhdE1hbmFnZXJdIFBBVEg9Y2hhbmdlUHJvamVjdCDigJQgdXNhIG9wdGlvbi5pZCBkaXJlY3RvIChOTyBjaGlwc1Byb2plY3QpOicsIHtcbiAgICAgICAgICBvcHRpb25JZDogb3B0aW9uLmlkLFxuICAgICAgICAgIHByb2plY3RQcm9wSWQ6IHByb2plY3Q/LmlkID8/IG51bGwsXG4gICAgICAgICAgY2hpcHNQcm9qZWN0SWQ6IGNoaXBzUHJvamVjdD8ucHJvamVjdElkID8/IG51bGwsXG4gICAgICAgICAgYWdlbnRUeXBlOiBhZ2VudD8udHlwZSxcbiAgICAgICAgfSlcblxuICAgICAgICBhc2tNYWlhKHtcbiAgICAgICAgICBtZXNzYWdlOiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IG9wdGlvbi5pZCxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBmaXJzdE5hbWU6IGF1dGhVc2VyLmZpcnN0TmFtZSxcbiAgICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQgfHwgJycsXG4gICAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5mZWVJZCAhPSBudWxsID8geyBmZWVJZDogTnVtYmVyKG9wdGlvbi5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4ob3B0aW9uPy5jbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRJZDogTnVtYmVyKG9wdGlvbi5jbGllbnRJZCkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgICAgLi4uKGFnZW50Py50eXBlICE9IG51bGwgPyB7IGFnZW50VHlwZTogYWdlbnQudHlwZSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZSwgYWdlbnRdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWRzOiBzdHJpbmdbXSxcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgaWYgKCF0aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyB0aHJlYWRfaWRzIHByb3ZpZGVkIGZvciBhcHByb3ZhbCBkZWNpc2lvbicpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBCdXNjYXIgZWwgbWVuc2FqZSBxdWUgY29udGllbmUgYWxndW5vIGRlIGVzdG9zIHRocmVhZElkcyBlbiBzdXMgcGVuZGluZ19hY3Rpb25zXG4gICAgICBjb25zdCBtZXNzYWdlV2l0aEFwcHJvdmFsID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT5cbiAgICAgICAgbS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiB0aHJlYWRJZHMuaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gICAgICApXG5cbiAgICAgIGlmICghbWVzc2FnZVdpdGhBcHByb3ZhbCB8fCAhbWVzc2FnZVdpdGhBcHByb3ZhbC5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWRzOicsIHRocmVhZElkcylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcbiAgICAgIGNvbnN0IGxvYWRpbmdLZXkgPSB0aHJlYWRJZHNbMF1cblxuICAgICAgY29uc3QgaGl0bENvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICAgICAgICBtZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2VUZXh0OiBtZXNzYWdlV2l0aEFwcHJvdmFsLm1lc3NhZ2UsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBwZW5kaW5nQWN0aW9uczogYXBwcm92YWwucGVuZGluZ19hY3Rpb25zLFxuICAgICAgICB0aHJlYWRJZHMsXG4gICAgICB9XG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gaGl0bENvbnRleHRcblxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bENvbnRleHQpXG5cbiAgICAgIC8vIFVwZGF0ZSBtZXNzYWdlIHN0YXR1cyBpbW1lZGlhdGVseVxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gbWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXIgcmUtcmVuZGVyXG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PiBtLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICBhZGRNZXNzYWdlKHsgLi4uZXhpc3RpbmdNZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIENhbGwgY29udGludWUtdGhyZWFkIGVuZHBvaW50IHdpdGggQUxMIHRocmVhZF9pZHMgaW4gYSBzaW5nbGUgcmVxdWVzdFxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0odHJ1ZSlcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG5cbiAgICAgIC8vIEFkZCBsb2FkaW5nXG4gICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFtsb2FkaW5nS2V5XTogaW5pdGlhbEFjdGl2aXR5Lm1lc3NhZ2UsXG4gICAgICB9KSlcbiAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcblxuICAgICAgLy8gTWFyY2Egc2kgZWwgc3RyZWFtIGNlcnLDsyB2w61hIHVuIGV2ZW50byB0ZXJtaW5hbCAoY29tcGxldGUvYXBwcm92YWwvZXJyb3IpLlxuICAgICAgLy8gU2kgZWwgYmFja2VuZCBjaWVycmEgbGEgY29uZXhpw7NuIHNpbiBlbWl0aXJsbywgbGltcGlhbW9zIGVsIGluZGljYWRvciBlbiBlbFxuICAgICAgLy8gYGZpbmFsbHlgIHBhcmEgcXVlIG5vIHF1ZWRlIHRyYWJhZG8gZW4gXCJFc2NyaWJpZW5kbyBsYSByZXNwdWVzdGFcIi5cbiAgICAgIGxldCBzdHJlYW1TZXR0bGVkID0gZmFsc2VcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZCh7XG4gICAgICAgICAgdGhyZWFkSWRzLCAvLyBTZW5kIGFsbCBhY3Rpb24gdGhyZWFkX2lkcyBhdCBvbmNlXG4gICAgICAgICAgc2Vzc2lvbklkOiBhcHByb3ZhbC5zZXNzaW9uX2lkLFxuICAgICAgICAgIGRlY2lzaW9uOiBlZGl0ZWRBY3Rpb25zID8gJ2VkaXQnIDogZGVjaXNpb24sXG4gICAgICAgICAgZWRpdGVkQWN0aW9ucyxcbiAgICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQgfHwgJycsXG4gICAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgU1NFIHN0cmVhbVxuICAgICAgICBhd2FpdCBwcm9jZXNzU1NFU3RyZWFtKHJlc3BvbnNlLCBsb2FkaW5nS2V5LCB7XG4gICAgICAgICAgb25UaGlua2luZzogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5ID0ge1xuICAgICAgICAgICAgICBwaGFzZTogJ3RoaW5raW5nJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkoZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtVXBkYXRlKGNvbnRlbnQsIG51bGwsICcnKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25Ob2RlOiAobWVzc2FnZTogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9kZUFjdGl2aXR5ID0gcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLmN1cnJlbnQsXG4gICAgICAgICAgICAgIGN1cnJlbnRUaHJlYWRJZCxcbiAgICAgICAgICAgICAgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG5vZGVBY3Rpdml0eSlcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJlbnRUaHJlYWRJZF06IG5vZGVBY3Rpdml0eS5tZXNzYWdlLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlOiAoXG4gICAgICAgICAgICBmaW5hbENvbnRlbnQ6IHN0cmluZyxcbiAgICAgICAgICAgIHNvdXJjZXM6IGFueSxcbiAgICAgICAgICAgIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nLFxuICAgICAgICAgICAgY3VycmVudFRocmVhZElkOiBzdHJpbmcsXG4gICAgICAgICAgICBhdHRhY2htZW50cz86IGFueVtdIHwgbnVsbCxcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsLFxuICAgICAgICAgICAgYWdlbnRJZD86IHN0cmluZyB8IG51bGxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgICAgICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQsIGF0dGFjaG1lbnRzLCBzdWdnZXN0aW9ucywgYWdlbnRJZClcbiAgICAgICAgICAgIHVwZGF0ZVN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb25BcHByb3ZhbFJlcXVpcmVkOiAoYXBwcm92YWxQYXlsb2FkOiBhbnksIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nLCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8gQXBwcm92YWwgcGF1c2FkbyAoYm90w7NuKTogY2llcnJhIGVzdGUgY29udGludWUtdGhyZWFkLlxuICAgICAgICAgICAgLy8gTWFudWFsIGFwcHJvdmFsOiBlbCBTU0Ugc2lndWUgY29uIG5vZGUvdG9rZW4vY29tcGxldGUgKHkgbcOhcyBISVRMKS5cbiAgICAgICAgICAgIGNvbnN0IGlzTWFudWFsQXBwcm92YWwgPSBhcHByb3ZhbFBheWxvYWQ/Lm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICAgICAgaWYgKCFpc01hbnVhbEFwcHJvdmFsKSB7XG4gICAgICAgICAgICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgICAgICAgICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgICAgICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkKGFwcHJvdmFsUGF5bG9hZCBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgICAgICAgICBzZXRJc0NvbnRpbnVpbmdTdHJlYW0oZmFsc2UpXG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHN0cmVhbVNldHRsZWQgPSB0cnVlXG4gICAgICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0SXNDb250aW51aW5nU3RyZWFtKGZhbHNlKVxuICAgICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIC8vIFJlZCBkZSBzZWd1cmlkYWQ6IHNpIGVsIHN0cmVhbSBjZXJyw7Mgc2luIGV2ZW50byB0ZXJtaW5hbCwgZWwgaW5kaWNhZG9yXG4gICAgICAgIC8vIChwLiBlai4gXCJFc2NyaWJpZW5kbyBsYSByZXNwdWVzdGFcIikgcXVlZGFyw61hIHRyYWJhZG8uIExvIGxpbXBpYW1vcyBhcXXDrS5cbiAgICAgICAgaWYgKCFzdHJlYW1TZXR0bGVkKSB7XG4gICAgICAgICAgdXBkYXRlU3RyZWFtQWN0aXZpdHkobnVsbClcbiAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgaWYgKCEobG9hZGluZ0tleSBpbiBwcmV2KSkgcmV0dXJuIHByZXZcbiAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tsb2FkaW5nS2V5XVxuICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgYXV0aFVzZXIsXG4gICAgICBhZ2VudCxcbiAgICAgIGFkZE1lc3NhZ2UsXG4gICAgICBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZSxcbiAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICAgIGhhbmRsZUFwcHJvdmFsUmVxdWlyZWQsXG4gICAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICAgIHQsXG4gICAgXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2U/LnRyaW0oKSlcbiAgICAgIGNvbnN0IGhhc0luaXRpYWxBdHRhY2htZW50cyA9IEJvb2xlYW4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzPy5sZW5ndGgpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRmFxID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsRnVhID0gQm9vbGVhbih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQpXG4gICAgICBjb25zdCBoYXNJbml0aWFsU2MgPSBCb29sZWFuKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkKVxuXG4gICAgICBpZiAoIWhhc0luaXRpYWxNZXNzYWdlICYmICFoYXNJbml0aWFsQXR0YWNobWVudHMgJiYgIWhhc0luaXRpYWxGYXEgJiYgIWhhc0luaXRpYWxGdWEgJiYgIWhhc0luaXRpYWxTYykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgY29uc3Qge1xuICAgICAgICBjaGlwc1Byb2plY3Q6IGN0eENoaXBzUHJvamVjdCxcbiAgICAgICAgcHJvamVjdDogY3R4UHJvamVjdCxcbiAgICAgICAgY2xpZW50OiBjdHhDbGllbnQsXG4gICAgICAgIHRhc2s6IGN0eFRhc2ssXG4gICAgICB9ID0gY29udGV4dFJlZi5jdXJyZW50XG4gICAgICBjb25zdCBwcm9qZWN0VG9SZXF1ZXN0ID0gcmVzb2x2ZVByb2plY3RUb1JlcXVlc3QoY3R4Q2hpcHNQcm9qZWN0LCBudWxsKSA/PyBjdHhQcm9qZWN0Py5pZCA/PyBudWxsXG5cbiAgICAgIGNvbnNvbGUuaW5mbygnW3VzZUNoYXRNYW5hZ2VyXSBQQVRIPWluaXRpYWxpemVDaGF0L3VzZXJJbml0aWFsTWVzc2FnZSDigJQgY29udGV4dFJlZiByZXNvbHV0aW9uOicsIHtcbiAgICAgICAgcHJvamVjdFByb3BJZDogY3R4UHJvamVjdD8uaWQgPz8gbnVsbCxcbiAgICAgICAgY2xpZW50SWQ6IGN0eENsaWVudD8uaWQgPz8gbnVsbCxcbiAgICAgICAgdGFza0lkOiBjdHhUYXNrPy5pZCA/PyBudWxsLFxuICAgICAgICBjaGlwc1Byb2plY3RJZDogY3R4Q2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgPz8gbnVsbCxcbiAgICAgICAgcHJvamVjdFRvUmVxdWVzdCxcbiAgICAgICAgYWdlbnRUeXBlOiBhZ2VudD8udHlwZSxcbiAgICAgIH0pXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGZpcnN0TmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogYXV0aFVzZXIubGFzdE5hbWUsXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/LmZlZUlkICE9IG51bGwgPyB7IGZlZUlkOiBOdW1iZXIoY3R4UHJvamVjdC5mZWVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4ucmVzb2x2ZUNsaWVudFBheWxvYWQoY3R4Q2xpZW50LCBjdHhQcm9qZWN0KSxcbiAgICAgICAgLi4uKGN0eFByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBjdHhQcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGN0eFRhc2s/LmlkICE9IG51bGxcbiAgICAgICAgICA/IHsgdGFza0lkOiBOdW1iZXIoY3R4VGFzay5pZCksIC4uLihjdHhUYXNrLm5hbWUgPyB7IHRhc2tOYW1lOiBjdHhUYXNrLm5hbWUgfSA6IHt9KSB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZDogdXNlckluaXRpYWxNZXNzYWdlLmFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgPyB7IGZ1YUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5zY0lkID8geyBzY0lkOiB1c2VySW5pdGlhbE1lc3NhZ2Uuc2NJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnQ/LmVudGl0eSAhPSBudWxsID8geyBhZ2VudEVudGl0eTogYWdlbnQuZW50aXR5IH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudD8udHlwZSAhPSBudWxsID8geyBhZ2VudFR5cGU6IGFnZW50LnR5cGUgfSA6IHt9KSxcbiAgICAgICAgLi4uKGJ1aWxkQ29udGV4dE1lc3NhZ2UodXNlckluaXRpYWxNZXNzYWdlLm1lbnRpb25zKVxuICAgICAgICAgID8geyBjb250ZXh0TWVzc2FnZTogYnVpbGRDb250ZXh0TWVzc2FnZSh1c2VySW5pdGlhbE1lc3NhZ2UubWVudGlvbnMpIH1cbiAgICAgICAgICA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5jb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGE6IHVzZXJJbml0aWFsTWVzc2FnZS5jb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICB0YXNrLFxuICAgIGF1dGhVc2VyLFxuICAgIGFnZW50LFxuICAgIGFza01haWEsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICBdKVxuXG4gIGNvbnN0IHJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhYm9ydFN0cmVhbVNpbGVudGx5UmVmLmN1cnJlbnQoKVxuICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgICBzdHJlYW1pbmdQbGFjZWhvbGRlcklkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgYWN0aXZlU3RyZWFtQ2hhdElkUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgc3RyZWFtaW5nU3RvcmUuY2xlYXIoKVxuICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3RvcEdlbmVyYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcFN0cmVhbWluZygpXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNldElzQ29udGludWluZ1N0cmVhbShmYWxzZSlcbiAgfSwgW3N0b3BTdHJlYW1pbmddKVxuXG4gIHJldHVybiB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2U6IHdhaXRpbmdSZXNwb25zZSB8fCBpc0NvbnRpbnVpbmdTdHJlYW0sXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIGN1cnJlbnRQcm9qZWN0LFxuICAgIGN1cnJlbnRDaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICBjdXJyZW50TWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG5cbiAgICBzZW5kTWVzc2FnZSxcbiAgICBjaGFuZ2VQcm9qZWN0LFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgaGFuZGxlU2Nyb2xsLFxuICAgIGluaXRpYWxpemVDaGF0LFxuICAgIHJlc2V0Q2hhdCxcbiAgICBzdG9wR2VuZXJhdGlvbixcblxuICAgIGlzRGlzYWJsZWQ6IHdhaXRpbmdSZXNwb25zZSB8fCBpc0NvbnRpbnVpbmdTdHJlYW0gfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxFQUFFLElBQUlDLE1BQU0sUUFBUSxNQUFNO0FBQ25DLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRzlCLFNBQVNDLE9BQU8sUUFBaUIsd0JBQXdCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxhQUFhO0FBQzlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsUUFBUSxRQUFRLDREQUE0RDtBQUNyRixTQUF1Q0MsZUFBZSxRQUF3QyxrQkFBa0I7QUFDaEgsU0FBeUNDLG1CQUFtQixRQUFRLDRCQUE0QjtBQUNoRyxTQUFTQyxrQ0FBa0MsUUFBUSxzQ0FBc0M7QUFHekYs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