@projectcor/maia-components 2.11.66 → 2.11.67-0

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.
Files changed (51) hide show
  1. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +7 -3
  2. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +4 -2
  3. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
  4. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
  5. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +26 -6
  6. package/lib/components/atoms/icons/SkillIcon.js +30 -0
  7. package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
  8. package/lib/components/atoms/icons/index.js +3 -1
  9. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +14 -1
  10. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +34 -4
  11. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
  12. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  13. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
  14. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
  15. package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
  16. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
  17. package/lib/components/molecules/Sidebar/Sidebar.js +16 -4
  18. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
  19. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
  20. package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
  21. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
  22. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
  23. package/lib/components/organisms/AbmSkillModal/index.js +2 -0
  24. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
  25. package/lib/constants/config.js +4 -1
  26. package/lib/constants/permissions/index.js +2 -2
  27. package/lib/constants/permissions/utils.js +4 -1
  28. package/lib/hooks/useChatMessages/useChatMessages.js +4 -2
  29. package/lib/hooks/useContextMentions.js +60 -15
  30. package/lib/hooks/useEntitySearch.js +294 -108
  31. package/lib/hooks/useMentionAllowedTypes.js +45 -10
  32. package/lib/hooks/useMentionPopover.js +54 -48
  33. package/lib/lang/br/index.js +54 -3
  34. package/lib/lang/en/index.js +54 -3
  35. package/lib/lang/es/index.js +54 -3
  36. package/lib/lang/fr/index.js +54 -3
  37. package/lib/services/maia/Agents/getAgents.js +10 -8
  38. package/lib/services/maia/Chats/getChatMessages.js +4 -22
  39. package/lib/services/maia/Skills/createSkill.js +39 -0
  40. package/lib/services/maia/Skills/deleteSkill.js +38 -0
  41. package/lib/services/maia/Skills/generateSkill.js +41 -0
  42. package/lib/services/maia/Skills/getSkills.js +90 -0
  43. package/lib/services/maia/Skills/updateSkill.js +39 -0
  44. package/lib/types/contextMention.js +1 -1
  45. package/lib/types/skill.js +2 -0
  46. package/lib/utils/contextMentionIcons.js +29 -1
  47. package/lib/utils/contextMentionTriggers.js +53 -0
  48. package/lib/utils/corConnectorMentionTypes.js +37 -0
  49. package/lib/utils/normalizeAgentConnectors.js +32 -0
  50. package/lib/utils/renderContextMentions.js +9 -4
  51. package/package.json +1 -1
@@ -28,11 +28,11 @@ import { openTaskInCorPanel } from './openTaskInCorPanel';
28
28
  * se captura de forma lazy hasta el cierre real `]]`.
29
29
  */
30
30
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
31
- export var MENTION_MARKER_REGEX = /\[\[mention:(client|project|task|user|mcp):([^|\]]+)\|([\s\S]*?)\]\]/g;
31
+ export var MENTION_MARKER_REGEX = /\[\[mention:(client|project|task|user|mcp|skill):([^|\]]+)\|([\s\S]*?)\]\]/g;
32
32
  export var MAIA_MENTION_PROTOCOL = 'maia-mention://';
33
33
  var INCOMPLETE_MENTION_MARKER_REGEX = /\[\[mention:[\s\S]*$/;
34
34
  var INCOMPLETE_SLASH_MARKER_REGEX = /\[\[slash_command:[^|\]]+\|([\s\S]*)$/;
35
- var ALLOWED_TYPES = ['client', 'project', 'task', 'user', 'mcp'];
35
+ var ALLOWED_TYPES = ['client', 'project', 'task', 'user', 'mcp', 'skill'];
36
36
  var parseMentionProtocolHref = function parseMentionProtocolHref(href) {
37
37
  var rest = href.slice(MAIA_MENTION_PROTOCOL.length);
38
38
  var slashIdx = rest.indexOf('/');
@@ -93,8 +93,13 @@ var splitLabelFirstWord = function splitLabelFirstWord(label) {
93
93
  rest: normalized.slice(firstWhitespaceIdx)
94
94
  };
95
95
  };
96
+ var INLINE_MENTION_HOVER_BG = {
97
+ project: VIOLET_IA_COLORS[100]
98
+ };
96
99
  var inlineMentionHoverCss = function inlineMentionHoverCss(type, isClickable) {
97
- var bg = type === 'project' ? VIOLET_IA_COLORS[100] : MENTION_CHIP_NON_TASK_HOVER_BG;
100
+ var _INLINE_MENTION_HOVER;
101
+ if (type === 'skill') return css([""]);
102
+ var bg = (_INLINE_MENTION_HOVER = INLINE_MENTION_HOVER_BG[type]) !== null && _INLINE_MENTION_HOVER !== void 0 ? _INLINE_MENTION_HOVER : MENTION_CHIP_NON_TASK_HOVER_BG;
98
103
  return css(["background:", ";opacity:", ";"], bg, isClickable ? 0.95 : 1);
99
104
  };
100
105
 
@@ -389,4 +394,4 @@ export var renderTextWithMentions = function renderTextWithMentions(text) {
389
394
  if (lastIdx < text.length) out.push(text.slice(lastIdx));
390
395
  return out;
391
396
  };
392
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJTbGFzaENvbW1hbmRDaGlwIiwiU0xBU0hfQ09NTUFORF9NQVJLRVJfUkVHRVgiLCJWSU9MRVRfSUFfQ09MT1JTIiwiU0NUYXNrTGluayIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJNRU5USU9OX01BUktFUl9SRUdFWCIsIk1BSUFfTUVOVElPTl9QUk9UT0NPTCIsIklOQ09NUExFVEVfTUVOVElPTl9NQVJLRVJfUkVHRVgiLCJJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCIsIkFMTE9XRURfVFlQRVMiLCJwYXJzZU1lbnRpb25Qcm90b2NvbEhyZWYiLCJocmVmIiwicmVzdCIsInNsaWNlIiwibGVuZ3RoIiwic2xhc2hJZHgiLCJpbmRleE9mIiwicmF3VHlwZSIsInJhd0lkIiwiaWQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJfdW51c2VkIiwidHlwZSIsImluY2x1ZGVzIiwic2VyaWFsaXplTWVudGlvbiIsIm1lbnRpb24iLCJjb25jYXQiLCJsYWJlbCIsInRyYW5zZm9ybU1lbnRpb25NYXJrZXJzIiwidGV4dCIsInJlcGxhY2UiLCJfbSIsInNhZmVMYWJlbCIsIlN0cmluZyIsImVuY29kZVVSSUNvbXBvbmVudCIsIm1lbnRpb25DaGlsZHJlblRvTGFiZWwiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImMiLCJqb2luIiwic3BsaXRMYWJlbEZpcnN0V29yZCIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwiZmlyc3RXb3JkIiwiZmlyc3RXaGl0ZXNwYWNlSWR4Iiwic2VhcmNoIiwiaW5saW5lTWVudGlvbkhvdmVyQ3NzIiwiaXNDbGlja2FibGUiLCJiZyIsIlNDSW5saW5lTWVudGlvbiIsInNwYW4iLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIl9yZWYiLCJfTUVOVElPTl9DSElQX0NPTE9SUyQiLCIkdHlwZSIsInVzZXIiLCJfcmVmMiIsIl9NRU5USU9OX0NISVBfQ09MT1JTJDIiLCJmZyIsIl9yZWYzIiwiJGlzQ2xpY2thYmxlIiwiX3JlZjQiLCJTQ0lubGluZU1lbnRpb25JY29uIiwiX3JlZjUiLCIkdGFzayIsIl9yZWY2IiwiU0NJbmxpbmVNZW50aW9uSWNvblJvdyIsIlNDSW5saW5lTWVudGlvbldvcmQiLCJTQ0lubGluZU1lbnRpb25SZXN0IiwicmVuZGVyTWVudGlvbkxpbmsiLCJzdGFydHNXaXRoIiwiX3BhcnNlTWVudGlvblByb3RvY29sIiwiaXNUYXNrIiwiaWNvblNpemUiLCJ0YXNrVXJsIiwiaGFuZGxlVGFza0NsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYXNrS2V5RG93biIsImtleSIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJvbktleURvd24iLCJpc1Byb2plY3QiLCJwcm9qZWN0VXJsIiwic2hvd0ljb24iLCJfc3BsaXRMYWJlbEZpcnN0V29yZCIsImhhbmRsZVByb2plY3RDbGljayIsIndpbmRvdyIsIm9wZW4iLCJ1bmRlZmluZWQiLCJyb2xlIiwidGFiSW5kZXgiLCJzdHJpcE1lbnRpb25NYXJrZXJzIiwiX3R5cGUiLCJfaWQiLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJ3aXRob3V0TWVudGlvbnMiLCJzbGFzaFJlZ2V4IiwiUmVnRXhwIiwic291cmNlIiwid2l0aG91dFNsYXNoIiwid2l0aG91dEluY29tcGxldGVTbGFzaCIsImdldE1lbnRpb25VcmwiLCJNZW50aW9uQ2hpcCIsIl9yZWY3Iiwibm9ybWFsaXplZExhYmVsIiwidXJsIiwiX3NwbGl0TGFiZWxGaXJzdFdvcmQyIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVLZXlEb3duIiwiaGFzSW5saW5lTWFya2VycyIsImNvbGxlY3RJbmxpbmVNYXJrZXJzIiwibWFya2VycyIsImxhc3RJbmRleCIsIm0iLCJleGVjIiwiX20yIiwiX20zIiwiX3NsaWNlZFRvQXJyYXkiLCJwdXNoIiwia2luZCIsImluZGV4IiwicyIsInNvcnQiLCJhIiwiYiIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJvdXQiLCJsYXN0SWR4IiwiZm9yRWFjaCIsIm1hcmtlciIsImlubGluZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yZW5kZXJDb250ZXh0TWVudGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWN0Tm9kZSwgUmVhY3RFbGVtZW50LCBNb3VzZUV2ZW50LCBLZXlib2FyZEV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3R5bGVkLCB7IGNzcyB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uLCBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHtcbiAgTUVOVElPTl9DSElQX0NPTE9SUyxcbiAgTUVOVElPTl9DSElQX05PTl9UQVNLX0hPVkVSX0JHLFxufSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kQ2hpcCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvU2xhc2hDb21tYW5kQ2hpcCdcbmltcG9ydCB7IFNMQVNIX0NPTU1BTkRfTUFSS0VSX1JFR0VYIH0gZnJvbSAnLi9zbGFzaENvbW1hbmRNYXJrZXInXG5pbXBvcnQgeyBWSU9MRVRfSUFfQ09MT1JTIH0gZnJvbSAnLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7IFNDVGFza0xpbmsgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9uZXdTdHlsZXMnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsIH0gZnJvbSAnLi9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi9vcGVuVGFza0luQ29yUGFuZWwnXG5cbi8qKlxuICogRm9ybWF0byBkZWwgbWFyY2Fkb3IgcXVlIHZpYWphIGVuIGVsIHRleHRvIGRlbCBtZW5zYWplOlxuICogICBbW21lbnRpb246PHR5cGU+OjxpZD58PGxhYmVsPl1dXG4gKlxuICogRWwgZWRpdG9yIGxvIGVtaXRlIGN1YW5kbyBzZXJpYWxpemEgZWwgY29udGVudGVkaXRhYmxlLCBlbCBiYWNrZW5kIGxvXG4gKiBwZXJzaXN0ZSB0YWwgY3VhbCB5IGFsIHJlbmRlcml6YXIgc2UgdHJhbnNmb3JtYSBlbiB1biBsaW5rIG1hcmtkb3duIGNvblxuICogdW4gcHJvdG9jb2xvIHByb3BpbyBxdWUgYEN1c3RvbUxpbmtgIGludGVyY2VwdGEgeSBkaWJ1amEgY29tbyBzcGFuXG4gKiBlc3RpbGFkby5cbiAqXG4gKiBQb3Igc2VwYXJhZG8sIGxhIG1ldGFkYXRhIGBjb250ZXh0X21lc3NhZ2VgIGxsZXZhIGxvcyB2YWxvcmVzIGxpbXBpb3NcbiAqIChpZCArIG5hbWUpIHBhcmEgcXVlIGVsIGJhY2tlbmQgcHVlZGEgaW50ZXJwcmV0YXIgbGFzIGVudGlkYWRlcyBzaW5cbiAqIHRlbmVyIHF1ZSBwYXJzZWFyIGVsIHRleHRvLlxuICovXG4vKipcbiAqIExhYmVsIHB1ZWRlIGNvbnRlbmVyIGBdYCAoZWo6IFwiW0VkdWNhdGVdQmxvZyBQb3N0IC4uLlwiKSwgcG9yIGVzb1xuICogc2UgY2FwdHVyYSBkZSBmb3JtYSBsYXp5IGhhc3RhIGVsIGNpZXJyZSByZWFsIGBdXWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOihjbGllbnR8cHJvamVjdHx0YXNrfHVzZXJ8bWNwKTooW158XFxdXSspXFx8KFtcXHNcXFNdKj8pXFxdXFxdL2dcbmV4cG9ydCBjb25zdCBNQUlBX01FTlRJT05fUFJPVE9DT0wgPSAnbWFpYS1tZW50aW9uOi8vJ1xuY29uc3QgSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOltcXHNcXFNdKiQvXG5jb25zdCBJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCA9IC9cXFtcXFtzbGFzaF9jb21tYW5kOltefFxcXV0rXFx8KFtcXHNcXFNdKikkL1xuXG5jb25zdCBBTExPV0VEX1RZUEVTOiBDb250ZXh0RW50aXR5VHlwZVtdID0gWydjbGllbnQnLCAncHJvamVjdCcsICd0YXNrJywgJ3VzZXInLCAnbWNwJ11cblxuY29uc3QgcGFyc2VNZW50aW9uUHJvdG9jb2xIcmVmID0gKGhyZWY6IHN0cmluZyk6IHsgdHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGlkOiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IHJlc3QgPSBocmVmLnNsaWNlKE1BSUFfTUVOVElPTl9QUk9UT0NPTC5sZW5ndGgpXG4gIGNvbnN0IHNsYXNoSWR4ID0gcmVzdC5pbmRleE9mKCcvJylcbiAgY29uc3QgcmF3VHlwZSA9IHNsYXNoSWR4ID49IDAgPyByZXN0LnNsaWNlKDAsIHNsYXNoSWR4KSA6IHJlc3RcbiAgY29uc3QgcmF3SWQgPSBzbGFzaElkeCA+PSAwID8gcmVzdC5zbGljZShzbGFzaElkeCArIDEpIDogJydcbiAgbGV0IGlkID0gJydcbiAgdHJ5IHtcbiAgICBpZCA9IHJhd0lkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJhd0lkKSA6ICcnXG4gIH0gY2F0Y2gge1xuICAgIGlkID0gcmF3SWRcbiAgfVxuICBjb25zdCB0eXBlID0gQUxMT1dFRF9UWVBFUy5pbmNsdWRlcyhyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA/IChyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA6ICd1c2VyJ1xuICByZXR1cm4geyB0eXBlLCBpZCB9XG59XG5cbi8qKiBHZW5lcmEgZWwgbWFyY2Fkb3IgcGFyYSB1biBtZW50aW9uIGRhZG8uIExvIHVzYSBlbCBlZGl0b3IgYWwgc2VyaWFsaXphci4gKi9cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVNZW50aW9uID0gKG1lbnRpb246IENvbnRleHRNZW50aW9uKTogc3RyaW5nID0+XG4gIGBbW21lbnRpb246JHttZW50aW9uLnR5cGV9OiR7bWVudGlvbi5pZH18JHttZW50aW9uLmxhYmVsfV1dYFxuXG4vKipcbiAqIENvbnZpZXJ0ZSBjYWRhIGBbW21lbnRpb246Li4uXV1gIGVuIHVuIGxpbmsgbWFya2Rvd24gY29uIHByb3RvY29sbyBwcm9waW9cbiAqIHBhcmEgcXVlIFN0cmVhbWRvd24gbG8gZW1pdGEgY29tbyBgPGE+YCB5IGBDdXN0b21MaW5rYCBsbyBpbnRlcmNlcHRlLlxuICovXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtTWVudGlvbk1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gdGV4dFxuICByZXR1cm4gdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIHR5cGUsIGlkLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IHNhZmVMYWJlbCA9IFN0cmluZyhsYWJlbCkucmVwbGFjZSgvW1xcXFxcXF1dL2csICdcXFxcJCYnKVxuICAgIHJldHVybiBgWyR7c2FmZUxhYmVsfV0oJHtNQUlBX01FTlRJT05fUFJPVE9DT0x9JHt0eXBlfS8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX0pYFxuICB9KVxufVxuXG5jb25zdCBtZW50aW9uQ2hpbGRyZW5Ub0xhYmVsID0gKGNoaWxkcmVuOiBSZWFjdE5vZGUpOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJykgcmV0dXJuIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoY2hpbGRyZW4pXG4gIGlmIChjaGlsZHJlbiA9PSBudWxsIHx8IGNoaWxkcmVuID09PSBmYWxzZSkgcmV0dXJuICcnXG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIHJldHVybiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGNoaWxkcmVuLm1hcChjID0+ICh0eXBlb2YgYyA9PT0gJ3N0cmluZycgPyBjIDogJycpKS5qb2luKCcnKSlcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcoY2hpbGRyZW4pKVxufVxuXG5jb25zdCBzcGxpdExhYmVsRmlyc3RXb3JkID0gKGxhYmVsOiBzdHJpbmcpOiB7IGZpcnN0V29yZDogc3RyaW5nOyByZXN0OiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGxhYmVsKS50cmltKClcbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4geyBmaXJzdFdvcmQ6ICcnLCByZXN0OiAnJyB9XG4gIGNvbnN0IGZpcnN0V2hpdGVzcGFjZUlkeCA9IG5vcm1hbGl6ZWQuc2VhcmNoKC9cXHMvKVxuICBpZiAoZmlyc3RXaGl0ZXNwYWNlSWR4IDwgMCkgcmV0dXJuIHsgZmlyc3RXb3JkOiBub3JtYWxpemVkLCByZXN0OiAnJyB9XG4gIHJldHVybiB7XG4gICAgZmlyc3RXb3JkOiBub3JtYWxpemVkLnNsaWNlKDAsIGZpcnN0V2hpdGVzcGFjZUlkeCksXG4gICAgcmVzdDogbm9ybWFsaXplZC5zbGljZShmaXJzdFdoaXRlc3BhY2VJZHgpLFxuICB9XG59XG5cbmNvbnN0IGlubGluZU1lbnRpb25Ib3ZlckNzcyA9ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgaXNDbGlja2FibGU/OiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IGJnID0gdHlwZSA9PT0gJ3Byb2plY3QnID8gVklPTEVUX0lBX0NPTE9SU1sxMDBdIDogTUVOVElPTl9DSElQX05PTl9UQVNLX0hPVkVSX0JHXG4gIHJldHVybiBjc3NgXG4gICAgYmFja2dyb3VuZDogJHtiZ307XG4gICAgb3BhY2l0eTogJHtpc0NsaWNrYWJsZSA/IDAuOTUgOiAxfTtcbiAgYFxufVxuXG4vKiogU3BhbiBpbmxpbmUgZXN0aWxhZG8gKG1lbmNpb25lcyBuby10YXNrIGVuIGNoYXQpLiAqL1xuY29uc3QgU0NJbmxpbmVNZW50aW9uID0gc3R5bGVkLnNwYW48eyAkdHlwZTogQ29udGV4dEVudGl0eVR5cGU7ICRpc0NsaWNrYWJsZT86IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGlubGluZTtcbiAgcGFkZGluZzogMnB4IDRweDtcbiAgbWFyZ2luOiAwIDFweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LWZhbWlseTogdmFyKC0tY29yLXR5cG9ncmFwaHktZm9udC1mYW1pbHksICdXb3JrIFNhbnMnKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgYmFja2dyb3VuZDogJHsoeyAkdHlwZSB9KSA9PiAoTUVOVElPTl9DSElQX0NPTE9SU1skdHlwZV0gPz8gTUVOVElPTl9DSElQX0NPTE9SUy51c2VyKS5iZ307XG4gIGNvbG9yOiAkeyh7ICR0eXBlIH0pID0+IChNRU5USU9OX0NISVBfQ09MT1JTWyR0eXBlXSA/PyBNRU5USU9OX0NISVBfQ09MT1JTLnVzZXIpLmZnfTtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgY3Vyc29yOiAkeyh7ICRpc0NsaWNrYWJsZSB9KSA9PiAoJGlzQ2xpY2thYmxlID8gJ3BvaW50ZXInIDogJ2RlZmF1bHQnKX07XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAmOmhvdmVyIHtcbiAgICAkeyh7ICR0eXBlLCAkaXNDbGlja2FibGUgfSkgPT4gaW5saW5lTWVudGlvbkhvdmVyQ3NzKCR0eXBlLCAkaXNDbGlja2FibGUpfVxuICB9XG5gXG5cbmNvbnN0IFNDSW5saW5lTWVudGlvbkljb24gPSBzdHlsZWQuc3Bhbjx7ICR0YXNrPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgd2lkdGg6ICR7KHsgJHRhc2sgfSkgPT4gKCR0YXNrID8gJzE2cHgnIDogJzE0cHgnKX07XG4gIGhlaWdodDogJHsoeyAkdGFzayB9KSA9PiAoJHRhc2sgPyAnMTZweCcgOiAnMTRweCcpfTtcbmBcblxuY29uc3QgU0NJbmxpbmVNZW50aW9uSWNvblJvdyA9IHN0eWxlZC5zcGFuYFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuYFxuXG5jb25zdCBTQ0lubGluZU1lbnRpb25Xb3JkID0gc3R5bGVkLnNwYW5gXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5gXG5cbmNvbnN0IFNDSW5saW5lTWVudGlvblJlc3QgPSBzdHlsZWQuc3BhbmBcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbmBcblxuLyoqXG4gKiBTaSBlbCBocmVmIGNvcnJlc3BvbmRlIGFsIHByb3RvY29sbyBkZSBtZW50aW9uLCBkZXZ1ZWx2ZSB1biBub2RvIGVzdGlsYWRvIHBvciB0aXBvLlxuICogTGFzIHRhcmVhcyB1c2FuIGA8YT5gIGNvbW8gbG9zIGVubGFjZXMgZGUgdGFyZWEgZGVsIGFnZW50ZSAoYC5oYXMtdGFzay1saW5rc2ApLlxuICovXG5leHBvcnQgY29uc3QgcmVuZGVyTWVudGlvbkxpbmsgPSAoaHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaGlsZHJlbjogUmVhY3ROb2RlKTogUmVhY3ROb2RlIHwgbnVsbCA9PiB7XG4gIGlmICghaHJlZiB8fCAhaHJlZi5zdGFydHNXaXRoKE1BSUFfTUVOVElPTl9QUk9UT0NPTCkpIHJldHVybiBudWxsXG4gIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHBhcnNlTWVudGlvblByb3RvY29sSHJlZihocmVmKVxuICBjb25zdCBsYWJlbCA9IG1lbnRpb25DaGlsZHJlblRvTGFiZWwoY2hpbGRyZW4pXG4gIGNvbnN0IGlzVGFzayA9IHR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpY29uU2l6ZSA9IGlzVGFzayA/IDE2IDogMTRcbiAgY29uc3QgdGFza1VybCA9IGAvdGFza3MvJHtpZH0vZGV0YWlsYFxuXG4gIGNvbnN0IGhhbmRsZVRhc2tDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVRhc2tLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKGUua2V5ICE9PSAnRW50ZXInICYmIGUua2V5ICE9PSAnICcpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBpZiAoaXNUYXNrKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTQ1Rhc2tMaW5rXG4gICAgICAgIGhyZWY9e3Rhc2tVcmx9XG4gICAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVUYXNrQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlVGFza0tleURvd259XG4gICAgICA+XG4gICAgICAgIHtsYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICBjb25zdCBpc1Byb2plY3QgPSB0eXBlID09PSAncHJvamVjdCdcbiAgY29uc3QgcHJvamVjdFVybCA9IGlzUHJvamVjdCA/IGAvcHJvamVjdHMvJHtpZH0vZGFzaGJvYXJkYCA6IG51bGxcbiAgY29uc3Qgc2hvd0ljb24gPSAhaXNQcm9qZWN0XG4gIGNvbnN0IHsgZmlyc3RXb3JkLCByZXN0IH0gPSBzcGxpdExhYmVsRmlyc3RXb3JkKGxhYmVsKVxuXG4gIGNvbnN0IGhhbmRsZVByb2plY3RDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICBpZiAoIXByb2plY3RVcmwpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB3aW5kb3cub3Blbihwcm9qZWN0VXJsLCAnX2JsYW5rJylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDSW5saW5lTWVudGlvblxuICAgICAgJHR5cGU9e3R5cGV9XG4gICAgICAkaXNDbGlja2FibGU9e2lzUHJvamVjdH1cbiAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICBkYXRhLW1lbnRpb24tdHlwZT17dHlwZX1cbiAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICBvbkNsaWNrPXtpc1Byb2plY3QgPyBoYW5kbGVQcm9qZWN0Q2xpY2sgOiB1bmRlZmluZWR9XG4gICAgICByb2xlPXtpc1Byb2plY3QgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZH1cbiAgICAgIHRhYkluZGV4PXtpc1Byb2plY3QgPyAwIDogdW5kZWZpbmVkfVxuICAgID5cbiAgICAgIHtzaG93SWNvbiA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uSWNvblJvdz5cbiAgICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25JY29uICR0YXNrPXtpc1Rhc2t9PlxuICAgICAgICAgICAgICB7Z2V0Q29udGV4dE1lbnRpb25JY29uKHR5cGUsIE1FTlRJT05fQ0hJUF9DT0xPUlNbdHlwZV0uZmcsIGlkLCBpY29uU2l6ZSl9XG4gICAgICAgICAgICA8L1NDSW5saW5lTWVudGlvbkljb24+XG4gICAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uV29yZD57Zmlyc3RXb3JkfTwvU0NJbmxpbmVNZW50aW9uV29yZD5cbiAgICAgICAgICA8L1NDSW5saW5lTWVudGlvbkljb25Sb3c+XG4gICAgICAgICAge3Jlc3QgPyA8U0NJbmxpbmVNZW50aW9uUmVzdD57cmVzdH08L1NDSW5saW5lTWVudGlvblJlc3Q+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIHshc2hvd0ljb24gPyBsYWJlbCA6IG51bGx9XG4gICAgPC9TQ0lubGluZU1lbnRpb24+XG4gIClcbn1cblxuLyoqIFF1aXRhIGxvcyBtYXJrZXJzIGRlbCB0ZXh0bywgZGVqYW5kbyBzb2xvIGBsYWJlbGAuIMOadGlsIHBhcmEgZmFsbGJhY2sgcGxhbm8uICovXG5leHBvcnQgY29uc3Qgc3RyaXBNZW50aW9uTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIF90eXBlLCBfaWQsIGxhYmVsKSA9PiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKFN0cmluZyhsYWJlbCkpKVxuXG4vKipcbiAqIFTDrXR1bG9zIGRlIGNvbnZlcnNhY2nDs24gKHAuIGVqLiBgbGFzdF9xdWVzdGlvbmAgZGVyaXZhZG8gZGVsIHByaW1lciBtZW5zYWplKSBwdWVkZW5cbiAqIGluY2x1aXIgZWwgdGV4dG8gc2VyaWFsaXphZG8gYFtbbWVudGlvbjp0eXBlOmlkfGxhYmVsXV1gLiBQYXJhIHNpZGViYXIgeSBsaXN0YWRvcyxcbiAqIHJlZW1wbGF6YSBjYWRhIGJsb3F1ZSBwb3IgYGxhYmVsYCBlbiB0ZXh0byBwbGFubywgc2luIGVsIG1hcmNhZG9yIGNydWRvLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zID0gKHRleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xuICBpZiAodGV4dCA9PSBudWxsIHx8IHRleHQgPT09ICcnKSByZXR1cm4gdGV4dCA/PyAnJ1xuICBjb25zdCB3aXRob3V0TWVudGlvbnMgPSB0ZXh0LnJlcGxhY2UoTUVOVElPTl9NQVJLRVJfUkVHRVgsIChfbSwgX3R5cGUsIF9pZCwgbGFiZWwpID0+XG4gICAgbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcobGFiZWwpLnRyaW0oKSlcbiAgKVxuICBjb25zdCBzbGFzaFJlZ2V4ID0gbmV3IFJlZ0V4cChTTEFTSF9DT01NQU5EX01BUktFUl9SRUdFWC5zb3VyY2UsICdnJylcbiAgY29uc3Qgd2l0aG91dFNsYXNoID0gd2l0aG91dE1lbnRpb25zLnJlcGxhY2Uoc2xhc2hSZWdleCwgKF9tLCBfaWQsIGxhYmVsKSA9PiBgLyR7U3RyaW5nKGxhYmVsKS50cmltKCl9YClcbiAgY29uc3Qgd2l0aG91dEluY29tcGxldGVTbGFzaCA9IHdpdGhvdXRTbGFzaC5yZXBsYWNlKFxuICAgIElOQ09NUExFVEVfU0xBU0hfTUFSS0VSX1JFR0VYLFxuICAgIChfbSwgbGFiZWwpID0+IGAvJHtTdHJpbmcobGFiZWwpLnRyaW0oKX1gXG4gIClcbiAgcmV0dXJuIHdpdGhvdXRJbmNvbXBsZXRlU2xhc2gucmVwbGFjZShJTkNPTVBMRVRFX01FTlRJT05fTUFSS0VSX1JFR0VYLCAnJykudHJpbSgpXG59XG5cbi8qKiBHZW5lcmEgbGEgVVJMIGRlIG5hdmVnYWNpw7NuIHBhcmEgdW4gbWVudGlvbiBzZWfDum4gc3UgdGlwby4gKi9cbmNvbnN0IGdldE1lbnRpb25VcmwgPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIGlkOiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnY2xpZW50JzpcbiAgICAgIHJldHVybiBgL2NsaWVudHMvJHtpZH1gXG4gICAgY2FzZSAncHJvamVjdCc6XG4gICAgICByZXR1cm4gYC9wcm9qZWN0cy8ke2lkfS9kYXNoYm9hcmRgXG4gICAgY2FzZSAndGFzayc6XG4gICAgICByZXR1cm4gYC90YXNrcy8ke2lkfS9kZXRhaWxgXG4gICAgY2FzZSAndXNlcic6XG4gICAgICByZXR1cm4gbnVsbCAvLyBMb3MgdXNlcnMgbm8gc29uIGNsaWNrZWFibGVzXG4gICAgY2FzZSAnbWNwJzpcbiAgICAgIHJldHVybiBudWxsXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuY29uc3QgTWVudGlvbkNoaXAgPSAoeyB0eXBlLCBpZCwgbGFiZWwgfTogeyB0eXBlOiBDb250ZXh0RW50aXR5VHlwZTsgaWQ6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRMYWJlbCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobGFiZWwpXG4gIGNvbnN0IHVybCA9IGdldE1lbnRpb25VcmwodHlwZSwgaWQpXG4gIGNvbnN0IGlzQ2xpY2thYmxlID0gISF1cmxcbiAgY29uc3QgaXNUYXNrID0gdHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGlzUHJvamVjdCA9IHR5cGUgPT09ICdwcm9qZWN0J1xuICBjb25zdCBzaG93SWNvbiA9ICFpc1Byb2plY3RcbiAgY29uc3QgaWNvblNpemUgPSBpc1Rhc2sgPyAxNiA6IDE0XG4gIGNvbnN0IHsgZmlyc3RXb3JkLCByZXN0IH0gPSBzcGxpdExhYmVsRmlyc3RXb3JkKG5vcm1hbGl6ZWRMYWJlbClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNDbGlja2FibGUgfHwgIXVybCkgcmV0dXJuXG4gICAgaWYgKHR5cGUgPT09ICd0YXNrJykge1xuICAgICAgaWYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkpIHJldHVyblxuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBvcGVuVGFza0luQ29yUGFuZWwoaWQsICdkZXRhaWwnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpXG4gIH1cblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQgfCBIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFpc0NsaWNrYWJsZSB8fCB0eXBlICE9PSAndGFzaycpIHJldHVyblxuICAgIGlmIChlLmtleSAhPT0gJ0VudGVyJyAmJiBlLmtleSAhPT0gJyAnKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBvcGVuVGFza0luQ29yUGFuZWwoaWQsICdkZXRhaWwnKVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICd0YXNrJykge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NUYXNrTGlua1xuICAgICAgICBocmVmPXt1cmwgPz8gJyMnfVxuICAgICAgICBjbGFzc05hbWU9e0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVxuICAgICAgICBkYXRhLW1lbnRpb24tdHlwZT1cInRhc2tcIlxuICAgICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgPlxuICAgICAgICB7bm9ybWFsaXplZExhYmVsfVxuICAgICAgPC9TQ1Rhc2tMaW5rPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDSW5saW5lTWVudGlvblxuICAgICAgJHR5cGU9e3R5cGV9XG4gICAgICAkaXNDbGlja2FibGU9e2lzQ2xpY2thYmxlfVxuICAgICAgY2xhc3NOYW1lPXtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31cbiAgICAgIGRhdGEtbWVudGlvbi10eXBlPXt0eXBlfVxuICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgIG9uQ2xpY2s9e2lzQ2xpY2thYmxlID8gaGFuZGxlQ2xpY2sgOiB1bmRlZmluZWR9XG4gICAgICByb2xlPXtpc0NsaWNrYWJsZSA/ICdidXR0b24nIDogdW5kZWZpbmVkfVxuICAgICAgdGFiSW5kZXg9e2lzQ2xpY2thYmxlID8gMCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICB7c2hvd0ljb24gPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFNDSW5saW5lTWVudGlvbkljb25Sb3c+XG4gICAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uSWNvbiAkdGFzaz17aXNUYXNrfT5cbiAgICAgICAgICAgICAge2dldENvbnRleHRNZW50aW9uSWNvbih0eXBlLCBNRU5USU9OX0NISVBfQ09MT1JTW3R5cGVdLmZnLCBpZCwgaWNvblNpemUpfVxuICAgICAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uPlxuICAgICAgICAgICAgPFNDSW5saW5lTWVudGlvbldvcmQ+e2ZpcnN0V29yZH08L1NDSW5saW5lTWVudGlvbldvcmQ+XG4gICAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uUm93PlxuICAgICAgICAgIHtyZXN0ID8gPFNDSW5saW5lTWVudGlvblJlc3Q+e3Jlc3R9PC9TQ0lubGluZU1lbnRpb25SZXN0PiA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7IXNob3dJY29uID8gbm9ybWFsaXplZExhYmVsIDogbnVsbH1cbiAgICA8L1NDSW5saW5lTWVudGlvbj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgaGFzSW5saW5lTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRleHQuaW5jbHVkZXMoJ1tbbWVudGlvbjonKSB8fCB0ZXh0LmluY2x1ZGVzKCdbW3NsYXNoX2NvbW1hbmQ6Jylcbn1cblxudHlwZSBJbmxpbmVNYXJrZXIgPVxuICB8IHsga2luZDogJ21lbnRpb24nOyBpbmRleDogbnVtYmVyOyBsZW5ndGg6IG51bWJlcjsgdHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVxuICB8IHsga2luZDogJ3NsYXNoJzsgaW5kZXg6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVxuXG5jb25zdCBjb2xsZWN0SW5saW5lTWFya2VycyA9ICh0ZXh0OiBzdHJpbmcpOiBJbmxpbmVNYXJrZXJbXSA9PiB7XG4gIGNvbnN0IG1hcmtlcnM6IElubGluZU1hcmtlcltdID0gW11cblxuICBNRU5USU9OX01BUktFUl9SRUdFWC5sYXN0SW5kZXggPSAwXG4gIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gTUVOVElPTl9NQVJLRVJfUkVHRVguZXhlYyh0ZXh0KVxuICB3aGlsZSAobSkge1xuICAgIGNvbnN0IFssIHJhd1R5cGUsIGlkLCBsYWJlbF0gPSBtXG4gICAgY29uc3QgdHlwZSA9IEFMTE9XRURfVFlQRVMuaW5jbHVkZXMocmF3VHlwZSBhcyBDb250ZXh0RW50aXR5VHlwZSkgPyAocmF3VHlwZSBhcyBDb250ZXh0RW50aXR5VHlwZSkgOiAndXNlcidcbiAgICBtYXJrZXJzLnB1c2goeyBraW5kOiAnbWVudGlvbicsIGluZGV4OiBtLmluZGV4LCBsZW5ndGg6IG1bMF0ubGVuZ3RoLCB0eXBlLCBpZCwgbGFiZWwgfSlcbiAgICBtID0gTUVOVElPTl9NQVJLRVJfUkVHRVguZXhlYyh0ZXh0KVxuICB9XG5cbiAgY29uc3Qgc2xhc2hSZWdleCA9IG5ldyBSZWdFeHAoU0xBU0hfQ09NTUFORF9NQVJLRVJfUkVHRVguc291cmNlLCAnZycpXG4gIGxldCBzOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gc2xhc2hSZWdleC5leGVjKHRleHQpXG4gIHdoaWxlIChzKSB7XG4gICAgbWFya2Vycy5wdXNoKHsga2luZDogJ3NsYXNoJywgaW5kZXg6IHMuaW5kZXgsIGxlbmd0aDogc1swXS5sZW5ndGgsIGlkOiBzWzFdLCBsYWJlbDogc1syXSB9KVxuICAgIHMgPSBzbGFzaFJlZ2V4LmV4ZWModGV4dClcbiAgfVxuXG4gIHJldHVybiBtYXJrZXJzLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KVxufVxuXG5leHBvcnQgY29uc3QgcmVuZGVyVGV4dFdpdGhNZW50aW9ucyA9ICh0ZXh0OiBzdHJpbmcpOiBBcnJheTxzdHJpbmcgfCBSZWFjdEVsZW1lbnQ+ID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gW3RleHRdXG4gIGNvbnN0IG1hcmtlcnMgPSBjb2xsZWN0SW5saW5lTWFya2Vycyh0ZXh0KVxuICBpZiAobWFya2Vycy5sZW5ndGggPT09IDApIHJldHVybiBbdGV4dF1cblxuICBjb25zdCBvdXQ6IEFycmF5PHN0cmluZyB8IFJlYWN0RWxlbWVudD4gPSBbXVxuICBsZXQgbGFzdElkeCA9IDBcbiAgbWFya2Vycy5mb3JFYWNoKG1hcmtlciA9PiB7XG4gICAgaWYgKG1hcmtlci5pbmRleCA+IGxhc3RJZHgpIG91dC5wdXNoKHRleHQuc2xpY2UobGFzdElkeCwgbWFya2VyLmluZGV4KSlcbiAgICBpZiAobWFya2VyLmtpbmQgPT09ICdtZW50aW9uJykge1xuICAgICAgb3V0LnB1c2goXG4gICAgICAgIDxNZW50aW9uQ2hpcFxuICAgICAgICAgIGtleT17YG1lbnRpb24tJHttYXJrZXIuaW5kZXh9LSR7bWFya2VyLnR5cGV9LSR7bWFya2VyLmlkfWB9XG4gICAgICAgICAgdHlwZT17bWFya2VyLnR5cGV9XG4gICAgICAgICAgaWQ9e21hcmtlci5pZH1cbiAgICAgICAgICBsYWJlbD17bWFya2VyLmxhYmVsfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQucHVzaCg8U2xhc2hDb21tYW5kQ2hpcCBrZXk9e2BzbGFzaC0ke21hcmtlci5pbmRleH0tJHttYXJrZXIuaWR9YH0gbGFiZWw9e21hcmtlci5sYWJlbH0gaW5saW5lPXtmYWxzZX0gLz4pXG4gICAgfVxuICAgIGxhc3RJZHggPSBtYXJrZXIuaW5kZXggKyBtYXJrZXIubGVuZ3RoXG4gIH0pXG4gIGlmIChsYXN0SWR4IDwgdGV4dC5sZW5ndGgpIG91dC5wdXNoKHRleHQuc2xpY2UobGFzdElkeCkpXG4gIHJldHVybiBvdXRcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU9BLE1BQU0sSUFBSUMsR0FBRyxRQUFRLG1CQUFtQjtBQUMvQyxTQUE0Q0MsMEJBQTBCLFFBQVEseUJBQXlCO0FBQ3ZHLFNBQ0VDLG1CQUFtQixFQUNuQkMsOEJBQThCLFFBQ3pCLGtFQUFrRTtBQUN6RSxTQUFTQyxnQkFBZ0IsUUFBUSxzQ0FBc0M7QUFDdkUsU0FBU0MsMEJBQTBCLFFBQVEsc0JBQXNCO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLGtCQUFrQjtBQUNuRCxTQUFTQyxVQUFVLFFBQVEsa0RBQWtEO0FBQzdFLFNBQVNDLHFCQUFxQixRQUFRLHVCQUF1QjtBQUM3RCxTQUFTQyw0QkFBNEIsUUFBUSx1QkFBdUI7QUFDcEUsU0FBU0Msa0JBQWtCLFFB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
397
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsIk1FTlRJT05fQ0hJUF9DT0xPUlMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJTbGFzaENvbW1hbmRDaGlwIiwiU0xBU0hfQ09NTUFORF9NQVJLRVJfUkVHRVgiLCJWSU9MRVRfSUFfQ09MT1JTIiwiU0NUYXNrTGluayIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJNRU5USU9OX01BUktFUl9SRUdFWCIsIk1BSUFfTUVOVElPTl9QUk9UT0NPTCIsIklOQ09NUExFVEVfTUVOVElPTl9NQVJLRVJfUkVHRVgiLCJJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCIsIkFMTE9XRURfVFlQRVMiLCJwYXJzZU1lbnRpb25Qcm90b2NvbEhyZWYiLCJocmVmIiwicmVzdCIsInNsaWNlIiwibGVuZ3RoIiwic2xhc2hJZHgiLCJpbmRleE9mIiwicmF3VHlwZSIsInJhd0lkIiwiaWQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJfdW51c2VkIiwidHlwZSIsImluY2x1ZGVzIiwic2VyaWFsaXplTWVudGlvbiIsIm1lbnRpb24iLCJjb25jYXQiLCJsYWJlbCIsInRyYW5zZm9ybU1lbnRpb25NYXJrZXJzIiwidGV4dCIsInJlcGxhY2UiLCJfbSIsInNhZmVMYWJlbCIsIlN0cmluZyIsImVuY29kZVVSSUNvbXBvbmVudCIsIm1lbnRpb25DaGlsZHJlblRvTGFiZWwiLCJjaGlsZHJlbiIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsImMiLCJqb2luIiwic3BsaXRMYWJlbEZpcnN0V29yZCIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwiZmlyc3RXb3JkIiwiZmlyc3RXaGl0ZXNwYWNlSWR4Iiwic2VhcmNoIiwiSU5MSU5FX01FTlRJT05fSE9WRVJfQkciLCJwcm9qZWN0IiwiaW5saW5lTWVudGlvbkhvdmVyQ3NzIiwiaXNDbGlja2FibGUiLCJfSU5MSU5FX01FTlRJT05fSE9WRVIiLCJiZyIsIlNDSW5saW5lTWVudGlvbiIsInNwYW4iLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIl9yZWYiLCJfTUVOVElPTl9DSElQX0NPTE9SUyQiLCIkdHlwZSIsInVzZXIiLCJfcmVmMiIsIl9NRU5USU9OX0NISVBfQ09MT1JTJDIiLCJmZyIsIl9yZWYzIiwiJGlzQ2xpY2thYmxlIiwiX3JlZjQiLCJTQ0lubGluZU1lbnRpb25JY29uIiwiX3JlZjUiLCIkdGFzayIsIl9yZWY2IiwiU0NJbmxpbmVNZW50aW9uSWNvblJvdyIsIlNDSW5saW5lTWVudGlvbldvcmQiLCJTQ0lubGluZU1lbnRpb25SZXN0IiwicmVuZGVyTWVudGlvbkxpbmsiLCJzdGFydHNXaXRoIiwiX3BhcnNlTWVudGlvblByb3RvY29sIiwiaXNUYXNrIiwiaWNvblNpemUiLCJ0YXNrVXJsIiwiaGFuZGxlVGFza0NsaWNrIiwiZSIsIm1ldGFLZXkiLCJjdHJsS2V5IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVUYXNrS2V5RG93biIsImtleSIsImNsYXNzTmFtZSIsIm9uQ2xpY2siLCJvbktleURvd24iLCJpc1Byb2plY3QiLCJwcm9qZWN0VXJsIiwic2hvd0ljb24iLCJfc3BsaXRMYWJlbEZpcnN0V29yZCIsImhhbmRsZVByb2plY3RDbGljayIsIndpbmRvdyIsIm9wZW4iLCJ1bmRlZmluZWQiLCJyb2xlIiwidGFiSW5kZXgiLCJzdHJpcE1lbnRpb25NYXJrZXJzIiwiX3R5cGUiLCJfaWQiLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJ3aXRob3V0TWVudGlvbnMiLCJzbGFzaFJlZ2V4IiwiUmVnRXhwIiwic291cmNlIiwid2l0aG91dFNsYXNoIiwid2l0aG91dEluY29tcGxldGVTbGFzaCIsImdldE1lbnRpb25VcmwiLCJNZW50aW9uQ2hpcCIsIl9yZWY3Iiwibm9ybWFsaXplZExhYmVsIiwidXJsIiwiX3NwbGl0TGFiZWxGaXJzdFdvcmQyIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVLZXlEb3duIiwiaGFzSW5saW5lTWFya2VycyIsImNvbGxlY3RJbmxpbmVNYXJrZXJzIiwibWFya2VycyIsImxhc3RJbmRleCIsIm0iLCJleGVjIiwiX20yIiwiX20zIiwiX3NsaWNlZFRvQXJyYXkiLCJwdXNoIiwia2luZCIsImluZGV4IiwicyIsInNvcnQiLCJhIiwiYiIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJvdXQiLCJsYXN0SWR4IiwiZm9yRWFjaCIsIm1hcmtlciIsImlubGluZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9yZW5kZXJDb250ZXh0TWVudGlvbnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWN0Tm9kZSwgUmVhY3RFbGVtZW50LCBNb3VzZUV2ZW50LCBLZXlib2FyZEV2ZW50IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgc3R5bGVkLCB7IGNzcyB9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uLCBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHtcbiAgTUVOVElPTl9DSElQX0NPTE9SUyxcbiAgTUVOVElPTl9DSElQX05PTl9UQVNLX0hPVkVSX0JHLFxufSBmcm9tICcuLi9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9Db250ZXh0TWVudGlvbkNoaXAuc3R5bGVzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kQ2hpcCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXRvbXMvU2xhc2hDb21tYW5kQ2hpcCdcbmltcG9ydCB7IFNMQVNIX0NPTU1BTkRfTUFSS0VSX1JFR0VYIH0gZnJvbSAnLi9zbGFzaENvbW1hbmRNYXJrZXInXG5pbXBvcnQgeyBWSU9MRVRfSUFfQ09MT1JTIH0gZnJvbSAnLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7IFNDVGFza0xpbmsgfSBmcm9tICcuLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9uZXdTdHlsZXMnXG5pbXBvcnQgeyBnZXRDb250ZXh0TWVudGlvbkljb24gfSBmcm9tICcuL2NvbnRleHRNZW50aW9uSWNvbnMnXG5pbXBvcnQgeyBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsIH0gZnJvbSAnLi9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi9vcGVuVGFza0luQ29yUGFuZWwnXG5cbi8qKlxuICogRm9ybWF0byBkZWwgbWFyY2Fkb3IgcXVlIHZpYWphIGVuIGVsIHRleHRvIGRlbCBtZW5zYWplOlxuICogICBbW21lbnRpb246PHR5cGU+OjxpZD58PGxhYmVsPl1dXG4gKlxuICogRWwgZWRpdG9yIGxvIGVtaXRlIGN1YW5kbyBzZXJpYWxpemEgZWwgY29udGVudGVkaXRhYmxlLCBlbCBiYWNrZW5kIGxvXG4gKiBwZXJzaXN0ZSB0YWwgY3VhbCB5IGFsIHJlbmRlcml6YXIgc2UgdHJhbnNmb3JtYSBlbiB1biBsaW5rIG1hcmtkb3duIGNvblxuICogdW4gcHJvdG9jb2xvIHByb3BpbyBxdWUgYEN1c3RvbUxpbmtgIGludGVyY2VwdGEgeSBkaWJ1amEgY29tbyBzcGFuXG4gKiBlc3RpbGFkby5cbiAqXG4gKiBQb3Igc2VwYXJhZG8sIGxhIG1ldGFkYXRhIGBjb250ZXh0X21lc3NhZ2VgIGxsZXZhIGxvcyB2YWxvcmVzIGxpbXBpb3NcbiAqIChpZCArIG5hbWUpIHBhcmEgcXVlIGVsIGJhY2tlbmQgcHVlZGEgaW50ZXJwcmV0YXIgbGFzIGVudGlkYWRlcyBzaW5cbiAqIHRlbmVyIHF1ZSBwYXJzZWFyIGVsIHRleHRvLlxuICovXG4vKipcbiAqIExhYmVsIHB1ZWRlIGNvbnRlbmVyIGBdYCAoZWo6IFwiW0VkdWNhdGVdQmxvZyBQb3N0IC4uLlwiKSwgcG9yIGVzb1xuICogc2UgY2FwdHVyYSBkZSBmb3JtYSBsYXp5IGhhc3RhIGVsIGNpZXJyZSByZWFsIGBdXWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOihjbGllbnR8cHJvamVjdHx0YXNrfHVzZXJ8bWNwfHNraWxsKTooW158XFxdXSspXFx8KFtcXHNcXFNdKj8pXFxdXFxdL2dcbmV4cG9ydCBjb25zdCBNQUlBX01FTlRJT05fUFJPVE9DT0wgPSAnbWFpYS1tZW50aW9uOi8vJ1xuY29uc3QgSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCA9IC9cXFtcXFttZW50aW9uOltcXHNcXFNdKiQvXG5jb25zdCBJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCA9IC9cXFtcXFtzbGFzaF9jb21tYW5kOltefFxcXV0rXFx8KFtcXHNcXFNdKikkL1xuXG5jb25zdCBBTExPV0VEX1RZUEVTOiBDb250ZXh0RW50aXR5VHlwZVtdID0gWydjbGllbnQnLCAncHJvamVjdCcsICd0YXNrJywgJ3VzZXInLCAnbWNwJywgJ3NraWxsJ11cblxuY29uc3QgcGFyc2VNZW50aW9uUHJvdG9jb2xIcmVmID0gKGhyZWY6IHN0cmluZyk6IHsgdHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGlkOiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IHJlc3QgPSBocmVmLnNsaWNlKE1BSUFfTUVOVElPTl9QUk9UT0NPTC5sZW5ndGgpXG4gIGNvbnN0IHNsYXNoSWR4ID0gcmVzdC5pbmRleE9mKCcvJylcbiAgY29uc3QgcmF3VHlwZSA9IHNsYXNoSWR4ID49IDAgPyByZXN0LnNsaWNlKDAsIHNsYXNoSWR4KSA6IHJlc3RcbiAgY29uc3QgcmF3SWQgPSBzbGFzaElkeCA+PSAwID8gcmVzdC5zbGljZShzbGFzaElkeCArIDEpIDogJydcbiAgbGV0IGlkID0gJydcbiAgdHJ5IHtcbiAgICBpZCA9IHJhd0lkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJhd0lkKSA6ICcnXG4gIH0gY2F0Y2gge1xuICAgIGlkID0gcmF3SWRcbiAgfVxuICBjb25zdCB0eXBlID0gQUxMT1dFRF9UWVBFUy5pbmNsdWRlcyhyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA/IChyYXdUeXBlIGFzIENvbnRleHRFbnRpdHlUeXBlKSA6ICd1c2VyJ1xuICByZXR1cm4geyB0eXBlLCBpZCB9XG59XG5cbi8qKiBHZW5lcmEgZWwgbWFyY2Fkb3IgcGFyYSB1biBtZW50aW9uIGRhZG8uIExvIHVzYSBlbCBlZGl0b3IgYWwgc2VyaWFsaXphci4gKi9cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVNZW50aW9uID0gKG1lbnRpb246IENvbnRleHRNZW50aW9uKTogc3RyaW5nID0+XG4gIGBbW21lbnRpb246JHttZW50aW9uLnR5cGV9OiR7bWVudGlvbi5pZH18JHttZW50aW9uLmxhYmVsfV1dYFxuXG4vKipcbiAqIENvbnZpZXJ0ZSBjYWRhIGBbW21lbnRpb246Li4uXV1gIGVuIHVuIGxpbmsgbWFya2Rvd24gY29uIHByb3RvY29sbyBwcm9waW9cbiAqIHBhcmEgcXVlIFN0cmVhbWRvd24gbG8gZW1pdGEgY29tbyBgPGE+YCB5IGBDdXN0b21MaW5rYCBsbyBpbnRlcmNlcHRlLlxuICovXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtTWVudGlvbk1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgaWYgKCF0ZXh0KSByZXR1cm4gdGV4dFxuICByZXR1cm4gdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIHR5cGUsIGlkLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IHNhZmVMYWJlbCA9IFN0cmluZyhsYWJlbCkucmVwbGFjZSgvW1xcXFxcXF1dL2csICdcXFxcJCYnKVxuICAgIHJldHVybiBgWyR7c2FmZUxhYmVsfV0oJHtNQUlBX01FTlRJT05fUFJPVE9DT0x9JHt0eXBlfS8ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoaWQpKX0pYFxuICB9KVxufVxuXG5jb25zdCBtZW50aW9uQ2hpbGRyZW5Ub0xhYmVsID0gKGNoaWxkcmVuOiBSZWFjdE5vZGUpOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnc3RyaW5nJykgcmV0dXJuIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoY2hpbGRyZW4pXG4gIGlmIChjaGlsZHJlbiA9PSBudWxsIHx8IGNoaWxkcmVuID09PSBmYWxzZSkgcmV0dXJuICcnXG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIHJldHVybiBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGNoaWxkcmVuLm1hcChjID0+ICh0eXBlb2YgYyA9PT0gJ3N0cmluZycgPyBjIDogJycpKS5qb2luKCcnKSlcbiAgfVxuICByZXR1cm4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcoY2hpbGRyZW4pKVxufVxuXG5jb25zdCBzcGxpdExhYmVsRmlyc3RXb3JkID0gKGxhYmVsOiBzdHJpbmcpOiB7IGZpcnN0V29yZDogc3RyaW5nOyByZXN0OiBzdHJpbmcgfSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGxhYmVsKS50cmltKClcbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4geyBmaXJzdFdvcmQ6ICcnLCByZXN0OiAnJyB9XG4gIGNvbnN0IGZpcnN0V2hpdGVzcGFjZUlkeCA9IG5vcm1hbGl6ZWQuc2VhcmNoKC9cXHMvKVxuICBpZiAoZmlyc3RXaGl0ZXNwYWNlSWR4IDwgMCkgcmV0dXJuIHsgZmlyc3RXb3JkOiBub3JtYWxpemVkLCByZXN0OiAnJyB9XG4gIHJldHVybiB7XG4gICAgZmlyc3RXb3JkOiBub3JtYWxpemVkLnNsaWNlKDAsIGZpcnN0V2hpdGVzcGFjZUlkeCksXG4gICAgcmVzdDogbm9ybWFsaXplZC5zbGljZShmaXJzdFdoaXRlc3BhY2VJZHgpLFxuICB9XG59XG5cbmNvbnN0IElOTElORV9NRU5USU9OX0hPVkVSX0JHOiBQYXJ0aWFsPFJlY29yZDxDb250ZXh0RW50aXR5VHlwZSwgc3RyaW5nPj4gPSB7XG4gIHByb2plY3Q6IFZJT0xFVF9JQV9DT0xPUlNbMTAwXSxcbn1cblxuY29uc3QgaW5saW5lTWVudGlvbkhvdmVyQ3NzID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpc0NsaWNrYWJsZT86IGJvb2xlYW4pID0+IHtcbiAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHJldHVybiBjc3NgYFxuICBjb25zdCBiZyA9IElOTElORV9NRU5USU9OX0hPVkVSX0JHW3R5cGVdID8/IE1FTlRJT05fQ0hJUF9OT05fVEFTS19IT1ZFUl9CR1xuICByZXR1cm4gY3NzYFxuICAgIGJhY2tncm91bmQ6ICR7Ymd9O1xuICAgIG9wYWNpdHk6ICR7aXNDbGlja2FibGUgPyAwLjk1IDogMX07XG4gIGBcbn1cblxuLyoqIFNwYW4gaW5saW5lIGVzdGlsYWRvIChtZW5jaW9uZXMgbm8tdGFzayBlbiBjaGF0KS4gKi9cbmNvbnN0IFNDSW5saW5lTWVudGlvbiA9IHN0eWxlZC5zcGFuPHsgJHR5cGU6IENvbnRleHRFbnRpdHlUeXBlOyAkaXNDbGlja2FibGU/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBpbmxpbmU7XG4gIHBhZGRpbmc6IDJweCA0cHg7XG4gIG1hcmdpbjogMCAxcHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWNvci10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAnV29yayBTYW5zJyk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gIGJhY2tncm91bmQ6ICR7KHsgJHR5cGUgfSkgPT4gKE1FTlRJT05fQ0hJUF9DT0xPUlNbJHR5cGVdID8/IE1FTlRJT05fQ0hJUF9DT0xPUlMudXNlcikuYmd9O1xuICBjb2xvcjogJHsoeyAkdHlwZSB9KSA9PiAoTUVOVElPTl9DSElQX0NPTE9SU1skdHlwZV0gPz8gTUVOVElPTl9DSElQX0NPTE9SUy51c2VyKS5mZ307XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG4gIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIGN1cnNvcjogJHsoeyAkaXNDbGlja2FibGUgfSkgPT4gKCRpc0NsaWNrYWJsZSA/ICdwb2ludGVyJyA6ICdkZWZhdWx0Jyl9O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgJjpob3ZlciB7XG4gICAgJHsoeyAkdHlwZSwgJGlzQ2xpY2thYmxlIH0pID0+IGlubGluZU1lbnRpb25Ib3ZlckNzcygkdHlwZSwgJGlzQ2xpY2thYmxlKX1cbiAgfVxuYFxuXG5jb25zdCBTQ0lubGluZU1lbnRpb25JY29uID0gc3R5bGVkLnNwYW48eyAkdGFzaz86IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gIHdpZHRoOiAkeyh7ICR0YXNrIH0pID0+ICgkdGFzayA/ICcxNnB4JyA6ICcxNHB4Jyl9O1xuICBoZWlnaHQ6ICR7KHsgJHRhc2sgfSkgPT4gKCR0YXNrID8gJzE2cHgnIDogJzE0cHgnKX07XG5gXG5cbmNvbnN0IFNDSW5saW5lTWVudGlvbkljb25Sb3cgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG1heC13aWR0aDogMTAwJTtcbmBcblxuY29uc3QgU0NJbmxpbmVNZW50aW9uV29yZCA9IHN0eWxlZC5zcGFuYFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuYFxuXG5jb25zdCBTQ0lubGluZU1lbnRpb25SZXN0ID0gc3R5bGVkLnNwYW5gXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5gXG5cbi8qKlxuICogU2kgZWwgaHJlZiBjb3JyZXNwb25kZSBhbCBwcm90b2NvbG8gZGUgbWVudGlvbiwgZGV2dWVsdmUgdW4gbm9kbyBlc3RpbGFkbyBwb3IgdGlwby5cbiAqIExhcyB0YXJlYXMgdXNhbiBgPGE+YCBjb21vIGxvcyBlbmxhY2VzIGRlIHRhcmVhIGRlbCBhZ2VudGUgKGAuaGFzLXRhc2stbGlua3NgKS5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlbmRlck1lbnRpb25MaW5rID0gKGhyZWY6IHN0cmluZyB8IHVuZGVmaW5lZCwgY2hpbGRyZW46IFJlYWN0Tm9kZSk6IFJlYWN0Tm9kZSB8IG51bGwgPT4ge1xuICBpZiAoIWhyZWYgfHwgIWhyZWYuc3RhcnRzV2l0aChNQUlBX01FTlRJT05fUFJPVE9DT0wpKSByZXR1cm4gbnVsbFxuICBjb25zdCB7IHR5cGUsIGlkIH0gPSBwYXJzZU1lbnRpb25Qcm90b2NvbEhyZWYoaHJlZilcbiAgY29uc3QgbGFiZWwgPSBtZW50aW9uQ2hpbGRyZW5Ub0xhYmVsKGNoaWxkcmVuKVxuICBjb25zdCBpc1Rhc2sgPSB0eXBlID09PSAndGFzaydcbiAgY29uc3QgaWNvblNpemUgPSBpc1Rhc2sgPyAxNiA6IDE0XG4gIGNvbnN0IHRhc2tVcmwgPSBgL3Rhc2tzLyR7aWR9L2RldGFpbGBcblxuICBjb25zdCBoYW5kbGVUYXNrQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICBpZiAoZS5tZXRhS2V5IHx8IGUuY3RybEtleSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIG9wZW5UYXNrSW5Db3JQYW5lbChpZCwgJ2RldGFpbCcpXG4gIH1cblxuICBjb25zdCBoYW5kbGVUYXNrS2V5RG93biA9IChlOiBLZXlib2FyZEV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgIGlmIChlLmtleSAhPT0gJ0VudGVyJyAmJiBlLmtleSAhPT0gJyAnKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBvcGVuVGFza0luQ29yUGFuZWwoaWQsICdkZXRhaWwnKVxuICB9XG5cbiAgaWYgKGlzVGFzaykge1xuICAgIHJldHVybiAoXG4gICAgICA8U0NUYXNrTGlua1xuICAgICAgICBocmVmPXt0YXNrVXJsfVxuICAgICAgICBjbGFzc05hbWU9e0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVxuICAgICAgICBkYXRhLW1lbnRpb24tdHlwZT17dHlwZX1cbiAgICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgICAgb25DbGljaz17aGFuZGxlVGFza0NsaWNrfVxuICAgICAgICBvbktleURvd249e2hhbmRsZVRhc2tLZXlEb3dufVxuICAgICAgPlxuICAgICAgICB7bGFiZWx9XG4gICAgICA8L1NDVGFza0xpbms+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaXNQcm9qZWN0ID0gdHlwZSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IHByb2plY3RVcmwgPSBpc1Byb2plY3QgPyBgL3Byb2plY3RzLyR7aWR9L2Rhc2hib2FyZGAgOiBudWxsXG4gIGNvbnN0IHNob3dJY29uID0gIWlzUHJvamVjdFxuICBjb25zdCB7IGZpcnN0V29yZCwgcmVzdCB9ID0gc3BsaXRMYWJlbEZpcnN0V29yZChsYWJlbClcblxuICBjb25zdCBoYW5kbGVQcm9qZWN0Q2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFwcm9qZWN0VXJsKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgd2luZG93Lm9wZW4ocHJvamVjdFVybCwgJ19ibGFuaycpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0lubGluZU1lbnRpb25cbiAgICAgICR0eXBlPXt0eXBlfVxuICAgICAgJGlzQ2xpY2thYmxlPXtpc1Byb2plY3R9XG4gICAgICBjbGFzc05hbWU9e0NPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTfVxuICAgICAgZGF0YS1tZW50aW9uLXR5cGU9e3R5cGV9XG4gICAgICBkYXRhLW1lbnRpb24tc3VyZmFjZT1cImNoYXRcIlxuICAgICAgb25DbGljaz17aXNQcm9qZWN0ID8gaGFuZGxlUHJvamVjdENsaWNrIDogdW5kZWZpbmVkfVxuICAgICAgcm9sZT17aXNQcm9qZWN0ID8gJ2J1dHRvbicgOiB1bmRlZmluZWR9XG4gICAgICB0YWJJbmRleD17aXNQcm9qZWN0ID8gMCA6IHVuZGVmaW5lZH1cbiAgICA+XG4gICAgICB7c2hvd0ljb24gPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPFNDSW5saW5lTWVudGlvbkljb25Sb3c+XG4gICAgICAgICAgICA8U0NJbmxpbmVNZW50aW9uSWNvbiAkdGFzaz17aXNUYXNrfT5cbiAgICAgICAgICAgICAge2dldENvbnRleHRNZW50aW9uSWNvbih0eXBlLCBNRU5USU9OX0NISVBfQ09MT1JTW3R5cGVdLmZnLCBpZCwgaWNvblNpemUpfVxuICAgICAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uPlxuICAgICAgICAgICAgPFNDSW5saW5lTWVudGlvbldvcmQ+e2ZpcnN0V29yZH08L1NDSW5saW5lTWVudGlvbldvcmQ+XG4gICAgICAgICAgPC9TQ0lubGluZU1lbnRpb25JY29uUm93PlxuICAgICAgICAgIHtyZXN0ID8gPFNDSW5saW5lTWVudGlvblJlc3Q+e3Jlc3R9PC9TQ0lubGluZU1lbnRpb25SZXN0PiA6IG51bGx9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IG51bGx9XG4gICAgICB7IXNob3dJY29uID8gbGFiZWwgOiBudWxsfVxuICAgIDwvU0NJbmxpbmVNZW50aW9uPlxuICApXG59XG5cbi8qKiBRdWl0YSBsb3MgbWFya2VycyBkZWwgdGV4dG8sIGRlamFuZG8gc29sbyBgbGFiZWxgLiDDmnRpbCBwYXJhIGZhbGxiYWNrIHBsYW5vLiAqL1xuZXhwb3J0IGNvbnN0IHN0cmlwTWVudGlvbk1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogc3RyaW5nID0+XG4gIHRleHQucmVwbGFjZShNRU5USU9OX01BUktFUl9SRUdFWCwgKF9tLCBfdHlwZSwgX2lkLCBsYWJlbCkgPT4gbm9ybWFsaXplQ29udGV4dE1lbnRpb25MYWJlbChTdHJpbmcobGFiZWwpKSlcblxuLyoqXG4gKiBUw610dWxvcyBkZSBjb252ZXJzYWNpw7NuIChwLiBlai4gYGxhc3RfcXVlc3Rpb25gIGRlcml2YWRvIGRlbCBwcmltZXIgbWVuc2FqZSkgcHVlZGVuXG4gKiBpbmNsdWlyIGVsIHRleHRvIHNlcmlhbGl6YWRvIGBbW21lbnRpb246dHlwZTppZHxsYWJlbF1dYC4gUGFyYSBzaWRlYmFyIHkgbGlzdGFkb3MsXG4gKiByZWVtcGxhemEgY2FkYSBibG9xdWUgcG9yIGBsYWJlbGAgZW4gdGV4dG8gcGxhbm8sIHNpbiBlbCBtYXJjYWRvciBjcnVkby5cbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyA9ICh0ZXh0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nID0+IHtcbiAgaWYgKHRleHQgPT0gbnVsbCB8fCB0ZXh0ID09PSAnJykgcmV0dXJuIHRleHQgPz8gJydcbiAgY29uc3Qgd2l0aG91dE1lbnRpb25zID0gdGV4dC5yZXBsYWNlKE1FTlRJT05fTUFSS0VSX1JFR0VYLCAoX20sIF90eXBlLCBfaWQsIGxhYmVsKSA9PlxuICAgIG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwoU3RyaW5nKGxhYmVsKS50cmltKCkpXG4gIClcbiAgY29uc3Qgc2xhc2hSZWdleCA9IG5ldyBSZWdFeHAoU0xBU0hfQ09NTUFORF9NQVJLRVJfUkVHRVguc291cmNlLCAnZycpXG4gIGNvbnN0IHdpdGhvdXRTbGFzaCA9IHdpdGhvdXRNZW50aW9ucy5yZXBsYWNlKHNsYXNoUmVnZXgsIChfbSwgX2lkLCBsYWJlbCkgPT4gYC8ke1N0cmluZyhsYWJlbCkudHJpbSgpfWApXG4gIGNvbnN0IHdpdGhvdXRJbmNvbXBsZXRlU2xhc2ggPSB3aXRob3V0U2xhc2gucmVwbGFjZShcbiAgICBJTkNPTVBMRVRFX1NMQVNIX01BUktFUl9SRUdFWCxcbiAgICAoX20sIGxhYmVsKSA9PiBgLyR7U3RyaW5nKGxhYmVsKS50cmltKCl9YFxuICApXG4gIHJldHVybiB3aXRob3V0SW5jb21wbGV0ZVNsYXNoLnJlcGxhY2UoSU5DT01QTEVURV9NRU5USU9OX01BUktFUl9SRUdFWCwgJycpLnRyaW0oKVxufVxuXG4vKiogR2VuZXJhIGxhIFVSTCBkZSBuYXZlZ2FjacOzbiBwYXJhIHVuIG1lbnRpb24gc2Vnw7puIHN1IHRpcG8uICovXG5jb25zdCBnZXRNZW50aW9uVXJsID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpZDogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2NsaWVudCc6XG4gICAgICByZXR1cm4gYC9jbGllbnRzLyR7aWR9YFxuICAgIGNhc2UgJ3Byb2plY3QnOlxuICAgICAgcmV0dXJuIGAvcHJvamVjdHMvJHtpZH0vZGFzaGJvYXJkYFxuICAgIGNhc2UgJ3Rhc2snOlxuICAgICAgcmV0dXJuIGAvdGFza3MvJHtpZH0vZGV0YWlsYFxuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgcmV0dXJuIG51bGwgLy8gTG9zIHVzZXJzIG5vIHNvbiBjbGlja2VhYmxlc1xuICAgIGNhc2UgJ21jcCc6XG4gICAgICByZXR1cm4gbnVsbFxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IE1lbnRpb25DaGlwID0gKHsgdHlwZSwgaWQsIGxhYmVsIH06IHsgdHlwZTogQ29udGV4dEVudGl0eVR5cGU7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBub3JtYWxpemVDb250ZXh0TWVudGlvbkxhYmVsKGxhYmVsKVxuICBjb25zdCB1cmwgPSBnZXRNZW50aW9uVXJsKHR5cGUsIGlkKVxuICBjb25zdCBpc0NsaWNrYWJsZSA9ICEhdXJsXG4gIGNvbnN0IGlzVGFzayA9IHR5cGUgPT09ICd0YXNrJ1xuICBjb25zdCBpc1Byb2plY3QgPSB0eXBlID09PSAncHJvamVjdCdcbiAgY29uc3Qgc2hvd0ljb24gPSAhaXNQcm9qZWN0XG4gIGNvbnN0IGljb25TaXplID0gaXNUYXNrID8gMTYgOiAxNFxuICBjb25zdCB7IGZpcnN0V29yZCwgcmVzdCB9ID0gc3BsaXRMYWJlbEZpcnN0V29yZChub3JtYWxpemVkTGFiZWwpXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudCB8IEhUTUxTcGFuRWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzQ2xpY2thYmxlIHx8ICF1cmwpIHJldHVyblxuICAgIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IChlOiBLZXlib2FyZEV2ZW50PEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTFNwYW5FbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNDbGlja2FibGUgfHwgdHlwZSAhPT0gJ3Rhc2snKSByZXR1cm5cbiAgICBpZiAoZS5rZXkgIT09ICdFbnRlcicgJiYgZS5rZXkgIT09ICcgJykgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgb3BlblRhc2tJbkNvclBhbmVsKGlkLCAnZGV0YWlsJylcbiAgfVxuXG4gIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFNDVGFza0xpbmtcbiAgICAgICAgaHJlZj17dXJsID8/ICcjJ31cbiAgICAgICAgY2xhc3NOYW1lPXtDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU31cbiAgICAgICAgZGF0YS1tZW50aW9uLXR5cGU9XCJ0YXNrXCJcbiAgICAgICAgZGF0YS1tZW50aW9uLXN1cmZhY2U9XCJjaGF0XCJcbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgID5cbiAgICAgICAge25vcm1hbGl6ZWRMYWJlbH1cbiAgICAgIDwvU0NUYXNrTGluaz5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0lubGluZU1lbnRpb25cbiAgICAgICR0eXBlPXt0eXBlfVxuICAgICAgJGlzQ2xpY2thYmxlPXtpc0NsaWNrYWJsZX1cbiAgICAgIGNsYXNzTmFtZT17Q09OVEVYVF9NRU5USU9OX0NISVBfQ0xBU1N9XG4gICAgICBkYXRhLW1lbnRpb24tdHlwZT17dHlwZX1cbiAgICAgIGRhdGEtbWVudGlvbi1zdXJmYWNlPVwiY2hhdFwiXG4gICAgICBvbkNsaWNrPXtpc0NsaWNrYWJsZSA/IGhhbmRsZUNsaWNrIDogdW5kZWZpbmVkfVxuICAgICAgcm9sZT17aXNDbGlja2FibGUgPyAnYnV0dG9uJyA6IHVuZGVmaW5lZH1cbiAgICAgIHRhYkluZGV4PXtpc0NsaWNrYWJsZSA/IDAgOiB1bmRlZmluZWR9XG4gICAgPlxuICAgICAge3Nob3dJY29uID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25JY29uUm93PlxuICAgICAgICAgICAgPFNDSW5saW5lTWVudGlvbkljb24gJHRhc2s9e2lzVGFza30+XG4gICAgICAgICAgICAgIHtnZXRDb250ZXh0TWVudGlvbkljb24odHlwZSwgTUVOVElPTl9DSElQX0NPTE9SU1t0eXBlXS5mZywgaWQsIGljb25TaXplKX1cbiAgICAgICAgICAgIDwvU0NJbmxpbmVNZW50aW9uSWNvbj5cbiAgICAgICAgICAgIDxTQ0lubGluZU1lbnRpb25Xb3JkPntmaXJzdFdvcmR9PC9TQ0lubGluZU1lbnRpb25Xb3JkPlxuICAgICAgICAgIDwvU0NJbmxpbmVNZW50aW9uSWNvblJvdz5cbiAgICAgICAgICB7cmVzdCA/IDxTQ0lubGluZU1lbnRpb25SZXN0PntyZXN0fTwvU0NJbmxpbmVNZW50aW9uUmVzdD4gOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgeyFzaG93SWNvbiA/IG5vcm1hbGl6ZWRMYWJlbCA6IG51bGx9XG4gICAgPC9TQ0lubGluZU1lbnRpb24+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IGhhc0lubGluZU1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGlmICghdGV4dCkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0ZXh0LmluY2x1ZGVzKCdbW21lbnRpb246JykgfHwgdGV4dC5pbmNsdWRlcygnW1tzbGFzaF9jb21tYW5kOicpXG59XG5cbnR5cGUgSW5saW5lTWFya2VyID1cbiAgfCB7IGtpbmQ6ICdtZW50aW9uJzsgaW5kZXg6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IHR5cGU6IENvbnRleHRFbnRpdHlUeXBlOyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6ICdzbGFzaCc7IGluZGV4OiBudW1iZXI7IGxlbmd0aDogbnVtYmVyOyBpZDogc3RyaW5nOyBsYWJlbDogc3RyaW5nIH1cblxuY29uc3QgY29sbGVjdElubGluZU1hcmtlcnMgPSAodGV4dDogc3RyaW5nKTogSW5saW5lTWFya2VyW10gPT4ge1xuICBjb25zdCBtYXJrZXJzOiBJbmxpbmVNYXJrZXJbXSA9IFtdXG5cbiAgTUVOVElPTl9NQVJLRVJfUkVHRVgubGFzdEluZGV4ID0gMFxuICBsZXQgbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IE1FTlRJT05fTUFSS0VSX1JFR0VYLmV4ZWModGV4dClcbiAgd2hpbGUgKG0pIHtcbiAgICBjb25zdCBbLCByYXdUeXBlLCBpZCwgbGFiZWxdID0gbVxuICAgIGNvbnN0IHR5cGUgPSBBTExPV0VEX1RZUEVTLmluY2x1ZGVzKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpID8gKHJhd1R5cGUgYXMgQ29udGV4dEVudGl0eVR5cGUpIDogJ3VzZXInXG4gICAgbWFya2Vycy5wdXNoKHsga2luZDogJ21lbnRpb24nLCBpbmRleDogbS5pbmRleCwgbGVuZ3RoOiBtWzBdLmxlbmd0aCwgdHlwZSwgaWQsIGxhYmVsIH0pXG4gICAgbSA9IE1FTlRJT05fTUFSS0VSX1JFR0VYLmV4ZWModGV4dClcbiAgfVxuXG4gIGNvbnN0IHNsYXNoUmVnZXggPSBuZXcgUmVnRXhwKFNMQVNIX0NPTU1BTkRfTUFSS0VSX1JFR0VYLnNvdXJjZSwgJ2cnKVxuICBsZXQgczogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IHNsYXNoUmVnZXguZXhlYyh0ZXh0KVxuICB3aGlsZSAocykge1xuICAgIG1hcmtlcnMucHVzaCh7IGtpbmQ6ICdzbGFzaCcsIGluZGV4OiBzLmluZGV4LCBsZW5ndGg6IHNbMF0ubGVuZ3RoLCBpZDogc1sxXSwgbGFiZWw6IHNbMl0gfSlcbiAgICBzID0gc2xhc2hSZWdleC5leGVjKHRleHQpXG4gIH1cblxuICByZXR1cm4gbWFya2Vycy5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleClcbn1cblxuZXhwb3J0IGNvbnN0IHJlbmRlclRleHRXaXRoTWVudGlvbnMgPSAodGV4dDogc3RyaW5nKTogQXJyYXk8c3RyaW5nIHwgUmVhY3RFbGVtZW50PiA9PiB7XG4gIGlmICghdGV4dCkgcmV0dXJuIFt0ZXh0XVxuICBjb25zdCBtYXJrZXJzID0gY29sbGVjdElubGluZU1hcmtlcnModGV4dClcbiAgaWYgKG1hcmtlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gW3RleHRdXG5cbiAgY29uc3Qgb3V0OiBBcnJheTxzdHJpbmcgfCBSZWFjdEVsZW1lbnQ+ID0gW11cbiAgbGV0IGxhc3RJZHggPSAwXG4gIG1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4ge1xuICAgIGlmIChtYXJrZXIuaW5kZXggPiBsYXN0SWR4KSBvdXQucHVzaCh0ZXh0LnNsaWNlKGxhc3RJZHgsIG1hcmtlci5pbmRleCkpXG4gICAgaWYgKG1hcmtlci5raW5kID09PSAnbWVudGlvbicpIHtcbiAgICAgIG91dC5wdXNoKFxuICAgICAgICA8TWVudGlvbkNoaXBcbiAgICAgICAgICBrZXk9e2BtZW50aW9uLSR7bWFya2VyLmluZGV4fS0ke21hcmtlci50eXBlfS0ke21hcmtlci5pZH1gfVxuICAgICAgICAgIHR5cGU9e21hcmtlci50eXBlfVxuICAgICAgICAgIGlkPXttYXJrZXIuaWR9XG4gICAgICAgICAgbGFiZWw9e21hcmtlci5sYWJlbH1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0LnB1c2goPFNsYXNoQ29tbWFuZENoaXAga2V5PXtgc2xhc2gtJHttYXJrZXIuaW5kZXh9LSR7bWFya2VyLmlkfWB9IGxhYmVsPXttYXJrZXIubGFiZWx9IGlubGluZT17ZmFsc2V9IC8+KVxuICAgIH1cbiAgICBsYXN0SWR4ID0gbWFya2VyLmluZGV4ICsgbWFya2VyLmxlbmd0aFxuICB9KVxuICBpZiAobGFzdElkeCA8IHRleHQubGVuZ3RoKSBvdXQucHVzaCh0ZXh0LnNsaWNlKGxhc3RJZHgpKVxuICByZXR1cm4gb3V0XG59XG4iXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsUUFBUSxtQkFBbUI7QUFDL0MsU0FBNENDLDBCQUEwQixRQUFRLHlCQUF5QjtBQUN2RyxTQUNFQyxtQkFBbUIsRUFDbkJDLDhCQUE4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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.66",
3
+ "version": "2.11.67-0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {