@projectcor/maia-components 2.11.39-2 → 2.11.40-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.
- package/lib/App.js +22 -11
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +8 -1
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +36 -0
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +181 -0
- package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +39 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +322 -0
- package/lib/components/atoms/ContextMentionChip/index.js +4 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +191 -0
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +6 -0
- package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +283 -0
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +114 -0
- package/lib/components/atoms/ContextMentionItem/index.js +2 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +142 -0
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +75 -0
- package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
- package/lib/components/atoms/EntitySelector/EntitySelector.js +15 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.js +238 -321
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +269 -0
- package/lib/components/atoms/MAIAInput/styles.js +75 -46
- package/lib/components/atoms/ModalProject/ModalProject.js +3 -2
- package/lib/components/atoms/ProjectSelector/ProjectSelector.js +5 -6
- package/lib/components/atoms/icons/NotionIcon.js +36 -0
- package/lib/components/atoms/icons/SubtaskIcon.js +36 -0
- package/lib/components/atoms/icons/index.js +2 -1
- package/lib/components/index.js +2 -1
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +8 -4
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +31 -3
- package/lib/components/molecules/ChatAIMessages/newStyles.js +5 -2
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +9 -71
- package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -4
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +68 -0
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
- package/lib/components/molecules/ContextMentionInput/index.js +2 -0
- package/lib/components/molecules/Sidebar/Sidebar.js +9 -5
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +6 -2
- package/lib/components/organisms/ChatAI/ChatAI.js +4 -36
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +5 -2
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +6 -3
- package/lib/constants/taskLinkIcon.js +6 -0
- package/lib/context/cor-user.js +1 -1
- package/lib/context/global-context.js +1 -4
- package/lib/dev/DevContextMentionInput.js +65 -0
- package/lib/dev/Providers.js +11 -6
- package/lib/hooks/useCaretPosition.js +35 -0
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +22 -24
- package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
- package/lib/hooks/useChatMessages/useChatMessages.js +30 -14
- package/lib/hooks/useContextMentions.js +270 -0
- package/lib/hooks/useEntitySearch.js +535 -0
- package/lib/hooks/useEvent.js +7 -2
- package/lib/hooks/useMentionAllowedTypes.js +103 -0
- package/lib/hooks/useMentionPopover.js +319 -0
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
- package/lib/hooks/useTaskPanel.js +3 -10
- package/lib/hooks/useTextOverflowEllipsisTooltip.js +35 -0
- package/lib/lang/br/index.js +24 -1
- package/lib/lang/en/index.js +24 -1
- package/lib/lang/es/index.js +24 -1
- package/lib/lang/fr/index.js +23 -1
- package/lib/services/maia/Chats/getChatMessages.js +29 -4
- package/lib/services/maia/Orchestrator/orchestrator.js +8 -11
- package/lib/services/maia/RecentProjects/getRecentProjects.js +12 -4
- package/lib/services/maia/RecentTasks/getRecentTasks.js +43 -0
- package/lib/services/maia/RecentTasks/index.js +6 -0
- package/lib/services/maia/RecentUsers/getRecentUsers.js +59 -0
- package/lib/services/maia/RecentUsers/index.js +6 -0
- package/lib/services/query/entitySearchQuery.js +16 -0
- package/lib/services/query/usersDirectoryQuery.js +19 -0
- package/lib/services/utils/mapChatMessages.js +12 -5
- package/lib/types/Chat.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/types/contextMention.js +37 -0
- package/lib/utils/contextMentionIcons.js +115 -0
- package/lib/utils/contextMentionLabel.js +4 -0
- package/lib/utils/contextMentionTypeLabel.js +17 -0
- package/lib/utils/maiaStreamdownRehypePlugins.js +27 -0
- package/lib/utils/openTaskInCorPanel.js +18 -0
- package/lib/utils/renderContextMentions.js +293 -0
- package/package.json +1 -1
|
@@ -111,7 +111,7 @@ export var SCApprovalActionsColumn = styled.div.withConfig({
|
|
|
111
111
|
export var SCCAIMessageWrapper = styled.div.withConfig({
|
|
112
112
|
displayName: "newStyles__SCCAIMessageWrapper",
|
|
113
113
|
componentId: "sc-1k23l8x-15"
|
|
114
|
-
})(["contain:layout style;min-width:0;max-width:100%;padding:", ";border-radius:8px;background-color:", ";display:flex;flex-direction:column;gap:16px;", " h1{font-size:24px;line-height:122%;font-weight:600;color:rgba(32,32,31,1);padding:6px 0 6px 0;}h2{font-family:Work Sans;font-weight:600;font-size:20px;line-height:125%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}h3{font-family:Work Sans;font-weight:600;font-size:18px;line-height:114.99999999999999%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}h4{font-family:Work Sans;font-weight:600;font-size:16px;line-height:114.99999999999999%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}h5{font-family:Work Sans;font-weight:600;font-size:16px;line-height:122%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}h6{font-family:Work Sans;font-weight:400;font-size:16px;line-height:122%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}p{line-height:140%;font-size:16px;font-weight:400;line-height:", ";color:", ";font-family:", ";letter-spacing:", ";margin-bottom:16px;&:last-child{margin-bottom:0;}}blockquote{margin:16px 0 !important;border-left:none;border-top:0.5px solid rgba(242,242,242,1);border-bottom:0.5px solid rgba(242,242,242,1);padding:16px 0 16px 12px;color:rgba(102,102,102,1);font-size:16px;line-height:140%;font-style:italic;p{padding-left:12px !important;margin:0 !important;border-left:1px solid rgba(217,217,217,1) !important;}}a{text-decoration:underline !important;font-size:16px;color:#337ab7 !important;}&.has-task-links a{text-decoration:none !important;color:#202020 !important;font-weight:600 !important;position:relative;padding-left:24px;&:hover{text-decoration:underline !important;}&::before{content:'';position:absolute;left:0;top:0;width:20px;height:20px;background-image:url(\"data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 18C11.125 18 12.125 17.4375 12.6875 16.5625C13.7188 16.7812 14.8438 16.4688 15.6562 15.6562C16.4375 14.875 16.75 13.75 16.5312 12.7188C17.4062 12.1562 18 11.1562 18 10C18 8.875 17.4062 7.875 16.5312 7.3125C16.75 6.28125 16.4375 5.15625 15.6562 4.34375C14.8438 3.5625 13.7188 3.25 12.6875 3.46875C12.125 2.59375 11.125 2 10 2C8.84375 2 7.84375 2.59375 7.28125 3.46875C6.25 3.25 5.125 3.5625 4.34375 4.34375C3.53125 5.15625 3.21875 6.28125 3.4375 7.3125C2.5625 7.875 2 8.875 2 10C2 11.1562 2.5625 12.1562 3.4375 12.7188C3.21875 13.75 3.53125 14.875 4.34375 15.6562C5.125 16.4688 6.25 16.7812 7.28125 16.5625C7.84375 17.4375 8.84375 18 10 18ZM8.0625 14.625C7.40625 14.9375 6.34375 15.5625 5.375 14.5938C4.375 13.5938 5.125 12.4688 5.375 11.9375C4.71875 11.6875 3.5 11.375 3.5 10C3.5 8.59375 4.8125 8.3125 5.375 8.09375C5.09375 7.46875 4.4375 6.375 5.40625 5.40625C6.40625 4.40625 7.53125 5.15625 8.0625 5.40625C8.3125 4.75 8.625 3.5 10 3.5C11.4062 3.5 11.6875 4.84375 11.9062 5.40625C12.5312 5.125 13.625 4.46875 14.5938 5.4375C15.5938 6.4375 14.8438 7.5625 14.5938 8.09375C15.25 8.34375 16.4688 8.65625 16.4688 10.0312C16.4688 11.4375 15.1562 11.7188 14.5938 11.9375C14.875 12.5625 15.5625 13.6562 14.5938 14.625C13.7188 15.5 12.8438 15.0625 11.9062 14.625C11.6562 15.2812 11.3438 16.5 10 16.5C8.5625 16.5 8.28125 15.1875 8.0625 14.625Z' fill='%
|
|
114
|
+
})(["contain:layout style;min-width:0;max-width:100%;padding:", ";border-radius:8px;background-color:", ";display:flex;flex-direction:column;gap:16px;", " h1{font-size:24px;line-height:122%;font-weight:600;color:rgba(32,32,31,1);padding:6px 0 6px 0;}h2{font-family:Work Sans;font-weight:600;font-size:20px;line-height:125%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}h3{font-family:Work Sans;font-weight:600;font-size:18px;line-height:114.99999999999999%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}h4{font-family:Work Sans;font-weight:600;font-size:16px;line-height:114.99999999999999%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}h5{font-family:Work Sans;font-weight:600;font-size:16px;line-height:122%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}h6{font-family:Work Sans;font-weight:400;font-size:16px;line-height:122%;color:rgba(32,32,31,1);padding:6px 0 8px 0;}p{line-height:140%;font-size:16px;font-weight:400;line-height:", ";color:", ";font-family:", ";letter-spacing:", ";margin-bottom:16px;&:last-child{margin-bottom:0;}}blockquote{margin:16px 0 !important;border-left:none;border-top:0.5px solid rgba(242,242,242,1);border-bottom:0.5px solid rgba(242,242,242,1);padding:16px 0 16px 12px;color:rgba(102,102,102,1);font-size:16px;line-height:140%;font-style:italic;p{padding-left:12px !important;margin:0 !important;border-left:1px solid rgba(217,217,217,1) !important;}}a{text-decoration:underline !important;font-size:16px;color:#337ab7 !important;}&.has-task-links a{text-decoration:none !important;color:#202020 !important;font-weight:600 !important;position:relative;display:inline !important;padding-left:24px;white-space:normal !important;overflow-wrap:break-word !important;word-break:break-word !important;&:hover{text-decoration:underline !important;}&::before{content:'';position:absolute;left:0;top:0;width:20px;height:20px;background-image:url(\"data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10 18C11.125 18 12.125 17.4375 12.6875 16.5625C13.7188 16.7812 14.8438 16.4688 15.6562 15.6562C16.4375 14.875 16.75 13.75 16.5312 12.7188C17.4062 12.1562 18 11.1562 18 10C18 8.875 17.4062 7.875 16.5312 7.3125C16.75 6.28125 16.4375 5.15625 15.6562 4.34375C14.8438 3.5625 13.7188 3.25 12.6875 3.46875C12.125 2.59375 11.125 2 10 2C8.84375 2 7.84375 2.59375 7.28125 3.46875C6.25 3.25 5.125 3.5625 4.34375 4.34375C3.53125 5.15625 3.21875 6.28125 3.4375 7.3125C2.5625 7.875 2 8.875 2 10C2 11.1562 2.5625 12.1562 3.4375 12.7188C3.21875 13.75 3.53125 14.875 4.34375 15.6562C5.125 16.4688 6.25 16.7812 7.28125 16.5625C7.84375 17.4375 8.84375 18 10 18ZM8.0625 14.625C7.40625 14.9375 6.34375 15.5625 5.375 14.5938C4.375 13.5938 5.125 12.4688 5.375 11.9375C4.71875 11.6875 3.5 11.375 3.5 10C3.5 8.59375 4.8125 8.3125 5.375 8.09375C5.09375 7.46875 4.4375 6.375 5.40625 5.40625C6.40625 4.40625 7.53125 5.15625 8.0625 5.40625C8.3125 4.75 8.625 3.5 10 3.5C11.4062 3.5 11.6875 4.84375 11.9062 5.40625C12.5312 5.125 13.625 4.46875 14.5938 5.4375C15.5938 6.4375 14.8438 7.5625 14.5938 8.09375C15.25 8.34375 16.4688 8.65625 16.4688 10.0312C16.4688 11.4375 15.1562 11.7188 14.5938 11.9375C14.875 12.5625 15.5625 13.6562 14.5938 14.625C13.7188 15.5 12.8438 15.0625 11.9062 14.625C11.6562 15.2812 11.3438 16.5 10 16.5C8.5625 16.5 8.28125 15.1875 8.0625 14.625Z' fill='%232D77BD'/%3E%3C/svg%3E\");background-size:contain;background-repeat:no-repeat;background-position:center;}}", " ul{list-style:inside !important;padding-left:15px !important;margin:0px 0 16px 0 !important;& > li{list-style:disc !important;margin-left:16px !important;margin-bottom:4px !important;color:rgba(32,32,31,1);font-size:16px;}}hr{margin:28px 0 !important;padding:0 !important;}ol{margin:0px 0 16px 0 !important;& > li{margin-bottom:4px !important;color:rgba(32,32,31,1);font-size:16px;p:last-child{margin-bottom:14px !important;}}}"], function (_ref8) {
|
|
115
115
|
var isCurrentUser = _ref8.isCurrentUser;
|
|
116
116
|
return isCurrentUser ? '12px' : '0px';
|
|
117
117
|
}, function (_ref9) {
|
|
@@ -135,10 +135,13 @@ export var SCCAIMessageWrapper = styled.div.withConfig({
|
|
|
135
135
|
}, function (_ref12) {
|
|
136
136
|
var isFrontendCancelled = _ref12.isFrontendCancelled;
|
|
137
137
|
return isFrontendCancelled ? '-0.21px' : 'normal';
|
|
138
|
+
}, function (_ref13) {
|
|
139
|
+
var isCurrentUser = _ref13.isCurrentUser;
|
|
140
|
+
return isCurrentUser && css(["&.has-task-links a{font-size:14px !important;line-height:20px !important;}&.has-task-links a::before{top:0;top:calc((1lh - 22px) / 2);}"]);
|
|
138
141
|
});
|
|
139
142
|
var fadeInUp = keyframes(["from{opacity:0;transform:translateX(-50%) translateY(10px);}to{opacity:1;transform:translateX(-50%) translateY(0);}"]);
|
|
140
143
|
export var ScrollToBottomButton = styled.button.withConfig({
|
|
141
144
|
displayName: "newStyles__ScrollToBottomButton",
|
|
142
145
|
componentId: "sc-1k23l8x-16"
|
|
143
146
|
})(["display:flex;width:40px;height:40px;justify-content:center;align-items:center;gap:10px;aspect-ratio:1/1;border-radius:21.5px;border:1px solid #d9d9d9;background:#fff;box-shadow:0 4px 4px 0 rgba(0,0,0,0.05);position:absolute;bottom:15px;left:50%;transform:translateX(-50%);cursor:pointer;z-index:10;animation:", " 0.3s ease;transition:background 0.3s ease;pointer-events:auto;&:hover{background:#f7f7f7;}"], fadeInUp);
|
|
144
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJrZXlmcmFtZXMiLCJCTFVFX0lBX0NPTE9SUyIsIkdMT0JBTF9DT0xPUlMiLCJNZXNzYWdlV3JhcHBlciIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiU0NNZXNzYWdlc091dGVyIiwiX3JlZiIsIiRzY3JvbGxPblBhcmVudCIsIlNDTWVzc2FnZXNTY3JvbGwiLCJTQ01lc3NhZ2VzSW5uZXIiLCJfcmVmMiIsIiRpc01hcmtldHBsYWNlR2xvYmFsIiwiX3JlZjMiLCJTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbiIsIlNDT3B0aW9uc0xpc3QiLCJTQ09wdGlvbkl0ZW0iLCJkYXJrIiwiX3JlZjQiLCIkaGFzU2VsZWN0aW9uIiwiX3JlZjUiLCIkZGltbWVkIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwic3BhbiIsIlNDQXNzaXN0YW50QXZhdGFyIiwiU0NUYXNrTGluayIsImEiLCJTQ01lc3NhZ2VJdGVtV3JhcHBlciIsIl9yZWY2IiwiJGlzQXNzaXN0YW50IiwiU0NNZXNzYWdlSXRlbUlubmVyIiwiU0NBdHRhY2htZW50c1JvdyIsIl9yZWY3IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiX3JlZjgiLCJpc0N1cnJlbnRVc2VyIiwiX3JlZjkiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwiX3JlZjAiLCJfcmVmMSIsIl9yZWYxMCIsIl9yZWYxMSIsIl9yZWYxMiIsImZhZGVJblVwIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJidXR0b24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTWVzc2FnZXMvbmV3U3R5bGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbmltcG9ydCBzdHlsZWQsIHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcbmltcG9ydCB7IEJMVUVfSUFfQ09MT1JTLCBHTE9CQUxfQ09MT1JTIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL2NvbmZpZydcblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMTZweDtcbmBcblxuLyoqIENvbnRlbmVkb3IgZXh0ZXJpb3IgZGVsIMOhcmVhIGRlIG1lbnNhamVzLiBDdWFuZG8gZXhwYW5kZWQsIG5vIGhhY2Ugc2Nyb2xsOyBlbCBzY3JvbGwgbG8gdGllbmUgU0NNZXNzYWdlc1Njcm9sbC4gKi9cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VzT3V0ZXIgPSBzdHlsZWQuZGl2PHsgJHNjcm9sbE9uUGFyZW50PzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1ncm93OiAxO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAwO1xuICAkeyh7ICRzY3JvbGxPblBhcmVudCB9KSA9PiAoJHNjcm9sbE9uUGFyZW50ID8gJycgOiAnb3ZlcmZsb3c6IGF1dG87IG92ZXJzY3JvbGwtYmVoYXZpb3IteTogY29udGFpbjsnKX1cbmBcblxuLyoqIEN1YW5kbyBleHBhbmRlZCwgZXN0ZSBjb250ZW5lZG9yIGhhY2Ugc2Nyb2xsIHBhcmEgcXVlIGVsIGJvdMOzbiBcImlyIGFsIGZpbmFsXCIgcXVlZGUgZmlqbyBlbiBlbCDDoXJlYSBkZWwgY2hhdCAqL1xuZXhwb3J0IGNvbnN0IFNDTWVzc2FnZXNTY3JvbGwgPSBzdHlsZWQuZGl2YFxuICBmbGV4OiAxO1xuICBtaW4taGVpZ2h0OiAwO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGNvbnRhaW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYFxuXG4vKiogQ29udGVuZWRvciBpbnRlcmlvciBkZSBtZW5zYWplcyAobWF4V2lkdGggODY0cHgpLiBDdWFuZG8gZXhwYW5kZWQsIG92ZXJmbG93IHZpc2libGUgcGFyYSBxdWUgc2Nyb2xsIGxvIHRlbmdhIFNDTWVzc2FnZXNTY3JvbGwgKi9cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VzSW5uZXIgPSBzdHlsZWQuZGl2PHsgJHNjcm9sbE9uUGFyZW50PzogYm9vbGVhbjsgJGlzTWFya2V0cGxhY2VHbG9iYWw/OiBib29sZWFuIH0+YFxuICBmbGV4LWdyb3c6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMzZweDtcbiAgcGFkZGluZzogJHsoeyAkaXNNYXJrZXRwbGFjZUdsb2JhbCB9KSA9PiAoJGlzTWFya2V0cGxhY2VHbG9iYWwgPyAnMCAxNnB4IDE2cHg7JyA6ICcwIDE2cHg7Jyl9XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDg2NHB4O1xuICAkeyh7ICRzY3JvbGxPblBhcmVudCB9KSA9PlxuICAgICRzY3JvbGxPblBhcmVudCA/ICdvdmVyZmxvdzogdmlzaWJsZTsnIDogJ292ZXJmbG93LXk6IGF1dG87IG92ZXJzY3JvbGwtYmVoYXZpb3IteTogY29udGFpbjsnfVxuYFxuXG4vKiogQ29sdW1uYSBwYXJhIGxvYWRpbmcvbG9hZGluZyBtZXNzYWdlcyAqL1xuZXhwb3J0IGNvbnN0IFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbmBcblxuLyoqIExpc3RhIGRlIG9wY2lvbmVzIChNZXNzYWdlT3B0aW9ucykgKi9cbmV4cG9ydCBjb25zdCBTQ09wdGlvbnNMaXN0ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxMnB4O1xuYFxuXG5leHBvcnQgY29uc3QgU0NPcHRpb25JdGVtID0gc3R5bGVkLmRpdjx7ICRoYXNTZWxlY3Rpb24/OiBib29sZWFuOyAkZGltbWVkPzogYm9vbGVhbiB9PmBcbiAgY29sb3I6ICR7R0xPQkFMX0NPTE9SUy5kYXJrfTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTQwJTtcbiAgY3Vyc29yOiAkeyh7ICRoYXNTZWxlY3Rpb24gfSkgPT4gKCRoYXNTZWxlY3Rpb24gPyAnbm90LWFsbG93ZWQnIDogJ3BvaW50ZXInKX07XG4gIG9wYWNpdHk6ICR7KHsgJGRpbW1lZCB9KSA9PiAoJGRpbW1lZCA/IDAuNSA6IDEpfTtcbmBcblxuLyoqIEhlYWRlciBkZWwgbWVuc2FqZSBkZWwgYXNpc3RlbnRlIChhdmF0YXIgKyBub21icmUpICovXG5leHBvcnQgY29uc3QgU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG5gXG5cbmV4cG9ydCBjb25zdCBTQ0Fzc2lzdGFudE5hbWUgPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogcmdiYSgzMiwgMzIsIDMxLCAxKTtcbmBcblxuLyoqIFdyYXBwZXIgZGVsIGF2YXRhciBkZWwgYXNpc3RlbnRlICovXG5leHBvcnQgY29uc3QgU0NBc3Npc3RhbnRBdmF0YXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG5gXG5cbi8qKiBFbmxhY2UgZGUgdGFyZWEgKHRhc2sgbGluaykgKi9cbmV4cG9ydCBjb25zdCBTQ1Rhc2tMaW5rID0gc3R5bGVkLmFgXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjMzM3YWI3ICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbmBcblxuLyoqIFdyYXBwZXIgZGUgdW4gbWVuc2FqZSAocG9zaWNpw7NuLCBmbGV4LCBnYXApICovXG5leHBvcnQgY29uc3QgU0NNZXNzYWdlSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2PHsgJGlzQXNzaXN0YW50PzogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDhweDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgJHsoeyAkaXNBc3Npc3RhbnQgfSkgPT4gJGlzQXNzaXN0YW50ICYmICdqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0Oyd9XG5gXG5cbi8qKiBDb250ZW5lZG9yIGludGVyaW9yIGRlbCBtZW5zYWplIChhdHRhY2htZW50cyArIGFwcHJvdmFsICsgY29udGVudCkgKi9cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VJdGVtSW5uZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDhweDtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXgtd2lkdGg6IDEwMCU7XG5gXG5cbi8qKiBGaWxhIGRlIGF0dGFjaG1lbnRzIChmbGV4IGVuZCBwYXJhIHVzdWFyaW8sIGZsZXggc3RhcnQgcGFyYSBhc3Npc3RhbnQpICovXG5leHBvcnQgY29uc3QgU0NBdHRhY2htZW50c1JvdyA9IHN0eWxlZC5kaXY8eyAkaXNBc3Npc3RhbnQ/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6ICR7KHsgJGlzQXNzaXN0YW50IH0pID0+ICgkaXNBc3Npc3RhbnQgPyAnZmxleC1zdGFydCcgOiAnZmxleC1lbmQnKX07XG4gIGdhcDogMTJweDtcbiAgZmxleC13cmFwOiB3cmFwO1xuYFxuXG4vKiogQ29sdW1uYSBkZSBhY2Npb25lcyBkZSBhcHByb3ZhbCAqL1xuZXhwb3J0IGNvbnN0IFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxMnB4O1xuYFxuXG4vKiogV3JhcHBlciBkZWwgY29udGVuaWRvIGRlbCBtZW5zYWplLiBjb250YWluIGxpbWl0YSByZXBhaW50IGR1cmFudGUgc3RyZWFtaW5nIGFsIMOhcmVhIGRlbCB0ZXh0by4gKi9cbmV4cG9ydCBjb25zdCBTQ0NBSU1lc3NhZ2VXcmFwcGVyID0gc3R5bGVkLmRpdjx7IGlzQ3VycmVudFVzZXI6IGJvb2xlYW47IGlzRnJvbnRlbmRDYW5jZWxsZWQ/OiBib29sZWFuIH0+YFxuICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG4gIG1pbi13aWR0aDogMDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IGlzQ3VycmVudFVzZXIgfSkgPT4gKGlzQ3VycmVudFVzZXIgPyAnMTJweCcgOiAnMHB4Jyl9O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgaXNDdXJyZW50VXNlciwgaXNGcm9udGVuZENhbmNlbGxlZCB9KSA9PiB7XG4gICAgaWYgKGlzRnJvbnRlbmRDYW5jZWxsZWQpIHJldHVybiAndHJhbnNwYXJlbnQnXG4gICAgaWYgKGlzQ3VycmVudFVzZXIpIHJldHVybiBCTFVFX0lBX0NPTE9SU1s1MF1cbiAgICByZXR1cm4gJ3RyYW5zcGFyZW50J1xuICB9fTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxNnB4O1xuICAkeyh7IGlzQ3VycmVudFVzZXIgfSkgPT5cbiAgICBpc0N1cnJlbnRVc2VyICYmXG4gICAgY3NzYFxuICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgIG1heC13aWR0aDogNzUlO1xuICAgIGB9XG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBsaW5lLWhlaWdodDogMTIyJTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiByZ2JhKDMyLCAzMiwgMzEsIDEpO1xuICAgIHBhZGRpbmc6IDZweCAwIDZweCAwO1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtZmFtaWx5OiBXb3JrIFNhbnM7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEyNSU7XG4gICAgY29sb3I6IHJnYmEoMzIsIDMyLCAzMSwgMSk7XG4gICAgcGFkZGluZzogNnB4IDAgOHB4IDA7XG4gIH1cblxuICBoMyB7XG4gICAgZm9udC1mYW1pbHk6IFdvcmsgU2FucztcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBsaW5lLWhlaWdodDogMTE0Ljk5OTk5OTk5OTk5OTk5JTtcbiAgICBjb2xvcjogcmdiYSgzMiwgMzIsIDMxLCAxKTtcbiAgICBwYWRkaW5nOiA2cHggMCA4cHggMDtcbiAgfVxuXG4gIGg0IHtcbiAgICBmb250LWZhbWlseTogV29yayBTYW5zO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxMTQuOTk5OTk5OTk5OTk5OTklO1xuICAgIGNvbG9yOiByZ2JhKDMyLCAzMiwgMzEsIDEpO1xuICAgIHBhZGRpbmc6IDZweCAwIDhweCAwO1xuICB9XG5cbiAgaDUge1xuICAgIGZvbnQtZmFtaWx5OiBXb3JrIFNhbnM7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEyMiU7XG4gICAgY29sb3I6IHJnYmEoMzIsIDMyLCAzMSwgMSk7XG4gICAgcGFkZGluZzogNnB4IDAgOHB4IDA7XG4gIH1cblxuICBoNiB7XG4gICAgZm9udC1mYW1pbHk6IFdvcmsgU2FucztcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTIyJTtcbiAgICBjb2xvcjogcmdiYSgzMiwgMzIsIDMxLCAxKTtcbiAgICBwYWRkaW5nOiA2cHggMCA4cHggMDtcbiAgfVxuXG4gIHAge1xuICAgIGxpbmUtaGVpZ2h0OiAxNDAlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAkeyh7IGlzQ3VycmVudFVzZXIgfSkgPT4gKGlzQ3VycmVudFVzZXIgPyAnbm9ybWFsJyA6ICcxLjYnKX07XG4gICAgY29sb3I6ICR7KHsgaXNGcm9udGVuZENhbmNlbGxlZCB9KSA9PiAoaXNGcm9udGVuZENhbmNlbGxlZCA/ICcjOTk5JyA6ICdyZ2JhKDMyLCAzMiwgMzEsIDEpJyl9O1xuICAgIGZvbnQtZmFtaWx5OiAkeyh7IGlzRnJvbnRlbmRDYW5jZWxsZWQgfSkgPT4gKGlzRnJvbnRlbmRDYW5jZWxsZWQgPyAnXCJXb3JrIFNhbnNcIicgOiAnaW5oZXJpdCcpfTtcbiAgICBsZXR0ZXItc3BhY2luZzogJHsoeyBpc0Zyb250ZW5kQ2FuY2VsbGVkIH0pID0+IChpc0Zyb250ZW5kQ2FuY2VsbGVkID8gJy0wLjIxcHgnIDogJ25vcm1hbCcpfTtcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgIC8qIGNvbG9yOiAkeyh7IGlzQ3VycmVudFVzZXIgfSkgPT4gKGlzQ3VycmVudFVzZXIgPyAncmdiYSgzMiwgMzIsIDMxLCAxKScgOiAncmdiYSgxMDIsIDEwMiwgMTAyLCAxKScpfTsgKi9cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICBibG9ja3F1b3RlIHtcbiAgICBtYXJnaW46IDE2cHggMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgIGJvcmRlci10b3A6IDAuNXB4IHNvbGlkIHJnYmEoMjQyLCAyNDIsIDI0MiwgMSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMC41cHggc29saWQgcmdiYSgyNDIsIDI0MiwgMjQyLCAxKTtcbiAgICBwYWRkaW5nOiAxNnB4IDAgMTZweCAxMnB4O1xuICAgIGNvbG9yOiByZ2JhKDEwMiwgMTAyLCAxMDIsIDEpO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTQwJTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgcCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDEycHggIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDIxNywgMjE3LCAyMTcsIDEpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY29sb3I6ICMzMzdhYjcgIWltcG9ydGFudDtcbiAgfVxuXG4gICYuaGFzLXRhc2stbGlua3MgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICMyMDIwMjAgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctbGVmdDogMjRweDtcblxuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAwO1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHdpZHRoPScyMCcgaGVpZ2h0PScyMCcgdmlld0JveD0nMCAwIDIwIDIwJyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMTAgMThDMTEuMTI1IDE4IDEyLjEyNSAxNy40Mzc1IDEyLjY4NzUgMTYuNTYyNUMxMy43MTg4IDE2Ljc4MTIgMTQuODQzOCAxNi40Njg4IDE1LjY1NjIgMTUuNjU2MkMxNi40Mzc1IDE0Ljg3NSAxNi43NSAxMy43NSAxNi41MzEyIDEyLjcxODhDMTcuNDA2MiAxMi4xNTYyIDE4IDExLjE1NjIgMTggMTBDMTggOC44NzUgMTcuNDA2MiA3Ljg3NSAxNi41MzEyIDcuMzEyNUMxNi43NSA2LjI4MTI1IDE2LjQzNzUgNS4xNTYyNSAxNS42NTYyIDQuMzQzNzVDMTQuODQzOCAzLjU2MjUgMTMuNzE4OCAzLjI1IDEyLjY4NzUgMy40Njg3NUMxMi4xMjUgMi41OTM3NSAxMS4xMjUgMiAxMCAyQzguODQzNzUgMiA3Ljg0Mzc1IDIuNTkzNzUgNy4yODEyNSAzLjQ2ODc1QzYuMjUgMy4yNSA1LjEyNSAzLjU2MjUgNC4zNDM3NSA0LjM0Mzc1QzMuNTMxMjUgNS4xNTYyNSAzLjIxODc1IDYuMjgxMjUgMy40Mzc1IDcuMzEyNUMyLjU2MjUgNy44NzUgMiA4Ljg3NSAyIDEwQzIgMTEuMTU2MiAyLjU2MjUgMTIuMTU2MiAzLjQzNzUgMTIuNzE4OEMzLjIxODc1IDEzLjc1IDMuNTMxMjUgMTQuODc1IDQuMzQzNzUgMTUuNjU2MkM1LjEyNSAxNi40Njg4IDYuMjUgMTYuNzgxMiA3LjI4MTI1IDE2LjU2MjVDNy44NDM3NSAxNy40Mzc1IDguODQzNzUgMTggMTAgMThaTTguMDYyNSAxNC42MjVDNy40MDYyNSAxNC45Mzc1IDYuMzQzNzUgMTUuNTYyNSA1LjM3NSAxNC41OTM4QzQuMzc1IDEzLjU5MzggNS4xMjUgMTIuNDY4OCA1LjM3NSAxMS45Mzc1QzQuNzE4NzUgMTEuNjg3NSAzLjUgMTEuMzc1IDMuNSAxMEMzLjUgOC41OTM3NSA0LjgxMjUgOC4zMTI1IDUuMzc1IDguMDkzNzVDNS4wOTM3NSA3LjQ2ODc1IDQuNDM3NSA2LjM3NSA1LjQwNjI1IDUuNDA2MjVDNi40MDYyNSA0LjQwNjI1IDcuNTMxMjUgNS4xNTYyNSA4LjA2MjUgNS40MDYyNUM4LjMxMjUgNC43NSA4LjYyNSAzLjUgMTAgMy41QzExLjQwNjIgMy41IDExLjY4NzUgNC44NDM3NSAxMS45MDYyIDUuNDA2MjVDMTIuNTMxMiA1LjEyNSAxMy42MjUgNC40Njg3NSAxNC41OTM4IDUuNDM3NUMxNS41OTM4IDYuNDM3NSAxNC44NDM4IDcuNTYyNSAxNC41OTM4IDguMDkzNzVDMTUuMjUgOC4zNDM3NSAxNi40Njg4IDguNjU2MjUgMTYuNDY4OCAxMC4wMzEyQzE2LjQ2ODggMTEuNDM3NSAxNS4xNTYyIDExLjcxODggMTQuNTkzOCAxMS45Mzc1QzE0Ljg3NSAxMi41NjI1IDE1LjU2MjUgMTMuNjU2MiAxNC41OTM4IDE0LjYyNUMxMy43MTg4IDE1LjUgMTIuODQzOCAxNS4wNjI1IDExLjkwNjIgMTQuNjI1QzExLjY1NjIgMTUuMjgxMiAxMS4zNDM4IDE2LjUgMTAgMTYuNUM4LjU2MjUgMTYuNSA4LjI4MTI1IDE1LjE4NzUgOC4wNjI1IDE0LjYyNVonIGZpbGw9JyUyMzg3NDBCRicvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgdWwge1xuICAgIGxpc3Qtc3R5bGU6IGluc2lkZSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogMTVweCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbjogMHB4IDAgMTZweCAwICFpbXBvcnRhbnQ7XG4gICAgJiA+IGxpIHtcbiAgICAgIGxpc3Qtc3R5bGU6IGRpc2MgIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHggIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiByZ2JhKDMyLCAzMiwgMzEsIDEpO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cbiAgfVxuXG4gIGhyIHtcbiAgICBtYXJnaW46IDI4cHggMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIG9sIHtcbiAgICBtYXJnaW46IDBweCAwIDE2cHggMCAhaW1wb3J0YW50O1xuICAgICYgPiBsaSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHggIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiByZ2JhKDMyLCAzMiwgMzEsIDEpO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgcDpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTRweCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuYFxuXG5jb25zdCBmYWRlSW5VcCA9IGtleWZyYW1lc2BcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgxMHB4KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU2Nyb2xsVG9Cb3R0b21CdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxMHB4O1xuICBhc3BlY3QtcmF0aW86IDEvMTtcbiAgYm9yZGVyLXJhZGl1czogMjEuNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3gtc2hhZG93OiAwIDRweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMTVweDtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgei1pbmRleDogMTA7XG4gIGFuaW1hdGlvbjogJHtmYWRlSW5VcH0gMC4zcyBlYXNlO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3MgZWFzZTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7XG4gIH1cbmBcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsRUFBRUMsU0FBUyxRQUFRLG1CQUFtQjtBQUMxRCxTQUFTQyxjQUFjLEVBQUVDLGFBQWEsUUFBUSx3QkFBd0I7QUFFdEUsT0FBTyxJQUFNQyxjQUFjLEdBQUdMLE1BQU0sQ0FBQ00sR0FBRyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLHFCQUV2Qzs7QUFFRDtBQUNBLE9BQU8sSUFBTUMsZUFBZSxHQUFHVixNQUFNLENBQUNNLEdBQUcsQ0FBQUMsVUFBQTtFQUFBQyxXQUFBO0VBQUFDLFdBQUE7QUFBQSw0RkFNckMsVUFBQUUsSUFBQTtFQUFBLElBQUdDLGVBQWUsR0FBQUQsSUFBQSxDQUFmQyxlQUFlO0VBQUEsT0FBUUEsZUFBZSxHQUFHLEVBQUUsR0FBRyxpREFBaUQ7QUFBQSxDQUFDLENBQ3RHOztBQUVEO0FBQ0EsT0FBTyxJQUFNQyxnQkFBZ0IsR0FBR2IsTUFBTSxDQUFDTSxHQUFHLENBQUFDLFVBQUE7RUFBQUMsV0FBQTtFQUFBQyxXQUFBO0FBQUEsOEdBT3pDOztBQUVEO0FBQ0EsT0FBTyxJQUFNSyxlQUFlLEdBQUdkLE1B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
|
|
147
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJjc3MiLCJrZXlmcmFtZXMiLCJCTFVFX0lBX0NPTE9SUyIsIkdMT0JBTF9DT0xPUlMiLCJNZXNzYWdlV3JhcHBlciIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiU0NNZXNzYWdlc091dGVyIiwiX3JlZiIsIiRzY3JvbGxPblBhcmVudCIsIlNDTWVzc2FnZXNTY3JvbGwiLCJTQ01lc3NhZ2VzSW5uZXIiLCJfcmVmMiIsIiRpc01hcmtldHBsYWNlR2xvYmFsIiwiX3JlZjMiLCJTQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbiIsIlNDT3B0aW9uc0xpc3QiLCJTQ09wdGlvbkl0ZW0iLCJkYXJrIiwiX3JlZjQiLCIkaGFzU2VsZWN0aW9uIiwiX3JlZjUiLCIkZGltbWVkIiwiU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyIiwiU0NBc3Npc3RhbnROYW1lIiwic3BhbiIsIlNDQXNzaXN0YW50QXZhdGFyIiwiU0NUYXNrTGluayIsImEiLCJTQ01lc3NhZ2VJdGVtV3JhcHBlciIsIl9yZWY2IiwiJGlzQXNzaXN0YW50IiwiU0NNZXNzYWdlSXRlbUlubmVyIiwiU0NBdHRhY2htZW50c1JvdyIsIl9yZWY3IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiX3JlZjgiLCJpc0N1cnJlbnRVc2VyIiwiX3JlZjkiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwiX3JlZjAiLCJfcmVmMSIsIl9yZWYxMCIsIl9yZWYxMSIsIl9yZWYxMiIsIl9yZWYxMyIsImZhZGVJblVwIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJidXR0b24iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTWVzc2FnZXMvbmV3U3R5bGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbmltcG9ydCBzdHlsZWQsIHsgY3NzLCBrZXlmcmFtZXMgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcbmltcG9ydCB7IEJMVUVfSUFfQ09MT1JTLCBHTE9CQUxfQ09MT1JTIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL2NvbmZpZydcblxuZXhwb3J0IGNvbnN0IE1lc3NhZ2VXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgcGFkZGluZzogMTZweDtcbmBcblxuLyoqIENvbnRlbmVkb3IgZXh0ZXJpb3IgZGVsIMOhcmVhIGRlIG1lbnNhamVzLiBDdWFuZG8gZXhwYW5kZWQsIG5vIGhhY2Ugc2Nyb2xsOyBlbCBzY3JvbGwgbG8gdGllbmUgU0NNZXNzYWdlc1Njcm9sbC4gKi9cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VzT3V0ZXIgPSBzdHlsZWQuZGl2PHsgJHNjcm9sbE9uUGFyZW50PzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1ncm93OiAxO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAwO1xuICAkeyh7ICRzY3JvbGxPblBhcmVudCB9KSA9PiAoJHNjcm9sbE9uUGFyZW50ID8gJycgOiAnb3ZlcmZsb3c6IGF1dG87IG92ZXJzY3JvbGwtYmVoYXZpb3IteTogY29udGFpbjsnKX1cbmBcblxuLyoqIEN1YW5kbyBleHBhbmRlZCwgZXN0ZSBjb250ZW5lZG9yIGhhY2Ugc2Nyb2xsIHBhcmEgcXVlIGVsIGJvdMOzbiBcImlyIGFsIGZpbmFsXCIgcXVlZGUgZmlqbyBlbiBlbCDDoXJlYSBkZWwgY2hhdCAqL1xuZXhwb3J0IGNvbnN0IFNDTWVzc2FnZXNTY3JvbGwgPSBzdHlsZWQuZGl2YFxuICBmbGV4OiAxO1xuICBtaW4taGVpZ2h0OiAwO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvdmVyc2Nyb2xsLWJlaGF2aW9yLXk6IGNvbnRhaW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuYFxuXG4vKiogQ29udGVuZWRvciBpbnRlcmlvciBkZSBtZW5zYWplcyAobWF4V2lkdGggODY0cHgpLiBDdWFuZG8gZXhwYW5kZWQsIG92ZXJmbG93IHZpc2libGUgcGFyYSBxdWUgc2Nyb2xsIGxvIHRlbmdhIFNDTWVzc2FnZXNTY3JvbGwgKi9cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VzSW5uZXIgPSBzdHlsZWQuZGl2PHsgJHNjcm9sbE9uUGFyZW50PzogYm9vbGVhbjsgJGlzTWFya2V0cGxhY2VHbG9iYWw/OiBib29sZWFuIH0+YFxuICBmbGV4LWdyb3c6IDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMzZweDtcbiAgcGFkZGluZzogJHsoeyAkaXNNYXJrZXRwbGFjZUdsb2JhbCB9KSA9PiAoJGlzTWFya2V0cGxhY2VHbG9iYWwgPyAnMCAxNnB4IDE2cHg7JyA6ICcwIDE2cHg7Jyl9XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDg2NHB4O1xuICAkeyh7ICRzY3JvbGxPblBhcmVudCB9KSA9PlxuICAgICRzY3JvbGxPblBhcmVudCA/ICdvdmVyZmxvdzogdmlzaWJsZTsnIDogJ292ZXJmbG93LXk6IGF1dG87IG92ZXJzY3JvbGwtYmVoYXZpb3IteTogY29udGFpbjsnfVxuYFxuXG4vKiogQ29sdW1uYSBwYXJhIGxvYWRpbmcvbG9hZGluZyBtZXNzYWdlcyAqL1xuZXhwb3J0IGNvbnN0IFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbmBcblxuLyoqIExpc3RhIGRlIG9wY2lvbmVzIChNZXNzYWdlT3B0aW9ucykgKi9cbmV4cG9ydCBjb25zdCBTQ09wdGlvbnNMaXN0ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxMnB4O1xuYFxuXG5leHBvcnQgY29uc3QgU0NPcHRpb25JdGVtID0gc3R5bGVkLmRpdjx7ICRoYXNTZWxlY3Rpb24/OiBib29sZWFuOyAkZGltbWVkPzogYm9vbGVhbiB9PmBcbiAgY29sb3I6ICR7R0xPQkFMX0NPTE9SUy5kYXJrfTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTQwJTtcbiAgY3Vyc29yOiAkeyh7ICRoYXNTZWxlY3Rpb24gfSkgPT4gKCRoYXNTZWxlY3Rpb24gPyAnbm90LWFsbG93ZWQnIDogJ3BvaW50ZXInKX07XG4gIG9wYWNpdHk6ICR7KHsgJGRpbW1lZCB9KSA9PiAoJGRpbW1lZCA/IDAuNSA6IDEpfTtcbmBcblxuLyoqIEhlYWRlciBkZWwgbWVuc2FqZSBkZWwgYXNpc3RlbnRlIChhdmF0YXIgKyBub21icmUpICovXG5leHBvcnQgY29uc3QgU0NBc3Npc3RhbnRNZXNzYWdlSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG5gXG5cbmV4cG9ydCBjb25zdCBTQ0Fzc2lzdGFudE5hbWUgPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogcmdiYSgzMiwgMzIsIDMxLCAxKTtcbmBcblxuLyoqIFdyYXBwZXIgZGVsIGF2YXRhciBkZWwgYXNpc3RlbnRlICovXG5leHBvcnQgY29uc3QgU0NBc3Npc3RhbnRBdmF0YXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBmb250LXNpemU6IDE4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG5gXG5cbi8qKiBFbmxhY2UgZGUgdGFyZWEgKHRhc2sgbGluaykgKi9cbmV4cG9ydCBjb25zdCBTQ1Rhc2tMaW5rID0gc3R5bGVkLmFgXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjMzM3YWI3ICFpbXBvcnRhbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbmBcblxuLyoqIFdyYXBwZXIgZGUgdW4gbWVuc2FqZSAocG9zaWNpw7NuLCBmbGV4LCBnYXApICovXG5leHBvcnQgY29uc3QgU0NNZXNzYWdlSXRlbVdyYXBwZXIgPSBzdHlsZWQuZGl2PHsgJGlzQXNzaXN0YW50PzogYm9vbGVhbiB9PmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDhweDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgJHsoeyAkaXNBc3Npc3RhbnQgfSkgPT4gJGlzQXNzaXN0YW50ICYmICdqdXN0aWZ5LWNvbnRlbnQ6IHN0YXJ0Oyd9XG5gXG5cbi8qKiBDb250ZW5lZG9yIGludGVyaW9yIGRlbCBtZW5zYWplIChhdHRhY2htZW50cyArIGFwcHJvdmFsICsgY29udGVudCkgKi9cbmV4cG9ydCBjb25zdCBTQ01lc3NhZ2VJdGVtSW5uZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBnYXA6IDhweDtcbiAgbWluLXdpZHRoOiAwO1xuICBtYXgtd2lkdGg6IDEwMCU7XG5gXG5cbi8qKiBGaWxhIGRlIGF0dGFjaG1lbnRzIChmbGV4IGVuZCBwYXJhIHVzdWFyaW8sIGZsZXggc3RhcnQgcGFyYSBhc3Npc3RhbnQpICovXG5leHBvcnQgY29uc3QgU0NBdHRhY2htZW50c1JvdyA9IHN0eWxlZC5kaXY8eyAkaXNBc3Npc3RhbnQ/OiBib29sZWFuIH0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6ICR7KHsgJGlzQXNzaXN0YW50IH0pID0+ICgkaXNBc3Npc3RhbnQgPyAnZmxleC1zdGFydCcgOiAnZmxleC1lbmQnKX07XG4gIGdhcDogMTJweDtcbiAgZmxleC13cmFwOiB3cmFwO1xuYFxuXG4vKiogQ29sdW1uYSBkZSBhY2Npb25lcyBkZSBhcHByb3ZhbCAqL1xuZXhwb3J0IGNvbnN0IFNDQXBwcm92YWxBY3Rpb25zQ29sdW1uID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxMnB4O1xuYFxuXG4vKiogV3JhcHBlciBkZWwgY29udGVuaWRvIGRlbCBtZW5zYWplLiBjb250YWluIGxpbWl0YSByZXBhaW50IGR1cmFudGUgc3RyZWFtaW5nIGFsIMOhcmVhIGRlbCB0ZXh0by4gKi9cbmV4cG9ydCBjb25zdCBTQ0NBSU1lc3NhZ2VXcmFwcGVyID0gc3R5bGVkLmRpdjx7IGlzQ3VycmVudFVzZXI6IGJvb2xlYW47IGlzRnJvbnRlbmRDYW5jZWxsZWQ/OiBib29sZWFuIH0+YFxuICBjb250YWluOiBsYXlvdXQgc3R5bGU7XG4gIG1pbi13aWR0aDogMDtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IGlzQ3VycmVudFVzZXIgfSkgPT4gKGlzQ3VycmVudFVzZXIgPyAnMTJweCcgOiAnMHB4Jyl9O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgaXNDdXJyZW50VXNlciwgaXNGcm9udGVuZENhbmNlbGxlZCB9KSA9PiB7XG4gICAgaWYgKGlzRnJvbnRlbmRDYW5jZWxsZWQpIHJldHVybiAndHJhbnNwYXJlbnQnXG4gICAgaWYgKGlzQ3VycmVudFVzZXIpIHJldHVybiBCTFVFX0lBX0NPTE9SU1s1MF1cbiAgICByZXR1cm4gJ3RyYW5zcGFyZW50J1xuICB9fTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxNnB4O1xuICAkeyh7IGlzQ3VycmVudFVzZXIgfSkgPT5cbiAgICBpc0N1cnJlbnRVc2VyICYmXG4gICAgY3NzYFxuICAgICAgb3ZlcmZsb3ctd3JhcDogYW55d2hlcmU7XG4gICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDtcbiAgICAgIG1heC13aWR0aDogNzUlO1xuICAgIGB9XG5cbiAgaDEge1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBsaW5lLWhlaWdodDogMTIyJTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiByZ2JhKDMyLCAzMiwgMzEsIDEpO1xuICAgIHBhZGRpbmc6IDZweCAwIDZweCAwO1xuICB9XG5cbiAgaDIge1xuICAgIGZvbnQtZmFtaWx5OiBXb3JrIFNhbnM7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEyNSU7XG4gICAgY29sb3I6IHJnYmEoMzIsIDMyLCAzMSwgMSk7XG4gICAgcGFkZGluZzogNnB4IDAgOHB4IDA7XG4gIH1cblxuICBoMyB7XG4gICAgZm9udC1mYW1pbHk6IFdvcmsgU2FucztcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBsaW5lLWhlaWdodDogMTE0Ljk5OTk5OTk5OTk5OTk5JTtcbiAgICBjb2xvcjogcmdiYSgzMiwgMzIsIDMxLCAxKTtcbiAgICBwYWRkaW5nOiA2cHggMCA4cHggMDtcbiAgfVxuXG4gIGg0IHtcbiAgICBmb250LWZhbWlseTogV29yayBTYW5zO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxMTQuOTk5OTk5OTk5OTk5OTklO1xuICAgIGNvbG9yOiByZ2JhKDMyLCAzMiwgMzEsIDEpO1xuICAgIHBhZGRpbmc6IDZweCAwIDhweCAwO1xuICB9XG5cbiAgaDUge1xuICAgIGZvbnQtZmFtaWx5OiBXb3JrIFNhbnM7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEyMiU7XG4gICAgY29sb3I6IHJnYmEoMzIsIDMyLCAzMSwgMSk7XG4gICAgcGFkZGluZzogNnB4IDAgOHB4IDA7XG4gIH1cblxuICBoNiB7XG4gICAgZm9udC1mYW1pbHk6IFdvcmsgU2FucztcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTIyJTtcbiAgICBjb2xvcjogcmdiYSgzMiwgMzIsIDMxLCAxKTtcbiAgICBwYWRkaW5nOiA2cHggMCA4cHggMDtcbiAgfVxuXG4gIHAge1xuICAgIGxpbmUtaGVpZ2h0OiAxNDAlO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAkeyh7IGlzQ3VycmVudFVzZXIgfSkgPT4gKGlzQ3VycmVudFVzZXIgPyAnbm9ybWFsJyA6ICcxLjYnKX07XG4gICAgY29sb3I6ICR7KHsgaXNGcm9udGVuZENhbmNlbGxlZCB9KSA9PiAoaXNGcm9udGVuZENhbmNlbGxlZCA/ICcjOTk5JyA6ICdyZ2JhKDMyLCAzMiwgMzEsIDEpJyl9O1xuICAgIGZvbnQtZmFtaWx5OiAkeyh7IGlzRnJvbnRlbmRDYW5jZWxsZWQgfSkgPT4gKGlzRnJvbnRlbmRDYW5jZWxsZWQgPyAnXCJXb3JrIFNhbnNcIicgOiAnaW5oZXJpdCcpfTtcbiAgICBsZXR0ZXItc3BhY2luZzogJHsoeyBpc0Zyb250ZW5kQ2FuY2VsbGVkIH0pID0+IChpc0Zyb250ZW5kQ2FuY2VsbGVkID8gJy0wLjIxcHgnIDogJ25vcm1hbCcpfTtcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgIC8qIGNvbG9yOiAkeyh7IGlzQ3VycmVudFVzZXIgfSkgPT4gKGlzQ3VycmVudFVzZXIgPyAncmdiYSgzMiwgMzIsIDMxLCAxKScgOiAncmdiYSgxMDIsIDEwMiwgMTAyLCAxKScpfTsgKi9cbiAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG4gIH1cblxuICBibG9ja3F1b3RlIHtcbiAgICBtYXJnaW46IDE2cHggMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1sZWZ0OiBub25lO1xuICAgIGJvcmRlci10b3A6IDAuNXB4IHNvbGlkIHJnYmEoMjQyLCAyNDIsIDI0MiwgMSk7XG4gICAgYm9yZGVyLWJvdHRvbTogMC41cHggc29saWQgcmdiYSgyNDIsIDI0MiwgMjQyLCAxKTtcbiAgICBwYWRkaW5nOiAxNnB4IDAgMTZweCAxMnB4O1xuICAgIGNvbG9yOiByZ2JhKDEwMiwgMTAyLCAxMDIsIDEpO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMTQwJTtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgcCB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDEycHggIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDIxNywgMjE3LCAyMTcsIDEpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY29sb3I6ICMzMzdhYjcgIWltcG9ydGFudDtcbiAgfVxuXG4gICYuaGFzLXRhc2stbGlua3MgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICMyMDIwMjAgIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogMjRweDtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZCAhaW1wb3J0YW50O1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQgIWltcG9ydGFudDtcblxuICAgICY6aG92ZXIge1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgdG9wOiAwO1xuICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICBoZWlnaHQ6IDIwcHg7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHdpZHRoPScyMCcgaGVpZ2h0PScyMCcgdmlld0JveD0nMCAwIDIwIDIwJyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBkPSdNMTAgMThDMTEuMTI1IDE4IDEyLjEyNSAxNy40Mzc1IDEyLjY4NzUgMTYuNTYyNUMxMy43MTg4IDE2Ljc4MTIgMTQuODQzOCAxNi40Njg4IDE1LjY1NjIgMTUuNjU2MkMxNi40Mzc1IDE0Ljg3NSAxNi43NSAxMy43NSAxNi41MzEyIDEyLjcxODhDMTcuNDA2MiAxMi4xNTYyIDE4IDExLjE1NjIgMTggMTBDMTggOC44NzUgMTcuNDA2MiA3Ljg3NSAxNi41MzEyIDcuMzEyNUMxNi43NSA2LjI4MTI1IDE2LjQzNzUgNS4xNTYyNSAxNS42NTYyIDQuMzQzNzVDMTQuODQzOCAzLjU2MjUgMTMuNzE4OCAzLjI1IDEyLjY4NzUgMy40Njg3NUMxMi4xMjUgMi41OTM3NSAxMS4xMjUgMiAxMCAyQzguODQzNzUgMiA3Ljg0Mzc1IDIuNTkzNzUgNy4yODEyNSAzLjQ2ODc1QzYuMjUgMy4yNSA1LjEyNSAzLjU2MjUgNC4zNDM3NSA0LjM0Mzc1QzMuNTMxMjUgNS4xNTYyNSAzLjIxODc1IDYuMjgxMjUgMy40Mzc1IDcuMzEyNUMyLjU2MjUgNy44NzUgMiA4Ljg3NSAyIDEwQzIgMTEuMTU2MiAyLjU2MjUgMTIuMTU2MiAzLjQzNzUgMTIuNzE4OEMzLjIxODc1IDEzLjc1IDMuNTMxMjUgMTQuODc1IDQuMzQzNzUgMTUuNjU2MkM1LjEyNSAxNi40Njg4IDYuMjUgMTYuNzgxMiA3LjI4MTI1IDE2LjU2MjVDNy44NDM3NSAxNy40Mzc1IDguODQzNzUgMTggMTAgMThaTTguMDYyNSAxNC42MjVDNy40MDYyNSAxNC45Mzc1IDYuMzQzNzUgMTUuNTYyNSA1LjM3NSAxNC41OTM4QzQuMzc1IDEzLjU5MzggNS4xMjUgMTIuNDY4OCA1LjM3NSAxMS45Mzc1QzQuNzE4NzUgMTEuNjg3NSAzLjUgMTEuMzc1IDMuNSAxMEMzLjUgOC41OTM3NSA0LjgxMjUgOC4zMTI1IDUuMzc1IDguMDkzNzVDNS4wOTM3NSA3LjQ2ODc1IDQuNDM3NSA2LjM3NSA1LjQwNjI1IDUuNDA2MjVDNi40MDYyNSA0LjQwNjI1IDcuNTMxMjUgNS4xNTYyNSA4LjA2MjUgNS40MDYyNUM4LjMxMjUgNC43NSA4LjYyNSAzLjUgMTAgMy41QzExLjQwNjIgMy41IDExLjY4NzUgNC44NDM3NSAxMS45MDYyIDUuNDA2MjVDMTIuNTMxMiA1LjEyNSAxMy42MjUgNC40Njg3NSAxNC41OTM4IDUuNDM3NUMxNS41OTM4IDYuNDM3NSAxNC44NDM4IDcuNTYyNSAxNC41OTM4IDguMDkzNzVDMTUuMjUgOC4zNDM3NSAxNi40Njg4IDguNjU2MjUgMTYuNDY4OCAxMC4wMzEyQzE2LjQ2ODggMTEuNDM3NSAxNS4xNTYyIDExLjcxODggMTQuNTkzOCAxMS45Mzc1QzE0Ljg3NSAxMi41NjI1IDE1LjU2MjUgMTMuNjU2MiAxNC41OTM4IDE0LjYyNUMxMy43MTg4IDE1LjUgMTIuODQzOCAxNS4wNjI1IDExLjkwNjIgMTQuNjI1QzExLjY1NjIgMTUuMjgxMiAxMS4zNDM4IDE2LjUgMTAgMTYuNUM4LjU2MjUgMTYuNSA4LjI4MTI1IDE1LjE4NzUgOC4wNjI1IDE0LjYyNVonIGZpbGw9JyUyMzJENzdCRCcvJTNFJTNDL3N2ZyUzRVwiKTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgJHsoeyBpc0N1cnJlbnRVc2VyIH0pID0+XG4gICAgaXNDdXJyZW50VXNlciAmJlxuICAgIGNzc2BcbiAgICAgICYuaGFzLXRhc2stbGlua3MgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xuICAgICAgICBsaW5lLWhlaWdodDogMjBweCAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAmLmhhcy10YXNrLWxpbmtzIGE6OmJlZm9yZSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgdG9wOiBjYWxjKCgxbGggLSAyMnB4KSAvIDIpO1xuICAgICAgfVxuICAgIGB9XG5cbiAgdWwge1xuICAgIGxpc3Qtc3R5bGU6IGluc2lkZSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogMTVweCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbjogMHB4IDAgMTZweCAwICFpbXBvcnRhbnQ7XG4gICAgJiA+IGxpIHtcbiAgICAgIGxpc3Qtc3R5bGU6IGRpc2MgIWltcG9ydGFudDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHggIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiByZ2JhKDMyLCAzMiwgMzEsIDEpO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgIH1cbiAgfVxuXG4gIGhyIHtcbiAgICBtYXJnaW46IDI4cHggMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgfVxuXG4gIG9sIHtcbiAgICBtYXJnaW46IDBweCAwIDE2cHggMCAhaW1wb3J0YW50O1xuICAgICYgPiBsaSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHggIWltcG9ydGFudDtcbiAgICAgIGNvbG9yOiByZ2JhKDMyLCAzMiwgMzEsIDEpO1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgcDpsYXN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTRweCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuYFxuXG5jb25zdCBmYWRlSW5VcCA9IGtleWZyYW1lc2BcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgxMHB4KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKTtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU2Nyb2xsVG9Cb3R0b21CdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxMHB4O1xuICBhc3BlY3QtcmF0aW86IDEvMTtcbiAgYm9yZGVyLXJhZGl1czogMjEuNXB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3gtc2hhZG93OiAwIDRweCA0cHggMCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMTVweDtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgei1pbmRleDogMTA7XG4gIGFuaW1hdGlvbjogJHtmYWRlSW5VcH0gMC4zcyBlYXNlO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3MgZWFzZTtcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7XG4gIH1cbmBcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxPQUFPQSxNQUFNLElBQUlDLEdBQUcsRUFBRUMsU0FBUyxRQUFRLG1CQUFtQjtBQUMxRCxTQUFT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
|
|
@@ -41,9 +41,6 @@ import { mapCORLang } from '../../../lang/utils';
|
|
|
41
41
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
42
42
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
43
43
|
export var ID_MODAL_CHAT_AGENT = 'modals-portal-maia-chat-agent';
|
|
44
|
-
|
|
45
|
-
/** Misma etiqueta que en ChatAI.tsx — filtrar en consola el flujo banner → FAQ automática */
|
|
46
|
-
var LOG_BANNER_ENTRY_FAQ = '[MaiaBannerEntryFaq]';
|
|
47
44
|
var validateAccessByFeature = function validateAccessByFeature(section) {
|
|
48
45
|
if (section === 'header' && (window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS || window.MAIA_CHAT_AI_FEATURE_ACCESS)) {
|
|
49
46
|
return true;
|
|
@@ -127,8 +124,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
127
124
|
isWebSearchActive = _useGlobalContext.isWebSearchActive,
|
|
128
125
|
setChipsProject = _useGlobalContext.setChipsProject,
|
|
129
126
|
setClient = _useGlobalContext.setClient,
|
|
130
|
-
setProject = _useGlobalContext.setProject
|
|
131
|
-
bannerEntryFaq = _useGlobalContext.bannerEntryFaq;
|
|
127
|
+
setProject = _useGlobalContext.setProject;
|
|
132
128
|
var _useGetAgents = useGetAgents({
|
|
133
129
|
selectAgent: selectAgent,
|
|
134
130
|
section: section,
|
|
@@ -304,7 +300,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
304
300
|
amplitudEvent(EVENTS.aiChatDraggable);
|
|
305
301
|
startPointerTracking(event.clientX, event.clientY);
|
|
306
302
|
}, [clampDragPosition, isFloating, resolvedDragPosition, startPointerTracking]);
|
|
307
|
-
var startChat = useCallback(function (message, attachments, faqId, agentSuggestionId) {
|
|
303
|
+
var startChat = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions) {
|
|
308
304
|
if (sidebarHasError) {
|
|
309
305
|
setSidebarHasError(false);
|
|
310
306
|
}
|
|
@@ -312,76 +308,18 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
312
308
|
setNewChatKey(function (prev) {
|
|
313
309
|
return prev + 1;
|
|
314
310
|
});
|
|
315
|
-
setUserInitialMessage(_objectSpread(_objectSpread({
|
|
311
|
+
setUserInitialMessage(_objectSpread(_objectSpread(_objectSpread({
|
|
316
312
|
message: message || '',
|
|
317
313
|
attachments: attachments || []
|
|
318
314
|
}, faqId ? {
|
|
319
315
|
faqId: faqId
|
|
320
316
|
} : {}), agentSuggestionId ? {
|
|
321
317
|
agentSuggestionId: agentSuggestionId
|
|
318
|
+
} : {}), mentions && mentions.length > 0 ? {
|
|
319
|
+
mentions: mentions
|
|
322
320
|
} : {}));
|
|
323
321
|
handlers.chat();
|
|
324
322
|
}, [handlers, sidebarHasError]);
|
|
325
|
-
var bannerFaqAutoSentRef = useRef(false);
|
|
326
|
-
useEffect(function () {
|
|
327
|
-
var _bannerEntryFaq$faqId, _bannerEntryFaq$faqTi, _agent$id, _agent$entity, _project$id, _client$id;
|
|
328
|
-
if (!(bannerEntryFaq !== null && bannerEntryFaq !== void 0 && (_bannerEntryFaq$faqId = bannerEntryFaq.faqId) !== null && _bannerEntryFaq$faqId !== void 0 && _bannerEntryFaq$faqId.trim()) || !(bannerEntryFaq !== null && bannerEntryFaq !== void 0 && (_bannerEntryFaq$faqTi = bannerEntryFaq.faqTitle) !== null && _bannerEntryFaq$faqTi !== void 0 && _bannerEntryFaq$faqTi.trim())) {
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
var entityReady = section === 'project' ? Boolean(project === null || project === void 0 ? void 0 : project.id) : section === 'client' ? Boolean(client === null || client === void 0 ? void 0 : client.id) : true;
|
|
332
|
-
console.info(LOG_BANNER_ENTRY_FAQ, 'step:auto-send-check', {
|
|
333
|
-
faqId: bannerEntryFaq.faqId,
|
|
334
|
-
alreadySent: bannerFaqAutoSentRef.current,
|
|
335
|
-
loadingAgents: loading,
|
|
336
|
-
agentId: (_agent$id = agent === null || agent === void 0 ? void 0 : agent.id) !== null && _agent$id !== void 0 ? _agent$id : null,
|
|
337
|
-
agentEntity: (_agent$entity = agent === null || agent === void 0 ? void 0 : agent.entity) !== null && _agent$entity !== void 0 ? _agent$entity : null,
|
|
338
|
-
section: section,
|
|
339
|
-
projectId: (_project$id = project === null || project === void 0 ? void 0 : project.id) !== null && _project$id !== void 0 ? _project$id : null,
|
|
340
|
-
clientId: (_client$id = client === null || client === void 0 ? void 0 : client.id) !== null && _client$id !== void 0 ? _client$id : null,
|
|
341
|
-
entityReady: entityReady
|
|
342
|
-
});
|
|
343
|
-
if (bannerFaqAutoSentRef.current) {
|
|
344
|
-
console.info(LOG_BANNER_ENTRY_FAQ, 'step:auto-send-skip', {
|
|
345
|
-
reason: 'already-sent'
|
|
346
|
-
});
|
|
347
|
-
return;
|
|
348
|
-
}
|
|
349
|
-
if (loading) {
|
|
350
|
-
console.info(LOG_BANNER_ENTRY_FAQ, 'step:auto-send-wait', {
|
|
351
|
-
reason: 'agents-loading'
|
|
352
|
-
});
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
if (!(agent !== null && agent !== void 0 && agent.id)) {
|
|
356
|
-
console.info(LOG_BANNER_ENTRY_FAQ, 'step:auto-send-wait', {
|
|
357
|
-
reason: 'no-agent-yet'
|
|
358
|
-
});
|
|
359
|
-
return;
|
|
360
|
-
}
|
|
361
|
-
if (!entityReady) {
|
|
362
|
-
console.info(LOG_BANNER_ENTRY_FAQ, 'step:auto-send-wait', {
|
|
363
|
-
reason: section === 'project' ? 'no-project-id' : 'no-client-id'
|
|
364
|
-
});
|
|
365
|
-
return;
|
|
366
|
-
}
|
|
367
|
-
bannerFaqAutoSentRef.current = true;
|
|
368
|
-
console.info(LOG_BANNER_ENTRY_FAQ, 'step:auto-send-execute', {
|
|
369
|
-
faqId: bannerEntryFaq.faqId,
|
|
370
|
-
titlePreview: bannerEntryFaq.faqTitle.slice(0, 120)
|
|
371
|
-
});
|
|
372
|
-
amplitudEvent(EVENTS.aiChatSelectFAQ, {
|
|
373
|
-
option: {
|
|
374
|
-
id_faq: bannerEntryFaq.faqTitle,
|
|
375
|
-
category_faq: 'banner',
|
|
376
|
-
origin_faq: 'project_dashboard_banner',
|
|
377
|
-
agent_entity: agent === null || agent === void 0 ? void 0 : agent.entity
|
|
378
|
-
}
|
|
379
|
-
});
|
|
380
|
-
startChat(bannerEntryFaq.faqTitle, [], bannerEntryFaq.faqId);
|
|
381
|
-
console.info(LOG_BANNER_ENTRY_FAQ, 'step:auto-send-done', {
|
|
382
|
-
faqId: bannerEntryFaq.faqId
|
|
383
|
-
});
|
|
384
|
-
}, [bannerEntryFaq === null || bannerEntryFaq === void 0 ? void 0 : bannerEntryFaq.faqId, bannerEntryFaq === null || bannerEntryFaq === void 0 ? void 0 : bannerEntryFaq.faqTitle, loading, agent === null || agent === void 0 ? void 0 : agent.id, agent === null || agent === void 0 ? void 0 : agent.entity, project === null || project === void 0 ? void 0 : project.id, client === null || client === void 0 ? void 0 : client.id, section, startChat, amplitudEvent]);
|
|
385
323
|
var goToChat = useCallback(function (chat) {
|
|
386
324
|
setUserInitialMessage({
|
|
387
325
|
message: '',
|
|
@@ -408,14 +346,14 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
408
346
|
setIsStreaming(streaming);
|
|
409
347
|
setIsWriting(writing);
|
|
410
348
|
}, []);
|
|
411
|
-
var handleSendMessage = useCallback(function (message, attachments, faqId, agentSuggestionId) {
|
|
349
|
+
var handleSendMessage = useCallback(function (message, attachments, faqId, agentSuggestionId, mentions) {
|
|
412
350
|
if (sidebarHasError) {
|
|
413
351
|
setSidebarHasError(false);
|
|
414
352
|
}
|
|
415
353
|
if (sendMessageFunction && computedCurrentOption === options.chat) {
|
|
416
|
-
sendMessageFunction(message, attachments, faqId, agentSuggestionId);
|
|
354
|
+
sendMessageFunction(message, attachments, faqId, agentSuggestionId, mentions);
|
|
417
355
|
} else {
|
|
418
|
-
startChat(message, attachments, faqId, agentSuggestionId);
|
|
356
|
+
startChat(message, attachments, faqId, agentSuggestionId, mentions);
|
|
419
357
|
}
|
|
420
358
|
}, [sendMessageFunction, startChat, computedCurrentOption, sidebarHasError]);
|
|
421
359
|
var handleGoHome = useCallback(function () {
|
|
@@ -701,4 +639,4 @@ export var ChatAIModal = function ChatAIModal(_ref) {
|
|
|
701
639
|
}), /*#__PURE__*/_jsx(Snackbar, {})]
|
|
702
640
|
}), selector);
|
|
703
641
|
};
|
|
704
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIlNFQ1RJT05TIiwiU0NDQUlNQ29udGVudCIsIlNDQ0FJTUNvbnRlbnRXcmFwcGVyIiwiU0NDQUlNV3JhcHBlciIsImdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCIsIkZsb2F0aW5nUGFuZWxNb3Rpb24iLCJ1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQiLCJDaGF0QWlNb2RhbEZvb3RlciIsInZhbGlkYXRlSXNNYWlhIiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiSURfTU9EQUxfQ0hBVF9BR0VOVCIsIkxPR19CQU5ORVJfRU5UUllfRkFRIiwidmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUiLCJzZWN0aW9uIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIkNoYXRBSU1vZGFsIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX3VzZXIkcGVybWlzc2lvbnMyIiwiX3VzZXIkcGVybWlzc2lvbnMzIiwiX2FnZW50cyRkYXRhIiwiaGFuZGxlQ2xvc2UiLCJ1c2VyIiwiX3VzZVRyYW5zbGF0aW9uIiwiYWJtQWdlbnQiLCJpMThuIiwiYW1wbGl0dWRFdmVudCIsImhhbmRsZUNsb3NlTW9kYWwiLCJnZXRTdGF0ZSIsImNsZWFyRmFxcyIsIl91c2VTdGF0ZSIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInVzZXJJbml0aWFsTWVzc2FnZSIsInNldFVzZXJJbml0aWFsTWVzc2FnZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaW5pdGlhbENoYXRJZCIsInNldEluaXRpYWxDaGF0SWQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsIm5ld0NoYXRLZXkiLCJzZXROZXdDaGF0S2V5IiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZW5kTWVzc2FnZUZ1bmN0aW9uIiwic2V0U2VuZE1lc3NhZ2VGdW5jdGlvbiIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsInNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJpc1N0cmVhbWluZyIsInNldElzU3RyZWFtaW5nIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJyZWZldGNoQ2hhdHMiLCJzZXRSZWZldGNoQ2hhdHMiLCJfdXNlU3RhdGUxNSIsImhvbWUiLCJfdXNlU3RhdGUxNiIsImN1cnJlbnRPcHRpb24iLCJzZXRDdXJyZW50T3B0aW9uIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJoYW5kbGVycyIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJzaWRlYmFySGFzRXJyb3IiLCJzZXRTaWRlYmFySGFzRXJyb3IiLCJyZXNldFNlbGVjdGVkQ2hhdFJlZiIsImxhbmciLCJsYW5ndWFnZSIsImxvY2FsZSIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJhZ2VudCIsInByb2plY3QiLCJjbGllbnQiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsInNldENsaWVudCIsInNldFByb2plY3QiLCJiYW5uZXJFbnRyeUZhcSIsIl91c2VHZXRBZ2VudHMiLCJoYW5kbGVHb0hvbWUiLCJhZ2VudHMiLCJsb2FkaW5nIiwibG9hZGluZ01vcmUiLCJhZ2VudEVycm9yIiwiZXJyb3IiLCJoYW5kbGVHZXRBZ2VudHMiLCJsb2FkTW9yZUFnZW50cyIsImFkZEFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50Iiwic29ydEFnZW50c0xpc3QiLCJpc01BSUEiLCJ1c2VySGFzUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNyZWF0ZSIsImVkaXQiLCJjb21wdXRlZEN1cnJlbnRPcHRpb24iLCJpc0dsb2JhbFNwZWNpYWxpc3QiLCJlbnRpdHkiLCJpc1Byb2plY3RTcGVjaWFsaXN0IiwiaXNDbGllbnRTcGVjaWFsaXN0IiwiaXNNYWlha2VyIiwidGVzdCIsIm5hbWUiLCJteUFnZW50cyIsImNoYXQiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJpc01haWFrZXJBZ2VudFNlbGVjdGVkIiwidHlwZSIsInNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNGZXRjaGVkUmVmIiwic2VsZWN0b3IiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJjb25jYXQiLCJfdXNlU3RhdGUyMSIsIl91c2VTdGF0ZTIyIiwibGF5b3V0TW9kZSIsInNldExheW91dE1vZGUiLCJleHBhbmRlZCIsImlzRmxvYXRpbmciLCJjb250ZW50V3JhcHBlclJlZiIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJkcmFnUG9zaXRpb24iLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsImN1cnJlbnQiLCJfY29udGVudFdyYXBwZXIkZ2V0Qm8iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3aWR0aCIsImhlaWdodCIsIm9mZnNldCIsIm1heFgiLCJNYXRoIiwibWF4IiwiaW5uZXJXaWR0aCIsIm1heFkiLCJpbm5lckhlaWdodCIsIm1pbiIsInByZXYiLCJwYWQiLCJoYW5kbGVEcmFnRW5kIiwiZXZlbnQiLCJfZHJhZ1N0YXRlUmVmJGN1cnJlbnQiLCJwb2ludGVySWQiLCJib2R5Iiwic3R5bGUiLCJ1c2VyU2VsZWN0IiwiY3Vyc29yIiwiaGFuZGxlRHJhZ01vdmUiLCJkcmFnU3RhdGUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm5leHRQb3NpdGlvbiIsIm9mZnNldFgiLCJvZmZzZXRZIiwicmVzb2x2ZWREcmFnUG9zaXRpb24iLCJoYW5kbGVEcmFnU3RhcnQiLCJidXR0b24iLCJ0YXJnZXQiLCJjbG9zZXN0IiwicmVjdCIsImluaXRpYWxQb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJwb2ludGVyT2Zmc2V0WCIsInBvaW50ZXJPZmZzZXRZIiwiY3VycmVudFRhcmdldCIsInNldFBvaW50ZXJDYXB0dXJlIiwicHJldmVudERlZmF1bHQiLCJhaUNoYXREcmFnZ2FibGUiLCJzdGFydENoYXQiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiX29iamVjdFNwcmVhZCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcUlkIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiX2FnZW50JGlkIiwiX2FnZW50JGVudGl0eSIsIl9wcm9qZWN0JGlkIiwiX2NsaWVudCRpZCIsInRyaW0iLCJmYXFUaXRsZSIsImVudGl0eVJlYWR5IiwiQm9vbGVhbiIsImlkIiwiY29uc29sZSIsImluZm8iLCJhbHJlYWR5U2VudCIsImxvYWRpbmdBZ2VudHMiLCJhZ2VudElkIiwiYWdlbnRFbnRpdHkiLCJwcm9qZWN0SWQiLCJjbGllbnRJZCIsInJlYXNvbiIsInRpdGxlUHJldmlldyIsInNsaWNlIiwiYWlDaGF0U2VsZWN0RkFRIiwib3B0aW9uIiwiaWRfZmFxIiwiY2F0ZWdvcnlfZmFxIiwib3JpZ2luX2ZhcSIsImFnZW50X2VudGl0eSIsImdvVG9DaGF0Iiwic2Vzc2lvbkV4dGVybmFsSWQiLCJzZWxlY3RlZEFnZW50IiwiZGF0YSIsImZpbmQiLCJhZ2VudEl0ZW0iLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJoYW5kbGVTZW5kTWVzc2FnZVJlYWR5Iiwic2VuZE1lc3NhZ2UiLCJzdG9wR2VuZXJhdGlvbiIsInN0cmVhbWluZyIsIndyaXRpbmciLCJoYW5kbGVTZW5kTWVzc2FnZSIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJsZW5ndGgiLCJoYW5kbGVSZXNldENoYXQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJzdG9wIiwib25NZXJnZUNyZWF0ZWRBZ2VudCIsImV2dCIsIl9yZWYzIiwiZGV0YWlsIiwibmV4dEFnZW50IiwibmF2aWdhdGVIb21lIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJvblN5bmNFZGl0ZWRBZ2VudCIsIl9yZWY0Iiwib3BlbkNoYXRWaWV3Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsIiwic2hvd05ld0NoYXQiLCJoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwiYSIsInBhdGgiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImFicnVwdCIsImhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzIiwiaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsImRpc3BsYXkiLCJvbkdvVG9DaGF0Iiwib25FcnJvciIsImhhbmRsZUdvVG9Ib21lIiwiaGFuZGxlU2V0UmVmZXRjaENoYXRzIiwiYWdlbnRzTmF2QWN0aXZlIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJyZWZzIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25EZWxldGVBZ2VudCIsIm9uRmF2b3JpdGVBZ2VudFVwZGF0ZSIsImhhc01vcmVBZ2VudHMiLCJsb2FkaW5nTW9yZUFnZW50cyIsIm9uTG9hZE1vcmVBZ2VudHMiLCJvbkdvVG9NYWlha2VyIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiY2hhdElkIiwic2hvd0ZhcXMiLCJyZWYiLCJjcmVhdGVQb3J0YWwiLCJ0aWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL0NoYXRBSU1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge1xuICBSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgTUFJQUVycm9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQUVycm9yJ1xuXG5pbXBvcnQgeyBDaGF0QUlDb250ZW50IH0gZnJvbSAnLi4vQ2hhdEFJQ29udGVudCdcbmltcG9ydCB7IGJ1aWxkSGFuZGxlcnMsIG9wdGlvbnMgfSBmcm9tICcuL2NvbnN0YW50cydcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tICcuLi9TaWRlYmFyJ1xuaW1wb3J0IHsgdXNlR2V0QWdlbnRzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvZ2V0QWdlbnRzJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENoYXRBSU1vZGFsSGVhZGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsSGVhZGVyL0NoYXRBaU1vZGFsSGVhZGVyJ1xuaW1wb3J0IHsgU25hY2tiYXIgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvU25hY2tCYXIvU25hY2tiYXInXG5pbXBvcnQgeyBQcm9qZWN0U3VtbWFyeUNvbnRlbnQgfSBmcm9tICcuLi9Qcm9qZWN0U3VtbWFyeUNvbnRlbnQnXG5pbXBvcnQgeyBBYm1BZ2VudE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibUFnZW50TW9kYWwvQWJtQWdlbnRNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgsIE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlIH0gZnJvbSAnLi9sYXlvdXQnXG5pbXBvcnQgeyBGbG9hdGluZ1BhbmVsTW90aW9uLCB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQgfSBmcm9tICcuL2Zsb2F0aW5nUGFuZWxNb3Rpb24nXG5pbXBvcnQgeyBDaGF0QWlNb2RhbEZvb3RlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEZvb3RlcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlRmFxc1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlRmFxc1N0b3JlJ1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlNb2RhbFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIHBhcmVudFJlZj86IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbn1cblxuZXhwb3J0IGNvbnN0IElEX01PREFMX0NIQVRfQUdFTlQgPSAnbW9kYWxzLXBvcnRhbC1tYWlhLWNoYXQtYWdlbnQnXG5cbi8qKiBNaXNtYSBldGlxdWV0YSBxdWUgZW4gQ2hhdEFJLnRzeCDigJQgZmlsdHJhciBlbiBjb25zb2xhIGVsIGZsdWpvIGJhbm5lciDihpIgRkFRIGF1dG9tw6F0aWNhICovXG5jb25zdCBMT0dfQkFOTkVSX0VOVFJZX0ZBUSA9ICdbTWFpYUJhbm5lckVudHJ5RmFxXSdcblxuY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogc3RyaW5nKSA9PiB7XG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJyAmJiAod2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIGlmICgoc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IHNlY3Rpb24gPT09ICdjbGllbnQnKSAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1vZGFsID0gKHsgaGFuZGxlQ2xvc2UgfTogQ2hhdEFJTW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmFibUFnZW50XSlcbiAgY29uc3QgYW1wbGl0dWRFdmVudCA9IHVzZUV2ZW50KClcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHVzZUZhcXNTdG9yZS5nZXRTdGF0ZSgpLmNsZWFyRmFxcygpXG4gICAgaGFuZGxlQ2xvc2U/LigpXG4gIH0sIFtoYW5kbGVDbG9zZV0pXG4gIGNvbnN0IFt1c2VySW5pdGlhbE1lc3NhZ2UsIHNldFVzZXJJbml0aWFsTWVzc2FnZV0gPSB1c2VTdGF0ZTx7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgICgobWVzc2FnZTogc3RyaW5nLCBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sIGZhcUlkPzogc3RyaW5nLCBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZykgPT4gdm9pZCkgfCBudWxsXG4gID4obnVsbClcbiAgY29uc3QgW3N0b3BHZW5lcmF0aW9uRnVuY3Rpb24sIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dID0gdXNlU3RhdGU8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzU3RyZWFtaW5nLCBzZXRJc1N0cmVhbWluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IFtyZWZldGNoQ2hhdHMsIHNldFJlZmV0Y2hDaGF0c10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRPcHRpb24sIHNldEN1cnJlbnRPcHRpb25dID0gdXNlU3RhdGUob3B0aW9ucy5ob21lKVxuICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBoYW5kbGVycyA9IHVzZU1lbW8oKCkgPT4gYnVpbGRIYW5kbGVycyhzZXRDdXJyZW50T3B0aW9uLCBzZXRIYXNFcnJvciksIFtdKVxuICBjb25zdCBbc2lkZWJhckhhc0Vycm9yLCBzZXRTaWRlYmFySGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHJlc2V0U2VsZWN0ZWRDaGF0UmVmID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0LWJyJyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBtb21lbnQubG9jYWxlKGxhbmcpXG5cbiAgY29uc3Qge1xuICAgIHNlbGVjdEFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIGNvbnN0IHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcjogYWdlbnRFcnJvcixcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9ID0gdXNlR2V0QWdlbnRzKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWU6IGhhbmRsZXJzLmhvbWUgfSlcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcblxuICBjb25zdCB1c2VySGFzUGVybWlzc2lvbnMgPVxuICAgICh1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5jcmVhdGUgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmRlbGV0ZSkgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzR2xvYmFsU3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJ1xuICAgIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gICAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gICAgY29uc3QgaXNNYWlha2VyID0gaXNHbG9iYWxTcGVjaWFsaXN0ICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGlzR2xvYmFsU3BlY2lhbGlzdCAmJiAhaXNNYWlha2VyICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lXSlcblxuICBjb25zdCBpc01haWFrZXJBZ2VudFNlbGVjdGVkID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgaXNNQUlBICYmXG4gICAgICBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJlxuICAgICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiZcbiAgICAgIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKSxcbiAgICBbaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8udHlwZSwgYWdlbnQ/Lm5hbWVdXG4gIClcblxuICBjb25zdCBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlID0gdXNlTWVtbygoKTogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHJldHVybiAnbXlBZ2VudHMnXG4gICAgaWYgKGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpIHJldHVybiAnbWFpYWtlcidcbiAgICByZXR1cm4gbnVsbFxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkXSlcblxuICAvKiBSZWFjdGl2YXIgY29uIGxhIGZpbGEg4oCcTWlzIGFnZW50ZXPigJ0gZW4gU2lkZWJhcjogbXlBZ2VudHNDb3VudCBwcm9wXG4gIGNvbnN0IHNpZGViYXJNeUFnZW50c0NvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGFnZW50cy5kYXRhLmZpbHRlcihcbiAgICAgIGEgPT4gIShhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGEubmFtZSB8fCAnJykpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KCdzaWRlYmFyJylcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihudWxsKVxuICBjb25zdCB7IHRpbHRNb3Rpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nLCBzYW1wbGVQb2ludGVyTW92ZSwgZW5kUG9pbnRlclRyYWNraW5nIH0gPVxuICAgIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdChpc0Zsb2F0aW5nKVxuICBjb25zdCBkcmFnU3RhdGVSZWYgPSB1c2VSZWY8e1xuICAgIHBvaW50ZXJJZDogbnVtYmVyXG4gICAgb2Zmc2V0WDogbnVtYmVyXG4gICAgb2Zmc2V0WTogbnVtYmVyXG4gIH0gfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGNsYW1wRHJhZ1Bvc2l0aW9uID0gdXNlQ2FsbGJhY2soKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgcmV0dXJuIHsgeCwgeSB9XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IG9mZnNldCA9IDE2XG4gICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVyV2lkdGggLSB3aWR0aCAtIG9mZnNldClcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWlnaHQgLSBvZmZzZXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogTWF0aC5taW4oTWF0aC5tYXgoeCwgb2Zmc2V0KSwgbWF4WCksXG4gICAgICB5OiBNYXRoLm1pbihNYXRoLm1heCh5LCBvZmZzZXQpLCBtYXhZKSxcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHByZXYueCwgcHJldi55KVxuICAgICAgfVxuICAgICAgY29uc3QgcGFkID0gMTZcbiAgICAgIGNvbnN0IHggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkXG4gICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICAgIH0pXG4gIH0sIFtsYXlvdXRNb2RlLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlbmRQb2ludGVyVHJhY2tpbmcoKVxuICAgICAgaWYgKGRyYWdTdGF0ZVJlZi5jdXJyZW50Py5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJ1xuICAgIH0sXG4gICAgW2VuZFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdTdGF0ZSA9IGRyYWdTdGF0ZVJlZi5jdXJyZW50XG4gICAgICBpZiAoIWRyYWdTdGF0ZSB8fCBkcmFnU3RhdGUucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNhbXBsZVBvaW50ZXJNb3ZlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IGNsYW1wRHJhZ1Bvc2l0aW9uKGV2ZW50LmNsaWVudFggLSBkcmFnU3RhdGUub2Zmc2V0WCwgZXZlbnQuY2xpZW50WSAtIGRyYWdTdGF0ZS5vZmZzZXRZKVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICAgIGlmIChwcmV2ICYmIHByZXYueCA9PT0gbmV4dFBvc2l0aW9uLnggJiYgcHJldi55ID09PSBuZXh0UG9zaXRpb24ueSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRQb3NpdGlvblxuICAgICAgfSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgc2FtcGxlUG9pbnRlck1vdmVdXG4gIClcblxuICBjb25zdCByZXNvbHZlZERyYWdQb3NpdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGlmIChkcmFnUG9zaXRpb24pIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgY29uc3QgcGFkID0gMTZcbiAgICBjb25zdCB4ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkIDogcGFkXG4gICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgfSwgW2xheW91dE1vZGUsIGRyYWdQb3NpdGlvbiwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIWlzRmxvYXRpbmcgfHwgZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICAgIGlmICh0YXJnZXQuY2xvc2VzdCgnYnV0dG9uLCBhLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW3JvbGU9XCJidXR0b25cIl0sIFtkYXRhLW5vLWRyYWc9XCJ0cnVlXCJdJykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjdCA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBpbml0aWFsUG9zaXRpb24gPSByZXNvbHZlZERyYWdQb3NpdGlvbiA/PyBjbGFtcERyYWdQb3NpdGlvbihyZWN0LmxlZnQsIHJlY3QudG9wKVxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFggPSBldmVudC5jbGllbnRYIC0gaW5pdGlhbFBvc2l0aW9uLnhcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRZID0gZXZlbnQuY2xpZW50WSAtIGluaXRpYWxQb3NpdGlvbi55XG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihpbml0aWFsUG9zaXRpb24pXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgcG9pbnRlcklkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgIG9mZnNldFg6IHBvaW50ZXJPZmZzZXRYLFxuICAgICAgICBvZmZzZXRZOiBwb2ludGVyT2Zmc2V0WSxcbiAgICAgIH1cblxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnZ3JhYmJpbmcnXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXREcmFnZ2FibGUpXG4gICAgICBzdGFydFBvaW50ZXJUcmFja2luZyhldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBpc0Zsb2F0aW5nLCByZXNvbHZlZERyYWdQb3NpdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBzdGFydENoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZT86IHN0cmluZywgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLCBmYXFJZD86IHN0cmluZywgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCAnJyxcbiAgICAgICAgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWJhbm5lckVudHJ5RmFxPy5mYXFJZD8udHJpbSgpIHx8ICFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZW50aXR5UmVhZHkgPSBzZWN0aW9uID09PSAncHJvamVjdCcgPyBCb29sZWFuKHByb2plY3Q/LmlkKSA6IHNlY3Rpb24gPT09ICdjbGllbnQnID8gQm9vbGVhbihjbGllbnQ/LmlkKSA6IHRydWVcblxuICAgIGNvbnNvbGUuaW5mbyhMT0dfQkFOTkVSX0VOVFJZX0ZBUSwgJ3N0ZXA6YXV0by1zZW5kLWNoZWNrJywge1xuICAgICAgZmFxSWQ6IGJhbm5lckVudHJ5RmFxLmZhcUlkLFxuICAgICAgYWxyZWFkeVNlbnQ6IGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQsXG4gICAgICBsb2FkaW5nQWdlbnRzOiBsb2FkaW5nLFxuICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkID8/IG51bGwsXG4gICAgICBhZ2VudEVudGl0eTogYWdlbnQ/LmVudGl0eSA/PyBudWxsLFxuICAgICAgc2VjdGlvbixcbiAgICAgIHByb2plY3RJZDogcHJvamVjdD8uaWQgPz8gbnVsbCxcbiAgICAgIGNsaWVudElkOiBjbGllbnQ/LmlkID8/IG51bGwsXG4gICAgICBlbnRpdHlSZWFkeSxcbiAgICB9KVxuXG4gICAgaWYgKGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhMT0dfQkFOTkVSX0VOVFJZX0ZBUSwgJ3N0ZXA6YXV0by1zZW5kLXNraXAnLCB7IHJlYXNvbjogJ2FscmVhZHktc2VudCcgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAobG9hZGluZykge1xuICAgICAgY29uc29sZS5pbmZvKExPR19CQU5ORVJfRU5UUllfRkFRLCAnc3RlcDphdXRvLXNlbmQtd2FpdCcsIHsgcmVhc29uOiAnYWdlbnRzLWxvYWRpbmcnIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKCFhZ2VudD8uaWQpIHtcbiAgICAgIGNvbnNvbGUuaW5mbyhMT0dfQkFOTkVSX0VOVFJZX0ZBUSwgJ3N0ZXA6YXV0by1zZW5kLXdhaXQnLCB7IHJlYXNvbjogJ25vLWFnZW50LXlldCcgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIWVudGl0eVJlYWR5KSB7XG4gICAgICBjb25zb2xlLmluZm8oTE9HX0JBTk5FUl9FTlRSWV9GQVEsICdzdGVwOmF1dG8tc2VuZC13YWl0Jywge1xuICAgICAgICByZWFzb246IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/ICduby1wcm9qZWN0LWlkJyA6ICduby1jbGllbnQtaWQnLFxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgY29uc29sZS5pbmZvKExPR19CQU5ORVJfRU5UUllfRkFRLCAnc3RlcDphdXRvLXNlbmQtZXhlY3V0ZScsIHtcbiAgICAgIGZhcUlkOiBiYW5uZXJFbnRyeUZhcS5mYXFJZCxcbiAgICAgIHRpdGxlUHJldmlldzogYmFubmVyRW50cnlGYXEuZmFxVGl0bGUuc2xpY2UoMCwgMTIwKSxcbiAgICB9KVxuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdFNlbGVjdEZBUSwge1xuICAgICAgb3B0aW9uOiB7XG4gICAgICAgIGlkX2ZhcTogYmFubmVyRW50cnlGYXEuZmFxVGl0bGUsXG4gICAgICAgIGNhdGVnb3J5X2ZhcTogJ2Jhbm5lcicsXG4gICAgICAgIG9yaWdpbl9mYXE6ICdwcm9qZWN0X2Rhc2hib2FyZF9iYW5uZXInLFxuICAgICAgICBhZ2VudF9lbnRpdHk6IGFnZW50Py5lbnRpdHksXG4gICAgICB9LFxuICAgIH0pXG4gICAgc3RhcnRDaGF0KGJhbm5lckVudHJ5RmFxLmZhcVRpdGxlLCBbXSwgYmFubmVyRW50cnlGYXEuZmFxSWQpXG4gICAgY29uc29sZS5pbmZvKExPR19CQU5ORVJfRU5UUllfRkFRLCAnc3RlcDphdXRvLXNlbmQtZG9uZScsIHsgZmFxSWQ6IGJhbm5lckVudHJ5RmFxLmZhcUlkIH0pXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGxvYWRpbmcsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGFnZW50Py5lbnRpdHksXG4gICAgcHJvamVjdD8uaWQsXG4gICAgY2xpZW50Py5pZCxcbiAgICBzZWN0aW9uLFxuICAgIHN0YXJ0Q2hhdCxcbiAgICBhbXBsaXR1ZEV2ZW50LFxuICBdKVxuXG4gIGNvbnN0IGdvVG9DaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgICAgY29uc3Qgc2VsZWN0ZWRBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoYWdlbnRJdGVtID0+IGFnZW50SXRlbS5pZCA9PT0gY2hhdC5hZ2VudElkKVxuICAgICAgaWYgKHNlbGVjdGVkQWdlbnQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQoc2VsZWN0ZWRBZ2VudClcbiAgICAgIH1cbiAgICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgYWdlbnRzLCBzZWxlY3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlUmVhZHkgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQsXG4gICAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICAgIHN0cmVhbWluZzogYm9vbGVhbixcbiAgICAgIHdyaXRpbmc6IGJvb2xlYW5cbiAgICApID0+IHtcbiAgICAgIHNldFNlbmRNZXNzYWdlRnVuY3Rpb24oKCkgPT4gc2VuZE1lc3NhZ2UpXG4gICAgICBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uKCgpID0+IHN0b3BHZW5lcmF0aW9uKVxuICAgICAgc2V0SXNTdHJlYW1pbmcoc3RyZWFtaW5nKVxuICAgICAgc2V0SXNXcml0aW5nKHdyaXRpbmcpXG4gICAgfSxcbiAgICBbXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAobWVzc2FnZTogc3RyaW5nLCBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sIGZhcUlkPzogc3RyaW5nLCBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzdGFydENoYXQsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgaGFuZGxlR29Ib21lID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIFNpIGVzdGFtb3MgZW4gdW5hIGNvbnZlcnNhY2nDs24geSB2YW1vcyBhIGhvbWUsIHJlc2V0ZWFyIGluaXRpYWxDaGF0SWQgeSBpbmNyZW1lbnRhciBuZXdDaGF0S2V5XG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgKCFhZ2VudCB8fCBhZ2VudD8uaXNfZGVsZXRlZCB8fCBhZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyB8fCBhZ2VudD8uaGFzX25vdF9hY2Nlc3MgfHwgYWdlbnQ/LnByb2plY3RfZGVsZXRlZCkgJiZcbiAgICAgIGFnZW50cy5kYXRhLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhWzBdKVxuICAgIH1cbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFtcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgb3B0aW9ucy5jaGF0LFxuICAgIGN1cnJlbnRPcHRpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGFnZW50LFxuICAgIGFnZW50cyxcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBzZXRDbGllbnQsXG4gIF0pXG5cbiAgY29uc3QgaGFuZGxlUmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgaGFuZGxlR29Ib21lKClcbiAgfSwgW2hhbmRsZUdvSG9tZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWFnZW50c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgaGFuZGxlR2V0QWdlbnRzKClcbiAgICB9XG4gIH0sIFtoYW5kbGVHZXRBZ2VudHNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25NZXJnZUNyZWF0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKG5leHRBZ2VudD8uaWQpIHtcbiAgICAgICAgYWRkQWdlbnQobmV4dEFnZW50LCB7IG5hdmlnYXRlSG9tZTogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW2FkZEFnZW50XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU3luY0VkaXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIW5leHRBZ2VudD8uaWQpIHJldHVyblxuICAgICAgdXBkYXRlQWdlbnQobmV4dEFnZW50KVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gbmV4dEFnZW50LmlkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KG5leHRBZ2VudClcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1zeW5jLWVkaXRlZC1hZ2VudC1mcm9tLWNoYXQnLCBvblN5bmNFZGl0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFt1cGRhdGVBZ2VudCwgc2VsZWN0QWdlbnQsIGFnZW50Py5pZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuQ2hhdFZpZXcgPSAoKSA9PiB7XG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5jaGF0KVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1jaGF0LXZpZXcnLCBvcGVuQ2hhdFZpZXcpXG4gICAgfVxuICB9LCBbXSlcblxuICAvKiogTWlzbW8gZmx1am8gcXVlIENoYXRBSU15QWdlbnRzLmhhbmRsZVVzZUFnZW50ICsgb25CYWNrIChoYW5kbGVycy5ob21lKS4gKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuTmV3Q2hhdFdpdGhBZ2VudCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IG5leHRBZ2VudCA9IChldmVudCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIH1cbiAgfSwgW3NlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3RdKVxuXG4gIGNvbnN0IHNob3dOZXdDaGF0ID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXRcbiAgY29uc3QgaGlkZUhlYWRlckFnZW50U2VsZWN0b3IgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHNcbiAgY29uc3QgaGFuZGxlT3Blbk1hcmtldHBsYWNlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5teUFnZW50cylcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlR29Ub01haWFrZXIgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgbGV0IG1haWFrZXJBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnKVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnY2xvbmUnICYmIGEuZW50aXR5ID09PSAnZ2xvYmFsJylcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW2FnZW50cy5kYXRhLCBpMThuLmxhbmd1YWdlLCBzZWxlY3RBZ2VudCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0XSlcbiAgY29uc3QgaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZW1vdmVBZ2VudChhZ2VudElkKVxuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gYWdlbnRJZCkge1xuICAgICAgICBzZWxlY3RGaXJzdEFnZW50KGFnZW50SWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnQ/LmlkLCByZW1vdmVBZ2VudCwgc2VsZWN0Rmlyc3RBZ2VudF1cbiAgKVxuXG4gIGNvbnN0IGhpZGVGb290ZXJPbk1haWFrZXJNYXJrZXRwbGFjZUhvbWUgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiBpc01haWFrZXJBZ2VudFNlbGVjdGVkXG5cbiAgY29uc3QgbW9kYWxQYW5lbCA9IChcbiAgICA8PlxuICAgICAge3ZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24pID8gKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6IGlzRmxvYXRpbmcgPyAnbm9uZScgOiAnY29udGVudHMnIH19IGFyaWEtaGlkZGVuPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgICA8U2lkZWJhclxuICAgICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRTaWRlYmFySGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICBoYW5kbGVHb1RvSG9tZT17aGFuZGxlR29Ib21lfVxuICAgICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgICBzaG93TmV3Q2hhdD17c2hvd05ld0NoYXR9XG4gICAgICAgICAgICByZWZldGNoQ2hhdHM9e3JlZmV0Y2hDaGF0c31cbiAgICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgICAgaGFzRXJyb3I9e3NpZGViYXJIYXNFcnJvcn1cbiAgICAgICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmPXtyZXNldFNlbGVjdGVkQ2hhdFJlZn1cbiAgICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFNDQ0FJTUNvbnRlbnQgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30+XG4gICAgICAgIDxDaGF0QUlNb2RhbEhlYWRlclxuICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgb25MYXlvdXRNb2RlQ2hhbmdlPXtzZXRMYXlvdXRNb2RlfVxuICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICBkcmFnZ2FibGU9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgICBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9XG4gICAgICAgICAgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICBoYXNFcnJvcj17ISFhZ2VudEVycm9yfVxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XG4gICAgICAgICAgbG9hZGluZ01vcmU9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgIGhhc01vcmU9e2FnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICBoYW5kbGVSZXNldENoYXQ9e2hhbmRsZVJlc2V0Q2hhdH1cbiAgICAgICAgICBvbkFnZW50VXBkYXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgIGxvYWRNb3JlQWdlbnRzPXtsb2FkTW9yZUFnZW50c31cbiAgICAgICAgICBzb3J0QWdlbnRzTGlzdD17c29ydEFnZW50c0xpc3R9XG4gICAgICAgICAgaGlkZUFnZW50U2VsZWN0b3I9e2hpZGVIZWFkZXJBZ2VudFNlbGVjdG9yfVxuICAgICAgICAvPlxuICAgICAgICB7aGFzRXJyb3IgPyAoXG4gICAgICAgICAgPE1BSUFFcnJvciAvPlxuICAgICAgICApIDogdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgPyAoXG4gICAgICAgICAgPENoYXRBSUNvbnRlbnRcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb249e2NvbXB1dGVkQ3VycmVudE9wdGlvbn1cbiAgICAgICAgICAgIGhhbmRsZXJzPXt7IC4uLmhhbmRsZXJzLCBjaGF0OiBzdGFydENoYXQsIGhvbWU6IGhhbmRsZXJzLmhvbWUsIGhhbmRsZUdvSG9tZSB9fVxuICAgICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0SGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICByZWZzPXt7IHVzZXJJbml0aWFsTWVzc2FnZSwgaW5pdGlhbENoYXRJZCB9fVxuICAgICAgICAgICAgb25TZW5kTWVzc2FnZVJlYWR5PXtoYW5kbGVTZW5kTWVzc2FnZVJlYWR5fVxuICAgICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgICAgZmxvYXRpbmc9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8UHJvamVjdFN1bW1hcnlDb250ZW50IG9uUmVzdGFydFN1bW1hcnk9e2hhbmRsZXJzLmhvbWV9IC8+XG4gICAgICAgICl9XG4gICAgICAgIHsoKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmICEhYWdlbnRzPy5kYXRhPy5sZW5ndGgpIHx8XG4gICAgICAgICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpICYmXG4gICAgICAgICAgIWhpZGVGb290ZXJPbk1haWFrZXJNYXJrZXRwbGFjZUhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24pICYmIChcbiAgICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgICAgICAgc2hvd0ZhcXM9e2NvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgPC9TQ0NBSU1Db250ZW50PlxuICAgIDwvPlxuICApXG5cbiAgY29uc3QgY29udGVudFdyYXBwZXIgPSAoXG4gICAgPFNDQ0FJTUNvbnRlbnRXcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9IHJlZj17Y29udGVudFdyYXBwZXJSZWZ9PlxuICAgICAge21vZGFsUGFuZWx9XG4gICAgPC9TQ0NBSU1Db250ZW50V3JhcHBlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgc2VsZWN0b3IgJiZcbiAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICA8U0NDQUlNV3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGxheW91dE1vZGU9e2xheW91dE1vZGV9IGRyYWdQb3NpdGlvbj17cmVzb2x2ZWREcmFnUG9zaXRpb259PlxuICAgICAgICA8RmxvYXRpbmdQYW5lbE1vdGlvbiB0aWx0PXt0aWx0TW90aW9ufSBleHBhbmRlZD17ZXhwYW5kZWR9PlxuICAgICAgICAgIHtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgPC9GbG9hdGluZ1BhbmVsTW90aW9uPlxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtQWdlbnRNb2RhbFxuICAgICAgICAgICAgYWRkQWdlbnQ9e2FkZEFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnQ9e3VwZGF0ZUFnZW50fVxuICAgICAgICAgICAgcmVtb3ZlQWdlbnQ9e3JlbW92ZUFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIHNlbGVjdEZpcnN0QWdlbnQ9e3NlbGVjdEZpcnN0QWdlbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAgPFNuYWNrYmFyIC8+XG4gICAgICA8L1NDQ0FJTVdyYXBwZXI+LFxuICAgICAgc2VsZWN0b3JcbiAgICApXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7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
|
|
642
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiTUFJQUVycm9yIiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIlNFQ1RJT05TIiwiU0NDQUlNQ29udGVudCIsIlNDQ0FJTUNvbnRlbnRXcmFwcGVyIiwiU0NDQUlNV3JhcHBlciIsImdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCIsIkZsb2F0aW5nUGFuZWxNb3Rpb24iLCJ1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQiLCJDaGF0QWlNb2RhbEZvb3RlciIsInZhbGlkYXRlSXNNYWlhIiwidXNlRmFxc1N0b3JlIiwiZmV0Y2hNYWlhIiwibWFwQ09STGFuZyIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiSURfTU9EQUxfQ0hBVF9BR0VOVCIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwic2VjdGlvbiIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJDaGF0QUlNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl91c2VyJHBlcm1pc3Npb25zMiIsIl91c2VyJHBlcm1pc3Npb25zMyIsIl9hZ2VudHMkZGF0YSIsImhhbmRsZUNsb3NlIiwidXNlciIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJoYW5kbGVDbG9zZU1vZGFsIiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJfdXNlU3RhdGUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwicmVmZXRjaENoYXRzIiwic2V0UmVmZXRjaENoYXRzIiwiX3VzZVN0YXRlMTUiLCJob21lIiwiX3VzZVN0YXRlMTYiLCJjdXJyZW50T3B0aW9uIiwic2V0Q3VycmVudE9wdGlvbiIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiaGFuZGxlcnMiLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2lkZWJhckhhc0Vycm9yIiwic2V0U2lkZWJhckhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50IiwiYWdlbnQiLCJwcm9qZWN0IiwiY2xpZW50IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0IiwiX3VzZUdldEFnZW50cyIsImhhbmRsZUdvSG9tZSIsImFnZW50cyIsImxvYWRpbmciLCJsb2FkaW5nTW9yZSIsImFnZW50RXJyb3IiLCJlcnJvciIsImhhbmRsZUdldEFnZW50cyIsImxvYWRNb3JlQWdlbnRzIiwiYWRkQWdlbnQiLCJyZW1vdmVBZ2VudCIsInVwZGF0ZUFnZW50IiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNlbGVjdEZpcnN0QWdlbnQiLCJzb3J0QWdlbnRzTGlzdCIsImlzTUFJQSIsInVzZXJIYXNQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsImNvbXB1dGVkQ3VycmVudE9wdGlvbiIsImlzR2xvYmFsU3BlY2lhbGlzdCIsImVudGl0eSIsImlzUHJvamVjdFNwZWNpYWxpc3QiLCJpc0NsaWVudFNwZWNpYWxpc3QiLCJpc01haWFrZXIiLCJ0ZXN0IiwibmFtZSIsIm15QWdlbnRzIiwiY2hhdCIsInNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IiLCJzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IiLCJwcm9qZWN0U2VsZWN0b3IiLCJjbGllbnRTZWxlY3RvciIsImlzTWFpYWtlckFnZW50U2VsZWN0ZWQiLCJ0eXBlIiwic2lkZWJhckFnZW50c05hdkFjdGl2ZSIsImFnZW50c0ZldGNoZWRSZWYiLCJzZWxlY3RvciIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImNvbmNhdCIsIl91c2VTdGF0ZTIxIiwiX3VzZVN0YXRlMjIiLCJsYXlvdXRNb2RlIiwic2V0TGF5b3V0TW9kZSIsImV4cGFuZGVkIiwiaXNGbG9hdGluZyIsImNvbnRlbnRXcmFwcGVyUmVmIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsImRyYWdQb3NpdGlvbiIsInNldERyYWdQb3NpdGlvbiIsIl91c2VGbG9hdGluZ1BhbmVsRHJhZyIsInRpbHRNb3Rpb24iLCJzdGFydFBvaW50ZXJUcmFja2luZyIsInNhbXBsZVBvaW50ZXJNb3ZlIiwiZW5kUG9pbnRlclRyYWNraW5nIiwiZHJhZ1N0YXRlUmVmIiwiY2xhbXBEcmFnUG9zaXRpb24iLCJ4IiwieSIsImNvbnRlbnRXcmFwcGVyIiwiY3VycmVudCIsIl9jb250ZW50V3JhcHBlciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWF4WCIsIk1hdGgiLCJtYXgiLCJpbm5lcldpZHRoIiwibWF4WSIsImlubmVySGVpZ2h0IiwibWluIiwicHJldiIsInBhZCIsImhhbmRsZURyYWdFbmQiLCJldmVudCIsIl9kcmFnU3RhdGVSZWYkY3VycmVudCIsInBvaW50ZXJJZCIsImJvZHkiLCJzdHlsZSIsInVzZXJTZWxlY3QiLCJjdXJzb3IiLCJoYW5kbGVEcmFnTW92ZSIsImRyYWdTdGF0ZSIsImNsaWVudFgiLCJjbGllbnRZIiwibmV4dFBvc2l0aW9uIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJyZXNvbHZlZERyYWdQb3NpdGlvbiIsImhhbmRsZURyYWdTdGFydCIsImJ1dHRvbiIsInRhcmdldCIsImNsb3Nlc3QiLCJyZWN0IiwiaW5pdGlhbFBvc2l0aW9uIiwibGVmdCIsInRvcCIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsIl9vYmplY3RTcHJlYWQiLCJsZW5ndGgiLCJnb1RvQ2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJmaW5kIiwiYWdlbnRJdGVtIiwiaWQiLCJhZ2VudElkIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSIsInNlbmRNZXNzYWdlIiwic3RvcEdlbmVyYXRpb24iLCJzdHJlYW1pbmciLCJ3cml0aW5nIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwicHJvamVjdF9kZWxldGVkIiwiaGFuZGxlUmVzZXRDaGF0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0Iiwic3RvcCIsIm9uTWVyZ2VDcmVhdGVkQWdlbnQiLCJldnQiLCJfcmVmMyIsImRldGFpbCIsIm5leHRBZ2VudCIsIm5hdmlnYXRlSG9tZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25TeW5jRWRpdGVkQWdlbnQiLCJfcmVmNCIsIm9wZW5DaGF0VmlldyIsIm9wZW5OZXdDaGF0V2l0aEFnZW50IiwiX2RldGFpbCIsInNob3dOZXdDaGF0IiwiaGlkZUhlYWRlckFnZW50U2VsZWN0b3IiLCJoYW5kbGVPcGVuTWFya2V0cGxhY2UiLCJoYW5kbGVHb1RvTWFpYWtlciIsIl9jYWxsZWUyIiwibWFpYWtlckFnZW50IiwicmVzcG9uc2UiLCJfdCIsIl9jb250ZXh0MiIsImEiLCJwYXRoIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJhYnJ1cHQiLCJoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyIsImhpZGVGb290ZXJPbk1haWFrZXJNYXJrZXRwbGFjZUhvbWUiLCJtb2RhbFBhbmVsIiwiY2hpbGRyZW4iLCJkaXNwbGF5Iiwib25Hb1RvQ2hhdCIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImFnZW50c05hdkFjdGl2ZSIsImZsb2F0aW5nIiwib25MYXlvdXRNb2RlQ2hhbmdlIiwiZHJhZ2dhYmxlIiwib25EcmFnU3RhcnQiLCJvbkRyYWdNb3ZlIiwib25EcmFnRW5kIiwiaGFzTW9yZSIsImhhc19tb3JlIiwib25BZ2VudFVwZGF0ZSIsImhpZGVBZ2VudFNlbGVjdG9yIiwicmVmcyIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsIm9uRGVsZXRlQWdlbnQiLCJvbkZhdm9yaXRlQWdlbnRVcGRhdGUiLCJoYXNNb3JlQWdlbnRzIiwibG9hZGluZ01vcmVBZ2VudHMiLCJvbkxvYWRNb3JlQWdlbnRzIiwib25Hb1RvTWFpYWtlciIsIm9uUmVzdGFydFN1bW1hcnkiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImNoYXRJZCIsInNob3dGYXFzIiwicmVmIiwiY3JlYXRlUG9ydGFsIiwidGlsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtcbiAgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IE1BSUFFcnJvciB9IGZyb20gJy4uLy4uL2F0b21zL01BSUFFcnJvcidcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWxIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXInXG5pbXBvcnQgeyBTbmFja2JhciB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9TbmFja0Jhci9TbmFja2JhcidcbmltcG9ydCB7IFByb2plY3RTdW1tYXJ5Q29udGVudCB9IGZyb20gJy4uL1Byb2plY3RTdW1tYXJ5Q29udGVudCdcbmltcG9ydCB7IEFibUFnZW50TW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7IGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCwgTWFpYUNoYXRNb2RhbExheW91dE1vZGUgfSBmcm9tICcuL2xheW91dCdcbmltcG9ydCB7IEZsb2F0aW5nUGFuZWxNb3Rpb24sIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vZmxvYXRpbmdQYW5lbE1vdGlvbidcbmltcG9ydCB7IENoYXRBaU1vZGFsRm9vdGVyIH0gZnJvbSAnLi9jb21wb25lbnRzL0NoYXRBaU1vZGFsRm9vdGVyJ1xuaW1wb3J0IHsgdmFsaWRhdGVJc01haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlscy92YWxpZGF0ZUlzTWFpYSdcbmltcG9ydCB7IEFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyB1c2VGYXFzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VGYXFzU3RvcmUnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuXG50eXBlIENoYXRBSU1vZGFsUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBoYW5kbGVDbG9zZT86ICgpID0+IHZvaWRcbiAgcGFyZW50UmVmPzogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PlxufVxuXG5leHBvcnQgY29uc3QgSURfTU9EQUxfQ0hBVF9BR0VOVCA9ICdtb2RhbHMtcG9ydGFsLW1haWEtY2hhdC1hZ2VudCdcblxuY29uc3QgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUgPSAoc2VjdGlvbjogc3RyaW5nKSA9PiB7XG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJyAmJiAod2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMgfHwgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIGlmICgoc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IHNlY3Rpb24gPT09ICdjbGllbnQnKSAmJiB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1vZGFsID0gKHsgaGFuZGxlQ2xvc2UgfTogQ2hhdEFJTW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oW1NFQ1RJT05TLmFibUFnZW50XSlcbiAgY29uc3QgYW1wbGl0dWRFdmVudCA9IHVzZUV2ZW50KClcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHVzZUZhcXNTdG9yZS5nZXRTdGF0ZSgpLmNsZWFyRmFxcygpXG4gICAgaGFuZGxlQ2xvc2U/LigpXG4gIH0sIFtoYW5kbGVDbG9zZV0pXG4gIGNvbnN0IFt1c2VySW5pdGlhbE1lc3NhZ2UsIHNldFVzZXJJbml0aWFsTWVzc2FnZV0gPSB1c2VTdGF0ZTx7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gIH0+KHtcbiAgICBtZXNzYWdlOiAnJyxcbiAgICBhdHRhY2htZW50czogW10sXG4gIH0pXG4gIGNvbnN0IFtpbml0aWFsQ2hhdElkLCBzZXRJbml0aWFsQ2hhdElkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtuZXdDaGF0S2V5LCBzZXROZXdDaGF0S2V5XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gICAgICApID0+IHZvaWQpXG4gICAgfCBudWxsXG4gID4obnVsbClcbiAgY29uc3QgW3N0b3BHZW5lcmF0aW9uRnVuY3Rpb24sIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dID0gdXNlU3RhdGU8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzU3RyZWFtaW5nLCBzZXRJc1N0cmVhbWluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IFtyZWZldGNoQ2hhdHMsIHNldFJlZmV0Y2hDaGF0c10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRPcHRpb24sIHNldEN1cnJlbnRPcHRpb25dID0gdXNlU3RhdGUob3B0aW9ucy5ob21lKVxuICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBoYW5kbGVycyA9IHVzZU1lbW8oKCkgPT4gYnVpbGRIYW5kbGVycyhzZXRDdXJyZW50T3B0aW9uLCBzZXRIYXNFcnJvciksIFtdKVxuICBjb25zdCBbc2lkZWJhckhhc0Vycm9yLCBzZXRTaWRlYmFySGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHJlc2V0U2VsZWN0ZWRDaGF0UmVmID0gdXNlUmVmPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhbmcgPSBpMThuLmxhbmd1YWdlID09PSAnYnInID8gJ3B0LWJyJyA6IGkxOG4ubGFuZ3VhZ2VcblxuICBtb21lbnQubG9jYWxlKGxhbmcpXG5cbiAgY29uc3Qge1xuICAgIHNlbGVjdEFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIGNvbnN0IHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcjogYWdlbnRFcnJvcixcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9ID0gdXNlR2V0QWdlbnRzKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWU6IGhhbmRsZXJzLmhvbWUgfSlcblxuICBjb25zdCBpc01BSUEgPSB2YWxpZGF0ZUlzTWFpYShhZ2VudCBhcyBBZ2VudClcblxuICBjb25zdCB1c2VySGFzUGVybWlzc2lvbnMgPVxuICAgICh1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5jcmVhdGUgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmVkaXQgfHxcbiAgICAgIHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmRlbGV0ZSkgJiZcbiAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gIGNvbnN0IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGlzR2xvYmFsU3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJ1xuICAgIGNvbnN0IGlzUHJvamVjdFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09IG51bGwpXG4gICAgY29uc3QgaXNDbGllbnRTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnXG4gICAgY29uc3QgaXNNYWlha2VyID0gaXNHbG9iYWxTcGVjaWFsaXN0ICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGlzR2xvYmFsU3BlY2lhbGlzdCAmJiAhaXNNYWlha2VyICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lXSlcblxuICBjb25zdCBpc01haWFrZXJBZ2VudFNlbGVjdGVkID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgaXNNQUlBICYmXG4gICAgICBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJyAmJlxuICAgICAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiZcbiAgICAgIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGFnZW50Py5uYW1lIHx8ICcnKSxcbiAgICBbaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8udHlwZSwgYWdlbnQ/Lm5hbWVdXG4gIClcblxuICBjb25zdCBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlID0gdXNlTWVtbygoKTogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHJldHVybiAnbXlBZ2VudHMnXG4gICAgaWYgKGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpIHJldHVybiAnbWFpYWtlcidcbiAgICByZXR1cm4gbnVsbFxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkXSlcblxuICAvKiBSZWFjdGl2YXIgY29uIGxhIGZpbGEg4oCcTWlzIGFnZW50ZXPigJ0gZW4gU2lkZWJhcjogbXlBZ2VudHNDb3VudCBwcm9wXG4gIGNvbnN0IHNpZGViYXJNeUFnZW50c0NvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGFnZW50cy5kYXRhLmZpbHRlcihcbiAgICAgIGEgPT4gIShhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGEubmFtZSB8fCAnJykpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KCdzaWRlYmFyJylcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihudWxsKVxuICBjb25zdCB7IHRpbHRNb3Rpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nLCBzYW1wbGVQb2ludGVyTW92ZSwgZW5kUG9pbnRlclRyYWNraW5nIH0gPVxuICAgIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdChpc0Zsb2F0aW5nKVxuICBjb25zdCBkcmFnU3RhdGVSZWYgPSB1c2VSZWY8e1xuICAgIHBvaW50ZXJJZDogbnVtYmVyXG4gICAgb2Zmc2V0WDogbnVtYmVyXG4gICAgb2Zmc2V0WTogbnVtYmVyXG4gIH0gfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGNsYW1wRHJhZ1Bvc2l0aW9uID0gdXNlQ2FsbGJhY2soKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgcmV0dXJuIHsgeCwgeSB9XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IG9mZnNldCA9IDE2XG4gICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVyV2lkdGggLSB3aWR0aCAtIG9mZnNldClcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWlnaHQgLSBvZmZzZXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogTWF0aC5taW4oTWF0aC5tYXgoeCwgb2Zmc2V0KSwgbWF4WCksXG4gICAgICB5OiBNYXRoLm1pbihNYXRoLm1heCh5LCBvZmZzZXQpLCBtYXhZKSxcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHByZXYueCwgcHJldi55KVxuICAgICAgfVxuICAgICAgY29uc3QgcGFkID0gMTZcbiAgICAgIGNvbnN0IHggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkXG4gICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICAgIH0pXG4gIH0sIFtsYXlvdXRNb2RlLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlbmRQb2ludGVyVHJhY2tpbmcoKVxuICAgICAgaWYgKGRyYWdTdGF0ZVJlZi5jdXJyZW50Py5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJ1xuICAgIH0sXG4gICAgW2VuZFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdTdGF0ZSA9IGRyYWdTdGF0ZVJlZi5jdXJyZW50XG4gICAgICBpZiAoIWRyYWdTdGF0ZSB8fCBkcmFnU3RhdGUucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNhbXBsZVBvaW50ZXJNb3ZlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IGNsYW1wRHJhZ1Bvc2l0aW9uKGV2ZW50LmNsaWVudFggLSBkcmFnU3RhdGUub2Zmc2V0WCwgZXZlbnQuY2xpZW50WSAtIGRyYWdTdGF0ZS5vZmZzZXRZKVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICAgIGlmIChwcmV2ICYmIHByZXYueCA9PT0gbmV4dFBvc2l0aW9uLnggJiYgcHJldi55ID09PSBuZXh0UG9zaXRpb24ueSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRQb3NpdGlvblxuICAgICAgfSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgc2FtcGxlUG9pbnRlck1vdmVdXG4gIClcblxuICBjb25zdCByZXNvbHZlZERyYWdQb3NpdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGlmIChkcmFnUG9zaXRpb24pIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgY29uc3QgcGFkID0gMTZcbiAgICBjb25zdCB4ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkIDogcGFkXG4gICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgfSwgW2xheW91dE1vZGUsIGRyYWdQb3NpdGlvbiwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIWlzRmxvYXRpbmcgfHwgZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICAgIGlmICh0YXJnZXQuY2xvc2VzdCgnYnV0dG9uLCBhLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW3JvbGU9XCJidXR0b25cIl0sIFtkYXRhLW5vLWRyYWc9XCJ0cnVlXCJdJykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjdCA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBpbml0aWFsUG9zaXRpb24gPSByZXNvbHZlZERyYWdQb3NpdGlvbiA/PyBjbGFtcERyYWdQb3NpdGlvbihyZWN0LmxlZnQsIHJlY3QudG9wKVxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFggPSBldmVudC5jbGllbnRYIC0gaW5pdGlhbFBvc2l0aW9uLnhcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRZID0gZXZlbnQuY2xpZW50WSAtIGluaXRpYWxQb3NpdGlvbi55XG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihpbml0aWFsUG9zaXRpb24pXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgcG9pbnRlcklkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgIG9mZnNldFg6IHBvaW50ZXJPZmZzZXRYLFxuICAgICAgICBvZmZzZXRZOiBwb2ludGVyT2Zmc2V0WSxcbiAgICAgIH1cblxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnZ3JhYmJpbmcnXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXREcmFnZ2FibGUpXG4gICAgICBzdGFydFBvaW50ZXJUcmFja2luZyhldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBpc0Zsb2F0aW5nLCByZXNvbHZlZERyYWdQb3NpdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBzdGFydENoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2Uoe1xuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlIHx8ICcnLFxuICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMgfHwgW10sXG4gICAgICAgIC4uLihmYXFJZCA/IHsgZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGFnZW50U3VnZ2VzdGlvbklkID8geyBhZ2VudFN1Z2dlc3Rpb25JZCB9IDoge30pLFxuICAgICAgICAuLi4obWVudGlvbnMgJiYgbWVudGlvbnMubGVuZ3RoID4gMCA/IHsgbWVudGlvbnMgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhcnRDaGF0KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICAvLyBObyBib3JyYXIgZWwgY2xpZW50ZSBzaSBlcyBhZ2VudGUgZGUgY2xpZW50ZXMgKGlndWFsIHF1ZSBlbCBwcm95ZWN0byBzZSBtYW50aWVuZSlcbiAgICAgIGlmIChhZ2VudD8uZW50aXR5ICE9PSAnY2xpZW50Jykge1xuICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIWFnZW50IHx8IGFnZW50Py5pc19kZWxldGVkIHx8IGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fCBhZ2VudD8ucHJvamVjdF9kZWxldGVkKSAmJlxuICAgICAgYWdlbnRzLmRhdGEubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbMF0pXG4gICAgfVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW1xuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBvcHRpb25zLmNoYXQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgYWdlbnQsXG4gICAgYWdlbnRzLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldENsaWVudCxcbiAgXSlcblxuICBjb25zdCBoYW5kbGVSZXNldENoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICBoYW5kbGVHb0hvbWUoKVxuICB9LCBbaGFuZGxlR29Ib21lXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBoYW5kbGVHZXRBZ2VudHMoKVxuICAgIH1cbiAgfSwgW2hhbmRsZUdldEFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1lcmdlQ3JlYXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAobmV4dEFnZW50Py5pZCkge1xuICAgICAgICBhZGRBZ2VudChuZXh0QWdlbnQsIHsgbmF2aWdhdGVIb21lOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbYWRkQWdlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TeW5jRWRpdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghbmV4dEFnZW50Py5pZCkgcmV0dXJuXG4gICAgICB1cGRhdGVBZ2VudChuZXh0QWdlbnQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBuZXh0QWdlbnQuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW3VwZGF0ZUFnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnQ/LmlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5DaGF0VmlldyA9ICgpID0+IHtcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmNoYXQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKiBNaXNtbyBmbHVqbyBxdWUgQ2hhdEFJTXlBZ2VudHMuaGFuZGxlVXNlQWdlbnQgKyBvbkJhY2sgKGhhbmRsZXJzLmhvbWUpLiAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5OZXdDaGF0V2l0aEFnZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgbmV4dEFnZW50ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWw/LmFnZW50XG4gICAgICBpZiAoIW5leHRBZ2VudCkgcmV0dXJuXG5cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdF0pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuICBjb25zdCBoYW5kbGVPcGVuTWFya2V0cGxhY2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVHb1RvTWFpYWtlciA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBsZXQgbWFpYWtlckFnZW50ID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIG1haWFrZXJBZ2VudCA9IChkYXRhLmRhdGEgfHwgW10pLmZpbmQoKGE6IEFnZW50KSA9PiBhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3RdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgPyAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogaXNGbG9hdGluZyA/ICdub25lJyA6ICdjb250ZW50cycgfX0gYXJpYS1oaWRkZW49e2lzRmxvYXRpbmd9PlxuICAgICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgICBvbkdvVG9DaGF0PXtnb1RvQ2hhdH1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldFNpZGViYXJIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2U9e2hhbmRsZU9wZW5NYXJrZXRwbGFjZX1cbiAgICAgICAgICAgIHNob3dOZXdDaGF0PXtzaG93TmV3Q2hhdH1cbiAgICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzPXtzZXRSZWZldGNoQ2hhdHN9XG4gICAgICAgICAgICBoYXNFcnJvcj17c2lkZWJhckhhc0Vycm9yfVxuICAgICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgICAgYWdlbnRzTmF2QWN0aXZlPXtzaWRlYmFyQWdlbnRzTmF2QWN0aXZlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IG51bGx9XG4gICAgICA8U0NDQUlNQ29udGVudCBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfT5cbiAgICAgICAgPENoYXRBSU1vZGFsSGVhZGVyXG4gICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICBvbkxheW91dE1vZGVDaGFuZ2U9e3NldExheW91dE1vZGV9XG4gICAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICAgIGRyYWdnYWJsZT17aXNGbG9hdGluZ31cbiAgICAgICAgICBvbkRyYWdTdGFydD17aGFuZGxlRHJhZ1N0YXJ0fVxuICAgICAgICAgIG9uRHJhZ01vdmU9e2hhbmRsZURyYWdNb3ZlfVxuICAgICAgICAgIG9uRHJhZ0VuZD17aGFuZGxlRHJhZ0VuZH1cbiAgICAgICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgIGhhc0Vycm9yPXshIWFnZW50RXJyb3J9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBsb2FkaW5nTW9yZT17bG9hZGluZ01vcmV9XG4gICAgICAgICAgaGFzTW9yZT17YWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgIGhhbmRsZVJlc2V0Q2hhdD17aGFuZGxlUmVzZXRDaGF0fVxuICAgICAgICAgIG9uQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgbG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgIHNvcnRBZ2VudHNMaXN0PXtzb3J0QWdlbnRzTGlzdH1cbiAgICAgICAgICBoaWRlQWdlbnRTZWxlY3Rvcj17aGlkZUhlYWRlckFnZW50U2VsZWN0b3J9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBvbkRlbGV0ZUFnZW50PXtoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50c31cbiAgICAgICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIGhhc01vcmVBZ2VudHM9eyEhYWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgICAgbG9hZGluZ01vcmVBZ2VudHM9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgICAgb25Mb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgICBvbkdvVG9NYWlha2VyPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaGlkZUZvb3Rlck9uTWFpYWtlck1hcmtldHBsYWNlSG9tZSAmJlxuICAgICAgICAgICFoYXNFcnJvciAmJlxuICAgICAgICAgICFsb2FkaW5nICYmXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICBzaG93RmFxcz17Y29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUNvbnRlbnQ+XG4gICAgPC8+XG4gIClcblxuICBjb25zdCBjb250ZW50V3JhcHBlciA9IChcbiAgICA8U0NDQUlNQ29udGVudFdyYXBwZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30gcmVmPXtjb250ZW50V3JhcHBlclJlZn0+XG4gICAgICB7bW9kYWxQYW5lbH1cbiAgICA8L1NDQ0FJTUNvbnRlbnRXcmFwcGVyPlxuICApXG5cbiAgcmV0dXJuIChcbiAgICBzZWxlY3RvciAmJlxuICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0NBSU1XcmFwcGVyIGV4cGFuZGVkPXtleHBhbmRlZH0gbGF5b3V0TW9kZT17bGF5b3V0TW9kZX0gZHJhZ1Bvc2l0aW9uPXtyZXNvbHZlZERyYWdQb3NpdGlvbn0+XG4gICAgICAgIDxGbG9hdGluZ1BhbmVsTW90aW9uIHRpbHQ9e3RpbHRNb3Rpb259IGV4cGFuZGVkPXtleHBhbmRlZH0+XG4gICAgICAgICAge2NvbnRlbnRXcmFwcGVyfVxuICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvU0NDQUlNV3JhcHBlcj4sXG4gICAgICBzZWxlY3RvclxuICAgIClcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBRUVBLFdBQVcsRUFDWEMsT0FBTyxFQUNQQyxRQUFRLEVBQ1JDLE1BQU0sRUFDTkMsU0FBUyxFQUNUQyxlQUFlLFFBRVYsT0FBTztBQUNkLE9BQU9DLFFBQVEsTUFBTSxXQUFXO0FBQ2hDLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsU0FBUyxRQUFRLHVCQUF1QjtBQUVqRCxTQUFTQyxhQUFhLFFBQVEsa0JBQWtCO0FBQ2hELFNBQVNDLGFBQWEsRUFBRUMsT0FBTyxRQUFRLGFBQWE7QUFDcEQsU0FBU0MsT0FBTyxRQUFRLFlBQVk7QUFDcEMsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQyxnQkFBZ0IsUUFBUSxpQ0FBaUM7QUFHbEUsU0FBU0MsaUJBQWlCLFFBQVEsa0RBQWtEO0FBQ3BGLFNBQVNDLFFB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
|