@agilemotion/oui-react-js 2.0.26 → 2.0.28
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/dist/AuthImage.js +68 -0
- package/dist/RestService.js +7 -2
- package/dist/components/AlertBar.js +2 -2
- package/dist/components/Button.js +59 -7
- package/dist/components/DataGrid.js +42 -16
- package/dist/components/DocumentTemplateDesignerComponent.js +2 -2
- package/dist/components/FileThumb.js +48 -15
- package/dist/components/TabPanel.js +14 -3
- package/dist/components/WordDocumentViewer.js +2 -2
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +6 -2
- package/dist/components/form/BaseField.js +4 -2
- package/dist/components/form/Checkbox.js +3 -2
- package/dist/components/form/FieldSet.js +2 -2
- package/dist/components/form/Form.css +1 -1
- package/dist/components/form/Form.js +40 -38
- package/dist/components/form/GridField.js +6 -5
- package/dist/components/form/RadioGroup.js +5 -5
- package/dist/components/form/UploadField.js +40 -7
- package/dist/components/layout/Layout.js +9 -1
- package/dist/components/layout/View.css +2 -0
- package/dist/components/media/ChatViewer.js +103 -0
- package/dist/components/media/TrainingRoom.js +5 -5
- package/dist/components/media/VCRoomParticipant.js +11 -11
- package/dist/components/media/VCRoomWorkspace.js +19 -4
- package/dist/components/media/VideoPlayer.js +61 -7
- package/dist/components/media/chat/ChatRoom.js +37 -28
- package/dist/components/media/chat/PollContainer.js +85 -18
- package/dist/documentDownload.js +79 -0
- package/dist/js/ProcurementMeetings.js +11 -4
- package/dist/view/PortalDashboard.js +6 -5
- package/package.json +1 -1
|
@@ -22,6 +22,8 @@ var _linkifyReact = _interopRequireDefault(require("linkify-react"));
|
|
|
22
22
|
var _File = _interopRequireDefault(require("../../customInput/File"));
|
|
23
23
|
var _ApplicationManager = _interopRequireDefault(require("../../../ApplicationManager"));
|
|
24
24
|
var _RestUtils = require("../../../RestUtils");
|
|
25
|
+
var _documentDownload = require("../../../documentDownload");
|
|
26
|
+
var _AuthImage = _interopRequireDefault(require("../../../AuthImage"));
|
|
25
27
|
var _pdfIcon = _interopRequireDefault(require("../../../assets/img/pdf-icon.png"));
|
|
26
28
|
var _doc = _interopRequireDefault(require("../../../assets/img/doc.png"));
|
|
27
29
|
var _word = _interopRequireDefault(require("../../../assets/img/word.png"));
|
|
@@ -34,6 +36,11 @@ var _PollContainer = _interopRequireDefault(require("./PollContainer"));
|
|
|
34
36
|
var _iconsMaterial = require("@mui/icons-material");
|
|
35
37
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
36
38
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
39
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
40
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
41
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
42
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
43
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
37
44
|
const location = exports.location = window.location.protocol + '//' + window.location.hostname;
|
|
38
45
|
const ChatRoom = props => {
|
|
39
46
|
const navigate = (0, _reactRouterDom.useNavigate)();
|
|
@@ -71,10 +78,13 @@ const ChatRoom = props => {
|
|
|
71
78
|
};
|
|
72
79
|
};
|
|
73
80
|
const fetchChat = () => {
|
|
74
|
-
let url = selectedChat.meetingId ? "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetchMeetingChat/").concat(selectedChat.meetingId) : "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetch/").concat(selectedChat.id);
|
|
81
|
+
let url = selectedChat.meetingKey ? "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetchMeetingChatByKey/").concat(selectedChat.meetingKey) : selectedChat.meetingId ? "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetchMeetingChat/").concat(selectedChat.meetingId) : "".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/chat/fetch/").concat(selectedChat.id);
|
|
75
82
|
(0, _RestUtils.sendRequest)(url, response => {
|
|
76
83
|
if (response && response.id) {
|
|
77
|
-
|
|
84
|
+
// Preserve meetingKey so subsequent refreshes stay on the by-key lookup.
|
|
85
|
+
setSelectedChat(_objectSpread(_objectSpread({}, response), {}, {
|
|
86
|
+
meetingKey: selectedChat.meetingKey
|
|
87
|
+
}));
|
|
78
88
|
}
|
|
79
89
|
}, e => {}, true, false);
|
|
80
90
|
};
|
|
@@ -86,13 +96,14 @@ const ChatRoom = props => {
|
|
|
86
96
|
id: poll.id
|
|
87
97
|
});
|
|
88
98
|
};
|
|
89
|
-
const submitPollVoteHandler = poll
|
|
99
|
+
const submitPollVoteHandler = function (poll) {
|
|
100
|
+
let isTieBreaker = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
90
101
|
let chatParticipant = selectedChat.participants.find(p => p.username === currentUser.username);
|
|
91
102
|
const data = {
|
|
92
103
|
pollId: poll.id,
|
|
93
|
-
optionId: poll.
|
|
104
|
+
optionId: isTieBreaker ? poll.tieBreakerOption : poll.selectedOption,
|
|
94
105
|
chatParticipant: chatParticipant,
|
|
95
|
-
tieBreaker:
|
|
106
|
+
tieBreaker: isTieBreaker
|
|
96
107
|
};
|
|
97
108
|
(0, _RestUtils.postData)("".concat(location + '/' + _ApplicationManager.default.getContextRoot(), "/calendar/api/v1/poll/vote"), response => {
|
|
98
109
|
fetchChat();
|
|
@@ -131,16 +142,15 @@ const ChatRoom = props => {
|
|
|
131
142
|
setRefresher(!refresher);
|
|
132
143
|
}
|
|
133
144
|
};
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
link.click();
|
|
140
|
-
}).catch(console.error);
|
|
145
|
+
|
|
146
|
+
// Download a chat attachment to the device (no new tab). Auth + tenant travel in headers via the
|
|
147
|
+
// shared helper, so tokens no longer leak into the URL/query string.
|
|
148
|
+
const onDownload = (fileName, repositoryId) => {
|
|
149
|
+
(0, _documentDownload.downloadDocument)(repositoryId, fileName).catch(console.error);
|
|
141
150
|
};
|
|
142
151
|
const loadMessages = () => {
|
|
143
152
|
scrollToBottom();
|
|
153
|
+
console.log("\n\n\n\nMESSAGES : ", selectedChat.messages);
|
|
144
154
|
if (selectedChat) {
|
|
145
155
|
const newMessages = [].concat(selectedChat.messages);
|
|
146
156
|
if (!props.showAllMessagesForNewParticipants) {
|
|
@@ -275,17 +285,15 @@ const ChatRoom = props => {
|
|
|
275
285
|
documents
|
|
276
286
|
} = message;
|
|
277
287
|
const thumbnails = [];
|
|
278
|
-
// TODO : Make docs URL path a config
|
|
279
|
-
const documentDownloadUrl = location + _ApplicationManager.default.getContextRoot() + '/docs/api/v1/manager/download';
|
|
280
|
-
const tokensQueryString = 'access_token=' + sessionStorage.getItem('accessToken') + '&idToken=' + sessionStorage.getItem('idToken');
|
|
281
288
|
documents.forEach((doc, index) => {
|
|
282
289
|
if (doc.type.includes('image')) {
|
|
283
290
|
return thumbnails.push(/*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
284
291
|
key: index,
|
|
285
292
|
className: 'col'
|
|
286
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
293
|
+
}, /*#__PURE__*/_react.default.createElement(_AuthImage.default, {
|
|
287
294
|
key: index,
|
|
288
|
-
|
|
295
|
+
repositoryId: doc.repositoryId,
|
|
296
|
+
fallbackSrc: doc.payload,
|
|
289
297
|
alt: "",
|
|
290
298
|
style: {
|
|
291
299
|
width: 250,
|
|
@@ -296,7 +304,7 @@ const ChatRoom = props => {
|
|
|
296
304
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
297
305
|
component: "span",
|
|
298
306
|
onClick: () => {
|
|
299
|
-
onDownload(documents[index].name,
|
|
307
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
300
308
|
}
|
|
301
309
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
302
310
|
id: 'DOWNLOAD'
|
|
@@ -326,7 +334,7 @@ const ChatRoom = props => {
|
|
|
326
334
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
327
335
|
component: "span",
|
|
328
336
|
onClick: () => {
|
|
329
|
-
onDownload(documents[index].name,
|
|
337
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
330
338
|
}
|
|
331
339
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
332
340
|
id: 'DOWNLOAD'
|
|
@@ -358,7 +366,7 @@ const ChatRoom = props => {
|
|
|
358
366
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
359
367
|
component: "span",
|
|
360
368
|
onClick: () => {
|
|
361
|
-
onDownload(documents[index].name,
|
|
369
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
362
370
|
}
|
|
363
371
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
364
372
|
id: 'DOWNLOAD'
|
|
@@ -390,7 +398,7 @@ const ChatRoom = props => {
|
|
|
390
398
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
391
399
|
component: "span",
|
|
392
400
|
onClick: () => {
|
|
393
|
-
onDownload(documents[index].name,
|
|
401
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
394
402
|
}
|
|
395
403
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
396
404
|
id: 'DOWNLOAD'
|
|
@@ -422,7 +430,7 @@ const ChatRoom = props => {
|
|
|
422
430
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
423
431
|
component: "span",
|
|
424
432
|
onClick: () => {
|
|
425
|
-
onDownload(documents[index].name,
|
|
433
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
426
434
|
}
|
|
427
435
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
428
436
|
id: 'DOWNLOAD'
|
|
@@ -460,7 +468,7 @@ const ChatRoom = props => {
|
|
|
460
468
|
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_material.IconButton, {
|
|
461
469
|
component: "span",
|
|
462
470
|
onClick: () => {
|
|
463
|
-
onDownload(documents[index].name,
|
|
471
|
+
onDownload(documents[index].name, doc.repositoryId);
|
|
464
472
|
}
|
|
465
473
|
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
466
474
|
id: 'DOWNLOAD'
|
|
@@ -647,17 +655,18 @@ const ChatRoom = props => {
|
|
|
647
655
|
isChairPerson: props.isChairPerson,
|
|
648
656
|
pollCreator: message.participant,
|
|
649
657
|
createdDate: message.createdDate,
|
|
650
|
-
submitPollVoteHandler: poll => submitPollVoteHandler(poll),
|
|
658
|
+
submitPollVoteHandler: (poll, isTieBreaker) => submitPollVoteHandler(poll, isTieBreaker),
|
|
651
659
|
pollParticipantIDs: selectedChat.participants.map(p => p.username),
|
|
652
660
|
currentUser: currentUser,
|
|
653
661
|
closePollHandler: (e, poll) => closePollHandler(e, poll),
|
|
654
|
-
numberOfPollParticipants: selectedChat.participants.length
|
|
662
|
+
numberOfPollParticipants: selectedChat.participants.length,
|
|
663
|
+
refreshPollHandler: () => fetchChat()
|
|
655
664
|
});
|
|
656
665
|
}
|
|
657
666
|
}
|
|
658
667
|
};
|
|
659
668
|
if (selectedChat && messages) {
|
|
660
|
-
var _messages$sort;
|
|
669
|
+
var _messages$filter$sort;
|
|
661
670
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
662
671
|
className: "chatroom"
|
|
663
672
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -690,7 +699,7 @@ const ChatRoom = props => {
|
|
|
690
699
|
id: "messages",
|
|
691
700
|
ref: messagesEndRef,
|
|
692
701
|
className: "chatroom__body"
|
|
693
|
-
}, (_messages$sort = messages.sort((a, b) => new Date(a.createdDate) - new Date(b.createdDate))) === null || _messages$sort === void 0 ? void 0 : _messages$sort.map(renderMessage)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), mode === 'CHAT' && !props.readOnly && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("form", {
|
|
702
|
+
}, (_messages$filter$sort = messages.filter(m => !props.pollsOnly || m.poll).sort((a, b) => new Date(a.createdDate) - new Date(b.createdDate))) === null || _messages$filter$sort === void 0 ? void 0 : _messages$filter$sort.map(renderMessage)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null), mode === 'CHAT' && !props.readOnly && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("form", {
|
|
694
703
|
className: "chatroom__sendMessage"
|
|
695
704
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
696
705
|
className: "message__imageSelector"
|
|
@@ -772,4 +781,4 @@ const ChatRoom = props => {
|
|
|
772
781
|
}
|
|
773
782
|
};
|
|
774
783
|
var _default = exports.default = ChatRoom;
|
|
775
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0ZXJpYWwiLCJfU2VuZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVG9vbHRpcCIsIl9yZWFjdFJvdXRlckRvbSIsIl9tb21lbnQiLCJfSW5wdXRBZG9ybm1lbnQiLCJfU3R5bGVzIiwiX0N1c3RvbUlucHV0IiwiX0xvdHRpZUljb24iLCJfcmVhY3RGZWF0aGVyIiwiX1V0aWxzIiwiX1ZDRXZlbnRUeXBlIiwiX2xpbmtpZnlSZWFjdCIsIl9GaWxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9SZXN0VXRpbHMiLCJfcGRmSWNvbiIsIl9kb2MiLCJfd29yZCIsIl9leGNlbCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0ljb24iLCJfQ2hhdFBvbGwiLCJfUG9sbENvbnRhaW5lciIsIl9pY29uc01hdGVyaWFsIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwibG9jYXRpb24iLCJleHBvcnRzIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIkNoYXRSb29tIiwicHJvcHMiLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwicmVmcmVzaGVyIiwic2V0UmVmcmVzaGVyIiwidXNlU3RhdGUiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImRvY3VtZW50cyIsInNldERvY3VtZW50cyIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJuZXdQYXJ0aWNpcGFudHMiLCJzZXROZXdQYXJ0aWNpcGFudHMiLCJjb25maXJtIiwic2V0SW1nVXBsb2FkQ29uZmlybSIsIm1lc3NhZ2VzRW5kUmVmIiwidXNlUmVmIiwibG9hZGluZyIsInNldExvYWRpbmciLCJtb2RlIiwic2V0TW9kZSIsImNsZWFyVXBsb2FkZWRGaWxlU3dpdGNoIiwic2V0Q2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2giLCJzb2NrZXRFdmVudEhhbmRsZXIiLCJjdXJyZW50VXNlciIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldFVzZXJEZXRhaWxzIiwic29ja2V0RXZlbnRIYW5kbGVyQXBpIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJDSEFUX01FU1NBR0UiLCJvbk1lc3NhZ2UiLCJwYXlsb2FkIiwiREVMRVRFX0NIQVRfTUVTU0FHRSIsIm9uRGVsZXRlTWVzc2FnZSIsIlNZU1RFTV9FVkVOVCIsIm9uU3lzdGVtRXZlbnQiLCJmZXRjaENoYXQiLCJ1cmwiLCJtZWV0aW5nSWQiLCJjb25jYXQiLCJnZXRDb250ZXh0Um9vdCIsInNlbmRSZXF1ZXN0IiwicmVzcG9uc2UiLCJjbG9zZVBvbGxIYW5kbGVyIiwicG9sbCIsInBvc3REYXRhIiwic2VuZE1lc3NhZ2UiLCJxdWVzdGlvbiIsInN1Ym1pdFBvbGxWb3RlSGFuZGxlciIsImNoYXRQYXJ0aWNpcGFudCIsInBhcnRpY2lwYW50cyIsImZpbmQiLCJwIiwidXNlcm5hbWUiLCJkYXRhIiwicG9sbElkIiwib3B0aW9uSWQiLCJzZWxlY3RlZE9wdGlvbiIsInRpZUJyZWFrZXJPcHRpb24iLCJ0aWVCcmVha2VyIiwiVXRpbHMiLCJpc051bGwiLCJzeXN0ZW1FdmVudFR5cGUiLCJtc2ciLCJyb29tSWQiLCJjaGF0TWVzc2FnZSIsInR5cGUiLCJjaGF0VGFiIiwiYWRkZWRQZW9wbGVIYW5kbGVyIiwicHVzaCIsImxvYWRNZXNzYWdlcyIsImNvbnNvbGUiLCJsb2ciLCJtIiwibWVzc2FnZUlkIiwiYWN0aXZlIiwib25Eb3dubG9hZCIsImZpbGVOYW1lIiwiZmV0Y2giLCJ0aGVuIiwiYmxvYiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiZG93bmxvYWQiLCJjbGljayIsImNhdGNoIiwiZXJyb3IiLCJzY3JvbGxUb0JvdHRvbSIsIm5ld01lc3NhZ2VzIiwic2hvd0FsbE1lc3NhZ2VzRm9yTmV3UGFydGljaXBhbnRzIiwiZGF0ZUFkZGVkVG9DaGF0IiwiRGF0ZSIsImZpbHRlcmVkTWVzc2FnZXMiLCJmaWx0ZXIiLCJ0eHQiLCJjcmVhdGVkRGF0ZSIsImdldENoYXRSb29tVGl0bGUiLCJ0aXRsZSIsInVzZUVmZmVjdCIsInVzZXJJZCIsImNoYXRJZCIsImFwaSIsInZjRXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJjdXJyZW50Iiwic2Nyb2xsIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJ2YWx1ZSIsInBhcnRpY2lwYW50c1VzZXJJZHMiLCJ1c2VyIiwibWFwIiwiZmluYWxNZXNzYWdlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwicHJldmVudERlZmF1bHQiLCJtVHlwZSIsImNvbWJpbmVkU2l6ZSIsImRvYyIsInBhcnNlSW50Iiwic2l6ZSIsImFsZXJ0IiwiZ2V0VG9wVmlldyIsIlN5c3RlbUV2ZW50VHlwZSIsIkFQSV9FUlJPUiIsImNvbnRlbnQiLCJwYXJ0aWNpcGFudCIsInBhcnRpY2lwYW50c1RvU2lnbmFsSWRzIiwic29ja2V0TWFuYWdlciIsImVtaXRFdmVudCIsInNraXBBbGVydCIsIm5ld0NoYXQiLCJwcm9maWxlIiwiZ2V0QWN0aXZlVGVuYW50Iiwib2xkTXNncyIsIm9wZW5BZGRQZW9wbGVEaWFsb2ciLCJzZXRPcGVuQWRkUGVvcGxlIiwicmVuZGVyRmlsZVRodW1ibmFpbCIsInRodW1ibmFpbHMiLCJkb2N1bWVudERvd25sb2FkVXJsIiwidG9rZW5zUXVlcnlTdHJpbmciLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJmb3JFYWNoIiwiaW5kZXgiLCJpbmNsdWRlcyIsImtleSIsImNsYXNzTmFtZSIsInNyYyIsInJlcG9zaXRvcnlJZCIsImFsdCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJJY29uQnV0dG9uIiwiY29tcG9uZW50Iiwib25DbGljayIsIm5hbWUiLCJmb250U2l6ZSIsIm1hcmdpblRvcCIsInBkZkljb24iLCJib3JkZXJCb3R0b20iLCJkb2NJY29uIiwid29yZEljb24iLCJ4c2xJY29uIiwicGFkZGluZ0JvdHRvbSIsImJvcmRlcldpZHRoIiwicGhwSWNvbiIsInJlbmRlckxpbmsiLCJfcmVmIiwiYXR0cmlidXRlcyIsIm9wZW4iLCJkZWxldGVDaGF0TWVzc2FnZSIsInJlbmRlck1lc3NhZ2UiLCJwYWRkaW5nUmlnaHQiLCJBdmF0YXIiLCJnZXRJbml0aWFscyIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsInBhZGRpbmciLCJmb250U3R5bGUiLCJtYXJnaW4iLCJtb21lbnQiLCJmb3JtYXQiLCJkaXNhYmxlTWVzc2FnZURlbGV0ZSIsIm9wdGlvbnMiLCJyZW5kZXIiLCJzcGxpdCIsInRva2VuIiwiRnJhZ21lbnQiLCJJbmZvIiwiaXNIb3N0IiwiaXNDaGFpclBlcnNvbiIsInBvbGxDcmVhdG9yIiwicG9sbFBhcnRpY2lwYW50SURzIiwibnVtYmVyT2ZQb2xsUGFydGljaXBhbnRzIiwiX21lc3NhZ2VzJHNvcnQiLCJtZXJnZU9iamVjdHMiLCJoZWFkZXJTdHlsZSIsIlBvbGwiLCJjb2xvciIsImNyZWF0ZVBvbGxIYW5kbGVyIiwicG9sbERhdGEiLCJjYW5jZWxQb2xsSGFuZGxlciIsInJlZiIsInNvcnQiLCJhIiwiYiIsInJlYWRPbmx5IiwicG9zaXRpb24iLCJkaXNhYmxlRmlsZUF0dGFjaG1lbnQiLCJ6SW5kZXgiLCJlbmFibGVGaWxlIiwibXVsdGlwbGUiLCJpY29uQ29sb3IiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJsYWJlbFRleHQiLCJkaXNhYmxlZCIsIm11bHRpbGluZSIsImZvcm1Db250cm9sUHJvcHMiLCJmdWxsV2lkdGgiLCJhdXRvRm9jdXMiLCJpbnB1dFByb3BzIiwiZW5kQWRvcm5tZW50Iiwic3R5bGVzIiwiaW5wdXRBZG9ybm1lbnRJY29uIiwib25DaGFuZ2UiLCJmb250V2VpZ2h0IiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvY2hhdC9DaGF0Um9vbS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0F2YXRhciwgSWNvbkJ1dHRvbn0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5pbXBvcnQgU2VuZEljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9TZW5kJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtdWkvbWF0ZXJpYWwvVG9vbHRpcCc7XG5pbXBvcnQge3VzZU5hdmlnYXRlfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCAnLi9DaGF0Um9vbXMuc2Nzcyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgSW5wdXRBZG9ybm1lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9JbnB1dEFkb3JubWVudCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vU3R5bGVzJztcbmltcG9ydCBDdXN0b21JbnB1dCBmcm9tICcuLi8uLi9jdXN0b21JbnB1dC9DdXN0b21JbnB1dCc7XG5pbXBvcnQgTG90dGllSWNvbiBmcm9tICcuLi8uLi9Mb3R0aWVJY29uJztcbmltcG9ydCB7SW5mb30gZnJvbSAncmVhY3QtZmVhdGhlcic7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vLi4vVXRpbHMnO1xuaW1wb3J0IHtWQ0V2ZW50VHlwZX0gZnJvbSBcIi4uL1ZDRXZlbnRUeXBlXCI7XG5pbXBvcnQgTGlua2lmeSBmcm9tIFwibGlua2lmeS1yZWFjdFwiO1xuaW1wb3J0IEZpbGUgZnJvbSBcIi4uLy4uL2N1c3RvbUlucHV0L0ZpbGVcIjtcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uLy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtwb3N0RGF0YSwgc2VuZFJlcXVlc3R9IGZyb20gXCIuLi8uLi8uLi9SZXN0VXRpbHNcIjtcbmltcG9ydCBwZGZJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvcGRmLWljb24ucG5nJ1xuaW1wb3J0IGRvY0ljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy9kb2MucG5nJ1xuaW1wb3J0IHdvcmRJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvd29yZC5wbmcnXG5pbXBvcnQgeHNsSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL2V4Y2VsLnBuZydcbmltcG9ydCBwaHBJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvZXhjZWwucG5nJ1xuaW1wb3J0IHZjRXZlbnRNYW5hZ2VyIGZyb20gXCIuLi9WQ0V2ZW50TWFuYWdlclwiO1xuaW1wb3J0IHNvY2tldE1hbmFnZXIgZnJvbSBcIi4uLy4uL1NvY2tldE1hbmFnZXJcIjtcbmltcG9ydCBJY29uIGZyb20gXCIuLi8uLi9JY29uXCI7XG5pbXBvcnQgQ2hhdFBvbGwgZnJvbSBcIi4vQ2hhdFBvbGxcIjtcbmltcG9ydCBQb2xsQ29udGFpbmVyIGZyb20gXCIuL1BvbGxDb250YWluZXJcIjtcbmltcG9ydCB7UG9sbH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcblxuZXhwb3J0IGNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcblxuY29uc3QgQ2hhdFJvb20gPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG5cbiAgICBjb25zdCBbcmVmcmVzaGVyLCBzZXRSZWZyZXNoZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFttZXNzYWdlLCBzZXRNZXNzYWdlXSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBbc2VsZWN0ZWRDaGF0LCBzZXRTZWxlY3RlZENoYXRdID0gdXNlU3RhdGUocHJvcHMuc2VsZWN0ZWRDaGF0KTtcbiAgICBjb25zdCBbZG9jdW1lbnRzLCBzZXREb2N1bWVudHNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW25ld1BhcnRpY2lwYW50cywgc2V0TmV3UGFydGljaXBhbnRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbY29uZmlybSwgc2V0SW1nVXBsb2FkQ29uZmlybV0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgbWVzc2FnZXNFbmRSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gICAgY29uc3QgW21vZGUsIHNldE1vZGVdID0gdXNlU3RhdGUoJ0NIQVQnKTtcbiAgICBjb25zdCBbY2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2gsIHNldENsZWFyVXBsb2FkZWRGaWxlU3dpdGNoXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc29ja2V0RXZlbnRIYW5kbGVyXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbY3VycmVudFVzZXJdID0gdXNlU3RhdGUoYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkpO1xuXG4gICAgY29uc3Qgc29ja2V0RXZlbnRIYW5kbGVyQXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnY2hhdC1yb29tLTEyMjk5MTgyOSc7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IChldmVudFR5cGUsIGJlKSA9PiB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0U6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk1lc3NhZ2UoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5ERUxFVEVfQ0hBVF9NRVNTQUdFOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxldGVNZXNzYWdlKGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5UOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25TeXN0ZW1FdmVudChiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBmZXRjaENoYXQgPSAoKSA9PiB7XG4gICAgICAgIGxldCB1cmwgPSBzZWxlY3RlZENoYXQubWVldGluZ0lkID9cbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoTWVldGluZ0NoYXQvJHtzZWxlY3RlZENoYXQubWVldGluZ0lkfWBcbiAgICAgICAgICAgIDpcbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoLyR7c2VsZWN0ZWRDaGF0LmlkfWA7XG4gICAgICAgIHNlbmRSZXF1ZXN0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaWQpIHtcbiAgICAgICAgICAgICAgICBzZXRTZWxlY3RlZENoYXQocmVzcG9uc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgIH0sIHRydWUsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY2xvc2VQb2xsSGFuZGxlciA9IChlLCBwb2xsKSA9PiB7XG4gICAgICAgIHBvc3REYXRhKGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9wb2xsL2Nsb3NlYCxcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKGUsIGBQb2xsOiAke3BvbGwucXVlc3Rpb259IGhhcyBiZWVuIGNsb3NlZC5gKTtcbiAgICAgICAgICAgICAgICBmZXRjaENoYXQoKTtcbiAgICAgICAgICAgIH0sIChlKSA9PiB7XG5cbiAgICAgICAgICAgIH0sIHRydWUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IHBvbGwuaWRcbiAgICAgICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBzdWJtaXRQb2xsVm90ZUhhbmRsZXIgPSAocG9sbCkgPT4ge1xuICAgICAgICBsZXQgY2hhdFBhcnRpY2lwYW50ID0gc2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5maW5kKHAgPT4gcC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBwb2xsSWQ6IHBvbGwuaWQsXG4gICAgICAgICAgICBvcHRpb25JZDogcG9sbC5zZWxlY3RlZE9wdGlvbiB8fCBwb2xsLnRpZUJyZWFrZXJPcHRpb24sXG4gICAgICAgICAgICBjaGF0UGFydGljaXBhbnQ6IGNoYXRQYXJ0aWNpcGFudCxcbiAgICAgICAgICAgIHRpZUJyZWFrZXI6ICFVdGlscy5pc051bGwocG9sbC50aWVCcmVha2VyT3B0aW9uKVxuICAgICAgICB9O1xuXG4gICAgICAgIHBvc3REYXRhKGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9wb2xsL3ZvdGVgLFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgZmV0Y2hDaGF0KCk7XG4gICAgICAgICAgICB9LCAoZSkgPT4ge1xuXG4gICAgICAgICAgICB9LCB0cnVlLCBkYXRhKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25TeXN0ZW1FdmVudCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnN5c3RlbUV2ZW50VHlwZSA9PT0gXCJORVdfUE9MTF9WT1RFXCIpIHtcbiAgICAgICAgICAgIGxldCBmaW5kID0gbWVzc2FnZXMuZmluZCgobXNnKSA9PiBtc2cucG9sbCAmJiBtc2cucG9sbC5pZCA9PT0gcGF5bG9hZC5kYXRhLnBvbGxJZCk7XG4gICAgICAgICAgICBpZiAoZmluZCkge1xuICAgICAgICAgICAgICAgIC8vZmluZC50b3RhbFZvdGVzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25NZXNzYWdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdCAmJiBzZWxlY3RlZENoYXQuaWQgPT09IHBheWxvYWQucm9vbUlkKSB7XG4gICAgICAgICAgICBpZiAocHJvcHMub25NZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMub25NZXNzYWdlKHBheWxvYWQuY2hhdE1lc3NhZ2UsIHNlbGVjdGVkQ2hhdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmNoYXRNZXNzYWdlLnR5cGUgPT09ICdFVkVOVCcpIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuY2hhdFRhYikge1xuICAgICAgICAgICAgICAgICAgICBmZXRjaENoYXQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5hZGRlZFBlb3BsZUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNlbGVjdGVkQ2hhdC5tZXNzYWdlcy5wdXNoKHBheWxvYWQuY2hhdE1lc3NhZ2UpO1xuICAgICAgICAgICAgbG9hZE1lc3NhZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25EZWxldGVNZXNzYWdlID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJNRVNTQUdFUyA6IFwiLCBtZXNzYWdlcyk7XG4gICAgICAgIGxldCBtc2cgPSBtZXNzYWdlcy5maW5kKChtKSA9PiBtLmlkID09PSBwYXlsb2FkLm1lc3NhZ2VJZCk7XG4gICAgICAgIGNvbnNvbGUubG9nKG1zZyk7XG4gICAgICAgIGlmIChtc2cpIHtcbiAgICAgICAgICAgIG1zZy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFJlZnJlc2hlcighcmVmcmVzaGVyKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkRvd25sb2FkID0gKGZpbGVOYW1lLCB1cmwpID0+IHtcbiAgICAgICAgZmV0Y2godXJsKVxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuYmxvYigpKVxuICAgICAgICAgICAgLnRoZW4oYmxvYiA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICAgICAgICAgIGxpbmsuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVOYW1lO1xuICAgICAgICAgICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvYWRNZXNzYWdlcyA9ICgpID0+IHtcbiAgICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRDaGF0KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFtdLmNvbmNhdChzZWxlY3RlZENoYXQubWVzc2FnZXMpO1xuICAgICAgICAgICAgaWYgKCFwcm9wcy5zaG93QWxsTWVzc2FnZXNGb3JOZXdQYXJ0aWNpcGFudHMpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmluZCA9IHNlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMuZmluZChwID0+IHAudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlQWRkZWRUb0NoYXQgPSBmaW5kID8gZmluZC5kYXRlQWRkZWRUb0NoYXQgOiBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkTWVzc2FnZXMgPSBuZXdNZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHR4dCA9PiBkYXRlQWRkZWRUb0NoYXQgPT09IG51bGwgfHwgbmV3IERhdGUoZGF0ZUFkZGVkVG9DaGF0KSA8IG5ldyBEYXRlKHR4dC5jcmVhdGVkRGF0ZSkpO1xuICAgICAgICAgICAgICAgIHNldE1lc3NhZ2VzKGZpbHRlcmVkTWVzc2FnZXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZXRNZXNzYWdlcyhuZXdNZXNzYWdlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZ2V0Q2hhdFJvb21UaXRsZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdC50eXBlID09PSAnQ0FMRU5EQVJfTUVFVElORycgfHwgc2VsZWN0ZWRDaGF0LnRpdGxlKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWRDaGF0LnRpdGxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXRTZWxlY3RlZENoYXQocHJvcHMuc2VsZWN0ZWRDaGF0KTtcbiAgICB9LCBbcHJvcHMuc2VsZWN0ZWRDaGF0XSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpO1xuICAgIH0sIFttZXNzYWdlc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdCAmJiBjdXJyZW50VXNlcikge1xuICAgICAgICAgICAgc2V0TWVzc2FnZSgnJyk7XG4gICAgICAgICAgICBzZXREb2N1bWVudHMobnVsbCk7XG5cbiAgICAgICAgICAgIGxldCBmaW5kID0gc2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5maW5kKHAgPT4gcC51c2VySWQgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lIHx8IHAudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZmluZCkpIHtcbiAgICAgICAgICAgICAgICBwb3N0RGF0YShgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9hZGRQYXJ0aWNpcGFudHNgLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICAgICAgICAgIH0sIHRydWUsIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhdElkOiBzZWxlY3RlZENoYXQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50czogW2N1cnJlbnRVc2VyXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsb2FkTWVzc2FnZXMoKTtcbiAgICAgICAgfVxuICAgIH0sIFtzZWxlY3RlZENoYXQsIGN1cnJlbnRVc2VyXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzb2NrZXRFdmVudEhhbmRsZXIuYXBpID0gc29ja2V0RXZlbnRIYW5kbGVyQXBpKCk7XG4gICAgfSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHNvY2tldEV2ZW50SGFuZGxlciwgVkNFdmVudFR5cGUuREVMRVRFX0NIQVRfTUVTU0FHRSwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgdmNFdmVudE1hbmFnZXIucmVtb3ZlU3Vic2NyaXB0aW9ucyhzb2NrZXRFdmVudEhhbmRsZXIpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IHNjcm9sbFRvQm90dG9tID0gKCkgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXNFbmRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbWVzc2FnZXNFbmRSZWYuY3VycmVudC5zY3JvbGwoe3RvcDogbWVzc2FnZXNFbmRSZWYuY3VycmVudC5zY3JvbGxIZWlnaHQsIGJlaGF2aW9yOiAnc21vb3RoJ30pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChlKSA9PiB7XG4gICAgICAgIHNldE1lc3NhZ2UoZS50YXJnZXQudmFsdWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBwYXJ0aWNpcGFudHNVc2VySWRzID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gc2VsZWN0ZWRDaGF0XG4gICAgICAgICAgICAucGFydGljaXBhbnRzXG4gICAgICAgICAgICAuZmlsdGVyKHVzZXIgPT4gdXNlci51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUpXG4gICAgICAgICAgICAubWFwKHVzZXIgPT4gdXNlci51c2VybmFtZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHNlbmRNZXNzYWdlID0gKGUsIGZpbmFsTWVzc2FnZSA9IG51bGwsIHBvbGwgPSBudWxsKSA9PiB7XG4gICAgICAgIGlmIChlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVzc2FnZSB8fCBkb2N1bWVudHMgfHwgZmluYWxNZXNzYWdlIHx8IHBvbGwpIHtcblxuICAgICAgICAgICAgbGV0IG1UeXBlID0gJ1RFWFQnO1xuXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRzICYmIGRvY3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNvbWJpbmVkU2l6ZSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBkb2Mgb2YgZG9jdW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbWJpbmVkU2l6ZSA9IGNvbWJpbmVkU2l6ZSArIHBhcnNlSW50KGRvYy5zaXplKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY29tYmluZWRTaXplID4gNzUwMDAwMCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuYWxlcnQoYXBwbGljYXRpb25NYW5hZ2VyLmdldFRvcFZpZXcoKS5pZCwgU3lzdGVtRXZlbnRUeXBlLkFQSV9FUlJPUiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0F0dGFjaG1lbnQgc2hvdWxkIGJlIG5vdCBtb3JlIHRoYW4gNy41TUIuJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnRklMRSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBvbGwpIHtcbiAgICAgICAgICAgICAgICBtVHlwZSA9ICdQT0xMJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmluYWxNZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnRVZFTlQnXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IHtcbiAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBtVHlwZSxcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgY29udGVudDogZmluYWxNZXNzYWdlID8gZmluYWxNZXNzYWdlIDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudDogY3VycmVudFVzZXJcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGlmIChkb2N1bWVudHMgJiYgZG9jdW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBtc2cuZG9jdW1lbnRzID0gZG9jdW1lbnRzO1xuICAgICAgICAgICAgICAgIHNldENsZWFyVXBsb2FkZWRGaWxlU3dpdGNoKCFjbGVhclVwbG9hZGVkRmlsZVN3aXRjaCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwb2xsKSB7XG4gICAgICAgICAgICAgICAgbXNnLnBvbGwgPSBwb2xsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBtc2cucGFydGljaXBhbnQuYWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgcGFydGljaXBhbnRzVG9TaWduYWxJZHMgPSBwYXJ0aWNpcGFudHNVc2VySWRzKCk7XG4gICAgICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0UsIHtcbiAgICAgICAgICAgICAgICByb29tSWQ6IHNlbGVjdGVkQ2hhdC5pZCxcbiAgICAgICAgICAgICAgICBjaGF0TWVzc2FnZTogbXNnLFxuICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzLFxuICAgICAgICAgICAgICAgIHNraXBBbGVydDogcHJvcHMuY2hhdFRhYiB8fCBmaW5hbE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbmV3Q2hhdDogc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgICAgICBtZWV0aW5nSWQ6IHByb3BzLm1lZXRpbmdJZCA/IHByb3BzLm1lZXRpbmdJZCA6IG51bGwsXG4gICAgICAgICAgICAgICAgcHJvZmlsZTogKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBY3RpdmVUZW5hbnQoKSB8fCBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5wcm9maWxlKVxuICAgICAgICAgICAgfSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIG1zZy5pZCA9IGRhdGEuaWQ7XG4gICAgICAgICAgICAgICAgc2V0TWVzc2FnZXMob2xkTXNncyA9PiBbLi4ub2xkTXNncywgbXNnXSk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLnB1c2gobXNnKTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5vbk1lc3NhZ2UgJiYgc2VsZWN0ZWRDaGF0KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLm9uTWVzc2FnZShtc2csIHNlbGVjdGVkQ2hhdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJFcnJvciBzZW5kaW5nIGNoYXQgbWVzc2FnZSA6IFwiLCBlcnJvcilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHNldE1lc3NhZ2UoJycpO1xuICAgICAgICBzZXRJbWdVcGxvYWRDb25maXJtKCcnKTtcbiAgICAgICAgc2V0RG9jdW1lbnRzKG51bGwpXG4gICAgfTtcblxuICAgIGNvbnN0IG9wZW5BZGRQZW9wbGVEaWFsb2cgPSAoZSkgPT4ge1xuICAgICAgICBzZXRPcGVuQWRkUGVvcGxlKHRydWUpXG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmRlckZpbGVUaHVtYm5haWwgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICBjb25zdCB7ZG9jdW1lbnRzfSA9IG1lc3NhZ2U7XG4gICAgICAgIGNvbnN0IHRodW1ibmFpbHMgPSBbXTtcbiAgICAgICAgLy8gVE9ETyA6IE1ha2UgZG9jcyBVUkwgcGF0aCBhIGNvbmZpZ1xuICAgICAgICBjb25zdCBkb2N1bWVudERvd25sb2FkVXJsID0gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArICcvZG9jcy9hcGkvdjEvbWFuYWdlci9kb3dubG9hZCc7XG4gICAgICAgIGNvbnN0IHRva2Vuc1F1ZXJ5U3RyaW5nID0gJ2FjY2Vzc190b2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKSArICcmaWRUb2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaWRUb2tlbicpO1xuXG4gICAgICAgIGRvY3VtZW50cy5mb3JFYWNoKChkb2MsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2RvYy5wYXlsb2FkID8gZG9jLnBheWxvYWQgOiBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ3BkZicpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cGRmSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgYCR7ZG9jdW1lbnREb3dubG9hZFVybCArICcvJyArIGRvYy5yZXBvc2l0b3J5SWQgKyAnPycgKyB0b2tlbnNRdWVyeVN0cmluZ31gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydET1dOTE9BRCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvYy50eXBlLmluY2x1ZGVzKCdkb2MnKSkge1xuICAgICAgICAgICAgICAgIHRodW1ibmFpbHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e2JvcmRlckJvdHRvbTogJzVweCBzb2xpZCBibGFjayd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2RvY0ljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IDI1MCwgaGVpZ2h0OiAnYXV0byd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygnd29yZCcpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7Ym9yZGVyQm90dG9tOiAnNXB4IHNvbGlkIGJsYWNrJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17d29yZEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7d2lkdGg6IDI1MCwgaGVpZ2h0OiAnYXV0byd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Eb3dubG9hZChkb2N1bWVudHNbaW5kZXhdLm5hbWUsIGAke2RvY3VtZW50RG93bmxvYWRVcmwgKyAnLycgKyBkb2MucmVwb3NpdG9yeUlkICsgJz8nICsgdG9rZW5zUXVlcnlTdHJpbmd9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygneGxzJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt4c2xJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RPV05MT0FEJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JvcmRlckJvdHRvbTogJzAuN3B4IHNvbGlkIGJsYWNrJywgcGFkZGluZ0JvdHRvbTogJzhweCcsIGJvcmRlcldpZHRoOiAnNTAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtwaHBJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAxMDAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3ttYXJnaW5Ub3A6ICc0cHgnfX0+e2RvY3VtZW50c1tpbmRleF0ubmFtZX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBgJHtkb2N1bWVudERvd25sb2FkVXJsICsgJy8nICsgZG9jLnJlcG9zaXRvcnlJZCArICc/JyArIHRva2Vuc1F1ZXJ5U3RyaW5nfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RPV05MT0FEJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aHVtYm5haWxzO1xuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJMaW5rID0gKHthdHRyaWJ1dGVzLCBjb250ZW50fSkgPT4ge1xuICAgICAgICBjb25zdCB7aHJlZn0gPSBhdHRyaWJ1dGVzO1xuICAgICAgICByZXR1cm4gPGFcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICB3aW5kb3cub3BlbihocmVmKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICA8L2E+O1xuICAgIH07XG5cbiAgICBjb25zdCBkZWxldGVDaGF0TWVzc2FnZSA9IChtZXNzYWdlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzID0gcGFydGljaXBhbnRzVXNlcklkcygpO1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5ERUxFVEVfQ0hBVF9NRVNTQUdFLCB7XG4gICAgICAgICAgICBtZXNzYWdlSWQ6IG1lc3NhZ2UuaWQsXG4gICAgICAgICAgICBwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyxcbiAgICAgICAgICAgIHByb2ZpbGU6IChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QWN0aXZlVGVuYW50KCkgfHwgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkucHJvZmlsZSksXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgdXNlcm5hbWU6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIG1lc3NhZ2UuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBzZXRSZWZyZXNoZXIoIXJlZnJlc2hlcik7XG4gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByZW5kZXJNZXNzYWdlID0gKG1lc3NhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghbWVzc2FnZS5hY3RpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT17J2NoYXRyb29tX19tZXNzYWdlIHJvdyBuby1tYXJnaW4nfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17bWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBcIm15Y2hhdC1kZWxldGVkXCIgOiBcInBlZXJjaGF0XCJ9PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lICE9PSBjdXJyZW50VXNlci51c2VybmFtZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e3BhZGRpbmdSaWdodDogJzEycHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKG1lc3NhZ2UucGFydGljaXBhbnQubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMXB4IHNvbGlkICM1MjVmN2ZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMTZweFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lID8gbnVsbCA6IFwiMCA4cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9IHN0eWxlPXt7Zm9udFN0eWxlOiAnaXRhbGljJ319PmRlbGV0ZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ0ZJTEUnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteWNoYXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpbjogJzRweCAwIDAgMCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIGNoYXQtdGltZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQobWVzc2FnZS5jcmVhdGVkRGF0ZSkuZm9ybWF0KCdERC9NTSwgSEg6bW0nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlTWVzc2FnZURlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDaGF0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnREVMRVRFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGaWxlVGh1bWJuYWlsKG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXtpbmRleH0+e21lc3NhZ2UuY29udGVudH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGVlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGaWxlVGh1bWJuYWlsKG1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e2luZGV4fT57bWVzc2FnZS5jb250ZW50fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLnR5cGUgPT09ICdURVhUJykge1xuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXljaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3ttYXJnaW46ICc0cHggMCAwIDAnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBjaGF0LXRpbWUnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bW9tZW50KG1lc3NhZ2UuY3JlYXRlZERhdGUpLmZvcm1hdCgnREQvTU0sIEhIOm1tJyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvcHMuZGlzYWJsZU1lc3NhZ2VEZWxldGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ2hhdE1lc3NhZ2UobWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0RFTEVURSd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtpZnkga2V5PXtpbmRleH0gb3B0aW9ucz17e3JlbmRlcjogcmVuZGVyTGlua319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e21hcmdpbjogJzAgOHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgodG9rZW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+e3Rva2VufTxici8+PC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbmtpZnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyY2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtVdGlscy5nZXRJbml0aWFscyhtZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGVlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpbmtpZnkga2V5PXtpbmRleH0gb3B0aW9ucz17e3JlbmRlcjogcmVuZGVyTGlua319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBzdHlsZT17e21hcmdpbjogJzAgMCA0cHggNHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnQuc3BsaXQoJ1xcbicpLm1hcCgodG9rZW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVhY3QuRnJhZ21lbnQga2V5PXtpbmRleH0+e3Rva2VufTxici8+PC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0xpbmtpZnk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS50eXBlID09PSAnRVZFTlQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdi1wb2xsLWNob2ljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImN2LXBvbGwtY2hvaWNlLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjdi1jaG9pY2UtcGVyY2VudGFnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2VsZWN0ZWQtY2hvaWNlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJjdi1jaG9pY2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVzc2FnZS5jb250ZW50fVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9eydjdi1jaG9pY2UtcGVyY2VudC1jaGFydCBldmVudCd9IHN0eWxlPXt7d2lkdGg6ICcxMDAlJ319PlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDxQb2xsQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIHBvbGw9e21lc3NhZ2UucG9sbH1cbiAgICAgICAgICAgICAgICAgICAgY2hhdFRhYj17cHJvcHMuY2hhdFRhYn1cbiAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtwcm9wcy5pc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgIGlzQ2hhaXJQZXJzb249e3Byb3BzLmlzQ2hhaXJQZXJzb259XG4gICAgICAgICAgICAgICAgICAgIHBvbGxDcmVhdG9yPXttZXNzYWdlLnBhcnRpY2lwYW50fVxuICAgICAgICAgICAgICAgICAgICBjcmVhdGVkRGF0ZT17bWVzc2FnZS5jcmVhdGVkRGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgc3VibWl0UG9sbFZvdGVIYW5kbGVyPXsocG9sbCkgPT4gc3VibWl0UG9sbFZvdGVIYW5kbGVyKHBvbGwpfVxuICAgICAgICAgICAgICAgICAgICBwb2xsUGFydGljaXBhbnRJRHM9e3NlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMubWFwKHAgPT4gcC51c2VybmFtZSl9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVc2VyPXtjdXJyZW50VXNlcn1cbiAgICAgICAgICAgICAgICAgICAgY2xvc2VQb2xsSGFuZGxlcj17KGUsIHBvbGwpID0+IGNsb3NlUG9sbEhhbmRsZXIoZSwgcG9sbCl9XG4gICAgICAgICAgICAgICAgICAgIG51bWJlck9mUG9sbFBhcnRpY2lwYW50cz17c2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoc2VsZWN0ZWRDaGF0ICYmIG1lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoYXRyb29tXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGF0cm9vbV9faGVhZGVyXCIgc3R5bGU9e1V0aWxzLm1lcmdlT2JqZWN0cyh7fSwgcHJvcHMuaGVhZGVyU3R5bGUpfT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmNoYXRUYWIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2hhdHJvb21fX2hlYWRlcnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9XCJQb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vZGUoJ1BPTEwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb2xsIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwcm9wcy5jaGF0VGFiID8gJ3JlZCcgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IHByb3BzLmNoYXRUYWIgPyAnOHB4JyA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdQT0xMJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdFBvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0VGFiPXtwcm9wcy5jaGF0VGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17c2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQb2xsSGFuZGxlcj17KHBvbGxEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKG51bGwsIG51bGwsIHBvbGxEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZSgnQ0hBVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsUG9sbEhhbmRsZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZSgnQ0hBVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAvPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdDSEFUJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibWVzc2FnZXNcIiByZWY9e21lc3NhZ2VzRW5kUmVmfSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBuZXcgRGF0ZShhLmNyZWF0ZWREYXRlKSAtIG5ldyBEYXRlKGIuY3JlYXRlZERhdGUpKT8ubWFwKHJlbmRlck1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdDSEFUJyAmJiAhcHJvcHMucmVhZE9ubHkgJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzTmFtZT1cImNoYXRyb29tX19zZW5kTWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibWVzc2FnZV9faW1hZ2VTZWxlY3RvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NoYXQtaW5wdXQnfSBzdHlsZT17e3Bvc2l0aW9uOiAncmVsYXRpdmUnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlRmlsZUF0dGFjaG1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcImZpbGUtdXBsb2FkIGNoYXRzLWZpbGUtdXBsb2FkXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7ekluZGV4OiAhVXRpbHMuaXNOdWxsKGRvY3VtZW50cykgPyAxIDogMH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUZpbGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17J2RvY3VtZW50cyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Db2xvcj17cHJvcHMuY2hhdFRhYiA/ICd3aGl0ZScgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZG9jdW1lbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclVwbG9hZGVkRmlsZVN3aXRjaD17Y2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2h9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQ2hhbmdlSGFuZGxlcj17KHZhbHVlLCBpZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RG9jdW1lbnRzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEN1c3RvbUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpJbmRleDogIVV0aWxzLmlzTnVsbChkb2N1bWVudHMpID8gMCA6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHByb3BzLmNoYXRUYWIgPyAnd2hpdGUnIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dD17ZG9jdW1lbnRzID8gXCJcIiA6IFwiVHlwZSBhIG5ldyBtZXNzYWdlXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17IVV0aWxzLmlzTnVsbChkb2N1bWVudHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlsaW5lPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJtZXNzYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sUHJvcHM9e3tmdWxsV2lkdGg6IHRydWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9e3Byb3BzLmNoYXRUYWIgPyAnd2hpdGUnIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZEFkb3JubWVudDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW5wdXRBZG9ybm1lbnQgcG9zaXRpb249XCJlbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy5pbnB1dEFkb3JubWVudEljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VuZEljb24gc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnfX0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0lucHV0QWRvcm5tZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoYW5nZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmICghbG9hZGluZyAmJiBzZWxlY3RlZENoYXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY2VudGVyZWQtZmxleC1ib3gnfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImVtcHR5Y2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9IHN0eWxlPXt7Zm9udFNpemU6ICcyMHB4JywgZm9udFdlaWdodDogJ2JvbGQnfX0+WW91J3JlIHN0YXJ0aW5nIGFcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2F0aW9uPC9wPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9IHN0eWxlPXt7Zm9udFNpemU6ICcxNnB4J319PlR5cGUgeW91ciBmaXJzdCBtZXNzYWdlIGJlbG93PC9wPlxuICAgICAgICAgICAgICAgICAgICA8TG90dGllSWNvbiBpZD17J2NoYXQnfS8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGF0Um9vbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksUUFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTCxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFILHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTyxlQUFBLEdBQUFKLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUSxPQUFBLEdBQUFMLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBUyxZQUFBLEdBQUFOLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBVyxhQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxNQUFBLEdB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
|
|
784
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbWF0ZXJpYWwiLCJfU2VuZCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfVG9vbHRpcCIsIl9yZWFjdFJvdXRlckRvbSIsIl9tb21lbnQiLCJfSW5wdXRBZG9ybm1lbnQiLCJfU3R5bGVzIiwiX0N1c3RvbUlucHV0IiwiX0xvdHRpZUljb24iLCJfcmVhY3RGZWF0aGVyIiwiX1V0aWxzIiwiX1ZDRXZlbnRUeXBlIiwiX2xpbmtpZnlSZWFjdCIsIl9GaWxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9SZXN0VXRpbHMiLCJfZG9jdW1lbnREb3dubG9hZCIsIl9BdXRoSW1hZ2UiLCJfcGRmSWNvbiIsIl9kb2MiLCJfd29yZCIsIl9leGNlbCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0ljb24iLCJfQ2hhdFBvbGwiLCJfUG9sbENvbnRhaW5lciIsIl9pY29uc01hdGVyaWFsIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwibG9jYXRpb24iLCJleHBvcnRzIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIkNoYXRSb29tIiwicHJvcHMiLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwicmVmcmVzaGVyIiwic2V0UmVmcmVzaGVyIiwidXNlU3RhdGUiLCJtZXNzYWdlIiwic2V0TWVzc2FnZSIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImRvY3VtZW50cyIsInNldERvY3VtZW50cyIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJuZXdQYXJ0aWNpcGFudHMiLCJzZXROZXdQYXJ0aWNpcGFudHMiLCJjb25maXJtIiwic2V0SW1nVXBsb2FkQ29uZmlybSIsIm1lc3NhZ2VzRW5kUmVmIiwidXNlUmVmIiwibG9hZGluZyIsInNldExvYWRpbmciLCJtb2RlIiwic2V0TW9kZSIsImNsZWFyVXBsb2FkZWRGaWxlU3dpdGNoIiwic2V0Q2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2giLCJzb2NrZXRFdmVudEhhbmRsZXIiLCJjdXJyZW50VXNlciIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldFVzZXJEZXRhaWxzIiwic29ja2V0RXZlbnRIYW5kbGVyQXBpIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJDSEFUX01FU1NBR0UiLCJvbk1lc3NhZ2UiLCJwYXlsb2FkIiwiREVMRVRFX0NIQVRfTUVTU0FHRSIsIm9uRGVsZXRlTWVzc2FnZSIsIlNZU1RFTV9FVkVOVCIsIm9uU3lzdGVtRXZlbnQiLCJmZXRjaENoYXQiLCJ1cmwiLCJtZWV0aW5nS2V5IiwiY29uY2F0IiwiZ2V0Q29udGV4dFJvb3QiLCJtZWV0aW5nSWQiLCJzZW5kUmVxdWVzdCIsInJlc3BvbnNlIiwiY2xvc2VQb2xsSGFuZGxlciIsInBvbGwiLCJwb3N0RGF0YSIsInNlbmRNZXNzYWdlIiwicXVlc3Rpb24iLCJzdWJtaXRQb2xsVm90ZUhhbmRsZXIiLCJpc1RpZUJyZWFrZXIiLCJ1bmRlZmluZWQiLCJjaGF0UGFydGljaXBhbnQiLCJwYXJ0aWNpcGFudHMiLCJmaW5kIiwicCIsInVzZXJuYW1lIiwiZGF0YSIsInBvbGxJZCIsIm9wdGlvbklkIiwidGllQnJlYWtlck9wdGlvbiIsInNlbGVjdGVkT3B0aW9uIiwidGllQnJlYWtlciIsInN5c3RlbUV2ZW50VHlwZSIsIm1zZyIsInJvb21JZCIsImNoYXRNZXNzYWdlIiwidHlwZSIsImNoYXRUYWIiLCJhZGRlZFBlb3BsZUhhbmRsZXIiLCJsb2FkTWVzc2FnZXMiLCJjb25zb2xlIiwibG9nIiwibSIsIm1lc3NhZ2VJZCIsImFjdGl2ZSIsIm9uRG93bmxvYWQiLCJmaWxlTmFtZSIsInJlcG9zaXRvcnlJZCIsImRvd25sb2FkRG9jdW1lbnQiLCJjYXRjaCIsImVycm9yIiwic2Nyb2xsVG9Cb3R0b20iLCJuZXdNZXNzYWdlcyIsInNob3dBbGxNZXNzYWdlc0Zvck5ld1BhcnRpY2lwYW50cyIsImRhdGVBZGRlZFRvQ2hhdCIsIkRhdGUiLCJmaWx0ZXJlZE1lc3NhZ2VzIiwidHh0IiwiY3JlYXRlZERhdGUiLCJnZXRDaGF0Um9vbVRpdGxlIiwidGl0bGUiLCJ1c2VFZmZlY3QiLCJ1c2VySWQiLCJVdGlscyIsImlzTnVsbCIsImNoYXRJZCIsImFwaSIsInZjRXZlbnRNYW5hZ2VyIiwiYWRkU3Vic2NyaXB0aW9ucyIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJjdXJyZW50Iiwic2Nyb2xsIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJoYW5kbGVDaGFuZ2UiLCJ0YXJnZXQiLCJwYXJ0aWNpcGFudHNVc2VySWRzIiwidXNlciIsIm1hcCIsImZpbmFsTWVzc2FnZSIsInByZXZlbnREZWZhdWx0IiwibVR5cGUiLCJjb21iaW5lZFNpemUiLCJkb2MiLCJwYXJzZUludCIsInNpemUiLCJhbGVydCIsImdldFRvcFZpZXciLCJTeXN0ZW1FdmVudFR5cGUiLCJBUElfRVJST1IiLCJjb250ZW50IiwicGFydGljaXBhbnQiLCJwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJza2lwQWxlcnQiLCJuZXdDaGF0IiwicHJvZmlsZSIsImdldEFjdGl2ZVRlbmFudCIsInRoZW4iLCJvbGRNc2dzIiwib3BlbkFkZFBlb3BsZURpYWxvZyIsInNldE9wZW5BZGRQZW9wbGUiLCJyZW5kZXJGaWxlVGh1bWJuYWlsIiwidGh1bWJuYWlscyIsImluZGV4IiwiaW5jbHVkZXMiLCJjcmVhdGVFbGVtZW50Iiwia2V5IiwiY2xhc3NOYW1lIiwiZmFsbGJhY2tTcmMiLCJhbHQiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0IiwiSWNvbkJ1dHRvbiIsImNvbXBvbmVudCIsIm9uQ2xpY2siLCJuYW1lIiwiZm9udFNpemUiLCJtYXJnaW5Ub3AiLCJzcmMiLCJwZGZJY29uIiwiYm9yZGVyQm90dG9tIiwiZG9jSWNvbiIsIndvcmRJY29uIiwieHNsSWNvbiIsInBhZGRpbmdCb3R0b20iLCJib3JkZXJXaWR0aCIsInBocEljb24iLCJyZW5kZXJMaW5rIiwiX3JlZiIsImF0dHJpYnV0ZXMiLCJocmVmIiwib3BlbiIsImRlbGV0ZUNoYXRNZXNzYWdlIiwicmVuZGVyTWVzc2FnZSIsInBhZGRpbmdSaWdodCIsIkF2YXRhciIsImdldEluaXRpYWxzIiwiYm9yZGVyIiwiYm9yZGVyUmFkaXVzIiwicGFkZGluZyIsImZvbnRTdHlsZSIsIm1hcmdpbiIsIm1vbWVudCIsImZvcm1hdCIsImRpc2FibGVNZXNzYWdlRGVsZXRlIiwib3B0aW9ucyIsInJlbmRlciIsInNwbGl0IiwidG9rZW4iLCJGcmFnbWVudCIsIkluZm8iLCJpc0hvc3QiLCJpc0NoYWlyUGVyc29uIiwicG9sbENyZWF0b3IiLCJwb2xsUGFydGljaXBhbnRJRHMiLCJudW1iZXJPZlBvbGxQYXJ0aWNpcGFudHMiLCJyZWZyZXNoUG9sbEhhbmRsZXIiLCJfbWVzc2FnZXMkZmlsdGVyJHNvcnQiLCJtZXJnZU9iamVjdHMiLCJoZWFkZXJTdHlsZSIsIlBvbGwiLCJjb2xvciIsImNyZWF0ZVBvbGxIYW5kbGVyIiwicG9sbERhdGEiLCJjYW5jZWxQb2xsSGFuZGxlciIsInJlZiIsInBvbGxzT25seSIsInNvcnQiLCJhIiwiYiIsInJlYWRPbmx5IiwicG9zaXRpb24iLCJkaXNhYmxlRmlsZUF0dGFjaG1lbnQiLCJ6SW5kZXgiLCJlbmFibGVGaWxlIiwibXVsdGlwbGUiLCJpY29uQ29sb3IiLCJ2YWx1ZUNoYW5nZUhhbmRsZXIiLCJsYWJlbFRleHQiLCJkaXNhYmxlZCIsIm11bHRpbGluZSIsImZvcm1Db250cm9sUHJvcHMiLCJmdWxsV2lkdGgiLCJhdXRvRm9jdXMiLCJpbnB1dFByb3BzIiwiZW5kQWRvcm5tZW50Iiwic3R5bGVzIiwiaW5wdXRBZG9ybm1lbnRJY29uIiwib25DaGFuZ2UiLCJmb250V2VpZ2h0IiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvY2hhdC9DaGF0Um9vbS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0F2YXRhciwgSWNvbkJ1dHRvbn0gZnJvbSAnQG11aS9tYXRlcmlhbCc7XG5pbXBvcnQgU2VuZEljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9TZW5kJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtdWkvbWF0ZXJpYWwvVG9vbHRpcCc7XG5pbXBvcnQge3VzZU5hdmlnYXRlfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCAnLi9DaGF0Um9vbXMuc2Nzcyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgSW5wdXRBZG9ybm1lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9JbnB1dEFkb3JubWVudCc7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vU3R5bGVzJztcbmltcG9ydCBDdXN0b21JbnB1dCBmcm9tICcuLi8uLi9jdXN0b21JbnB1dC9DdXN0b21JbnB1dCc7XG5pbXBvcnQgTG90dGllSWNvbiBmcm9tICcuLi8uLi9Mb3R0aWVJY29uJztcbmltcG9ydCB7SW5mb30gZnJvbSAncmVhY3QtZmVhdGhlcic7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vLi4vVXRpbHMnO1xuaW1wb3J0IHtWQ0V2ZW50VHlwZX0gZnJvbSBcIi4uL1ZDRXZlbnRUeXBlXCI7XG5pbXBvcnQgTGlua2lmeSBmcm9tIFwibGlua2lmeS1yZWFjdFwiO1xuaW1wb3J0IEZpbGUgZnJvbSBcIi4uLy4uL2N1c3RvbUlucHV0L0ZpbGVcIjtcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uLy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtwb3N0RGF0YSwgc2VuZFJlcXVlc3R9IGZyb20gXCIuLi8uLi8uLi9SZXN0VXRpbHNcIjtcbmltcG9ydCB7ZG93bmxvYWREb2N1bWVudH0gZnJvbSBcIi4uLy4uLy4uL2RvY3VtZW50RG93bmxvYWRcIjtcbmltcG9ydCBBdXRoSW1hZ2UgZnJvbSBcIi4uLy4uLy4uL0F1dGhJbWFnZVwiO1xuaW1wb3J0IHBkZkljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy9wZGYtaWNvbi5wbmcnXG5pbXBvcnQgZG9jSWNvbiBmcm9tICcuLi8uLi8uLi9hc3NldHMvaW1nL2RvYy5wbmcnXG5pbXBvcnQgd29yZEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy93b3JkLnBuZydcbmltcG9ydCB4c2xJY29uIGZyb20gJy4uLy4uLy4uL2Fzc2V0cy9pbWcvZXhjZWwucG5nJ1xuaW1wb3J0IHBocEljb24gZnJvbSAnLi4vLi4vLi4vYXNzZXRzL2ltZy9leGNlbC5wbmcnXG5pbXBvcnQgdmNFdmVudE1hbmFnZXIgZnJvbSBcIi4uL1ZDRXZlbnRNYW5hZ2VyXCI7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tIFwiLi4vLi4vU29ja2V0TWFuYWdlclwiO1xuaW1wb3J0IEljb24gZnJvbSBcIi4uLy4uL0ljb25cIjtcbmltcG9ydCBDaGF0UG9sbCBmcm9tIFwiLi9DaGF0UG9sbFwiO1xuaW1wb3J0IFBvbGxDb250YWluZXIgZnJvbSBcIi4vUG9sbENvbnRhaW5lclwiO1xuaW1wb3J0IHtQb2xsfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuXG5leHBvcnQgY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuXG5jb25zdCBDaGF0Um9vbSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcblxuICAgIGNvbnN0IFtyZWZyZXNoZXIsIHNldFJlZnJlc2hlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gdXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFtzZWxlY3RlZENoYXQsIHNldFNlbGVjdGVkQ2hhdF0gPSB1c2VTdGF0ZShwcm9wcy5zZWxlY3RlZENoYXQpO1xuICAgIGNvbnN0IFtkb2N1bWVudHMsIHNldERvY3VtZW50c10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbbmV3UGFydGljaXBhbnRzLCBzZXROZXdQYXJ0aWNpcGFudHNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtjb25maXJtLCBzZXRJbWdVcGxvYWRDb25maXJtXSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBtZXNzYWdlc0VuZFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbbW9kZSwgc2V0TW9kZV0gPSB1c2VTdGF0ZSgnQ0hBVCcpO1xuICAgIGNvbnN0IFtjbGVhclVwbG9hZGVkRmlsZVN3aXRjaCwgc2V0Q2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2hdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtzb2NrZXRFdmVudEhhbmRsZXJdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtjdXJyZW50VXNlcl0gPSB1c2VTdGF0ZShhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKSk7XG5cbiAgICBjb25zdCBzb2NrZXRFdmVudEhhbmRsZXJBcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjaGF0LXJvb20tMTIyOTkxODI5JztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbjogKGV2ZW50VHlwZSwgYmUpID0+IHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkNIQVRfTUVTU0FHRTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVzc2FnZShiZS5wYXlsb2FkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFZDRXZlbnRUeXBlLkRFTEVURV9DSEFUX01FU1NBR0U6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZU1lc3NhZ2UoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN5c3RlbUV2ZW50KGJlLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGZldGNoQ2hhdCA9ICgpID0+IHtcbiAgICAgICAgbGV0IHVybCA9IHNlbGVjdGVkQ2hhdC5tZWV0aW5nS2V5ID9cbiAgICAgICAgICAgIGAke2xvY2F0aW9uICsgJy8nICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCl9L2NhbGVuZGFyL2FwaS92MS9jaGF0L2ZldGNoTWVldGluZ0NoYXRCeUtleS8ke3NlbGVjdGVkQ2hhdC5tZWV0aW5nS2V5fWBcbiAgICAgICAgICAgIDogc2VsZWN0ZWRDaGF0Lm1lZXRpbmdJZCA/XG4gICAgICAgICAgICBgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9mZXRjaE1lZXRpbmdDaGF0LyR7c2VsZWN0ZWRDaGF0Lm1lZXRpbmdJZH1gXG4gICAgICAgICAgICA6XG4gICAgICAgICAgICBgJHtsb2NhdGlvbiArICcvJyArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpfS9jYWxlbmRhci9hcGkvdjEvY2hhdC9mZXRjaC8ke3NlbGVjdGVkQ2hhdC5pZH1gO1xuICAgICAgICBzZW5kUmVxdWVzdCh1cmwsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlkKSB7XG4gICAgICAgICAgICAgICAgLy8gUHJlc2VydmUgbWVldGluZ0tleSBzbyBzdWJzZXF1ZW50IHJlZnJlc2hlcyBzdGF5IG9uIHRoZSBieS1rZXkgbG9va3VwLlxuICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ2hhdCh7Li4ucmVzcG9uc2UsIG1lZXRpbmdLZXk6IHNlbGVjdGVkQ2hhdC5tZWV0aW5nS2V5fSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIChlKSA9PiB7XG5cbiAgICAgICAgfSwgdHJ1ZSwgZmFsc2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBjbG9zZVBvbGxIYW5kbGVyID0gKGUsIHBvbGwpID0+IHtcbiAgICAgICAgcG9zdERhdGEoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL3BvbGwvY2xvc2VgLFxuICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoZSwgYFBvbGw6ICR7cG9sbC5xdWVzdGlvbn0gaGFzIGJlZW4gY2xvc2VkLmApO1xuICAgICAgICAgICAgICAgIGZldGNoQ2hhdCgpO1xuICAgICAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICAgICAgfSwgdHJ1ZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogcG9sbC5pZFxuICAgICAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHN1Ym1pdFBvbGxWb3RlSGFuZGxlciA9IChwb2xsLCBpc1RpZUJyZWFrZXIgPSBmYWxzZSkgPT4ge1xuICAgICAgICBsZXQgY2hhdFBhcnRpY2lwYW50ID0gc2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5maW5kKHAgPT4gcC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICBwb2xsSWQ6IHBvbGwuaWQsXG4gICAgICAgICAgICBvcHRpb25JZDogaXNUaWVCcmVha2VyID8gcG9sbC50aWVCcmVha2VyT3B0aW9uIDogcG9sbC5zZWxlY3RlZE9wdGlvbixcbiAgICAgICAgICAgIGNoYXRQYXJ0aWNpcGFudDogY2hhdFBhcnRpY2lwYW50LFxuICAgICAgICAgICAgdGllQnJlYWtlcjogaXNUaWVCcmVha2VyXG4gICAgICAgIH07XG5cbiAgICAgICAgcG9zdERhdGEoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL3BvbGwvdm90ZWAsXG4gICAgICAgICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBmZXRjaENoYXQoKTtcbiAgICAgICAgICAgIH0sIChlKSA9PiB7XG5cbiAgICAgICAgICAgIH0sIHRydWUsIGRhdGEpO1xuICAgIH07XG5cbiAgICBjb25zdCBvblN5c3RlbUV2ZW50ID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQuc3lzdGVtRXZlbnRUeXBlID09PSBcIk5FV19QT0xMX1ZPVEVcIikge1xuICAgICAgICAgICAgbGV0IGZpbmQgPSBtZXNzYWdlcy5maW5kKChtc2cpID0+IG1zZy5wb2xsICYmIG1zZy5wb2xsLmlkID09PSBwYXlsb2FkLmRhdGEucG9sbElkKTtcbiAgICAgICAgICAgIGlmIChmaW5kKSB7XG4gICAgICAgICAgICAgICAgLy9maW5kLnRvdGFsVm90ZXMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbk1lc3NhZ2UgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRDaGF0ICYmIHNlbGVjdGVkQ2hhdC5pZCA9PT0gcGF5bG9hZC5yb29tSWQpIHtcbiAgICAgICAgICAgIGlmIChwcm9wcy5vbk1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBwcm9wcy5vbk1lc3NhZ2UocGF5bG9hZC5jaGF0TWVzc2FnZSwgc2VsZWN0ZWRDaGF0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBheWxvYWQuY2hhdE1lc3NhZ2UudHlwZSA9PT0gJ0VWRU5UJykge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jaGF0VGFiKSB7XG4gICAgICAgICAgICAgICAgICAgIGZldGNoQ2hhdCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmFkZGVkUGVvcGxlSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzLnB1c2gocGF5bG9hZC5jaGF0TWVzc2FnZSk7XG4gICAgICAgICAgICBsb2FkTWVzc2FnZXMoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbkRlbGV0ZU1lc3NhZ2UgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk1FU1NBR0VTIDogXCIsIG1lc3NhZ2VzKTtcbiAgICAgICAgbGV0IG1zZyA9IG1lc3NhZ2VzLmZpbmQoKG0pID0+IG0uaWQgPT09IHBheWxvYWQubWVzc2FnZUlkKTtcbiAgICAgICAgY29uc29sZS5sb2cobXNnKTtcbiAgICAgICAgaWYgKG1zZykge1xuICAgICAgICAgICAgbXNnLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgc2V0UmVmcmVzaGVyKCFyZWZyZXNoZXIpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIC8vIERvd25sb2FkIGEgY2hhdCBhdHRhY2htZW50IHRvIHRoZSBkZXZpY2UgKG5vIG5ldyB0YWIpLiBBdXRoICsgdGVuYW50IHRyYXZlbCBpbiBoZWFkZXJzIHZpYSB0aGVcbiAgICAvLyBzaGFyZWQgaGVscGVyLCBzbyB0b2tlbnMgbm8gbG9uZ2VyIGxlYWsgaW50byB0aGUgVVJML3F1ZXJ5IHN0cmluZy5cbiAgICBjb25zdCBvbkRvd25sb2FkID0gKGZpbGVOYW1lLCByZXBvc2l0b3J5SWQpID0+IHtcbiAgICAgICAgZG93bmxvYWREb2N1bWVudChyZXBvc2l0b3J5SWQsIGZpbGVOYW1lKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbG9hZE1lc3NhZ2VzID0gKCkgPT4ge1xuICAgICAgICBzY3JvbGxUb0JvdHRvbSgpO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKFwiXFxuXFxuXFxuXFxuTUVTU0FHRVMgOiBcIiwgc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkQ2hhdCkge1xuICAgICAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbXS5jb25jYXQoc2VsZWN0ZWRDaGF0Lm1lc3NhZ2VzKTtcbiAgICAgICAgICAgIGlmICghcHJvcHMuc2hvd0FsbE1lc3NhZ2VzRm9yTmV3UGFydGljaXBhbnRzKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbmQgPSBzZWxlY3RlZENoYXQucGFydGljaXBhbnRzLmZpbmQocCA9PiBwLnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUFkZGVkVG9DaGF0ID0gZmluZCA/IGZpbmQuZGF0ZUFkZGVkVG9DaGF0IDogbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZE1lc3NhZ2VzID0gbmV3TWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcih0eHQgPT4gZGF0ZUFkZGVkVG9DaGF0ID09PSBudWxsIHx8IG5ldyBEYXRlKGRhdGVBZGRlZFRvQ2hhdCkgPCBuZXcgRGF0ZSh0eHQuY3JlYXRlZERhdGUpKTtcbiAgICAgICAgICAgICAgICBzZXRNZXNzYWdlcyhmaWx0ZXJlZE1lc3NhZ2VzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0TWVzc2FnZXMobmV3TWVzc2FnZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGdldENoYXRSb29tVGl0bGUgPSAoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZENoYXQudHlwZSA9PT0gJ0NBTEVOREFSX01FRVRJTkcnIHx8IHNlbGVjdGVkQ2hhdC50aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ2hhdC50aXRsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0U2VsZWN0ZWRDaGF0KHByb3BzLnNlbGVjdGVkQ2hhdCk7XG4gICAgfSwgW3Byb3BzLnNlbGVjdGVkQ2hhdF0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICB9LCBbbWVzc2FnZXNdKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZENoYXQgJiYgY3VycmVudFVzZXIpIHtcbiAgICAgICAgICAgIHNldE1lc3NhZ2UoJycpO1xuICAgICAgICAgICAgc2V0RG9jdW1lbnRzKG51bGwpO1xuXG4gICAgICAgICAgICBsZXQgZmluZCA9IHNlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMuZmluZChwID0+IHAudXNlcklkID09PSBjdXJyZW50VXNlci51c2VybmFtZSB8fCBwLnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSk7XG4gICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGZpbmQpKSB7XG4gICAgICAgICAgICAgICAgcG9zdERhdGEoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL2NoYXQvYWRkUGFydGljaXBhbnRzYCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIH0sIChlKSA9PiB7XG5cbiAgICAgICAgICAgICAgICB9LCB0cnVlLCB7XG4gICAgICAgICAgICAgICAgICAgIGNoYXRJZDogc2VsZWN0ZWRDaGF0LmlkLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM6IFtjdXJyZW50VXNlcl1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbG9hZE1lc3NhZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9LCBbc2VsZWN0ZWRDaGF0LCBjdXJyZW50VXNlcl0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgc29ja2V0RXZlbnRIYW5kbGVyLmFwaSA9IHNvY2tldEV2ZW50SGFuZGxlckFwaSgpO1xuICAgIH0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmNFdmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhzb2NrZXRFdmVudEhhbmRsZXIsIFZDRXZlbnRUeXBlLkRFTEVURV9DSEFUX01FU1NBR0UsIFZDRXZlbnRUeXBlLkNIQVRfTUVTU0FHRSwgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5UKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHZjRXZlbnRNYW5hZ2VyLnJlbW92ZVN1YnNjcmlwdGlvbnMoc29ja2V0RXZlbnRIYW5kbGVyKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBzY3JvbGxUb0JvdHRvbSA9ICgpID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzRW5kUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIG1lc3NhZ2VzRW5kUmVmLmN1cnJlbnQuc2Nyb2xsKHt0b3A6IG1lc3NhZ2VzRW5kUmVmLmN1cnJlbnQuc2Nyb2xsSGVpZ2h0LCBiZWhhdmlvcjogJ3Ntb290aCd9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZSkgPT4ge1xuICAgICAgICBzZXRNZXNzYWdlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcGFydGljaXBhbnRzVXNlcklkcyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ2hhdFxuICAgICAgICAgICAgLnBhcnRpY2lwYW50c1xuICAgICAgICAgICAgLmZpbHRlcih1c2VyID0+IHVzZXIudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKVxuICAgICAgICAgICAgLm1hcCh1c2VyID0+IHVzZXIudXNlcm5hbWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBzZW5kTWVzc2FnZSA9IChlLCBmaW5hbE1lc3NhZ2UgPSBudWxsLCBwb2xsID0gbnVsbCkgPT4ge1xuICAgICAgICBpZiAoZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lc3NhZ2UgfHwgZG9jdW1lbnRzIHx8IGZpbmFsTWVzc2FnZSB8fCBwb2xsKSB7XG5cbiAgICAgICAgICAgIGxldCBtVHlwZSA9ICdURVhUJztcblxuICAgICAgICAgICAgaWYgKGRvY3VtZW50cyAmJiBkb2N1bWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxldCBjb21iaW5lZFNpemUgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZG9jIG9mIGRvY3VtZW50cykge1xuICAgICAgICAgICAgICAgICAgICBjb21iaW5lZFNpemUgPSBjb21iaW5lZFNpemUgKyBwYXJzZUludChkb2Muc2l6ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGNvbWJpbmVkU2l6ZSA+IDc1MDAwMDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLmFsZXJ0KGFwcGxpY2F0aW9uTWFuYWdlci5nZXRUb3BWaWV3KCkuaWQsIFN5c3RlbUV2ZW50VHlwZS5BUElfRVJST1IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdBdHRhY2htZW50IHNob3VsZCBiZSBub3QgbW9yZSB0aGFuIDcuNU1CLidcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG1UeXBlID0gJ0ZJTEUnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwb2xsKSB7XG4gICAgICAgICAgICAgICAgbVR5cGUgPSAnUE9MTCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZpbmFsTWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIG1UeXBlID0gJ0VWRU5UJ1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtc2cgPSB7XG4gICAgICAgICAgICAgICAgY3JlYXRlZERhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgdHlwZTogbVR5cGUsXG4gICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZpbmFsTWVzc2FnZSA/IGZpbmFsTWVzc2FnZSA6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnQ6IGN1cnJlbnRVc2VyXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnRzICYmIGRvY3VtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbXNnLmRvY3VtZW50cyA9IGRvY3VtZW50cztcbiAgICAgICAgICAgICAgICBzZXRDbGVhclVwbG9hZGVkRmlsZVN3aXRjaCghY2xlYXJVcGxvYWRlZEZpbGVTd2l0Y2gpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocG9sbCkge1xuICAgICAgICAgICAgICAgIG1zZy5wb2xsID0gcG9sbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbXNnLnBhcnRpY2lwYW50LmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzID0gcGFydGljaXBhbnRzVXNlcklkcygpO1xuICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCB7XG4gICAgICAgICAgICAgICAgcm9vbUlkOiBzZWxlY3RlZENoYXQuaWQsXG4gICAgICAgICAgICAgICAgY2hhdE1lc3NhZ2U6IG1zZyxcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHNUb1NpZ25hbElkcyxcbiAgICAgICAgICAgICAgICBza2lwQWxlcnQ6IHByb3BzLmNoYXRUYWIgfHwgZmluYWxNZXNzYWdlLFxuICAgICAgICAgICAgICAgIG5ld0NoYXQ6IHNlbGVjdGVkQ2hhdC5tZXNzYWdlcy5sZW5ndGggPT09IDAsXG4gICAgICAgICAgICAgICAgbWVldGluZ0lkOiBwcm9wcy5tZWV0aW5nSWQgPyBwcm9wcy5tZWV0aW5nSWQgOiBudWxsLFxuICAgICAgICAgICAgICAgIHByb2ZpbGU6IChhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QWN0aXZlVGVuYW50KCkgfHwgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkucHJvZmlsZSlcbiAgICAgICAgICAgIH0pLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBtc2cuaWQgPSBkYXRhLmlkO1xuICAgICAgICAgICAgICAgIHNldE1lc3NhZ2VzKG9sZE1zZ3MgPT4gWy4uLm9sZE1zZ3MsIG1zZ10pO1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hhdC5tZXNzYWdlcy5wdXNoKG1zZyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvcHMub25NZXNzYWdlICYmIHNlbGVjdGVkQ2hhdCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5vbk1lc3NhZ2UobXNnLCBzZWxlY3RlZENoYXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRXJyb3Igc2VuZGluZyBjaGF0IG1lc3NhZ2UgOiBcIiwgZXJyb3IpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzZXRNZXNzYWdlKCcnKTtcbiAgICAgICAgc2V0SW1nVXBsb2FkQ29uZmlybSgnJyk7XG4gICAgICAgIHNldERvY3VtZW50cyhudWxsKVxuICAgIH07XG5cbiAgICBjb25zdCBvcGVuQWRkUGVvcGxlRGlhbG9nID0gKGUpID0+IHtcbiAgICAgICAgc2V0T3BlbkFkZFBlb3BsZSh0cnVlKVxuICAgIH07XG5cbiAgICBjb25zdCByZW5kZXJGaWxlVGh1bWJuYWlsID0gKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgY29uc3Qge2RvY3VtZW50c30gPSBtZXNzYWdlO1xuICAgICAgICBjb25zdCB0aHVtYm5haWxzID0gW107XG5cbiAgICAgICAgZG9jdW1lbnRzLmZvckVhY2goKGRvYywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChkb2MudHlwZS5pbmNsdWRlcygnaW1hZ2UnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgIHRodW1ibmFpbHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fSBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF1dGhJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlJZD17ZG9jLnJlcG9zaXRvcnlJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrU3JjPXtkb2MucGF5bG9hZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93IG5vLW1hcmdpbiBuby1wYWRkaW5nJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgZG9jLnJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Zm9udFNpemU6ICcxNHB4JywgbWFyZ2luVG9wOiAnMTRweCd9fT57ZG9jLm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZG9jLnR5cGUuaW5jbHVkZXMoJ3BkZicpKSB7XG4gICAgICAgICAgICAgICAgdGh1bWJuYWlscy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cGRmSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgZG9jLnJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygnZG9jJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtkb2NJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBkb2MucmVwb3NpdG9yeUlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydET1dOTE9BRCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvYy50eXBlLmluY2x1ZGVzKCd3b3JkJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt3b3JkSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMjUwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PVwic3BhblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgZG9jLnJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tmb250U2l6ZTogJzE0cHgnLCBtYXJnaW5Ub3A6ICcxNHB4J319Pntkb2MubmFtZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSBlbHNlIGlmIChkb2MudHlwZS5pbmNsdWRlcygneGxzJykpIHtcbiAgICAgICAgICAgICAgICB0aHVtYm5haWxzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gc3R5bGU9e3tib3JkZXJCb3R0b206ICc1cHggc29saWQgYmxhY2snfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXt4c2xJY29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e3dpZHRoOiAyNTAsIGhlaWdodDogJ2F1dG8nfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSAhPT0gY3VycmVudFVzZXIudXNlcm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRG93bmxvYWQoZG9jdW1lbnRzW2luZGV4XS5uYW1lLCBkb2MucmVwb3NpdG9yeUlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydET1dOTE9BRCd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRodW1ibmFpbHMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tib3JkZXJCb3R0b206ICcwLjdweCBzb2xpZCBibGFjaycsIHBhZGRpbmdCb3R0b206ICc4cHgnLCBib3JkZXJXaWR0aDogJzUwJSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17cGhwSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t3aWR0aDogMTAwLCBoZWlnaHQ6ICdhdXRvJ319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7bWFyZ2luVG9wOiAnNHB4J319Pntkb2N1bWVudHNbaW5kZXhdLm5hbWV9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRvd25sb2FkKGRvY3VtZW50c1tpbmRleF0ubmFtZSwgZG9jLnJlcG9zaXRvcnlJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnRE9XTkxPQUQnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2ZvbnRTaXplOiAnMTRweCcsIG1hcmdpblRvcDogJzE0cHgnfX0+e2RvYy5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRodW1ibmFpbHM7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlbmRlckxpbmsgPSAoe2F0dHJpYnV0ZXMsIGNvbnRlbnR9KSA9PiB7XG4gICAgICAgIGNvbnN0IHtocmVmfSA9IGF0dHJpYnV0ZXM7XG4gICAgICAgIHJldHVybiA8YVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGhyZWYpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgIDwvYT47XG4gICAgfTtcblxuICAgIGNvbnN0IGRlbGV0ZUNoYXRNZXNzYWdlID0gKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgY29uc3QgcGFydGljaXBhbnRzVG9TaWduYWxJZHMgPSBwYXJ0aWNpcGFudHNVc2VySWRzKCk7XG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLkRFTEVURV9DSEFUX01FU1NBR0UsIHtcbiAgICAgICAgICAgIG1lc3NhZ2VJZDogbWVzc2FnZS5pZCxcbiAgICAgICAgICAgIHBhcnRpY2lwYW50c1RvU2lnbmFsSWRzLFxuICAgICAgICAgICAgcHJvZmlsZTogKGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBY3RpdmVUZW5hbnQoKSB8fCBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5wcm9maWxlKSxcbiAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICB1c2VybmFtZTogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWVcbiAgICAgICAgfSkudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgbWVzc2FnZS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFJlZnJlc2hlcighcmVmcmVzaGVyKTtcbiAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbmRlck1lc3NhZ2UgPSAobWVzc2FnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFtZXNzYWdlLmFjdGl2ZSkge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPXsnY2hhdHJvb21fX21lc3NhZ2Ugcm93IG5vLW1hcmdpbid9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXttZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lID09PSBjdXJyZW50VXNlci51c2VybmFtZSA/IFwibXljaGF0LWRlbGV0ZWRcIiA6IFwicGVlcmNoYXRcIn0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgIT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7cGFkZGluZ1JpZ2h0OiAnMTJweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXZhdGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7VXRpbHMuZ2V0SW5pdGlhbHMobWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0F2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBudWxsIDogXCIxcHggc29saWQgIzUyNWY3ZlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBudWxsIDogXCIxNnB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogbWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUgPyBudWxsIDogXCIwIDhweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ30gc3R5bGU9e3tmb250U3R5bGU6ICdpdGFsaWMnfX0+ZGVsZXRlZDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobWVzc2FnZS50eXBlID09PSAnRklMRScpIHtcbiAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5wYXJ0aWNpcGFudC51c2VybmFtZSA9PT0gY3VycmVudFVzZXIudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpbmRleH0gY2xhc3NOYW1lPVwiY2hhdHJvb21fX21lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm15Y2hhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7bWFyZ2luOiAnNHB4IDAgMCAwJ319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wgY2hhdC10aW1lJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21vbWVudChtZXNzYWdlLmNyZWF0ZWREYXRlKS5mb3JtYXQoJ0REL01NLCBISDptbScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmRpc2FibGVNZXNzYWdlRGVsZXRlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudD1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUNoYXRNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydERUxFVEUnfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZpbGVUaHVtYm5haWwobWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e2luZGV4fT57bWVzc2FnZS5jb250ZW50fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBlZXJjaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKG1lc3NhZ2UucGFydGljaXBhbnQubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnttZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bW9tZW50KG1lc3NhZ2UuY3JlYXRlZERhdGUpLmZvcm1hdCgnREQvTU0sIEhIOm1tJyl9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZpbGVUaHVtYm5haWwobWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17aW5kZXh9PnttZXNzYWdlLmNvbnRlbnR9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ1RFWFQnKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UucGFydGljaXBhbnQudXNlcm5hbWUgPT09IGN1cnJlbnRVc2VyLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteWNoYXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpbjogJzRweCAwIDAgMCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIGNoYXQtdGltZSd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttb21lbnQobWVzc2FnZS5jcmVhdGVkRGF0ZSkuZm9ybWF0KCdERC9NTSwgSEg6bW0nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwcm9wcy5kaXNhYmxlTWVzc2FnZURlbGV0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQ9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDaGF0TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uIGlkPXsnREVMRVRFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua2lmeSBrZXk9e2luZGV4fSBvcHRpb25zPXt7cmVuZGVyOiByZW5kZXJMaW5rfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7bWFyZ2luOiAnMCA4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21lc3NhZ2UuY29udGVudC5zcGxpdCgnXFxuJykubWFwKCh0b2tlbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudCBrZXk9e2luZGV4fT57dG9rZW59PGJyLz48L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlua2lmeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IGNsYXNzTmFtZT1cImNoYXRyb29tX19tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBlZXJjaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1V0aWxzLmdldEluaXRpYWxzKG1lc3NhZ2UucGFydGljaXBhbnQubmFtZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwZWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnttZXNzYWdlLnBhcnRpY2lwYW50Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57bW9tZW50KG1lc3NhZ2UuY3JlYXRlZERhdGUpLmZvcm1hdCgnREQvTU0sIEhIOm1tJyl9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlua2lmeSBrZXk9e2luZGV4fSBvcHRpb25zPXt7cmVuZGVyOiByZW5kZXJMaW5rfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGtleT17aW5kZXh9IHN0eWxlPXt7bWFyZ2luOiAnMCAwIDRweCA0cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge21lc3NhZ2UuY29udGVudC5zcGxpdCgnXFxuJykubWFwKCh0b2tlbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudCBrZXk9e2luZGV4fT57dG9rZW59PGJyLz48L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlua2lmeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlLnR5cGUgPT09ICdFVkVOVCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImN2LXBvbGwtY2hvaWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiY3YtcG9sbC1jaG9pY2UtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImN2LWNob2ljZS1wZXJjZW50YWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxJbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzZWxlY3RlZC1jaG9pY2UtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImN2LWNob2ljZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHttZXNzYWdlLmNvbnRlbnR9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17J2N2LWNob2ljZS1wZXJjZW50LWNoYXJ0IGV2ZW50J30gc3R5bGU9e3t3aWR0aDogJzEwMCUnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPFBvbGxDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgcG9sbD17bWVzc2FnZS5wb2xsfVxuICAgICAgICAgICAgICAgICAgICBjaGF0VGFiPXtwcm9wcy5jaGF0VGFifVxuICAgICAgICAgICAgICAgICAgICBpc0hvc3Q9e3Byb3BzLmlzSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgaXNDaGFpclBlcnNvbj17cHJvcHMuaXNDaGFpclBlcnNvbn1cbiAgICAgICAgICAgICAgICAgICAgcG9sbENyZWF0b3I9e21lc3NhZ2UucGFydGljaXBhbnR9XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZWREYXRlPXttZXNzYWdlLmNyZWF0ZWREYXRlfVxuICAgICAgICAgICAgICAgICAgICBzdWJtaXRQb2xsVm90ZUhhbmRsZXI9eyhwb2xsLCBpc1RpZUJyZWFrZXIpID0+IHN1Ym1pdFBvbGxWb3RlSGFuZGxlcihwb2xsLCBpc1RpZUJyZWFrZXIpfVxuICAgICAgICAgICAgICAgICAgICBwb2xsUGFydGljaXBhbnRJRHM9e3NlbGVjdGVkQ2hhdC5wYXJ0aWNpcGFudHMubWFwKHAgPT4gcC51c2VybmFtZSl9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVc2VyPXtjdXJyZW50VXNlcn1cbiAgICAgICAgICAgICAgICAgICAgY2xvc2VQb2xsSGFuZGxlcj17KGUsIHBvbGwpID0+IGNsb3NlUG9sbEhhbmRsZXIoZSwgcG9sbCl9XG4gICAgICAgICAgICAgICAgICAgIG51bWJlck9mUG9sbFBhcnRpY2lwYW50cz17c2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50cy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQb2xsSGFuZGxlcj17KCkgPT4gZmV0Y2hDaGF0KCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoc2VsZWN0ZWRDaGF0ICYmIG1lc3NhZ2VzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNoYXRyb29tXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjaGF0cm9vbV9faGVhZGVyXCIgc3R5bGU9e1V0aWxzLm1lcmdlT2JqZWN0cyh7fSwgcHJvcHMuaGVhZGVyU3R5bGUpfT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmNoYXRUYWIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY2hhdHJvb21fX2hlYWRlcnJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9XCJQb2xsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldE1vZGUoJ1BPTEwnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb2xsIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBwcm9wcy5jaGF0VGFiID8gJ3JlZCcgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IHByb3BzLmNoYXRUYWIgPyAnOHB4JyA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdQT0xMJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hhdFBvbGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0VGFiPXtwcm9wcy5jaGF0VGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17c2VsZWN0ZWRDaGF0LnBhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVQb2xsSGFuZGxlcj17KHBvbGxEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKG51bGwsIG51bGwsIHBvbGxEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZSgnQ0hBVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsUG9sbEhhbmRsZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TW9kZSgnQ0hBVCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAvPiA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8PjwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG1vZGUgPT09ICdDSEFUJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwibWVzc2FnZXNcIiByZWY9e21lc3NhZ2VzRW5kUmVmfSBjbGFzc05hbWU9XCJjaGF0cm9vbV9fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKG0pID0+ICFwcm9wcy5wb2xsc09ubHkgfHwgbS5wb2xsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IG5ldyBEYXRlKGEuY3JlYXRlZERhdGUpIC0gbmV3IERhdGUoYi5jcmVhdGVkRGF0ZSkpPy5tYXAocmVuZGVyTWVzc2FnZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+PC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbW9kZSA9PT0gJ0NIQVQnICYmICFwcm9wcy5yZWFkT25seSAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3NOYW1lPVwiY2hhdHJvb21fX3NlbmRNZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtZXNzYWdlX19pbWFnZVNlbGVjdG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY2hhdC1pbnB1dCd9IHN0eWxlPXt7cG9zaXRpb246ICdyZWxhdGl2ZSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb3BzLmRpc2FibGVGaWxlQXR0YWNobWVudCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e1wiZmlsZS11cGxvYWQgY2hhdHMtZmlsZS11cGxvYWRcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3t6SW5kZXg6ICFVdGlscy5pc051bGwoZG9jdW1lbnRzKSA/IDEgOiAwfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlRmlsZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXsnZG9jdW1lbnRzJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNvbG9yPXtwcm9wcy5jaGF0VGFiID8gJ3doaXRlJyA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtkb2N1bWVudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVXBsb2FkZWRGaWxlU3dpdGNoPXtjbGVhclVwbG9hZGVkRmlsZVN3aXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VIYW5kbGVyPXsodmFsdWUsIGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREb2N1bWVudHModmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q3VzdG9tSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgekluZGV4OiAhVXRpbHMuaXNOdWxsKGRvY3VtZW50cykgPyAwIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogcHJvcHMuY2hhdFRhYiA/ICd3aGl0ZScgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0PXtkb2N1bWVudHMgPyBcIlwiIDogXCJUeXBlIGEgbmV3IG1lc3NhZ2VcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshVXRpbHMuaXNOdWxsKGRvY3VtZW50cyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xQcm9wcz17e2Z1bGxXaWR0aDogdHJ1ZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17cHJvcHMuY2hhdFRhYiA/ICd3aGl0ZScgOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQWRvcm5tZW50OiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnB1dEFkb3JubWVudCBwb3NpdGlvbj1cImVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17c3R5bGVzLmlucHV0QWRvcm5tZW50SWNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZW5kSWNvbiBzdHlsZT17e2ZvbnRTaXplOiAnMjRweCd9fS8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSW5wdXRBZG9ybm1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCFsb2FkaW5nICYmIHNlbGVjdGVkQ2hhdCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjZW50ZXJlZC1mbGV4LWJveCd9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZW1wdHljaGF0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J30gc3R5bGU9e3tmb250U2l6ZTogJzIwcHgnLCBmb250V2VpZ2h0OiAnYm9sZCd9fT5Zb3UncmUgc3RhcnRpbmcgYVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3XG4gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJzYXRpb248L3A+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J30gc3R5bGU9e3tmb250U2l6ZTogJzE2cHgnfX0+VHlwZSB5b3VyIGZpcnN0IG1lc3NhZ2UgYmVsb3c8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxMb3R0aWVJY29uIGlkPXsnY2hhdCd9Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoYXRSb29tO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxRQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSyxlQUFBLEdBQUFMLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFNLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFPLGVBQUEsR0FBQUosc0JBQUEsQ0FB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
|