@projectcor/maia-components 2.11.101 → 2.11.102
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/CHANGELOG.md +8 -0
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +4 -18
- package/lib/components/atoms/MAIAMessage/MAIAMessage.js +4 -18
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.config.js +23 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.interfaces.js +2 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.js +51 -0
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.styles.js +26 -0
- package/lib/components/atoms/MaiaStreamdown/index.js +2 -0
- package/lib/components/atoms/index.js +2 -1
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +6 -20
- package/lib/components/molecules/ChatAIMessages/newStyles.js +3 -15
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +4 -23
- package/lib/components/organisms/ChatAI/ChatAI.js +1 -3
- package/lib/hooks/useStreamdownStyles.js +7 -14
- package/lib/index.css +14 -250
- package/lib/streamdownStyles.js +7 -4
- package/lib/utils/ensureStreamdownStyles.js +21 -0
- package/package.json +1 -1
|
@@ -19,15 +19,13 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
19
19
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
20
20
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
21
21
|
import React, { memo, useCallback, useEffect, useLayoutEffect, useRef, useState, createElement as _createElement } from 'react';
|
|
22
|
-
import { Streamdown } from 'streamdown';
|
|
23
|
-
import { createCodePlugin } from '@streamdown/code';
|
|
24
22
|
import { ArrowSmallDown } from '@projectcor/icons/lib/components/ArrowSmallDown';
|
|
25
23
|
import { AttachmentCard } from '../../atoms/AttachmentCard/AttachmentCard';
|
|
26
24
|
import { ApprovalBox } from '../../atoms/ApprovalBox/ApprovalBox';
|
|
27
25
|
import { AttachmentPreviewModal } from '../../atoms/AttachmentPreviewModal';
|
|
28
26
|
import { AttachmentCardAudio } from '../../atoms/AttachmentCard/AttachmentCardAudio';
|
|
27
|
+
import { MaiaStreamdown } from '../../atoms/MaiaStreamdown';
|
|
29
28
|
import { ChatHistoryRole } from '../../../types/Chat';
|
|
30
|
-
import { MAIA_STREAMDOWN_REHYPE_PLUGINS } from '../../../utils/maiaStreamdownRehypePlugins';
|
|
31
29
|
import { renderTextWithMentions, hasInlineMarkers } from '../../../utils/renderContextMentions';
|
|
32
30
|
import { isMaiakerAgent } from '../../../utils/agentDisplayName';
|
|
33
31
|
import { useUser } from '../../../context/cor-user';
|
|
@@ -51,9 +49,6 @@ import { ChatAICreateAgentActions } from './ChatAICreateAgentActions';
|
|
|
51
49
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
52
50
|
import { downloadFileFromUrl } from '../../../utils/fileDownloadHelper';
|
|
53
51
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
54
|
-
var code = createCodePlugin({
|
|
55
|
-
themes: ['github-light', 'github-light']
|
|
56
|
-
});
|
|
57
52
|
var MessageWrapper = function MessageWrapper(_ref) {
|
|
58
53
|
var isCurrentUser = _ref.isCurrentUser,
|
|
59
54
|
children = _ref.children,
|
|
@@ -150,23 +145,14 @@ var StreamingMessageBody = /*#__PURE__*/memo(function (props) {
|
|
|
150
145
|
}) :
|
|
151
146
|
/*#__PURE__*/
|
|
152
147
|
// Sin mentions, pasar a Streamdown para markdown support
|
|
153
|
-
_jsx(
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
rehypePlugins: MAIA_STREAMDOWN_REHYPE_PLUGINS,
|
|
148
|
+
_jsx(MaiaStreamdown, {
|
|
149
|
+
variant: "chat",
|
|
150
|
+
isCurrentUser: props.isCurrentUser,
|
|
151
|
+
isFrontendCancelled: props.isFrontendCancelled,
|
|
158
152
|
components: {
|
|
159
153
|
a: EntityLinkCustomLink
|
|
160
154
|
},
|
|
161
|
-
linkSafety: {
|
|
162
|
-
enabled: false
|
|
163
|
-
},
|
|
164
155
|
isAnimating: !!props.isStreaming,
|
|
165
|
-
shikiTheme: ['github-light', 'github-light'],
|
|
166
|
-
controls: {
|
|
167
|
-
table: false,
|
|
168
|
-
code: false
|
|
169
|
-
},
|
|
170
156
|
children: displayText
|
|
171
157
|
})
|
|
172
158
|
}), props.isAssistant && !props.isError && !props.isFrontendCancelled && !props.approval && !props.isStreaming && /*#__PURE__*/_jsx(MessageFeedback, {
|
|
@@ -814,4 +800,4 @@ var ChatAIMessagesInner = function ChatAIMessagesInner(_ref5) {
|
|
|
814
800
|
});
|
|
815
801
|
};
|
|
816
802
|
export var ChatAIMessages = /*#__PURE__*/React.memo(ChatAIMessagesInner);
|
|
817
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiU3RyZWFtZG93biIsImNyZWF0ZUNvZGVQbHVnaW4iLCJBcnJvd1NtYWxsRG93biIsIkF0dGFjaG1lbnRDYXJkIiwiQXBwcm92YWxCb3giLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiQXR0YWNobWVudENhcmRBdWRpbyIsIkNoYXRIaXN0b3J5Um9sZSIsIk1BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOUyIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJoYXNJbmxpbmVNYXJrZXJzIiwiaXNNYWlha2VyQWdlbnQiLCJ1c2VVc2VyIiwidXNlVCIsInVzZUNoYXRNYW5hZ2VyIiwidXNlU21vb3RoU3RyZWFtVGV4dCIsInVzZVN0cmVhbWluZ01lc3NhZ2UiLCJMb2FkaW5nVGV4dCIsIkFnZW50QWN0aXZpdHlJbmRpY2F0b3IiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwicmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IiwiTG9hZGVyIiwiRmFkZSIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJFbnRpdHlMaW5rQ3VzdG9tTGluayIsImdldEVudGl0eUxpbmtXcmFwcGVyQ2xhc3NOYW1lIiwiQ2hhdEFJU3VnZ2VzdGlvbnMiLCJDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMiLCJFVkVOVFMiLCJ1c2VFdmVudCIsImRvd25sb2FkRmlsZUZyb21VcmwiLCJqc3giLCJfanN4IiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3hzIiwiX2pzeHMiLCJjb2RlIiwidGhlbWVzIiwiTWVzc2FnZVdyYXBwZXIiLCJfcmVmIiwiaXNDdXJyZW50VXNlciIsImNoaWxkcmVuIiwicHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJNZXNzYWdlQ29tcG9uZW50IiwiX29iamVjdFNwcmVhZCIsIk1lc3NhZ2VDb250ZW50V3JhcHBlciIsIl9yZWYyIiwiX2V4Y2x1ZGVkMiIsIk1lc3NhZ2VDb250ZW50Q29tcG9uZW50IiwiTWVzc2FnZU9wdGlvbnMiLCJfcmVmMyIsIm9wdGlvbnMiLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZWxlY3RlZE9wdGlvbiIsInNldFNlbGVjdGVkT3B0aW9uIiwiaGFuZGxlU2VsZWN0Iiwib3B0aW9uIiwibWFwIiwiJGhhc1NlbGVjdGlvbiIsIiRkaW1tZWQiLCJpZCIsIm9uQ2xpY2siLCJuYW1lIiwiU3RyZWFtaW5nTWVzc2FnZUJvZHkiLCJfcHJvcHMkY3JlYXRlQWdlbnRGb2wiLCJfcHJvcHMkc3VnZ2VzdGlvbnMiLCJzdHJlYW1pbmdUZXh0IiwiaXNTdHJlYW1pbmciLCJtZXNzYWdlSWQiLCJyYXdUZXh0IiwibWVzc2FnZSIsIndpbkZsYWdzIiwid2luZG93IiwiZGlzcGxheVRleHQiLCJlbmFibGVkIiwibWF4Q2hhcnNQZXJGcmFtZSIsInNuYXBUb1dvcmRCb3VuZGFyeSIsInN0cmVhbUxhZ01zIiwidGFyZ2V0TGFnTXMiLCJzdHJlYW1BZGFwdCIsImFkYXB0VG9CYWNrZW5kUmF0ZSIsInN0cmVhbUJ1ZmZlck1zIiwidGFyZ2V0QnVmZmVyTXMiLCJzdHJlYW1NaW5CdWZmZXIiLCJtaW5CdWZmZXJDaGFycyIsInN0cmVhbVdhcm11cE1zIiwid2FybXVwTXMiLCJjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkIiwiY3JlYXRlQWdlbnRGb2xsb3dVcCIsImFnZW50SWQiLCJoYXNNZW50aW9ucyIsIm1lbnRpb25Ob2RlcyIsImlzRnJvbnRlbmRDYW5jZWxsZWQiLCJjbGFzc05hbWUiLCJzdHlsZSIsImRpc3BsYXkiLCJwbHVnaW5zIiwicmVoeXBlUGx1Z2lucyIsImNvbXBvbmVudHMiLCJhIiwibGlua1NhZmV0eSIsImlzQW5pbWF0aW5nIiwic2hpa2lUaGVtZSIsImNvbnRyb2xzIiwidGFibGUiLCJpc0Fzc2lzdGFudCIsImlzRXJyb3IiLCJhcHByb3ZhbCIsImNvbnRlbnQiLCJzb3VyY2VzIiwiaGFuZGxlRmVlZGJhY2siLCJoYW5kbGVGZWVkYmFja0NsaWNrIiwiZGlzYWJsZUZlZWRiYWNrIiwic3VnZ2VzdGlvbnMiLCJsZW5ndGgiLCJvblNlbGVjdFN1Z2dlc3Rpb24iLCJzdWdnZXN0aW9uIiwiaGFuZGxlU3VnZ2VzdGlvbkNsaWNrIiwiZGlzYWJsZWQiLCJzdWdnZXN0aW9uc0Rpc2FibGVkIiwiaGlkZGVuIiwiaXNMYXN0TWVzc2FnZSIsIk1lc3NhZ2VJdGVtIiwiX3Byb3BzJHByb2plY3RNZXRhZGF0IiwidXNlciIsImF1dGhVc2VyIiwiaXNDaGFuZ2VQcm9qZWN0IiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsInJvbGUiLCJhdHRhY2htZW50cyIsImFwcHJvdmFsU3RhdHVzIiwiaGFzU2VsZWN0ZWRTdWdnZXN0aW9uIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJwcmV2aWV3QXR0YWNobWVudCIsInNldFByZXZpZXdBdHRhY2htZW50IiwiVVNFUiIsInRvU3RyaW5nIiwiQVNTSVNUQU5UIiwiaXNTdHJlYW1pbmdQbGFjZWhvbGRlciIsImlzQWN0aXZlU3RyZWFtaW5nIiwiaXNUaGlua2luZyIsIm1lc3NhZ2VBdHRhY2htZW50cyIsIkFycmF5IiwiaXNBcnJheSIsImhhbmRsZUF0dGFjaG1lbnRDbGljayIsImF0dGFjaG1lbnQiLCJmaWxlIiwiRmlsZSIsIm9yaWdpbmFsRmlsZSIsInVybF90aHVtYm5haWwiLCJ1cmxfb3JpZ2luYWwiLCJ1cmxfZmlsZSIsImhhbmRsZUNsb3NlUHJldmlldyIsImhhbmRsZUF0dGFjaG1lbnREb3dubG9hZCIsIl9yZWY0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJleHRlbnNpb24iLCJmaWxlTmFtZSIsImZpbGVVcmwiLCJibG9iVXJsIiwiZG93bmxvYWRlZEZpbGUiLCJsaW5rIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImluY2x1ZGVzIiwiY29uY2F0IiwidHlwZSIsInNlbnQiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJhYnJ1cHQiLCJkb2N1bWVudCIsImhyZWYiLCJkb3dubG9hZCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwic2V0VGltZW91dCIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIiwiY29uc29sZSIsImVycm9yIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYXNGZWVkYmFjayIsIiRpc0Fzc2lzdGFudCIsIm1lc3NhZ2VFeHRyYUNvbnRlbnQiLCJmZWVkYmFjayIsInNlc3Npb25JZCIsInNwbGl0IiwiZmlsdGVyIiwicXVlc3Rpb25JZCIsImpvaW4iLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJfYXR0YWNobWVudCRuYW1lIiwiYXR0YWNobWVudFR5cGUiLCJ0b0xvd2VyQ2FzZSIsImF0dGFjaG1lbnROYW1lIiwiaXNBdWRpb0ZpbGUiLCJzdGFydHNXaXRoIiwic29tZSIsImV4dCIsImVuZHNXaXRoIiwicG9zaXRpb25JbmRleCIsIm9uRG93bmxvYWQiLCJwZW5kaW5nX2FjdGlvbnMiLCJhY3Rpb25zIiwic3RhdHVzIiwib25BcHByb3ZlIiwidGhyZWFkSWRzIiwib25SZWplY3QiLCJpc1Byb2plY3REZWxldGVkIiwicHJvamVjdE1ldGFkYXRhIiwiaXNfZGVsZXRlZCIsImlzRXhwYW5kZWQiLCJleHBhbmRlZCIsImhpdGxJbnN0YW5jZUlkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwid2FybmluZ01lc3NhZ2UiLCJ3YXJuaW5nX21lc3NhZ2UiLCJtYW51YWxBcHByb3ZhbERldGVjdGVkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiaXNPcGVuIiwib25DbG9zZSIsIkNoYXRBSU1lc3NhZ2VzSW5uZXIiLCJfcmVmNSIsInVzZXJJbml0aWFsTWVzc2FnZSIsImluaXRpYWxDaGF0SWQiLCJvbkVycm9yIiwib25TZW5kTWVzc2FnZVJlYWR5Iiwib25TY3JvbGxUb0JvdHRvbSIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJhZ2VudCIsImV2ZW50IiwibWVzc2FnZXNSZWYiLCJjaGF0SW5pdGlhbGl6ZWRSZWYiLCJpc0xvYWRpbmdNb3JlUmVmIiwidXNlclNjcm9sbGluZ1JlZiIsInNjcm9sbFRocmVzaG9sZFJlZiIsImxhc3RTY3JvbGxUb3BSZWYiLCJzaG93U2Nyb2xsVG9Cb3R0b21SZWYiLCJzY3JvbGxSYWZSZWYiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInNob3dTY3JvbGxUb0JvdHRvbSIsInNldFNob3dTY3JvbGxUb0JvdHRvbSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyIsInNldFNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJfdXNlQ2hhdE1hbmFnZXIiLCJjaGF0SWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlcyIsImxvYWRpbmdNZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsIndhaXRpbmdSZXNwb25zZSIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwic3RyZWFtQWN0aXZpdHkiLCJhY3RpdmVMb2FkaW5ncyIsInNlbmRNZXNzYWdlIiwiY2hhbmdlUHJvamVjdCIsImluaXRpYWxpemVDaGF0IiwiaGFuZGxlU2Nyb2xsIiwic3RvcEdlbmVyYXRpb24iLCJ0cmltIiwiaXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50IiwiYWlDaGF0U3VnZ2VzdGVkQW5zd2VyIiwiYWdlbnRfdHlwZSIsIl9kZWZpbmVQcm9wZXJ0eSIsInRhcmdldE1lc3NhZ2UiLCJmaW5kIiwibXNnIiwiaXNSZXRyeVN1Z2dlc3Rpb24iLCJsYXN0VXNlck1lc3NhZ2UiLCJhdCIsInJldHJ5QXR0YWNobWVudHMiLCJlbnRpdHkiLCJ1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5IiwiZWwiLCJjdXJyZW50Iiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZGlzdGFuY2VGcm9tQm90dG9tIiwic2hvdWxkU2hvdyIsInNjcm9sbFRvQm90dG9tUmFmIiwib3B0cyIsIl9vcHRzJHNraXBJZlVzZXJTY3JvbCIsInNraXBJZlVzZXJTY3JvbGxpbmciLCJfb3B0cyRkZWxheU1zIiwiZGVsYXlNcyIsInJ1biIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImhhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b20iLCJzY3JvbGxUbyIsInRvcCIsImJlaGF2aW9yIiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbldpdGhTY3JvbGwiLCJoYW5kbGVTY3JvbGxUb0JvdHRvbSIsImUiLCJjb250YWluZXIiLCJjdXJyZW50VGFyZ2V0IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJpc1Njcm9sbGluZ1VwIiwiaXNOZWFyQm90dG9tIiwic2VuZE1lc3NhZ2VSZWYiLCJzdG9wR2VuZXJhdGlvblJlZiIsIm9uU2VuZE1lc3NhZ2VSZWFkeVJlZiIsInNlbmRNZXNzYWdlUHJveHlSZWYiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwibWVudGlvbnMiLCJmdWFJZCIsInNjSWQiLCJzdG9wR2VuZXJhdGlvblByb3h5UmVmIiwicmFmSWQiLCJsYXN0SGVpZ2h0IiwidGljayIsImN1cnJlbnRIZWlnaHQiLCJsYXN0TWVzc2FnZUlkUmVmIiwibGFzdE1lc3NhZ2VzTGVuZ3RoUmVmIiwiX2xhc3RNZXNzYWdlJGlkIiwibGFzdE1lc3NhZ2UiLCJsYXN0SWQiLCJwcmV2SWQiLCJwcmV2TGVuIiwiaXNOZXdNZXNzYWdlIiwiaXNBdEJvdHRvbSIsImhhc0luaXRpYWxNZXNzYWdlIiwiaXNBcHByb3ZhbCIsImlzQW5zd2VyT3JRdWVzdGlvbiIsImF0dGFjaG1lbnRzQ291bnQiLCJzdHJlYW1Mb2FkaW5nRGlzcGxheSIsImhhc0F0dGFjaG1lbnRzIiwiQm9vbGVhbiIsImlzU2Nyb2xsT25QYXJlbnQiLCJleHBhbmRlZFJlZiIsInNhdmVkU2Nyb2xsVG9wIiwiZmlsbCIsIm1lc3NhZ2VzQ29udGVudCIsInRleHQiLCJfbWVzc2FnZSRhdHRhY2htZW50cyIsIl9tZXNzYWdlJHNvdXJjZXMiLCJfbWVzc2FnZSRwcm9qZWN0IiwiX21lc3NhZ2UkaWQiLCJpc0Fzc2lzdGFudE1lc3NhZ2UiLCJwcm9qZWN0IiwibWVzc2FnZUZlZWRiYWNrIiwid2FzSGVscGZ1bCIsIlRIVU1CU19VUCIsIlRIVU1CU19ET1dOIiwibWVzc2FnZUtleSIsImtleSIsImFjdGl2aXR5IiwiJHNjcm9sbE9uUGFyZW50IiwicmVmIiwib25TY3JvbGwiLCIkaXNNYXJrZXRwbGFjZUdsb2JhbCIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJDaGF0QUlNZXNzYWdlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNZXNzYWdlcy9DaGF0QUlNZXNzYWdlcy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby11bnN0YWJsZS1uZXN0ZWQtY29tcG9uZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCBSZWFjdCwgeyBGQywgbWVtbywgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VMYXlvdXRFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFN0cmVhbWRvd24gfSBmcm9tICdzdHJlYW1kb3duJ1xuaW1wb3J0IHsgY3JlYXRlQ29kZVBsdWdpbiB9IGZyb20gJ0BzdHJlYW1kb3duL2NvZGUnXG5pbXBvcnQgeyBBcnJvd1NtYWxsRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Fycm93U21hbGxEb3duJ1xuXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXBwcm92YWxCb3ggfSBmcm9tICcuLi8uLi9hdG9tcy9BcHByb3ZhbEJveC9BcHByb3ZhbEJveCdcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TW9kYWwgfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50UHJldmlld01vZGFsJ1xuaW1wb3J0IHsgQXR0YWNobWVudENhcmRBdWRpbyB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkQXVkaW8nXG5pbXBvcnQgeyBNQUlBTWVzc2FnZVByb3BzIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQU1lc3NhZ2UvTUFJQU1lc3NhZ2UuaW50ZXJmYWNlcydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0SGlzdG9yeVJvbGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgTUFJQV9TVFJFQU1ET1dOX1JFSFlQRV9QTFVHSU5TIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbWFpYVN0cmVhbWRvd25SZWh5cGVQbHVnaW5zJ1xuaW1wb3J0IHsgcmVuZGVyVGV4dFdpdGhNZW50aW9ucywgaGFzSW5saW5lTWFya2VycyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcblxuaW1wb3J0IHsgaXNNYWlha2VyQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQ09SVXNlciwgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5cbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgdXNlQ2hhdE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlcidcbmltcG9ydCB7IHVzZVNtb290aFN0cmVhbVRleHQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbW9vdGhTdHJlYW1UZXh0J1xuaW1wb3J0IHsgdXNlU3RyZWFtaW5nTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVN0cmVhbWluZ01lc3NhZ2UnXG5cbmltcG9ydCB7IExvYWRpbmdUZXh0IH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGluZ1RleHQnXG5pbXBvcnQgeyBBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvQWdlbnRBY3Rpdml0eUluZGljYXRvcidcbmltcG9ydCB7IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQsIHJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBGYWRlIH0gZnJvbSAnLi4vLi4vYXRvbXMvRmFkZSdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5cbmltcG9ydCB7IE1lc3NhZ2VGcm9tVXNlciwgTWVzc2FnZUZyb21PdGhlciwgTWVzc2FnZUNvbnRlbnRGcm9tVXNlciwgTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IE1lc3NhZ2VGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7XG4gIFNDQ0FJTWVzc2FnZVdyYXBwZXIsXG4gIFNjcm9sbFRvQm90dG9tQnV0dG9uLFxuICBTQ01lc3NhZ2VzT3V0ZXIsXG4gIFNDTWVzc2FnZXNTY3JvbGwsXG4gIFNDTWVzc2FnZXNJbm5lcixcbiAgU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4sXG4gIFNDT3B0aW9uc0xpc3QsXG4gIFNDT3B0aW9uSXRlbSxcbiAgU0NNZXNzYWdlSXRlbVdyYXBwZXIsXG4gIFNDTWVzc2FnZUl0ZW1Jbm5lcixcbiAgU0NBdHRhY2htZW50c1JvdyxcbiAgU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4sXG59IGZyb20gJy4vbmV3U3R5bGVzJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgRW50aXR5TGlua0N1c3RvbUxpbmssIGdldEVudGl0eUxpbmtXcmFwcGVyQ2xhc3NOYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZW50aXR5TGlua1JlbmRlcidcbmltcG9ydCB7IENoYXRBSVN1Z2dlc3Rpb25zIH0gZnJvbSAnLi9DaGF0QUlTdWdnZXN0aW9ucydcbmltcG9ydCB7IENoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZG93bmxvYWRGaWxlRnJvbVVybCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ZpbGVEb3dubG9hZEhlbHBlcidcblxuY29uc3QgY29kZSA9IGNyZWF0ZUNvZGVQbHVnaW4oeyB0aGVtZXM6IFsnZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddIH0pXG5cbnR5cGUgQ2hhdEFJTWVzc2FnZXNQcm9wcyA9IHtcbiAgdXNlckluaXRpYWxNZXNzYWdlOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gIH1cbiAgaW5pdGlhbENoYXRJZDogc3RyaW5nIHwgbnVsbFxuICBvbkVycm9yOiAoKSA9PiB2b2lkXG4gIG9uU2VuZE1lc3NhZ2VSZWFkeT86IChcbiAgICBzZW5kTWVzc2FnZTogKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4gdm9pZCxcbiAgICBzdG9wR2VuZXJhdGlvbjogKCkgPT4gdm9pZCxcbiAgICBpc1N0cmVhbWluZzogYm9vbGVhbixcbiAgICBpc1dyaXRpbmc6IGJvb2xlYW5cbiAgKSA9PiB2b2lkXG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuXG4gIG9uU2Nyb2xsVG9Cb3R0b20/OiAoKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBhZ2VudHM/OiBBZ2VudFtdXG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuXG50eXBlIE1lc3NhZ2VJdGVtUHJvcHMgPSBDaGF0TWVzc2FnZSAmIHtcbiAgYXV0aFVzZXI6IENPUlVzZXJcbiAgaGFuZGxlU2VsZWN0T3B0aW9uOiAob3B0aW9uOiBQcm9qZWN0KSA9PiB2b2lkXG4gIGhhbmRsZVN1Z2dlc3Rpb25DbGljazogKG1lc3NhZ2VJZDogc3RyaW5nLCBzdWdnZXN0aW9uOiBzdHJpbmcpID0+IHZvaWRcbiAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPzogYm9vbGVhblxuICBoYW5kbGVGZWVkYmFjazogKGZlZWRiYWNrOiBGZWVkYmFjaywgY2hhdE1lc3NhZ2VJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGhhbmRsZUFwcHJvdmFsRGVjaXNpb246ICh0aHJlYWRJZHM6IHN0cmluZ1tdLCBkZWNpc2lvbjogJ2FwcHJvdmUnIHwgJ3JlamVjdCcpID0+IHZvaWRcbiAgZGlzYWJsZUZlZWRiYWNrPzogRmVlZGJhY2sgfCBudWxsXG4gIHNvdXJjZXM/OiBhbnlcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhblxuICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICBleHBhbmRlZD86IGJvb2xlYW5cbn1cblxuaW50ZXJmYWNlIE1lc3NhZ2VXcmFwcGVyUHJvcHMge1xuICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgJ2RhdGEtbWVzc2FnZS1pZCc/OiBzdHJpbmdcbiAgaGFzRmVlZGJhY2s/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUNvbnRlbnRXcmFwcGVyUHJvcHMgPSBNQUlBTWVzc2FnZVByb3BzICYge1xuICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gIGlzRXJyb3I/OiBib29sZWFuXG4gIGlzQ2hhbmdlUHJvamVjdD86IGJvb2xlYW5cbn1cblxuY29uc3QgTWVzc2FnZVdyYXBwZXI6IEZDPE1lc3NhZ2VXcmFwcGVyUHJvcHM+ID0gKHsgaXNDdXJyZW50VXNlciwgY2hpbGRyZW4sIC4uLnByb3BzIH0pID0+IHtcbiAgY29uc3QgTWVzc2FnZUNvbXBvbmVudCA9IGlzQ3VycmVudFVzZXIgPyBNZXNzYWdlRnJvbVVzZXIgOiBNZXNzYWdlRnJvbU90aGVyXG4gIHJldHVybiA8TWVzc2FnZUNvbXBvbmVudCB7Li4ucHJvcHN9PntjaGlsZHJlbn08L01lc3NhZ2VDb21wb25lbnQ+XG59XG5cbmNvbnN0IE1lc3NhZ2VDb250ZW50V3JhcHBlcjogRkM8TWVzc2FnZUNvbnRlbnRXcmFwcGVyUHJvcHM+ID0gKHsgaXNDdXJyZW50VXNlciwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBNZXNzYWdlQ29udGVudENvbXBvbmVudCA9IGlzQ3VycmVudFVzZXIgPyBNZXNzYWdlQ29udGVudEZyb21Vc2VyIDogTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXJcbiAgcmV0dXJuIDxNZXNzYWdlQ29udGVudENvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG59XG5cbmZ1bmN0aW9uIE1lc3NhZ2VPcHRpb25zKHtcbiAgb3B0aW9ucyxcbiAgaGFuZGxlU2VsZWN0T3B0aW9uLFxufToge1xuICBvcHRpb25zOiBQcm9qZWN0W10gfCBudWxsXG4gIGhhbmRsZVNlbGVjdE9wdGlvbjogKG9wdGlvbjogUHJvamVjdCkgPT4gdm9pZFxufSkge1xuICBjb25zdCBbc2VsZWN0ZWRPcHRpb24sIHNldFNlbGVjdGVkT3B0aW9uXSA9IHVzZVN0YXRlPFByb2plY3QgfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdCA9IChvcHRpb246IFByb2plY3QpID0+IHtcbiAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHJldHVyblxuICAgIHNldFNlbGVjdGVkT3B0aW9uKG9wdGlvbilcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24ob3B0aW9uKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NPcHRpb25zTGlzdD5cbiAgICAgIHsob3B0aW9ucyB8fCBbXSkubWFwKG9wdGlvbiA9PiAoXG4gICAgICAgIDxTQ09wdGlvbkl0ZW1cbiAgICAgICAgICAkaGFzU2VsZWN0aW9uPXshIXNlbGVjdGVkT3B0aW9ufVxuICAgICAgICAgICRkaW1tZWQ9eyEhc2VsZWN0ZWRPcHRpb24gJiYgc2VsZWN0ZWRPcHRpb24/LmlkICE9PSBvcHRpb24uaWR9XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlU2VsZWN0KG9wdGlvbil9XG4gICAgICAgICAga2V5PXtvcHRpb24uaWR9XG4gICAgICAgID5cbiAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgIDwvU0NPcHRpb25JdGVtPlxuICAgICAgKSl9XG4gICAgPC9TQ09wdGlvbnNMaXN0PlxuICApXG59XG5cbi8qKiBTb2xvIGVzdGUgY29tcG9uZW50ZSByZS1yZW5kZXJpemEgY3VhbmRvIGNhbWJpYSBlbCB0ZXh0byBlbiBzdHJlYW1pbmcgKGxlZSBkZWwgY29udGV4dCkuICovXG5jb25zdCBTdHJlYW1pbmdNZXNzYWdlQm9keSA9IG1lbW8oXG4gIChwcm9wczoge1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuXG4gICAgaXNDdXJyZW50VXNlcjogYm9vbGVhblxuICAgIGlzQXNzaXN0YW50OiBib29sZWFuXG4gICAgaXNGcm9udGVuZENhbmNlbGxlZD86IGJvb2xlYW5cbiAgICBhcHByb3ZhbD86IE1lc3NhZ2VJdGVtUHJvcHNbJ2FwcHJvdmFsJ11cbiAgICBpc0Vycm9yPzogYm9vbGVhblxuICAgIHNvdXJjZXM/OiBNZXNzYWdlSXRlbVByb3BzWydzb3VyY2VzJ11cbiAgICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdIHwgbnVsbFxuICAgIGNyZWF0ZUFnZW50Rm9sbG93VXA/OiB7IGFnZW50SWQ6IHN0cmluZyB9IHwgbnVsbFxuICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s6IChmOiBGZWVkYmFjaykgPT4gdm9pZFxuICAgIGRpc2FibGVGZWVkYmFjazogRmVlZGJhY2sgfCBudWxsXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICAgIHN1Z2dlc3Rpb25zRGlzYWJsZWQ/OiBib29sZWFuXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhblxuICB9KSA9PiB7XG4gICAgLy8gVGV4dG8gZGVsIHN0cmVhbTogc29sbyBzZSBsZWUgZGVsIHN0b3JlIGN1YW5kbyBlc3RlIG1lbnNhamUgZXMgZWxcbiAgICAvLyBxdWUgZXN0w6EgZW4gc3RyZWFtaW5nLiB1c2VTeW5jRXh0ZXJuYWxTdG9yZSBhw61zbGEgZWwgcmUtcmVuZGVyIGFcbiAgICAvLyBlc3RlIGNvbXBvbmVudGUsIHNpbiB0b2NhciBlbCByZXN0byBkZWwgw6FyYm9sLlxuICAgIGNvbnN0IHN0cmVhbWluZ1RleHQgPSB1c2VTdHJlYW1pbmdNZXNzYWdlKHByb3BzLmlzU3RyZWFtaW5nID8gcHJvcHMubWVzc2FnZUlkIDogbnVsbClcbiAgICBjb25zdCByYXdUZXh0ID0gcHJvcHMuaXNTdHJlYW1pbmcgPyBzdHJlYW1pbmdUZXh0IDogcHJvcHMubWVzc2FnZVxuICAgIC8vIFNtb290aCBzdHJlYW1pbmc6IGRlc2Fjb3BsYSBsYSBjYWRlbmNpYSBkZWwgYmFja2VuZCBkZWwgcmVuZGVyLlxuICAgIC8vIER1cmFudGUgZWwgc3RyZWFtaW5nIGxpYmVyYSBjaGFycyBhIHJpdG1vIGNvbnN0YW50ZSB2w61hIHJBRjsgY3VhbmRvXG4gICAgLy8gdGVybWluYSwgbXVlc3RyYSBlbCB0ZXh0byBmaW5hbCBhbCBpbnN0YW50ZSAoc2luIGFuaW1hY2nDs24gcmVzaWR1YWwpLlxuICAgIC8vIExvcyBkZWZhdWx0cyBkZWwgaG9vayBzZSBhanVzdGFyb24gZW1ww61yaWNhbWVudGUgZW4gc3RhZ2luZzsgYXVuIGFzw61cbiAgICAvLyBzZSBleHBvbmVuIGZsYWdzIGRlIHJ1bnRpbWUgKHdpbmRvdy4qKSBwYXJhIHBvZGVyIHR1bmVhciBzaW4gcmVjb21waWxhclxuICAgIC8vIHNpIGFsZ8O6biBiYWNrZW5kIHByZXNlbnRhIHVuYSBjYWRlbmNpYSBtdXkgZGlzdGludGEgZW4gcHJvZHVjY2nDs24uXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQWRhcHQgPSBmYWxzZSAgICAgIC8vIGRlc2FjdGl2YSBhZGFwdGFjacOzbiBhbCBiYWNrZW5kXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtQnVmZmVyTXMgPSA2MDAgICAgIC8vIGNvbGNow7NuIG9iamV0aXZvIChtcylcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1MYWdNcyA9IDQ1MCAgICAgICAgLy8gbGFnIG3DoXhpbW8gYmFzZSAobXMpXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtTWluQnVmZmVyID0gNzAgICAgIC8vIHBpc28gZGVsIGNvbGNow7NuIGVuIGNoYXJzXG4gICAgLy8gICB3aW5kb3cuc3RyZWFtV2FybXVwTXMgPSA0MDAgICAgIC8vIHdhcm11cCBpbmljaWFsIChtcylcbiAgICBjb25zdCB3aW5GbGFncyA9XG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/ICh3aW5kb3cgYXMgdW5rbm93biBhcyB7XG4gICAgICAgICAgICBzdHJlYW1BZGFwdD86IGJvb2xlYW5cbiAgICAgICAgICAgIHN0cmVhbUJ1ZmZlck1zPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1MYWdNcz86IG51bWJlclxuICAgICAgICAgICAgc3RyZWFtTWluQnVmZmVyPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1XYXJtdXBNcz86IG51bWJlclxuICAgICAgICAgIH0pXG4gICAgICAgIDoge31cbiAgICBjb25zdCBkaXNwbGF5VGV4dCA9IHVzZVNtb290aFN0cmVhbVRleHQocmF3VGV4dCwge1xuICAgICAgZW5hYmxlZDogISFwcm9wcy5pc1N0cmVhbWluZyxcbiAgICAgIG1heENoYXJzUGVyRnJhbWU6IDI0LFxuICAgICAgc25hcFRvV29yZEJvdW5kYXJ5OiB0cnVlLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbUxhZ01zICE9IG51bGwgJiYgeyB0YXJnZXRMYWdNczogd2luRmxhZ3Muc3RyZWFtTGFnTXMgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtQWRhcHQgIT0gbnVsbCAmJiB7IGFkYXB0VG9CYWNrZW5kUmF0ZTogd2luRmxhZ3Muc3RyZWFtQWRhcHQgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtQnVmZmVyTXMgIT0gbnVsbCAmJiB7IHRhcmdldEJ1ZmZlck1zOiB3aW5GbGFncy5zdHJlYW1CdWZmZXJNcyB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1NaW5CdWZmZXIgIT0gbnVsbCAmJiB7IG1pbkJ1ZmZlckNoYXJzOiB3aW5GbGFncy5zdHJlYW1NaW5CdWZmZXIgfSksXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtV2FybXVwTXMgIT0gbnVsbCAmJiB7IHdhcm11cE1zOiB3aW5GbGFncy5zdHJlYW1XYXJtdXBNcyB9KSxcbiAgICB9KVxuICAgIGNvbnN0IGNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgPSBwcm9wcy5jcmVhdGVBZ2VudEZvbGxvd1VwPy5hZ2VudElkXG5cbiAgICBpZiAoIWRpc3BsYXlUZXh0ICYmICFwcm9wcy5pc1N0cmVhbWluZykgcmV0dXJuIG51bGxcbiAgICBjb25zdCBoYXNNZW50aW9ucyA9IGhhc0lubGluZU1hcmtlcnMoZGlzcGxheVRleHQpXG4gICAgY29uc3QgbWVudGlvbk5vZGVzID0gaGFzTWVudGlvbnMgPyByZW5kZXJUZXh0V2l0aE1lbnRpb25zKGRpc3BsYXlUZXh0KSA6IG51bGxcbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAgPFNDQ0FJTWVzc2FnZVdyYXBwZXJcbiAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ9e3Byb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRFbnRpdHlMaW5rV3JhcHBlckNsYXNzTmFtZShkaXNwbGF5VGV4dCl9XG4gICAgICAgID5cbiAgICAgICAgICB7aGFzTWVudGlvbnMgJiYgbWVudGlvbk5vZGVzID8gKFxuICAgICAgICAgICAgLy8gU2kgaGF5IG1lbnRpb25zLCByZW5kZXJpemFyIGRpcmVjdGFtZW50ZSAoc2luIG1hcmtkb3duIGVuIGVsIG1pc21vIHDDoXJyYWZvKVxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZScgfX0+e21lbnRpb25Ob2Rlc308L3NwYW4+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIC8vIFNpbiBtZW50aW9ucywgcGFzYXIgYSBTdHJlYW1kb3duIHBhcmEgbWFya2Rvd24gc3VwcG9ydFxuICAgICAgICAgICAgPFN0cmVhbWRvd25cbiAgICAgICAgICAgICAgcGx1Z2lucz17eyBjb2RlIH19XG4gICAgICAgICAgICAgIHJlaHlwZVBsdWdpbnM9e01BSUFfU1RSRUFNRE9XTl9SRUhZUEVfUExVR0lOU31cbiAgICAgICAgICAgICAgY29tcG9uZW50cz17eyBhOiBFbnRpdHlMaW5rQ3VzdG9tTGluayB9IGFzIFBhcmFtZXRlcnM8dHlwZW9mIFN0cmVhbWRvd24+WzBdWydjb21wb25lbnRzJ119XG4gICAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogZmFsc2UgfX1cbiAgICAgICAgICAgICAgaXNBbmltYXRpbmc9eyEhcHJvcHMuaXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIHNoaWtpVGhlbWU9e1snZ2l0aHViLWxpZ2h0JywgJ2dpdGh1Yi1saWdodCddfVxuICAgICAgICAgICAgICBjb250cm9scz17eyB0YWJsZTogZmFsc2UsIGNvZGU6IGZhbHNlIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtkaXNwbGF5VGV4dH1cbiAgICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJTWVzc2FnZVdyYXBwZXI+XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJiAhcHJvcHMuaXNFcnJvciAmJiAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJiAhcHJvcHMuYXBwcm92YWwgJiYgIXByb3BzLmlzU3RyZWFtaW5nICYmIChcbiAgICAgICAgICA8TWVzc2FnZUZlZWRiYWNrXG4gICAgICAgICAgICBjb250ZW50PXtkaXNwbGF5VGV4dH1cbiAgICAgICAgICAgIHNvdXJjZXM9e3Byb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17cHJvcHMuaGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17cHJvcHMuZGlzYWJsZUZlZWRiYWNrfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJlxuICAgICAgICAgICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmXG4gICAgICAgICAgIXByb3BzLmFwcHJvdmFsICYmXG4gICAgICAgICAgKCFwcm9wcy5pc0Vycm9yIHx8IHByb3BzLnN1Z2dlc3Rpb25zPy5sZW5ndGgpICYmIChcbiAgICAgICAgICAgIDxDaGF0QUlTdWdnZXN0aW9uc1xuICAgICAgICAgICAgICBzdWdnZXN0aW9ucz17cHJvcHMuc3VnZ2VzdGlvbnMgfHwgW119XG4gICAgICAgICAgICAgIG9uU2VsZWN0U3VnZ2VzdGlvbj17c3VnZ2VzdGlvbiA9PiBwcm9wcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2socHJvcHMubWVzc2FnZUlkLCBzdWdnZXN0aW9uKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJlxuICAgICAgICAgICFwcm9wcy5pc0Vycm9yICYmXG4gICAgICAgICAgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiZcbiAgICAgICAgICAhcHJvcHMuYXBwcm92YWwgJiZcbiAgICAgICAgICAhIWNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgJiYgKFxuICAgICAgICAgICAgPENoYXRBSUNyZWF0ZUFnZW50QWN0aW9uc1xuICAgICAgICAgICAgICBhZ2VudElkPXtjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG5jb25zdCBNZXNzYWdlSXRlbSA9IG1lbW8oKHByb3BzOiBNZXNzYWdlSXRlbVByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICB1c2VyLFxuICAgIG1lc3NhZ2UsXG4gICAgaXNTdHJlYW1pbmcsXG4gICAgaXNFcnJvcixcbiAgICBhdXRoVXNlcixcbiAgICBvcHRpb25zLFxuICAgIGlzQ2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrLFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgZGlzYWJsZUZlZWRiYWNrLFxuICAgIHJvbGUsXG4gICAgc291cmNlcyxcbiAgICBhdHRhY2htZW50cyxcbiAgICBhcHByb3ZhbCxcbiAgICBhcHByb3ZhbFN0YXR1cyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBjcmVhdGVBZ2VudEZvbGxvd1VwLFxuICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbixcbiAgICBpc0xhc3RNZXNzYWdlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gIC8vIE1pZW50cmFzIGVsIGFnZW50ZSBcInBpZW5zYVwiIChzdHJlYW1pbmcgc2luIHRleHRvKSBubyBtb250YW1vcyBlbCBNZXNzYWdlSXRlbTpcbiAgLy8gdW4gcGxhY2Vob2xkZXIgdmFjw61vIHN1bWFyw61hIG90cm8gZ2FwIGRlIDM2cHggZW5jaW1hIGRlbCBpbmRpY2Fkb3IgZGUgYWN0aXZpZGFkLlxuICBjb25zdCBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyID0gaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChpZClcbiAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IHVzZVN0cmVhbWluZ01lc3NhZ2UoaXNTdHJlYW1pbmcgfHwgaXNTdHJlYW1pbmdQbGFjZWhvbGRlciA/IGlkIDogbnVsbClcbiAgY29uc3QgaXNBY3RpdmVTdHJlYW1pbmcgPSAhIWlzU3RyZWFtaW5nIHx8IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJcbiAgY29uc3QgaXNUaGlua2luZyA9IGlzQWN0aXZlU3RyZWFtaW5nICYmICFzdHJlYW1pbmdUZXh0XG4gIGlmIChpc1RoaW5raW5nKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBtZXNzYWdlQXR0YWNobWVudHMgPVxuICAgIGF0dGFjaG1lbnRzICYmIGF0dGFjaG1lbnRzLmxlbmd0aCA+IDBcbiAgICAgID8gYXR0YWNobWVudHNcbiAgICAgIDogIWlzQXNzaXN0YW50ICYmIEFycmF5LmlzQXJyYXkoc291cmNlcylcbiAgICAgICAgPyAoc291cmNlcyBhcyBBdHRhY2htZW50RmlsZVtdKVxuICAgICAgICA6IFtdXG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgLy8gUGVybWl0aXIgcHJldmlzdWFsaXphY2nDs24gc2kgdGllbmUgYXJjaGl2byBsb2NhbCBvIFVSTHMgZGVsIGJhY2tlbmRcbiAgICBpZiAoXG4gICAgICBhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50Lm9yaWdpbmFsRmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX2ZpbGVcbiAgICApIHtcbiAgICAgIHNldFByZXZpZXdBdHRhY2htZW50KGF0dGFjaG1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuICAgIHNldFByZXZpZXdBdHRhY2htZW50KG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50RG93bmxvYWQgPSBhc3luYyAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBhdHRhY2htZW50Lm5hbWUuaW5jbHVkZXMoJy4nKSA/ICcnIDogYC4ke2F0dGFjaG1lbnQudHlwZX1gXG4gICAgY29uc3QgZmlsZU5hbWUgPSBgJHthdHRhY2htZW50Lm5hbWV9JHtleHRlbnNpb259YFxuICAgIGNvbnN0IGZpbGVVcmwgPSBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fCBhdHRhY2htZW50LnVybF9maWxlIHx8IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbFxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBibG9iVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuXG4gICAgICBpZiAoZmlsZVVybCkge1xuICAgICAgICBjb25zdCBkb3dubG9hZGVkRmlsZSA9IGF3YWl0IGRvd25sb2FkRmlsZUZyb21VcmwoZmlsZVVybCwgZmlsZU5hbWUsIGF0dGFjaG1lbnQudHlwZSlcbiAgICAgICAgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG93bmxvYWRlZEZpbGUpXG4gICAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYXR0YWNobWVudC5maWxlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWJsb2JVcmwpIHJldHVyblxuXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICBsaW5rLmhyZWYgPSBibG9iVXJsXG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWVcbiAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxuICAgICAgbGluay5jbGljaygpXG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVybClcbiAgICAgIH0sIDEwMClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRvd25sb2FkIGF0dGFjaG1lbnQnLCBlcnJvcilcbiAgICB9XG4gIH1cblxuICBpZiAoaXNDaGFuZ2VQcm9qZWN0ICYmIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE1lc3NhZ2VXcmFwcGVyIGtleT17aWR9IGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9IGRhdGEtbWVzc2FnZS1pZD17aWR9IGhhc0ZlZWRiYWNrPXtmYWxzZX0+XG4gICAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICA8TWVzc2FnZUNvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgICBpc0NoYW5nZVByb2plY3Q9e2lzQ2hhbmdlUHJvamVjdH1cbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIG1lc3NhZ2VFeHRyYUNvbnRlbnQ9ezxNZXNzYWdlT3B0aW9ucyBvcHRpb25zPXtvcHRpb25zIGFzIGFueX0gaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259IC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gICAgICA8L01lc3NhZ2VXcmFwcGVyPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrQ2xpY2sgPSAoZmVlZGJhY2s6IEZlZWRiYWNrKSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gaWRcbiAgICAgIC5zcGxpdCgnLScpXG4gICAgICAuZmlsdGVyKHF1ZXN0aW9uSWQgPT4gcXVlc3Rpb25JZCAhPT0gJ2Fuc3dlcicpXG4gICAgICAuam9pbignLScpXG4gICAgaGFuZGxlRmVlZGJhY2s/LihmZWVkYmFjaywgc2Vzc2lvbklkKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICA8U0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgICB7ISFtZXNzYWdlQXR0YWNobWVudHMubGVuZ3RoICYmIChcbiAgICAgICAgICA8U0NBdHRhY2htZW50c1JvdyAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICAgIHttZXNzYWdlQXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAvLyBEZXRlY3RhciBzaSBlcyB1biBhcmNoaXZvIGRlIGF1ZGlvXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudD8udHlwZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50TmFtZSA9IGF0dGFjaG1lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgaXNBdWRpb0ZpbGUgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpIHx8XG4gICAgICAgICAgICAgICAgWydmbGFjJywgJ200YScsICdtcDMnLCAnbXA0JywgJ29nYScsICdvZ2cnLCAnd2F2JywgJ3dlYm0nXS5pbmNsdWRlcyhhdHRhY2htZW50VHlwZSkgfHxcbiAgICAgICAgICAgICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnROYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgaWYgKGlzQXVkaW9GaWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxBdHRhY2htZW50Q2FyZEF1ZGlvIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH0gYXR0YWNobWVudD17YXR0YWNobWVudH0gLz5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEF0dGFjaG1lbnRDYXJkXG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50PXthdHRhY2htZW50fVxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25JbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBvbkRvd25sb2FkPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50RG93bmxvYWQoYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50Q2xpY2soYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICApfVxuICAgICAgICB7KCEhbWVzc2FnZSB8fCBpc0FjdGl2ZVN0cmVhbWluZykgJiYgIShpc0Fzc2lzdGFudCAmJiAhIW1lc3NhZ2VBdHRhY2htZW50cy5sZW5ndGgpICYmIChcbiAgICAgICAgICA8U3RyZWFtaW5nTWVzc2FnZUJvZHlcbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2UgPz8gJyd9XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17aXNBY3RpdmVTdHJlYW1pbmd9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fVxuICAgICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICAgIGFwcHJvdmFsPXthcHByb3ZhbH1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcD17Y3JlYXRlQWdlbnRGb2xsb3dVcH1cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s9e2hhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e2Rpc2FibGVGZWVkYmFjayA/PyBudWxsfVxuICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICBzdWdnZXN0aW9uc0Rpc2FibGVkPXtpc0FjdGl2ZVN0cmVhbWluZyB8fCAhIWhhc1NlbGVjdGVkU3VnZ2VzdGlvbn1cbiAgICAgICAgICAgIG1lc3NhZ2VJZD17aWR9XG4gICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHthcHByb3ZhbCAmJiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMgJiYgKFxuICAgICAgICAgIDxTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgICAgIDxBcHByb3ZhbEJveFxuICAgICAgICAgICAgICBhY3Rpb25zPXthcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnN9XG4gICAgICAgICAgICAgIHN0YXR1cz17YXBwcm92YWxTdGF0dXN9XG4gICAgICAgICAgICAgIG9uQXBwcm92ZT17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAnYXBwcm92ZScpfVxuICAgICAgICAgICAgICBvblJlamVjdD17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAncmVqZWN0Jyl9XG4gICAgICAgICAgICAgIGlzUHJvamVjdERlbGV0ZWQ9e3Byb3BzLnByb2plY3RNZXRhZGF0YT8uaXNfZGVsZXRlZCA9PT0gdHJ1ZX1cbiAgICAgICAgICAgICAgaXNFeHBhbmRlZD17cHJvcHMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgIGhpdGxJbnN0YW5jZUlkPXthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9XG4gICAgICAgICAgICAgIHdhcm5pbmdNZXNzYWdlPXthcHByb3ZhbC53YXJuaW5nX21lc3NhZ2V9XG4gICAgICAgICAgICAgIG1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQ9e2FwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgPEF0dGFjaG1lbnRQcmV2aWV3TW9kYWxcbiAgICAgICAgaXNPcGVuPXshIXByZXZpZXdBdHRhY2htZW50fVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVByZXZpZXd9XG4gICAgICAgIGF0dGFjaG1lbnQ9e3ByZXZpZXdBdHRhY2htZW50fVxuICAgICAgLz5cbiAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICApXG59KVxuXG5jb25zdCBDaGF0QUlNZXNzYWdlc0lubmVyID0gKHtcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBpbml0aWFsQ2hhdElkLFxuICBvbkVycm9yLFxuICBvblNlbmRNZXNzYWdlUmVhZHksXG4gIG9uU2Nyb2xsVG9Cb3R0b20sXG4gIGF0dGFjaG1lbnRzLFxuICBhZ2VudHMsXG4gIGV4cGFuZGVkLFxufTogQ2hhdEFJTWVzc2FnZXNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCB7IGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmUsIGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGF0SW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHVzZXJTY3JvbGxpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRocmVzaG9sZFJlZiA9IHVzZVJlZigzOSlcbiAgY29uc3QgbGFzdFNjcm9sbFRvcFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzaG93U2Nyb2xsVG9Cb3R0b21SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1Njcm9sbFRvQm90dG9tLCBzZXRTaG93U2Nyb2xsVG9Cb3R0b21dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSlcblxuICBjb25zdCB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgc3RvcEdlbmVyYXRpb24sXG4gIH0gPSB1c2VDaGF0TWFuYWdlcih7XG4gICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IHVuZGVmaW5lZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgb25FcnJvcixcbiAgICBhdHRhY2htZW50cyxcbiAgICBhZ2VudHMsXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgY2hhbmdlUHJvamVjdChvcHRpb24pXG4gICAgfSxcbiAgICBbY2hhbmdlUHJvamVjdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN1Z2dlc3Rpb25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXN1Z2dlc3Rpb24/LnRyaW0oKSkgcmV0dXJuXG4gICAgICBpZiAoc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlSWRdKSByZXR1cm5cbiAgICAgIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFN1Z2dlc3RlZEFuc3dlciwge1xuICAgICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyhwcmV2ID0+ICh7IC4uLnByZXYsIFttZXNzYWdlSWRdOiB0cnVlIH0pKVxuXG4gICAgICBjb25zdCB0YXJnZXRNZXNzYWdlID0gbWVzc2FnZXMuZmluZChtc2cgPT4gbXNnLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBjb25zdCBpc1JldHJ5U3VnZ2VzdGlvbiA9ICEhdGFyZ2V0TWVzc2FnZT8uaXNFcnJvciAmJiBzdWdnZXN0aW9uID09PSB0KCdjaGF0LnJldHJ5JylcbiAgICAgIGlmIChpc1JldHJ5U3VnZ2VzdGlvbikge1xuICAgICAgICBjb25zdCBsYXN0VXNlck1lc3NhZ2UgPSBtZXNzYWdlc1xuICAgICAgICAgIC5maWx0ZXIobXNnID0+IG1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCBtc2cudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSlcbiAgICAgICAgICAuYXQoLTEpXG4gICAgICAgIGlmIChsYXN0VXNlck1lc3NhZ2U/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICBjb25zdCByZXRyeUF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHMpXG4gICAgICAgICAgICA/IGxhc3RVc2VyTWVzc2FnZS5hdHRhY2htZW50c1xuICAgICAgICAgICAgOiBBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzKVxuICAgICAgICAgICAgICA/IGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzXG4gICAgICAgICAgICAgIDogW11cbiAgICAgICAgICBzZW5kTWVzc2FnZShsYXN0VXNlck1lc3NhZ2UubWVzc2FnZSwgcmV0cnlBdHRhY2htZW50cylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZW5kTWVzc2FnZShzdWdnZXN0aW9uKVxuICAgIH0sXG4gICAgW1xuICAgICAgc2VuZE1lc3NhZ2UsXG4gICAgICBzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLFxuICAgICAgZXZlbnQsXG4gICAgICBhZ2VudD8uZW50aXR5LFxuICAgICAgYWdlbnQ/Lm5hbWUsXG4gICAgICBhZ2VudD8udHlwZSxcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgdCxcbiAgICAgIGF1dGhVc2VyLmlkLFxuICAgIF1cbiAgKVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIGRlbCBib3TDs24gXCJzY3JvbGwgdG8gYm90dG9tXCIgY29tcGFyYW5kbyBsYSBwb3NpY2nDs25cbiAgICogYWN0dWFsIGRlbCBzY3JvbGwgY29uIGVsIGZvbmRvLiBVc2EgdW4gcmVmIHBhcmEgZXZpdGFyIGBzZXRTdGF0ZWAgY3VhbmRvXG4gICAqIGVsIHZhbG9yIG5vIGNhbWJpYS5cbiAgICovXG4gIGNvbnN0IHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuXG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBlbFxuICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgIGlmIChzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCAhPT0gc2hvdWxkU2hvdykge1xuICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgaW5tZWRpYXRvIGFsIGZvbmRvIChkZW50cm8gZGUgckFGIHBhcmEgY29vcmRpbmFyIGNvbiBlbCBwYWludClcbiAgICogeSBhY3R1YWxpemEgbGEgdmlzaWJpbGlkYWQgZGVsIGJvdMOzbi4gUmVzcGV0YSBgc2tpcElmVXNlclNjcm9sbGluZ2AgcGFyYVxuICAgKiBubyBzb2JyZXNjcmliaXIgZWwgc2Nyb2xsIG1hbnVhbCBkZWwgdXN1YXJpbyBkdXJhbnRlIGVsIHN0cmVhbWluZy5cbiAgICovXG4gIGNvbnN0IHNjcm9sbFRvQm90dG9tUmFmID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdHM6IHsgc2tpcElmVXNlclNjcm9sbGluZz86IGJvb2xlYW47IGRlbGF5TXM/OiBudW1iZXIgfSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7IHNraXBJZlVzZXJTY3JvbGxpbmcgPSBmYWxzZSwgZGVsYXlNcyA9IDAgfSA9IG9wdHNcbiAgICAgIGNvbnN0IHJ1biA9ICgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgICAgICBpZiAoIWVsKSByZXR1cm5cbiAgICAgICAgICBpZiAoc2tpcElmVXNlclNjcm9sbGluZyAmJiB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKGRlbGF5TXMgPiAwKSBzZXRUaW1lb3V0KHJ1biwgZGVsYXlNcylcbiAgICAgIGVsc2UgcnVuKClcbiAgICB9LFxuICAgIFt1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG8oe1xuICAgICAgdG9wOiBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodCxcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KVxuICAgIC8vIERhciB0aWVtcG8gYWwgc21vb3RoLXNjcm9sbCBhbnRlcyBkZSByZWNhbGN1bGFyIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24uXG4gICAgc2V0VGltZW91dCh1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5LCA1MDApXG4gIH0sIFt1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBBbCBkZWNpZGlyIGVuIGVsIEFwcHJvdmFsQm94OiBlbCBib3ggY29sYXBzYSAoYm90b25lcyAtPiBiYWRnZSkgeSBlbCBzdHJlYW1cbiAgLy8gY29udGluw7phIGFiYWpvLiBSZWFjdGl2YXIgZWwgYXV0by1zY3JvbGwgeSBzZWd1aXIgZWwgZm9uZG8gcGFyYSBxdWUgbGEgdmlzdGFcbiAgLy8gbm8gcXVlZGUgYXRyw6FzIChldml0YSBxdWUgYXBhcmV6Y2EgbGEgZmxlY2hhIGRlIHNjcm9sbC10by1ib3R0b20pLlxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uV2l0aFNjcm9sbCA9IHVzZUNhbGxiYWNrKFxuICAgICguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uPikgPT4ge1xuICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24oLi4uYXJncylcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKHsgZGVsYXlNczogMTAwIH0pXG4gICAgfSxcbiAgICBbaGFuZGxlQXBwcm92YWxEZWNpc2lvbiwgc2Nyb2xsVG9Cb3R0b21SYWZdXG4gIClcblxuICBjb25zdCBoYW5kbGVTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgICAgIGlmIChzY3JvbGxSYWZSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY3JvbGxSYWZSZWYuY3VycmVudClcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcblxuICAgICAgICBjb25zdCBpc1Njcm9sbGluZ1VwID0gc2Nyb2xsVG9wIDwgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzU2Nyb2xsaW5nVXApIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDE1XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPCBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20pIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICAgIH1cblxuICAgICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSAhaXNOZWFyQm90dG9tXG4gICAgICAgIGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudCA9IHNjcm9sbFRvcFxuXG4gICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20gJiYgb25TY3JvbGxUb0JvdHRvbSkge1xuICAgICAgICAgIG9uU2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlU2Nyb2xsKGNvbnRhaW5lcilcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbb25TY3JvbGxUb0JvdHRvbSwgaGFuZGxlU2Nyb2xsLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XVxuICApXG5cbiAgLy8gcmVmcyB0byBzdGFiaWxpemUgZnVuY3Rpb25zIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gIGNvbnN0IHNlbmRNZXNzYWdlUmVmID0gdXNlUmVmKHNlbmRNZXNzYWdlKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblJlZiA9IHVzZVJlZihzdG9wR2VuZXJhdGlvbilcbiAgY29uc3Qgb25TZW5kTWVzc2FnZVJlYWR5UmVmID0gdXNlUmVmKG9uU2VuZE1lc3NhZ2VSZWFkeSlcbiAgY29uc3Qgc2VuZE1lc3NhZ2VQcm94eVJlZiA9IHVzZVJlZihcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiBzZW5kTWVzc2FnZVJlZi5jdXJyZW50KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblByb3h5UmVmID0gdXNlUmVmKCgpID0+IHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQoKSlcblxuICAvLyB1cGRhdGUgcmVmcyB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2VcbiAgc2VuZE1lc3NhZ2VSZWYuY3VycmVudCA9IHNlbmRNZXNzYWdlXG4gIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQgPSBzdG9wR2VuZXJhdGlvblxuICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCA9IG9uU2VuZE1lc3NhZ2VSZWFkeVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudChcbiAgICAgICAgc2VuZE1lc3NhZ2VQcm94eVJlZi5jdXJyZW50LFxuICAgICAgICBzdG9wR2VuZXJhdGlvblByb3h5UmVmLmN1cnJlbnQsXG4gICAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXcml0aW5nXG4gICAgICApXG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXG4gIH0sIFtpc0xvYWRpbmdNb3JlTWVzc2FnZXNdKVxuXG4gIC8vIEN1YW5kbyBlbCBhZ2VudGUgZW1waWV6YSBhIHJlc3BvbmRlciwgcmVzZXRlYXIgZWwgZmxhZyB5IGVsIHVtYnJhbCBwYXJhIGFjdGl2YXIgZWwgYXV0by1zY3JvbGxcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAzOVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50KSB7XG4gICAgICBjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGluaXRpYWxpemVDaGF0KClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIEF1dG9zY3JvbGwgbWllbnRyYXMgZWwgdGV4dG8gZGVsIHN0cmVhbSBjcmVjZS4gRWwgdGV4dG8gc2UgcGludGEgYWwgcml0bW9cbiAgLy8gZGUgYHVzZVNtb290aFN0cmVhbVRleHRgICh+NjBmcHMpLCBubyBhbCByaXRtbyBkZSBsbGVnYWRhIGRlIHRva2VucyBkZWxcbiAgLy8gYmFja2VuZDogcG9yIGVzbyBhY8OhIHVzYW1vcyB1biBsb29wIGRlIHJBRiBxdWUgY29tcGFyYSBgc2Nyb2xsSGVpZ2h0YFxuICAvLyBjb250cmEgZWwgw7psdGltbyB2YWxvciBvYnNlcnZhZG8geSBhanVzdGEgc29sbyBjdWFuZG8gY2FtYmlhLiBBc8OtIGVsXG4gIC8vIHNjcm9sbCBxdWVkYSBwZXJmZWN0YW1lbnRlIHNpbmNyb25pemFkbyBjb24gbGEgYW5pbWFjacOzbiBkZWwgdGV4dG8gc2luXG4gIC8vIGRlcGVuZGVyIGRlIGxhIGNhZGVuY2lhIGRlbCBzdHJlYW1pbmdTdG9yZS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgbGV0IGxhc3RIZWlnaHQgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuXG4gICAgY29uc3QgdGljayA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgaWYgKCFlbCkge1xuICAgICAgICByYWZJZCA9IG51bGxcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gZWwuc2Nyb2xsSGVpZ2h0XG4gICAgICBpZiAoY3VycmVudEhlaWdodCAhPT0gbGFzdEhlaWdodCkge1xuICAgICAgICBsYXN0SGVpZ2h0ID0gY3VycmVudEhlaWdodFxuICAgICAgICBpZiAoIXVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkge1xuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IGN1cnJlbnRIZWlnaHRcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICAgIH1cbiAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgfVxuXG4gICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJhZklkICE9IG51bGwpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBBbCBjb21lbnphciBhIGVzcGVyYXIgbGEgcmVzcHVlc3RhIGRlbCBiYWNrZW5kLCBzY3JvbGwgaW5pY2lhbCBhbCBmb25kby5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKHsgc2tpcElmVXNlclNjcm9sbGluZzogdHJ1ZSB9KVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgc2Nyb2xsVG9Cb3R0b21SYWZdKVxuXG4gIC8vIFNjcm9sbCBjdWFuZG8gY2FtYmlhbiBsb3MgbWVuc2FqZXM6IGRpc3Rpbmd1ZSBcIm51ZXZvIG1lbnNhamVcIiAoYWdyZWdhZG8pXG4gIC8vIGRlIFwicmVlbXBsYXpvXCIgKG1pc21vIGlkL2xlbmd0aCwgZWouIGZlZWRiYWNrIG8gYXBwcm92YWxTdGF0dXMpLiBFblxuICAvLyByZWVtcGxhem9zIHNvbG8gc2UgcmVjYWxjdWxhIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24gc2luIGZvcnphciBzY3JvbGwuXG4gIGNvbnN0IGxhc3RNZXNzYWdlSWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFzdE1lc3NhZ2VzTGVuZ3RoUmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQgfHwgbG9hZGluZ01lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgICBjb25zdCBsYXN0SWQgPSBsYXN0TWVzc2FnZT8uaWQgPz8gbnVsbFxuICAgIGNvbnN0IHByZXZJZCA9IGxhc3RNZXNzYWdlSWRSZWYuY3VycmVudFxuICAgIGNvbnN0IHByZXZMZW4gPSBsYXN0TWVzc2FnZXNMZW5ndGhSZWYuY3VycmVudFxuICAgIGxhc3RNZXNzYWdlSWRSZWYuY3VycmVudCA9IGxhc3RJZFxuICAgIGxhc3RNZXNzYWdlc0xlbmd0aFJlZi5jdXJyZW50ID0gbWVzc2FnZXMubGVuZ3RoXG5cbiAgICBjb25zdCBpc05ld01lc3NhZ2UgPSBsYXN0SWQgIT09IHByZXZJZCB8fCBtZXNzYWdlcy5sZW5ndGggIT09IHByZXZMZW5cbiAgICBpZiAoIWlzTmV3TWVzc2FnZSkge1xuICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgY29uc3QgaXNBdEJvdHRvbSA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBjb250YWluZXIuc2Nyb2xsVG9wIDw9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyAxMDBcbiAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IG1lc3NhZ2VzLnNvbWUobXNnID0+IG1zZy5pZCA9PT0gJ3VzZXItaW5pdGlhbC1tZXNzYWdlJylcbiAgICBjb25zdCBpc0FwcHJvdmFsID0gISFsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYXBwcm92YWwtJykgfHwgISFsYXN0TWVzc2FnZS5hcHByb3ZhbClcbiAgICBjb25zdCBpc0Fuc3dlck9yUXVlc3Rpb24gPVxuICAgICAgISFsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYW5zd2VyLScpIHx8IGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ3F1ZXN0aW9uLScpKVxuXG4gICAgLy8gQXBwcm92YWw6IHNlY3VlbmNpYSBkZSBzY3JvbGxzIGNvbiBkZWxheSBwb3JxdWUgZWwgQXBwcm92YWxCb3ggbmVjZXNpdGFcbiAgICAvLyB1biB0aWNrIHBhcmEgbWVkaXJzZS4gU2Nyb2xsZWEgYXVucXVlIGVsIHVzdWFyaW8gbm8gZXN0w6kgYWwgZm9uZG8gc2kgbm9cbiAgICAvLyBlc3TDoSBzY3JvbGxlYW5kbyBtYW51YWxtZW50ZS5cbiAgICBpZiAoaXNBcHByb3ZhbCAmJiAoaXNBdEJvdHRvbSB8fCAhdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSkge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoeyBkZWxheU1zOiAxMDAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIE51ZXZvcyBhbnN3ZXIvcXVlc3Rpb246IHNjcm9sbCBzaSBlbCB1c3VhcmlvIHlhIGVzdGFiYSBhbCBmb25kby5cbiAgICBpZiAoaXNBbnN3ZXJPclF1ZXN0aW9uICYmIGlzQXRCb3R0b20pIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENhc28gYm9yZGU6IGNhbWJpb3MgZGUgbWVuc2FqZXMgc2luIHNlciBudWV2byBhbnN3ZXIvdXNlci9hcHByb3ZhbFxuICAgIC8vIHBlcm8gc8OtIHVuIG1lbnNhamUgbnVldm8gKG5vIGVsIFwidXNlci1pbml0aWFsLW1lc3NhZ2VcIikuIFNjcm9sbGVhLlxuICAgIGlmICghaXNBbnN3ZXJPclF1ZXN0aW9uICYmICFpc0FwcHJvdmFsICYmICFoYXNJbml0aWFsTWVzc2FnZSAmJiBtZXNzYWdlcy5sZW5ndGggPiBwcmV2TGVuKSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgc2Nyb2xsVG9Cb3R0b21SYWYsIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldKVxuXG4gIC8vIEVzdGFkbyBpbmljaWFsIGRlbCBib3TDs24gc2Nyb2xsLXRvLWJvdHRvbSBhbCB0ZXJtaW5hciBsb2FkaW5nTWVzc2FnZXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgIH1cbiAgfSwgW2xvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMubGVuZ3RoLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBPYnRlbmVyIGVsIMO6bHRpbW8gbWVuc2FqZSBkZWwgdXN1YXJpbyBwYXJhIHZlcmlmaWNhciBzaSB0aWVuZSBhdHRhY2htZW50c1xuICBjb25zdCBsYXN0VXNlck1lc3NhZ2UgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIobXNnID0+IG1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCBtc2cudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSlcbiAgICAuYXQoLTEpXG5cbiAgY29uc3QgYXR0YWNobWVudHNDb3VudCA9XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5hdHRhY2htZW50cykgPyBsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoIDogMCkgfHxcbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LnNvdXJjZXMpID8gbGFzdFVzZXJNZXNzYWdlLnNvdXJjZXMubGVuZ3RoIDogMClcblxuICBjb25zdCBzdHJlYW1Mb2FkaW5nRGlzcGxheSA9IHJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSh7XG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgYWN0aXZlTG9hZGluZ3M6IGFjdGl2ZUxvYWRpbmdzIHx8IHt9LFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHNDb3VudCksXG4gICAgYXR0YWNobWVudHNDb3VudCxcbiAgICB0LFxuICB9KVxuXG4gIGNvbnN0IGlzU2Nyb2xsT25QYXJlbnQgPSAhIWV4cGFuZGVkXG4gIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuXG4gIC8vIEFsIGV4cGFuZGlyL2NvbnRyYWVyIGVsIG1vZGFsIGVsIHJlZiBwYXNhIGEgb3RybyBjb250ZW5lZG9yIChzY3JvbGxUb3Agc2UgcmVzZXRlYSBhIDApLlxuICAvLyBSZXN0YXVyYXIgbGEgcG9zaWNpw7NuIGRlIHNjcm9sbCBhbnRlcyBkZWwgcGFpbnQgcGFyYSBldml0YXIgcXVlIGxhIGNvbnZlcnNhY2nDs24gc2FsdGUgYXJyaWJhLlxuICBjb25zdCBleHBhbmRlZFJlZiA9IHVzZVJlZihleHBhbmRlZClcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXhwYW5kZWRSZWYuY3VycmVudCAhPT0gZXhwYW5kZWQgJiYgbWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxUb3AgPSBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnRcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gc2F2ZWRTY3JvbGxUb3BcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH0gZWxzZSB7XG4gICAgICBleHBhbmRlZFJlZi5jdXJyZW50ID0gZXhwYW5kZWRcbiAgICB9XG4gIH0sIFtleHBhbmRlZF0pXG5cbiAgaWYgKGxvYWRpbmdNZXNzYWdlcykge1xuICAgIHJldHVybiAoXG4gICAgICA8RmFkZSBmaWxsPlxuICAgICAgICA8TG9hZGVyIC8+XG4gICAgICA8L0ZhZGU+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXNDb250ZW50ID0gKFxuICAgIDw+XG4gICAgICB7aXNMb2FkaW5nTW9yZU1lc3NhZ2VzICYmIDxMb2FkaW5nVGV4dCB0ZXh0PXt0KCdjaGF0LmxvYWRpbmdNb3JlJyl9IC8+fVxuICAgICAgPD5cbiAgICAgICAge21lc3NhZ2VzLm1hcCgobWVzc2FnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0Fzc2lzdGFudE1lc3NhZ2UgPSBtZXNzYWdlLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgbWVzc2FnZS51c2VyLmlkID09PSAnYXNzaXN0YW50J1xuICAgICAgICAgIGNvbnN0IGlzTGFzdE1lc3NhZ2UgPSBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMVxuICAgICAgICAgIGNvbnN0IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgaXNBc3Npc3RhbnRNZXNzYWdlICYmIGlzTGFzdE1lc3NhZ2UgJiYgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChtZXNzYWdlLmlkKVxuICAgICAgICAgIGNvbnN0IGlzU3RyZWFtaW5nID0gaXNTdHJlYW1pbmdQbGFjZWhvbGRlciAmJiAod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZylcblxuICAgICAgICAgIC8vIE5vIGZpbHRyYXIgZWwgcGxhY2Vob2xkZXIgZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nOiBzdSB0ZXh0byB2aXZlXG4gICAgICAgICAgLy8gZW4gZWwgc3RyZWFtaW5nU3RvcmUgeSBgbWVzc2FnZS5tZXNzYWdlYCBlcyAnJyBoYXN0YSBlbCBjb21wbGV0ZS5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNTdHJlYW1pbmdQbGFjZWhvbGRlciAmJlxuICAgICAgICAgICAgIWlzU3RyZWFtaW5nICYmXG4gICAgICAgICAgICAhKG1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aCB8fCBtZXNzYWdlLnNvdXJjZXM/Lmxlbmd0aCkgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLm1lc3NhZ2UgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLnByb2plY3Q/Lm5hbWUgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLmFwcHJvdmFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIG51bGxcblxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VGZWVkYmFjayA9XG4gICAgICAgICAgICBtZXNzYWdlPy53YXNIZWxwZnVsID09PSB1bmRlZmluZWQgfHwgbWVzc2FnZS53YXNIZWxwZnVsID09PSBudWxsXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG1lc3NhZ2Uud2FzSGVscGZ1bFxuICAgICAgICAgICAgICAgID8gRmVlZGJhY2suVEhVTUJTX1VQXG4gICAgICAgICAgICAgICAgOiBGZWVkYmFjay5USFVNQlNfRE9XTlxuXG4gICAgICAgICAgLy8gS2V5IGVzdGFibGU6IHNvbG8gbWVzc2FnZS5pZCBwYXJhIGV2aXRhciByZW1vdW50IGR1cmFudGUgc3RyZWFtaW5nIChtZXNzYWdlLmRhdGUgcHVlZGUgY2FtYmlhcilcbiAgICAgICAgICBjb25zdCBtZXNzYWdlS2V5ID0gbWVzc2FnZS5pZCA/PyBgbXNnLSR7aW5kZXh9YFxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNZXNzYWdlSXRlbVxuICAgICAgICAgICAgICB7Li4ubWVzc2FnZX1cbiAgICAgICAgICAgICAga2V5PXttZXNzYWdlS2V5fVxuICAgICAgICAgICAgICBhdXRoVXNlcj17YXV0aFVzZXJ9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufVxuICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17aGFuZGxlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb249e2hhbmRsZUFwcHJvdmFsRGVjaXNpb25XaXRoU2Nyb2xsfVxuICAgICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPXshIXNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZS5pZF19XG4gICAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17bWVzc2FnZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvPlxuICAgICAge3N0cmVhbUxvYWRpbmdEaXNwbGF5ICYmIChcbiAgICAgICAgPFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgICAgIDxBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIGFjdGl2aXR5PXtzdHJlYW1Mb2FkaW5nRGlzcGxheX0gLz5cbiAgICAgICAgPC9TQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICl9XG4gICAgPC8+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VzT3V0ZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fT5cbiAgICAgIHtpc1Njcm9sbE9uUGFyZW50ID8gKFxuICAgICAgICA8U0NNZXNzYWdlc1Njcm9sbCByZWY9e21lc3NhZ2VzUmVmfSBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxTQ01lc3NhZ2VzSW5uZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fSAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fT5cbiAgICAgICAgICAgIHttZXNzYWdlc0NvbnRlbnR9XG4gICAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICAgIDwvU0NNZXNzYWdlc1Njcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01lc3NhZ2VzSW5uZXJcbiAgICAgICAgICByZWY9e21lc3NhZ2VzUmVmfVxuICAgICAgICAgIG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX1cbiAgICAgICAgICAkc2Nyb2xsT25QYXJlbnQ9e2ZhbHNlfVxuICAgICAgICAgICRpc01hcmtldHBsYWNlR2xvYmFsPXtpc01hcmtldHBsYWNlR2xvYmFsQWdlbnR9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2Nyb2xsVG9Cb3R0b20gJiYgKFxuICAgICAgICA8U2Nyb2xsVG9Cb3R0b21CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxBcnJvd1NtYWxsRG93biBjb2xvcj1cIiM2NjZcIiB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9TY3JvbGxUb0JvdHRvbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TQ01lc3NhZ2VzT3V0ZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1lc3NhZ2VzID0gUmVhY3QubWVtbyhDaGF0QUlNZXNzYWdlc0lubmVyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBSyxJQUFRQyxJQUFJLEVBQWFDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFBQyxhQUFBLElBQUFDLGNBQUEsUUFBUSxPQUFPO0FBQzdHLFNBQVNDLFVBQVUsUUFBUSxZQUFZO0FBQ3ZDLFNBQVNDLGdCQUFnQixRQUFRLGtCQUFrQjtBQUNuRCxTQUFTQyxjQUFjLFFBQVEsaURBQWlEO0FBRWhGLFNBQVNDLGNBQWMsUUFBUSwyQ0FBMkM7QUFDMUUsU0FBU0MsV0FBVyxRQUFRLHFDQUFxQztBQUNqRSxTQUFTQyxzQkFBc0IsUUFBUSxvQ0FBb0M7QUFDM0UsU0FBU0MsbUJBQW1CLFFBQVEsZ0RBQWdEO0FBRXBGLFNBQXNCQyxlQUFlLFFBQVEscUJBQXFCO0FBQ2xFLFNBQVNDLDhCQUE4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
|
|
803
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIm1lbW8iLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlRWxlbWVudCIsIl9jcmVhdGVFbGVtZW50IiwiQXJyb3dTbWFsbERvd24iLCJBdHRhY2htZW50Q2FyZCIsIkFwcHJvdmFsQm94IiwiQXR0YWNobWVudFByZXZpZXdNb2RhbCIsIkF0dGFjaG1lbnRDYXJkQXVkaW8iLCJNYWlhU3RyZWFtZG93biIsIkNoYXRIaXN0b3J5Um9sZSIsInJlbmRlclRleHRXaXRoTWVudGlvbnMiLCJoYXNJbmxpbmVNYXJrZXJzIiwiaXNNYWlha2VyQWdlbnQiLCJ1c2VVc2VyIiwidXNlVCIsInVzZUNoYXRNYW5hZ2VyIiwidXNlU21vb3RoU3RyZWFtVGV4dCIsInVzZVN0cmVhbWluZ01lc3NhZ2UiLCJMb2FkaW5nVGV4dCIsIkFnZW50QWN0aXZpdHlJbmRpY2F0b3IiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwicmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IiwiTG9hZGVyIiwiRmFkZSIsIk1lc3NhZ2VGcm9tVXNlciIsIk1lc3NhZ2VGcm9tT3RoZXIiLCJNZXNzYWdlQ29udGVudEZyb21Vc2VyIiwiTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIiLCJNZXNzYWdlRmVlZGJhY2siLCJTQ0NBSU1lc3NhZ2VXcmFwcGVyIiwiU2Nyb2xsVG9Cb3R0b21CdXR0b24iLCJTQ01lc3NhZ2VzT3V0ZXIiLCJTQ01lc3NhZ2VzU2Nyb2xsIiwiU0NNZXNzYWdlc0lubmVyIiwiU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4iLCJTQ09wdGlvbnNMaXN0IiwiU0NPcHRpb25JdGVtIiwiU0NNZXNzYWdlSXRlbVdyYXBwZXIiLCJTQ01lc3NhZ2VJdGVtSW5uZXIiLCJTQ0F0dGFjaG1lbnRzUm93IiwiU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4iLCJGZWVkYmFjayIsInVzZUdsb2JhbENvbnRleHQiLCJFbnRpdHlMaW5rQ3VzdG9tTGluayIsImdldEVudGl0eUxpbmtXcmFwcGVyQ2xhc3NOYW1lIiwiQ2hhdEFJU3VnZ2VzdGlvbnMiLCJDaGF0QUlDcmVhdGVBZ2VudEFjdGlvbnMiLCJFVkVOVFMiLCJ1c2VFdmVudCIsImRvd25sb2FkRmlsZUZyb21VcmwiLCJqc3giLCJfanN4IiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3hzIiwiX2pzeHMiLCJNZXNzYWdlV3JhcHBlciIsIl9yZWYiLCJpc0N1cnJlbnRVc2VyIiwiY2hpbGRyZW4iLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIk1lc3NhZ2VDb21wb25lbnQiLCJfb2JqZWN0U3ByZWFkIiwiTWVzc2FnZUNvbnRlbnRXcmFwcGVyIiwiX3JlZjIiLCJfZXhjbHVkZWQyIiwiTWVzc2FnZUNvbnRlbnRDb21wb25lbnQiLCJNZXNzYWdlT3B0aW9ucyIsIl9yZWYzIiwib3B0aW9ucyIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNlbGVjdGVkT3B0aW9uIiwic2V0U2VsZWN0ZWRPcHRpb24iLCJoYW5kbGVTZWxlY3QiLCJvcHRpb24iLCJtYXAiLCIkaGFzU2VsZWN0aW9uIiwiJGRpbW1lZCIsImlkIiwib25DbGljayIsIm5hbWUiLCJTdHJlYW1pbmdNZXNzYWdlQm9keSIsIl9wcm9wcyRjcmVhdGVBZ2VudEZvbCIsIl9wcm9wcyRzdWdnZXN0aW9ucyIsInN0cmVhbWluZ1RleHQiLCJpc1N0cmVhbWluZyIsIm1lc3NhZ2VJZCIsInJhd1RleHQiLCJtZXNzYWdlIiwid2luRmxhZ3MiLCJ3aW5kb3ciLCJkaXNwbGF5VGV4dCIsImVuYWJsZWQiLCJtYXhDaGFyc1BlckZyYW1lIiwic25hcFRvV29yZEJvdW5kYXJ5Iiwic3RyZWFtTGFnTXMiLCJ0YXJnZXRMYWdNcyIsInN0cmVhbUFkYXB0IiwiYWRhcHRUb0JhY2tlbmRSYXRlIiwic3RyZWFtQnVmZmVyTXMiLCJ0YXJnZXRCdWZmZXJNcyIsInN0cmVhbU1pbkJ1ZmZlciIsIm1pbkJ1ZmZlckNoYXJzIiwic3RyZWFtV2FybXVwTXMiLCJ3YXJtdXBNcyIsImNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQiLCJjcmVhdGVBZ2VudEZvbGxvd1VwIiwiYWdlbnRJZCIsImhhc01lbnRpb25zIiwibWVudGlvbk5vZGVzIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsImNsYXNzTmFtZSIsInN0eWxlIiwiZGlzcGxheSIsInZhcmlhbnQiLCJjb21wb25lbnRzIiwiYSIsImlzQW5pbWF0aW5nIiwiaXNBc3Npc3RhbnQiLCJpc0Vycm9yIiwiYXBwcm92YWwiLCJjb250ZW50Iiwic291cmNlcyIsImhhbmRsZUZlZWRiYWNrIiwiaGFuZGxlRmVlZGJhY2tDbGljayIsImRpc2FibGVGZWVkYmFjayIsInN1Z2dlc3Rpb25zIiwibGVuZ3RoIiwib25TZWxlY3RTdWdnZXN0aW9uIiwic3VnZ2VzdGlvbiIsImhhbmRsZVN1Z2dlc3Rpb25DbGljayIsImRpc2FibGVkIiwic3VnZ2VzdGlvbnNEaXNhYmxlZCIsImhpZGRlbiIsImlzTGFzdE1lc3NhZ2UiLCJNZXNzYWdlSXRlbSIsIl9wcm9wcyRwcm9qZWN0TWV0YWRhdCIsInVzZXIiLCJhdXRoVXNlciIsImlzQ2hhbmdlUHJvamVjdCIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJyb2xlIiwiYXR0YWNobWVudHMiLCJhcHByb3ZhbFN0YXR1cyIsImhhc1NlbGVjdGVkU3VnZ2VzdGlvbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicHJldmlld0F0dGFjaG1lbnQiLCJzZXRQcmV2aWV3QXR0YWNobWVudCIsIlVTRVIiLCJ0b1N0cmluZyIsIkFTU0lTVEFOVCIsImlzU3RyZWFtaW5nUGxhY2Vob2xkZXIiLCJpc0FjdGl2ZVN0cmVhbWluZyIsImlzVGhpbmtpbmciLCJtZXNzYWdlQXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVBdHRhY2htZW50Q2xpY2siLCJhdHRhY2htZW50IiwiZmlsZSIsIkZpbGUiLCJvcmlnaW5hbEZpbGUiLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJoYW5kbGVBdHRhY2htZW50RG93bmxvYWQiLCJfcmVmNCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZXh0ZW5zaW9uIiwiZmlsZU5hbWUiLCJmaWxlVXJsIiwiYmxvYlVybCIsImRvd25sb2FkZWRGaWxlIiwibGluayIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJpbmNsdWRlcyIsImNvbmNhdCIsInR5cGUiLCJzZW50IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiYWJydXB0IiwiZG9jdW1lbnQiLCJocmVmIiwiZG93bmxvYWQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjbGljayIsInNldFRpbWVvdXQiLCJyZW1vdmVDaGlsZCIsInJldm9rZU9iamVjdFVSTCIsImNvbnNvbGUiLCJlcnJvciIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFzRmVlZGJhY2siLCIkaXNBc3Npc3RhbnQiLCJtZXNzYWdlRXh0cmFDb250ZW50IiwiZmVlZGJhY2siLCJzZXNzaW9uSWQiLCJzcGxpdCIsImZpbHRlciIsInF1ZXN0aW9uSWQiLCJqb2luIiwiaW5kZXgiLCJfYXR0YWNobWVudCR0eXBlIiwiX2F0dGFjaG1lbnQkbmFtZSIsImF0dGFjaG1lbnRUeXBlIiwidG9Mb3dlckNhc2UiLCJhdHRhY2htZW50TmFtZSIsImlzQXVkaW9GaWxlIiwic3RhcnRzV2l0aCIsInNvbWUiLCJleHQiLCJlbmRzV2l0aCIsInBvc2l0aW9uSW5kZXgiLCJvbkRvd25sb2FkIiwicGVuZGluZ19hY3Rpb25zIiwiYWN0aW9ucyIsInN0YXR1cyIsIm9uQXBwcm92ZSIsInRocmVhZElkcyIsIm9uUmVqZWN0IiwiaXNQcm9qZWN0RGVsZXRlZCIsInByb2plY3RNZXRhZGF0YSIsImlzX2RlbGV0ZWQiLCJpc0V4cGFuZGVkIiwiZXhwYW5kZWQiLCJoaXRsSW5zdGFuY2VJZCIsIm9yaWdpbmFsX3RocmVhZF9pZCIsIndhcm5pbmdNZXNzYWdlIiwid2FybmluZ19tZXNzYWdlIiwibWFudWFsQXBwcm92YWxEZXRlY3RlZCIsIm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCIsImlzT3BlbiIsIm9uQ2xvc2UiLCJDaGF0QUlNZXNzYWdlc0lubmVyIiwiX3JlZjUiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJpbml0aWFsQ2hhdElkIiwib25FcnJvciIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsIm9uU2Nyb2xsVG9Cb3R0b20iLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJfdXNlR2xvYmFsQ29udGV4dCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiYWdlbnQiLCJldmVudCIsIm1lc3NhZ2VzUmVmIiwiY2hhdEluaXRpYWxpemVkUmVmIiwiaXNMb2FkaW5nTW9yZVJlZiIsInVzZXJTY3JvbGxpbmdSZWYiLCJzY3JvbGxUaHJlc2hvbGRSZWYiLCJsYXN0U2Nyb2xsVG9wUmVmIiwic2hvd1Njcm9sbFRvQm90dG9tUmVmIiwic2Nyb2xsUmFmUmVmIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93U2Nyb2xsVG9Cb3R0b20iLCJzZXRTaG93U2Nyb2xsVG9Cb3R0b20iLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHMiLCJzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzIiwiX3VzZUNoYXRNYW5hZ2VyIiwiY2hhdElkIiwidW5kZWZpbmVkIiwibWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1dyaXRpbmciLCJsb2FkaW5nTWVzc2FnZSIsInN0cmVhbUFjdGl2aXR5IiwiYWN0aXZlTG9hZGluZ3MiLCJzZW5kTWVzc2FnZSIsImNoYW5nZVByb2plY3QiLCJpbml0aWFsaXplQ2hhdCIsImhhbmRsZVNjcm9sbCIsInN0b3BHZW5lcmF0aW9uIiwidHJpbSIsImlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCIsImFpQ2hhdFN1Z2dlc3RlZEFuc3dlciIsImFnZW50X3R5cGUiLCJfZGVmaW5lUHJvcGVydHkiLCJ0YXJnZXRNZXNzYWdlIiwiZmluZCIsIm1zZyIsImlzUmV0cnlTdWdnZXN0aW9uIiwibGFzdFVzZXJNZXNzYWdlIiwiYXQiLCJyZXRyeUF0dGFjaG1lbnRzIiwiZW50aXR5IiwidXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSIsImVsIiwiY3VycmVudCIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImRpc3RhbmNlRnJvbUJvdHRvbSIsInNob3VsZFNob3ciLCJzY3JvbGxUb0JvdHRvbVJhZiIsIm9wdHMiLCJfb3B0cyRza2lwSWZVc2VyU2Nyb2wiLCJza2lwSWZVc2VyU2Nyb2xsaW5nIiwiX29wdHMkZGVsYXlNcyIsImRlbGF5TXMiLCJydW4iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJoYW5kbGVDbGlja1Njcm9sbFRvQm90dG9tIiwic2Nyb2xsVG8iLCJ0b3AiLCJiZWhhdmlvciIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb25XaXRoU2Nyb2xsIiwiaGFuZGxlU2Nyb2xsVG9Cb3R0b20iLCJlIiwiY29udGFpbmVyIiwiY3VycmVudFRhcmdldCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiaXNTY3JvbGxpbmdVcCIsImlzTmVhckJvdHRvbSIsInNlbmRNZXNzYWdlUmVmIiwic3RvcEdlbmVyYXRpb25SZWYiLCJvblNlbmRNZXNzYWdlUmVhZHlSZWYiLCJzZW5kTWVzc2FnZVByb3h5UmVmIiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwic3RvcEdlbmVyYXRpb25Qcm94eVJlZiIsInJhZklkIiwibGFzdEhlaWdodCIsInRpY2siLCJjdXJyZW50SGVpZ2h0IiwibGFzdE1lc3NhZ2VJZFJlZiIsImxhc3RNZXNzYWdlc0xlbmd0aFJlZiIsIl9sYXN0TWVzc2FnZSRpZCIsImxhc3RNZXNzYWdlIiwibGFzdElkIiwicHJldklkIiwicHJldkxlbiIsImlzTmV3TWVzc2FnZSIsImlzQXRCb3R0b20iLCJoYXNJbml0aWFsTWVzc2FnZSIsImlzQXBwcm92YWwiLCJpc0Fuc3dlck9yUXVlc3Rpb24iLCJhdHRhY2htZW50c0NvdW50Iiwic3RyZWFtTG9hZGluZ0Rpc3BsYXkiLCJoYXNBdHRhY2htZW50cyIsIkJvb2xlYW4iLCJpc1Njcm9sbE9uUGFyZW50IiwiZXhwYW5kZWRSZWYiLCJzYXZlZFNjcm9sbFRvcCIsImZpbGwiLCJtZXNzYWdlc0NvbnRlbnQiLCJ0ZXh0IiwiX21lc3NhZ2UkYXR0YWNobWVudHMiLCJfbWVzc2FnZSRzb3VyY2VzIiwiX21lc3NhZ2UkcHJvamVjdCIsIl9tZXNzYWdlJGlkIiwiaXNBc3Npc3RhbnRNZXNzYWdlIiwicHJvamVjdCIsIm1lc3NhZ2VGZWVkYmFjayIsIndhc0hlbHBmdWwiLCJUSFVNQlNfVVAiLCJUSFVNQlNfRE9XTiIsIm1lc3NhZ2VLZXkiLCJrZXkiLCJhY3Rpdml0eSIsIiRzY3JvbGxPblBhcmVudCIsInJlZiIsIm9uU2Nyb2xsIiwiJGlzTWFya2V0cGxhY2VHbG9iYWwiLCJjb2xvciIsIndpZHRoIiwiaGVpZ2h0IiwiQ2hhdEFJTWVzc2FnZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTWVzc2FnZXMvQ2hhdEFJTWVzc2FnZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tdW5zdGFibGUtbmVzdGVkLWNvbXBvbmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgUmVhY3QsIHsgRkMsIG1lbW8sIFJlYWN0Tm9kZSwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBBcnJvd1NtYWxsRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Fycm93U21hbGxEb3duJ1xuXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXBwcm92YWxCb3ggfSBmcm9tICcuLi8uLi9hdG9tcy9BcHByb3ZhbEJveC9BcHByb3ZhbEJveCdcbmltcG9ydCB7IEF0dGFjaG1lbnRQcmV2aWV3TW9kYWwgfSBmcm9tICcuLi8uLi9hdG9tcy9BdHRhY2htZW50UHJldmlld01vZGFsJ1xuaW1wb3J0IHsgQXR0YWNobWVudENhcmRBdWRpbyB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkQXVkaW8nXG5pbXBvcnQgeyBNYWlhU3RyZWFtZG93biB9IGZyb20gJy4uLy4uL2F0b21zL01haWFTdHJlYW1kb3duJ1xuaW1wb3J0IHR5cGUgeyBNYWlhU3RyZWFtZG93blByb3BzIH0gZnJvbSAnLi4vLi4vYXRvbXMvTWFpYVN0cmVhbWRvd24nXG5pbXBvcnQgeyBNQUlBTWVzc2FnZVByb3BzIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQU1lc3NhZ2UvTUFJQU1lc3NhZ2UuaW50ZXJmYWNlcydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0SGlzdG9yeVJvbGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgcmVuZGVyVGV4dFdpdGhNZW50aW9ucywgaGFzSW5saW5lTWFya2VycyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcblxuaW1wb3J0IHsgaXNNYWlha2VyQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQ09SVXNlciwgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5cbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgdXNlQ2hhdE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlcidcbmltcG9ydCB7IHVzZVNtb290aFN0cmVhbVRleHQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbW9vdGhTdHJlYW1UZXh0J1xuaW1wb3J0IHsgdXNlU3RyZWFtaW5nTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVN0cmVhbWluZ01lc3NhZ2UnXG5cbmltcG9ydCB7IExvYWRpbmdUZXh0IH0gZnJvbSAnLi4vLi4vYXRvbXMvTG9hZGluZ1RleHQnXG5pbXBvcnQgeyBBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvQWdlbnRBY3Rpdml0eUluZGljYXRvcidcbmltcG9ydCB7IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQsIHJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBGYWRlIH0gZnJvbSAnLi4vLi4vYXRvbXMvRmFkZSdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5cbmltcG9ydCB7IE1lc3NhZ2VGcm9tVXNlciwgTWVzc2FnZUZyb21PdGhlciwgTWVzc2FnZUNvbnRlbnRGcm9tVXNlciwgTWVzc2FnZUNvbnRlbnRGcm9tT3RoZXIgfSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IE1lc3NhZ2VGZWVkYmFjayB9IGZyb20gJy4uL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7XG4gIFNDQ0FJTWVzc2FnZVdyYXBwZXIsXG4gIFNjcm9sbFRvQm90dG9tQnV0dG9uLFxuICBTQ01lc3NhZ2VzT3V0ZXIsXG4gIFNDTWVzc2FnZXNTY3JvbGwsXG4gIFNDTWVzc2FnZXNJbm5lcixcbiAgU0NMb2FkaW5nTWVzc2FnZXNDb2x1bW4sXG4gIFNDT3B0aW9uc0xpc3QsXG4gIFNDT3B0aW9uSXRlbSxcbiAgU0NNZXNzYWdlSXRlbVdyYXBwZXIsXG4gIFNDTWVzc2FnZUl0ZW1Jbm5lcixcbiAgU0NBdHRhY2htZW50c1JvdyxcbiAgU0NBcHByb3ZhbEFjdGlvbnNDb2x1bW4sXG59IGZyb20gJy4vbmV3U3R5bGVzJ1xuaW1wb3J0IHsgRmVlZGJhY2sgfSBmcm9tICcuLi9NZXNzYWdlRmVlZGJhY2svTWVzc2FnZUZlZWRiYWNrJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgRW50aXR5TGlua0N1c3RvbUxpbmssIGdldEVudGl0eUxpbmtXcmFwcGVyQ2xhc3NOYW1lIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZW50aXR5TGlua1JlbmRlcidcbmltcG9ydCB7IENoYXRBSVN1Z2dlc3Rpb25zIH0gZnJvbSAnLi9DaGF0QUlTdWdnZXN0aW9ucydcbmltcG9ydCB7IENoYXRBSUNyZWF0ZUFnZW50QWN0aW9ucyB9IGZyb20gJy4vQ2hhdEFJQ3JlYXRlQWdlbnRBY3Rpb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZG93bmxvYWRGaWxlRnJvbVVybCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2ZpbGVEb3dubG9hZEhlbHBlcidcblxudHlwZSBDaGF0QUlNZXNzYWdlc1Byb3BzID0ge1xuICB1c2VySW5pdGlhbE1lc3NhZ2U6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmdcbiAgICBhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXVxuICAgIGZhcUlkPzogc3RyaW5nXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW11cbiAgICBmdWFJZD86IHN0cmluZ1xuICAgIHNjSWQ/OiBzdHJpbmdcbiAgfVxuICBpbml0aWFsQ2hhdElkOiBzdHJpbmcgfCBudWxsXG4gIG9uRXJyb3I6ICgpID0+IHZvaWRcbiAgb25TZW5kTWVzc2FnZVJlYWR5PzogKFxuICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiB2b2lkLFxuICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgIGlzU3RyZWFtaW5nOiBib29sZWFuLFxuICAgIGlzV3JpdGluZzogYm9vbGVhblxuICApID0+IHZvaWRcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW5cbiAgb25TY3JvbGxUb0JvdHRvbT86ICgpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGFnZW50cz86IEFnZW50W11cbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbnR5cGUgTWVzc2FnZUl0ZW1Qcm9wcyA9IENoYXRNZXNzYWdlICYge1xuICBhdXRoVXNlcjogQ09SVXNlclxuICBoYW5kbGVTZWxlY3RPcHRpb246IChvcHRpb246IFByb2plY3QpID0+IHZvaWRcbiAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrOiAobWVzc2FnZUlkOiBzdHJpbmcsIHN1Z2dlc3Rpb246IHN0cmluZykgPT4gdm9pZFxuICBoYXNTZWxlY3RlZFN1Z2dlc3Rpb24/OiBib29sZWFuXG4gIGhhbmRsZUZlZWRiYWNrOiAoZmVlZGJhY2s6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbjogKHRocmVhZElkczogc3RyaW5nW10sIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JykgPT4gdm9pZFxuICBkaXNhYmxlRmVlZGJhY2s/OiBGZWVkYmFjayB8IG51bGxcbiAgc291cmNlcz86IGFueVxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIGV4cGFuZGVkPzogYm9vbGVhblxufVxuXG5pbnRlcmZhY2UgTWVzc2FnZVdyYXBwZXJQcm9wcyB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICAnZGF0YS1tZXNzYWdlLWlkJz86IHN0cmluZ1xuICBoYXNGZWVkYmFjaz86IGJvb2xlYW5cbn1cblxudHlwZSBNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcyA9IE1BSUFNZXNzYWdlUHJvcHMgJiB7XG4gIGlzQ3VycmVudFVzZXI6IGJvb2xlYW5cbiAgaXNFcnJvcj86IGJvb2xlYW5cbiAgaXNDaGFuZ2VQcm9qZWN0PzogYm9vbGVhblxufVxuXG5jb25zdCBNZXNzYWdlV3JhcHBlcjogRkM8TWVzc2FnZVdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBNZXNzYWdlQ29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VGcm9tVXNlciA6IE1lc3NhZ2VGcm9tT3RoZXJcbiAgcmV0dXJuIDxNZXNzYWdlQ29tcG9uZW50IHsuLi5wcm9wc30+e2NoaWxkcmVufTwvTWVzc2FnZUNvbXBvbmVudD5cbn1cblxuY29uc3QgTWVzc2FnZUNvbnRlbnRXcmFwcGVyOiBGQzxNZXNzYWdlQ29udGVudFdyYXBwZXJQcm9wcz4gPSAoeyBpc0N1cnJlbnRVc2VyLCAuLi5wcm9wcyB9KSA9PiB7XG4gIGNvbnN0IE1lc3NhZ2VDb250ZW50Q29tcG9uZW50ID0gaXNDdXJyZW50VXNlciA/IE1lc3NhZ2VDb250ZW50RnJvbVVzZXIgOiBNZXNzYWdlQ29udGVudEZyb21PdGhlclxuICByZXR1cm4gPE1lc3NhZ2VDb250ZW50Q29tcG9uZW50IHsuLi5wcm9wc30gLz5cbn1cblxuZnVuY3Rpb24gTWVzc2FnZU9wdGlvbnMoe1xuICBvcHRpb25zLFxuICBoYW5kbGVTZWxlY3RPcHRpb24sXG59OiB7XG4gIG9wdGlvbnM6IFByb2plY3RbXSB8IG51bGxcbiAgaGFuZGxlU2VsZWN0T3B0aW9uOiAob3B0aW9uOiBQcm9qZWN0KSA9PiB2b2lkXG59KSB7XG4gIGNvbnN0IFtzZWxlY3RlZE9wdGlvbiwgc2V0U2VsZWN0ZWRPcHRpb25dID0gdXNlU3RhdGU8UHJvamVjdCB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0ID0gKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgIGlmIChzZWxlY3RlZE9wdGlvbikgcmV0dXJuXG4gICAgc2V0U2VsZWN0ZWRPcHRpb24ob3B0aW9uKVxuICAgIGhhbmRsZVNlbGVjdE9wdGlvbihvcHRpb24pXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ09wdGlvbnNMaXN0PlxuICAgICAgeyhvcHRpb25zIHx8IFtdKS5tYXAob3B0aW9uID0+IChcbiAgICAgICAgPFNDT3B0aW9uSXRlbVxuICAgICAgICAgICRoYXNTZWxlY3Rpb249eyEhc2VsZWN0ZWRPcHRpb259XG4gICAgICAgICAgJGRpbW1lZD17ISFzZWxlY3RlZE9wdGlvbiAmJiBzZWxlY3RlZE9wdGlvbj8uaWQgIT09IG9wdGlvbi5pZH1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVTZWxlY3Qob3B0aW9uKX1cbiAgICAgICAgICBrZXk9e29wdGlvbi5pZH1cbiAgICAgICAgPlxuICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgPC9TQ09wdGlvbkl0ZW0+XG4gICAgICApKX1cbiAgICA8L1NDT3B0aW9uc0xpc3Q+XG4gIClcbn1cblxuLyoqIFNvbG8gZXN0ZSBjb21wb25lbnRlIHJlLXJlbmRlcml6YSBjdWFuZG8gY2FtYmlhIGVsIHRleHRvIGVuIHN0cmVhbWluZyAobGVlIGRlbCBjb250ZXh0KS4gKi9cbmNvbnN0IFN0cmVhbWluZ01lc3NhZ2VCb2R5ID0gbWVtbyhcbiAgKHByb3BzOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaXNTdHJlYW1pbmc6IGJvb2xlYW5cbiAgICBpc0N1cnJlbnRVc2VyOiBib29sZWFuXG4gICAgaXNBc3Npc3RhbnQ6IGJvb2xlYW5cbiAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPzogYm9vbGVhblxuICAgIGFwcHJvdmFsPzogTWVzc2FnZUl0ZW1Qcm9wc1snYXBwcm92YWwnXVxuICAgIGlzRXJyb3I/OiBib29sZWFuXG4gICAgc291cmNlcz86IE1lc3NhZ2VJdGVtUHJvcHNbJ3NvdXJjZXMnXVxuICAgIHN1Z2dlc3Rpb25zPzogc3RyaW5nW10gfCBudWxsXG4gICAgY3JlYXRlQWdlbnRGb2xsb3dVcD86IHsgYWdlbnRJZDogc3RyaW5nIH0gfCBudWxsXG4gICAgaGFuZGxlRmVlZGJhY2tDbGljazogKGY6IEZlZWRiYWNrKSA9PiB2b2lkXG4gICAgZGlzYWJsZUZlZWRiYWNrOiBGZWVkYmFjayB8IG51bGxcbiAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s6IChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB2b2lkXG4gICAgc3VnZ2VzdGlvbnNEaXNhYmxlZD86IGJvb2xlYW5cbiAgICBtZXNzYWdlSWQ6IHN0cmluZ1xuICAgIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuXG4gIH0pID0+IHtcbiAgICAvLyBUZXh0byBkZWwgc3RyZWFtOiBzb2xvIHNlIGxlZSBkZWwgc3RvcmUgY3VhbmRvIGVzdGUgbWVuc2FqZSBlcyBlbFxuICAgIC8vIHF1ZSBlc3TDoSBlbiBzdHJlYW1pbmcuIHVzZVN5bmNFeHRlcm5hbFN0b3JlIGHDrXNsYSBlbCByZS1yZW5kZXIgYVxuICAgIC8vIGVzdGUgY29tcG9uZW50ZSwgc2luIHRvY2FyIGVsIHJlc3RvIGRlbCDDoXJib2wuXG4gICAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IHVzZVN0cmVhbWluZ01lc3NhZ2UocHJvcHMuaXNTdHJlYW1pbmcgPyBwcm9wcy5tZXNzYWdlSWQgOiBudWxsKVxuICAgIGNvbnN0IHJhd1RleHQgPSBwcm9wcy5pc1N0cmVhbWluZyA/IHN0cmVhbWluZ1RleHQgOiBwcm9wcy5tZXNzYWdlXG4gICAgLy8gU21vb3RoIHN0cmVhbWluZzogZGVzYWNvcGxhIGxhIGNhZGVuY2lhIGRlbCBiYWNrZW5kIGRlbCByZW5kZXIuXG4gICAgLy8gRHVyYW50ZSBlbCBzdHJlYW1pbmcgbGliZXJhIGNoYXJzIGEgcml0bW8gY29uc3RhbnRlIHbDrWEgckFGOyBjdWFuZG9cbiAgICAvLyB0ZXJtaW5hLCBtdWVzdHJhIGVsIHRleHRvIGZpbmFsIGFsIGluc3RhbnRlIChzaW4gYW5pbWFjacOzbiByZXNpZHVhbCkuXG4gICAgLy8gTG9zIGRlZmF1bHRzIGRlbCBob29rIHNlIGFqdXN0YXJvbiBlbXDDrXJpY2FtZW50ZSBlbiBzdGFnaW5nOyBhdW4gYXPDrVxuICAgIC8vIHNlIGV4cG9uZW4gZmxhZ3MgZGUgcnVudGltZSAod2luZG93LiopIHBhcmEgcG9kZXIgdHVuZWFyIHNpbiByZWNvbXBpbGFyXG4gICAgLy8gc2kgYWxnw7puIGJhY2tlbmQgcHJlc2VudGEgdW5hIGNhZGVuY2lhIG11eSBkaXN0aW50YSBlbiBwcm9kdWNjacOzbi5cbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1BZGFwdCA9IGZhbHNlICAgICAgLy8gZGVzYWN0aXZhIGFkYXB0YWNpw7NuIGFsIGJhY2tlbmRcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1CdWZmZXJNcyA9IDYwMCAgICAgLy8gY29sY2jDs24gb2JqZXRpdm8gKG1zKVxuICAgIC8vICAgd2luZG93LnN0cmVhbUxhZ01zID0gNDUwICAgICAgICAvLyBsYWcgbcOheGltbyBiYXNlIChtcylcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1NaW5CdWZmZXIgPSA3MCAgICAgLy8gcGlzbyBkZWwgY29sY2jDs24gZW4gY2hhcnNcbiAgICAvLyAgIHdpbmRvdy5zdHJlYW1XYXJtdXBNcyA9IDQwMCAgICAgLy8gd2FybXVwIGluaWNpYWwgKG1zKVxuICAgIGNvbnN0IHdpbkZsYWdzID1cbiAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gICAgICAgID8gKHdpbmRvdyBhcyB1bmtub3duIGFzIHtcbiAgICAgICAgICAgIHN0cmVhbUFkYXB0PzogYm9vbGVhblxuICAgICAgICAgICAgc3RyZWFtQnVmZmVyTXM/OiBudW1iZXJcbiAgICAgICAgICAgIHN0cmVhbUxhZ01zPzogbnVtYmVyXG4gICAgICAgICAgICBzdHJlYW1NaW5CdWZmZXI/OiBudW1iZXJcbiAgICAgICAgICAgIHN0cmVhbVdhcm11cE1zPzogbnVtYmVyXG4gICAgICAgICAgfSlcbiAgICAgICAgOiB7fVxuICAgIGNvbnN0IGRpc3BsYXlUZXh0ID0gdXNlU21vb3RoU3RyZWFtVGV4dChyYXdUZXh0LCB7XG4gICAgICBlbmFibGVkOiAhIXByb3BzLmlzU3RyZWFtaW5nLFxuICAgICAgbWF4Q2hhcnNQZXJGcmFtZTogMjQsXG4gICAgICBzbmFwVG9Xb3JkQm91bmRhcnk6IHRydWUsXG4gICAgICAuLi4od2luRmxhZ3Muc3RyZWFtTGFnTXMgIT0gbnVsbCAmJiB7IHRhcmdldExhZ01zOiB3aW5GbGFncy5zdHJlYW1MYWdNcyB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1BZGFwdCAhPSBudWxsICYmIHsgYWRhcHRUb0JhY2tlbmRSYXRlOiB3aW5GbGFncy5zdHJlYW1BZGFwdCB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1CdWZmZXJNcyAhPSBudWxsICYmIHsgdGFyZ2V0QnVmZmVyTXM6IHdpbkZsYWdzLnN0cmVhbUJ1ZmZlck1zIH0pLFxuICAgICAgLi4uKHdpbkZsYWdzLnN0cmVhbU1pbkJ1ZmZlciAhPSBudWxsICYmIHsgbWluQnVmZmVyQ2hhcnM6IHdpbkZsYWdzLnN0cmVhbU1pbkJ1ZmZlciB9KSxcbiAgICAgIC4uLih3aW5GbGFncy5zdHJlYW1XYXJtdXBNcyAhPSBudWxsICYmIHsgd2FybXVwTXM6IHdpbkZsYWdzLnN0cmVhbVdhcm11cE1zIH0pLFxuICAgIH0pXG4gICAgY29uc3QgY3JlYXRlQWdlbnRBY3Rpb25zQWdlbnRJZCA9IHByb3BzLmNyZWF0ZUFnZW50Rm9sbG93VXA/LmFnZW50SWRcblxuICAgIGlmICghZGlzcGxheVRleHQgJiYgIXByb3BzLmlzU3RyZWFtaW5nKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGhhc01lbnRpb25zID0gaGFzSW5saW5lTWFya2VycyhkaXNwbGF5VGV4dClcbiAgICBjb25zdCBtZW50aW9uTm9kZXMgPSBoYXNNZW50aW9ucyA/IHJlbmRlclRleHRXaXRoTWVudGlvbnMoZGlzcGxheVRleHQpIDogbnVsbFxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICA8U0NDQUlNZXNzYWdlV3JhcHBlclxuICAgICAgICAgIGlzQ3VycmVudFVzZXI9e3Byb3BzLmlzQ3VycmVudFVzZXJ9XG4gICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICBjbGFzc05hbWU9e2dldEVudGl0eUxpbmtXcmFwcGVyQ2xhc3NOYW1lKGRpc3BsYXlUZXh0KX1cbiAgICAgICAgPlxuICAgICAgICAgIHtoYXNNZW50aW9ucyAmJiBtZW50aW9uTm9kZXMgPyAoXG4gICAgICAgICAgICAvLyBTaSBoYXkgbWVudGlvbnMsIHJlbmRlcml6YXIgZGlyZWN0YW1lbnRlIChzaW4gbWFya2Rvd24gZW4gZWwgbWlzbW8gcMOhcnJhZm8pXG4gICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lJyB9fT57bWVudGlvbk5vZGVzfTwvc3Bhbj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgLy8gU2luIG1lbnRpb25zLCBwYXNhciBhIFN0cmVhbWRvd24gcGFyYSBtYXJrZG93biBzdXBwb3J0XG4gICAgICAgICAgICA8TWFpYVN0cmVhbWRvd25cbiAgICAgICAgICAgICAgdmFyaWFudD1cImNoYXRcIlxuICAgICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtwcm9wcy5pc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgICBpc0Zyb250ZW5kQ2FuY2VsbGVkPXtwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkfVxuICAgICAgICAgICAgICBjb21wb25lbnRzPXt7IGE6IEVudGl0eUxpbmtDdXN0b21MaW5rIH0gYXMgTWFpYVN0cmVhbWRvd25Qcm9wc1snY29tcG9uZW50cyddfVxuICAgICAgICAgICAgICBpc0FuaW1hdGluZz17ISFwcm9wcy5pc1N0cmVhbWluZ31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2Rpc3BsYXlUZXh0fVxuICAgICAgICAgICAgPC9NYWlhU3RyZWFtZG93bj5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NDQ0FJTWVzc2FnZVdyYXBwZXI+XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJiAhcHJvcHMuaXNFcnJvciAmJiAhcHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZCAmJiAhcHJvcHMuYXBwcm92YWwgJiYgIXByb3BzLmlzU3RyZWFtaW5nICYmIChcbiAgICAgICAgICA8TWVzc2FnZUZlZWRiYWNrXG4gICAgICAgICAgICBjb250ZW50PXtkaXNwbGF5VGV4dH1cbiAgICAgICAgICAgIHNvdXJjZXM9e3Byb3BzLnNvdXJjZXN9XG4gICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17cHJvcHMuaGFuZGxlRmVlZGJhY2tDbGlja31cbiAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17cHJvcHMuZGlzYWJsZUZlZWRiYWNrfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJlxuICAgICAgICAgICFwcm9wcy5pc0Zyb250ZW5kQ2FuY2VsbGVkICYmXG4gICAgICAgICAgIXByb3BzLmFwcHJvdmFsICYmXG4gICAgICAgICAgKCFwcm9wcy5pc0Vycm9yIHx8IHByb3BzLnN1Z2dlc3Rpb25zPy5sZW5ndGgpICYmIChcbiAgICAgICAgICAgIDxDaGF0QUlTdWdnZXN0aW9uc1xuICAgICAgICAgICAgICBzdWdnZXN0aW9ucz17cHJvcHMuc3VnZ2VzdGlvbnMgfHwgW119XG4gICAgICAgICAgICAgIG9uU2VsZWN0U3VnZ2VzdGlvbj17c3VnZ2VzdGlvbiA9PiBwcm9wcy5oYW5kbGVTdWdnZXN0aW9uQ2xpY2socHJvcHMubWVzc2FnZUlkLCBzdWdnZXN0aW9uKX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e3Byb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAgIGhpZGRlbj17ISFwcm9wcy5pc1N0cmVhbWluZyB8fCAhcHJvcHMuaXNMYXN0TWVzc2FnZSB8fCAhIXByb3BzLnN1Z2dlc3Rpb25zRGlzYWJsZWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIHtwcm9wcy5pc0Fzc2lzdGFudCAmJlxuICAgICAgICAgICFwcm9wcy5pc0Vycm9yICYmXG4gICAgICAgICAgIXByb3BzLmlzRnJvbnRlbmRDYW5jZWxsZWQgJiZcbiAgICAgICAgICAhcHJvcHMuYXBwcm92YWwgJiZcbiAgICAgICAgICAhIWNyZWF0ZUFnZW50QWN0aW9uc0FnZW50SWQgJiYgKFxuICAgICAgICAgICAgPENoYXRBSUNyZWF0ZUFnZW50QWN0aW9uc1xuICAgICAgICAgICAgICBhZ2VudElkPXtjcmVhdGVBZ2VudEFjdGlvbnNBZ2VudElkfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17cHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgICAgaGlkZGVuPXshIXByb3BzLmlzU3RyZWFtaW5nIHx8ICFwcm9wcy5pc0xhc3RNZXNzYWdlIHx8ICEhcHJvcHMuc3VnZ2VzdGlvbnNEaXNhYmxlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvPlxuICAgIClcbiAgfVxuKVxuXG5jb25zdCBNZXNzYWdlSXRlbSA9IG1lbW8oKHByb3BzOiBNZXNzYWdlSXRlbVByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBpZCxcbiAgICB1c2VyLFxuICAgIG1lc3NhZ2UsXG4gICAgaXNTdHJlYW1pbmcsXG4gICAgaXNFcnJvcixcbiAgICBhdXRoVXNlcixcbiAgICBvcHRpb25zLFxuICAgIGlzQ2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVTZWxlY3RPcHRpb24sXG4gICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrLFxuICAgIGhhbmRsZUZlZWRiYWNrLFxuICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24sXG4gICAgZGlzYWJsZUZlZWRiYWNrLFxuICAgIHJvbGUsXG4gICAgc291cmNlcyxcbiAgICBhdHRhY2htZW50cyxcbiAgICBhcHByb3ZhbCxcbiAgICBhcHByb3ZhbFN0YXR1cyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBjcmVhdGVBZ2VudEZvbGxvd1VwLFxuICAgIGhhc1NlbGVjdGVkU3VnZ2VzdGlvbixcbiAgICBpc0xhc3RNZXNzYWdlLFxuICB9ID0gcHJvcHNcblxuICBjb25zdCBbcHJldmlld0F0dGFjaG1lbnQsIHNldFByZXZpZXdBdHRhY2htZW50XSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNDdXJyZW50VXNlciA9IHJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5VU0VSIHx8IHVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKClcbiAgY29uc3QgaXNBc3Npc3RhbnQgPSByb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5UIHx8IHVzZXIuaWQgPT09ICdhc3Npc3RhbnQnXG4gIC8vIE1pZW50cmFzIGVsIGFnZW50ZSBcInBpZW5zYVwiIChzdHJlYW1pbmcgc2luIHRleHRvKSBubyBtb250YW1vcyBlbCBNZXNzYWdlSXRlbTpcbiAgLy8gdW4gcGxhY2Vob2xkZXIgdmFjw61vIHN1bWFyw61hIG90cm8gZ2FwIGRlIDM2cHggZW5jaW1hIGRlbCBpbmRpY2Fkb3IgZGUgYWN0aXZpZGFkLlxuICBjb25zdCBpc1N0cmVhbWluZ1BsYWNlaG9sZGVyID0gaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChpZClcbiAgY29uc3Qgc3RyZWFtaW5nVGV4dCA9IHVzZVN0cmVhbWluZ01lc3NhZ2UoaXNTdHJlYW1pbmcgfHwgaXNTdHJlYW1pbmdQbGFjZWhvbGRlciA/IGlkIDogbnVsbClcbiAgY29uc3QgaXNBY3RpdmVTdHJlYW1pbmcgPSAhIWlzU3RyZWFtaW5nIHx8IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJcbiAgY29uc3QgaXNUaGlua2luZyA9IGlzQWN0aXZlU3RyZWFtaW5nICYmICFzdHJlYW1pbmdUZXh0XG4gIGlmIChpc1RoaW5raW5nKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBjb25zdCBtZXNzYWdlQXR0YWNobWVudHMgPVxuICAgIGF0dGFjaG1lbnRzICYmIGF0dGFjaG1lbnRzLmxlbmd0aCA+IDBcbiAgICAgID8gYXR0YWNobWVudHNcbiAgICAgIDogIWlzQXNzaXN0YW50ICYmIEFycmF5LmlzQXJyYXkoc291cmNlcylcbiAgICAgICAgPyAoc291cmNlcyBhcyBBdHRhY2htZW50RmlsZVtdKVxuICAgICAgICA6IFtdXG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgLy8gUGVybWl0aXIgcHJldmlzdWFsaXphY2nDs24gc2kgdGllbmUgYXJjaGl2byBsb2NhbCBvIFVSTHMgZGVsIGJhY2tlbmRcbiAgICBpZiAoXG4gICAgICBhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgICBhdHRhY2htZW50Lm9yaWdpbmFsRmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCB8fFxuICAgICAgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHxcbiAgICAgIGF0dGFjaG1lbnQudXJsX2ZpbGVcbiAgICApIHtcbiAgICAgIHNldFByZXZpZXdBdHRhY2htZW50KGF0dGFjaG1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuICAgIHNldFByZXZpZXdBdHRhY2htZW50KG51bGwpXG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50RG93bmxvYWQgPSBhc3luYyAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBhdHRhY2htZW50Lm5hbWUuaW5jbHVkZXMoJy4nKSA/ICcnIDogYC4ke2F0dGFjaG1lbnQudHlwZX1gXG4gICAgY29uc3QgZmlsZU5hbWUgPSBgJHthdHRhY2htZW50Lm5hbWV9JHtleHRlbnNpb259YFxuICAgIGNvbnN0IGZpbGVVcmwgPSBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fCBhdHRhY2htZW50LnVybF9maWxlIHx8IGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbFxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBibG9iVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbFxuXG4gICAgICBpZiAoZmlsZVVybCkge1xuICAgICAgICBjb25zdCBkb3dubG9hZGVkRmlsZSA9IGF3YWl0IGRvd25sb2FkRmlsZUZyb21VcmwoZmlsZVVybCwgZmlsZU5hbWUsIGF0dGFjaG1lbnQudHlwZSlcbiAgICAgICAgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZG93bmxvYWRlZEZpbGUpXG4gICAgICB9IGVsc2UgaWYgKGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgYmxvYlVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYXR0YWNobWVudC5maWxlKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWJsb2JVcmwpIHJldHVyblxuXG4gICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICBsaW5rLmhyZWYgPSBibG9iVXJsXG4gICAgICBsaW5rLmRvd25sb2FkID0gZmlsZU5hbWVcbiAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxuICAgICAgbGluay5jbGljaygpXG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVybClcbiAgICAgIH0sIDEwMClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRvd25sb2FkIGF0dGFjaG1lbnQnLCBlcnJvcilcbiAgICB9XG4gIH1cblxuICBpZiAoaXNDaGFuZ2VQcm9qZWN0ICYmIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE1lc3NhZ2VXcmFwcGVyIGtleT17aWR9IGlzQ3VycmVudFVzZXI9e2lzQ3VycmVudFVzZXJ9IGRhdGEtbWVzc2FnZS1pZD17aWR9IGhhc0ZlZWRiYWNrPXtmYWxzZX0+XG4gICAgICAgIDxTQ01lc3NhZ2VJdGVtV3JhcHBlciAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICA8TWVzc2FnZUNvbnRlbnRXcmFwcGVyXG4gICAgICAgICAgICBpc0NoYW5nZVByb2plY3Q9e2lzQ2hhbmdlUHJvamVjdH1cbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2V9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNFcnJvcj17aXNFcnJvcn1cbiAgICAgICAgICAgIG1lc3NhZ2VFeHRyYUNvbnRlbnQ9ezxNZXNzYWdlT3B0aW9ucyBvcHRpb25zPXtvcHRpb25zIGFzIGFueX0gaGFuZGxlU2VsZWN0T3B0aW9uPXtoYW5kbGVTZWxlY3RPcHRpb259IC8+fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvU0NNZXNzYWdlSXRlbVdyYXBwZXI+XG4gICAgICA8L01lc3NhZ2VXcmFwcGVyPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrQ2xpY2sgPSAoZmVlZGJhY2s6IEZlZWRiYWNrKSA9PiB7XG4gICAgY29uc3Qgc2Vzc2lvbklkID0gaWRcbiAgICAgIC5zcGxpdCgnLScpXG4gICAgICAuZmlsdGVyKHF1ZXN0aW9uSWQgPT4gcXVlc3Rpb25JZCAhPT0gJ2Fuc3dlcicpXG4gICAgICAuam9pbignLScpXG4gICAgaGFuZGxlRmVlZGJhY2s/LihmZWVkYmFjaywgc2Vzc2lvbklkKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U0NNZXNzYWdlSXRlbVdyYXBwZXIgJGlzQXNzaXN0YW50PXtpc0Fzc2lzdGFudH0+XG4gICAgICA8U0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgICB7ISFtZXNzYWdlQXR0YWNobWVudHMubGVuZ3RoICYmIChcbiAgICAgICAgICA8U0NBdHRhY2htZW50c1JvdyAkaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fT5cbiAgICAgICAgICAgIHttZXNzYWdlQXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAvLyBEZXRlY3RhciBzaSBlcyB1biBhcmNoaXZvIGRlIGF1ZGlvXG4gICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRUeXBlID0gYXR0YWNobWVudD8udHlwZT8udG9Mb3dlckNhc2UoKSB8fCAnJ1xuICAgICAgICAgICAgICBjb25zdCBhdHRhY2htZW50TmFtZSA9IGF0dGFjaG1lbnQ/Lm5hbWU/LnRvTG93ZXJDYXNlKCkgfHwgJydcbiAgICAgICAgICAgICAgY29uc3QgaXNBdWRpb0ZpbGUgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRUeXBlLnN0YXJ0c1dpdGgoJ2F1ZGlvLycpIHx8XG4gICAgICAgICAgICAgICAgWydmbGFjJywgJ200YScsICdtcDMnLCAnbXA0JywgJ29nYScsICdvZ2cnLCAnd2F2JywgJ3dlYm0nXS5pbmNsdWRlcyhhdHRhY2htZW50VHlwZSkgfHxcbiAgICAgICAgICAgICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnROYW1lLmVuZHNXaXRoKGV4dClcbiAgICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgaWYgKGlzQXVkaW9GaWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxBdHRhY2htZW50Q2FyZEF1ZGlvIGtleT17YCR7YXR0YWNobWVudC5pZH0tJHthdHRhY2htZW50Lm5hbWV9YH0gYXR0YWNobWVudD17YXR0YWNobWVudH0gLz5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEF0dGFjaG1lbnRDYXJkXG4gICAgICAgICAgICAgICAgICBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7YXR0YWNobWVudC5uYW1lfWB9XG4gICAgICAgICAgICAgICAgICBhdHRhY2htZW50PXthdHRhY2htZW50fVxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25JbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBvbkRvd25sb2FkPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50RG93bmxvYWQoYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50Q2xpY2soYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0F0dGFjaG1lbnRzUm93PlxuICAgICAgICApfVxuICAgICAgICB7KCEhbWVzc2FnZSB8fCBpc0FjdGl2ZVN0cmVhbWluZykgJiYgIShpc0Fzc2lzdGFudCAmJiAhIW1lc3NhZ2VBdHRhY2htZW50cy5sZW5ndGgpICYmIChcbiAgICAgICAgICA8U3RyZWFtaW5nTWVzc2FnZUJvZHlcbiAgICAgICAgICAgIG1lc3NhZ2U9e21lc3NhZ2UgPz8gJyd9XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17aXNBY3RpdmVTdHJlYW1pbmd9XG4gICAgICAgICAgICBpc0N1cnJlbnRVc2VyPXtpc0N1cnJlbnRVc2VyfVxuICAgICAgICAgICAgaXNBc3Npc3RhbnQ9e2lzQXNzaXN0YW50fVxuICAgICAgICAgICAgaXNGcm9udGVuZENhbmNlbGxlZD17cHJvcHMuaXNGcm9udGVuZENhbmNlbGxlZH1cbiAgICAgICAgICAgIGFwcHJvdmFsPXthcHByb3ZhbH1cbiAgICAgICAgICAgIGlzRXJyb3I9e2lzRXJyb3J9XG4gICAgICAgICAgICBzb3VyY2VzPXtzb3VyY2VzfVxuICAgICAgICAgICAgc3VnZ2VzdGlvbnM9e3N1Z2dlc3Rpb25zfVxuICAgICAgICAgICAgY3JlYXRlQWdlbnRGb2xsb3dVcD17Y3JlYXRlQWdlbnRGb2xsb3dVcH1cbiAgICAgICAgICAgIGhhbmRsZUZlZWRiYWNrQ2xpY2s9e2hhbmRsZUZlZWRiYWNrQ2xpY2t9XG4gICAgICAgICAgICBkaXNhYmxlRmVlZGJhY2s9e2Rpc2FibGVGZWVkYmFjayA/PyBudWxsfVxuICAgICAgICAgICAgaGFuZGxlU3VnZ2VzdGlvbkNsaWNrPXtoYW5kbGVTdWdnZXN0aW9uQ2xpY2t9XG4gICAgICAgICAgICBzdWdnZXN0aW9uc0Rpc2FibGVkPXtpc0FjdGl2ZVN0cmVhbWluZyB8fCAhIWhhc1NlbGVjdGVkU3VnZ2VzdGlvbn1cbiAgICAgICAgICAgIG1lc3NhZ2VJZD17aWR9XG4gICAgICAgICAgICBpc0xhc3RNZXNzYWdlPXtpc0xhc3RNZXNzYWdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHthcHByb3ZhbCAmJiBhcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnMgJiYgKFxuICAgICAgICAgIDxTQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgICAgIDxBcHByb3ZhbEJveFxuICAgICAgICAgICAgICBhY3Rpb25zPXthcHByb3ZhbC5wZW5kaW5nX2FjdGlvbnN9XG4gICAgICAgICAgICAgIHN0YXR1cz17YXBwcm92YWxTdGF0dXN9XG4gICAgICAgICAgICAgIG9uQXBwcm92ZT17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAnYXBwcm92ZScpfVxuICAgICAgICAgICAgICBvblJlamVjdD17dGhyZWFkSWRzID0+IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24odGhyZWFkSWRzLCAncmVqZWN0Jyl9XG4gICAgICAgICAgICAgIGlzUHJvamVjdERlbGV0ZWQ9e3Byb3BzLnByb2plY3RNZXRhZGF0YT8uaXNfZGVsZXRlZCA9PT0gdHJ1ZX1cbiAgICAgICAgICAgICAgaXNFeHBhbmRlZD17cHJvcHMuZXhwYW5kZWR9XG4gICAgICAgICAgICAgIGhpdGxJbnN0YW5jZUlkPXthcHByb3ZhbC5vcmlnaW5hbF90aHJlYWRfaWR9XG4gICAgICAgICAgICAgIHdhcm5pbmdNZXNzYWdlPXthcHByb3ZhbC53YXJuaW5nX21lc3NhZ2V9XG4gICAgICAgICAgICAgIG1hbnVhbEFwcHJvdmFsRGV0ZWN0ZWQ9e2FwcHJvdmFsLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FwcHJvdmFsQWN0aW9uc0NvbHVtbj5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NNZXNzYWdlSXRlbUlubmVyPlxuICAgICAgPEF0dGFjaG1lbnRQcmV2aWV3TW9kYWxcbiAgICAgICAgaXNPcGVuPXshIXByZXZpZXdBdHRhY2htZW50fVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVByZXZpZXd9XG4gICAgICAgIGF0dGFjaG1lbnQ9e3ByZXZpZXdBdHRhY2htZW50fVxuICAgICAgLz5cbiAgICA8L1NDTWVzc2FnZUl0ZW1XcmFwcGVyPlxuICApXG59KVxuXG5jb25zdCBDaGF0QUlNZXNzYWdlc0lubmVyID0gKHtcbiAgdXNlckluaXRpYWxNZXNzYWdlLFxuICBpbml0aWFsQ2hhdElkLFxuICBvbkVycm9yLFxuICBvblNlbmRNZXNzYWdlUmVhZHksXG4gIG9uU2Nyb2xsVG9Cb3R0b20sXG4gIGF0dGFjaG1lbnRzLFxuICBhZ2VudHMsXG4gIGV4cGFuZGVkLFxufTogQ2hhdEFJTWVzc2FnZXNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCB7IGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmUsIGFnZW50IH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGF0SW5pdGlhbGl6ZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHVzZXJTY3JvbGxpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFRocmVzaG9sZFJlZiA9IHVzZVJlZigzOSlcbiAgY29uc3QgbGFzdFNjcm9sbFRvcFJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzaG93U2Nyb2xsVG9Cb3R0b21SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNjcm9sbFJhZlJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1Njcm9sbFRvQm90dG9tLCBzZXRTaG93U2Nyb2xsVG9Cb3R0b21dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLCBzZXRTZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+Pih7fSlcblxuICBjb25zdCB7XG4gICAgbWVzc2FnZXMsXG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0cmVhbUFjdGl2aXR5LFxuICAgIGFjdGl2ZUxvYWRpbmdzLFxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgc3RvcEdlbmVyYXRpb24sXG4gIH0gPSB1c2VDaGF0TWFuYWdlcih7XG4gICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IHVuZGVmaW5lZCxcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gICAgb25FcnJvcixcbiAgICBhdHRhY2htZW50cyxcbiAgICBhZ2VudHMsXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdGlvbjogUHJvamVjdCkgPT4ge1xuICAgICAgY2hhbmdlUHJvamVjdChvcHRpb24pXG4gICAgfSxcbiAgICBbY2hhbmdlUHJvamVjdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN1Z2dlc3Rpb25DbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChtZXNzYWdlSWQ6IHN0cmluZywgc3VnZ2VzdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXN1Z2dlc3Rpb24/LnRyaW0oKSkgcmV0dXJuXG4gICAgICBpZiAoc2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkc1ttZXNzYWdlSWRdKSByZXR1cm5cbiAgICAgIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuICAgICAgZXZlbnQoRVZFTlRTLmFpQ2hhdFN1Z2dlc3RlZEFuc3dlciwge1xuICAgICAgICBhZ2VudF90eXBlOiBpc01hcmtldHBsYWNlR2xvYmFsQWdlbnQgPyAnbWFya2V0cGxhY2UnIDogYWdlbnQ/LnR5cGUsXG4gICAgICB9KVxuICAgICAgc2V0U2VsZWN0ZWRTdWdnZXN0aW9uTWVzc2FnZUlkcyhwcmV2ID0+ICh7IC4uLnByZXYsIFttZXNzYWdlSWRdOiB0cnVlIH0pKVxuXG4gICAgICBjb25zdCB0YXJnZXRNZXNzYWdlID0gbWVzc2FnZXMuZmluZChtc2cgPT4gbXNnLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBjb25zdCBpc1JldHJ5U3VnZ2VzdGlvbiA9ICEhdGFyZ2V0TWVzc2FnZT8uaXNFcnJvciAmJiBzdWdnZXN0aW9uID09PSB0KCdjaGF0LnJldHJ5JylcbiAgICAgIGlmIChpc1JldHJ5U3VnZ2VzdGlvbikge1xuICAgICAgICBjb25zdCBsYXN0VXNlck1lc3NhZ2UgPSBtZXNzYWdlc1xuICAgICAgICAgIC5maWx0ZXIobXNnID0+IG1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCBtc2cudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSlcbiAgICAgICAgICAuYXQoLTEpXG4gICAgICAgIGlmIChsYXN0VXNlck1lc3NhZ2U/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICBjb25zdCByZXRyeUF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHMpXG4gICAgICAgICAgICA/IGxhc3RVc2VyTWVzc2FnZS5hdHRhY2htZW50c1xuICAgICAgICAgICAgOiBBcnJheS5pc0FycmF5KGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzKVxuICAgICAgICAgICAgICA/IGxhc3RVc2VyTWVzc2FnZS5zb3VyY2VzXG4gICAgICAgICAgICAgIDogW11cbiAgICAgICAgICBzZW5kTWVzc2FnZShsYXN0VXNlck1lc3NhZ2UubWVzc2FnZSwgcmV0cnlBdHRhY2htZW50cylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZW5kTWVzc2FnZShzdWdnZXN0aW9uKVxuICAgIH0sXG4gICAgW1xuICAgICAgc2VuZE1lc3NhZ2UsXG4gICAgICBzZWxlY3RlZFN1Z2dlc3Rpb25NZXNzYWdlSWRzLFxuICAgICAgZXZlbnQsXG4gICAgICBhZ2VudD8uZW50aXR5LFxuICAgICAgYWdlbnQ/Lm5hbWUsXG4gICAgICBhZ2VudD8udHlwZSxcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgdCxcbiAgICAgIGF1dGhVc2VyLmlkLFxuICAgIF1cbiAgKVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgZXN0YWRvIGRlbCBib3TDs24gXCJzY3JvbGwgdG8gYm90dG9tXCIgY29tcGFyYW5kbyBsYSBwb3NpY2nDs25cbiAgICogYWN0dWFsIGRlbCBzY3JvbGwgY29uIGVsIGZvbmRvLiBVc2EgdW4gcmVmIHBhcmEgZXZpdGFyIGBzZXRTdGF0ZWAgY3VhbmRvXG4gICAqIGVsIHZhbG9yIG5vIGNhbWJpYS5cbiAgICovXG4gIGNvbnN0IHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgZWwgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgaWYgKCFlbCkgcmV0dXJuXG4gICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBlbFxuICAgIGNvbnN0IGRpc3RhbmNlRnJvbUJvdHRvbSA9IHNjcm9sbEhlaWdodCAtIHNjcm9sbFRvcCAtIGNsaWVudEhlaWdodFxuICAgIGNvbnN0IHNob3VsZFNob3cgPSBkaXN0YW5jZUZyb21Cb3R0b20gPiA1MFxuICAgIGlmIChzaG93U2Nyb2xsVG9Cb3R0b21SZWYuY3VycmVudCAhPT0gc2hvdWxkU2hvdykge1xuICAgICAgc2hvd1Njcm9sbFRvQm90dG9tUmVmLmN1cnJlbnQgPSBzaG91bGRTaG93XG4gICAgICBzZXRTaG93U2Nyb2xsVG9Cb3R0b20oc2hvdWxkU2hvdylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBTY3JvbGwgaW5tZWRpYXRvIGFsIGZvbmRvIChkZW50cm8gZGUgckFGIHBhcmEgY29vcmRpbmFyIGNvbiBlbCBwYWludClcbiAgICogeSBhY3R1YWxpemEgbGEgdmlzaWJpbGlkYWQgZGVsIGJvdMOzbi4gUmVzcGV0YSBgc2tpcElmVXNlclNjcm9sbGluZ2AgcGFyYVxuICAgKiBubyBzb2JyZXNjcmliaXIgZWwgc2Nyb2xsIG1hbnVhbCBkZWwgdXN1YXJpbyBkdXJhbnRlIGVsIHN0cmVhbWluZy5cbiAgICovXG4gIGNvbnN0IHNjcm9sbFRvQm90dG9tUmFmID0gdXNlQ2FsbGJhY2soXG4gICAgKG9wdHM6IHsgc2tpcElmVXNlclNjcm9sbGluZz86IGJvb2xlYW47IGRlbGF5TXM/OiBudW1iZXIgfSA9IHt9KSA9PiB7XG4gICAgICBjb25zdCB7IHNraXBJZlVzZXJTY3JvbGxpbmcgPSBmYWxzZSwgZGVsYXlNcyA9IDAgfSA9IG9wdHNcbiAgICAgIGNvbnN0IHJ1biA9ICgpID0+IHtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnRcbiAgICAgICAgICBpZiAoIWVsKSByZXR1cm5cbiAgICAgICAgICBpZiAoc2tpcElmVXNlclNjcm9sbGluZyAmJiB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IGVsLnNjcm9sbEhlaWdodFxuICAgICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKGRlbGF5TXMgPiAwKSBzZXRUaW1lb3V0KHJ1biwgZGVsYXlNcylcbiAgICAgIGVsc2UgcnVuKClcbiAgICB9LFxuICAgIFt1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xpY2tTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG8oe1xuICAgICAgdG9wOiBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodCxcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KVxuICAgIC8vIERhciB0aWVtcG8gYWwgc21vb3RoLXNjcm9sbCBhbnRlcyBkZSByZWNhbGN1bGFyIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24uXG4gICAgc2V0VGltZW91dCh1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5LCA1MDApXG4gIH0sIFt1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBBbCBkZWNpZGlyIGVuIGVsIEFwcHJvdmFsQm94OiBlbCBib3ggY29sYXBzYSAoYm90b25lcyAtPiBiYWRnZSkgeSBlbCBzdHJlYW1cbiAgLy8gY29udGluw7phIGFiYWpvLiBSZWFjdGl2YXIgZWwgYXV0by1zY3JvbGwgeSBzZWd1aXIgZWwgZm9uZG8gcGFyYSBxdWUgbGEgdmlzdGFcbiAgLy8gbm8gcXVlZGUgYXRyw6FzIChldml0YSBxdWUgYXBhcmV6Y2EgbGEgZmxlY2hhIGRlIHNjcm9sbC10by1ib3R0b20pLlxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uV2l0aFNjcm9sbCA9IHVzZUNhbGxiYWNrKFxuICAgICguLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBoYW5kbGVBcHByb3ZhbERlY2lzaW9uPikgPT4ge1xuICAgICAgdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNjcm9sbFRocmVzaG9sZFJlZi5jdXJyZW50ID0gMzlcbiAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb24oLi4uYXJncylcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKHsgZGVsYXlNczogMTAwIH0pXG4gICAgfSxcbiAgICBbaGFuZGxlQXBwcm92YWxEZWNpc2lvbiwgc2Nyb2xsVG9Cb3R0b21SYWZdXG4gIClcblxuICBjb25zdCBoYW5kbGVTY3JvbGxUb0JvdHRvbSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5VSUV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZS5jdXJyZW50VGFyZ2V0XG5cbiAgICAgIGlmIChzY3JvbGxSYWZSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShzY3JvbGxSYWZSZWYuY3VycmVudClcbiAgICAgIH1cblxuICAgICAgc2Nyb2xsUmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBzY3JvbGxSYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJcblxuICAgICAgICBjb25zdCBpc1Njcm9sbGluZ1VwID0gc2Nyb2xsVG9wIDwgbGFzdFNjcm9sbFRvcFJlZi5jdXJyZW50XG5cbiAgICAgICAgaWYgKGlzU2Nyb2xsaW5nVXApIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDE1XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc05lYXJCb3R0b20gPSBzY3JvbGxIZWlnaHQgLSBzY3JvbGxUb3AgLSBjbGllbnRIZWlnaHQgPCBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudFxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20pIHtcbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGRSZWYuY3VycmVudCA9IDM5XG4gICAgICAgIH1cblxuICAgICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSAhaXNOZWFyQm90dG9tXG4gICAgICAgIGxhc3RTY3JvbGxUb3BSZWYuY3VycmVudCA9IHNjcm9sbFRvcFxuXG4gICAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuXG4gICAgICAgIGlmIChpc05lYXJCb3R0b20gJiYgb25TY3JvbGxUb0JvdHRvbSkge1xuICAgICAgICAgIG9uU2Nyb2xsVG9Cb3R0b20oKVxuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlU2Nyb2xsKGNvbnRhaW5lcilcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbb25TY3JvbGxUb0JvdHRvbSwgaGFuZGxlU2Nyb2xsLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XVxuICApXG5cbiAgLy8gcmVmcyB0byBzdGFiaWxpemUgZnVuY3Rpb25zIGFuZCBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJzXG4gIGNvbnN0IHNlbmRNZXNzYWdlUmVmID0gdXNlUmVmKHNlbmRNZXNzYWdlKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblJlZiA9IHVzZVJlZihzdG9wR2VuZXJhdGlvbilcbiAgY29uc3Qgb25TZW5kTWVzc2FnZVJlYWR5UmVmID0gdXNlUmVmKG9uU2VuZE1lc3NhZ2VSZWFkeSlcbiAgY29uc3Qgc2VuZE1lc3NhZ2VQcm94eVJlZiA9IHVzZVJlZihcbiAgICAoXG4gICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICBzY0lkPzogc3RyaW5nXG4gICAgKSA9PiBzZW5kTWVzc2FnZVJlZi5jdXJyZW50KG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgKVxuICBjb25zdCBzdG9wR2VuZXJhdGlvblByb3h5UmVmID0gdXNlUmVmKCgpID0+IHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQoKSlcblxuICAvLyB1cGRhdGUgcmVmcyB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2VcbiAgc2VuZE1lc3NhZ2VSZWYuY3VycmVudCA9IHNlbmRNZXNzYWdlXG4gIHN0b3BHZW5lcmF0aW9uUmVmLmN1cnJlbnQgPSBzdG9wR2VuZXJhdGlvblxuICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudCA9IG9uU2VuZE1lc3NhZ2VSZWFkeVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9uU2VuZE1lc3NhZ2VSZWFkeVJlZi5jdXJyZW50KSB7XG4gICAgICBvblNlbmRNZXNzYWdlUmVhZHlSZWYuY3VycmVudChcbiAgICAgICAgc2VuZE1lc3NhZ2VQcm94eVJlZi5jdXJyZW50LFxuICAgICAgICBzdG9wR2VuZXJhdGlvblByb3h5UmVmLmN1cnJlbnQsXG4gICAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgICAgaXNXcml0aW5nXG4gICAgICApXG4gICAgfVxuICB9LCBbd2FpdGluZ1Jlc3BvbnNlLCBpc1dyaXRpbmddKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNMb2FkaW5nTW9yZVJlZi5jdXJyZW50ID0gaXNMb2FkaW5nTW9yZU1lc3NhZ2VzXG4gIH0sIFtpc0xvYWRpbmdNb3JlTWVzc2FnZXNdKVxuXG4gIC8vIEN1YW5kbyBlbCBhZ2VudGUgZW1waWV6YSBhIHJlc3BvbmRlciwgcmVzZXRlYXIgZWwgZmxhZyB5IGVsIHVtYnJhbCBwYXJhIGFjdGl2YXIgZWwgYXV0by1zY3JvbGxcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgICB1c2VyU2Nyb2xsaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgc2Nyb2xsVGhyZXNob2xkUmVmLmN1cnJlbnQgPSAzOVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWNoYXRJbml0aWFsaXplZFJlZi5jdXJyZW50KSB7XG4gICAgICBjaGF0SW5pdGlhbGl6ZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGluaXRpYWxpemVDaGF0KClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIEF1dG9zY3JvbGwgbWllbnRyYXMgZWwgdGV4dG8gZGVsIHN0cmVhbSBjcmVjZS4gRWwgdGV4dG8gc2UgcGludGEgYWwgcml0bW9cbiAgLy8gZGUgYHVzZVNtb290aFN0cmVhbVRleHRgICh+NjBmcHMpLCBubyBhbCByaXRtbyBkZSBsbGVnYWRhIGRlIHRva2VucyBkZWxcbiAgLy8gYmFja2VuZDogcG9yIGVzbyBhY8OhIHVzYW1vcyB1biBsb29wIGRlIHJBRiBxdWUgY29tcGFyYSBgc2Nyb2xsSGVpZ2h0YFxuICAvLyBjb250cmEgZWwgw7psdGltbyB2YWxvciBvYnNlcnZhZG8geSBhanVzdGEgc29sbyBjdWFuZG8gY2FtYmlhLiBBc8OtIGVsXG4gIC8vIHNjcm9sbCBxdWVkYSBwZXJmZWN0YW1lbnRlIHNpbmNyb25pemFkbyBjb24gbGEgYW5pbWFjacOzbiBkZWwgdGV4dG8gc2luXG4gIC8vIGRlcGVuZGVyIGRlIGxhIGNhZGVuY2lhIGRlbCBzdHJlYW1pbmdTdG9yZS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXdhaXRpbmdSZXNwb25zZSAmJiAhaXNXcml0aW5nKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKCFtZXNzYWdlc1JlZi5jdXJyZW50KSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgbGV0IGxhc3RIZWlnaHQgPSBtZXNzYWdlc1JlZi5jdXJyZW50LnNjcm9sbEhlaWdodFxuXG4gICAgY29uc3QgdGljayA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGVsID0gbWVzc2FnZXNSZWYuY3VycmVudFxuICAgICAgaWYgKCFlbCkge1xuICAgICAgICByYWZJZCA9IG51bGxcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50SGVpZ2h0ID0gZWwuc2Nyb2xsSGVpZ2h0XG4gICAgICBpZiAoY3VycmVudEhlaWdodCAhPT0gbGFzdEhlaWdodCkge1xuICAgICAgICBsYXN0SGVpZ2h0ID0gY3VycmVudEhlaWdodFxuICAgICAgICBpZiAoIXVzZXJTY3JvbGxpbmdSZWYuY3VycmVudCkge1xuICAgICAgICAgIGVsLnNjcm9sbFRvcCA9IGN1cnJlbnRIZWlnaHRcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgICAgIH1cbiAgICAgIHJhZklkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgfVxuXG4gICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJhZklkICE9IG51bGwpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZklkKVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgaXNXcml0aW5nLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBBbCBjb21lbnphciBhIGVzcGVyYXIgbGEgcmVzcHVlc3RhIGRlbCBiYWNrZW5kLCBzY3JvbGwgaW5pY2lhbCBhbCBmb25kby5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2FpdGluZ1Jlc3BvbnNlICYmIG1lc3NhZ2VzUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKHsgc2tpcElmVXNlclNjcm9sbGluZzogdHJ1ZSB9KVxuICAgIH1cbiAgfSwgW3dhaXRpbmdSZXNwb25zZSwgc2Nyb2xsVG9Cb3R0b21SYWZdKVxuXG4gIC8vIFNjcm9sbCBjdWFuZG8gY2FtYmlhbiBsb3MgbWVuc2FqZXM6IGRpc3Rpbmd1ZSBcIm51ZXZvIG1lbnNhamVcIiAoYWdyZWdhZG8pXG4gIC8vIGRlIFwicmVlbXBsYXpvXCIgKG1pc21vIGlkL2xlbmd0aCwgZWouIGZlZWRiYWNrIG8gYXBwcm92YWxTdGF0dXMpLiBFblxuICAvLyByZWVtcGxhem9zIHNvbG8gc2UgcmVjYWxjdWxhIGxhIHZpc2liaWxpZGFkIGRlbCBib3TDs24gc2luIGZvcnphciBzY3JvbGwuXG4gIGNvbnN0IGxhc3RNZXNzYWdlSWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFzdE1lc3NhZ2VzTGVuZ3RoUmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW1lc3NhZ2VzUmVmLmN1cnJlbnQgfHwgbG9hZGluZ01lc3NhZ2VzIHx8IGlzTG9hZGluZ01vcmVNZXNzYWdlcyB8fCBpc0xvYWRpbmdNb3JlUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGxhc3RNZXNzYWdlID0gbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgICBjb25zdCBsYXN0SWQgPSBsYXN0TWVzc2FnZT8uaWQgPz8gbnVsbFxuICAgIGNvbnN0IHByZXZJZCA9IGxhc3RNZXNzYWdlSWRSZWYuY3VycmVudFxuICAgIGNvbnN0IHByZXZMZW4gPSBsYXN0TWVzc2FnZXNMZW5ndGhSZWYuY3VycmVudFxuICAgIGxhc3RNZXNzYWdlSWRSZWYuY3VycmVudCA9IGxhc3RJZFxuICAgIGxhc3RNZXNzYWdlc0xlbmd0aFJlZi5jdXJyZW50ID0gbWVzc2FnZXMubGVuZ3RoXG5cbiAgICBjb25zdCBpc05ld01lc3NhZ2UgPSBsYXN0SWQgIT09IHByZXZJZCB8fCBtZXNzYWdlcy5sZW5ndGggIT09IHByZXZMZW5cbiAgICBpZiAoIWlzTmV3TWVzc2FnZSkge1xuICAgICAgdXBkYXRlU2Nyb2xsQm90dG9tVmlzaWJpbGl0eSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBtZXNzYWdlc1JlZi5jdXJyZW50XG4gICAgY29uc3QgaXNBdEJvdHRvbSA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHQgLSBjb250YWluZXIuc2Nyb2xsVG9wIDw9IGNvbnRhaW5lci5jbGllbnRIZWlnaHQgKyAxMDBcbiAgICBjb25zdCBoYXNJbml0aWFsTWVzc2FnZSA9IG1lc3NhZ2VzLnNvbWUobXNnID0+IG1zZy5pZCA9PT0gJ3VzZXItaW5pdGlhbC1tZXNzYWdlJylcbiAgICBjb25zdCBpc0FwcHJvdmFsID0gISFsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYXBwcm92YWwtJykgfHwgISFsYXN0TWVzc2FnZS5hcHByb3ZhbClcbiAgICBjb25zdCBpc0Fuc3dlck9yUXVlc3Rpb24gPVxuICAgICAgISFsYXN0TWVzc2FnZSAmJiAobGFzdE1lc3NhZ2UuaWQuc3RhcnRzV2l0aCgnYW5zd2VyLScpIHx8IGxhc3RNZXNzYWdlLmlkLnN0YXJ0c1dpdGgoJ3F1ZXN0aW9uLScpKVxuXG4gICAgLy8gQXBwcm92YWw6IHNlY3VlbmNpYSBkZSBzY3JvbGxzIGNvbiBkZWxheSBwb3JxdWUgZWwgQXBwcm92YWxCb3ggbmVjZXNpdGFcbiAgICAvLyB1biB0aWNrIHBhcmEgbWVkaXJzZS4gU2Nyb2xsZWEgYXVucXVlIGVsIHVzdWFyaW8gbm8gZXN0w6kgYWwgZm9uZG8gc2kgbm9cbiAgICAvLyBlc3TDoSBzY3JvbGxlYW5kbyBtYW51YWxtZW50ZS5cbiAgICBpZiAoaXNBcHByb3ZhbCAmJiAoaXNBdEJvdHRvbSB8fCAhdXNlclNjcm9sbGluZ1JlZi5jdXJyZW50KSkge1xuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoKVxuICAgICAgc2Nyb2xsVG9Cb3R0b21SYWYoeyBkZWxheU1zOiAxMDAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIE51ZXZvcyBhbnN3ZXIvcXVlc3Rpb246IHNjcm9sbCBzaSBlbCB1c3VhcmlvIHlhIGVzdGFiYSBhbCBmb25kby5cbiAgICBpZiAoaXNBbnN3ZXJPclF1ZXN0aW9uICYmIGlzQXRCb3R0b20pIHtcbiAgICAgIHNjcm9sbFRvQm90dG9tUmFmKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENhc28gYm9yZGU6IGNhbWJpb3MgZGUgbWVuc2FqZXMgc2luIHNlciBudWV2byBhbnN3ZXIvdXNlci9hcHByb3ZhbFxuICAgIC8vIHBlcm8gc8OtIHVuIG1lbnNhamUgbnVldm8gKG5vIGVsIFwidXNlci1pbml0aWFsLW1lc3NhZ2VcIikuIFNjcm9sbGVhLlxuICAgIGlmICghaXNBbnN3ZXJPclF1ZXN0aW9uICYmICFpc0FwcHJvdmFsICYmICFoYXNJbml0aWFsTWVzc2FnZSAmJiBtZXNzYWdlcy5sZW5ndGggPiBwcmV2TGVuKSB7XG4gICAgICBzY3JvbGxUb0JvdHRvbVJhZigpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5KClcbiAgfSwgW21lc3NhZ2VzLCBsb2FkaW5nTWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgc2Nyb2xsVG9Cb3R0b21SYWYsIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHldKVxuXG4gIC8vIEVzdGFkbyBpbmljaWFsIGRlbCBib3TDs24gc2Nyb2xsLXRvLWJvdHRvbSBhbCB0ZXJtaW5hciBsb2FkaW5nTWVzc2FnZXMuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgIHVwZGF0ZVNjcm9sbEJvdHRvbVZpc2liaWxpdHkoKVxuICAgIH1cbiAgfSwgW2xvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMubGVuZ3RoLCB1cGRhdGVTY3JvbGxCb3R0b21WaXNpYmlsaXR5XSlcblxuICAvLyBPYnRlbmVyIGVsIMO6bHRpbW8gbWVuc2FqZSBkZWwgdXN1YXJpbyBwYXJhIHZlcmlmaWNhciBzaSB0aWVuZSBhdHRhY2htZW50c1xuICBjb25zdCBsYXN0VXNlck1lc3NhZ2UgPSBtZXNzYWdlc1xuICAgIC5maWx0ZXIobXNnID0+IG1zZy5yb2xlID09PSBDaGF0SGlzdG9yeVJvbGUuVVNFUiB8fCBtc2cudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSlcbiAgICAuYXQoLTEpXG5cbiAgY29uc3QgYXR0YWNobWVudHNDb3VudCA9XG4gICAgKEFycmF5LmlzQXJyYXkobGFzdFVzZXJNZXNzYWdlPy5hdHRhY2htZW50cykgPyBsYXN0VXNlck1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoIDogMCkgfHxcbiAgICAoQXJyYXkuaXNBcnJheShsYXN0VXNlck1lc3NhZ2U/LnNvdXJjZXMpID8gbGFzdFVzZXJNZXNzYWdlLnNvdXJjZXMubGVuZ3RoIDogMClcblxuICBjb25zdCBzdHJlYW1Mb2FkaW5nRGlzcGxheSA9IHJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSh7XG4gICAgc3RyZWFtQWN0aXZpdHksXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgYWN0aXZlTG9hZGluZ3M6IGFjdGl2ZUxvYWRpbmdzIHx8IHt9LFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHNDb3VudCksXG4gICAgYXR0YWNobWVudHNDb3VudCxcbiAgICB0LFxuICB9KVxuXG4gIGNvbnN0IGlzU2Nyb2xsT25QYXJlbnQgPSAhIWV4cGFuZGVkXG4gIGNvbnN0IGlzTWFya2V0cGxhY2VHbG9iYWxBZ2VudCA9IGlzTWFpYWtlckFnZW50KGFnZW50KVxuXG4gIC8vIEFsIGV4cGFuZGlyL2NvbnRyYWVyIGVsIG1vZGFsIGVsIHJlZiBwYXNhIGEgb3RybyBjb250ZW5lZG9yIChzY3JvbGxUb3Agc2UgcmVzZXRlYSBhIDApLlxuICAvLyBSZXN0YXVyYXIgbGEgcG9zaWNpw7NuIGRlIHNjcm9sbCBhbnRlcyBkZWwgcGFpbnQgcGFyYSBldml0YXIgcXVlIGxhIGNvbnZlcnNhY2nDs24gc2FsdGUgYXJyaWJhLlxuICBjb25zdCBleHBhbmRlZFJlZiA9IHVzZVJlZihleHBhbmRlZClcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXhwYW5kZWRSZWYuY3VycmVudCAhPT0gZXhwYW5kZWQgJiYgbWVzc2FnZXNSZWYuY3VycmVudCkge1xuICAgICAgY29uc3Qgc2F2ZWRTY3JvbGxUb3AgPSBsYXN0U2Nyb2xsVG9wUmVmLmN1cnJlbnRcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQuc2Nyb2xsVG9wID0gc2F2ZWRTY3JvbGxUb3BcbiAgICAgIGV4cGFuZGVkUmVmLmN1cnJlbnQgPSBleHBhbmRlZFxuICAgIH0gZWxzZSB7XG4gICAgICBleHBhbmRlZFJlZi5jdXJyZW50ID0gZXhwYW5kZWRcbiAgICB9XG4gIH0sIFtleHBhbmRlZF0pXG5cbiAgaWYgKGxvYWRpbmdNZXNzYWdlcykge1xuICAgIHJldHVybiAoXG4gICAgICA8RmFkZSBmaWxsPlxuICAgICAgICA8TG9hZGVyIC8+XG4gICAgICA8L0ZhZGU+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXNDb250ZW50ID0gKFxuICAgIDw+XG4gICAgICB7aXNMb2FkaW5nTW9yZU1lc3NhZ2VzICYmIDxMb2FkaW5nVGV4dCB0ZXh0PXt0KCdjaGF0LmxvYWRpbmdNb3JlJyl9IC8+fVxuICAgICAgPD5cbiAgICAgICAge21lc3NhZ2VzLm1hcCgobWVzc2FnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0Fzc2lzdGFudE1lc3NhZ2UgPSBtZXNzYWdlLnJvbGUgPT09IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQgfHwgbWVzc2FnZS51c2VyLmlkID09PSAnYXNzaXN0YW50J1xuICAgICAgICAgIGNvbnN0IGlzTGFzdE1lc3NhZ2UgPSBpbmRleCA9PT0gbWVzc2FnZXMubGVuZ3RoIC0gMVxuICAgICAgICAgIGNvbnN0IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXIgPVxuICAgICAgICAgICAgaXNBc3Npc3RhbnRNZXNzYWdlICYmIGlzTGFzdE1lc3NhZ2UgJiYgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZChtZXNzYWdlLmlkKVxuICAgICAgICAgIGNvbnN0IGlzU3RyZWFtaW5nID0gaXNTdHJlYW1pbmdQbGFjZWhvbGRlciAmJiAod2FpdGluZ1Jlc3BvbnNlIHx8IGlzV3JpdGluZylcblxuICAgICAgICAgIC8vIE5vIGZpbHRyYXIgZWwgcGxhY2Vob2xkZXIgZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nOiBzdSB0ZXh0byB2aXZlXG4gICAgICAgICAgLy8gZW4gZWwgc3RyZWFtaW5nU3RvcmUgeSBgbWVzc2FnZS5tZXNzYWdlYCBlcyAnJyBoYXN0YSBlbCBjb21wbGV0ZS5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhaXNTdHJlYW1pbmdQbGFjZWhvbGRlciAmJlxuICAgICAgICAgICAgIWlzU3RyZWFtaW5nICYmXG4gICAgICAgICAgICAhKG1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aCB8fCBtZXNzYWdlLnNvdXJjZXM/Lmxlbmd0aCkgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLm1lc3NhZ2UgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLnByb2plY3Q/Lm5hbWUgJiZcbiAgICAgICAgICAgICFtZXNzYWdlLmFwcHJvdmFsXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIG51bGxcblxuICAgICAgICAgIGNvbnN0IG1lc3NhZ2VGZWVkYmFjayA9XG4gICAgICAgICAgICBtZXNzYWdlPy53YXNIZWxwZnVsID09PSB1bmRlZmluZWQgfHwgbWVzc2FnZS53YXNIZWxwZnVsID09PSBudWxsXG4gICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICA6IG1lc3NhZ2Uud2FzSGVscGZ1bFxuICAgICAgICAgICAgICAgID8gRmVlZGJhY2suVEhVTUJTX1VQXG4gICAgICAgICAgICAgICAgOiBGZWVkYmFjay5USFVNQlNfRE9XTlxuXG4gICAgICAgICAgLy8gS2V5IGVzdGFibGU6IHNvbG8gbWVzc2FnZS5pZCBwYXJhIGV2aXRhciByZW1vdW50IGR1cmFudGUgc3RyZWFtaW5nIChtZXNzYWdlLmRhdGUgcHVlZGUgY2FtYmlhcilcbiAgICAgICAgICBjb25zdCBtZXNzYWdlS2V5ID0gbWVzc2FnZS5pZCA/PyBgbXNnLSR7aW5kZXh9YFxuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxNZXNzYWdlSXRlbVxuICAgICAgICAgICAgICB7Li4ubWVzc2FnZX1cbiAgICAgICAgICAgICAga2V5PXttZXNzYWdlS2V5fVxuICAgICAgICAgICAgICBhdXRoVXNlcj17YXV0aFVzZXJ9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17aGFuZGxlU2VsZWN0T3B0aW9ufVxuICAgICAgICAgICAgICBoYW5kbGVGZWVkYmFjaz17aGFuZGxlRmVlZGJhY2t9XG4gICAgICAgICAgICAgIGhhbmRsZUFwcHJvdmFsRGVjaXNpb249e2hhbmRsZUFwcHJvdmFsRGVjaXNpb25XaXRoU2Nyb2xsfVxuICAgICAgICAgICAgICBoYW5kbGVTdWdnZXN0aW9uQ2xpY2s9e2hhbmRsZVN1Z2dlc3Rpb25DbGlja31cbiAgICAgICAgICAgICAgaGFzU2VsZWN0ZWRTdWdnZXN0aW9uPXshIXNlbGVjdGVkU3VnZ2VzdGlvbk1lc3NhZ2VJZHNbbWVzc2FnZS5pZF19XG4gICAgICAgICAgICAgIGRpc2FibGVGZWVkYmFjaz17bWVzc2FnZUZlZWRiYWNrfVxuICAgICAgICAgICAgICBpc1N0cmVhbWluZz17aXNTdHJlYW1pbmd9XG4gICAgICAgICAgICAgIGlzTGFzdE1lc3NhZ2U9e2lzTGFzdE1lc3NhZ2V9XG4gICAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKVxuICAgICAgICB9KX1cbiAgICAgIDwvPlxuICAgICAge3N0cmVhbUxvYWRpbmdEaXNwbGF5ICYmIChcbiAgICAgICAgPFNDTG9hZGluZ01lc3NhZ2VzQ29sdW1uPlxuICAgICAgICAgIDxBZ2VudEFjdGl2aXR5SW5kaWNhdG9yIGFjdGl2aXR5PXtzdHJlYW1Mb2FkaW5nRGlzcGxheX0gLz5cbiAgICAgICAgPC9TQ0xvYWRpbmdNZXNzYWdlc0NvbHVtbj5cbiAgICAgICl9XG4gICAgPC8+XG4gIClcblxuICByZXR1cm4gKFxuICAgIDxTQ01lc3NhZ2VzT3V0ZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fT5cbiAgICAgIHtpc1Njcm9sbE9uUGFyZW50ID8gKFxuICAgICAgICA8U0NNZXNzYWdlc1Njcm9sbCByZWY9e21lc3NhZ2VzUmVmfSBvblNjcm9sbD17aGFuZGxlU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxTQ01lc3NhZ2VzSW5uZXIgJHNjcm9sbE9uUGFyZW50PXtpc1Njcm9sbE9uUGFyZW50fSAkaXNNYXJrZXRwbGFjZUdsb2JhbD17aXNNYXJrZXRwbGFjZUdsb2JhbEFnZW50fT5cbiAgICAgICAgICAgIHttZXNzYWdlc0NvbnRlbnR9XG4gICAgICAgICAgPC9TQ01lc3NhZ2VzSW5uZXI+XG4gICAgICAgIDwvU0NNZXNzYWdlc1Njcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxTQ01lc3NhZ2VzSW5uZXJcbiAgICAgICAgICByZWY9e21lc3NhZ2VzUmVmfVxuICAgICAgICAgIG9uU2Nyb2xsPXtoYW5kbGVTY3JvbGxUb0JvdHRvbX1cbiAgICAgICAgICAkc2Nyb2xsT25QYXJlbnQ9e2ZhbHNlfVxuICAgICAgICAgICRpc01hcmtldHBsYWNlR2xvYmFsPXtpc01hcmtldHBsYWNlR2xvYmFsQWdlbnR9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVzc2FnZXNDb250ZW50fVxuICAgICAgICA8L1NDTWVzc2FnZXNJbm5lcj5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2Nyb2xsVG9Cb3R0b20gJiYgKFxuICAgICAgICA8U2Nyb2xsVG9Cb3R0b21CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsaWNrU2Nyb2xsVG9Cb3R0b219PlxuICAgICAgICAgIDxBcnJvd1NtYWxsRG93biBjb2xvcj1cIiM2NjZcIiB3aWR0aD1cIjIwcHhcIiBoZWlnaHQ9XCIyMHB4XCIgLz5cbiAgICAgICAgPC9TY3JvbGxUb0JvdHRvbUJ1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TQ01lc3NhZ2VzT3V0ZXI+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSU1lc3NhZ2VzID0gUmVhY3QubWVtbyhDaGF0QUlNZXNzYWdlc0lubmVyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsS0FBSyxJQUFRQyxJQUFJLEVBQWFDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxlQUFlLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxFQUFBQyxhQUFBLElBQUFDLGNBQUEsUUFBUSxPQUFPO0FBQzdHLFNBQVNDLGNBQWMsUUFBUSxpREFBaUQ7QUFFaEYsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxXQUFXLFFBQVEscUNBQXFDO0FBQ2pFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUMzRSxTQUFTQyxtQkFBbUIsUUFBUSxnREFBZ0Q7QUFDcEYsU0FBU0MsY0FBYyxRQUFRLDRCQUE0QjtBQUczRCxTQUFzQkMsZUFBZSxRQUFRLHFCQUFxQjtBQUNsRSxTQUFTQyxzQkFBc0IsRUFBRUMsZ0JBQWdCLFFBQVEsc0NBQXNDO0FBRS9GLFNBQVNDLGNBQWMsUUFBUSxpQ0FBaUM7QUFDaEUsU0FBa0JDLE9BQU8sUUFBUSwyQkFBMkI7QUFFNUQsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUMxQyxTQUFTQyxjQUFjLFFBQVEsOENBQThDO0FBQzdFLFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxtQkFBbUIsUUFBUSxvQ0FBb0M7QUFFeEUsU0FBU0MsV0FBVyxRQUFRLHlCQUF5QjtBQUNyRCxTQUFTQyxzQkFBc0IsUUFBUSxvQ0FBb0M7QUFDM0UsU0FBU0MsK0JBQStCLEVBQUVDLDJCQUEyQixRQUFRLHVDQUF1QztBQUNwSCxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVNDLElBQUksUUFBUSxrQkFBa0I7QUFJdkMsU0FBU0MsZUFBZSxFQUFFQyxnQkFBZ0IsRUFBRUMsc0JB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QU8sQ0FBQ1YsRUFBRSxDQUFFO1VBQ2xFK0MsZUFBZSxFQUFFNFAsZUFBZ0I7VUFDakNwUyxXQUFXLEVBQUVBLFdBQVk7VUFDekJpRCxhQUFhLEVBQUVBLGFBQWM7VUFDN0J3RyxRQUFRLEVBQUVBO1FBQVMsRUFDcEIsQ0FBQztNQUVOLENBQUM7SUFBQyxDQUNGLENBQUMsRUFDRjRILG9CQUFvQixpQkFDbkI1VCxJQUFBLENBQUNqQix1QkFBdUI7TUFBQXlCLFFBQUEsZUFDdEJSLElBQUEsQ0FBQ2hDLHNCQUFzQjtRQUFDaVgsUUFBUSxFQUFFckI7TUFBcUIsQ0FBRTtJQUFDLENBQ25DLENBQzFCO0VBQUEsQ0FDRCxDQUNIO0VBRUQsb0JBQ0V4VCxLQUFBLENBQUN4QixlQUFlO0lBQUNzVyxlQUFlLEVBQUVuQixnQkFBaUI7SUFBQXZULFFBQUEsR0FDaER1VCxnQkFBZ0IsZ0JBQ2YvVCxJQUFBLENBQUNuQixnQkFBZ0I7TUFBQ3NXLEdBQUcsRUFBRTNILFdBQVk7TUFBQzRILFFBQVEsRUFBRTFELG9CQUFxQjtNQUFBbFIsUUFBQSxlQUNqRVIsSUFBQSxDQUFDbEIsZUFBZTtRQUFDb1csZUFBZSxFQUFFbkIsZ0JBQWlCO1FBQUNzQixvQkFBb0IsRUFBRTVGLHdCQUF5QjtRQUFBalAsUUFBQSxFQUNoRzJUO01BQWUsQ0FDRDtJQUFDLENBQ0YsQ0FBQyxnQkFFbkJuVSxJQUFBLENBQUNsQixlQUFlO01BQ2RxVyxHQUFHLEVBQUUzSCxXQUFZO01BQ2pCNEgsUUFBUSxFQUFFMUQsb0JBQXFCO01BQy9Cd0QsZUFBZSxFQUFFLEtBQU07TUFDdkJHLG9CQUFvQixFQUFFNUYsd0JBQXlCO01BQUFqUCxRQUFBLEVBRTlDMlQ7SUFBZSxDQUNELENBQ2xCLEVBRUFqRyxrQkFBa0IsaUJBQ2pCbE8sSUFBQSxDQUFDckIsb0JBQW9CO01BQUNpSyxJQUFJLEVBQUMsUUFBUTtNQUFDM0csT0FBTyxFQUFFb1AseUJBQTBCO01BQUE3USxRQUFBLGVBQ3JFUixJQUFBLENBQUNoRCxjQUFjO1FBQUNzWSxLQUFLLEVBQUMsTUFBTTtRQUFDQyxLQUFLLEVBQUMsTUFBTTtRQUFDQyxNQUFNLEVBQUM7TUFBTSxDQUFFO0lBQUMsQ0FDdEMsQ0FDdkI7RUFBQSxDQUNjLENBQUM7QUFFdEIsQ0FBQztBQUVELE9BQU8sSUFBTUMsY0FBYyxnQkFBR2xaLEtBQUssQ0FBQ0MsSUFBSSxDQUFDaVEsbUJBQW1CLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|