@agilemotion/oui-react-js 2.0.16 → 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/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
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _Utils = _interopRequireDefault(require("../../Utils"));
|
|
9
|
+
var _ApplicationManager = _interopRequireDefault(require("../../ApplicationManager"));
|
|
10
|
+
var _Observable = _interopRequireDefault(require("../../event/Observable"));
|
|
11
|
+
var _Event = _interopRequireDefault(require("../../event/Event"));
|
|
12
|
+
var _EventType = _interopRequireDefault(require("../../event/EventType"));
|
|
13
|
+
var _material = require("@mui/material");
|
|
14
|
+
var _Videocam = _interopRequireDefault(require("@mui/icons-material/Videocam"));
|
|
15
|
+
var _VideocamOff = _interopRequireDefault(require("@mui/icons-material/VideocamOff"));
|
|
16
|
+
var _Mic = _interopRequireDefault(require("@mui/icons-material/Mic"));
|
|
17
|
+
var _MicOff = _interopRequireDefault(require("@mui/icons-material/MicOff"));
|
|
18
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
22
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
23
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
24
|
+
/**
|
|
25
|
+
* VCSettings — pre-join audio/video settings (CDUI component type `vcSettings`).
|
|
26
|
+
*
|
|
27
|
+
* Replaces the hand-assembled vc-settings.json form. Self-contained: live camera
|
|
28
|
+
* preview, camera + microphone device selection, a live mic-level test meter, and
|
|
29
|
+
* on/off toggles. Exposes its value via {@code handle.api.value} and fires
|
|
30
|
+
* VALUE_CHANGE so the view can push it to {@code @#{vcFlow}.model.settings}. The
|
|
31
|
+
* Close/JOIN actions stay in the view (this component owns only the AV controls).
|
|
32
|
+
*
|
|
33
|
+
* Value shape: { audioOn, videoOn, audioDeviceId, videoDeviceId,
|
|
34
|
+
* isAudioDeviceConnected, isVideoDeviceConnected }.
|
|
35
|
+
*/
|
|
36
|
+
const VCSettings = props => {
|
|
37
|
+
const primary = _ApplicationManager.default.getApplicationPrimaryColor() || '#1a3c5e';
|
|
38
|
+
const attr = (name, fallback) => _Utils.default.getComponentAttribute(props.config, name, fallback);
|
|
39
|
+
|
|
40
|
+
// Responsive to the COMPONENT's own width (not the viewport) — so a pinned
|
|
41
|
+
// ~320px window stacks even when the browser window is wide. Measured via
|
|
42
|
+
// ResizeObserver on the root container below.
|
|
43
|
+
const containerRef = _react.default.useRef(null);
|
|
44
|
+
const [containerWidth, setContainerWidth] = _react.default.useState(0);
|
|
45
|
+
const stacked = containerWidth > 0 && containerWidth < 560;
|
|
46
|
+
const [ready, setReady] = _react.default.useState(false);
|
|
47
|
+
const [videoOn, setVideoOn] = _react.default.useState(!!attr('defaultVideoOn', false));
|
|
48
|
+
const [audioOn, setAudioOn] = _react.default.useState(!!attr('defaultAudioOn', false));
|
|
49
|
+
const [videoDevices, setVideoDevices] = _react.default.useState([]);
|
|
50
|
+
const [audioDevices, setAudioDevices] = _react.default.useState([]);
|
|
51
|
+
const [videoDeviceId, setVideoDeviceId] = _react.default.useState('');
|
|
52
|
+
const [audioDeviceId, setAudioDeviceId] = _react.default.useState('');
|
|
53
|
+
const [micLevel, setMicLevel] = _react.default.useState(0);
|
|
54
|
+
const [statusMessage, setStatusMessage] = _react.default.useState(null);
|
|
55
|
+
const videoElRef = _react.default.useRef(null);
|
|
56
|
+
const videoStreamRef = _react.default.useRef(null);
|
|
57
|
+
const audioStreamRef = _react.default.useRef(null);
|
|
58
|
+
const audioCtxRef = _react.default.useRef(null);
|
|
59
|
+
const rafRef = _react.default.useRef(null);
|
|
60
|
+
const valueRef = _react.default.useRef({});
|
|
61
|
+
const detachTimerRef = _react.default.useRef(null);
|
|
62
|
+
const videoConnected = videoDevices.length > 0;
|
|
63
|
+
const audioConnected = audioDevices.length > 0;
|
|
64
|
+
|
|
65
|
+
// Track the component's own width so the layout responds to its container
|
|
66
|
+
// (e.g. the pinned window) rather than the browser viewport.
|
|
67
|
+
_react.default.useLayoutEffect(() => {
|
|
68
|
+
const el = containerRef.current;
|
|
69
|
+
if (!el) return;
|
|
70
|
+
const measure = () => setContainerWidth(el.getBoundingClientRect().width);
|
|
71
|
+
measure();
|
|
72
|
+
let ro;
|
|
73
|
+
if (typeof ResizeObserver !== 'undefined') {
|
|
74
|
+
ro = new ResizeObserver(measure);
|
|
75
|
+
ro.observe(el);
|
|
76
|
+
}
|
|
77
|
+
return () => ro && ro.disconnect();
|
|
78
|
+
}, []);
|
|
79
|
+
|
|
80
|
+
// ---- device enumeration -------------------------------------------------
|
|
81
|
+
const refreshDevices = _react.default.useCallback(async () => {
|
|
82
|
+
try {
|
|
83
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
84
|
+
const cams = devices.filter(d => d.kind === 'videoinput');
|
|
85
|
+
const mics = devices.filter(d => d.kind === 'audioinput');
|
|
86
|
+
setVideoDevices(cams);
|
|
87
|
+
setAudioDevices(mics);
|
|
88
|
+
setVideoDeviceId(prev => prev || (cams[0] ? cams[0].deviceId : ''));
|
|
89
|
+
setAudioDeviceId(prev => prev || (mics[0] ? mics[0].deviceId : ''));
|
|
90
|
+
} catch (e) {
|
|
91
|
+
console.error('VCSettings: enumerateDevices failed', e);
|
|
92
|
+
}
|
|
93
|
+
}, []);
|
|
94
|
+
|
|
95
|
+
// ---- camera preview -----------------------------------------------------
|
|
96
|
+
const stopVideo = _react.default.useCallback(() => {
|
|
97
|
+
if (videoStreamRef.current) {
|
|
98
|
+
videoStreamRef.current.getTracks().forEach(t => t.stop());
|
|
99
|
+
videoStreamRef.current = null;
|
|
100
|
+
}
|
|
101
|
+
if (videoElRef.current) {
|
|
102
|
+
videoElRef.current.srcObject = null;
|
|
103
|
+
}
|
|
104
|
+
}, []);
|
|
105
|
+
|
|
106
|
+
// Callback ref on the preview <video>. Keeps the camera strictly tied to an
|
|
107
|
+
// attached video element: re-attaches the live stream when the element
|
|
108
|
+
// (re)mounts (e.g. a layout reflow recreates it), and releases the camera if
|
|
109
|
+
// the element is genuinely removed. The deferred check distinguishes a
|
|
110
|
+
// reflow remount (element comes straight back → keep) from real removal
|
|
111
|
+
// (element stays gone → stop + flip the toggle off).
|
|
112
|
+
const attachVideoEl = _react.default.useCallback(node => {
|
|
113
|
+
videoElRef.current = node;
|
|
114
|
+
if (detachTimerRef.current) {
|
|
115
|
+
clearTimeout(detachTimerRef.current);
|
|
116
|
+
detachTimerRef.current = null;
|
|
117
|
+
}
|
|
118
|
+
if (node) {
|
|
119
|
+
if (videoStreamRef.current) {
|
|
120
|
+
node.srcObject = videoStreamRef.current;
|
|
121
|
+
}
|
|
122
|
+
} else {
|
|
123
|
+
detachTimerRef.current = setTimeout(() => {
|
|
124
|
+
if (!videoElRef.current && videoStreamRef.current) {
|
|
125
|
+
stopVideo();
|
|
126
|
+
setVideoOn(false);
|
|
127
|
+
}
|
|
128
|
+
}, 0);
|
|
129
|
+
}
|
|
130
|
+
}, [stopVideo]);
|
|
131
|
+
const startVideo = _react.default.useCallback(async () => {
|
|
132
|
+
stopVideo();
|
|
133
|
+
try {
|
|
134
|
+
const stream = await navigator.mediaDevices.getUserMedia({
|
|
135
|
+
audio: false,
|
|
136
|
+
video: videoDeviceId ? {
|
|
137
|
+
deviceId: {
|
|
138
|
+
exact: videoDeviceId
|
|
139
|
+
}
|
|
140
|
+
} : true
|
|
141
|
+
});
|
|
142
|
+
videoStreamRef.current = stream;
|
|
143
|
+
if (videoElRef.current) {
|
|
144
|
+
videoElRef.current.srcObject = stream;
|
|
145
|
+
}
|
|
146
|
+
setStatusMessage(null);
|
|
147
|
+
refreshDevices(); // labels become available once permission is granted
|
|
148
|
+
} catch (e) {
|
|
149
|
+
console.error('VCSettings: camera access failed', e);
|
|
150
|
+
setVideoOn(false);
|
|
151
|
+
setStatusMessage('Could not access the camera — check your browser permissions.');
|
|
152
|
+
}
|
|
153
|
+
}, [videoDeviceId, stopVideo, refreshDevices]);
|
|
154
|
+
|
|
155
|
+
// ---- microphone test (level meter) --------------------------------------
|
|
156
|
+
const stopMic = _react.default.useCallback(() => {
|
|
157
|
+
if (rafRef.current) {
|
|
158
|
+
cancelAnimationFrame(rafRef.current);
|
|
159
|
+
rafRef.current = null;
|
|
160
|
+
}
|
|
161
|
+
if (audioStreamRef.current) {
|
|
162
|
+
audioStreamRef.current.getTracks().forEach(t => t.stop());
|
|
163
|
+
audioStreamRef.current = null;
|
|
164
|
+
}
|
|
165
|
+
if (audioCtxRef.current) {
|
|
166
|
+
audioCtxRef.current.close().catch(() => {});
|
|
167
|
+
audioCtxRef.current = null;
|
|
168
|
+
}
|
|
169
|
+
setMicLevel(0);
|
|
170
|
+
}, []);
|
|
171
|
+
const startMic = _react.default.useCallback(async () => {
|
|
172
|
+
stopMic();
|
|
173
|
+
try {
|
|
174
|
+
const stream = await navigator.mediaDevices.getUserMedia({
|
|
175
|
+
video: false,
|
|
176
|
+
audio: audioDeviceId ? {
|
|
177
|
+
deviceId: {
|
|
178
|
+
exact: audioDeviceId
|
|
179
|
+
}
|
|
180
|
+
} : true
|
|
181
|
+
});
|
|
182
|
+
audioStreamRef.current = stream;
|
|
183
|
+
const Ctx = window.AudioContext || window.webkitAudioContext;
|
|
184
|
+
const ctx = new Ctx();
|
|
185
|
+
audioCtxRef.current = ctx;
|
|
186
|
+
const source = ctx.createMediaStreamSource(stream);
|
|
187
|
+
const analyser = ctx.createAnalyser();
|
|
188
|
+
analyser.fftSize = 512;
|
|
189
|
+
source.connect(analyser);
|
|
190
|
+
const data = new Uint8Array(analyser.frequencyBinCount);
|
|
191
|
+
const tick = () => {
|
|
192
|
+
analyser.getByteTimeDomainData(data);
|
|
193
|
+
let peak = 0;
|
|
194
|
+
for (let i = 0; i < data.length; i++) {
|
|
195
|
+
const v = Math.abs(data[i] - 128);
|
|
196
|
+
if (v > peak) peak = v;
|
|
197
|
+
}
|
|
198
|
+
setMicLevel(Math.min(100, Math.round(peak / 128 * 140)));
|
|
199
|
+
rafRef.current = requestAnimationFrame(tick);
|
|
200
|
+
};
|
|
201
|
+
tick();
|
|
202
|
+
setStatusMessage(null);
|
|
203
|
+
refreshDevices();
|
|
204
|
+
} catch (e) {
|
|
205
|
+
console.error('VCSettings: microphone access failed', e);
|
|
206
|
+
setAudioOn(false);
|
|
207
|
+
setStatusMessage('Could not access the microphone — check your browser permissions.');
|
|
208
|
+
}
|
|
209
|
+
}, [audioDeviceId, stopMic, refreshDevices]);
|
|
210
|
+
|
|
211
|
+
// ---- lifecycle ----------------------------------------------------------
|
|
212
|
+
_react.default.useEffect(() => {
|
|
213
|
+
let cancelled = false;
|
|
214
|
+
(async () => {
|
|
215
|
+
await refreshDevices();
|
|
216
|
+
if (!cancelled) setReady(true);
|
|
217
|
+
})();
|
|
218
|
+
const onDeviceChange = () => refreshDevices();
|
|
219
|
+
navigator.mediaDevices.addEventListener && navigator.mediaDevices.addEventListener('devicechange', onDeviceChange);
|
|
220
|
+
return () => {
|
|
221
|
+
cancelled = true;
|
|
222
|
+
navigator.mediaDevices.removeEventListener && navigator.mediaDevices.removeEventListener('devicechange', onDeviceChange);
|
|
223
|
+
if (detachTimerRef.current) clearTimeout(detachTimerRef.current);
|
|
224
|
+
stopVideo();
|
|
225
|
+
stopMic();
|
|
226
|
+
};
|
|
227
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
228
|
+
}, []);
|
|
229
|
+
_react.default.useEffect(() => {
|
|
230
|
+
if (videoOn) startVideo();else stopVideo();
|
|
231
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
232
|
+
}, [videoOn, videoDeviceId]);
|
|
233
|
+
_react.default.useEffect(() => {
|
|
234
|
+
if (audioOn) startMic();else stopMic();
|
|
235
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
236
|
+
}, [audioOn, audioDeviceId]);
|
|
237
|
+
|
|
238
|
+
// value + VALUE_CHANGE
|
|
239
|
+
_react.default.useEffect(() => {
|
|
240
|
+
valueRef.current = {
|
|
241
|
+
audioOn,
|
|
242
|
+
videoOn,
|
|
243
|
+
audioDeviceId: audioDeviceId || null,
|
|
244
|
+
videoDeviceId: videoDeviceId || null,
|
|
245
|
+
isAudioDeviceConnected: audioConnected,
|
|
246
|
+
isVideoDeviceConnected: videoConnected
|
|
247
|
+
};
|
|
248
|
+
if (ready && props.handle) {
|
|
249
|
+
_Observable.default.fireEvent(_EventType.default.VALUE_CHANGE, new _Event.default(props.handle, props.viewId, valueRef.current));
|
|
250
|
+
}
|
|
251
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
252
|
+
}, [audioOn, videoOn, audioDeviceId, videoDeviceId, audioConnected, videoConnected, ready]);
|
|
253
|
+
|
|
254
|
+
// expose the CDUI handle api
|
|
255
|
+
_react.default.useEffect(() => {
|
|
256
|
+
props.handle.api = {
|
|
257
|
+
get id() {
|
|
258
|
+
return props.config.id;
|
|
259
|
+
},
|
|
260
|
+
get value() {
|
|
261
|
+
return valueRef.current;
|
|
262
|
+
},
|
|
263
|
+
set value(v) {
|
|
264
|
+
if (_Utils.default.isNull(v)) return;
|
|
265
|
+
setVideoOn(!!v.videoOn);
|
|
266
|
+
setAudioOn(!!v.audioOn);
|
|
267
|
+
if (v.videoDeviceId) setVideoDeviceId(v.videoDeviceId);
|
|
268
|
+
if (v.audioDeviceId) setAudioDeviceId(v.audioDeviceId);
|
|
269
|
+
},
|
|
270
|
+
refresh: () => refreshDevices(),
|
|
271
|
+
getChildren: () => []
|
|
272
|
+
};
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
// ---- presentation -------------------------------------------------------
|
|
276
|
+
const deviceLabel = (device, kind, index) => device.label || "".concat(kind, " ").concat(index + 1);
|
|
277
|
+
const controlRow = opts => /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
278
|
+
sx: {
|
|
279
|
+
display: 'flex',
|
|
280
|
+
alignItems: 'center',
|
|
281
|
+
gap: 1.5,
|
|
282
|
+
width: '100%',
|
|
283
|
+
padding: '10px 12px',
|
|
284
|
+
borderRadius: '8px',
|
|
285
|
+
border: '1px solid #e6eaf0',
|
|
286
|
+
background: '#fff',
|
|
287
|
+
opacity: opts.connected ? 1 : 0.6
|
|
288
|
+
}
|
|
289
|
+
}, /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
290
|
+
sx: {
|
|
291
|
+
color: opts.on ? primary : '#8a96a3',
|
|
292
|
+
display: 'flex'
|
|
293
|
+
}
|
|
294
|
+
}, opts.icon), /*#__PURE__*/_react.default.createElement(_material.Switch, {
|
|
295
|
+
checked: opts.on,
|
|
296
|
+
disabled: !opts.connected,
|
|
297
|
+
onChange: e => opts.onToggle(e.target.checked),
|
|
298
|
+
size: "small"
|
|
299
|
+
}), /*#__PURE__*/_react.default.createElement(_material.FormControl, {
|
|
300
|
+
size: "small",
|
|
301
|
+
sx: {
|
|
302
|
+
flex: 1,
|
|
303
|
+
minWidth: 0
|
|
304
|
+
}
|
|
305
|
+
}, /*#__PURE__*/_react.default.createElement(_material.Select, {
|
|
306
|
+
value: opts.deviceId || '',
|
|
307
|
+
displayEmpty: true,
|
|
308
|
+
disabled: !opts.connected,
|
|
309
|
+
onChange: e => opts.onSelect(e.target.value),
|
|
310
|
+
sx: {
|
|
311
|
+
fontSize: 13,
|
|
312
|
+
background: '#fff'
|
|
313
|
+
}
|
|
314
|
+
}, opts.devices.length === 0 && /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
|
|
315
|
+
value: ""
|
|
316
|
+
}, /*#__PURE__*/_react.default.createElement("em", null, "No device")), opts.devices.map((d, i) => /*#__PURE__*/_react.default.createElement(_material.MenuItem, {
|
|
317
|
+
key: d.deviceId || i,
|
|
318
|
+
value: d.deviceId,
|
|
319
|
+
sx: {
|
|
320
|
+
fontSize: 13
|
|
321
|
+
}
|
|
322
|
+
}, deviceLabel(d, opts.kindLabel, i))))), opts.meter);
|
|
323
|
+
const videoBlock = /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
324
|
+
sx: _objectSpread({
|
|
325
|
+
position: 'relative',
|
|
326
|
+
borderRadius: '12px',
|
|
327
|
+
overflow: 'hidden',
|
|
328
|
+
background: '#11202e',
|
|
329
|
+
display: 'flex',
|
|
330
|
+
alignItems: 'center',
|
|
331
|
+
justifyContent: 'center',
|
|
332
|
+
aspectRatio: '1 / 1'
|
|
333
|
+
}, stacked ? {
|
|
334
|
+
width: '100%',
|
|
335
|
+
maxWidth: 420,
|
|
336
|
+
alignSelf: 'center'
|
|
337
|
+
} // row 2 — spans full width
|
|
338
|
+
: {
|
|
339
|
+
width: '40%',
|
|
340
|
+
minWidth: 180,
|
|
341
|
+
maxWidth: 300,
|
|
342
|
+
flex: '0 0 auto'
|
|
343
|
+
})
|
|
344
|
+
}, /*#__PURE__*/_react.default.createElement("video", {
|
|
345
|
+
ref: attachVideoEl,
|
|
346
|
+
muted: true,
|
|
347
|
+
playsInline: true,
|
|
348
|
+
autoPlay: true,
|
|
349
|
+
hidden: !videoOn,
|
|
350
|
+
style: {
|
|
351
|
+
width: '100%',
|
|
352
|
+
height: '100%',
|
|
353
|
+
objectFit: 'cover',
|
|
354
|
+
transform: 'scaleX(-1)' // mirror, Teams-style
|
|
355
|
+
}
|
|
356
|
+
}), !videoOn && /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
357
|
+
sx: {
|
|
358
|
+
textAlign: 'center',
|
|
359
|
+
color: '#cfd8e3'
|
|
360
|
+
}
|
|
361
|
+
}, /*#__PURE__*/_react.default.createElement(_VideocamOff.default, {
|
|
362
|
+
sx: {
|
|
363
|
+
fontSize: 44,
|
|
364
|
+
opacity: 0.7
|
|
365
|
+
}
|
|
366
|
+
}), /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
367
|
+
sx: {
|
|
368
|
+
fontSize: 14,
|
|
369
|
+
mt: 1,
|
|
370
|
+
opacity: 0.85
|
|
371
|
+
}
|
|
372
|
+
}, "Your camera is off")));
|
|
373
|
+
const controlsBlock = /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
374
|
+
sx: _objectSpread(_objectSpread({
|
|
375
|
+
minWidth: 0
|
|
376
|
+
}, stacked ? {
|
|
377
|
+
width: '100%',
|
|
378
|
+
maxWidth: 420,
|
|
379
|
+
alignSelf: 'center',
|
|
380
|
+
flex: '0 0 auto'
|
|
381
|
+
} : {
|
|
382
|
+
flex: '0 1 360px',
|
|
383
|
+
maxWidth: 360
|
|
384
|
+
}), {}, {
|
|
385
|
+
display: 'flex',
|
|
386
|
+
flexDirection: 'column',
|
|
387
|
+
gap: 1.5,
|
|
388
|
+
justifyContent: stacked ? 'flex-start' : 'center'
|
|
389
|
+
})
|
|
390
|
+
}, /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
391
|
+
sx: {
|
|
392
|
+
fontSize: 13,
|
|
393
|
+
color: '#6b7785',
|
|
394
|
+
fontWeight: 600
|
|
395
|
+
}
|
|
396
|
+
}, attr('label', 'Audio and video settings')), controlRow({
|
|
397
|
+
on: videoOn,
|
|
398
|
+
connected: videoConnected,
|
|
399
|
+
onToggle: setVideoOn,
|
|
400
|
+
icon: videoOn ? /*#__PURE__*/_react.default.createElement(_Videocam.default, null) : /*#__PURE__*/_react.default.createElement(_VideocamOff.default, null),
|
|
401
|
+
devices: videoDevices,
|
|
402
|
+
deviceId: videoDeviceId,
|
|
403
|
+
onSelect: setVideoDeviceId,
|
|
404
|
+
kindLabel: 'Camera'
|
|
405
|
+
}), controlRow({
|
|
406
|
+
on: audioOn,
|
|
407
|
+
connected: audioConnected,
|
|
408
|
+
onToggle: setAudioOn,
|
|
409
|
+
icon: audioOn ? /*#__PURE__*/_react.default.createElement(_Mic.default, null) : /*#__PURE__*/_react.default.createElement(_MicOff.default, null),
|
|
410
|
+
devices: audioDevices,
|
|
411
|
+
deviceId: audioDeviceId,
|
|
412
|
+
onSelect: setAudioDeviceId,
|
|
413
|
+
kindLabel: 'Microphone',
|
|
414
|
+
meter: /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
415
|
+
sx: {
|
|
416
|
+
width: 56,
|
|
417
|
+
height: 6,
|
|
418
|
+
borderRadius: 3,
|
|
419
|
+
background: '#e6eaf0',
|
|
420
|
+
overflow: 'hidden',
|
|
421
|
+
flexShrink: 0
|
|
422
|
+
}
|
|
423
|
+
}, /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
424
|
+
sx: {
|
|
425
|
+
width: "".concat(audioOn ? micLevel : 0, "%"),
|
|
426
|
+
height: '100%',
|
|
427
|
+
background: primary,
|
|
428
|
+
transition: 'width 90ms linear'
|
|
429
|
+
}
|
|
430
|
+
}))
|
|
431
|
+
}), statusMessage && /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
432
|
+
sx: {
|
|
433
|
+
fontSize: 12,
|
|
434
|
+
color: '#f1416c'
|
|
435
|
+
}
|
|
436
|
+
}, statusMessage), !videoConnected && !audioConnected && ready && /*#__PURE__*/_react.default.createElement(_material.Typography, {
|
|
437
|
+
sx: {
|
|
438
|
+
fontSize: 12,
|
|
439
|
+
color: '#f1416c'
|
|
440
|
+
}
|
|
441
|
+
}, "No camera or microphone detected."));
|
|
442
|
+
return /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
443
|
+
ref: containerRef,
|
|
444
|
+
style: _Utils.default.mergeStyles({
|
|
445
|
+
width: '100%',
|
|
446
|
+
height: '100%'
|
|
447
|
+
}, props.config)
|
|
448
|
+
}, /*#__PURE__*/_react.default.createElement(_material.Box, {
|
|
449
|
+
sx: {
|
|
450
|
+
display: 'flex',
|
|
451
|
+
flexDirection: stacked ? 'column' : 'row',
|
|
452
|
+
gap: 2,
|
|
453
|
+
width: '100%',
|
|
454
|
+
height: '100%',
|
|
455
|
+
justifyContent: 'center',
|
|
456
|
+
alignItems: 'center',
|
|
457
|
+
overflow: 'auto'
|
|
458
|
+
}
|
|
459
|
+
}, stacked ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, controlsBlock, videoBlock) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, videoBlock, controlsBlock)));
|
|
460
|
+
};
|
|
461
|
+
var _default = exports.default = VCSettings;
|
|
462
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfT2JzZXJ2YWJsZSIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfbWF0ZXJpYWwiLCJfVmlkZW9jYW0iLCJfVmlkZW9jYW1PZmYiLCJfTWljIiwiX01pY09mZiIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm93bktleXMiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImkiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJWQ1NldHRpbmdzIiwicHJvcHMiLCJwcmltYXJ5IiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IiLCJhdHRyIiwibmFtZSIsImZhbGxiYWNrIiwiVXRpbHMiLCJnZXRDb21wb25lbnRBdHRyaWJ1dGUiLCJjb25maWciLCJjb250YWluZXJSZWYiLCJSZWFjdCIsInVzZVJlZiIsImNvbnRhaW5lcldpZHRoIiwic2V0Q29udGFpbmVyV2lkdGgiLCJ1c2VTdGF0ZSIsInN0YWNrZWQiLCJyZWFkeSIsInNldFJlYWR5IiwidmlkZW9PbiIsInNldFZpZGVvT24iLCJhdWRpb09uIiwic2V0QXVkaW9PbiIsInZpZGVvRGV2aWNlcyIsInNldFZpZGVvRGV2aWNlcyIsImF1ZGlvRGV2aWNlcyIsInNldEF1ZGlvRGV2aWNlcyIsInZpZGVvRGV2aWNlSWQiLCJzZXRWaWRlb0RldmljZUlkIiwiYXVkaW9EZXZpY2VJZCIsInNldEF1ZGlvRGV2aWNlSWQiLCJtaWNMZXZlbCIsInNldE1pY0xldmVsIiwic3RhdHVzTWVzc2FnZSIsInNldFN0YXR1c01lc3NhZ2UiLCJ2aWRlb0VsUmVmIiwidmlkZW9TdHJlYW1SZWYiLCJhdWRpb1N0cmVhbVJlZiIsImF1ZGlvQ3R4UmVmIiwicmFmUmVmIiwidmFsdWVSZWYiLCJkZXRhY2hUaW1lclJlZiIsInZpZGVvQ29ubmVjdGVkIiwiYXVkaW9Db25uZWN0ZWQiLCJ1c2VMYXlvdXRFZmZlY3QiLCJlbCIsImN1cnJlbnQiLCJtZWFzdXJlIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJybyIsIlJlc2l6ZU9ic2VydmVyIiwib2JzZXJ2ZSIsImRpc2Nvbm5lY3QiLCJyZWZyZXNoRGV2aWNlcyIsInVzZUNhbGxiYWNrIiwiZGV2aWNlcyIsIm5hdmlnYXRvciIsIm1lZGlhRGV2aWNlcyIsImVudW1lcmF0ZURldmljZXMiLCJjYW1zIiwiZCIsImtpbmQiLCJtaWNzIiwicHJldiIsImRldmljZUlkIiwiY29uc29sZSIsImVycm9yIiwic3RvcFZpZGVvIiwiZ2V0VHJhY2tzIiwic3RvcCIsInNyY09iamVjdCIsImF0dGFjaFZpZGVvRWwiLCJub2RlIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInN0YXJ0VmlkZW8iLCJzdHJlYW0iLCJnZXRVc2VyTWVkaWEiLCJhdWRpbyIsInZpZGVvIiwiZXhhY3QiLCJzdG9wTWljIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJjbG9zZSIsImNhdGNoIiwic3RhcnRNaWMiLCJDdHgiLCJ3aW5kb3ciLCJBdWRpb0NvbnRleHQiLCJ3ZWJraXRBdWRpb0NvbnRleHQiLCJjdHgiLCJzb3VyY2UiLCJjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSIsImFuYWx5c2VyIiwiY3JlYXRlQW5hbHlzZXIiLCJmZnRTaXplIiwiY29ubmVjdCIsImRhdGEiLCJVaW50OEFycmF5IiwiZnJlcXVlbmN5QmluQ291bnQiLCJ0aWNrIiwiZ2V0Qnl0ZVRpbWVEb21haW5EYXRhIiwicGVhayIsInYiLCJNYXRoIiwiYWJzIiwibWluIiwicm91bmQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJ1c2VFZmZlY3QiLCJjYW5jZWxsZWQiLCJvbkRldmljZUNoYW5nZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaXNBdWRpb0RldmljZUNvbm5lY3RlZCIsImlzVmlkZW9EZXZpY2VDb25uZWN0ZWQiLCJoYW5kbGUiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJWQUxVRV9DSEFOR0UiLCJFdmVudCIsInZpZXdJZCIsImFwaSIsImlkIiwiaXNOdWxsIiwicmVmcmVzaCIsImdldENoaWxkcmVuIiwiZGV2aWNlTGFiZWwiLCJkZXZpY2UiLCJpbmRleCIsImxhYmVsIiwiY29uY2F0IiwiY29udHJvbFJvdyIsIm9wdHMiLCJjcmVhdGVFbGVtZW50IiwiQm94Iiwic3giLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImdhcCIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJiYWNrZ3JvdW5kIiwib3BhY2l0eSIsImNvbm5lY3RlZCIsImNvbG9yIiwib24iLCJpY29uIiwiU3dpdGNoIiwiY2hlY2tlZCIsImRpc2FibGVkIiwib25DaGFuZ2UiLCJvblRvZ2dsZSIsInRhcmdldCIsInNpemUiLCJGb3JtQ29udHJvbCIsImZsZXgiLCJtaW5XaWR0aCIsIlNlbGVjdCIsImRpc3BsYXlFbXB0eSIsIm9uU2VsZWN0IiwiZm9udFNpemUiLCJNZW51SXRlbSIsIm1hcCIsImtleSIsImtpbmRMYWJlbCIsIm1ldGVyIiwidmlkZW9CbG9jayIsInBvc2l0aW9uIiwib3ZlcmZsb3ciLCJqdXN0aWZ5Q29udGVudCIsImFzcGVjdFJhdGlvIiwibWF4V2lkdGgiLCJhbGlnblNlbGYiLCJyZWYiLCJtdXRlZCIsInBsYXlzSW5saW5lIiwiYXV0b1BsYXkiLCJoaWRkZW4iLCJzdHlsZSIsImhlaWdodCIsIm9iamVjdEZpdCIsInRyYW5zZm9ybSIsInRleHRBbGlnbiIsIlR5cG9ncmFwaHkiLCJtdCIsImNvbnRyb2xzQmxvY2siLCJmbGV4RGlyZWN0aW9uIiwiZm9udFdlaWdodCIsImZsZXhTaHJpbmsiLCJ0cmFuc2l0aW9uIiwibWVyZ2VTdHlsZXMiLCJGcmFnbWVudCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tZWRpYS9WQ1NldHRpbmdzLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL1V0aWxzJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgRXZlbnQgZnJvbSAnLi4vLi4vZXZlbnQvRXZlbnQnO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tICcuLi8uLi9ldmVudC9FdmVudFR5cGUnO1xuaW1wb3J0IHtCb3gsIEZvcm1Db250cm9sLCBNZW51SXRlbSwgU2VsZWN0LCBTd2l0Y2gsIFR5cG9ncmFwaHl9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuaW1wb3J0IFZpZGVvY2FtSWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL1ZpZGVvY2FtJztcbmltcG9ydCBWaWRlb2NhbU9mZkljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9WaWRlb2NhbU9mZic7XG5pbXBvcnQgTWljSWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL01pYyc7XG5pbXBvcnQgTWljT2ZmSWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL01pY09mZic7XG5cbi8qKlxuICogVkNTZXR0aW5ncyDigJQgcHJlLWpvaW4gYXVkaW8vdmlkZW8gc2V0dGluZ3MgKENEVUkgY29tcG9uZW50IHR5cGUgYHZjU2V0dGluZ3NgKS5cbiAqXG4gKiBSZXBsYWNlcyB0aGUgaGFuZC1hc3NlbWJsZWQgdmMtc2V0dGluZ3MuanNvbiBmb3JtLiBTZWxmLWNvbnRhaW5lZDogbGl2ZSBjYW1lcmFcbiAqIHByZXZpZXcsIGNhbWVyYSArIG1pY3JvcGhvbmUgZGV2aWNlIHNlbGVjdGlvbiwgYSBsaXZlIG1pYy1sZXZlbCB0ZXN0IG1ldGVyLCBhbmRcbiAqIG9uL29mZiB0b2dnbGVzLiBFeHBvc2VzIGl0cyB2YWx1ZSB2aWEge0Bjb2RlIGhhbmRsZS5hcGkudmFsdWV9IGFuZCBmaXJlc1xuICogVkFMVUVfQ0hBTkdFIHNvIHRoZSB2aWV3IGNhbiBwdXNoIGl0IHRvIHtAY29kZSBAI3t2Y0Zsb3d9Lm1vZGVsLnNldHRpbmdzfS4gVGhlXG4gKiBDbG9zZS9KT0lOIGFjdGlvbnMgc3RheSBpbiB0aGUgdmlldyAodGhpcyBjb21wb25lbnQgb3ducyBvbmx5IHRoZSBBViBjb250cm9scykuXG4gKlxuICogVmFsdWUgc2hhcGU6IHsgYXVkaW9PbiwgdmlkZW9PbiwgYXVkaW9EZXZpY2VJZCwgdmlkZW9EZXZpY2VJZCxcbiAqICAgICAgICAgICAgICAgIGlzQXVkaW9EZXZpY2VDb25uZWN0ZWQsIGlzVmlkZW9EZXZpY2VDb25uZWN0ZWQgfS5cbiAqL1xuY29uc3QgVkNTZXR0aW5ncyA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHByaW1hcnkgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IoKSB8fCAnIzFhM2M1ZSc7XG4gICAgY29uc3QgYXR0ciA9IChuYW1lLCBmYWxsYmFjaykgPT4gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgbmFtZSwgZmFsbGJhY2spO1xuXG4gICAgLy8gUmVzcG9uc2l2ZSB0byB0aGUgQ09NUE9ORU5UJ3Mgb3duIHdpZHRoIChub3QgdGhlIHZpZXdwb3J0KSDigJQgc28gYSBwaW5uZWRcbiAgICAvLyB+MzIwcHggd2luZG93IHN0YWNrcyBldmVuIHdoZW4gdGhlIGJyb3dzZXIgd2luZG93IGlzIHdpZGUuIE1lYXN1cmVkIHZpYVxuICAgIC8vIFJlc2l6ZU9ic2VydmVyIG9uIHRoZSByb290IGNvbnRhaW5lciBiZWxvdy5cbiAgICBjb25zdCBjb250YWluZXJSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgW2NvbnRhaW5lcldpZHRoLCBzZXRDb250YWluZXJXaWR0aF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBzdGFja2VkID0gY29udGFpbmVyV2lkdGggPiAwICYmIGNvbnRhaW5lcldpZHRoIDwgNTYwO1xuXG4gICAgY29uc3QgW3JlYWR5LCBzZXRSZWFkeV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3ZpZGVvT24sIHNldFZpZGVvT25dID0gUmVhY3QudXNlU3RhdGUoISFhdHRyKCdkZWZhdWx0VmlkZW9PbicsIGZhbHNlKSk7XG4gICAgY29uc3QgW2F1ZGlvT24sIHNldEF1ZGlvT25dID0gUmVhY3QudXNlU3RhdGUoISFhdHRyKCdkZWZhdWx0QXVkaW9PbicsIGZhbHNlKSk7XG4gICAgY29uc3QgW3ZpZGVvRGV2aWNlcywgc2V0VmlkZW9EZXZpY2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgICBjb25zdCBbYXVkaW9EZXZpY2VzLCBzZXRBdWRpb0RldmljZXNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICAgIGNvbnN0IFt2aWRlb0RldmljZUlkLCBzZXRWaWRlb0RldmljZUlkXSA9IFJlYWN0LnVzZVN0YXRlKCcnKTtcbiAgICBjb25zdCBbYXVkaW9EZXZpY2VJZCwgc2V0QXVkaW9EZXZpY2VJZF0gPSBSZWFjdC51c2VTdGF0ZSgnJyk7XG4gICAgY29uc3QgW21pY0xldmVsLCBzZXRNaWNMZXZlbF0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcbiAgICBjb25zdCBbc3RhdHVzTWVzc2FnZSwgc2V0U3RhdHVzTWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcblxuICAgIGNvbnN0IHZpZGVvRWxSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdmlkZW9TdHJlYW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgYXVkaW9TdHJlYW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgYXVkaW9DdHhSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcmFmUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHZhbHVlUmVmID0gUmVhY3QudXNlUmVmKHt9KTtcbiAgICBjb25zdCBkZXRhY2hUaW1lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcblxuICAgIGNvbnN0IHZpZGVvQ29ubmVjdGVkID0gdmlkZW9EZXZpY2VzLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgYXVkaW9Db25uZWN0ZWQgPSBhdWRpb0RldmljZXMubGVuZ3RoID4gMDtcblxuICAgIC8vIFRyYWNrIHRoZSBjb21wb25lbnQncyBvd24gd2lkdGggc28gdGhlIGxheW91dCByZXNwb25kcyB0byBpdHMgY29udGFpbmVyXG4gICAgLy8gKGUuZy4gdGhlIHBpbm5lZCB3aW5kb3cpIHJhdGhlciB0aGFuIHRoZSBicm93c2VyIHZpZXdwb3J0LlxuICAgIFJlYWN0LnVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gY29udGFpbmVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghZWwpIHJldHVybjtcbiAgICAgICAgY29uc3QgbWVhc3VyZSA9ICgpID0+IHNldENvbnRhaW5lcldpZHRoKGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtcbiAgICAgICAgbWVhc3VyZSgpO1xuICAgICAgICBsZXQgcm87XG4gICAgICAgIGlmICh0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBybyA9IG5ldyBSZXNpemVPYnNlcnZlcihtZWFzdXJlKTtcbiAgICAgICAgICAgIHJvLm9ic2VydmUoZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoKSA9PiBybyAmJiByby5kaXNjb25uZWN0KCk7XG4gICAgfSwgW10pO1xuXG4gICAgLy8gLS0tLSBkZXZpY2UgZW51bWVyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IHJlZnJlc2hEZXZpY2VzID0gUmVhY3QudXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGV2aWNlcyA9IGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZW51bWVyYXRlRGV2aWNlcygpO1xuICAgICAgICAgICAgY29uc3QgY2FtcyA9IGRldmljZXMuZmlsdGVyKChkKSA9PiBkLmtpbmQgPT09ICd2aWRlb2lucHV0Jyk7XG4gICAgICAgICAgICBjb25zdCBtaWNzID0gZGV2aWNlcy5maWx0ZXIoKGQpID0+IGQua2luZCA9PT0gJ2F1ZGlvaW5wdXQnKTtcbiAgICAgICAgICAgIHNldFZpZGVvRGV2aWNlcyhjYW1zKTtcbiAgICAgICAgICAgIHNldEF1ZGlvRGV2aWNlcyhtaWNzKTtcbiAgICAgICAgICAgIHNldFZpZGVvRGV2aWNlSWQoKHByZXYpID0+IHByZXYgfHwgKGNhbXNbMF0gPyBjYW1zWzBdLmRldmljZUlkIDogJycpKTtcbiAgICAgICAgICAgIHNldEF1ZGlvRGV2aWNlSWQoKHByZXYpID0+IHByZXYgfHwgKG1pY3NbMF0gPyBtaWNzWzBdLmRldmljZUlkIDogJycpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVkNTZXR0aW5nczogZW51bWVyYXRlRGV2aWNlcyBmYWlsZWQnLCBlKTtcbiAgICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIC8vIC0tLS0gY2FtZXJhIHByZXZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBjb25zdCBzdG9wVmlkZW8gPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmICh2aWRlb1N0cmVhbVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICB2aWRlb1N0cmVhbVJlZi5jdXJyZW50LmdldFRyYWNrcygpLmZvckVhY2goKHQpID0+IHQuc3RvcCgpKTtcbiAgICAgICAgICAgIHZpZGVvU3RyZWFtUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2aWRlb0VsUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHZpZGVvRWxSZWYuY3VycmVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuXG4gICAgLy8gQ2FsbGJhY2sgcmVmIG9uIHRoZSBwcmV2aWV3IDx2aWRlbz4uIEtlZXBzIHRoZSBjYW1lcmEgc3RyaWN0bHkgdGllZCB0byBhblxuICAgIC8vIGF0dGFjaGVkIHZpZGVvIGVsZW1lbnQ6IHJlLWF0dGFjaGVzIHRoZSBsaXZlIHN0cmVhbSB3aGVuIHRoZSBlbGVtZW50XG4gICAgLy8gKHJlKW1vdW50cyAoZS5nLiBhIGxheW91dCByZWZsb3cgcmVjcmVhdGVzIGl0KSwgYW5kIHJlbGVhc2VzIHRoZSBjYW1lcmEgaWZcbiAgICAvLyB0aGUgZWxlbWVudCBpcyBnZW51aW5lbHkgcmVtb3ZlZC4gVGhlIGRlZmVycmVkIGNoZWNrIGRpc3Rpbmd1aXNoZXMgYVxuICAgIC8vIHJlZmxvdyByZW1vdW50IChlbGVtZW50IGNvbWVzIHN0cmFpZ2h0IGJhY2sg4oaSIGtlZXApIGZyb20gcmVhbCByZW1vdmFsXG4gICAgLy8gKGVsZW1lbnQgc3RheXMgZ29uZSDihpIgc3RvcCArIGZsaXAgdGhlIHRvZ2dsZSBvZmYpLlxuICAgIGNvbnN0IGF0dGFjaFZpZGVvRWwgPSBSZWFjdC51c2VDYWxsYmFjaygobm9kZSkgPT4ge1xuICAgICAgICB2aWRlb0VsUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICBpZiAoZGV0YWNoVGltZXJSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGRldGFjaFRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgZGV0YWNoVGltZXJSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIGlmICh2aWRlb1N0cmVhbVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgbm9kZS5zcmNPYmplY3QgPSB2aWRlb1N0cmVhbVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGV0YWNoVGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmlkZW9FbFJlZi5jdXJyZW50ICYmIHZpZGVvU3RyZWFtUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RvcFZpZGVvKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpZGVvT24oZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgfSwgW3N0b3BWaWRlb10pO1xuXG4gICAgY29uc3Qgc3RhcnRWaWRlbyA9IFJlYWN0LnVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICAgICAgc3RvcFZpZGVvKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBzdHJlYW0gPSBhd2FpdCBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7XG4gICAgICAgICAgICAgICAgYXVkaW86IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZpZGVvOiB2aWRlb0RldmljZUlkID8ge2RldmljZUlkOiB7ZXhhY3Q6IHZpZGVvRGV2aWNlSWR9fSA6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZpZGVvU3RyZWFtUmVmLmN1cnJlbnQgPSBzdHJlYW07XG4gICAgICAgICAgICBpZiAodmlkZW9FbFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgdmlkZW9FbFJlZi5jdXJyZW50LnNyY09iamVjdCA9IHN0cmVhbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFN0YXR1c01lc3NhZ2UobnVsbCk7XG4gICAgICAgICAgICByZWZyZXNoRGV2aWNlcygpOyAvLyBsYWJlbHMgYmVjb21lIGF2YWlsYWJsZSBvbmNlIHBlcm1pc3Npb24gaXMgZ3JhbnRlZFxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdWQ1NldHRpbmdzOiBjYW1lcmEgYWNjZXNzIGZhaWxlZCcsIGUpO1xuICAgICAgICAgICAgc2V0VmlkZW9PbihmYWxzZSk7XG4gICAgICAgICAgICBzZXRTdGF0dXNNZXNzYWdlKCdDb3VsZCBub3QgYWNjZXNzIHRoZSBjYW1lcmEg4oCUIGNoZWNrIHlvdXIgYnJvd3NlciBwZXJtaXNzaW9ucy4nKTtcbiAgICAgICAgfVxuICAgIH0sIFt2aWRlb0RldmljZUlkLCBzdG9wVmlkZW8sIHJlZnJlc2hEZXZpY2VzXSk7XG5cbiAgICAvLyAtLS0tIG1pY3JvcGhvbmUgdGVzdCAobGV2ZWwgbWV0ZXIpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgY29uc3Qgc3RvcE1pYyA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKHJhZlJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZSZWYuY3VycmVudCk7XG4gICAgICAgICAgICByYWZSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF1ZGlvU3RyZWFtUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGF1ZGlvU3RyZWFtUmVmLmN1cnJlbnQuZ2V0VHJhY2tzKCkuZm9yRWFjaCgodCkgPT4gdC5zdG9wKCkpO1xuICAgICAgICAgICAgYXVkaW9TdHJlYW1SZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGF1ZGlvQ3R4UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGF1ZGlvQ3R4UmVmLmN1cnJlbnQuY2xvc2UoKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgICAgICAgICBhdWRpb0N0eFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzZXRNaWNMZXZlbCgwKTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBzdGFydE1pYyA9IFJlYWN0LnVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICAgICAgc3RvcE1pYygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RyZWFtID0gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe1xuICAgICAgICAgICAgICAgIHZpZGVvOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhdWRpbzogYXVkaW9EZXZpY2VJZCA/IHtkZXZpY2VJZDoge2V4YWN0OiBhdWRpb0RldmljZUlkfX0gOiB0cnVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhdWRpb1N0cmVhbVJlZi5jdXJyZW50ID0gc3RyZWFtO1xuICAgICAgICAgICAgY29uc3QgQ3R4ID0gd2luZG93LkF1ZGlvQ29udGV4dCB8fCB3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0O1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gbmV3IEN0eCgpO1xuICAgICAgICAgICAgYXVkaW9DdHhSZWYuY3VycmVudCA9IGN0eDtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGN0eC5jcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShzdHJlYW0pO1xuICAgICAgICAgICAgY29uc3QgYW5hbHlzZXIgPSBjdHguY3JlYXRlQW5hbHlzZXIoKTtcbiAgICAgICAgICAgIGFuYWx5c2VyLmZmdFNpemUgPSA1MTI7XG4gICAgICAgICAgICBzb3VyY2UuY29ubmVjdChhbmFseXNlcik7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoYW5hbHlzZXIuZnJlcXVlbmN5QmluQ291bnQpO1xuICAgICAgICAgICAgY29uc3QgdGljayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBhbmFseXNlci5nZXRCeXRlVGltZURvbWFpbkRhdGEoZGF0YSk7XG4gICAgICAgICAgICAgICAgbGV0IHBlYWsgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2ID0gTWF0aC5hYnMoZGF0YVtpXSAtIDEyOCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ID4gcGVhaykgcGVhayA9IHY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldE1pY0xldmVsKE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCgocGVhayAvIDEyOCkgKiAxNDApKSk7XG4gICAgICAgICAgICAgICAgcmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljayk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGljaygpO1xuICAgICAgICAgICAgc2V0U3RhdHVzTWVzc2FnZShudWxsKTtcbiAgICAgICAgICAgIHJlZnJlc2hEZXZpY2VzKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1ZDU2V0dGluZ3M6IG1pY3JvcGhvbmUgYWNjZXNzIGZhaWxlZCcsIGUpO1xuICAgICAgICAgICAgc2V0QXVkaW9PbihmYWxzZSk7XG4gICAgICAgICAgICBzZXRTdGF0dXNNZXNzYWdlKCdDb3VsZCBub3QgYWNjZXNzIHRoZSBtaWNyb3Bob25lIOKAlCBjaGVjayB5b3VyIGJyb3dzZXIgcGVybWlzc2lvbnMuJyk7XG4gICAgICAgIH1cbiAgICB9LCBbYXVkaW9EZXZpY2VJZCwgc3RvcE1pYywgcmVmcmVzaERldmljZXNdKTtcblxuICAgIC8vIC0tLS0gbGlmZWN5Y2xlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCByZWZyZXNoRGV2aWNlcygpO1xuICAgICAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHNldFJlYWR5KHRydWUpO1xuICAgICAgICB9KSgpO1xuICAgICAgICBjb25zdCBvbkRldmljZUNoYW5nZSA9ICgpID0+IHJlZnJlc2hEZXZpY2VzKCk7XG4gICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuYWRkRXZlbnRMaXN0ZW5lciAmJlxuICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5hZGRFdmVudExpc3RlbmVyKCdkZXZpY2VjaGFuZ2UnLCBvbkRldmljZUNoYW5nZSk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5yZW1vdmVFdmVudExpc3RlbmVyICYmXG4gICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5yZW1vdmVFdmVudExpc3RlbmVyKCdkZXZpY2VjaGFuZ2UnLCBvbkRldmljZUNoYW5nZSk7XG4gICAgICAgICAgICBpZiAoZGV0YWNoVGltZXJSZWYuY3VycmVudCkgY2xlYXJUaW1lb3V0KGRldGFjaFRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgc3RvcFZpZGVvKCk7XG4gICAgICAgICAgICBzdG9wTWljKCk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAodmlkZW9Pbikgc3RhcnRWaWRlbygpO1xuICAgICAgICBlbHNlIHN0b3BWaWRlbygpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgfSwgW3ZpZGVvT24sIHZpZGVvRGV2aWNlSWRdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChhdWRpb09uKSBzdGFydE1pYygpO1xuICAgICAgICBlbHNlIHN0b3BNaWMoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFthdWRpb09uLCBhdWRpb0RldmljZUlkXSk7XG5cbiAgICAvLyB2YWx1ZSArIFZBTFVFX0NIQU5HRVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBhdWRpb09uLFxuICAgICAgICAgICAgdmlkZW9PbixcbiAgICAgICAgICAgIGF1ZGlvRGV2aWNlSWQ6IGF1ZGlvRGV2aWNlSWQgfHwgbnVsbCxcbiAgICAgICAgICAgIHZpZGVvRGV2aWNlSWQ6IHZpZGVvRGV2aWNlSWQgfHwgbnVsbCxcbiAgICAgICAgICAgIGlzQXVkaW9EZXZpY2VDb25uZWN0ZWQ6IGF1ZGlvQ29ubmVjdGVkLFxuICAgICAgICAgICAgaXNWaWRlb0RldmljZUNvbm5lY3RlZDogdmlkZW9Db25uZWN0ZWQsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChyZWFkeSAmJiBwcm9wcy5oYW5kbGUpIHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLlZBTFVFX0NIQU5HRSwgbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCB2YWx1ZVJlZi5jdXJyZW50KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICAgIH0sIFthdWRpb09uLCB2aWRlb09uLCBhdWRpb0RldmljZUlkLCB2aWRlb0RldmljZUlkLCBhdWRpb0Nvbm5lY3RlZCwgdmlkZW9Db25uZWN0ZWQsIHJlYWR5XSk7XG5cbiAgICAvLyBleHBvc2UgdGhlIENEVUkgaGFuZGxlIGFwaVxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgdmFsdWUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlUmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZhbHVlKHYpIHtcbiAgICAgICAgICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKHYpKSByZXR1cm47XG4gICAgICAgICAgICAgICAgc2V0VmlkZW9PbighIXYudmlkZW9Pbik7XG4gICAgICAgICAgICAgICAgc2V0QXVkaW9PbighIXYuYXVkaW9Pbik7XG4gICAgICAgICAgICAgICAgaWYgKHYudmlkZW9EZXZpY2VJZCkgc2V0VmlkZW9EZXZpY2VJZCh2LnZpZGVvRGV2aWNlSWQpO1xuICAgICAgICAgICAgICAgIGlmICh2LmF1ZGlvRGV2aWNlSWQpIHNldEF1ZGlvRGV2aWNlSWQodi5hdWRpb0RldmljZUlkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoOiAoKSA9PiByZWZyZXNoRGV2aWNlcygpLFxuICAgICAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IFtdLFxuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gLS0tLSBwcmVzZW50YXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIGNvbnN0IGRldmljZUxhYmVsID0gKGRldmljZSwga2luZCwgaW5kZXgpID0+XG4gICAgICAgIGRldmljZS5sYWJlbCB8fCBgJHtraW5kfSAke2luZGV4ICsgMX1gO1xuXG4gICAgY29uc3QgY29udHJvbFJvdyA9IChvcHRzKSA9PiAoXG4gICAgICAgIDxCb3ggc3g9e3tcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogMS41LCB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgcGFkZGluZzogJzEwcHggMTJweCcsIGJvcmRlclJhZGl1czogJzhweCcsIGJvcmRlcjogJzFweCBzb2xpZCAjZTZlYWYwJyxcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICcjZmZmJywgb3BhY2l0eTogb3B0cy5jb25uZWN0ZWQgPyAxIDogMC42LFxuICAgICAgICB9fT5cbiAgICAgICAgICAgIDxCb3ggc3g9e3tjb2xvcjogb3B0cy5vbiA/IHByaW1hcnkgOiAnIzhhOTZhMycsIGRpc3BsYXk6ICdmbGV4J319PntvcHRzLmljb259PC9Cb3g+XG4gICAgICAgICAgICA8U3dpdGNoXG4gICAgICAgICAgICAgICAgY2hlY2tlZD17b3B0cy5vbn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17IW9wdHMuY29ubmVjdGVkfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gb3B0cy5vblRvZ2dsZShlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxGb3JtQ29udHJvbCBzaXplPVwic21hbGxcIiBzeD17e2ZsZXg6IDEsIG1pbldpZHRoOiAwfX0+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0cy5kZXZpY2VJZCB8fCAnJ31cbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheUVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshb3B0cy5jb25uZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gb3B0cy5vblNlbGVjdChlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7Zm9udFNpemU6IDEzLCBiYWNrZ3JvdW5kOiAnI2ZmZid9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge29wdHMuZGV2aWNlcy5sZW5ndGggPT09IDAgJiYgPE1lbnVJdGVtIHZhbHVlPVwiXCI+PGVtPk5vIGRldmljZTwvZW0+PC9NZW51SXRlbT59XG4gICAgICAgICAgICAgICAgICAgIHtvcHRzLmRldmljZXMubWFwKChkLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtkLmRldmljZUlkIHx8IGl9IHZhbHVlPXtkLmRldmljZUlkfSBzeD17e2ZvbnRTaXplOiAxM319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtkZXZpY2VMYWJlbChkLCBvcHRzLmtpbmRMYWJlbCwgaSl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgICAgICAgICB7b3B0cy5tZXRlcn1cbiAgICAgICAgPC9Cb3g+XG4gICAgKTtcblxuICAgIGNvbnN0IHZpZGVvQmxvY2sgPSAoXG4gICAgICAgIDxCb3ggc3g9e3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLCBib3JkZXJSYWRpdXM6ICcxMnB4Jywgb3ZlcmZsb3c6ICdoaWRkZW4nLCBiYWNrZ3JvdW5kOiAnIzExMjAyZScsXG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICBhc3BlY3RSYXRpbzogJzEgLyAxJywgLy8gc3F1YXJlIHByZXZpZXdcbiAgICAgICAgICAgIC4uLihzdGFja2VkXG4gICAgICAgICAgICAgICAgPyB7d2lkdGg6ICcxMDAlJywgbWF4V2lkdGg6IDQyMCwgYWxpZ25TZWxmOiAnY2VudGVyJ30gICAgICAgICAgICAvLyByb3cgMiDigJQgc3BhbnMgZnVsbCB3aWR0aFxuICAgICAgICAgICAgICAgIDoge3dpZHRoOiAnNDAlJywgbWluV2lkdGg6IDE4MCwgbWF4V2lkdGg6IDMwMCwgZmxleDogJzAgMCBhdXRvJ30pLCAvLyBtb2Rlc3Qgc3F1YXJlIGJlc2lkZSBjb250cm9sc1xuICAgICAgICB9fT5cbiAgICAgICAgICAgIDx2aWRlb1xuICAgICAgICAgICAgICAgIHJlZj17YXR0YWNoVmlkZW9FbH1cbiAgICAgICAgICAgICAgICBtdXRlZCBwbGF5c0lubGluZSBhdXRvUGxheVxuICAgICAgICAgICAgICAgIGhpZGRlbj17IXZpZGVvT259XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsIG9iamVjdEZpdDogJ2NvdmVyJyxcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVYKC0xKScsIC8vIG1pcnJvciwgVGVhbXMtc3R5bGVcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHshdmlkZW9PbiAmJlxuICAgICAgICAgICAgICAgIDxCb3ggc3g9e3t0ZXh0QWxpZ246ICdjZW50ZXInLCBjb2xvcjogJyNjZmQ4ZTMnfX0+XG4gICAgICAgICAgICAgICAgICAgIDxWaWRlb2NhbU9mZkljb24gc3g9e3tmb250U2l6ZTogNDQsIG9wYWNpdHk6IDAuN319Lz5cbiAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgc3g9e3tmb250U2l6ZTogMTQsIG10OiAxLCBvcGFjaXR5OiAwLjg1fX0+WW91ciBjYW1lcmEgaXMgb2ZmPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgIDwvQm94Pn1cbiAgICAgICAgPC9Cb3g+XG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnRyb2xzQmxvY2sgPSAoXG4gICAgICAgIDxCb3ggc3g9e3tcbiAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgLi4uKHN0YWNrZWRcbiAgICAgICAgICAgICAgICA/IHt3aWR0aDogJzEwMCUnLCBtYXhXaWR0aDogNDIwLCBhbGlnblNlbGY6ICdjZW50ZXInLCBmbGV4OiAnMCAwIGF1dG8nfVxuICAgICAgICAgICAgICAgIDoge2ZsZXg6ICcwIDEgMzYwcHgnLCBtYXhXaWR0aDogMzYwfSksXG4gICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDEuNSxcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBzdGFja2VkID8gJ2ZsZXgtc3RhcnQnIDogJ2NlbnRlcicsXG4gICAgICAgIH19PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgc3g9e3tmb250U2l6ZTogMTMsIGNvbG9yOiAnIzZiNzc4NScsIGZvbnRXZWlnaHQ6IDYwMH19PlxuICAgICAgICAgICAgICAgIHthdHRyKCdsYWJlbCcsICdBdWRpbyBhbmQgdmlkZW8gc2V0dGluZ3MnKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICAgICAge2NvbnRyb2xSb3coe1xuICAgICAgICAgICAgICAgIG9uOiB2aWRlb09uLCBjb25uZWN0ZWQ6IHZpZGVvQ29ubmVjdGVkLCBvblRvZ2dsZTogc2V0VmlkZW9PbixcbiAgICAgICAgICAgICAgICBpY29uOiB2aWRlb09uID8gPFZpZGVvY2FtSWNvbi8+IDogPFZpZGVvY2FtT2ZmSWNvbi8+LFxuICAgICAgICAgICAgICAgIGRldmljZXM6IHZpZGVvRGV2aWNlcywgZGV2aWNlSWQ6IHZpZGVvRGV2aWNlSWQsIG9uU2VsZWN0OiBzZXRWaWRlb0RldmljZUlkLFxuICAgICAgICAgICAgICAgIGtpbmRMYWJlbDogJ0NhbWVyYScsXG4gICAgICAgICAgICB9KX1cblxuICAgICAgICAgICAge2NvbnRyb2xSb3coe1xuICAgICAgICAgICAgICAgIG9uOiBhdWRpb09uLCBjb25uZWN0ZWQ6IGF1ZGlvQ29ubmVjdGVkLCBvblRvZ2dsZTogc2V0QXVkaW9PbixcbiAgICAgICAgICAgICAgICBpY29uOiBhdWRpb09uID8gPE1pY0ljb24vPiA6IDxNaWNPZmZJY29uLz4sXG4gICAgICAgICAgICAgICAgZGV2aWNlczogYXVkaW9EZXZpY2VzLCBkZXZpY2VJZDogYXVkaW9EZXZpY2VJZCwgb25TZWxlY3Q6IHNldEF1ZGlvRGV2aWNlSWQsXG4gICAgICAgICAgICAgICAga2luZExhYmVsOiAnTWljcm9waG9uZScsXG4gICAgICAgICAgICAgICAgbWV0ZXI6IChcbiAgICAgICAgICAgICAgICAgICAgPEJveCBzeD17e3dpZHRoOiA1NiwgaGVpZ2h0OiA2LCBib3JkZXJSYWRpdXM6IDMsIGJhY2tncm91bmQ6ICcjZTZlYWYwJywgb3ZlcmZsb3c6ICdoaWRkZW4nLCBmbGV4U2hyaW5rOiAwfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Qm94IHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGAke2F1ZGlvT24gPyBtaWNMZXZlbCA6IDB9JWAsIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHByaW1hcnksIHRyYW5zaXRpb246ICd3aWR0aCA5MG1zIGxpbmVhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICB9fS8+XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9KX1cblxuICAgICAgICAgICAge3N0YXR1c01lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSBzeD17e2ZvbnRTaXplOiAxMiwgY29sb3I6ICcjZjE0MTZjJ319PntzdGF0dXNNZXNzYWdlfTwvVHlwb2dyYXBoeT59XG4gICAgICAgICAgICB7IXZpZGVvQ29ubmVjdGVkICYmICFhdWRpb0Nvbm5lY3RlZCAmJiByZWFkeSAmJlxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHN4PXt7Zm9udFNpemU6IDEyLCBjb2xvcjogJyNmMTQxNmMnfX0+XG4gICAgICAgICAgICAgICAgICAgIE5vIGNhbWVyYSBvciBtaWNyb3Bob25lIGRldGVjdGVkLlxuICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT59XG4gICAgICAgIDwvQm94PlxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8Qm94IHJlZj17Y29udGFpbmVyUmVmfSBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoe3dpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnfSwgcHJvcHMuY29uZmlnKX0+XG4gICAgICAgICAgICA8Qm94IHN4PXt7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHN0YWNrZWQgPyAnY29sdW1uJyA6ICdyb3cnLFxuICAgICAgICAgICAgICAgIGdhcDogMiwgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICB7LyogU3RhY2tlZCAobmFycm93IGNvbnRhaW5lciwgZS5nLiBwaW5uZWQpOiByb3cgMSBjb250cm9scywgcm93IDIgc3F1YXJlIHZpZGVvLlxuICAgICAgICAgICAgICAgICAgICBXaWRlOiBzcXVhcmUgdmlkZW8gYmVzaWRlIGNvbnRyb2xzLiAqL31cbiAgICAgICAgICAgICAgICB7c3RhY2tlZFxuICAgICAgICAgICAgICAgICAgICA/IDw+e2NvbnRyb2xzQmxvY2t9e3ZpZGVvQmxvY2t9PC8+XG4gICAgICAgICAgICAgICAgICAgIDogPD57dmlkZW9CbG9ja317Y29udHJvbHNCbG9ja308Lz59XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFZDU2V0dGluZ3M7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLG1CQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxTQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxTQUFBLEdBQUFSLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUSxZQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxJQUFBLEdBQUFWLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBVSxPQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFBb0QsU0FBQUQsdUJBQUFZLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRyxRQUFBSCxD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
|
|
@@ -28,6 +28,9 @@ const VideoPlayer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default
|
|
|
28
28
|
_Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
|
|
29
29
|
_Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
|
|
30
30
|
props.handle.api.refresh();
|
|
31
|
+
return () => {
|
|
32
|
+
_Observable.default.clearComponentEventListeners(props.handle);
|
|
33
|
+
};
|
|
31
34
|
}, []);
|
|
32
35
|
_react.default.useEffect(() => {
|
|
33
36
|
props.handle.api.refresh();
|
|
@@ -100,4 +103,4 @@ const VideoPlayer = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default
|
|
|
100
103
|
}, "NO TRAINING VIDEO AVAILABLE")));
|
|
101
104
|
}));
|
|
102
105
|
var _default = exports.default = VideoPlayer;
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0UGxheWVyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9PYnNlcnZhYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwibG9jYXRpb24iLCJ3aW5kb3ciLCJwcm90b2NvbCIsImhvc3RuYW1lIiwiVmlkZW9QbGF5ZXIiLCJSZWFjdCIsIm1lbW8iLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJyZWYiLCJwbGF5aW5nIiwic2V0UGxheWluZyIsInVzZVN0YXRlIiwiZG9jdW1lbnRJZCIsInNldERvY3VtZW50SWQiLCJkb3dubG9hZFVybCIsInNldERvd25sb2FkVXJsIiwiZGlzYWJsZWQiLCJzZXREaXNhYmxlZCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwiVXRpbHMiLCJwYXJzZUNvbmZpZyIsImNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsInJlZnJlc2giLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRDb250ZXh0Um9vdCIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsImlkIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsImlzTnVsbCIsImdldENoaWxkcmVuIiwiY3JlYXRlRWxlbWVudCIsIkZyYWdtZW50Iiwic3R5bGUiLCJtZXJnZVN0eWxlcyIsImNsYXNzTmFtZSIsImJvcmRlclJhZGl1cyIsInVybCIsImNvbnRyb2xzIiwid2lkdGgiLCJoZWlnaHQiLCJvblBsYXkiLCJvblBhdXNlIiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21lZGlhL1ZpZGVvUGxheWVyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gJy4uLy4uL1V0aWxzJztcbmltcG9ydCAnLi9WaWRlb1BsYXllci5jc3MnO1xuaW1wb3J0IFJlYWN0UGxheWVyIGZyb20gJ3JlYWN0LXBsYXllcic7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gXCIuLi8uLi9ldmVudC9PYnNlcnZhYmxlXCI7XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmNvbnN0IFZpZGVvUGxheWVyID0gUmVhY3QubWVtbyhSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG5cbiAgICBjb25zdCBbcGxheWluZywgc2V0UGxheWluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2RvY3VtZW50SWQsIHNldERvY3VtZW50SWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtkb3dubG9hZFVybCwgc2V0RG93bmxvYWRVcmxdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgfSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG5cbiAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMocGFyc2VkQ29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBwYXJzZWRDb25maWcpO1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICB9LCBbZG9jdW1lbnRJZF0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICB9LCBbcGxheWluZ10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGRvY3VtZW50SWQpIHtcbiAgICAgICAgICAgIHNldERvd25sb2FkVXJsKGxvY2F0aW9uICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldENvbnRleHRSb290KCkgKyAnL2RvY3MvYXBpL3YxL21hbmFnZXIvZG93bmxvYWQvJyArIGRvY3VtZW50SWQgK1xuICAgICAgICAgICAgICAgICc/YWNjZXNzX3Rva2VuPScgKyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpICsgJyZpZFRva2VuPScgKyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0RG93bmxvYWRVcmwobnVsbCk7XG4gICAgICAgIH1cbiAgICB9LCBbZG9jdW1lbnRJZF0pO1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHBsYXlpbmcocGxheWluZykge1xuICAgICAgICAgICAgICAgIHNldFBsYXlpbmcocGxheWluZyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGRvY3VtZW50SWQoZG9jdW1lbnRJZCkge1xuICAgICAgICAgICAgICAgIHNldERvY3VtZW50SWQoZG9jdW1lbnRJZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IGRvY3VtZW50SWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50SWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoZGlzYWJsZWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICBzZXREaXNhYmxlZChVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy5kaXNhYmxlZCwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZShVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpIHx8IFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGUgJiZcbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtVdGlscy5tZXJnZVN0eWxlcyh7fSwgcHJvcHMuY29uZmlnKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkVXJsICYmXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBsYXllci13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlYWN0UGxheWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Ym9yZGVyUmFkaXVzOiAnNHB4J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17ZG93bmxvYWRVcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlYWN0LXBsYXllclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXlpbmc9e3BsYXlpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBsYXk9eygpID0+IHNldFBsYXlpbmcodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUGF1c2U9eygpID0+IHNldFBsYXlpbmcoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoIWRvY3VtZW50SWQgfHwgIWRvd25sb2FkVXJsKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnYmxhY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnd2hpdGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTk8gVFJBSU5JTkcgVklERU8gQVZBSUxBQkxFXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8Lz5cbiAgICApO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBWaWRlb1BsYXllcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSSxtQkFBQSxHQUFBRixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBSCxzQkFBQSxDQUFBRixPQUFBO0FBQWtELFNBQUFFLHVCQUFBSSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQVAsd0JBQUFPLENBQUEsRUFBQUcsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFYLHVCQUFBLFlBQUFBLENBQUFPLENBQUEsRUFBQUcsQ0FBQSxTQUFBQSxDQUFBLElBQUFILENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLFNBQUFELENBQUEsTUFBQU8sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxRQUFBUixPQUFBLEVBQUFGLENBQUEsaUJBQUFBLENBQUEsdUJBQUFBLENBQUEseUJBQUFBLENBQUEsU0FBQVMsQ0FBQSxNQUFBRixDQUFBLEdBQUFKLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFFLENBQUEsQ0FBQUksR0FBQSxDQUFBWCxDQUFBLFVBQUFPLENBQUEsQ0FBQUssR0FBQSxDQUFBWixDQUFBLEdBQUFPLENBQUEsQ0FBQU0sR0FB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SyxDQUFDYyx5QkFBeUIsQ0FBQ2YsWUFBWSxDQUFDTCxPQUFPLEVBQUVLLFlBQVksQ0FBQ2MsRUFBRSxDQUFDLENBQUM7TUFDNUgsQ0FBQztNQUNERyxXQUFXLEVBQUVBLENBQUEsS0FBTTtRQUNmLE9BQU8sRUFBRTtNQUNiO0lBQ0osQ0FBQztFQUNMLENBQUM7RUFFRCxvQkFDSXBFLE1BQUEsQ0FBQVUsT0FBQSxDQUFBMkQsYUFBQSxDQUFBckUsTUFBQSxDQUFBVSxPQUFBLENBQUE0RCxRQUFBLFFBRVF4QixPQUFPLGlCQUNQOUMsTUFBQSxDQUFBVSxPQUFBLENBQUEyRCxhQUFBO0lBQ0lFLEtBQUssRUFBRW5CLGNBQUssQ0FBQ29CLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRXJDLEtBQUssQ0FBQ21CLE1BQU07RUFBRSxHQUd2Q1osV0FBVyxpQkFDWDFDLE1BQUEsQ0FBQVUsT0FBQSxDQUFBMkQsYUFBQTtJQUFLSSxTQUFTLEVBQUM7RUFBZ0IsZ0JBQzNCekUsTUFBQSxDQUFBVSxPQUFBLENBQUEyRCxhQUFBLENBQUNoRSxZQUFBLENBQUFLLE9BQVc7SUFDUjZELEtBQUssRUFBRTtNQUFDRyxZQUFZLEVBQUU7SUFBSyxDQUFFO0lBQzdCQyxHQUFHLEVBQUVqQyxXQUFZO0lBQ2pCK0IsU0FBUyxFQUFDLGNBQWM7SUFDeEJwQyxPQUFPLEVBQUVBLE9BQVE7SUFDakJ1QyxRQUFRO0lBQ1JDLEtBQUssRUFBQyxNQUFNO0lBQ1pDLE1BQU0sRUFBQyxNQUFNO0lBQ2JDLE1BQU0sRUFBRUEsQ0FBQSxLQUFNekMsVUFBVSxDQUFDLElBQUksQ0FBRTtJQUMvQjBDLE9BQU8sRUFBRUEsQ0FBQSxLQUFNMUMsVUFBVSxDQUFDLEtBQUs7RUFBRSxDQUNwQyxDQUNBLENBQUMsRUFHTixDQUFDLENBQUNFLFVBQVUsSUFBSSxDQUFDRSxXQUFXLGtCQUM1QjFDLE1BQUEsQ0FBQVUsT0FBQSxDQUFBMkQsYUFBQTtJQUFLRSxLQUFLLEVBQUU7TUFDUk0sS0FBSyxFQUFFLE1BQU07TUFDYkMsTUFBTSxFQUFFLE1BQU07TUFDZEcsZUFBZSxFQUFFLE9BQU87TUFDeEJDLEtBQUssRUFBRSxPQUFPO01BQ2RDLE9BQU8sRUFBRSxNQUFNO01BQ2ZDLGNBQWMsRUFBRSxRQUFRO01BQ3hCQyxVQUFVLEVBQUUsUUFBUTtNQUNwQlgsWUFBWSxFQUFFO0lBQ2xCO0VBQUUsR0FBQyw2QkFFRSxDQUVSLENBRVgsQ0FBQztBQUVYLENBQUMsQ0FBQyxDQUFDO0FBQUMsSUFBQVksUUFBQSxHQUFBQyxPQUFBLENBQUE3RSxPQUFBLEdBRVdxQixXQUFXIiwiaWdub3JlTGlzdCI6W119
|
|
106
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVXRpbHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3JlYWN0UGxheWVyIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9PYnNlcnZhYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwibG9jYXRpb24iLCJ3aW5kb3ciLCJwcm90b2NvbCIsImhvc3RuYW1lIiwiVmlkZW9QbGF5ZXIiLCJSZWFjdCIsIm1lbW8iLCJmb3J3YXJkUmVmIiwicHJvcHMiLCJyZWYiLCJwbGF5aW5nIiwic2V0UGxheWluZyIsInVzZVN0YXRlIiwiZG9jdW1lbnRJZCIsInNldERvY3VtZW50SWQiLCJkb3dubG9hZFVybCIsInNldERvd25sb2FkVXJsIiwiZGlzYWJsZWQiLCJzZXREaXNhYmxlZCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwiVXRpbHMiLCJwYXJzZUNvbmZpZyIsImNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsInJlZnJlc2giLCJjbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0Q29udGV4dFJvb3QiLCJzZXNzaW9uU3RvcmFnZSIsImdldEl0ZW0iLCJpZCIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJpc051bGwiLCJnZXRDaGlsZHJlbiIsImNyZWF0ZUVsZW1lbnQiLCJGcmFnbWVudCIsInN0eWxlIiwibWVyZ2VTdHlsZXMiLCJjbGFzc05hbWUiLCJib3JkZXJSYWRpdXMiLCJ1cmwiLCJjb250cm9scyIsIndpZHRoIiwiaGVpZ2h0Iiwib25QbGF5Iiwib25QYXVzZSIsImJhY2tncm91bmRDb2xvciIsImNvbG9yIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tZWRpYS9WaWRlb1BsYXllci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi8uLi9VdGlscyc7XG5pbXBvcnQgJy4vVmlkZW9QbGF5ZXIuY3NzJztcbmltcG9ydCBSZWFjdFBsYXllciBmcm9tICdyZWFjdC1wbGF5ZXInO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tIFwiLi4vLi4vZXZlbnQvT2JzZXJ2YWJsZVwiO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCBWaWRlb1BsYXllciA9IFJlYWN0Lm1lbW8oUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuXG4gICAgY29uc3QgW3BsYXlpbmcsIHNldFBsYXlpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtkb2N1bWVudElkLCBzZXREb2N1bWVudElkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZG93bmxvYWRVcmwsIHNldERvd25sb2FkVXJsXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtkaXNhYmxlZCwgc2V0RGlzYWJsZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuXG4gICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTeXN0ZW1TdWJzY3JpcHRpb25zKHByb3BzLnZpZXdJZCwgcGFyc2VkQ29uZmlnKTtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaS5yZWZyZXNoKCk7XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaS5yZWZyZXNoKCk7XG4gICAgfSwgW2RvY3VtZW50SWRdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgfSwgW3BsYXlpbmddKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChkb2N1bWVudElkKSB7XG4gICAgICAgICAgICBzZXREb3dubG9hZFVybChsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgJy9kb2NzL2FwaS92MS9tYW5hZ2VyL2Rvd25sb2FkLycgKyBkb2N1bWVudElkICtcbiAgICAgICAgICAgICAgICAnP2FjY2Vzc190b2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKSArICcmaWRUb2tlbj0nICsgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaWRUb2tlbicpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldERvd25sb2FkVXJsKG51bGwpO1xuICAgICAgICB9XG4gICAgfSwgW2RvY3VtZW50SWRdKTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBwbGF5aW5nKHBsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICBzZXRQbGF5aW5nKHBsYXlpbmcpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBkb2N1bWVudElkKGRvY3VtZW50SWQpIHtcbiAgICAgICAgICAgICAgICBzZXREb2N1bWVudElkKGRvY3VtZW50SWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCBkb2N1bWVudElkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudElkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHNldERpc2FibGVkKGRpc2FibGVkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmlzaWJsZSh2aXNpYmxlKSB7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh2aXNpYmxlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcuZGlzYWJsZWQsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlICYmXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoe30sIHByb3BzLmNvbmZpZyl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZFVybCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwbGF5ZXItd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWFjdFBsYXllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e2JvcmRlclJhZGl1czogJzRweCd9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9e2Rvd25sb2FkVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyZWFjdC1wbGF5ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5aW5nPXtwbGF5aW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QbGF5PXsoKSA9PiBzZXRQbGF5aW5nKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhdXNlPXsoKSA9PiBzZXRQbGF5aW5nKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgKCFkb2N1bWVudElkIHx8ICFkb3dubG9hZFVybCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCdcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5PIFRSQUlOSU5HIFZJREVPIEFWQUlMQUJMRVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC8+XG4gICAgKTtcbn0pKTtcblxuZXhwb3J0IGRlZmF1bHQgVmlkZW9QbGF5ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksbUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUYsT0FBQTtBQUFrRCxTQUFBRSx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFQLHdCQUFBTyxDQUFBLEVBQUFHLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBWCx1QkFBQSxZQUFBQSxDQUFBTyxDQUFBLEVBQUFHLENBQUEsU0FBQUEsQ0FBQSxJQUFBSCxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFPLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQVIsT0FBQSxFQUFBRixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNB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
|