@agilemotion/oui-react-js 2.0.15 → 2.0.17
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/README.TXT +2 -2
- package/dist/components/Calender.css +1 -1
- package/dist/components/TableCellContent.js +8 -18
- package/dist/components/dashboard/FoldingSideTabDashboard.css +1 -1
- package/dist/components/dashboard/FoldingSideTabDashboard.js +10 -7
- package/dist/components/form/LookupField.js +27 -3
- package/dist/components/layout/Layout.js +15 -3
- package/dist/components/layout/ViewPort.js +2 -2
- package/dist/components/layout/Window.css +4 -1
- package/dist/components/layout/Window.js +147 -29
- package/dist/components/layout/WindowDialog.js +8 -5
- package/dist/components/layout/WindowViewPort.js +8 -2
- package/dist/components/media/Chat.js +4 -2
- package/dist/components/media/ClosablePanel.js +55 -27
- package/dist/components/media/MediaSoupHelper.js +13 -1
- package/dist/components/media/SideBarContent.js +22 -8
- package/dist/components/media/TrainingRoom.js +32 -5
- package/dist/components/media/VCEventType.js +3 -1
- package/dist/components/media/VCParticipantList.js +53 -27
- package/dist/components/media/VCRoom.css +22 -0
- package/dist/components/media/VCRoom.js +34 -15
- package/dist/components/media/VCRoomParticipant.css +3 -2
- package/dist/components/media/VCRoomParticipant.js +140 -48
- package/dist/components/media/VCRoomRecorder.js +117 -40
- package/dist/components/media/VCRoomWorkspace.css +0 -1
- package/dist/components/media/VCRoomWorkspace.js +158 -23
- package/dist/components/media/VCSettings.js +462 -0
- package/dist/components/media/VideoPlayer.js +4 -1
- package/dist/components/media/audioLevelMeter.js +96 -0
- package/dist/components/media/chat/ChatRoom.js +13 -9
- package/dist/components/media/chat/ChatRoomItem.js +3 -2
- package/dist/components/media/chat/ChatRoomWrapper.js +4 -1
- package/dist/components/media/chat/ChatRooms.scss +5 -3
- package/dist/hooks/useContainerWidth.js +44 -0
- package/dist/view/security/RegisterInteractionPortal.js +101 -3
- package/package.json +1 -1
|
@@ -18,6 +18,7 @@ var _VCEventManager = _interopRequireDefault(require("./VCEventManager"));
|
|
|
18
18
|
var _SocketManager = _interopRequireDefault(require("../SocketManager"));
|
|
19
19
|
var _ClosablePanel = _interopRequireDefault(require("./ClosablePanel"));
|
|
20
20
|
var _SideBarContent = _interopRequireDefault(require("./SideBarContent"));
|
|
21
|
+
var _useContainerWidth = _interopRequireDefault(require("../../hooks/useContainerWidth"));
|
|
21
22
|
var _VCRoomRecorder = _interopRequireDefault(require("./VCRoomRecorder"));
|
|
22
23
|
var _RestUtils = require("../../RestUtils");
|
|
23
24
|
var _Media = _interopRequireDefault(require("../../js/Media"));
|
|
@@ -56,6 +57,8 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
56
57
|
const [autoPermit, setAutoPermit] = (0, _react.useState)(!props.calendarEvent.askToJoin);
|
|
57
58
|
const [rtpCapabilities, setRtpCapabilities] = (0, _react.useState)(null);
|
|
58
59
|
const [activityMessage, setActivityMessage] = (0, _react.useState)(null);
|
|
60
|
+
// Persistent, actionable error banner (e.g. media reconnection gave up).
|
|
61
|
+
const [reconnectError, setReconnectError] = (0, _react.useState)(null);
|
|
59
62
|
const [onloadScreenShareData, setOnloadScreenShareData] = (0, _react.useState)(null);
|
|
60
63
|
const [chatMessage, setChatMessage] = (0, _react.useState)(null);
|
|
61
64
|
const [chatSender, setChatSender] = (0, _react.useState)(null);
|
|
@@ -68,6 +71,12 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
68
71
|
const [minutesShown, setMinutesShown] = _react.default.useState(false);
|
|
69
72
|
const [startShowingMinutes, setStartShowingMinutes] = _react.default.useState(false);
|
|
70
73
|
const vcRoomWorkspaceRef = (0, _react.useRef)();
|
|
74
|
+
|
|
75
|
+
// Layout responds to the room's own width (it lives inside WindowViewPort,
|
|
76
|
+
// so viewport breakpoints are wrong). Below this the sidebar overlays the
|
|
77
|
+
// workspace instead of docking beside it (which squashed the video).
|
|
78
|
+
const [rootRef, rootWidth] = (0, _useContainerWidth.default)();
|
|
79
|
+
const narrowLayout = rootWidth > 0 && rootWidth < 680;
|
|
71
80
|
const api = () => {
|
|
72
81
|
return {
|
|
73
82
|
loadChats() {
|
|
@@ -119,6 +128,9 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
119
128
|
hangUp();
|
|
120
129
|
console.log('Connection error - Please check your network connection and re-join the meeting');
|
|
121
130
|
break;
|
|
131
|
+
case _VCEventType.VCEventType.SYSTEM_ALERT:
|
|
132
|
+
setReconnectError(be.payload && be.payload.message ? be.payload.message : 'A connection problem occurred. Please rejoin the meeting.');
|
|
133
|
+
break;
|
|
122
134
|
}
|
|
123
135
|
}
|
|
124
136
|
};
|
|
@@ -285,7 +297,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
285
297
|
}).then(initialContext => {
|
|
286
298
|
setDisplayState(initialContext ? initialContext.windowDisplayState : 'MAXIMIZED');
|
|
287
299
|
});
|
|
288
|
-
_VCEventManager.default.addSubscriptions(eventHandler, _VCEventType.VCEventType.REQUEST_TO_JOIN_MEETING, _VCEventType.VCEventType.USER_JOINED, _VCEventType.VCEventType.USER_LEFT_MEETING, _VCEventType.VCEventType.SYSTEM_EVENT, _VCEventType.VCEventType.SOCKET_CONNECT, _VCEventType.VCEventType.SOCKET_DISCONNECT, _VCEventType.VCEventType.RAISE_HAND, _VCEventType.VCEventType.LOWER_HAND, _VCEventType.VCEventType.PEER_DISCONNECT, _VCEventType.VCEventType.CONSUMER_TRANSPORT_FAILED, _VCEventType.VCEventType.CREATE_TRANSPORT_FAILED, _VCEventType.VCEventType.SHARING_STOPPED, _VCEventType.VCEventType.END_SESSION, _VCEventType.VCEventType.CHAT_MESSAGE, _VCEventType.VCEventType.AUDIO_VISUAL_SETTINGS_CHANGED);
|
|
300
|
+
_VCEventManager.default.addSubscriptions(eventHandler, _VCEventType.VCEventType.REQUEST_TO_JOIN_MEETING, _VCEventType.VCEventType.USER_JOINED, _VCEventType.VCEventType.USER_LEFT_MEETING, _VCEventType.VCEventType.SYSTEM_EVENT, _VCEventType.VCEventType.SOCKET_CONNECT, _VCEventType.VCEventType.SOCKET_DISCONNECT, _VCEventType.VCEventType.RAISE_HAND, _VCEventType.VCEventType.LOWER_HAND, _VCEventType.VCEventType.PEER_DISCONNECT, _VCEventType.VCEventType.CONSUMER_TRANSPORT_FAILED, _VCEventType.VCEventType.CREATE_TRANSPORT_FAILED, _VCEventType.VCEventType.SHARING_STOPPED, _VCEventType.VCEventType.END_SESSION, _VCEventType.VCEventType.CHAT_MESSAGE, _VCEventType.VCEventType.AUDIO_VISUAL_SETTINGS_CHANGED, _VCEventType.VCEventType.SYSTEM_ALERT);
|
|
289
301
|
document.addEventListener('sideBarToggleEvent', handleSidebarToggle);
|
|
290
302
|
_ApplicationManager.default.setHasActiveMeeting(true);
|
|
291
303
|
_ApplicationManager.default.setActiveMeetingKey(props.calendarEvent.key);
|
|
@@ -307,7 +319,10 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
307
319
|
if (props.calendarEvent.host.username === _ApplicationManager.default.getUserDetails().username) {
|
|
308
320
|
userFullName = props.calendarEvent.host.name;
|
|
309
321
|
} else {
|
|
310
|
-
|
|
322
|
+
// Guard: the current user may not be in attendees (data drift) — don't crash;
|
|
323
|
+
// fall back to the username so currentUserFullName stays truthy (gates the room render).
|
|
324
|
+
const me = props.calendarEvent.attendees.find(a => a.username === _ApplicationManager.default.getUserDetails().username);
|
|
325
|
+
userFullName = me ? me.name : _ApplicationManager.default.getUserDetails().username;
|
|
311
326
|
}
|
|
312
327
|
setCurrentUserFullName(userFullName);
|
|
313
328
|
setIsHost(props.calendarEvent.host.username === _ApplicationManager.default.getUserDetails().username);
|
|
@@ -426,11 +441,13 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
426
441
|
_VCRoomRecorder.default.stopRecordingMeeting();
|
|
427
442
|
};
|
|
428
443
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
444
|
+
ref: rootRef,
|
|
429
445
|
style: {
|
|
430
446
|
width: '100%',
|
|
431
447
|
height: '100%',
|
|
432
448
|
border: '1px solid #e2e2e2',
|
|
433
|
-
borderRadius: '4px'
|
|
449
|
+
borderRadius: '4px',
|
|
450
|
+
position: 'relative'
|
|
434
451
|
}
|
|
435
452
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
436
453
|
className: 'row flex-nowrap no-margin no-padding w-100 h-100'
|
|
@@ -592,7 +609,7 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
592
609
|
changeOtherParticipantAVSettings(participant.userId, participant.audioMuted, true);
|
|
593
610
|
}
|
|
594
611
|
}))), sideBarOpen && sideBarTab && roomStatus === Status.SESSION && /*#__PURE__*/_react.default.createElement("div", {
|
|
595
|
-
className:
|
|
612
|
+
className: narrowLayout ? 'closable-panel-overlay' : 'closable-panel-container'
|
|
596
613
|
}, /*#__PURE__*/_react.default.createElement(_ClosablePanel.default, {
|
|
597
614
|
closeHandler: e => {
|
|
598
615
|
setSideBarOpen(false);
|
|
@@ -619,6 +636,16 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
619
636
|
bottom: '48px'
|
|
620
637
|
}
|
|
621
638
|
}, /*#__PURE__*/_react.default.createElement(_Alert.default, {
|
|
639
|
+
variant: 'danger',
|
|
640
|
+
show: reconnectError !== null,
|
|
641
|
+
dismissible: true,
|
|
642
|
+
onClose: () => setReconnectError(null),
|
|
643
|
+
fade: true
|
|
644
|
+
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
645
|
+
style: {
|
|
646
|
+
margin: 0
|
|
647
|
+
}
|
|
648
|
+
}, reconnectError)), /*#__PURE__*/_react.default.createElement(_Alert.default, {
|
|
622
649
|
variant: 'info',
|
|
623
650
|
show: activityMessage !== null,
|
|
624
651
|
fade: true
|
|
@@ -676,4 +703,4 @@ const TrainingRoom = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.defaul
|
|
|
676
703
|
}))));
|
|
677
704
|
}));
|
|
678
705
|
var _default = exports.default = TrainingRoom;
|
|
679
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ljb24iLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1Rvb2xiYXIiLCJfVkNSb29tIiwiX1ZDUm9vbVdvcmtzcGFjZSIsIl9WQ0V2ZW50VHlwZSIsIl9BbGVydCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0Nsb3NhYmxlUGFuZWwiLCJfU2lkZUJhckNvbnRlbnQiLCJfVkNSb29tUmVjb3JkZXIiLCJfUmVzdFV0aWxzIiwiX01lZGlhIiwiX09ic2VydmFibGUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJTdGF0dXMiLCJMT0JCWSIsIlNFU1NJT04iLCJTRVNTSU9OX0VOREVEIiwiU1lTVEVNX0VSUk9SIiwiQ09OTkVDVElPTl9FUlJPUiIsIlNUUkVBTV9FUlJPUiIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlRyYWluaW5nUm9vbSIsIlJlYWN0IiwibWVtbyIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsInJlY29yZFJlZiIsInVzZVJlZiIsImhhc1VucmVhZENoYXRzIiwic2V0SGFzVW5yZWFkQ2hhdHMiLCJ1c2VTdGF0ZSIsInBhcnRpY2lwYW50cyIsInNldFBhcnRpY2lwYW50cyIsImhhbmRSYWlzZWQiLCJzZXRIYW5kUmFpc2VkIiwiaXNSZWNvcmRpbmciLCJzZXRJc1JlY29yZGluZyIsInZpZGVvRGlzYWJsZWQiLCJhdWRpb0Rpc2FibGVkIiwic2V0QXVkaW9EaXNhYmxlZCIsInZpZGVvTXV0ZWQiLCJzZXRWaWRlb011dGVkIiwiYXVkaW9NdXRlZCIsInNldEF1ZGlvTXV0ZWQiLCJkaXNwbGF5U3RhdGUiLCJzZXREaXNwbGF5U3RhdGUiLCJyb29tU3RhdHVzIiwic2V0Um9vbVN0YXR1cyIsInNvbWVvbmVTaGFyaW5nIiwic2V0U29tZW9uZVNoYXJpbmciLCJzaWRlQmFyT3BlbiIsInNldFNpZGVCYXJPcGVuIiwic2lkZUJhclRhYiIsInNldFNpZGVCYXJUYWIiLCJhbGxVc2VyUGFydGljaXBhbnRzTGVmdCIsInNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0IiwibG9iYnlXYWl0aW5nTGlzdCIsInNldExvYmJ5V2FpdGluZ0xpc3QiLCJpc0hvc3QiLCJzZXRJc0hvc3QiLCJpc0NoYWlyUGVyc29uIiwic2V0SXNDaGFpclBlcnNvbiIsIm1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlIiwic2V0TWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUiLCJhdXRvUGVybWl0Iiwic2V0QXV0b1Blcm1pdCIsImNhbGVuZGFyRXZlbnQiLCJhc2tUb0pvaW4iLCJydHBDYXBhYmlsaXRpZXMiLCJzZXRSdHBDYXBhYmlsaXRpZXMiLCJhY3Rpdml0eU1lc3NhZ2UiLCJzZXRBY3Rpdml0eU1lc3NhZ2UiLCJvbmxvYWRTY3JlZW5TaGFyZURhdGEiLCJzZXRPbmxvYWRTY3JlZW5TaGFyZURhdGEiLCJjaGF0TWVzc2FnZSIsInNldENoYXRNZXNzYWdlIiwiY2hhdFNlbmRlciIsInNldENoYXRTZW5kZXIiLCJjdXJyZW50VXNlckZ1bGxOYW1lIiwic2V0Q3VycmVudFVzZXJGdWxsTmFtZSIsImV2ZW50SGFuZGxlciIsIm1lZXRpbmdDaGF0Iiwic2V0TWVldGluZ0NoYXQiLCJzY3JlZW5TaGFyZWQiLCJzZXRTY3JlZW5TaGFyZWQiLCJzdGFydFNjcmVlblNoYXJpbmciLCJzZXRTdGFydFNjcmVlblNoYXJpbmciLCJyYWlzZWRIYW5kcyIsInNldFJhaXNlZEhhbmRzIiwibWludXRlc1Nob3duIiwic2V0TWludXRlc1Nob3duIiwic3RhcnRTaG93aW5nTWludXRlcyIsInNldFN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJ2Y1Jvb21Xb3Jrc3BhY2VSZWYiLCJhcGkiLCJsb2FkQ2hhdHMiLCJjb25zb2xlIiwibG9nIiwiZmV0Y2hDaGF0cyIsImhhbmRsZXIiLCJpZCIsIm9uIiwiZXZlbnRUeXBlIiwiYmUiLCJWQ0V2ZW50VHlwZSIsIlJFUVVFU1RfVE9fSk9JTl9NRUVUSU5HIiwiVVNFUl9KT0lORUQiLCJhZGRVc2VyIiwicGF5bG9hZCIsIlVTRVJfTEVGVF9NRUVUSU5HIiwicmVtb3ZlVXNlciIsIkFVRElPX1ZJU1VBTF9TRVRUSU5HU19DSEFOR0VEIiwib25BVlNldHRpbmdzQ2hhbmdlIiwiU1lTVEVNX0VWRU5UIiwiUkFJU0VfSEFORCIsIm9uUmFpc2VIYW5kIiwiTE9XRVJfSEFORCIsIm9uTG93ZXJIYW5kIiwiRU5EX1NFU1NJT04iLCJoYW5nVXAiLCJTSEFSSU5HX1NUT1BQRUQiLCJDSEFUX01FU1NBR0UiLCJvbk1lc3NhZ2UiLCJDT05TVU1FUl9UUkFOU1BPUlRfRkFJTEVEIiwibWVzc2FnZSIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldFVzZXJEZXRhaWxzIiwidXNlcm5hbWUiLCJwYXJ0aWNpcGFudCIsImhhbmRsZU1lc3NhZ2VBcnJpdmVkIiwibmFtZSIsImNvbnRlbnQiLCJ0cmltIiwibGVuZ3RoIiwicHVzaCIsInVzZXJJZCIsImNvbmNhdCIsImluZGV4IiwiZmluZEluZGV4IiwicCIsInNwbGljZSIsInVzZUVmZmVjdCIsInNlbmRSZXF1ZXN0IiwiZ2V0Q29udGV4dFJvb3QiLCJyZXNwb25zZSIsImZpbmQiLCJ2Y0V2ZW50TWFuYWdlciIsImZpcmVFdmVudCIsImVtaXRBVlNldHRpbmdzQ2hhbmdlIiwic29ja2V0TWFuYWdlciIsImVtaXRFdmVudCIsIm1lZXRpbmdJZCIsImNhdGNoIiwiZXJyb3IiLCJldmVudCIsIm1lc3NhZ2VUaW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImFkZFVzZXJUb1BhcnRpY2lwYW50cyIsInVzZXIiLCJuZXdQYXJ0aWNpcGFudHMiLCJmaWx0ZXIiLCJoYW5kbGVTaWRlYmFyVG9nZ2xlIiwicGFwZXIiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZGV0YWlsIiwib3BlbiIsInN0eWxlIiwibWFyZ2luIiwiaGFuZGxlIiwic2V0dGluZ3MiLCJhdWRpb09uIiwidmlkZW9PbiIsIlV0aWxzIiwiaXNOdWxsIiwicm9vbUlkIiwicmVtb3ZlU3Vic2NyaXB0aW9ucyIsImFkZEFwcGxpY2F0aW9uQ29udGV4dFN1YnNjcmlwdGlvbiIsIm9uQ29udGV4dENoYW5nZSIsImNvbnRleHQiLCJuZXdWYWx1ZXMiLCJrZXlzIiwia2V5Iiwid2luZG93RGlzcGxheVN0YXRlIiwidGhlbiIsImluaXRpYWxDb250ZXh0IiwiYWRkU3Vic2NyaXB0aW9ucyIsIlNPQ0tFVF9DT05ORUNUIiwiU09DS0VUX0RJU0NPTk5FQ1QiLCJQRUVSX0RJU0NPTk5FQ1QiLCJDUkVBVEVfVFJBTlNQT1JUX0ZBSUxFRCIsImFkZEV2ZW50TGlzdGVuZXIiLCJzZXRIYXNBY3RpdmVNZWV0aW5nIiwic2V0QWN0aXZlTWVldGluZ0tleSIsImV2ZW50TWFuYWdlciIsInJlbW92ZUFwcGxpY2F0aW9uQ29udGV4dFN1YnNjcmlwdGlvbnMiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFzQWN0aXZlTWVldGluZyIsImxlYXZlTWVldGluZyIsInVzZXJGdWxsTmFtZSIsImhvc3QiLCJhdHRlbmRlZXMiLCJhIiwiY2hhaXJQZXJzb25JZCIsIm1lZGlhIiwiam9pbk1lZXRpbmciLCJjcmVhdGVQYXJ0aWNpcGFudHMiLCJzaGFyZVNjcmVlblByb2R1Y2VyRGF0YSIsInUiLCJhdmF0YXIiLCJwcm9kdWNlcnMiLCJjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyIsInVzZXJzIiwiZm9yRWFjaCIsInJlbW92ZUxvYWRlZEdyYXBoIiwiZW5kU2Vzc2lvbiIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0IiwiZW1pdFN5c3RlbUV2ZW50IiwiZGF0YSIsInRvUGFydGljaXBhbnRJZHMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJwYXJ0aWNpcGFudElkcyIsInN5c3RlbUV2ZW50VHlwZSIsInJlY2lwaWVudHMiLCJyZWNvcmRNZWV0aW5nIiwibWVkaWFSZWNvcmRlciIsImluaXQiLCJ0aXRsZSIsInJlY29yZGluZyIsInN0b3BSZWNvcmRpbmdNZWV0aW5nIiwicHVibGlzaCIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImhlaWdodCIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsImNsYXNzTmFtZSIsIm1pbldpZHRoIiwiYm9yZGVyQm90dG9tIiwib25NdXRlVmlkZW8iLCJtdXRlZCIsIm9uTXV0ZUF1ZGlvIiwiZW5kQ2FsbCIsInNob3dDaGF0Iiwic2hvd1Blb3BsZSIsInNoYXJlU2NyZWVuIiwic3RvcFNoYXJlU2NyZWVuIiwic2hvd01pbnV0ZXMiLCJoaWRlTWludXRlcyIsInNhdmVNaW51dGVzIiwiY3VycmVudCIsInN0b3BSZWNvcmRpbmciLCJyYWlzZUhhbmQiLCJsb3dlckhhbmQiLCJpc0F1ZGlvRGV2aWNlQ29ubmVjdGVkIiwiaXNWaWRlb0RldmljZUNvbm5lY3RlZCIsImNvbG9yIiwicGFkZGluZyIsImZvbnRTaXplIiwiU1lTVEVNX0VSUk9SX01FU1NBR0UiLCJtb2RlIiwidmlld0lkIiwibWVldGluZ1RpdGxlIiwiZXZlbnRLZXkiLCJtaW51dGVzRG9jdW1lbnRJZCIsIm9uR3JpZFNldHVwIiwic2hhcmluZ0hhbmRsZXIiLCJvblN0b3BTaGFyaW5nIiwib25TdGFydFNoYXJpbmciLCJvblN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJvblN0b3BTaG93aW5nTWludXRlcyIsIm9uQXVkaW9EZXZpY2VDaGFuZ2UiLCJkZXZpY2UiLCJvbkhvc3RBdWRpb011dGUiLCJvbkhvc3RWaWRlb011dGUiLCJjbG9zZUhhbmRsZXIiLCJ0YWIiLCJwb3NpdGlvbiIsInJpZ2h0IiwiYm90dG9tIiwidmFyaWFudCIsInNob3ciLCJmYWRlIiwicGFkZGluZ0JvdHRvbSIsIm1hcmdpblRvcCIsIkZyYWdtZW50IiwiZGlzcGxheSIsImhpZGRlbiIsInBsYXlzSW5saW5lIiwiYXV0b1BsYXkiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvVHJhaW5pbmdSb29tLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHtGcmFnbWVudCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0ICcuL1ZpZGVvLmNzcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuLi9JY29uJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBUb29sYmFyIGZyb20gJy4vVG9vbGJhcic7XG5pbXBvcnQge1NZU1RFTV9FUlJPUl9NRVNTQUdFfSBmcm9tICcuL1ZDUm9vbSc7XG5pbXBvcnQgVkNSb29tV29ya3NwYWNlIGZyb20gJy4vVkNSb29tV29ya3NwYWNlJztcbmltcG9ydCB7VkNFdmVudFR5cGV9IGZyb20gJy4vVkNFdmVudFR5cGUnO1xuaW1wb3J0IEFsZXJ0IGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9BbGVydCc7XG5pbXBvcnQgdmNFdmVudE1hbmFnZXIgZnJvbSAnLi9WQ0V2ZW50TWFuYWdlcic7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tICcuLi9Tb2NrZXRNYW5hZ2VyJztcbmltcG9ydCBDbG9zYWJsZVBhbmVsIGZyb20gJy4vQ2xvc2FibGVQYW5lbCc7XG5pbXBvcnQgU2lkZUJhckNvbnRlbnQgZnJvbSAnLi9TaWRlQmFyQ29udGVudCc7XG5pbXBvcnQgbWVkaWFSZWNvcmRlciBmcm9tICcuL1ZDUm9vbVJlY29yZGVyJztcbmltcG9ydCB7c2VuZFJlcXVlc3R9IGZyb20gJy4uLy4uL1Jlc3RVdGlscyc7XG5pbXBvcnQgbWVkaWEgZnJvbSAnLi4vLi4vanMvTWVkaWEnO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi8uLi9ldmVudC9PYnNlcnZhYmxlJztcblxuY29uc3QgU3RhdHVzID0ge1xuICAgIExPQkJZOiAnTE9CQlknLFxuICAgIFNFU1NJT046ICdTRVNTSU9OJyxcbiAgICBTRVNTSU9OX0VOREVEOiAnU0VTU0lPTl9FTkRFRCcsXG4gICAgU1lTVEVNX0VSUk9SOiAnU1lTVEVNX0VSUk9SJyxcbiAgICBDT05ORUNUSU9OX0VSUk9SOiAnQ09OTkVDVElPTl9FUlJPUicsXG4gICAgU1RSRUFNX0VSUk9SOiAnU1RSRUFNX0VSUk9SJ1xufTtcblxuY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuY29uc3QgVHJhaW5pbmdSb29tID0gUmVhY3QubWVtbyhSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG5cbiAgICBjb25zdCByZWNvcmRSZWYgPSB1c2VSZWYoKTtcbiAgICBjb25zdCBbaGFzVW5yZWFkQ2hhdHMsIHNldEhhc1VucmVhZENoYXRzXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtwYXJ0aWNpcGFudHMsIHNldFBhcnRpY2lwYW50c10gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2hhbmRSYWlzZWQsIHNldEhhbmRSYWlzZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc1JlY29yZGluZywgc2V0SXNSZWNvcmRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFt2aWRlb0Rpc2FibGVkXSA9IHVzZVN0YXRlKHByb3BzLnZpZGVvRGlzYWJsZWQpO1xuICAgIGNvbnN0IFthdWRpb0Rpc2FibGVkLCBzZXRBdWRpb0Rpc2FibGVkXSA9IHVzZVN0YXRlKHByb3BzLmF1ZGlvRGlzYWJsZWQpO1xuICAgIGNvbnN0IFt2aWRlb011dGVkLCBzZXRWaWRlb011dGVkXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFthdWRpb011dGVkLCBzZXRBdWRpb011dGVkXSA9IHVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtkaXNwbGF5U3RhdGUsIHNldERpc3BsYXlTdGF0ZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcm9vbVN0YXR1cywgc2V0Um9vbVN0YXR1c10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbc29tZW9uZVNoYXJpbmcsIHNldFNvbWVvbmVTaGFyaW5nXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzaWRlQmFyT3Blbiwgc2V0U2lkZUJhck9wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtzaWRlQmFyVGFiLCBzZXRTaWRlQmFyVGFiXSA9IHVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBbYWxsVXNlclBhcnRpY2lwYW50c0xlZnQsIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbbG9iYnlXYWl0aW5nTGlzdCwgc2V0TG9iYnlXYWl0aW5nTGlzdF0gPSB1c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2lzSG9zdCwgc2V0SXNIb3N0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNDaGFpclBlcnNvbiwgc2V0SXNDaGFpclBlcnNvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW21lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlLCBzZXRNZWV0aW5nUGFydGljaXBhbnRHcmlkTW9kZV0gPSB1c2VTdGF0ZSgnREVGQVVMVCcpO1xuICAgIGNvbnN0IFthdXRvUGVybWl0LCBzZXRBdXRvUGVybWl0XSA9IHVzZVN0YXRlKCFwcm9wcy5jYWxlbmRhckV2ZW50LmFza1RvSm9pbik7XG4gICAgY29uc3QgW3J0cENhcGFiaWxpdGllcywgc2V0UnRwQ2FwYWJpbGl0aWVzXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFthY3Rpdml0eU1lc3NhZ2UsIHNldEFjdGl2aXR5TWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbb25sb2FkU2NyZWVuU2hhcmVEYXRhLCBzZXRPbmxvYWRTY3JlZW5TaGFyZURhdGFdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2NoYXRNZXNzYWdlLCBzZXRDaGF0TWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY2hhdFNlbmRlciwgc2V0Q2hhdFNlbmRlcl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY3VycmVudFVzZXJGdWxsTmFtZSwgc2V0Q3VycmVudFVzZXJGdWxsTmFtZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbZXZlbnRIYW5kbGVyXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbbWVldGluZ0NoYXQsIHNldE1lZXRpbmdDaGF0XSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtzY3JlZW5TaGFyZWQsIHNldFNjcmVlblNoYXJlZF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbc3RhcnRTY3JlZW5TaGFyaW5nLCBzZXRTdGFydFNjcmVlblNoYXJpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtyYWlzZWRIYW5kcywgc2V0UmFpc2VkSGFuZHNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFttaW51dGVzU2hvd24sIHNldE1pbnV0ZXNTaG93bl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3N0YXJ0U2hvd2luZ01pbnV0ZXMsIHNldFN0YXJ0U2hvd2luZ01pbnV0ZXNdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IHZjUm9vbVdvcmtzcGFjZVJlZiA9IHVzZVJlZigpO1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9hZENoYXRzICgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTE9BRElORyBDSEFUUycpO1xuICAgICAgICAgICAgICAgIGZldGNoQ2hhdHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtZWV0aW5nLXJvb20tJyArIHByb3BzLmNhbGVuZGFyRXZlbnQuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHBhcnRpY2lwYW50cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnRzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiAoZXZlbnRUeXBlLCBiZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuUkVRVUVTVF9UT19KT0lOX01FRVRJTkc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5VU0VSX0pPSU5FRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFVzZXIoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5VU0VSX0xFRlRfTUVFVElORzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVVzZXIoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQVZTZXR0aW5nc0NoYW5nZShiZT8ucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5SQUlTRV9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25SYWlzZUhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5MT1dFUl9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25Mb3dlckhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmdVcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVEOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0U6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk1lc3NhZ2UoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DT05TVU1FUl9UUkFOU1BPUlRfRkFJTEVEOlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZ1VwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ29ubmVjdGlvbiBlcnJvciAtIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbiBhbmQgcmUtam9pbiB0aGUgbWVldGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBvbk1lc3NhZ2UgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICBpZihzaWRlQmFyVGFiICE9PSAnQ2hhdCcpIHtcbiAgICAgICAgICAgIGxldCBjaGF0TWVzc2FnZSA9IG1lc3NhZ2UuY2hhdE1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAoYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUgIT09IGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlTWVzc2FnZUFycml2ZWQoe1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGF0TWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lICsgXCIgXCIgKyBjaGF0TWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICArIChjaGF0TWVzc2FnZS5jb250ZW50ICYmIGNoYXRNZXNzYWdlLmNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDAgPyBcIiAtIFwiICsgY2hhdE1lc3NhZ2UuY29udGVudCA6ICcnKVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgc2V0SGFzVW5yZWFkQ2hhdHModHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvblJhaXNlSGFuZCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHJhaXNlZEhhbmRzLnB1c2gocGF5bG9hZC51c2VySWQpO1xuICAgICAgICBzZXRSYWlzZWRIYW5kcyhbXS5jb25jYXQocmFpc2VkSGFuZHMpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Mb3dlckhhbmQgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocmFpc2VkSGFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gcmFpc2VkSGFuZHMuZmluZEluZGV4KChwKSA9PiBwID09PSBwYXlsb2FkLnVzZXJJZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHJhaXNlZEhhbmRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRSYWlzZWRIYW5kcyhbXS5jb25jYXQocmFpc2VkSGFuZHMpKTtcbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG1lZXRpbmdDaGF0KSB7XG4gICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdDaGF0Jyk7XG4gICAgICAgICAgICBzZXRTaWRlQmFyT3Blbih0cnVlKTtcbiAgICAgICAgICAgIHNldEhhc1VucmVhZENoYXRzKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0sIFttZWV0aW5nQ2hhdF0pO1xuXG4gICAgY29uc3QgZmV0Y2hDaGF0cyA9ICgpID0+IHtcbiAgICAgICAgc2VuZFJlcXVlc3QoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL2NoYXQvZmV0Y2hNZWV0aW5nQ2hhdC8ke3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9YCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRkVUQ0ggQ0hBVCBSRVNQT05TRSA6ICcsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pZCkge1xuICAgICAgICAgICAgICAgIHNldE1lZXRpbmdDaGF0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICB9LCB0cnVlLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQVZTZXR0aW5nc0NoYW5nZSA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmKHBheWxvYWQpIHtcbiAgICAgICAgICAgIGxldCBwYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50cy5maW5kKChwKSA9PiBwLnVzZXJJZCA9PT0gcGF5bG9hZC51c2VySWQpO1xuICAgICAgICAgICAgaWYgKHBhcnRpY2lwYW50KSB7XG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnQuYXVkaW9NdXRlZCA9IHBheWxvYWQuYXVkaW9NdXRlZDtcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudC52aWRlb011dGVkID0gcGF5bG9hZC52aWRlb011dGVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5maXJlRXZlbnQoVkNFdmVudFR5cGUuQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQsIHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCkge1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCwge1xuICAgICAgICAgICAgbWVldGluZ0lkOiBwcm9wcy5jYWxlbmRhckV2ZW50LmlkLFxuICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSxcbiAgICAgICAgICAgIGF1ZGlvTXV0ZWQ6IGF1ZGlvTXV0ZWQsXG4gICAgICAgICAgICB2aWRlb011dGVkOiB2aWRlb011dGVkXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoYXVkaW9NdXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9LCBbYXVkaW9NdXRlZF0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHZpZGVvTXV0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIG9uQVZTZXR0aW5nc0NoYW5nZSh7XG4gICAgICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSxcbiAgICAgICAgICAgICAgICB2aWRlb011dGVkLFxuICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBlbWl0QVZTZXR0aW5nc0NoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfSwgW3ZpZGVvTXV0ZWRdKTtcblxuICAgIGNvbnN0IGhhbmRsZU1lc3NhZ2VBcnJpdmVkID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChyb29tU3RhdHVzID09PSBTdGF0dXMuU0VTU0lPTiAmJiBldmVudC5tZXNzYWdlICYmIGV2ZW50Lm1lc3NhZ2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0QWN0aXZpdHlNZXNzYWdlKGV2ZW50Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRBY3Rpdml0eU1lc3NhZ2UobnVsbCk7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KG1lc3NhZ2VUaW1lb3V0KTtcbiAgICAgICAgICAgIH0sIDQwMDApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGFkZFVzZXIgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQUREIFVTRVIgOiAnLCBwYXlsb2FkKTtcbiAgICAgICAgYWRkVXNlclRvUGFydGljaXBhbnRzKHBheWxvYWQudXNlcik7XG4gICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KGZhbHNlKTtcbiAgICAgICAgaWYgKHJvb21TdGF0dXMgPT09IFN0YXR1cy5MT0JCWSkge1xuICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU0VTU0lPTik7XG4gICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlTWVzc2FnZUFycml2ZWQoe1xuICAgICAgICAgICAgbWVzc2FnZTogcGF5bG9hZC51c2VyLm5hbWUgKyAnIGhhcyBqb2luZWQnXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCByZW1vdmVVc2VyID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaWQgPT09IHBheWxvYWQubWVldGluZ0lkKSB7XG4gICAgICAgICAgICBjb25zdCB1c2VySWQgPSBwYXlsb2FkLnVzZXJJZDtcbiAgICAgICAgICAgIGNvbnN0IGZpbmQgPSBwYXJ0aWNpcGFudHMuZmluZCgocCkgPT4gcC51c2VySWQgPT09IHVzZXJJZCk7XG4gICAgICAgICAgICBpZiAoZmluZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BhcnRpY2lwYW50cyA9IHBhcnRpY2lwYW50cy5maWx0ZXIoKHApID0+IHAudXNlcklkICE9PSB1c2VySWQpO1xuICAgICAgICAgICAgICAgIHNldFBhcnRpY2lwYW50cyhuZXdQYXJ0aWNpcGFudHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZXdQYXJ0aWNpcGFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5MT0JCWSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVNpZGViYXJUb2dnbGUgPSAoZSkgPT4ge1xuICAgICAgICBsZXQgcGFwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVldGluZ0RpYWxvZ1BhcGVyJyk7XG4gICAgICAgIGlmIChlLmRldGFpbC5vcGVuKSB7XG4gICAgICAgICAgICBwYXBlci5zdHlsZS5tYXJnaW4gPSAnNTRweCAwIDAgMTM2cHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFwZXIuc3R5bGUubWFyZ2luID0gJzU0cHggMCAwIDAnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGV2ZW50SGFuZGxlci5hcGkgPSBoYW5kbGVyKCk7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5zZXR0aW5ncykge1xuICAgICAgICAgICAgc2V0QXVkaW9NdXRlZCghcHJvcHMuc2V0dGluZ3MuYXVkaW9Pbik7XG4gICAgICAgICAgICBzZXRWaWRlb011dGVkKCFwcm9wcy5zZXR0aW5ncy52aWRlb09uKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5zZXR0aW5nc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGFuZFJhaXNlZCkpIHtcbiAgICAgICAgICAgIGlmIChoYW5kUmFpc2VkKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuUkFJU0VfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuTE9XRVJfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH0sIFtoYW5kUmFpc2VkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24oe1xuICAgICAgICAgICAgaGFuZGxlcjoge1xuICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0cmFpbmluZy1yb29tJztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uQ29udGV4dENoYW5nZTogKGNvbnRleHQsIG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobmV3VmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKGtleSkgPT4ga2V5ID09PSAnd2luZG93RGlzcGxheVN0YXRlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShuZXdWYWx1ZXMud2luZG93RGlzcGxheVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKChpbml0aWFsQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShpbml0aWFsQ29udGV4dCA/IGluaXRpYWxDb250ZXh0LndpbmRvd0Rpc3BsYXlTdGF0ZSA6ICdNQVhJTUlaRUQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyLCBWQ0V2ZW50VHlwZS5SRVFVRVNUX1RPX0pPSU5fTUVFVElORywgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQsIFZDRXZlbnRUeXBlLlVTRVJfTEVGVF9NRUVUSU5HLFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCBWQ0V2ZW50VHlwZS5TT0NLRVRfQ09OTkVDVCwgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQsIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQsXG4gICAgICAgICAgICBWQ0V2ZW50VHlwZS5QRUVSX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQsIFZDRXZlbnRUeXBlLkNSRUFURV9UUkFOU1BPUlRfRkFJTEVELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVELCBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTiwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCk7XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIucmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucygndHJhaW5pbmctcm9vbScpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG5cbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaGFzQWN0aXZlTWVldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5sZWF2ZU1lZXRpbmcocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIGxldCB1c2VyRnVsbE5hbWU7XG5cbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpIHtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXNlckZ1bGxOYW1lID0gcHJvcHMuY2FsZW5kYXJFdmVudC5hdHRlbmRlZXMuZmluZCgoYSkgPT4gYS51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpLm5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRDdXJyZW50VXNlckZ1bGxOYW1lKHVzZXJGdWxsTmFtZSk7XG4gICAgICAgIHNldElzSG9zdChwcm9wcy5jYWxlbmRhckV2ZW50Lmhvc3QudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKTtcbiAgICAgICAgc2V0SXNDaGFpclBlcnNvbihwcm9wcy5jYWxlbmRhckV2ZW50LmNoYWlyUGVyc29uSWQgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbWVkaWEuam9pbk1lZXRpbmcocHJvcHMuY2FsZW5kYXJFdmVudCwgcHJvcHMuc2V0dGluZ3MsIHVzZXJGdWxsTmFtZSlcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0pPSU4gUkVTUE9OU0UgOiAnLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVBhcnRpY2lwYW50cyhyZXNwb25zZS5wYXJ0aWNpcGFudHMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSdHBDYXBhYmlsaXRpZXMocmVzcG9uc2UucnRwQ2FwYWJpbGl0aWVzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhKHJlc3BvbnNlLnNoYXJlU2NyZWVuUHJvZHVjZXJEYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhwYXJ0aWNpcGFudHMubGVuZ3RoID4gMCA/IFN0YXR1cy5TRVNTSU9OIDogU3RhdHVzLkxPQkJZKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5TWVNURU1fRVJST1IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5TWVNURU1fRVJST1IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIGZ1bmN0aW9uIGFkZFVzZXJUb1BhcnRpY2lwYW50cyh1c2VyKSB7XG4gICAgICAgIC8vIFR5cGljYWxseSwgYSB1c2VyIHNob3VkIG5vdCBleGlzdC4gV2UgYXJlIGVuc3VyaW5nIHRoYXQgdGhlcmUgYXJlIG5ldmVyIGR1cGxpY2F0ZXNcbiAgICAgICAgY29uc29sZS5sb2cocGFydGljaXBhbnRzKTtcbiAgICAgICAgbGV0IHBhcnRpY2lwYW50ID0gcGFydGljaXBhbnRzLmZpbmQoKHUpID0+IHUudXNlcklkID09PSB1c2VyLnVzZXJJZCk7XG4gICAgICAgIGlmIChwYXJ0aWNpcGFudCkge1xuICAgICAgICAgICAgcGFydGljaXBhbnQubmFtZSA9IHVzZXIubmFtZTtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50LmF2YXRhciA9IHVzZXIuYXZhdGFyO1xuICAgICAgICAgICAgcGFydGljaXBhbnQuYXVkaW9NdXRlZCA9IHVzZXIuYXVkaW9NdXRlZDtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50LnZpZGVvTXV0ZWQgPSB1c2VyLnZpZGVvTXV0ZWQ7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudC5wcm9kdWNlcnMgPSB1c2VyLnByb2R1Y2VycztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50ID0ge1xuICAgICAgICAgICAgICAgIHVzZXJJZDogdXNlci51c2VySWQsXG4gICAgICAgICAgICAgICAgbmFtZTogdXNlci5uYW1lLFxuICAgICAgICAgICAgICAgIGF2YXRhcjogdXNlci5hdmF0YXIsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZDogdXNlci5hdWRpb011dGVkLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQ6IHVzZXIudmlkZW9NdXRlZCxcbiAgICAgICAgICAgICAgICBwcm9kdWNlcnM6IHVzZXIucHJvZHVjZXJzXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwYXJ0aWNpcGFudHMucHVzaChwYXJ0aWNpcGFudCk7XG4gICAgICAgICAgICBzZXRQYXJ0aWNpcGFudHMoW10uY29uY2F0KHBhcnRpY2lwYW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MgPSAodXNlcklkLCBhdWRpb011dGVkLCB2aWRlb011dGVkKSA9PiB7XG5cbiAgICB9O1xuXG4gICAgY29uc3QgY3JlYXRlUGFydGljaXBhbnRzID0gKHVzZXJzKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBTEwgVVNFUlMgcmVjZWl2ZWQgYW5kIGNyZWF0aW5nIHBhcnRpY2lwYW50cyA6ICcsIHVzZXJzKTtcbiAgICAgICAgdXNlcnMuZm9yRWFjaCgodXNlcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0FERElORyBJVEVNIFRPIFBBUlRJQ0lQQU5UUyA6ICcsIHVzZXIpO1xuICAgICAgICAgICAgYWRkVXNlclRvUGFydGljaXBhbnRzKHVzZXIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzZXRBbGxVc2VyUGFydGljaXBhbnRzTGVmdChmYWxzZSk7XG4gICAgICAgIGlmIChwYXJ0aWNpcGFudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHJvb21TdGF0dXMgPT09IFN0YXR1cy5MT0JCWSkge1xuICAgICAgICAgICAgICAgIHNldFJvb21TdGF0dXMoU3RhdHVzLlNFU1NJT04pO1xuICAgICAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmdVcCA9ICgpID0+IHtcbiAgICAgICAgc29ja2V0TWFuYWdlci5sZWF2ZU1lZXRpbmcocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKGZhbHNlKTtcbiAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnJlbW92ZUxvYWRlZEdyYXBoKCd3aW5kb3cnKTtcbiAgICAgICAgc2V0U2lkZUJhck9wZW4oZmFsc2UpO1xuICAgICAgICBzZXRTaWRlQmFyVGFiKCcnKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kU2Vzc2lvbiA9ICgpID0+IHtcbiAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLm9wZW5Db25maXJtRGlhbG9nKFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGVuZCB0aGUgY3VycmVudCBzZXNzaW9uP1wiLCAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbmRTZXNzaW9uKHByb3BzLmNhbGVuZGFyRXZlbnQuaWQpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShudWxsKTtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIucmVtb3ZlTG9hZGVkR3JhcGgoJ3dpbmRvdycpO1xuICAgICAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCcnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGVtaXRTeXN0ZW1FdmVudCA9IChldmVudFR5cGUsIGRhdGEsIHRvUGFydGljaXBhbnRJZHMgPSBudWxsKSA9PiB7XG4gICAgICAgIGxldCBwYXJ0aWNpcGFudElkcyA9IFtdO1xuICAgICAgICBpZiAoIXRvUGFydGljaXBhbnRJZHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFydGljaXBhbnQgb2YgcGFydGljaXBhbnRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnRpY2lwYW50LnVzZXJJZCAhPT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRJZHMucHVzaChwYXJ0aWNpcGFudC51c2VySWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SWRzID0gcGFydGljaXBhbnRJZHMuY29uY2F0KHRvUGFydGljaXBhbnRJZHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCB7XG4gICAgICAgICAgICBzeXN0ZW1FdmVudFR5cGU6IGV2ZW50VHlwZSxcbiAgICAgICAgICAgIHJlY2lwaWVudHM6IHBhcnRpY2lwYW50SWRzLFxuICAgICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlY29yZE1lZXRpbmcgPSAoKSA9PiB7XG4gICAgICAgIG1lZGlhUmVjb3JkZXIuaW5pdChwcm9wcy5jYWxlbmRhckV2ZW50LmlkLCBwcm9wcy5jYWxlbmRhckV2ZW50LnRpdGxlKTtcbiAgICAgICAgc2V0SXNSZWNvcmRpbmcodHJ1ZSk7XG4gICAgICAgIGVtaXRTeXN0ZW1FdmVudCgnTUVFVElOR19SRUNPUkRJTkcnLCB7XG4gICAgICAgICAgICByZWNvcmRpbmc6IHRydWUsXG4gICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG1lZGlhUmVjb3JkZXIucmVjb3JkTWVldGluZygpO1xuICAgIH07XG5cbiAgICBjb25zdCBzdG9wUmVjb3JkaW5nTWVldGluZyA9IChwdWJsaXNoID0gdHJ1ZSkgPT4ge1xuICAgICAgICBzZXRJc1JlY29yZGluZyhmYWxzZSk7XG5cbiAgICAgICAgaWYgKHB1Ymxpc2gpIHtcbiAgICAgICAgICAgIGVtaXRTeXN0ZW1FdmVudCgnTUVFVElOR19SRUNPUkRJTkcnLCB7XG4gICAgICAgICAgICAgICAgcmVjb3JkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1lZGlhUmVjb3JkZXIuc3RvcFJlY29yZGluZ01lZXRpbmcoKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnXG4gICAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBmbGV4LW5vd3JhcCBuby1tYXJnaW4gbm8tcGFkZGluZyB3LTEwMCBoLTEwMCd9PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sIG5vLW1hcmdpbiBuby1wYWRkaW5nJ30gc3R5bGU9e3ttaW5XaWR0aDogJzI4MHB4J319PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3JvdyBuby1tYXJnaW4gbm8tcGFkZGluZyB3LTEwMCBoLTEwMCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnODBweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkICNlMmUyZTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXIgZXZlbnRIYW5kbGVyPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTXV0ZVZpZGVvOiAobXV0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFZpZGVvTXV0ZWQobXV0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk11dGVBdWRpbzogKG11dGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdWRpb011dGVkKG11dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kQ2FsbDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZ1VwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFNlc3Npb246ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFNlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoYXQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoQ2hhdHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Blb3BsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2lkZUJhclRhYignUGVvcGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyT3Blbih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVTY3JlZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcFNoYXJlU2NyZWVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTY3JlZW5TaGFyZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd01pbnV0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2hvd2luZ01pbnV0ZXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVNaW51dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNaW51dGVzU2hvd24oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTaG93aW5nTWludXRlcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVNaW51dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmNSb29tV29ya3NwYWNlUmVmLmN1cnJlbnQgJiYgdmNSb29tV29ya3NwYWNlUmVmLmN1cnJlbnQuc2F2ZU1pbnV0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Y1Jvb21Xb3Jrc3BhY2VSZWYuY3VycmVudC5zYXZlTWludXRlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRNZWV0aW5nOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRNZWV0aW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BSZWNvcmRpbmc6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BSZWNvcmRpbmdNZWV0aW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlSGFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGFuZFJhaXNlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXJIYW5kOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIYW5kUmFpc2VkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzVW5yZWFkQ2hhdHM9e2hhc1VucmVhZENoYXRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17cGFydGljaXBhbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRSYWlzZWQ9e2hhbmRSYWlzZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9EaXNhYmxlZD17dmlkZW9EaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb0Rpc2FibGVkPXthdWRpb0Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQ9e3ZpZGVvTXV0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9NdXRlZD17YXVkaW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5U3RhdGU9e2Rpc3BsYXlTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW5TaGFyZWQ9e3NjcmVlblNoYXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzU2hvd249e21pbnV0ZXNTaG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tU3RhdHVzPXtyb29tU3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9zdD17cHJvcHMuY2FsZW5kYXJFdmVudC5ob3N0LnVzZXJuYW1lID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvUGVybWl0PXshcHJvcHMuY2FsZW5kYXJFdmVudC5ob3N0LmFza1RvSm9pbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb21lb25lU2hhcmluZz17c29tZW9uZVNoYXJpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSZWNvcmRpbmc9e2lzUmVjb3JkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlZEhhbmRzPXtyYWlzZWRIYW5kc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0F1ZGlvRGV2aWNlQ29ubmVjdGVkPXtwcm9wcy5zZXR0aW5ncy5pc0F1ZGlvRGV2aWNlQ29ubmVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmlkZW9EZXZpY2VDb25uZWN0ZWQ9e3Byb3BzLnNldHRpbmdzLmlzVmlkZW9EZXZpY2VDb25uZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0lkPXtwcm9wcy5jYWxlbmRhckV2ZW50LmlkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tU3RhdHVzID09PSBTdGF0dXMuU1lTVEVNX0VSUk9SICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYigyMzUsIDYzLCAzMyknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gY2xhc3NOYW1lPXsnY2VudGVyZWQtZmxleC1ib3gnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1NZU1RFTV9FUlJPUl9NRVNTQUdFfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21TdGF0dXMgPT09IFN0YXR1cy5DT05ORUNUSU9OX0VSUk9SICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYigyMzUsIDYzLCAzMyknLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMzJweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gY2xhc3NOYW1lPXsnY2VudGVyZWQtZmxleC1ib3gnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtTWVNURU1fRVJST1JfTUVTU0FHRX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnRwQ2FwYWJpbGl0aWVzICYmIHBhcnRpY2lwYW50cyAmJiBjdXJyZW50VXNlckZ1bGxOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKHJvb21TdGF0dXMgPT09IFN0YXR1cy5TRVNTSU9OIHx8IHJvb21TdGF0dXMgPT09IFN0YXR1cy5MT0JCWSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VkNSb29tV29ya3NwYWNlIHJlZj17dmNSb29tV29ya3NwYWNlUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGljaXBhbnRzPXtwYXJ0aWNpcGFudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlPXttZWV0aW5nUGFydGljaXBhbnRHcmlkTW9kZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdJZD17cHJvcHMudmlld0lkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9NdXRlZD17YXVkaW9NdXRlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQ9e3ZpZGVvTXV0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nVGl0bGU9e3Byb3BzLmNhbGVuZGFyRXZlbnQudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudEtleT17cHJvcHMuY2FsZW5kYXJFdmVudC5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzRG9jdW1lbnRJZD17cHJvcHMuY2FsZW5kYXJFdmVudC5taW51dGVzRG9jdW1lbnRJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdJZD17cHJvcHMuY2FsZW5kYXJFdmVudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVc2VyRnVsbE5hbWU9e2N1cnJlbnRVc2VyRnVsbE5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkdyaWRTZXR1cD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0U2lkZUJhclRhYignUGVvcGxlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZUJhclRhYj17c2lkZUJhclRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21TdGF0dXM9e3Jvb21TdGF0dXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0hvc3Q9e2lzSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hhaXJQZXJzb249e2lzQ2hhaXJQZXJzb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFNjcmVlblNoYXJpbmc9e3N0YXJ0U2NyZWVuU2hhcmluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJpbmdIYW5kbGVyPXsoc29tZW9uZVNoYXJpbmcpID0+IHNldFNvbWVvbmVTaGFyaW5nKHNvbWVvbmVTaGFyaW5nKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RvcFNoYXJpbmc9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTY3JlZW5TaGFyZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdGFydFNoYXJpbmc9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTY3JlZW5TaGFyZWQodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNjcmVlblNoYXJpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U2hvd2luZ01pbnV0ZXM9e3N0YXJ0U2hvd2luZ01pbnV0ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0YXJ0U2hvd2luZ01pbnV0ZXM9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNaW51dGVzU2hvd24odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTaG93aW5nTWludXRlcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdG9wU2hvd2luZ01pbnV0ZXM9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRNaW51dGVzU2hvd24oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2hvd2luZ01pbnV0ZXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXNTaG93bj17bWludXRlc1Nob3dufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1Blcm1pdD17YXV0b1Blcm1pdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cENhcGFiaWxpdGllcz17cnRwQ2FwYWJpbGl0aWVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuU2hhcmVkPXtzY3JlZW5TaGFyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5U3RhdGU9e2Rpc3BsYXlTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubG9hZFNjcmVlblNoYXJlRGF0YT17b25sb2FkU2NyZWVuU2hhcmVEYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsVXNlclBhcnRpY2lwYW50c0xlZnQ9e2FsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25BdWRpb0RldmljZUNoYW5nZT17KGRldmljZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEF1ZGlvRGlzYWJsZWQoVXRpbHMuaXNOdWxsKGRldmljZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSG9zdEF1ZGlvTXV0ZT17KHBhcnRpY2lwYW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MocGFydGljaXBhbnQudXNlcklkLCB0cnVlLCBwYXJ0aWNpcGFudC52aWRlb011dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkhvc3RWaWRlb011dGU9eyhwYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgcGFydGljaXBhbnQuYXVkaW9NdXRlZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc2lkZUJhck9wZW4gJiYgc2lkZUJhclRhYiAmJiByb29tU3RhdHVzID09PSBTdGF0dXMuU0VTU0lPTiAmJlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17ZGlzcGxheVN0YXRlID09PSAnTUFYSU1JWkVEJyA/ICdjbG9zYWJsZS1wYW5lbC1jb250YWluZXInIDogJ2Nsb3NhYmxlLXBhbmVsLWNvbnRhaW5lci1waW5uZWQnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDbG9zYWJsZVBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VIYW5kbGVyPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNpZGVCYXJUYWIobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17c2lkZUJhclRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2lkZUJhckNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0NoYXQ9e21lZXRpbmdDaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0hvc3Q9e2lzSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGFpclBlcnNvbj17aXNDaGFpclBlcnNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiPXtzaWRlQmFyVGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nSWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17cGFydGljaXBhbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkhvc3RBdWRpb011dGU9eyhwYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MocGFydGljaXBhbnQudXNlcklkLCB0cnVlLCBwYXJ0aWNpcGFudC52aWRlb011dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0VmlkZW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgcGFydGljaXBhbnQuYXVkaW9NdXRlZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2xvc2FibGVQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICc0OHB4JyxcbiAgICAgICAgICAgICAgICBib3R0b206ICc0OHB4J1xuICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydpbmZvJ31cbiAgICAgICAgICAgICAgICAgICAgc2hvdz17YWN0aXZpdHlNZXNzYWdlICE9PSBudWxsfVxuICAgICAgICAgICAgICAgICAgICBmYWRlPXt0cnVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57YWN0aXZpdHlNZXNzYWdlfTwvcD5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgIDxBbGVydFxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnaW5mbyd9XG4gICAgICAgICAgICAgICAgICAgIHNob3c9e2NoYXRNZXNzYWdlICE9PSBudWxsfVxuICAgICAgICAgICAgICAgICAgICBmYWRlPXt0cnVlfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkIHdoaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdCb3R0b206ICc4cHgnXG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb24gaWQ9eydDSEFUX0JVQkJMRSd9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PntjaGF0U2VuZGVyfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30gc3R5bGU9e3ttYXJnaW5Ub3A6ICc4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PjxwIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e2NoYXRNZXNzYWdlfTwvcD48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgIHsvKkhpZGRlbiB2aWRlbyB0byBjYXB0dXJlIHJlY29yZGluZ3MqL31cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogJ25vbmUnfX0+XG4gICAgICAgICAgICAgICAgICAgIDx2aWRlb1xuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPXtmYWxzZX0gbXV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlzSW5saW5lIGF1dG9QbGF5IHJlZj17cmVjb3JkUmVmfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzIwMHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcyMDBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICApXG4gICAgICAgIDtcbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgVHJhaW5pbmdSb29tO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDRCxJ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
|
|
706
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX0ljb24iLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1Rvb2xiYXIiLCJfVkNSb29tIiwiX1ZDUm9vbVdvcmtzcGFjZSIsIl9WQ0V2ZW50VHlwZSIsIl9BbGVydCIsIl9WQ0V2ZW50TWFuYWdlciIsIl9Tb2NrZXRNYW5hZ2VyIiwiX0Nsb3NhYmxlUGFuZWwiLCJfU2lkZUJhckNvbnRlbnQiLCJfdXNlQ29udGFpbmVyV2lkdGgiLCJfVkNSb29tUmVjb3JkZXIiLCJfUmVzdFV0aWxzIiwiX01lZGlhIiwiX09ic2VydmFibGUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJTdGF0dXMiLCJMT0JCWSIsIlNFU1NJT04iLCJTRVNTSU9OX0VOREVEIiwiU1lTVEVNX0VSUk9SIiwiQ09OTkVDVElPTl9FUlJPUiIsIlNUUkVBTV9FUlJPUiIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlRyYWluaW5nUm9vbSIsIlJlYWN0IiwibWVtbyIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsInJlY29yZFJlZiIsInVzZVJlZiIsImhhc1VucmVhZENoYXRzIiwic2V0SGFzVW5yZWFkQ2hhdHMiLCJ1c2VTdGF0ZSIsInBhcnRpY2lwYW50cyIsInNldFBhcnRpY2lwYW50cyIsImhhbmRSYWlzZWQiLCJzZXRIYW5kUmFpc2VkIiwiaXNSZWNvcmRpbmciLCJzZXRJc1JlY29yZGluZyIsInZpZGVvRGlzYWJsZWQiLCJhdWRpb0Rpc2FibGVkIiwic2V0QXVkaW9EaXNhYmxlZCIsInZpZGVvTXV0ZWQiLCJzZXRWaWRlb011dGVkIiwiYXVkaW9NdXRlZCIsInNldEF1ZGlvTXV0ZWQiLCJkaXNwbGF5U3RhdGUiLCJzZXREaXNwbGF5U3RhdGUiLCJyb29tU3RhdHVzIiwic2V0Um9vbVN0YXR1cyIsInNvbWVvbmVTaGFyaW5nIiwic2V0U29tZW9uZVNoYXJpbmciLCJzaWRlQmFyT3BlbiIsInNldFNpZGVCYXJPcGVuIiwic2lkZUJhclRhYiIsInNldFNpZGVCYXJUYWIiLCJhbGxVc2VyUGFydGljaXBhbnRzTGVmdCIsInNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0IiwibG9iYnlXYWl0aW5nTGlzdCIsInNldExvYmJ5V2FpdGluZ0xpc3QiLCJpc0hvc3QiLCJzZXRJc0hvc3QiLCJpc0NoYWlyUGVyc29uIiwic2V0SXNDaGFpclBlcnNvbiIsIm1lZXRpbmdQYXJ0aWNpcGFudEdyaWRNb2RlIiwic2V0TWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGUiLCJhdXRvUGVybWl0Iiwic2V0QXV0b1Blcm1pdCIsImNhbGVuZGFyRXZlbnQiLCJhc2tUb0pvaW4iLCJydHBDYXBhYmlsaXRpZXMiLCJzZXRSdHBDYXBhYmlsaXRpZXMiLCJhY3Rpdml0eU1lc3NhZ2UiLCJzZXRBY3Rpdml0eU1lc3NhZ2UiLCJyZWNvbm5lY3RFcnJvciIsInNldFJlY29ubmVjdEVycm9yIiwib25sb2FkU2NyZWVuU2hhcmVEYXRhIiwic2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhIiwiY2hhdE1lc3NhZ2UiLCJzZXRDaGF0TWVzc2FnZSIsImNoYXRTZW5kZXIiLCJzZXRDaGF0U2VuZGVyIiwiY3VycmVudFVzZXJGdWxsTmFtZSIsInNldEN1cnJlbnRVc2VyRnVsbE5hbWUiLCJldmVudEhhbmRsZXIiLCJtZWV0aW5nQ2hhdCIsInNldE1lZXRpbmdDaGF0Iiwic2NyZWVuU2hhcmVkIiwic2V0U2NyZWVuU2hhcmVkIiwic3RhcnRTY3JlZW5TaGFyaW5nIiwic2V0U3RhcnRTY3JlZW5TaGFyaW5nIiwicmFpc2VkSGFuZHMiLCJzZXRSYWlzZWRIYW5kcyIsIm1pbnV0ZXNTaG93biIsInNldE1pbnV0ZXNTaG93biIsInN0YXJ0U2hvd2luZ01pbnV0ZXMiLCJzZXRTdGFydFNob3dpbmdNaW51dGVzIiwidmNSb29tV29ya3NwYWNlUmVmIiwicm9vdFJlZiIsInJvb3RXaWR0aCIsInVzZUNvbnRhaW5lcldpZHRoIiwibmFycm93TGF5b3V0IiwiYXBpIiwibG9hZENoYXRzIiwiY29uc29sZSIsImxvZyIsImZldGNoQ2hhdHMiLCJoYW5kbGVyIiwiaWQiLCJvbiIsImV2ZW50VHlwZSIsImJlIiwiVkNFdmVudFR5cGUiLCJSRVFVRVNUX1RPX0pPSU5fTUVFVElORyIsIlVTRVJfSk9JTkVEIiwiYWRkVXNlciIsInBheWxvYWQiLCJVU0VSX0xFRlRfTUVFVElORyIsInJlbW92ZVVzZXIiLCJBVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCIsIm9uQVZTZXR0aW5nc0NoYW5nZSIsIlNZU1RFTV9FVkVOVCIsIlJBSVNFX0hBTkQiLCJvblJhaXNlSGFuZCIsIkxPV0VSX0hBTkQiLCJvbkxvd2VySGFuZCIsIkVORF9TRVNTSU9OIiwiaGFuZ1VwIiwiU0hBUklOR19TVE9QUEVEIiwiQ0hBVF9NRVNTQUdFIiwib25NZXNzYWdlIiwiQ09OU1VNRVJfVFJBTlNQT1JUX0ZBSUxFRCIsIlNZU1RFTV9BTEVSVCIsIm1lc3NhZ2UiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRVc2VyRGV0YWlscyIsInVzZXJuYW1lIiwicGFydGljaXBhbnQiLCJoYW5kbGVNZXNzYWdlQXJyaXZlZCIsIm5hbWUiLCJjb250ZW50IiwidHJpbSIsImxlbmd0aCIsInB1c2giLCJ1c2VySWQiLCJjb25jYXQiLCJpbmRleCIsImZpbmRJbmRleCIsInAiLCJzcGxpY2UiLCJ1c2VFZmZlY3QiLCJzZW5kUmVxdWVzdCIsImdldENvbnRleHRSb290IiwicmVzcG9uc2UiLCJmaW5kIiwidmNFdmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJlbWl0QVZTZXR0aW5nc0NoYW5nZSIsInNvY2tldE1hbmFnZXIiLCJlbWl0RXZlbnQiLCJtZWV0aW5nSWQiLCJjYXRjaCIsImVycm9yIiwiZXZlbnQiLCJtZXNzYWdlVGltZW91dCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJhZGRVc2VyVG9QYXJ0aWNpcGFudHMiLCJ1c2VyIiwibmV3UGFydGljaXBhbnRzIiwiZmlsdGVyIiwiaGFuZGxlU2lkZWJhclRvZ2dsZSIsInBhcGVyIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImRldGFpbCIsIm9wZW4iLCJzdHlsZSIsIm1hcmdpbiIsImhhbmRsZSIsInNldHRpbmdzIiwiYXVkaW9PbiIsInZpZGVvT24iLCJVdGlscyIsImlzTnVsbCIsInJvb21JZCIsInJlbW92ZVN1YnNjcmlwdGlvbnMiLCJhZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24iLCJvbkNvbnRleHRDaGFuZ2UiLCJjb250ZXh0IiwibmV3VmFsdWVzIiwia2V5cyIsImtleSIsIndpbmRvd0Rpc3BsYXlTdGF0ZSIsInRoZW4iLCJpbml0aWFsQ29udGV4dCIsImFkZFN1YnNjcmlwdGlvbnMiLCJTT0NLRVRfQ09OTkVDVCIsIlNPQ0tFVF9ESVNDT05ORUNUIiwiUEVFUl9ESVNDT05ORUNUIiwiQ1JFQVRFX1RSQU5TUE9SVF9GQUlMRUQiLCJhZGRFdmVudExpc3RlbmVyIiwic2V0SGFzQWN0aXZlTWVldGluZyIsInNldEFjdGl2ZU1lZXRpbmdLZXkiLCJldmVudE1hbmFnZXIiLCJyZW1vdmVBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb25zIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhc0FjdGl2ZU1lZXRpbmciLCJsZWF2ZU1lZXRpbmciLCJ1c2VyRnVsbE5hbWUiLCJob3N0IiwibWUiLCJhdHRlbmRlZXMiLCJhIiwiY2hhaXJQZXJzb25JZCIsIm1lZGlhIiwiam9pbk1lZXRpbmciLCJjcmVhdGVQYXJ0aWNpcGFudHMiLCJzaGFyZVNjcmVlblByb2R1Y2VyRGF0YSIsInUiLCJhdmF0YXIiLCJwcm9kdWNlcnMiLCJjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyIsInVzZXJzIiwiZm9yRWFjaCIsInJlbW92ZUxvYWRlZEdyYXBoIiwiZW5kU2Vzc2lvbiIsIm9wZW5Db25maXJtRGlhbG9nIiwicmVzdWx0IiwiZW1pdFN5c3RlbUV2ZW50IiwiZGF0YSIsInRvUGFydGljaXBhbnRJZHMiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJwYXJ0aWNpcGFudElkcyIsInN5c3RlbUV2ZW50VHlwZSIsInJlY2lwaWVudHMiLCJyZWNvcmRNZWV0aW5nIiwibWVkaWFSZWNvcmRlciIsImluaXQiLCJ0aXRsZSIsInJlY29yZGluZyIsInN0b3BSZWNvcmRpbmdNZWV0aW5nIiwicHVibGlzaCIsImNyZWF0ZUVsZW1lbnQiLCJ3aWR0aCIsImhlaWdodCIsImJvcmRlciIsImJvcmRlclJhZGl1cyIsInBvc2l0aW9uIiwiY2xhc3NOYW1lIiwibWluV2lkdGgiLCJib3JkZXJCb3R0b20iLCJvbk11dGVWaWRlbyIsIm11dGVkIiwib25NdXRlQXVkaW8iLCJlbmRDYWxsIiwic2hvd0NoYXQiLCJzaG93UGVvcGxlIiwic2hhcmVTY3JlZW4iLCJzdG9wU2hhcmVTY3JlZW4iLCJzaG93TWludXRlcyIsImhpZGVNaW51dGVzIiwic2F2ZU1pbnV0ZXMiLCJjdXJyZW50Iiwic3RvcFJlY29yZGluZyIsInJhaXNlSGFuZCIsImxvd2VySGFuZCIsImlzQXVkaW9EZXZpY2VDb25uZWN0ZWQiLCJpc1ZpZGVvRGV2aWNlQ29ubmVjdGVkIiwiY29sb3IiLCJwYWRkaW5nIiwiZm9udFNpemUiLCJTWVNURU1fRVJST1JfTUVTU0FHRSIsIm1vZGUiLCJ2aWV3SWQiLCJtZWV0aW5nVGl0bGUiLCJldmVudEtleSIsIm1pbnV0ZXNEb2N1bWVudElkIiwib25HcmlkU2V0dXAiLCJzaGFyaW5nSGFuZGxlciIsIm9uU3RvcFNoYXJpbmciLCJvblN0YXJ0U2hhcmluZyIsIm9uU3RhcnRTaG93aW5nTWludXRlcyIsIm9uU3RvcFNob3dpbmdNaW51dGVzIiwib25BdWRpb0RldmljZUNoYW5nZSIsImRldmljZSIsIm9uSG9zdEF1ZGlvTXV0ZSIsIm9uSG9zdFZpZGVvTXV0ZSIsImNsb3NlSGFuZGxlciIsInRhYiIsInJpZ2h0IiwiYm90dG9tIiwidmFyaWFudCIsInNob3ciLCJkaXNtaXNzaWJsZSIsIm9uQ2xvc2UiLCJmYWRlIiwicGFkZGluZ0JvdHRvbSIsIm1hcmdpblRvcCIsIkZyYWdtZW50IiwiZGlzcGxheSIsImhpZGRlbiIsInBsYXlzSW5saW5lIiwiYXV0b1BsYXkiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvVHJhaW5pbmdSb29tLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHtGcmFnbWVudCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0ICcuL1ZpZGVvLmNzcyc7XG5pbXBvcnQgSWNvbiBmcm9tICcuLi9JY29uJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBUb29sYmFyIGZyb20gJy4vVG9vbGJhcic7XG5pbXBvcnQge1NZU1RFTV9FUlJPUl9NRVNTQUdFfSBmcm9tICcuL1ZDUm9vbSc7XG5pbXBvcnQgVkNSb29tV29ya3NwYWNlIGZyb20gJy4vVkNSb29tV29ya3NwYWNlJztcbmltcG9ydCB7VkNFdmVudFR5cGV9IGZyb20gJy4vVkNFdmVudFR5cGUnO1xuaW1wb3J0IEFsZXJ0IGZyb20gJ3JlYWN0LWJvb3RzdHJhcC9BbGVydCc7XG5pbXBvcnQgdmNFdmVudE1hbmFnZXIgZnJvbSAnLi9WQ0V2ZW50TWFuYWdlcic7XG5pbXBvcnQgc29ja2V0TWFuYWdlciBmcm9tICcuLi9Tb2NrZXRNYW5hZ2VyJztcbmltcG9ydCBDbG9zYWJsZVBhbmVsIGZyb20gJy4vQ2xvc2FibGVQYW5lbCc7XG5pbXBvcnQgU2lkZUJhckNvbnRlbnQgZnJvbSAnLi9TaWRlQmFyQ29udGVudCc7XG5pbXBvcnQgdXNlQ29udGFpbmVyV2lkdGggZnJvbSAnLi4vLi4vaG9va3MvdXNlQ29udGFpbmVyV2lkdGgnO1xuaW1wb3J0IG1lZGlhUmVjb3JkZXIgZnJvbSAnLi9WQ1Jvb21SZWNvcmRlcic7XG5pbXBvcnQge3NlbmRSZXF1ZXN0fSBmcm9tICcuLi8uLi9SZXN0VXRpbHMnO1xuaW1wb3J0IG1lZGlhIGZyb20gJy4uLy4uL2pzL01lZGlhJztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5cbmNvbnN0IFN0YXR1cyA9IHtcbiAgICBMT0JCWTogJ0xPQkJZJyxcbiAgICBTRVNTSU9OOiAnU0VTU0lPTicsXG4gICAgU0VTU0lPTl9FTkRFRDogJ1NFU1NJT05fRU5ERUQnLFxuICAgIFNZU1RFTV9FUlJPUjogJ1NZU1RFTV9FUlJPUicsXG4gICAgQ09OTkVDVElPTl9FUlJPUjogJ0NPTk5FQ1RJT05fRVJST1InLFxuICAgIFNUUkVBTV9FUlJPUjogJ1NUUkVBTV9FUlJPUidcbn07XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmNvbnN0IFRyYWluaW5nUm9vbSA9IFJlYWN0Lm1lbW8oUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuXG4gICAgY29uc3QgcmVjb3JkUmVmID0gdXNlUmVmKCk7XG4gICAgY29uc3QgW2hhc1VucmVhZENoYXRzLCBzZXRIYXNVbnJlYWRDaGF0c10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbcGFydGljaXBhbnRzLCBzZXRQYXJ0aWNpcGFudHNdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtoYW5kUmFpc2VkLCBzZXRIYW5kUmFpc2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbaXNSZWNvcmRpbmcsIHNldElzUmVjb3JkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdmlkZW9EaXNhYmxlZF0gPSB1c2VTdGF0ZShwcm9wcy52aWRlb0Rpc2FibGVkKTtcbiAgICBjb25zdCBbYXVkaW9EaXNhYmxlZCwgc2V0QXVkaW9EaXNhYmxlZF0gPSB1c2VTdGF0ZShwcm9wcy5hdWRpb0Rpc2FibGVkKTtcbiAgICBjb25zdCBbdmlkZW9NdXRlZCwgc2V0VmlkZW9NdXRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbYXVkaW9NdXRlZCwgc2V0QXVkaW9NdXRlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbZGlzcGxheVN0YXRlLCBzZXREaXNwbGF5U3RhdGVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Jvb21TdGF0dXMsIHNldFJvb21TdGF0dXNdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NvbWVvbmVTaGFyaW5nLCBzZXRTb21lb25lU2hhcmluZ10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbc2lkZUJhck9wZW4sIHNldFNpZGVCYXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc2lkZUJhclRhYiwgc2V0U2lkZUJhclRhYl0gPSB1c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW2FsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0LCBzZXRBbGxVc2VyUGFydGljaXBhbnRzTGVmdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2xvYmJ5V2FpdGluZ0xpc3QsIHNldExvYmJ5V2FpdGluZ0xpc3RdID0gdXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFtpc0hvc3QsIHNldElzSG9zdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzQ2hhaXJQZXJzb24sIHNldElzQ2hhaXJQZXJzb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFttZWV0aW5nUGFydGljaXBhbnRHcmlkTW9kZSwgc2V0TWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGVdID0gdXNlU3RhdGUoJ0RFRkFVTFQnKTtcbiAgICBjb25zdCBbYXV0b1Blcm1pdCwgc2V0QXV0b1Blcm1pdF0gPSB1c2VTdGF0ZSghcHJvcHMuY2FsZW5kYXJFdmVudC5hc2tUb0pvaW4pO1xuICAgIGNvbnN0IFtydHBDYXBhYmlsaXRpZXMsIHNldFJ0cENhcGFiaWxpdGllc10gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbYWN0aXZpdHlNZXNzYWdlLCBzZXRBY3Rpdml0eU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgLy8gUGVyc2lzdGVudCwgYWN0aW9uYWJsZSBlcnJvciBiYW5uZXIgKGUuZy4gbWVkaWEgcmVjb25uZWN0aW9uIGdhdmUgdXApLlxuICAgIGNvbnN0IFtyZWNvbm5lY3RFcnJvciwgc2V0UmVjb25uZWN0RXJyb3JdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW29ubG9hZFNjcmVlblNoYXJlRGF0YSwgc2V0T25sb2FkU2NyZWVuU2hhcmVEYXRhXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtjaGF0TWVzc2FnZSwgc2V0Q2hhdE1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2NoYXRTZW5kZXIsIHNldENoYXRTZW5kZXJdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2N1cnJlbnRVc2VyRnVsbE5hbWUsIHNldEN1cnJlbnRVc2VyRnVsbE5hbWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2V2ZW50SGFuZGxlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW21lZXRpbmdDaGF0LCBzZXRNZWV0aW5nQ2hhdF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbc2NyZWVuU2hhcmVkLCBzZXRTY3JlZW5TaGFyZWRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3N0YXJ0U2NyZWVuU2hhcmluZywgc2V0U3RhcnRTY3JlZW5TaGFyaW5nXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbcmFpc2VkSGFuZHMsIHNldFJhaXNlZEhhbmRzXSA9IHVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbbWludXRlc1Nob3duLCBzZXRNaW51dGVzU2hvd25dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtzdGFydFNob3dpbmdNaW51dGVzLCBzZXRTdGFydFNob3dpbmdNaW51dGVzXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCB2Y1Jvb21Xb3Jrc3BhY2VSZWYgPSB1c2VSZWYoKTtcblxuICAgIC8vIExheW91dCByZXNwb25kcyB0byB0aGUgcm9vbSdzIG93biB3aWR0aCAoaXQgbGl2ZXMgaW5zaWRlIFdpbmRvd1ZpZXdQb3J0LFxuICAgIC8vIHNvIHZpZXdwb3J0IGJyZWFrcG9pbnRzIGFyZSB3cm9uZykuIEJlbG93IHRoaXMgdGhlIHNpZGViYXIgb3ZlcmxheXMgdGhlXG4gICAgLy8gd29ya3NwYWNlIGluc3RlYWQgb2YgZG9ja2luZyBiZXNpZGUgaXQgKHdoaWNoIHNxdWFzaGVkIHRoZSB2aWRlbykuXG4gICAgY29uc3QgW3Jvb3RSZWYsIHJvb3RXaWR0aF0gPSB1c2VDb250YWluZXJXaWR0aCgpO1xuICAgIGNvbnN0IG5hcnJvd0xheW91dCA9IHJvb3RXaWR0aCA+IDAgJiYgcm9vdFdpZHRoIDwgNjgwO1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9hZENoYXRzICgpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTE9BRElORyBDSEFUUycpO1xuICAgICAgICAgICAgICAgIGZldGNoQ2hhdHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdtZWV0aW5nLXJvb20tJyArIHByb3BzLmNhbGVuZGFyRXZlbnQuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHBhcnRpY2lwYW50cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFydGljaXBhbnRzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiAoZXZlbnRUeXBlLCBiZSkgPT4ge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuUkVRVUVTVF9UT19KT0lOX01FRVRJTkc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5VU0VSX0pPSU5FRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFVzZXIoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5VU0VSX0xFRlRfTUVFVElORzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVVzZXIoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRDpcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQVZTZXR0aW5nc0NoYW5nZShiZT8ucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5TWVNURU1fRVZFTlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5SQUlTRV9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25SYWlzZUhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5MT1dFUl9IQU5EOlxuICAgICAgICAgICAgICAgICAgICAgICAgb25Mb3dlckhhbmQoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhbmdVcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVEOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DSEFUX01FU1NBR0U6XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk1lc3NhZ2UoYmUucGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBWQ0V2ZW50VHlwZS5DT05TVU1FUl9UUkFOU1BPUlRfRkFJTEVEOlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZ1VwKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ29ubmVjdGlvbiBlcnJvciAtIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbiBhbmQgcmUtam9pbiB0aGUgbWVldGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgVkNFdmVudFR5cGUuU1lTVEVNX0FMRVJUOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVjb25uZWN0RXJyb3IoYmUucGF5bG9hZCAmJiBiZS5wYXlsb2FkLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGJlLnBheWxvYWQubWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ0EgY29ubmVjdGlvbiBwcm9ibGVtIG9jY3VycmVkLiBQbGVhc2UgcmVqb2luIHRoZSBtZWV0aW5nLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBvbk1lc3NhZ2UgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICBpZihzaWRlQmFyVGFiICE9PSAnQ2hhdCcpIHtcbiAgICAgICAgICAgIGxldCBjaGF0TWVzc2FnZSA9IG1lc3NhZ2UuY2hhdE1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAoYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUgIT09IGNoYXRNZXNzYWdlLnBhcnRpY2lwYW50LnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlTWVzc2FnZUFycml2ZWQoe1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGF0TWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lICsgXCIgXCIgKyBjaGF0TWVzc2FnZS5wYXJ0aWNpcGFudC5uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICArIChjaGF0TWVzc2FnZS5jb250ZW50ICYmIGNoYXRNZXNzYWdlLmNvbnRlbnQudHJpbSgpLmxlbmd0aCA+IDAgPyBcIiAtIFwiICsgY2hhdE1lc3NhZ2UuY29udGVudCA6ICcnKVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgc2V0SGFzVW5yZWFkQ2hhdHModHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvblJhaXNlSGFuZCA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHJhaXNlZEhhbmRzLnB1c2gocGF5bG9hZC51c2VySWQpO1xuICAgICAgICBzZXRSYWlzZWRIYW5kcyhbXS5jb25jYXQocmFpc2VkSGFuZHMpKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25Mb3dlckhhbmQgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocmFpc2VkSGFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbGV0IGluZGV4ID0gcmFpc2VkSGFuZHMuZmluZEluZGV4KChwKSA9PiBwID09PSBwYXlsb2FkLnVzZXJJZCk7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHJhaXNlZEhhbmRzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRSYWlzZWRIYW5kcyhbXS5jb25jYXQocmFpc2VkSGFuZHMpKTtcbiAgICB9O1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG1lZXRpbmdDaGF0KSB7XG4gICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdDaGF0Jyk7XG4gICAgICAgICAgICBzZXRTaWRlQmFyT3Blbih0cnVlKTtcbiAgICAgICAgICAgIHNldEhhc1VucmVhZENoYXRzKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH0sIFttZWV0aW5nQ2hhdF0pO1xuXG4gICAgY29uc3QgZmV0Y2hDaGF0cyA9ICgpID0+IHtcbiAgICAgICAgc2VuZFJlcXVlc3QoYCR7bG9jYXRpb24gKyAnLycgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKX0vY2FsZW5kYXIvYXBpL3YxL2NoYXQvZmV0Y2hNZWV0aW5nQ2hhdC8ke3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9YCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRkVUQ0ggQ0hBVCBSRVNQT05TRSA6ICcsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5pZCkge1xuICAgICAgICAgICAgICAgIHNldE1lZXRpbmdDaGF0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgKGUpID0+IHtcblxuICAgICAgICB9LCB0cnVlLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9uQVZTZXR0aW5nc0NoYW5nZSA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmKHBheWxvYWQpIHtcbiAgICAgICAgICAgIGxldCBwYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50cy5maW5kKChwKSA9PiBwLnVzZXJJZCA9PT0gcGF5bG9hZC51c2VySWQpO1xuICAgICAgICAgICAgaWYgKHBhcnRpY2lwYW50KSB7XG4gICAgICAgICAgICAgICAgcGFydGljaXBhbnQuYXVkaW9NdXRlZCA9IHBheWxvYWQuYXVkaW9NdXRlZDtcbiAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudC52aWRlb011dGVkID0gcGF5bG9hZC52aWRlb011dGVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5maXJlRXZlbnQoVkNFdmVudFR5cGUuQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRUQsIHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCkge1xuICAgICAgICBzb2NrZXRNYW5hZ2VyLmVtaXRFdmVudChWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCwge1xuICAgICAgICAgICAgbWVldGluZ0lkOiBwcm9wcy5jYWxlbmRhckV2ZW50LmlkLFxuICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSxcbiAgICAgICAgICAgIGF1ZGlvTXV0ZWQ6IGF1ZGlvTXV0ZWQsXG4gICAgICAgICAgICB2aWRlb011dGVkOiB2aWRlb011dGVkXG4gICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoYXVkaW9NdXRlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgb25BVlNldHRpbmdzQ2hhbmdlKHtcbiAgICAgICAgICAgICAgICB1c2VySWQ6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lLFxuICAgICAgICAgICAgICAgIHZpZGVvTXV0ZWQsXG4gICAgICAgICAgICAgICAgYXVkaW9NdXRlZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVtaXRBVlNldHRpbmdzQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9LCBbYXVkaW9NdXRlZF0pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHZpZGVvTXV0ZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIG9uQVZTZXR0aW5nc0NoYW5nZSh7XG4gICAgICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSxcbiAgICAgICAgICAgICAgICB2aWRlb011dGVkLFxuICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBlbWl0QVZTZXR0aW5nc0NoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfSwgW3ZpZGVvTXV0ZWRdKTtcblxuICAgIGNvbnN0IGhhbmRsZU1lc3NhZ2VBcnJpdmVkID0gKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChyb29tU3RhdHVzID09PSBTdGF0dXMuU0VTU0lPTiAmJiBldmVudC5tZXNzYWdlICYmIGV2ZW50Lm1lc3NhZ2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0QWN0aXZpdHlNZXNzYWdlKGV2ZW50Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRBY3Rpdml0eU1lc3NhZ2UobnVsbCk7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KG1lc3NhZ2VUaW1lb3V0KTtcbiAgICAgICAgICAgIH0sIDQwMDApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGFkZFVzZXIgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQUREIFVTRVIgOiAnLCBwYXlsb2FkKTtcbiAgICAgICAgYWRkVXNlclRvUGFydGljaXBhbnRzKHBheWxvYWQudXNlcik7XG4gICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KGZhbHNlKTtcbiAgICAgICAgaWYgKHJvb21TdGF0dXMgPT09IFN0YXR1cy5MT0JCWSkge1xuICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU0VTU0lPTik7XG4gICAgICAgICAgICBzZXRTaWRlQmFyVGFiKCdQZW9wbGUnKTtcbiAgICAgICAgICAgIHNldFNpZGVCYXJPcGVuKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaGFuZGxlTWVzc2FnZUFycml2ZWQoe1xuICAgICAgICAgICAgbWVzc2FnZTogcGF5bG9hZC51c2VyLm5hbWUgKyAnIGhhcyBqb2luZWQnXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCByZW1vdmVVc2VyID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaWQgPT09IHBheWxvYWQubWVldGluZ0lkKSB7XG4gICAgICAgICAgICBjb25zdCB1c2VySWQgPSBwYXlsb2FkLnVzZXJJZDtcbiAgICAgICAgICAgIGNvbnN0IGZpbmQgPSBwYXJ0aWNpcGFudHMuZmluZCgocCkgPT4gcC51c2VySWQgPT09IHVzZXJJZCk7XG4gICAgICAgICAgICBpZiAoZmluZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BhcnRpY2lwYW50cyA9IHBhcnRpY2lwYW50cy5maWx0ZXIoKHApID0+IHAudXNlcklkICE9PSB1c2VySWQpO1xuICAgICAgICAgICAgICAgIHNldFBhcnRpY2lwYW50cyhuZXdQYXJ0aWNpcGFudHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZXdQYXJ0aWNpcGFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5MT0JCWSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZVNpZGViYXJUb2dnbGUgPSAoZSkgPT4ge1xuICAgICAgICBsZXQgcGFwZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVldGluZ0RpYWxvZ1BhcGVyJyk7XG4gICAgICAgIGlmIChlLmRldGFpbC5vcGVuKSB7XG4gICAgICAgICAgICBwYXBlci5zdHlsZS5tYXJnaW4gPSAnNTRweCAwIDAgMTM2cHgnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFwZXIuc3R5bGUubWFyZ2luID0gJzU0cHggMCAwIDAnO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGV2ZW50SGFuZGxlci5hcGkgPSBoYW5kbGVyKCk7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5zZXR0aW5ncykge1xuICAgICAgICAgICAgc2V0QXVkaW9NdXRlZCghcHJvcHMuc2V0dGluZ3MuYXVkaW9Pbik7XG4gICAgICAgICAgICBzZXRWaWRlb011dGVkKCFwcm9wcy5zZXR0aW5ncy52aWRlb09uKTtcbiAgICAgICAgfVxuICAgIH0sIFtwcm9wcy5zZXR0aW5nc10pO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaGFuZFJhaXNlZCkpIHtcbiAgICAgICAgICAgIGlmIChoYW5kUmFpc2VkKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuUkFJU0VfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5lbWl0RXZlbnQoVkNFdmVudFR5cGUuTE9XRVJfSEFORCwge1xuICAgICAgICAgICAgICAgICAgICByb29tSWQ6IHByb3BzLmNhbGVuZGFyRXZlbnQuaWQsXG4gICAgICAgICAgICAgICAgICAgIHVzZXJJZDogYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUsXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH0sIFtoYW5kUmFpc2VkXSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hZGRBcHBsaWNhdGlvbkNvbnRleHRTdWJzY3JpcHRpb24oe1xuICAgICAgICAgICAgaGFuZGxlcjoge1xuICAgICAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0cmFpbmluZy1yb29tJztcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uQ29udGV4dENoYW5nZTogKGNvbnRleHQsIG5ld1ZhbHVlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMobmV3VmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoKGtleSkgPT4ga2V5ID09PSAnd2luZG93RGlzcGxheVN0YXRlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShuZXdWYWx1ZXMud2luZG93RGlzcGxheVN0YXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKChpbml0aWFsQ29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldERpc3BsYXlTdGF0ZShpbml0aWFsQ29udGV4dCA/IGluaXRpYWxDb250ZXh0LndpbmRvd0Rpc3BsYXlTdGF0ZSA6ICdNQVhJTUlaRUQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHZjRXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGVyLCBWQ0V2ZW50VHlwZS5SRVFVRVNUX1RPX0pPSU5fTUVFVElORywgVkNFdmVudFR5cGUuVVNFUl9KT0lORUQsIFZDRXZlbnRUeXBlLlVTRVJfTEVGVF9NRUVUSU5HLFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU1lTVEVNX0VWRU5ULCBWQ0V2ZW50VHlwZS5TT0NLRVRfQ09OTkVDVCwgVkNFdmVudFR5cGUuU09DS0VUX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLlJBSVNFX0hBTkQsIFZDRXZlbnRUeXBlLkxPV0VSX0hBTkQsXG4gICAgICAgICAgICBWQ0V2ZW50VHlwZS5QRUVSX0RJU0NPTk5FQ1QsIFZDRXZlbnRUeXBlLkNPTlNVTUVSX1RSQU5TUE9SVF9GQUlMRUQsIFZDRXZlbnRUeXBlLkNSRUFURV9UUkFOU1BPUlRfRkFJTEVELFxuICAgICAgICAgICAgVkNFdmVudFR5cGUuU0hBUklOR19TVE9QUEVELCBWQ0V2ZW50VHlwZS5FTkRfU0VTU0lPTiwgVkNFdmVudFR5cGUuQ0hBVF9NRVNTQUdFLCBWQ0V2ZW50VHlwZS5BVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCxcbiAgICAgICAgICAgIFZDRXZlbnRUeXBlLlNZU1RFTV9BTEVSVCk7XG5cbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICB2Y0V2ZW50TWFuYWdlci5yZW1vdmVTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxlcik7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIucmVtb3ZlQXBwbGljYXRpb25Db250ZXh0U3Vic2NyaXB0aW9ucygndHJhaW5pbmctcm9vbScpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2lkZUJhclRvZ2dsZUV2ZW50JywgaGFuZGxlU2lkZWJhclRvZ2dsZSk7XG5cbiAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaGFzQWN0aXZlTWVldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc29ja2V0TWFuYWdlci5sZWF2ZU1lZXRpbmcocHJvcHMuY2FsZW5kYXJFdmVudC5pZCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEhhc0FjdGl2ZU1lZXRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRBY3RpdmVNZWV0aW5nS2V5KG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5zZXRIYXNBY3RpdmVNZWV0aW5nKHRydWUpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShwcm9wcy5jYWxlbmRhckV2ZW50LmtleSk7XG4gICAgICAgIGxldCB1c2VyRnVsbE5hbWU7XG5cbiAgICAgICAgaWYgKHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWUpIHtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC5uYW1lO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gR3VhcmQ6IHRoZSBjdXJyZW50IHVzZXIgbWF5IG5vdCBiZSBpbiBhdHRlbmRlZXMgKGRhdGEgZHJpZnQpIOKAlCBkb24ndCBjcmFzaDtcbiAgICAgICAgICAgIC8vIGZhbGwgYmFjayB0byB0aGUgdXNlcm5hbWUgc28gY3VycmVudFVzZXJGdWxsTmFtZSBzdGF5cyB0cnV0aHkgKGdhdGVzIHRoZSByb29tIHJlbmRlcikuXG4gICAgICAgICAgICBjb25zdCBtZSA9IHByb3BzLmNhbGVuZGFyRXZlbnQuYXR0ZW5kZWVzLmZpbmQoKGEpID0+IGEudXNlcm5hbWUgPT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKTtcbiAgICAgICAgICAgIHVzZXJGdWxsTmFtZSA9IG1lID8gbWUubmFtZSA6IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0Q3VycmVudFVzZXJGdWxsTmFtZSh1c2VyRnVsbE5hbWUpO1xuICAgICAgICBzZXRJc0hvc3QocHJvcHMuY2FsZW5kYXJFdmVudC5ob3N0LnVzZXJuYW1lID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG4gICAgICAgIHNldElzQ2hhaXJQZXJzb24ocHJvcHMuY2FsZW5kYXJFdmVudC5jaGFpclBlcnNvbklkID09PSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG1lZGlhLmpvaW5NZWV0aW5nKHByb3BzLmNhbGVuZGFyRXZlbnQsIHByb3BzLnNldHRpbmdzLCB1c2VyRnVsbE5hbWUpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdKT0lOIFJFU1BPTlNFIDogJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgICAgICBjcmVhdGVQYXJ0aWNpcGFudHMocmVzcG9uc2UucGFydGljaXBhbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0UnRwQ2FwYWJpbGl0aWVzKHJlc3BvbnNlLnJ0cENhcGFiaWxpdGllcyk7XG4gICAgICAgICAgICAgICAgICAgIHNldE9ubG9hZFNjcmVlblNoYXJlRGF0YShyZXNwb25zZS5zaGFyZVNjcmVlblByb2R1Y2VyRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIHNldFJvb21TdGF0dXMocGFydGljaXBhbnRzLmxlbmd0aCA+IDAgPyBTdGF0dXMuU0VTU0lPTiA6IFN0YXR1cy5MT0JCWSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgc2V0Um9vbVN0YXR1cyhTdGF0dXMuU1lTVEVNX0VSUk9SKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0QWN0aXZlTWVldGluZ0tleShudWxsKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBmdW5jdGlvbiBhZGRVc2VyVG9QYXJ0aWNpcGFudHModXNlcikge1xuICAgICAgICAvLyBUeXBpY2FsbHksIGEgdXNlciBzaG91ZCBub3QgZXhpc3QuIFdlIGFyZSBlbnN1cmluZyB0aGF0IHRoZXJlIGFyZSBuZXZlciBkdXBsaWNhdGVzXG4gICAgICAgIGNvbnNvbGUubG9nKHBhcnRpY2lwYW50cyk7XG4gICAgICAgIGxldCBwYXJ0aWNpcGFudCA9IHBhcnRpY2lwYW50cy5maW5kKCh1KSA9PiB1LnVzZXJJZCA9PT0gdXNlci51c2VySWQpO1xuICAgICAgICBpZiAocGFydGljaXBhbnQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50Lm5hbWUgPSB1c2VyLm5hbWU7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudC5hdmF0YXIgPSB1c2VyLmF2YXRhcjtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50LmF1ZGlvTXV0ZWQgPSB1c2VyLmF1ZGlvTXV0ZWQ7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudC52aWRlb011dGVkID0gdXNlci52aWRlb011dGVkO1xuICAgICAgICAgICAgcGFydGljaXBhbnQucHJvZHVjZXJzID0gdXNlci5wcm9kdWNlcnM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudCA9IHtcbiAgICAgICAgICAgICAgICB1c2VySWQ6IHVzZXIudXNlcklkLFxuICAgICAgICAgICAgICAgIG5hbWU6IHVzZXIubmFtZSxcbiAgICAgICAgICAgICAgICBhdmF0YXI6IHVzZXIuYXZhdGFyLFxuICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWQ6IHVzZXIuYXVkaW9NdXRlZCxcbiAgICAgICAgICAgICAgICB2aWRlb011dGVkOiB1c2VyLnZpZGVvTXV0ZWQsXG4gICAgICAgICAgICAgICAgcHJvZHVjZXJzOiB1c2VyLnByb2R1Y2Vyc1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcGFydGljaXBhbnRzLnB1c2gocGFydGljaXBhbnQpO1xuICAgICAgICAgICAgc2V0UGFydGljaXBhbnRzKFtdLmNvbmNhdChwYXJ0aWNpcGFudHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzID0gKHVzZXJJZCwgYXVkaW9NdXRlZCwgdmlkZW9NdXRlZCkgPT4ge1xuXG4gICAgfTtcblxuICAgIGNvbnN0IGNyZWF0ZVBhcnRpY2lwYW50cyA9ICh1c2VycykgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQUxMIFVTRVJTIHJlY2VpdmVkIGFuZCBjcmVhdGluZyBwYXJ0aWNpcGFudHMgOiAnLCB1c2Vycyk7XG4gICAgICAgIHVzZXJzLmZvckVhY2goKHVzZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBRERJTkcgSVRFTSBUTyBQQVJUSUNJUEFOVFMgOiAnLCB1c2VyKTtcbiAgICAgICAgICAgIGFkZFVzZXJUb1BhcnRpY2lwYW50cyh1c2VyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0QWxsVXNlclBhcnRpY2lwYW50c0xlZnQoZmFsc2UpO1xuICAgICAgICBpZiAocGFydGljaXBhbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChyb29tU3RhdHVzID09PSBTdGF0dXMuTE9CQlkpIHtcbiAgICAgICAgICAgICAgICBzZXRSb29tU3RhdHVzKFN0YXR1cy5TRVNTSU9OKTtcbiAgICAgICAgICAgICAgICBzZXRTaWRlQmFyT3Blbih0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5nVXAgPSAoKSA9PiB7XG4gICAgICAgIHNvY2tldE1hbmFnZXIubGVhdmVNZWV0aW5nKHByb3BzLmNhbGVuZGFyRXZlbnQuaWQpO1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5yZW1vdmVMb2FkZWRHcmFwaCgnd2luZG93Jyk7XG4gICAgICAgIHNldFNpZGVCYXJPcGVuKGZhbHNlKTtcbiAgICAgICAgc2V0U2lkZUJhclRhYignJyk7XG4gICAgfTtcblxuICAgIGNvbnN0IGVuZFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5vcGVuQ29uZmlybURpYWxvZyhcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBlbmQgdGhlIGN1cnJlbnQgc2Vzc2lvbj9cIiwgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHNvY2tldE1hbmFnZXIuZW5kU2Vzc2lvbihwcm9wcy5jYWxlbmRhckV2ZW50LmlkKTtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuc2V0SGFzQWN0aXZlTWVldGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnNldEFjdGl2ZU1lZXRpbmdLZXkobnVsbCk7XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnJlbW92ZUxvYWRlZEdyYXBoKCd3aW5kb3cnKTtcbiAgICAgICAgICAgICAgICBzZXRTaWRlQmFyT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2V0U2lkZUJhclRhYignJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBlbWl0U3lzdGVtRXZlbnQgPSAoZXZlbnRUeXBlLCBkYXRhLCB0b1BhcnRpY2lwYW50SWRzID0gbnVsbCkgPT4ge1xuICAgICAgICBsZXQgcGFydGljaXBhbnRJZHMgPSBbXTtcbiAgICAgICAgaWYgKCF0b1BhcnRpY2lwYW50SWRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50IG9mIHBhcnRpY2lwYW50cykge1xuICAgICAgICAgICAgICAgIGlmIChwYXJ0aWNpcGFudC51c2VySWQgIT09IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50SWRzLnB1c2gocGFydGljaXBhbnQudXNlcklkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJ0aWNpcGFudElkcyA9IHBhcnRpY2lwYW50SWRzLmNvbmNhdCh0b1BhcnRpY2lwYW50SWRzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNvY2tldE1hbmFnZXIuZW1pdEV2ZW50KFZDRXZlbnRUeXBlLlNZU1RFTV9FVkVOVCwge1xuICAgICAgICAgICAgc3lzdGVtRXZlbnRUeXBlOiBldmVudFR5cGUsXG4gICAgICAgICAgICByZWNpcGllbnRzOiBwYXJ0aWNpcGFudElkcyxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCByZWNvcmRNZWV0aW5nID0gKCkgPT4ge1xuICAgICAgICBtZWRpYVJlY29yZGVyLmluaXQocHJvcHMuY2FsZW5kYXJFdmVudC5pZCwgcHJvcHMuY2FsZW5kYXJFdmVudC50aXRsZSk7XG4gICAgICAgIHNldElzUmVjb3JkaW5nKHRydWUpO1xuICAgICAgICBlbWl0U3lzdGVtRXZlbnQoJ01FRVRJTkdfUkVDT1JESU5HJywge1xuICAgICAgICAgICAgcmVjb3JkaW5nOiB0cnVlLFxuICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZVxuICAgICAgICB9KTtcblxuICAgICAgICBtZWRpYVJlY29yZGVyLnJlY29yZE1lZXRpbmcoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RvcFJlY29yZGluZ01lZXRpbmcgPSAocHVibGlzaCA9IHRydWUpID0+IHtcbiAgICAgICAgc2V0SXNSZWNvcmRpbmcoZmFsc2UpO1xuXG4gICAgICAgIGlmIChwdWJsaXNoKSB7XG4gICAgICAgICAgICBlbWl0U3lzdGVtRXZlbnQoJ01FRVRJTkdfUkVDT1JESU5HJywge1xuICAgICAgICAgICAgICAgIHJlY29yZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgdXNlcklkOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS51c2VybmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBtZWRpYVJlY29yZGVyLnN0b3BSZWNvcmRpbmdNZWV0aW5nKCk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIHJlZj17cm9vdFJlZn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2UyZTJlMicsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xuICAgICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgZmxleC1ub3dyYXAgbm8tbWFyZ2luIG5vLXBhZGRpbmcgdy0xMDAgaC0xMDAnfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCBuby1tYXJnaW4gbm8tcGFkZGluZyd9IHN0eWxlPXt7bWluV2lkdGg6ICcyODBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cgbm8tbWFyZ2luIG5vLXBhZGRpbmcgdy0xMDAgaC0xMDAnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzgwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbTogJzFweCBzb2xpZCAjZTJlMmUyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyIGV2ZW50SGFuZGxlcj17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk11dGVWaWRlbzogKG11dGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRWaWRlb011dGVkKG11dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NdXRlQXVkaW86IChtdXRlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXVkaW9NdXRlZChtdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZENhbGw6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmdVcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRTZXNzaW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRTZXNzaW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGF0OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaENoYXRzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQZW9wbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNpZGVCYXJUYWIoJ1Blb3BsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2lkZUJhck9wZW4odHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlU2NyZWVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNjcmVlblNoYXJpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3BTaGFyZVNjcmVlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2NyZWVuU2hhcmluZyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNaW51dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlTWludXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWludXRlc1Nob3duKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2hvd2luZ01pbnV0ZXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlTWludXRlczogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZjUm9vbVdvcmtzcGFjZVJlZi5jdXJyZW50ICYmIHZjUm9vbVdvcmtzcGFjZVJlZi5jdXJyZW50LnNhdmVNaW51dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmNSb29tV29ya3NwYWNlUmVmLmN1cnJlbnQuc2F2ZU1pbnV0ZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkTWVldGluZzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkTWVldGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wUmVjb3JkaW5nOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wUmVjb3JkaW5nTWVldGluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZUhhbmQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhhbmRSYWlzZWQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VySGFuZDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGFuZFJhaXNlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1VucmVhZENoYXRzPXtoYXNVbnJlYWRDaGF0c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWNpcGFudHM9e3BhcnRpY2lwYW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kUmFpc2VkPXtoYW5kUmFpc2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvRGlzYWJsZWQ9e3ZpZGVvRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9EaXNhYmxlZD17YXVkaW9EaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb011dGVkPXt2aWRlb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWQ9e2F1ZGlvTXV0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVN0YXRlPXtkaXNwbGF5U3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuU2hhcmVkPXtzY3JlZW5TaGFyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlc1Nob3duPXttaW51dGVzU2hvd259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cz17cm9vbVN0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0hvc3Q9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC51c2VybmFtZSA9PT0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkudXNlcm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b1Blcm1pdD17IXByb3BzLmNhbGVuZGFyRXZlbnQuaG9zdC5hc2tUb0pvaW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29tZW9uZVNoYXJpbmc9e3NvbWVvbmVTaGFyaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVjb3JkaW5nPXtpc1JlY29yZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZWRIYW5kcz17cmFpc2VkSGFuZHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBdWRpb0RldmljZUNvbm5lY3RlZD17cHJvcHMuc2V0dGluZ3MuaXNBdWRpb0RldmljZUNvbm5lY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZpZGVvRGV2aWNlQ29ubmVjdGVkPXtwcm9wcy5zZXR0aW5ncy5pc1ZpZGVvRGV2aWNlQ29ubmVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRpbmdJZD17cHJvcHMuY2FsZW5kYXJFdmVudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNZU1RFTV9FUlJPUiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjM1LCA2MywgMzMpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzMycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtTWVNURU1fRVJST1JfTUVTU0FHRX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tU3RhdHVzID09PSBTdGF0dXMuQ09OTkVDVElPTl9FUlJPUiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjM1LCA2MywgMzMpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzMycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IGNsYXNzTmFtZT17J2NlbnRlcmVkLWZsZXgtYm94J30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7U1lTVEVNX0VSUk9SX01FU1NBR0V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0cENhcGFiaWxpdGllcyAmJiBwYXJ0aWNpcGFudHMgJiYgY3VycmVudFVzZXJGdWxsTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChyb29tU3RhdHVzID09PSBTdGF0dXMuU0VTU0lPTiB8fCByb29tU3RhdHVzID09PSBTdGF0dXMuTE9CQlkpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZDUm9vbVdvcmtzcGFjZSByZWY9e3ZjUm9vbVdvcmtzcGFjZVJlZn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17cGFydGljaXBhbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT17bWVldGluZ1BhcnRpY2lwYW50R3JpZE1vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3SWQ9e3Byb3BzLnZpZXdJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvTXV0ZWQ9e2F1ZGlvTXV0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb011dGVkPXt2aWRlb011dGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ1RpdGxlPXtwcm9wcy5jYWxlbmRhckV2ZW50LnRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRLZXk9e3Byb3BzLmNhbGVuZGFyRXZlbnQua2V5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlc0RvY3VtZW50SWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQubWludXRlc0RvY3VtZW50SWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nSWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VXNlckZ1bGxOYW1lPXtjdXJyZW50VXNlckZ1bGxOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25HcmlkU2V0dXA9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NldFNpZGVCYXJUYWIoJ1Blb3BsZScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVCYXJUYWI9e3NpZGVCYXJUYWJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tU3RhdHVzPXtyb29tU3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3N0PXtpc0hvc3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0NoYWlyUGVyc29uPXtpc0NoYWlyUGVyc29ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTY3JlZW5TaGFyaW5nPXtzdGFydFNjcmVlblNoYXJpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyaW5nSGFuZGxlcj17KHNvbWVvbmVTaGFyaW5nKSA9PiBzZXRTb21lb25lU2hhcmluZyhzb21lb25lU2hhcmluZyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN0b3BTaGFyaW5nPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNjcmVlblNoYXJpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RhcnRTaGFyaW5nPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2NyZWVuU2hhcmVkKHRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhcnRTY3JlZW5TaGFyaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFNob3dpbmdNaW51dGVzPXtzdGFydFNob3dpbmdNaW51dGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdGFydFNob3dpbmdNaW51dGVzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWludXRlc1Nob3duKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFN0YXJ0U2hvd2luZ01pbnV0ZXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uU3RvcFNob3dpbmdNaW51dGVzPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TWludXRlc1Nob3duKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTdGFydFNob3dpbmdNaW51dGVzKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGVzU2hvd249e21pbnV0ZXNTaG93bn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9QZXJtaXQ9e2F1dG9QZXJtaXR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHBDYXBhYmlsaXRpZXM9e3J0cENhcGFiaWxpdGllc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlblNoYXJlZD17c2NyZWVuU2hhcmVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheVN0YXRlPXtkaXNwbGF5U3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmxvYWRTY3JlZW5TaGFyZURhdGE9e29ubG9hZFNjcmVlblNoYXJlRGF0YX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbFVzZXJQYXJ0aWNpcGFudHNMZWZ0PXthbGxVc2VyUGFydGljaXBhbnRzTGVmdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQXVkaW9EZXZpY2VDaGFuZ2U9eyhkZXZpY2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRBdWRpb0Rpc2FibGVkKFV0aWxzLmlzTnVsbChkZXZpY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkhvc3RBdWRpb011dGU9eyhwYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgdHJ1ZSwgcGFydGljaXBhbnQudmlkZW9NdXRlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0VmlkZW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VPdGhlclBhcnRpY2lwYW50QVZTZXR0aW5ncyhwYXJ0aWNpcGFudC51c2VySWQsIHBhcnRpY2lwYW50LmF1ZGlvTXV0ZWQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHNpZGVCYXJPcGVuICYmIHNpZGVCYXJUYWIgJiYgcm9vbVN0YXR1cyA9PT0gU3RhdHVzLlNFU1NJT04gJiZcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e25hcnJvd0xheW91dCA/ICdjbG9zYWJsZS1wYW5lbC1vdmVybGF5JyA6ICdjbG9zYWJsZS1wYW5lbC1jb250YWluZXInfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDbG9zYWJsZVBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VIYW5kbGVyPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlQmFyT3BlbihmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNpZGVCYXJUYWIobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17c2lkZUJhclRhYn1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2lkZUJhckNvbnRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVldGluZ0NoYXQ9e21lZXRpbmdDaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0hvc3Q9e2lzSG9zdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGFpclBlcnNvbj17aXNDaGFpclBlcnNvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiPXtzaWRlQmFyVGFifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWV0aW5nSWQ9e3Byb3BzLmNhbGVuZGFyRXZlbnQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpY2lwYW50cz17cGFydGljaXBhbnRzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkhvc3RBdWRpb011dGU9eyhwYXJ0aWNpcGFudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlT3RoZXJQYXJ0aWNpcGFudEFWU2V0dGluZ3MocGFydGljaXBhbnQudXNlcklkLCB0cnVlLCBwYXJ0aWNpcGFudC52aWRlb011dGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Ib3N0VmlkZW9NdXRlPXsocGFydGljaXBhbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZU90aGVyUGFydGljaXBhbnRBVlNldHRpbmdzKHBhcnRpY2lwYW50LnVzZXJJZCwgcGFydGljaXBhbnQuYXVkaW9NdXRlZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2xvc2FibGVQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICc0OHB4JyxcbiAgICAgICAgICAgICAgICBib3R0b206ICc0OHB4J1xuICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICBzaG93PXtyZWNvbm5lY3RFcnJvciAhPT0gbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgZGlzbWlzc2libGVcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0UmVjb25uZWN0RXJyb3IobnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e21hcmdpbjogMH19PntyZWNvbm5lY3RFcnJvcn08L3A+XG4gICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17J2luZm8nfVxuICAgICAgICAgICAgICAgICAgICBzaG93PXthY3Rpdml0eU1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PnthY3Rpdml0eU1lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydpbmZvJ31cbiAgICAgICAgICAgICAgICAgICAgc2hvdz17Y2hhdE1lc3NhZ2UgIT09IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGZhZGU9e3RydWV9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J3Jvdyd9IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJCb3R0b206ICcxcHggc29saWQgd2hpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogJzhweCdcbiAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2NvbCd9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsncm93J30+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17J0NIQVRfQlVCQkxFJ30vPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wnfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPXt7Y29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCknfX0+e2NoYXRTZW5kZXJ9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydyb3cnfSBzdHlsZT17e21hcmdpblRvcDogJzhweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnY29sJ30+PHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57Y2hhdE1lc3NhZ2V9PC9wPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgey8qSGlkZGVuIHZpZGVvIHRvIGNhcHR1cmUgcmVjb3JkaW5ncyovfVxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiAnbm9uZSd9fT5cbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW49e2ZhbHNlfSBtdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxheXNJbmxpbmUgYXV0b1BsYXkgcmVmPXtyZWNvcmRSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMjAwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzIwMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbiAgICAgICAgO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBUcmFpbmluZ1Jvb207XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBRCxz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
|
|
@@ -24,6 +24,7 @@ _defineProperty(VCEventType, "AUDIO_VISUAL_SETTINGS_CHANGED", "AUDIO_VISUAL_SETT
|
|
|
24
24
|
_defineProperty(VCEventType, "PARTICIPANT_IN_VIEW", "PARTICIPANT_IN_VIEW");
|
|
25
25
|
_defineProperty(VCEventType, "PARTICIPANT_OFF_VIEW", "PARTICIPANT_OFF_VIEW");
|
|
26
26
|
_defineProperty(VCEventType, "CONSUMER_TRANSPORT_FAILED", "CONSUMER_TRANSPORT_FAILED");
|
|
27
|
+
_defineProperty(VCEventType, "PRODUCER_TRANSPORT_FAILED", "PRODUCER_TRANSPORT_FAILED");
|
|
27
28
|
_defineProperty(VCEventType, "CREATE_TRANSPORT_FAILED", "CREATE_TRANSPORT_FAILED");
|
|
28
29
|
_defineProperty(VCEventType, "GET_LOBBY", "GET_LOBBY");
|
|
29
30
|
_defineProperty(VCEventType, "JOIN_MEETING", "JOIN_MEETING");
|
|
@@ -85,4 +86,5 @@ _defineProperty(VCEventType, "REQUEST_TO_JOIN_MEETING_ANSWERED", "REQUEST_TO_JOI
|
|
|
85
86
|
_defineProperty(VCEventType, "CONSUMER_CLOSED", "CONSUMER_CLOSED");
|
|
86
87
|
_defineProperty(VCEventType, "CANCEL_SCREEN_SHARE", "CANCEL_SCREEN_SHARE");
|
|
87
88
|
_defineProperty(VCEventType, "SHARING_STOPPED", "SHARING_STOPPED");
|
|
88
|
-
|
|
89
|
+
_defineProperty(VCEventType, "AUDIO_LEVEL", "AUDIO_LEVEL");
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJWQ0V2ZW50VHlwZSIsImV4cG9ydHMiLCJfZGVmaW5lUHJvcGVydHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbWVkaWEvVkNFdmVudFR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFZDRXZlbnRUeXBlIHtcblxuICAgIHN0YXRpYyBTRUNVUklUWV9UT0tFTlNfUkVGUkVTSEVEID0gXCJTRUNVUklUWV9UT0tFTlNfUkVGUkVTSEVEXCI7XG4gICAgc3RhdGljIFVOQVVUSE9SSVNFRF9BUElfQ0FMTCA9IFwiVU5BVVRIT1JJU0VEX0FQSV9DQUxMXCI7XG4gICAgc3RhdGljIEFQSV9FUlJPUiA9IFwiQVBJX0VSUk9SXCI7XG4gICAgc3RhdGljIEFQSV9TVUNDRVNTID0gXCJBUElfU1VDQ0VTU1wiO1xuICAgIHN0YXRpYyBXSElURUJPQVJEX0VWRU5UX0FSUklWRUQgPSBcIldISVRFQk9BUkRfRVZFTlRfQVJSSVZFRFwiO1xuICAgIHN0YXRpYyBBQ1RJVkVfQ0hBVF9DSEFOR0VEID0gXCJBQ1RJVkVfQ0hBVF9DSEFOR0VEXCI7XG4gICAgc3RhdGljIEZJUlNUX0NIQVRfQVJSSVZFRCA9IFwiRklSU1RfQ0hBVF9BUlJJVkVEXCI7XG4gICAgc3RhdGljIFNPQ0tFVF9DT05ORUNUID0gXCJTT0NLRVRfQ09OTkVDVFwiO1xuICAgIHN0YXRpYyBDQUxMX1JFSkVDVEVEID0gXCJDQUxMX1JFSkVDVEVEXCI7XG4gICAgc3RhdGljIFNPQ0tFVF9ESVNDT05ORUNUID0gXCJTT0NLRVRfRElTQ09OTkVDVFwiO1xuICAgIHN0YXRpYyBQRUVSX0RJU0NPTk5FQ1QgPSBcIlBFRVJfRElTQ09OTkVDVFwiO1xuICAgIHN0YXRpYyBBVURJT19WSVNVQUxfU0VUVElOR1NfQ0hBTkdFRCA9IFwiQVVESU9fVklTVUFMX1NFVFRJTkdTX0NIQU5HRURcIjtcbiAgICBzdGF0aWMgUEFSVElDSVBBTlRfSU5fVklFVyA9IFwiUEFSVElDSVBBTlRfSU5fVklFV1wiO1xuICAgIHN0YXRpYyBQQVJUSUNJUEFOVF9PRkZfVklFVyA9IFwiUEFSVElDSVBBTlRfT0ZGX1ZJRVdcIjtcbiAgICBzdGF0aWMgQ09OU1VNRVJfVFJBTlNQT1JUX0ZBSUxFRCA9IFwiQ09OU1VNRVJfVFJBTlNQT1JUX0ZBSUxFRFwiO1xuICAgIHN0YXRpYyBQUk9EVUNFUl9UUkFOU1BPUlRfRkFJTEVEID0gXCJQUk9EVUNFUl9UUkFOU1BPUlRfRkFJTEVEXCI7XG4gICAgc3RhdGljIENSRUFURV9UUkFOU1BPUlRfRkFJTEVEID0gXCJDUkVBVEVfVFJBTlNQT1JUX0ZBSUxFRFwiXG4gICAgc3RhdGljIEdFVF9MT0JCWSA9IFwiR0VUX0xPQkJZXCI7XG4gICAgc3RhdGljIEpPSU5fTUVFVElORyA9IFwiSk9JTl9NRUVUSU5HXCI7XG4gICAgc3RhdGljIENBTExfVVNFUiA9IFwiQ0FMTF9VU0VSXCI7XG4gICAgc3RhdGljIENBTExfTVVMVElQTEVfVVNFUiA9IFwiQ0FMTF9NVUxUSVBMRV9VU0VSXCI7XG4gICAgc3RhdGljIEFOU1dFUl9DQUxMID0gXCJBTlNXRVJfQ0FMTFwiO1xuICAgIHN0YXRpYyBTRU5ESU5HX1NJR05BTCA9IFwiU0VORElOR19TSUdOQUxcIjtcbiAgICBzdGF0aWMgVVNFUl9KT0lORUQgPSBcIlVTRVJfSk9JTkVEXCI7XG4gICAgc3RhdGljIFJFVFVSTklOR19TSUdOQUwgPSBcIlJFVFVSTklOR19TSUdOQUxcIjtcbiAgICBzdGF0aWMgUkVDRUlWSU5HX1JFVFVSTkVEX1NJR05BTCA9IFwiUkVDRUlWSU5HX1JFVFVSTkVEX1NJR05BTFwiO1xuICAgIHN0YXRpYyBVU0VSX0xFRlRfTUVFVElORyA9IFwiVVNFUl9MRUZUX01FRVRJTkdcIjtcbiAgICBzdGF0aWMgRU5EX01FRVRJTkcgPSBcIkVORF9NRUVUSU5HXCI7XG4gICAgc3RhdGljIEVORF9DQUxMID0gXCJFTkRfQ0FMTFwiO1xuICAgIHN0YXRpYyBMRUFWRV9NRUVUSU5HID0gXCJMRUFWRV9NRUVUSU5HXCI7XG4gICAgc3RhdGljIEVORF9TRVNTSU9OID0gXCJFTkRfU0VTU0lPTlwiO1xuICAgIHN0YXRpYyBDQUxMX0VOREVEID0gXCJDQUxMX0VOREVEXCI7XG4gICAgc3RhdGljIEFMTF9VU0VSUyA9IFwiQUxMX1VTRVJTXCI7XG4gICAgc3RhdGljIENBTkNFTF9DQUxMID0gXCJDQU5DRUxfQ0FMTFwiO1xuICAgIHN0YXRpYyBQRVJNSVNTSU9OID0gXCJQRVJNSVNTSU9OXCI7XG4gICAgc3RhdGljIE5PX1BFUk1JVF9SRVFVSVJFRCA9IFwiTk9fUEVSTUlUX1JFUVVJUkVEXCI7XG4gICAgc3RhdGljIEFMTE9XRUQgPSBcIkFMTE9XRURcIjtcbiAgICBzdGF0aWMgU1lTVEVNX0FDVElWSVRZID0gXCJTWVNURU1fQUNUSVZJVFlcIjtcbiAgICBzdGF0aWMgU1lTVEVNX0VWRU5UID0gXCJTWVNURU1fRVZFTlRcIjtcbiAgICBzdGF0aWMgREVOSUVEID0gXCJERU5JRURcIjtcbiAgICBzdGF0aWMgSk9JTl9NRUVUSU5HX1BFUk1JVCA9IFwiSk9JTl9NRUVUSU5HX1BFUk1JVFwiO1xuICAgIHN0YXRpYyBSRUNFSVZJTkdfQ0FMTCA9IFwiUkVDRUlWSU5HX0NBTExcIjtcbiAgICBzdGF0aWMgVVNFUlNfT05MSU5FID0gXCJVU0VSU19PTkxJTkVcIjtcbiAgICBzdGF0aWMgVVNFUl9PTkxJTkUgPSBcIlVTRVJfT05MSU5FXCI7XG4gICAgc3RhdGljIFVTRVJfT0ZGTElORSA9IFwiVVNFUl9PRkZMSU5FXCI7XG4gICAgc3RhdGljIFJFR0lTVEVSX09OTElORSA9IFwiUkVHSVNURVJfT05MSU5FXCI7XG4gICAgc3RhdGljIFBFUk1JVF9TVEFUVVMgPSBcIlBFUk1JVF9TVEFUVVNcIjtcbiAgICBzdGF0aWMgQ09OTkVDVF9FUlJPUiA9IFwiQ09OTkVDVF9FUlJPUlwiO1xuICAgIHN0YXRpYyBDT05ORUNUID0gXCJDT05ORUNUXCI7XG4gICAgc3RhdGljIEpPSU5fQ0hBVF9ST09NID0gXCJKT0lOX0NIQVRfUk9PTVwiO1xuICAgIHN0YXRpYyBDSEFUX01FU1NBR0UgPSBcIkNIQVRfTUVTU0FHRVwiO1xuICAgIHN0YXRpYyBERUxFVEVfQ0hBVF9NRVNTQUdFID0gXCJERUxFVEVfQ0hBVF9NRVNTQUdFXCI7XG4gICAgc3RhdGljIFJBSVNFX0hBTkQgPSBcIlJBSVNFX0hBTkRcIjtcbiAgICBzdGF0aWMgTE9XRVJfSEFORCA9IFwiTE9XRVJfSEFORFwiO1xuICAgIHN0YXRpYyBDSEFOR0VfSE9TVCA9IFwiQ0hBTkdFX0hPU1RcIjtcbiAgICBzdGF0aWMgVE9HR0xFX1JFQ09SRF9NRUVUSU5HID0gXCJUT0dHTEVfUkVDT1JEX01FRVRJTkdcIjtcbiAgICBzdGF0aWMgUE9MTF9SRUNPUkRJTkdfU1RBVFVTID0gXCJQT0xMX1JFQ09SRElOR19TVEFUVVNcIjtcbiAgICBzdGF0aWMgUkVRVUVTVF9UT19KT0lOID0gXCJSRVFVRVNUX1RPX0pPSU5cIjtcbiAgICBzdGF0aWMgUkVRVUVTVF9UT19KT0lOX01FRVRJTkcgPSBcIlJFUVVFU1RfVE9fSk9JTl9NRUVUSU5HXCI7XG4gICAgc3RhdGljIENSRUFURV9XRUJSVENfVFJBTlNQT1JUID0gXCJDUkVBVEVfV0VCUlRDX1RSQU5TUE9SVFwiO1xuICAgIHN0YXRpYyBDT05ORUNUX1RSQU5TUE9SVCA9IFwiQ09OTkVDVF9UUkFOU1BPUlRcIjtcbiAgICBzdGF0aWMgQ0xPU0VfQUxMX1VTRVJfVFJBTlNQT1JUUyA9IFwiQ0xPU0VfQUxMX1VTRVJfVFJBTlNQT1JUU1wiO1xuICAgIHN0YXRpYyBQUk9EVUNFUl9DTE9TRUQgPSBcIlBST0RVQ0VSX0NMT1NFRFwiO1xuICAgIHN0YXRpYyBORVdfUFJPRFVDRVJTID0gXCJORVdfUFJPRFVDRVJTXCI7XG4gICAgc3RhdGljIFBST0RVQ0UgPSBcIlBST0RVQ0VcIjtcbiAgICBzdGF0aWMgQ09OU1VNRSA9IFwiQ09OU1VNRVwiO1xuICAgIHN0YXRpYyBTWVNURU1fQUxFUlQgPSBcIlNZU1RFTV9BTEVSVFwiO1xuICAgIHN0YXRpYyBXSElURUJPQVJEX0VWRU5UID0gXCJXSElURUJPQVJEX0VWRU5UXCI7XG4gICAgc3RhdGljIFdISVRFQk9BUkQgPSBcIldISVRFQk9BUkRcIjtcbiAgICBzdGF0aWMgTUVFVElOR19FTkRFRCA9IFwiTUVFVElOR19FTkRFRFwiO1xuICAgIHN0YXRpYyBTQVZFX1JFQ09SRElORyA9IFwiU0FWRV9SRUNPUkRJTkdcIjtcbiAgICBzdGF0aWMgU1RPUF9SRUNPUkRJTkcgPSBcIlNUT1BfUkVDT1JESU5HXCI7XG4gICAgc3RhdGljIFVQREFURV9DQUxFTkRBUiA9IFwiVVBEQVRFX0NBTEVOREFSXCI7XG4gICAgc3RhdGljIFJFUVVFU1RfVE9fSk9JTl9NRUVUSU5HX0FOU1dFUkVEID0gXCJSRVFVRVNUX1RPX0pPSU5fTUVFVElOR19BTlNXRVJFRFwiO1xuICAgIHN0YXRpYyBDT05TVU1FUl9DTE9TRUQgPSBcIkNPTlNVTUVSX0NMT1NFRFwiO1xuICAgIHN0YXRpYyBDQU5DRUxfU0NSRUVOX1NIQVJFID0gXCJDQU5DRUxfU0NSRUVOX1NIQVJFXCI7XG4gICAgc3RhdGljIFNIQVJJTkdfU1RPUFBFRCA9IFwiU0hBUklOR19TVE9QUEVEXCI7XG4gICAgc3RhdGljIEFVRElPX0xFVkVMID0gXCJBVURJT19MRVZFTFwiO1xuXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFPLE1BQU1BLFdBQVcsQ0FBQztBQWlGeEJDLE9BQUEsQ0FBQUQsV0FBQSxHQUFBQSxXQUFBO0FBQUFFLGVBQUEsQ0FqRllGLFdBQVcsK0JBRWUsMkJBQTJCO0FBQUFFLGVBQUEsQ0FGckRGLFdBQVcsMkJBR1csdUJBQXVCO0FBQUFFLGVBQUEsQ0FIN0NGLFdBQVcsZUFJRCxXQUFXO0FBQUFFLGVBQUEsQ0FKckJGLFdBQVcsaUJBS0MsYUFBYTtBQUFBRSxlQUFBLENBTHpCRixXQUFXLDhCQU1jLDBCQUEwQjtBQUFBRSxlQUFBLENBTm5ERixXQUFXLHlCQU9TLHFCQUFxQjtBQUFBRSxlQUFBLENBUHpDRixXQUFXLHdCQVFRLG9CQUFvQjtBQUFB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
|