@dcl/asset-packs 2.16.2 → 2.16.3

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.
Files changed (47) hide show
  1. package/bin/index.js +445 -325
  2. package/dist/admin-toolkit-ui/Active.d.ts +3 -2
  3. package/dist/admin-toolkit-ui/Active.js +1 -1
  4. package/dist/admin-toolkit-ui/Card.d.ts +2 -1
  5. package/dist/admin-toolkit-ui/Card.js +1 -1
  6. package/dist/admin-toolkit-ui/FeedbackButton.js +2 -2
  7. package/dist/admin-toolkit-ui/Loading.d.ts +3 -2
  8. package/dist/admin-toolkit-ui/Loading.js +1 -1
  9. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.d.ts +1 -1
  10. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.js +1 -1
  11. package/dist/admin-toolkit-ui/ModerationControl/BanUserDescription.js +1 -1
  12. package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.js +4 -4
  13. package/dist/admin-toolkit-ui/ModerationControl/UsersList.js +16 -14
  14. package/dist/admin-toolkit-ui/ModerationControl/index.d.ts +0 -7
  15. package/dist/admin-toolkit-ui/ModerationControl/index.js +4 -9
  16. package/dist/admin-toolkit-ui/SmartItemsControl.js +15 -33
  17. package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +14 -12
  18. package/dist/admin-toolkit-ui/VideoControl/DclCast/CompactDclCast.js +7 -9
  19. package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.js +4 -3
  20. package/dist/admin-toolkit-ui/VideoControl/DclCast/index.d.ts +0 -14
  21. package/dist/admin-toolkit-ui/VideoControl/DclCast/index.js +32 -136
  22. package/dist/admin-toolkit-ui/VideoControl/DclCast/presentation-detector.d.ts +2 -0
  23. package/dist/admin-toolkit-ui/VideoControl/DclCast/presentation-detector.js +116 -0
  24. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.d.ts +1 -1
  25. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.js +2 -2
  26. package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.d.ts +1 -1
  27. package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.js +2 -2
  28. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +5 -4
  29. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.js +2 -2
  30. package/dist/admin-toolkit-ui/VideoControl/api.d.ts +5 -2
  31. package/dist/admin-toolkit-ui/VideoControl/api.js +22 -12
  32. package/dist/admin-toolkit-ui/VideoControl/index.js +14 -15
  33. package/dist/admin-toolkit-ui/VideoControl/utils.d.ts +2 -0
  34. package/dist/admin-toolkit-ui/VideoControl/utils.js +15 -3
  35. package/dist/admin-toolkit-ui/actions.d.ts +42 -0
  36. package/dist/admin-toolkit-ui/actions.js +138 -0
  37. package/dist/admin-toolkit-ui/admin-message-bus.js +17 -2
  38. package/dist/admin-toolkit-ui/index.d.ts +0 -3
  39. package/dist/admin-toolkit-ui/index.js +20 -93
  40. package/dist/admin-toolkit-ui/store.d.ts +2 -0
  41. package/dist/admin-toolkit-ui/store.js +45 -0
  42. package/dist/admin-toolkit-ui/types.d.ts +22 -5
  43. package/dist/admin-toolkit-ui/types.js +1 -2
  44. package/dist/bin/index.js +445 -325
  45. package/package.json +1 -1
  46. package/dist/admin-toolkit-ui/RewardsControl.d.ts +0 -7
  47. package/dist/admin-toolkit-ui/RewardsControl.js +0 -95
@@ -9,15 +9,17 @@ import { Button } from './Button';
9
9
  import { TextAnnouncements } from './TextAnnouncements';
10
10
  import { getContentUrl } from './constants';
11
11
  import { TabType } from './types';
12
- import { getBtnModerationControl, ModerationControl, moderationControlState, } from './ModerationControl';
12
+ import { getBtnModerationControl, ModerationControl } from './ModerationControl';
13
13
  import { getSceneAdmins, getSceneBans } from './ModerationControl/api';
14
14
  import { ModalUserList, UserListType } from './ModerationControl/UsersList';
15
- import { showcaseState, sharePresentationState } from './VideoControl/DclCast';
15
+ import { startPresentationDetection } from './VideoControl/DclCast/presentation-detector';
16
+ import { findActiveCastScreenIndex } from './VideoControl/utils';
16
17
  import { SpeakerShowcase } from './VideoControl/DclCast/SpeakerShowcase';
17
18
  import SharePresentationModal from './VideoControl/DclCast/SharePresentationModal';
18
19
  import { isPreview } from './fetch-utils';
19
20
  import { initAdminMessageBus, getAdminMessageBus } from './admin-message-bus';
20
- export const nextTickFunctions = [];
21
+ import { state } from './store';
22
+ import { setActiveTab, togglePanel, showPresentation, dismissPresentation, setAdminToolkitUiEntity, } from './actions';
21
23
  const MOBILE_UI_SCALE = 2;
22
24
  const BASE_VIRTUAL_UI_SIZE = { virtualWidth: 1920, virtualHeight: 1080 };
23
25
  function getVirtualUiSize() {
@@ -28,32 +30,6 @@ function getVirtualUiSize() {
28
30
  }
29
31
  : BASE_VIRTUAL_UI_SIZE;
30
32
  }
31
- export const state = {
32
- adminToolkitUiEntity: 0,
33
- panelOpen: false,
34
- activeTab: TabType.NONE,
35
- videoControl: {
36
- selectedVideoPlayer: undefined,
37
- selectedStream: undefined,
38
- dclCast: undefined,
39
- isMinimized: false,
40
- presentationState: undefined,
41
- },
42
- smartItemsControl: {
43
- selectedSmartItem: undefined,
44
- smartItems: new Map(),
45
- },
46
- textAnnouncementControl: {
47
- entity: undefined,
48
- text: undefined,
49
- messageRateTracker: new Map(),
50
- announcements: [],
51
- maxAnnouncements: 4,
52
- },
53
- rewardsControl: {
54
- selectedRewardItem: undefined,
55
- },
56
- };
57
33
  let sceneAdminsCache = [];
58
34
  let sceneBansCache = [];
59
35
  const ADMIN_ICONS = {
@@ -136,20 +112,12 @@ let adminDataInitialized = false;
136
112
  export async function initializeAdminData(engine, sdkHelpers, playersHelper) {
137
113
  if (!adminDataInitialized) {
138
114
  const { VideoControlState } = getComponents(engine);
139
- state.adminToolkitUiEntity = getAdminToolkitEntity(engine) ?? engine.addEntity();
115
+ setAdminToolkitUiEntity(getAdminToolkitEntity(engine) ?? engine.addEntity());
140
116
  initTextAnnouncementSync(engine);
141
117
  if (!VideoControlState.getOrNull(state.adminToolkitUiEntity)) {
142
118
  VideoControlState.create(state.adminToolkitUiEntity);
143
119
  }
144
120
  sdkHelpers?.syncEntity?.(state.adminToolkitUiEntity, [VideoControlState.componentId], ADMIN_TOOLS_ENTITY);
145
- engine.addSystem(() => {
146
- if (nextTickFunctions.length > 0) {
147
- const nextTick = nextTickFunctions.shift();
148
- if (nextTick) {
149
- nextTick();
150
- }
151
- }
152
- }, Number.POSITIVE_INFINITY);
153
121
  await Promise.all([fetchSceneAdmins(), fetchSceneBans()]);
154
122
  initAdminMessageBus(engine, sceneAdminsCache, state.adminToolkitUiEntity, playersHelper, fetchSceneAdmins);
155
123
  adminDataInitialized = true;
@@ -160,6 +128,7 @@ export function createAdminToolkitUI(engine, pointerEventsSystem, reactBasedUiSy
160
128
  initializeAdminData(engine, sdkHelpers, playersHelper).then(() => {
161
129
  console.log('createAdminToolkitUI - initialized');
162
130
  reactBasedUiSystem.setUiRenderer(() => uiComponent(engine, pointerEventsSystem, sdkHelpers, playersHelper), getVirtualUiSize());
131
+ startPresentationDetection(engine, () => !!isAllowedAdmin(engine, getAdminToolkitComponent(engine), playersHelper?.getPlayer()), () => playersHelper?.getPlayer()?.userId, () => showPresentation(findActiveCastScreenIndex(engine)), () => dismissPresentation());
163
132
  });
164
133
  }
165
134
  function isAllowedAdmin(_engine, adminToolkitEntitie, player) {
@@ -220,17 +189,7 @@ const uiComponent = (engine, _pointerEventsSystem, _sdkHelpers, playersHelper) =
220
189
  color: state.activeTab === TabType.MODERATION_CONTROL
221
190
  ? Color4.Black()
222
191
  : Color4.White(),
223
- }, iconTransform: { height: '100%', width: '100%' }, onMouseDown: () => {
224
- if (state.activeTab !== TabType.MODERATION_CONTROL) {
225
- state.activeTab = TabType.NONE;
226
- nextTickFunctions.push(() => {
227
- state.activeTab = TabType.MODERATION_CONTROL;
228
- });
229
- }
230
- else {
231
- state.activeTab = TabType.NONE;
232
- }
233
- } }),
192
+ }, iconTransform: { height: '100%', width: '100%' }, onMouseDown: () => setActiveTab(TabType.MODERATION_CONTROL) }),
234
193
  ReactEcs.createElement(Button, { id: "admin_toolkit_panel_video_control", variant: state.activeTab === TabType.VIDEO_CONTROL ? 'primary' : 'text', icon: ADMIN_ICONS.BTN_VIDEO_CONTROL, iconBackground: {
235
194
  color: state.activeTab === TabType.VIDEO_CONTROL ? Color4.Black() : Color4.White(),
236
195
  }, onlyIcon: true, uiTransform: {
@@ -243,17 +202,7 @@ const uiComponent = (engine, _pointerEventsSystem, _sdkHelpers, playersHelper) =
243
202
  }, iconTransform: {
244
203
  height: '100%',
245
204
  width: '100%',
246
- }, onMouseDown: () => {
247
- if (state.activeTab !== TabType.VIDEO_CONTROL) {
248
- state.activeTab = TabType.NONE;
249
- nextTickFunctions.push(() => {
250
- state.activeTab = TabType.VIDEO_CONTROL;
251
- });
252
- }
253
- else {
254
- state.activeTab = TabType.NONE;
255
- }
256
- } }),
205
+ }, onMouseDown: () => setActiveTab(TabType.VIDEO_CONTROL) }),
257
206
  ReactEcs.createElement(Button, { id: "admin_toolkit_panel_smart_items_control", variant: state.activeTab === TabType.SMART_ITEMS_CONTROL ? 'primary' : 'text', icon: ADMIN_ICONS.BTN_SMART_ITEM_CONTROL, iconBackground: {
258
207
  color: state.activeTab === TabType.SMART_ITEMS_CONTROL
259
208
  ? Color4.Black()
@@ -268,17 +217,7 @@ const uiComponent = (engine, _pointerEventsSystem, _sdkHelpers, playersHelper) =
268
217
  }, iconTransform: {
269
218
  height: '100%',
270
219
  width: '100%',
271
- }, onMouseDown: () => {
272
- if (state.activeTab !== TabType.SMART_ITEMS_CONTROL) {
273
- state.activeTab = TabType.NONE;
274
- nextTickFunctions.push(() => {
275
- state.activeTab = TabType.SMART_ITEMS_CONTROL;
276
- });
277
- }
278
- else {
279
- state.activeTab = TabType.NONE;
280
- }
281
- } }),
220
+ }, onMouseDown: () => setActiveTab(TabType.SMART_ITEMS_CONTROL) }),
282
221
  ReactEcs.createElement(Button, { id: "admin_toolkit_panel_text_announcement_control", variant: state.activeTab === TabType.TEXT_ANNOUNCEMENT_CONTROL ? 'primary' : 'text', icon: ADMIN_ICONS.BTN_TEXT_ANNOUNCEMENT_CONTROL, iconBackground: {
283
222
  color: state.activeTab === TabType.TEXT_ANNOUNCEMENT_CONTROL
284
223
  ? Color4.Black()
@@ -293,17 +232,7 @@ const uiComponent = (engine, _pointerEventsSystem, _sdkHelpers, playersHelper) =
293
232
  }, iconTransform: {
294
233
  height: '100%',
295
234
  width: '100%',
296
- }, onMouseDown: () => {
297
- if (state.activeTab !== TabType.TEXT_ANNOUNCEMENT_CONTROL) {
298
- state.activeTab = TabType.NONE;
299
- nextTickFunctions.push(() => {
300
- state.activeTab = TabType.TEXT_ANNOUNCEMENT_CONTROL;
301
- });
302
- }
303
- else {
304
- state.activeTab = TabType.NONE;
305
- }
306
- } })),
235
+ }, onMouseDown: () => setActiveTab(TabType.TEXT_ANNOUNCEMENT_CONTROL) })),
307
236
  ReactEcs.createElement(UiEntity, { uiTransform: {
308
237
  width: '100%',
309
238
  flexDirection: 'column',
@@ -341,17 +270,15 @@ const uiComponent = (engine, _pointerEventsSystem, _sdkHelpers, playersHelper) =
341
270
  },
342
271
  textureMode: 'stretch',
343
272
  color: Color4.create(1, 1, 1, 1),
344
- }, onMouseDown: () => {
345
- state.panelOpen = !state.panelOpen;
346
- } })))) : null,
273
+ }, onMouseDown: () => togglePanel() })))) : null,
347
274
  ReactEcs.createElement(TextAnnouncements, { engine: engine, state: state })),
348
- moderationControlState.showModalAdminList && (ReactEcs.createElement(ModalUserList, { users: sceneAdminsCache ?? [], engine: engine, type: UserListType.ADMIN })),
349
- moderationControlState.showModalBanList && (ReactEcs.createElement(ModalUserList, { users: sceneBansCache ?? [], engine: engine, type: UserListType.BAN })),
350
- showcaseState.show &&
351
- showcaseState.onSelectTrack &&
352
- showcaseState.onSetDefault &&
353
- showcaseState.onClose && (ReactEcs.createElement(SpeakerShowcase, { participants: showcaseState.participants, activeTrackSid: showcaseState.activeTrackSid, onSelectTrack: showcaseState.onSelectTrack, onSetDefault: showcaseState.onSetDefault, onClose: showcaseState.onClose })),
354
- sharePresentationState.show && sharePresentationState.onClose && (ReactEcs.createElement(SharePresentationModal, { onClose: sharePresentationState.onClose, streamingKey: state.videoControl.dclCast?.streamingKey ?? '' })),
275
+ state.moderationControl.showModalAdminList && (ReactEcs.createElement(ModalUserList, { users: sceneAdminsCache ?? [], engine: engine, type: UserListType.ADMIN })),
276
+ state.moderationControl.showModalBanList && (ReactEcs.createElement(ModalUserList, { users: sceneBansCache ?? [], engine: engine, type: UserListType.BAN })),
277
+ state.videoControl.showcase.show &&
278
+ state.videoControl.showcase.onSelectTrack &&
279
+ state.videoControl.showcase.onSetDefault &&
280
+ state.videoControl.showcase.onClose && (ReactEcs.createElement(SpeakerShowcase, { participants: state.videoControl.participants, activeTrackSid: state.videoControl.showcase.activeTrackSid, onSelectTrack: state.videoControl.showcase.onSelectTrack, onSetDefault: state.videoControl.showcase.onSetDefault, onClose: state.videoControl.showcase.onClose })),
281
+ state.videoControl.sharePresentation.show && state.videoControl.sharePresentation.onClose && (ReactEcs.createElement(SharePresentationModal, { onClose: state.videoControl.sharePresentation.onClose, streamingKey: state.videoControl.dclCast?.streamingKey ?? '' })),
355
282
  ];
356
283
  };
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxJQUFJLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9ELE9BQU8sUUFBUSxFQUFFLEVBQ2YsS0FBSyxFQUNMLE1BQU0sSUFBSSxTQUFTLEVBQ25CLFFBQVEsR0FFVCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxhQUFhLEdBSWQsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBYyxPQUFPLEVBQTBCLE1BQU0sU0FBUyxDQUFDO0FBQ3RFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLHNCQUFzQixHQUV2QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFxQixNQUFNLHlCQUF5QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVB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LEVBQUUsWUFBWSxDQUFDLEdBQUcsR0FDdEIsQ0FDSDtRQUNELGFBQWEsQ0FBQyxJQUFJO1lBQ2hCLGFBQWEsQ0FBQyxhQUFhO1lBQzNCLGFBQWEsQ0FBQyxZQUFZO1lBQzFCLGFBQWEsQ0FBQyxPQUFPLElBQUksQ0FDdkIsdUJBQUMsZUFBZSxJQUNkLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxFQUN4QyxjQUFjLEVBQUUsYUFBYSxDQUFDLGNBQWMsRUFDNUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxhQUFhLEVBQzFDLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxFQUN4QyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU8sR0FDOUIsQ0FDSDtRQUNILHNCQUFzQixDQUFDLElBQUksSUFBSSxzQkFBc0IsQ0FBQyxPQUFPLElBQUksQ0FDL0QsdUJBQUMsc0JBQXNCLElBQ3JCLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxPQUFPLEVBQ3ZDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxZQUFZLElBQUksRUFBRSxHQUM1RCxDQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgaXNNb2JpbGUgYXMgZGV0ZWN0SXNNb2JpbGUgfSBmcm9tICdAZGNsL3Nkay9wbGF0Zm9ybSc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFJlYWN0RWNzIGlzIHJlcXVpcmVkIGZvciBKU1ggZmFjdG9yeVxuaW1wb3J0IFJlYWN0RWNzLCB7XG4gIExhYmVsLFxuICBCdXR0b24gYXMgRENMQnV0dG9uLFxuICBVaUVudGl0eSxcbiAgdHlwZSBSZWFjdEJhc2VkVWlTeXN0ZW0sXG59IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IHR5cGUgRW50aXR5LCB0eXBlIElFbmdpbmUsIHR5cGUgUG9pbnRlckV2ZW50c1N5c3RlbSB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB7XG4gIGdldENvbXBvbmVudHMsXG4gIHR5cGUgR2V0UGxheWVyRGF0YVJlcyxcbiAgdHlwZSBJUGxheWVyc0hlbHBlcixcbiAgdHlwZSBJU0RLSGVscGVycyxcbn0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgVmlkZW9Db250cm9sIH0gZnJvbSAnLi9WaWRlb0NvbnRyb2wnO1xuaW1wb3J0IHsgVGV4dEFubm91bmNlbWVudHNDb250cm9sIH0gZnJvbSAnLi9UZXh0QW5ub3VuY2VtZW50c0NvbnRyb2wnO1xuaW1wb3J0IHsgU21hcnRJdGVtc0NvbnRyb2wgfSBmcm9tICcuL1NtYXJ0SXRlbXNDb250cm9sJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IFRleHRBbm5vdW5jZW1lbnRzIH0gZnJvbSAnLi9UZXh0QW5ub3VuY2VtZW50cyc7XG5pbXBvcnQgeyBnZXRDb250ZW50VXJsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgdHlwZSBTdGF0ZSwgVGFiVHlwZSwgdHlwZSBTZWxlY3RlZFNtYXJ0SXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgZ2V0QnRuTW9kZXJhdGlvbkNvbnRyb2wsXG4gIE1vZGVyYXRpb25Db250cm9sLFxuICBtb2RlcmF0aW9uQ29udHJvbFN0YXRlLFxuICB0eXBlIFNjZW5lQWRtaW4sXG59IGZyb20gJy4vTW9kZXJhdGlvbkNvbnRyb2wnO1xuaW1wb3J0IHsgZ2V0U2NlbmVBZG1pbnMsIGdldFNjZW5lQmFucywgdHlwZSBTY2VuZUJhblVzZXIgfSBmcm9tICcuL01vZGVyYXRpb25Db250cm9sL2FwaSc7XG5pbXBvcnQgeyBNb2RhbFVzZXJMaXN0LCBVc2VyTGlzdFR5cGUgfSBmcm9tICcuL01vZGVyYXRpb25Db250cm9sL1VzZXJzTGlzdCc7XG5pbXBvcnQgeyBzaG93Y2FzZVN0YXRlLCBzaGFyZVByZXNlbnRhdGlvblN0YXRlIH0gZnJvbSAnLi9WaWRlb0NvbnRyb2wvRGNsQ2FzdCc7XG5pbXBvcnQgeyBTcGVha2VyU2hvd2Nhc2UgfSBmcm9tICcuL1ZpZGVvQ29udHJvbC9EY2xDYXN0L1NwZWFrZXJTaG93Y2FzZSc7XG5pbXBvcnQgU2hhcmVQcmVzZW50YXRpb25Nb2RhbCBmcm9tICcuL1ZpZGVvQ29udHJvbC9EY2xDYXN0L1NoYXJlUHJlc2VudGF0aW9uTW9kYWwnO1xuaW1wb3J0IHsgaXNQcmV2aWV3IH0gZnJvbSAnLi9mZXRjaC11dGlscyc7XG5pbXBvcnQgeyBpbml0QWRtaW5NZXNzYWdlQnVzLCBnZXRBZG1pbk1lc3NhZ2VCdXMgfSBmcm9tICcuL2FkbWluLW1lc3NhZ2UtYnVzJztcblxuZXhwb3J0IGNvbnN0IG5leHRUaWNrRnVuY3Rpb25zOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4vLyBNb2JpbGUgc2NhbGluZzogc2hyaW5rIHRoZSB2aXJ0dWFsIGNhbnZhcyBvblxuLy8gbW9iaWxlIHNvIHRoZSBTREsncyBnbG9iYWwgVUkgc2NhbGUgZmFjdG9yIOKAlCBtaW4oc2NyZWVuL3ZpcnR1YWwpLCBzZWVcbi8vIEBkY2wvcmVhY3QtZWNzIGdldFVpU2NhbGVGYWN0b3Ig4oCUIG11bHRpcGxpZXMgRVZFUllUSElORyAoZ2VvbWV0cnkgYW5kXG4vLyBmb250U2l6ZSkgdW5pZm9ybWx5IGJ5IE1PQklMRV9VSV9TQ0FMRS4gV2UgYXV0aG9yIGEgc2luZ2xlIGJhc2UgbGF5b3V0IGFuZFxuLy8gbW9iaWxlIGdldHMgdGhlIHpvb20gZm9yIGZyZWUsIGluY2x1ZGluZyBldmVyeSBjaGlsZCBjb21wb25lbnQncyB0ZXh0LlxuY29uc3QgTU9CSUxFX1VJX1NDQUxFID0gMjtcbmNvbnN0IEJBU0VfVklSVFVBTF9VSV9TSVpFID0geyB2aXJ0dWFsV2lkdGg6IDE5MjAsIHZpcnR1YWxIZWlnaHQ6IDEwODAgfTtcblxuZnVuY3Rpb24gZ2V0VmlydHVhbFVpU2l6ZSgpIHtcbiAgcmV0dXJuIGRldGVjdElzTW9iaWxlKClcbiAgICA/IHtcbiAgICAgICAgdmlydHVhbFdpZHRoOiBCQVNFX1ZJUlRVQUxfVUlfU0laRS52aXJ0dWFsV2lkdGggLyBNT0JJTEVfVUlfU0NBTEUsXG4gICAgICAgIHZpcnR1YWxIZWlnaHQ6IEJBU0VfVklSVFVBTF9VSV9TSVpFLnZpcnR1YWxIZWlnaHQgLyBNT0JJTEVfVUlfU0NBTEUsXG4gICAgICB9XG4gICAgOiBCQVNFX1ZJUlRVQUxfVUlfU0laRTtcbn1cblxuZXhwb3J0IGNvbnN0IHN0YXRlOiBTdGF0ZSA9IHtcbiAgYWRtaW5Ub29sa2l0VWlFbnRpdHk6IDAgYXMgRW50aXR5LFxuICBwYW5lbE9wZW46IGZhbHNlLFxuICBhY3RpdmVUYWI6IFRhYlR5cGUuTk9ORSxcbiAgdmlkZW9Db250cm9sOiB7XG4gICAgc2VsZWN0ZWRWaWRlb1BsYXllcjogdW5kZWZpbmVkLFxuICAgIHNlbGVjdGVkU3RyZWFtOiB1bmRlZmluZWQsXG4gICAgZGNsQ2FzdDogdW5kZWZpbmVkLFxuICAgIGlzTWluaW1pemVkOiBmYWxzZSxcbiAgICBwcmVzZW50YXRpb25TdGF0ZTogdW5kZWZpbmVkLFxuICB9LFxuICBzbWFydEl0ZW1zQ29udHJvbDoge1xuICAgIHNlbGVjdGVkU21hcnRJdGVtOiB1bmRlZmluZWQsXG4gICAgc21hcnRJdGVtczogbmV3IE1hcDxFbnRpdHksIFNlbGVjdGVkU21hcnRJdGVtPigpLFxuICB9LFxuICB0ZXh0QW5ub3VuY2VtZW50Q29udHJvbDoge1xuICAgIGVudGl0eTogdW5kZWZpbmVkLFxuICAgIHRleHQ6IHVuZGVmaW5lZCxcbiAgICBtZXNzYWdlUmF0ZVRyYWNrZXI6IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCksXG4gICAgYW5ub3VuY2VtZW50czogW10sXG4gICAgbWF4QW5ub3VuY2VtZW50czogNCxcbiAgfSxcbiAgcmV3YXJkc0NvbnRyb2w6IHtcbiAgICBzZWxlY3RlZFJld2FyZEl0ZW06IHVuZGVmaW5lZCxcbiAgfSxcbn07XG5cbmxldCBzY2VuZUFkbWluc0NhY2hlOiBTY2VuZUFkbWluW10gPSBbXTtcbmxldCBzY2VuZUJhbnNDYWNoZTogU2NlbmVCYW5Vc2VyW10gPSBbXTtcblxuLy8gY29uc3QgQlROX1JFV0FSRFNfQ09OVFJPTCA9IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC1yZXdhcmRzLWNvbnRyb2wtYnV0dG9uLnBuZ2Bcbi8vIGNvbnN0IEJUTl9SRVdBUkRTX0NPTlRST0xfQUNUSVZFID0gYCR7Q09OVEVOVF9VUkx9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2FkbWluLXBhbmVsLXJld2FyZHMtY29udHJvbC1hY3RpdmUtYnV0dG9uLnBuZ2BcblxuY29uc3QgQURNSU5fSUNPTlMgPSB7XG4gIGdldCBCVE5fVklERU9fQ09OVFJPTCgpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC12aWRlby1jb250cm9sLWJ1dHRvbi5wbmdgO1xuICB9LFxuICBnZXQgQlROX1NNQVJUX0lURU1fQ09OVFJPTCgpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC1zbWFydC1pdGVtLWNvbnRyb2wtYnV0dG9uLnBuZ2A7XG4gIH0sXG4gIGdldCBCVE5fVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTCgpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC10ZXh0LWFubm91bmNlbWVudC1jb250cm9sLWJ1dHRvbi5wbmdgO1xuICB9LFxuICBnZXQgQlROX0FETUlOX1RPT0xLSVRfQ09OVFJPTCgpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9hZG1pbi1wYW5lbC1jb250cm9sLWJ1dHRvbi5wbmdgO1xuICB9LFxuICBnZXQgQlROX0FETUlOX1RPT0xLSVRfQkFDS0dST1VORCgpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9iYWNrZ3JvdW5kcy9hZG1pbi10b29sLWJhY2tncm91bmQucG5nYDtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBjb250YWluZXJCYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcjQuY3JlYXRlKDAsIDAsIDAsIDAuNzUpO1xuXG4vLyBUaGUgZWRpdG9yIHN0YXJ0cyB1c2luZyBlbnRpdGllcyBmcm9tIFs4MDAxXS5cbmNvbnN0IEFETUlOX1RPT0xTX0VOVElUWSA9IDgwMDAgYXMgRW50aXR5O1xuXG5mdW5jdGlvbiBnZXRBZG1pblRvb2xraXRFbnRpdHkoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IHsgQWRtaW5Ub29scyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuICByZXR1cm4gQXJyYXkuZnJvbShlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKEFkbWluVG9vbHMpKVswXVswXTtcbn1cblxuZnVuY3Rpb24gZ2V0QWRtaW5Ub29sa2l0Q29tcG9uZW50KGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCB7IEFkbWluVG9vbHMgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oZW5naW5lLmdldEVudGl0aWVzV2l0aChBZG1pblRvb2xzKSlbMF1bMV07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFNjZW5lQWRtaW5zKCkge1xuICBjb25zdCBbZXJyb3IsIHJlc3BvbnNlXSA9IGF3YWl0IGdldFNjZW5lQWRtaW5zKCk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyBlcnJvciB9KSk7XG4gICAgc2NlbmVBZG1pbnNDYWNoZSA9IFtdO1xuICAgIHJldHVybjtcbiAgfVxuICBzY2VuZUFkbWluc0NhY2hlID0gKHJlc3BvbnNlID8/IFtdKVxuICAgIC5tYXAoJCA9PiAoe1xuICAgICAgbmFtZTogJC5uYW1lLFxuICAgICAgYWRkcmVzczogJC5hZG1pbixcbiAgICAgIHJvbGU6ICdhZG1pbicgYXMgY29uc3QsXG4gICAgICB2ZXJpZmllZDogISQubmFtZS5pbmNsdWRlcygnIycpLFxuICAgICAgY2FuQmVSZW1vdmVkOiAhISQuY2FuQmVSZW1vdmVkLFxuICAgIH0pKVxuICAgIC5zb3J0KGEgPT4gKGEuY2FuQmVSZW1vdmVkID8gMSA6IC0xKSk7XG4gIGlmIChhZG1pbkRhdGFJbml0aWFsaXplZCkge1xuICAgIGdldEFkbWluTWVzc2FnZUJ1cygpLnVwZGF0ZUFkbWluTGlzdChzY2VuZUFkbWluc0NhY2hlKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hBbmRTeW5jU2NlbmVBZG1pbnMoKSB7XG4gIGF3YWl0IGZldGNoU2NlbmVBZG1pbnMoKTtcbiAgaWYgKGFkbWluRGF0YUluaXRpYWxpemVkKSB7XG4gICAgZ2V0QWRtaW5NZXNzYWdlQnVzKCkuZW1pdFN5bmNBZG1pbnMoKTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hTY2VuZUJhbnMoKSB7XG4gIGNvbnN0IFtlcnJvciwgcmVzcG9uc2VdID0gYXdhaXQgZ2V0U2NlbmVCYW5zKCk7XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgc2NlbmVCYW5zQ2FjaGUgPSBbXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBzY2VuZUJhbnNDYWNoZSA9IHJlc3BvbnNlPy5yZXN1bHRzID8/IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJTY2VuZUJhbnNDYWNoZSgpIHtcbiAgc2NlbmVCYW5zQ2FjaGUgPSBbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNtYXJ0SXRlbXMoZW5naW5lOiBJRW5naW5lKSB7XG4gIGNvbnN0IGFkbWluVG9vbGtpdENvbXBvbmVudCA9IGdldEFkbWluVG9vbGtpdENvbXBvbmVudChlbmdpbmUpO1xuXG4gIHJldHVybiBBcnJheS5mcm9tKGFkbWluVG9vbGtpdENvbXBvbmVudC5zbWFydEl0ZW1zQ29udHJvbC5zbWFydEl0ZW1zID8/IFtdKTtcbn1cblxuZnVuY3Rpb24gaW5pdFRleHRBbm5vdW5jZW1lbnRTeW5jKGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCB7IFRleHRBbm5vdW5jZW1lbnRzIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG5cbiAgVGV4dEFubm91bmNlbWVudHMuY3JlYXRlT3JSZXBsYWNlKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LCB7XG4gICAgdGV4dDogJycsXG4gICAgYXV0aG9yOiAnJyxcbiAgICBpZDogJycsXG4gIH0pO1xufVxuXG4vLyBJbml0aWFsaXplIGFkbWluIGRhdGEgYmVmb3JlIFVJIHJlbmRlcmluZ1xubGV0IGFkbWluRGF0YUluaXRpYWxpemVkID0gZmFsc2U7XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZUFkbWluRGF0YShcbiAgZW5naW5lOiBJRW5naW5lLFxuICBzZGtIZWxwZXJzPzogSVNES0hlbHBlcnMsXG4gIHBsYXllcnNIZWxwZXI/OiBJUGxheWVyc0hlbHBlcixcbikge1xuICBpZiAoIWFkbWluRGF0YUluaXRpYWxpemVkKSB7XG4gICAgY29uc3QgeyBWaWRlb0NvbnRyb2xTdGF0ZSB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBBZG1pblRvb2xraXRVaUVudGl0eVxuICAgIHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5ID0gZ2V0QWRtaW5Ub29sa2l0RW50aXR5KGVuZ2luZSkgPz8gZW5naW5lLmFkZEVudGl0eSgpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBUZXh0QW5ub3VuY2VtZW50cyBzeW5jIGNvbXBvbmVudFxuICAgIGluaXRUZXh0QW5ub3VuY2VtZW50U3luYyhlbmdpbmUpO1xuXG4gICAgLy8gLy8gSW5pdGlhbGl6ZSBSZXdhcmRzIHN5bmNcbiAgICAvLyBpbml0UmV3YXJkc1N5bmMoZW5naW5lLCBzZGtIZWxwZXJzKVxuXG4gICAgaWYgKCFWaWRlb0NvbnRyb2xTdGF0ZS5nZXRPck51bGwoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpKSB7XG4gICAgICBWaWRlb0NvbnRyb2xTdGF0ZS5jcmVhdGUoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpO1xuICAgIH1cblxuICAgIHNka0hlbHBlcnM/LnN5bmNFbnRpdHk/LihcbiAgICAgIHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LFxuICAgICAgW1ZpZGVvQ29udHJvbFN0YXRlLmNvbXBvbmVudElkXSxcbiAgICAgIEFETUlOX1RPT0xTX0VOVElUWSxcbiAgICApO1xuXG4gICAgZW5naW5lLmFkZFN5c3RlbSgoKSA9PiB7XG4gICAgICBpZiAobmV4dFRpY2tGdW5jdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBuZXh0VGljayA9IG5leHRUaWNrRnVuY3Rpb25zLnNoaWZ0KCk7XG4gICAgICAgIGlmIChuZXh0VGljaykge1xuICAgICAgICAgIG5leHRUaWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBzY2VuZSBkYXRhXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZldGNoU2NlbmVBZG1pbnMoKSwgZmV0Y2hTY2VuZUJhbnMoKV0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBhZG1pbiBtZXNzYWdlIGJ1cyB3aXRoIHNlbmRlciB2YWxpZGF0aW9uXG4gICAgaW5pdEFkbWluTWVzc2FnZUJ1cyhcbiAgICAgIGVuZ2luZSxcbiAgICAgIHNjZW5lQWRtaW5zQ2FjaGUsXG4gICAgICBzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSxcbiAgICAgIHBsYXllcnNIZWxwZXIsXG4gICAgICBmZXRjaFNjZW5lQWRtaW5zLFxuICAgICk7XG5cbiAgICBhZG1pbkRhdGFJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICBjb25zb2xlLmxvZygnaW5pdGlhbGl6ZUFkbWluRGF0YSAtIGluaXRpYWxpemVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkbWluVG9vbGtpdFVJKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW06IFBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIHJlYWN0QmFzZWRVaVN5c3RlbTogUmVhY3RCYXNlZFVpU3lzdGVtLFxuICBzZGtIZWxwZXJzPzogSVNES0hlbHBlcnMsXG4gIHBsYXllcnNIZWxwZXI/OiBJUGxheWVyc0hlbHBlcixcbikge1xuICAvLyBJbml0aWFsaXplIGFkbWluIGRhdGEgYmVmb3JlIHNldHRpbmcgdXAgdGhlIFVJXG4gIGluaXRpYWxpemVBZG1pbkRhdGEoZW5naW5lLCBzZGtIZWxwZXJzLCBwbGF5ZXJzSGVscGVyKS50aGVuKCgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnY3JlYXRlQWRtaW5Ub29sa2l0VUkgLSBpbml0aWFsaXplZCcpO1xuICAgIHJlYWN0QmFzZWRVaVN5c3RlbS5zZXRVaVJlbmRlcmVyKFxuICAgICAgKCkgPT4gdWlDb21wb25lbnQoZW5naW5lLCBwb2ludGVyRXZlbnRzU3lzdGVtLCBzZGtIZWxwZXJzLCBwbGF5ZXJzSGVscGVyKSxcbiAgICAgIGdldFZpcnR1YWxVaVNpemUoKSxcbiAgICApO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkQWRtaW4oXG4gIF9lbmdpbmU6IElFbmdpbmUsXG4gIGFkbWluVG9vbGtpdEVudGl0aWU6IFJldHVyblR5cGU8dHlwZW9mIGdldEFkbWluVG9vbGtpdENvbXBvbmVudD4sXG4gIHBsYXllcjogR2V0UGxheWVyRGF0YVJlcyB8IG51bGwgfCB1bmRlZmluZWQsXG4pIHtcbiAgaWYgKCFwbGF5ZXIpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBwbGF5ZXJBZGRyZXNzID0gcGxheWVyLnVzZXJJZC50b0xvd2VyQ2FzZSgpO1xuICBjb25zdCBpc0FkbWluID0gc2NlbmVBZG1pbnNDYWNoZS5maW5kKCQgPT4gJC5hZGRyZXNzID09PSBwbGF5ZXJBZGRyZXNzKTtcblxuICByZXR1cm4gaXNBZG1pbiB8fCBpc1ByZXZpZXcoKTtcbn1cblxuY29uc3QgdWlDb21wb25lbnQgPSAoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgX3BvaW50ZXJFdmVudHNTeXN0ZW06IFBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIF9zZGtIZWxwZXJzPzogSVNES0hlbHBlcnMsXG4gIHBsYXllcnNIZWxwZXI/OiBJUGxheWVyc0hlbHBlcixcbikgPT4ge1xuICBjb25zdCBhZG1pblRvb2xraXRFbnRpdHkgPSBnZXRBZG1pblRvb2xraXRDb21wb25lbnQoZW5naW5lKTtcbiAgY29uc3QgcGxheWVyID0gcGxheWVyc0hlbHBlcj8uZ2V0UGxheWVyKCk7XG4gIGNvbnN0IGlzUGxheWVyQWRtaW4gPSBpc0FsbG93ZWRBZG1pbihlbmdpbmUsIGFkbWluVG9vbGtpdEVudGl0eSwgcGxheWVyKTtcbiAgY29uc3QgaXNNb2JpbGUgPSBkZXRlY3RJc01vYmlsZSgpO1xuXG4gIC8vIE1vYmlsZSBzYWZlIGFyZWEgKGZyb20gRGVjZW50cmFsYW5kIEJ1aWxkaW5nLWZvci1Nb2JpbGUgZ3VpZGUpOlxuICAvLyAgIFJFRCAodW5zYWZlKSB6b25lczpcbiAgLy8gICAtIExlZnQgMjUlICAoZnVsbCBoZWlnaHQpICDihpIgQ2hhdCwgU2VhcmNoLCBQcm9maWxlLCBKb3lzdGljaywgRW1vdGVzXG4gIC8vICAgLSBUb3AtcmlnaHQgIDI1JSDDlyAyMyUgICAg4oaSIFByb2ZpbGUgYWNjZXNzLCBjYW1lcmEgY29udHJvbGxlcnNcbiAgLy8gICAtIEJvdHRvbS1yaWdodCAyNSUgw5cgNTUlICDihpIgSW50ZXJhY3Rpb24gYnV0dG9uc1xuICAvLyAgIEdSRUVOIChzYWZlKSB6b25lID0gQ0VOVEVSIG9mIHNjcmVlblxuXG4gIC8vIERlc2t0b3A6IHJvdyBsYXlvdXQsIGFuY2hvcmVkIHRvcC1yaWdodCAodW5jaGFuZ2VkIGZyb20gb3JpZ2luYWwpLlxuICAvLyBNb2JpbGU6IHJvdyBsYXlvdXQsIGFuY2hvcmVkIHRvcC1sZWZ0IGluc2lkZSB0aGUgc2FmZSB6b25lLlxuICBjb25zdCBvdXRlclBvc2l0aW9uID0gaXNNb2JpbGUgPyB7IHRvcDogMTYsIGxlZnQ6IDMwMCB9IDogeyB0b3A6IDEyMCwgcmlnaHQ6IDE0IH07XG4gIGNvbnN0IGlubmVyUG9zaXRpb24gPSBpc01vYmlsZSA/IHsgbGVmdDogOCwgdG9wOiAyIH0gOiB7IHJpZ2h0OiA4IH07XG4gIGNvbnN0IHRvZ2dsZUJ0blNpemUgPSBpc01vYmlsZSA/IDU0IDogNDI7XG5cbiAgcmV0dXJuIFtcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIHBvc2l0aW9uVHlwZTogJ2Fic29sdXRlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtpc1BsYXllckFkbWluID8gKFxuICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgcG9zaXRpb25UeXBlOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgZmxleERpcmVjdGlvbjogaXNNb2JpbGUgPyAncm93LXJldmVyc2UnIDogJ3JvdycsXG4gICAgICAgICAgICBwb3NpdGlvbjogb3V0ZXJQb3NpdGlvbixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiBzdGF0ZS5wYW5lbE9wZW4gPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgIHdpZHRoOiA1MDAsXG4gICAgICAgICAgICAgIHBvaW50ZXJGaWx0ZXI6ICdibG9jaycsXG4gICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICBtYXJnaW46IGlubmVyUG9zaXRpb24sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1MCxcbiAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDEyLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IDEyLFxuICAgICAgICAgICAgICAgICAgcmlnaHQ6IDEyLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17eyBjb2xvcjogY29udGFpbmVyQmFja2dyb3VuZENvbG9yIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgICAgIHZhbHVlPVwiQURNSU4gVE9PTFNcIlxuICAgICAgICAgICAgICAgIGZvbnRTaXplPXsyMH1cbiAgICAgICAgICAgICAgICBjb2xvcj17Q29sb3I0LmNyZWF0ZSgxNjAsIDE1NSwgMTY4LCAxKX1cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBmbGV4R3JvdzogMSB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgaWQ9XCJhZG1pbl90b29sa2l0X21vZGVyYXRpb25fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLk1PREVSQVRJT05fQ09OVFJPTCA/ICdwcmltYXJ5JyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICBpY29uPXtnZXRCdG5Nb2RlcmF0aW9uQ29udHJvbCgpfVxuICAgICAgICAgICAgICAgIG9ubHlJY29uXG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6XG4gICAgICAgICAgICAgICAgICAgIGFkbWluVG9vbGtpdEVudGl0eS5tb2RlcmF0aW9uQ29udHJvbC5pc0VuYWJsZWQgJiYgIWlzUHJldmlldygpXG4gICAgICAgICAgICAgICAgICAgICAgPyAnZmxleCdcbiAgICAgICAgICAgICAgICAgICAgICA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0OSxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MXG4gICAgICAgICAgICAgICAgICAgICAgPyBDb2xvcjQuQmxhY2soKVxuICAgICAgICAgICAgICAgICAgICAgIDogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7IGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5hY3RpdmVUYWIgIT09IFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuTk9ORTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dFRpY2tGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5NT0RFUkFUSU9OX0NPTlRST0w7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImFkbWluX3Rvb2xraXRfcGFuZWxfdmlkZW9fY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlZJREVPX0NPTlRST0wgPyAncHJpbWFyeScgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgaWNvbj17QURNSU5fSUNPTlMuQlROX1ZJREVPX0NPTlRST0x9XG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVklERU9fQ09OVFJPTCA/IENvbG9yNC5CbGFjaygpIDogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbmx5SWNvblxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBhZG1pblRvb2xraXRFbnRpdHkudmlkZW9Db250cm9sLmlzRW5hYmxlZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0OSxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5hY3RpdmVUYWIgIT09IFRhYlR5cGUuVklERU9fQ09OVFJPTCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuVklERU9fQ09OVFJPTDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiYWRtaW5fdG9vbGtpdF9wYW5lbF9zbWFydF9pdGVtc19jb250cm9sXCJcbiAgICAgICAgICAgICAgICB2YXJpYW50PXtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuU01BUlRfSVRFTVNfQ09OVFJPTCA/ICdwcmltYXJ5JyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICBpY29uPXtBRE1JTl9JQ09OUy5CVE5fU01BUlRfSVRFTV9DT05UUk9MfVxuICAgICAgICAgICAgICAgIGljb25CYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0xcbiAgICAgICAgICAgICAgICAgICAgICA/IENvbG9yNC5CbGFjaygpXG4gICAgICAgICAgICAgICAgICAgICAgOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9ubHlJY29uXG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGFkbWluVG9vbGtpdEVudGl0eS5zbWFydEl0ZW1zQ29udHJvbC5pc0VuYWJsZWQgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogNDksXG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6IDQyLFxuICAgICAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiA4IH0sXG4gICAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGljb25UcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdGUuYWN0aXZlVGFiICE9PSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0wpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgICBuZXh0VGlja0Z1bmN0aW9ucy5wdXNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0w7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuYWN0aXZlVGFiID0gVGFiVHlwZS5OT05FO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImFkbWluX3Rvb2xraXRfcGFuZWxfdGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wgPyAncHJpbWFyeScgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgaWNvbj17QURNSU5fSUNPTlMuQlROX1RFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0x9XG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTFxuICAgICAgICAgICAgICAgICAgICAgID8gQ29sb3I0LkJsYWNrKClcbiAgICAgICAgICAgICAgICAgICAgICA6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25seUljb25cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTogYWRtaW5Ub29sa2l0RW50aXR5LnRleHRBbm5vdW5jZW1lbnRDb250cm9sLmlzRW5hYmxlZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0OSxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5hY3RpdmVUYWIgIT09IFRhYlR5cGUuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9IFRhYlR5cGUuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPSBUYWJUeXBlLk5PTkU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIC8vIE1vYmlsZTogY2FwIHRoZSB0YWIgY29udGVudCB0byB0aGUgdmlld3BvcnQgYW5kIHNjcm9sbCB0aGVcbiAgICAgICAgICAgICAgICAvLyBvdmVyZmxvdywgc28gdGFsbCB0YWJzIChlLmcuIHBlcm1pc3Npb25zKSBzdGF5IGZ1bGx5IHJlYWNoYWJsZS5cbiAgICAgICAgICAgICAgICAvLyBUaGUgaGVhZGVyIGFib3ZlIHN0YXlzIGZpeGVkOyBkZXNrdG9wIGlzIGxlZnQgdW50b3VjaGVkLlxuICAgICAgICAgICAgICAgIG1heEhlaWdodDogaXNNb2JpbGUgPyAnODV2aCcgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGlzTW9iaWxlID8gJ3Njcm9sbCcgOiAndmlzaWJsZScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTCA/IChcbiAgICAgICAgICAgICAgICA8VGV4dEFubm91bmNlbWVudHNDb250cm9sXG4gICAgICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgICAgIHN0YXRlPXtzdGF0ZX1cbiAgICAgICAgICAgICAgICAgIHBsYXllcj17cGxheWVyfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlZJREVPX0NPTlRST0wgPyAoXG4gICAgICAgICAgICAgICAgPFZpZGVvQ29udHJvbFxuICAgICAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgICAgICBzdGF0ZT17c3RhdGV9XG4gICAgICAgICAgICAgICAgICBwbGF5ZXJBZGRyZXNzPXtwbGF5ZXI/LnVzZXJJZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3N0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5TTUFSVF9JVEVNU19DT05UUk9MID8gKFxuICAgICAgICAgICAgICAgIDxTbWFydEl0ZW1zQ29udHJvbFxuICAgICAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgICAgICBzdGF0ZT17c3RhdGV9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MICYmIChcbiAgICAgICAgICAgICAgICA8TW9kZXJhdGlvbkNvbnRyb2xcbiAgICAgICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICAgICAgcGxheWVyPXtwbGF5ZXJ9XG4gICAgICAgICAgICAgICAgICBzY2VuZUFkbWlucz17c2NlbmVBZG1pbnNDYWNoZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBoZWlnaHQ6IHRvZ2dsZUJ0blNpemUsXG4gICAgICAgICAgICAgIHdpZHRoOiB0b2dnbGVCdG5TaXplLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgYWxpZ25Db250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBwb2ludGVyRmlsdGVyOiAnYmxvY2snLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgc3JjOiBBRE1JTl9JQ09OUy5CVE5fQURNSU5fVE9PTEtJVF9CQUNLR1JPVU5ELFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0ZXh0dXJlTW9kZTogJ3N0cmV0Y2gnLFxuICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LmNyZWF0ZSgxLCAxLCAxLCAxKSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPERDTEJ1dHRvblxuICAgICAgICAgICAgICB2YWx1ZT1cIlwiXG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0b2dnbGVCdG5TaXplIC0gMixcbiAgICAgICAgICAgICAgICB3aWR0aDogdG9nZ2xlQnRuU2l6ZSAtIDIsXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgYWxpZ25Db250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgIHRleHR1cmU6IHtcbiAgICAgICAgICAgICAgICAgIHNyYzogQURNSU5fSUNPTlMuQlROX0FETUlOX1RPT0xLSVRfQ09OVFJPTCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5jcmVhdGUoMSwgMSwgMSwgMSksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3RhdGUucGFuZWxPcGVuID0gIXN0YXRlLnBhbmVsT3BlbjtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFRleHRBbm5vdW5jZW1lbnRzXG4gICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICBzdGF0ZT17c3RhdGV9XG4gICAgICAvPlxuICAgIDwvVWlFbnRpdHk+LFxuICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuc2hvd01vZGFsQWRtaW5MaXN0ICYmIChcbiAgICAgIDxNb2RhbFVzZXJMaXN0XG4gICAgICAgIHVzZXJzPXtzY2VuZUFkbWluc0NhY2hlID8/IFtdfVxuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgdHlwZT17VXNlckxpc3RUeXBlLkFETUlOfVxuICAgICAgLz5cbiAgICApLFxuICAgIG1vZGVyYXRpb25Db250cm9sU3RhdGUuc2hvd01vZGFsQmFuTGlzdCAmJiAoXG4gICAgICA8TW9kYWxVc2VyTGlzdFxuICAgICAgICB1c2Vycz17c2NlbmVCYW5zQ2FjaGUgPz8gW119XG4gICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICB0eXBlPXtVc2VyTGlzdFR5cGUuQkFOfVxuICAgICAgLz5cbiAgICApLFxuICAgIHNob3djYXNlU3RhdGUuc2hvdyAmJlxuICAgICAgc2hvd2Nhc2VTdGF0ZS5vblNlbGVjdFRyYWNrICYmXG4gICAgICBzaG93Y2FzZVN0YXRlLm9uU2V0RGVmYXVsdCAmJlxuICAgICAgc2hvd2Nhc2VTdGF0ZS5vbkNsb3NlICYmIChcbiAgICAgICAgPFNwZWFrZXJTaG93Y2FzZVxuICAgICAgICAgIHBhcnRpY2lwYW50cz17c2hvd2Nhc2VTdGF0ZS5wYXJ0aWNpcGFudHN9XG4gICAgICAgICAgYWN0aXZlVHJhY2tTaWQ9e3Nob3djYXNlU3RhdGUuYWN0aXZlVHJhY2tTaWR9XG4gICAgICAgICAgb25TZWxlY3RUcmFjaz17c2hvd2Nhc2VTdGF0ZS5vblNlbGVjdFRyYWNrfVxuICAgICAgICAgIG9uU2V0RGVmYXVsdD17c2hvd2Nhc2VTdGF0ZS5vblNldERlZmF1bHR9XG4gICAgICAgICAgb25DbG9zZT17c2hvd2Nhc2VTdGF0ZS5vbkNsb3NlfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICBzaGFyZVByZXNlbnRhdGlvblN0YXRlLnNob3cgJiYgc2hhcmVQcmVzZW50YXRpb25TdGF0ZS5vbkNsb3NlICYmIChcbiAgICAgIDxTaGFyZVByZXNlbnRhdGlvbk1vZGFsXG4gICAgICAgIG9uQ2xvc2U9e3NoYXJlUHJlc2VudGF0aW9uU3RhdGUub25DbG9zZX1cbiAgICAgICAgc3RyZWFtaW5nS2V5PXtzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdD8uc3RyZWFtaW5nS2V5ID8/ICcnfVxuICAgICAgLz5cbiAgICApLFxuICBdO1xufTtcbiJdfQ==
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsUUFBUSxJQUFJLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRS9ELE9BQU8sUUFBUSxFQUFFLEVBQ2YsS0FBSyxFQUNMLE1BQU0sSUFBSSxTQUFTLEVBQ25CLFFBQVEsR0FFVCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxhQUFhLEdBSWQsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFxQixNQUFNLHlCQUF5QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFD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LHNCQUFzQixJQUNyQixPQUFPLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQ3JELFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxZQUFZLElBQUksRUFBRSxHQUM1RCxDQUNIO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgaXNNb2JpbGUgYXMgZGV0ZWN0SXNNb2JpbGUgfSBmcm9tICdAZGNsL3Nkay9wbGF0Zm9ybSc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzIC0tIFJlYWN0RWNzIGlzIHJlcXVpcmVkIGZvciBKU1ggZmFjdG9yeVxuaW1wb3J0IFJlYWN0RWNzLCB7XG4gIExhYmVsLFxuICBCdXR0b24gYXMgRENMQnV0dG9uLFxuICBVaUVudGl0eSxcbiAgdHlwZSBSZWFjdEJhc2VkVWlTeXN0ZW0sXG59IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IHR5cGUgRW50aXR5LCB0eXBlIElFbmdpbmUsIHR5cGUgUG9pbnRlckV2ZW50c1N5c3RlbSB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB7XG4gIGdldENvbXBvbmVudHMsXG4gIHR5cGUgR2V0UGxheWVyRGF0YVJlcyxcbiAgdHlwZSBJUGxheWVyc0hlbHBlcixcbiAgdHlwZSBJU0RLSGVscGVycyxcbn0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgVmlkZW9Db250cm9sIH0gZnJvbSAnLi9WaWRlb0NvbnRyb2wnO1xuaW1wb3J0IHsgVGV4dEFubm91bmNlbWVudHNDb250cm9sIH0gZnJvbSAnLi9UZXh0QW5ub3VuY2VtZW50c0NvbnRyb2wnO1xuaW1wb3J0IHsgU21hcnRJdGVtc0NvbnRyb2wgfSBmcm9tICcuL1NtYXJ0SXRlbXNDb250cm9sJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4vQnV0dG9uJztcbmltcG9ydCB7IFRleHRBbm5vdW5jZW1lbnRzIH0gZnJvbSAnLi9UZXh0QW5ub3VuY2VtZW50cyc7XG5pbXBvcnQgeyBnZXRDb250ZW50VXJsIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGFiVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QnRuTW9kZXJhdGlvbkNvbnRyb2wsIE1vZGVyYXRpb25Db250cm9sLCB0eXBlIFNjZW5lQWRtaW4gfSBmcm9tICcuL01vZGVyYXRpb25Db250cm9sJztcbmltcG9ydCB7IGdldFNjZW5lQWRtaW5zLCBnZXRTY2VuZUJhbnMsIHR5cGUgU2NlbmVCYW5Vc2VyIH0gZnJvbSAnLi9Nb2RlcmF0aW9uQ29udHJvbC9hcGknO1xuaW1wb3J0IHsgTW9kYWxVc2VyTGlzdCwgVXNlckxpc3RUeXBlIH0gZnJvbSAnLi9Nb2RlcmF0aW9uQ29udHJvbC9Vc2Vyc0xpc3QnO1xuaW1wb3J0IHsgc3RhcnRQcmVzZW50YXRpb25EZXRlY3Rpb24gfSBmcm9tICcuL1ZpZGVvQ29udHJvbC9EY2xDYXN0L3ByZXNlbnRhdGlvbi1kZXRlY3Rvcic7XG5pbXBvcnQgeyBmaW5kQWN0aXZlQ2FzdFNjcmVlbkluZGV4IH0gZnJvbSAnLi9WaWRlb0NvbnRyb2wvdXRpbHMnO1xuaW1wb3J0IHsgU3BlYWtlclNob3djYXNlIH0gZnJvbSAnLi9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9TcGVha2VyU2hvd2Nhc2UnO1xuaW1wb3J0IFNoYXJlUHJlc2VudGF0aW9uTW9kYWwgZnJvbSAnLi9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9TaGFyZVByZXNlbnRhdGlvbk1vZGFsJztcbmltcG9ydCB7IGlzUHJldmlldyB9IGZyb20gJy4vZmV0Y2gtdXRpbHMnO1xuaW1wb3J0IHsgaW5pdEFkbWluTWVzc2FnZUJ1cywgZ2V0QWRtaW5NZXNzYWdlQnVzIH0gZnJvbSAnLi9hZG1pbi1tZXNzYWdlLWJ1cyc7XG5pbXBvcnQgeyBzdGF0ZSB9IGZyb20gJy4vc3RvcmUnO1xuaW1wb3J0IHtcbiAgc2V0QWN0aXZlVGFiLFxuICB0b2dnbGVQYW5lbCxcbiAgc2hvd1ByZXNlbnRhdGlvbixcbiAgZGlzbWlzc1ByZXNlbnRhdGlvbixcbiAgc2V0QWRtaW5Ub29sa2l0VWlFbnRpdHksXG59IGZyb20gJy4vYWN0aW9ucyc7XG5cbi8vIE1vYmlsZSBzY2FsaW5nOiBzaHJpbmsgdGhlIHZpcnR1YWwgY2FudmFzIG9uXG4vLyBtb2JpbGUgc28gdGhlIFNESydzIGdsb2JhbCBVSSBzY2FsZSBmYWN0b3Ig4oCUIG1pbihzY3JlZW4vdmlydHVhbCksIHNlZVxuLy8gQGRjbC9yZWFjdC1lY3MgZ2V0VWlTY2FsZUZhY3RvciDigJQgbXVsdGlwbGllcyBFVkVSWVRISU5HIChnZW9tZXRyeSBhbmRcbi8vIGZvbnRTaXplKSB1bmlmb3JtbHkgYnkgTU9CSUxFX1VJX1NDQUxFLiBXZSBhdXRob3IgYSBzaW5nbGUgYmFzZSBsYXlvdXQgYW5kXG4vLyBtb2JpbGUgZ2V0cyB0aGUgem9vbSBmb3IgZnJlZSwgaW5jbHVkaW5nIGV2ZXJ5IGNoaWxkIGNvbXBvbmVudCdzIHRleHQuXG5jb25zdCBNT0JJTEVfVUlfU0NBTEUgPSAyO1xuY29uc3QgQkFTRV9WSVJUVUFMX1VJX1NJWkUgPSB7IHZpcnR1YWxXaWR0aDogMTkyMCwgdmlydHVhbEhlaWdodDogMTA4MCB9O1xuXG5mdW5jdGlvbiBnZXRWaXJ0dWFsVWlTaXplKCkge1xuICByZXR1cm4gZGV0ZWN0SXNNb2JpbGUoKVxuICAgID8ge1xuICAgICAgICB2aXJ0dWFsV2lkdGg6IEJBU0VfVklSVFVBTF9VSV9TSVpFLnZpcnR1YWxXaWR0aCAvIE1PQklMRV9VSV9TQ0FMRSxcbiAgICAgICAgdmlydHVhbEhlaWdodDogQkFTRV9WSVJUVUFMX1VJX1NJWkUudmlydHVhbEhlaWdodCAvIE1PQklMRV9VSV9TQ0FMRSxcbiAgICAgIH1cbiAgICA6IEJBU0VfVklSVFVBTF9VSV9TSVpFO1xufVxuXG5sZXQgc2NlbmVBZG1pbnNDYWNoZTogU2NlbmVBZG1pbltdID0gW107XG5sZXQgc2NlbmVCYW5zQ2FjaGU6IFNjZW5lQmFuVXNlcltdID0gW107XG5cbmNvbnN0IEFETUlOX0lDT05TID0ge1xuICBnZXQgQlROX1ZJREVPX0NPTlRST0woKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtdmlkZW8tY29udHJvbC1idXR0b24ucG5nYDtcbiAgfSxcbiAgZ2V0IEJUTl9TTUFSVF9JVEVNX0NPTlRST0woKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtc21hcnQtaXRlbS1jb250cm9sLWJ1dHRvbi5wbmdgO1xuICB9LFxuICBnZXQgQlROX1RFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0woKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtdGV4dC1hbm5vdW5jZW1lbnQtY29udHJvbC1idXR0b24ucG5nYDtcbiAgfSxcbiAgZ2V0IEJUTl9BRE1JTl9UT09MS0lUX0NPTlRST0woKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvYWRtaW4tcGFuZWwtY29udHJvbC1idXR0b24ucG5nYDtcbiAgfSxcbiAgZ2V0IEJUTl9BRE1JTl9UT09MS0lUX0JBQ0tHUk9VTkQoKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvYmFja2dyb3VuZHMvYWRtaW4tdG9vbC1iYWNrZ3JvdW5kLnBuZ2A7XG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgY29udGFpbmVyQmFja2dyb3VuZENvbG9yID0gQ29sb3I0LmNyZWF0ZSgwLCAwLCAwLCAwLjc1KTtcblxuLy8gVGhlIGVkaXRvciBzdGFydHMgdXNpbmcgZW50aXRpZXMgZnJvbSBbODAwMV0uXG5jb25zdCBBRE1JTl9UT09MU19FTlRJVFkgPSA4MDAwIGFzIEVudGl0eTtcblxuZnVuY3Rpb24gZ2V0QWRtaW5Ub29sa2l0RW50aXR5KGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCB7IEFkbWluVG9vbHMgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcbiAgcmV0dXJuIEFycmF5LmZyb20oZW5naW5lLmdldEVudGl0aWVzV2l0aChBZG1pblRvb2xzKSlbMF1bMF07XG59XG5cbmZ1bmN0aW9uIGdldEFkbWluVG9vbGtpdENvbXBvbmVudChlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgeyBBZG1pblRvb2xzIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG4gIHJldHVybiBBcnJheS5mcm9tKGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoQWRtaW5Ub29scykpWzBdWzFdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hTY2VuZUFkbWlucygpIHtcbiAgY29uc3QgW2Vycm9yLCByZXNwb25zZV0gPSBhd2FpdCBnZXRTY2VuZUFkbWlucygpO1xuXG4gIGlmIChlcnJvcikge1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHsgZXJyb3IgfSkpO1xuICAgIHNjZW5lQWRtaW5zQ2FjaGUgPSBbXTtcbiAgICByZXR1cm47XG4gIH1cbiAgc2NlbmVBZG1pbnNDYWNoZSA9IChyZXNwb25zZSA/PyBbXSlcbiAgICAubWFwKCQgPT4gKHtcbiAgICAgIG5hbWU6ICQubmFtZSxcbiAgICAgIGFkZHJlc3M6ICQuYWRtaW4sXG4gICAgICByb2xlOiAnYWRtaW4nIGFzIGNvbnN0LFxuICAgICAgdmVyaWZpZWQ6ICEkLm5hbWUuaW5jbHVkZXMoJyMnKSxcbiAgICAgIGNhbkJlUmVtb3ZlZDogISEkLmNhbkJlUmVtb3ZlZCxcbiAgICB9KSlcbiAgICAuc29ydChhID0+IChhLmNhbkJlUmVtb3ZlZCA/IDEgOiAtMSkpO1xuICBpZiAoYWRtaW5EYXRhSW5pdGlhbGl6ZWQpIHtcbiAgICBnZXRBZG1pbk1lc3NhZ2VCdXMoKS51cGRhdGVBZG1pbkxpc3Qoc2NlbmVBZG1pbnNDYWNoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoQW5kU3luY1NjZW5lQWRtaW5zKCkge1xuICBhd2FpdCBmZXRjaFNjZW5lQWRtaW5zKCk7XG4gIGlmIChhZG1pbkRhdGFJbml0aWFsaXplZCkge1xuICAgIGdldEFkbWluTWVzc2FnZUJ1cygpLmVtaXRTeW5jQWRtaW5zKCk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoU2NlbmVCYW5zKCkge1xuICBjb25zdCBbZXJyb3IsIHJlc3BvbnNlXSA9IGF3YWl0IGdldFNjZW5lQmFucygpO1xuXG4gIGlmIChlcnJvcikge1xuICAgIHNjZW5lQmFuc0NhY2hlID0gW107XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc2NlbmVCYW5zQ2FjaGUgPSByZXNwb25zZT8ucmVzdWx0cyA/PyBbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyU2NlbmVCYW5zQ2FjaGUoKSB7XG4gIHNjZW5lQmFuc0NhY2hlID0gW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTbWFydEl0ZW1zKGVuZ2luZTogSUVuZ2luZSkge1xuICBjb25zdCBhZG1pblRvb2xraXRDb21wb25lbnQgPSBnZXRBZG1pblRvb2xraXRDb21wb25lbnQoZW5naW5lKTtcblxuICByZXR1cm4gQXJyYXkuZnJvbShhZG1pblRvb2xraXRDb21wb25lbnQuc21hcnRJdGVtc0NvbnRyb2wuc21hcnRJdGVtcyA/PyBbXSk7XG59XG5cbmZ1bmN0aW9uIGluaXRUZXh0QW5ub3VuY2VtZW50U3luYyhlbmdpbmU6IElFbmdpbmUpIHtcbiAgY29uc3QgeyBUZXh0QW5ub3VuY2VtZW50cyB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIFRleHRBbm5vdW5jZW1lbnRzLmNyZWF0ZU9yUmVwbGFjZShzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSwge1xuICAgIHRleHQ6ICcnLFxuICAgIGF1dGhvcjogJycsXG4gICAgaWQ6ICcnLFxuICB9KTtcbn1cblxuLy8gSW5pdGlhbGl6ZSBhZG1pbiBkYXRhIGJlZm9yZSBVSSByZW5kZXJpbmdcbmxldCBhZG1pbkRhdGFJbml0aWFsaXplZCA9IGZhbHNlO1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRpYWxpemVBZG1pbkRhdGEoXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgc2RrSGVscGVycz86IElTREtIZWxwZXJzLFxuICBwbGF5ZXJzSGVscGVyPzogSVBsYXllcnNIZWxwZXIsXG4pIHtcbiAgaWYgKCFhZG1pbkRhdGFJbml0aWFsaXplZCkge1xuICAgIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcblxuICAgIC8vIEluaXRpYWxpemUgQWRtaW5Ub29sa2l0VWlFbnRpdHlcbiAgICBzZXRBZG1pblRvb2xraXRVaUVudGl0eShnZXRBZG1pblRvb2xraXRFbnRpdHkoZW5naW5lKSA/PyBlbmdpbmUuYWRkRW50aXR5KCkpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBUZXh0QW5ub3VuY2VtZW50cyBzeW5jIGNvbXBvbmVudFxuICAgIGluaXRUZXh0QW5ub3VuY2VtZW50U3luYyhlbmdpbmUpO1xuXG4gICAgLy8gLy8gSW5pdGlhbGl6ZSBSZXdhcmRzIHN5bmNcbiAgICAvLyBpbml0UmV3YXJkc1N5bmMoZW5naW5lLCBzZGtIZWxwZXJzKVxuXG4gICAgaWYgKCFWaWRlb0NvbnRyb2xTdGF0ZS5nZXRPck51bGwoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpKSB7XG4gICAgICBWaWRlb0NvbnRyb2xTdGF0ZS5jcmVhdGUoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpO1xuICAgIH1cblxuICAgIHNka0hlbHBlcnM/LnN5bmNFbnRpdHk/LihcbiAgICAgIHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5LFxuICAgICAgW1ZpZGVvQ29udHJvbFN0YXRlLmNvbXBvbmVudElkXSxcbiAgICAgIEFETUlOX1RPT0xTX0VOVElUWSxcbiAgICApO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBzY2VuZSBkYXRhXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW2ZldGNoU2NlbmVBZG1pbnMoKSwgZmV0Y2hTY2VuZUJhbnMoKV0pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBhZG1pbiBtZXNzYWdlIGJ1cyB3aXRoIHNlbmRlciB2YWxpZGF0aW9uXG4gICAgaW5pdEFkbWluTWVzc2FnZUJ1cyhcbiAgICAgIGVuZ2luZSxcbiAgICAgIHNjZW5lQWRtaW5zQ2FjaGUsXG4gICAgICBzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSxcbiAgICAgIHBsYXllcnNIZWxwZXIsXG4gICAgICBmZXRjaFNjZW5lQWRtaW5zLFxuICAgICk7XG5cbiAgICBhZG1pbkRhdGFJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICBjb25zb2xlLmxvZygnaW5pdGlhbGl6ZUFkbWluRGF0YSAtIGluaXRpYWxpemVkJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkbWluVG9vbGtpdFVJKFxuICBlbmdpbmU6IElFbmdpbmUsXG4gIHBvaW50ZXJFdmVudHNTeXN0ZW06IFBvaW50ZXJFdmVudHNTeXN0ZW0sXG4gIHJlYWN0QmFzZWRVaVN5c3RlbTogUmVhY3RCYXNlZFVpU3lzdGVtLFxuICBzZGtIZWxwZXJzPzogSVNES0hlbHBlcnMsXG4gIHBsYXllcnNIZWxwZXI/OiBJUGxheWVyc0hlbHBlcixcbikge1xuICAvLyBJbml0aWFsaXplIGFkbWluIGRhdGEgYmVmb3JlIHNldHRpbmcgdXAgdGhlIFVJXG4gIGluaXRpYWxpemVBZG1pbkRhdGEoZW5naW5lLCBzZGtIZWxwZXJzLCBwbGF5ZXJzSGVscGVyKS50aGVuKCgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnY3JlYXRlQWRtaW5Ub29sa2l0VUkgLSBpbml0aWFsaXplZCcpO1xuICAgIHJlYWN0QmFzZWRVaVN5c3RlbS5zZXRVaVJlbmRlcmVyKFxuICAgICAgKCkgPT4gdWlDb21wb25lbnQoZW5naW5lLCBwb2ludGVyRXZlbnRzU3lzdGVtLCBzZGtIZWxwZXJzLCBwbGF5ZXJzSGVscGVyKSxcbiAgICAgIGdldFZpcnR1YWxVaVNpemUoKSxcbiAgICApO1xuXG4gICAgLy8gQmFja2dyb3VuZCBzZXJ2aWNlOiBhdXRvLW9wZW4gdGhlIHBhbmVsIHRvIHRoZSBEQ0wgQ2FzdCB0YWIgd2hlbiBhXG4gICAgLy8gcHJlc2VudGF0aW9uIGdvZXMgbGl2ZSwgcmVnYXJkbGVzcyBvZiB3aGljaCB0YWIgKGlmIGFueSkgdGhlIGFkbWluIGlzIG9uLlxuICAgIHN0YXJ0UHJlc2VudGF0aW9uRGV0ZWN0aW9uKFxuICAgICAgZW5naW5lLFxuICAgICAgKCkgPT4gISFpc0FsbG93ZWRBZG1pbihlbmdpbmUsIGdldEFkbWluVG9vbGtpdENvbXBvbmVudChlbmdpbmUpLCBwbGF5ZXJzSGVscGVyPy5nZXRQbGF5ZXIoKSksXG4gICAgICAoKSA9PiBwbGF5ZXJzSGVscGVyPy5nZXRQbGF5ZXIoKT8udXNlcklkLFxuICAgICAgKCkgPT4gc2hvd1ByZXNlbnRhdGlvbihmaW5kQWN0aXZlQ2FzdFNjcmVlbkluZGV4KGVuZ2luZSkpLFxuICAgICAgKCkgPT4gZGlzbWlzc1ByZXNlbnRhdGlvbigpLFxuICAgICk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc0FsbG93ZWRBZG1pbihcbiAgX2VuZ2luZTogSUVuZ2luZSxcbiAgYWRtaW5Ub29sa2l0RW50aXRpZTogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0QWRtaW5Ub29sa2l0Q29tcG9uZW50PixcbiAgcGxheWVyOiBHZXRQbGF5ZXJEYXRhUmVzIHwgbnVsbCB8IHVuZGVmaW5lZCxcbikge1xuICBpZiAoIXBsYXllcikgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IHBsYXllckFkZHJlc3MgPSBwbGF5ZXIudXNlcklkLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGlzQWRtaW4gPSBzY2VuZUFkbWluc0NhY2hlLmZpbmQoJCA9PiAkLmFkZHJlc3MgPT09IHBsYXllckFkZHJlc3MpO1xuXG4gIHJldHVybiBpc0FkbWluIHx8IGlzUHJldmlldygpO1xufVxuXG5jb25zdCB1aUNvbXBvbmVudCA9IChcbiAgZW5naW5lOiBJRW5naW5lLFxuICBfcG9pbnRlckV2ZW50c1N5c3RlbTogUG9pbnRlckV2ZW50c1N5c3RlbSxcbiAgX3Nka0hlbHBlcnM/OiBJU0RLSGVscGVycyxcbiAgcGxheWVyc0hlbHBlcj86IElQbGF5ZXJzSGVscGVyLFxuKSA9PiB7XG4gIGNvbnN0IGFkbWluVG9vbGtpdEVudGl0eSA9IGdldEFkbWluVG9vbGtpdENvbXBvbmVudChlbmdpbmUpO1xuICBjb25zdCBwbGF5ZXIgPSBwbGF5ZXJzSGVscGVyPy5nZXRQbGF5ZXIoKTtcbiAgY29uc3QgaXNQbGF5ZXJBZG1pbiA9IGlzQWxsb3dlZEFkbWluKGVuZ2luZSwgYWRtaW5Ub29sa2l0RW50aXR5LCBwbGF5ZXIpO1xuICBjb25zdCBpc01vYmlsZSA9IGRldGVjdElzTW9iaWxlKCk7XG5cbiAgLy8gTW9iaWxlIHNhZmUgYXJlYSAoZnJvbSBEZWNlbnRyYWxhbmQgQnVpbGRpbmctZm9yLU1vYmlsZSBndWlkZSk6XG4gIC8vICAgUkVEICh1bnNhZmUpIHpvbmVzOlxuICAvLyAgIC0gTGVmdCAyNSUgIChmdWxsIGhlaWdodCkgIOKGkiBDaGF0LCBTZWFyY2gsIFByb2ZpbGUsIEpveXN0aWNrLCBFbW90ZXNcbiAgLy8gICAtIFRvcC1yaWdodCAgMjUlIMOXIDIzJSAgICDihpIgUHJvZmlsZSBhY2Nlc3MsIGNhbWVyYSBjb250cm9sbGVyc1xuICAvLyAgIC0gQm90dG9tLXJpZ2h0IDI1JSDDlyA1NSUgIOKGkiBJbnRlcmFjdGlvbiBidXR0b25zXG4gIC8vICAgR1JFRU4gKHNhZmUpIHpvbmUgPSBDRU5URVIgb2Ygc2NyZWVuXG5cbiAgLy8gRGVza3RvcDogcm93IGxheW91dCwgYW5jaG9yZWQgdG9wLXJpZ2h0ICh1bmNoYW5nZWQgZnJvbSBvcmlnaW5hbCkuXG4gIC8vIE1vYmlsZTogcm93IGxheW91dCwgYW5jaG9yZWQgdG9wLWxlZnQgaW5zaWRlIHRoZSBzYWZlIHpvbmUuXG4gIGNvbnN0IG91dGVyUG9zaXRpb24gPSBpc01vYmlsZSA/IHsgdG9wOiAxNiwgbGVmdDogMzAwIH0gOiB7IHRvcDogMTIwLCByaWdodDogMTQgfTtcbiAgY29uc3QgaW5uZXJQb3NpdGlvbiA9IGlzTW9iaWxlID8geyBsZWZ0OiA4LCB0b3A6IDIgfSA6IHsgcmlnaHQ6IDggfTtcbiAgY29uc3QgdG9nZ2xlQnRuU2l6ZSA9IGlzTW9iaWxlID8gNTQgOiA0MjtcblxuICByZXR1cm4gW1xuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgcG9zaXRpb25UeXBlOiAnYWJzb2x1dGUnLFxuICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAge2lzUGxheWVyQWRtaW4gPyAoXG4gICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICBwb3NpdGlvblR5cGU6ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBpc01vYmlsZSA/ICdyb3ctcmV2ZXJzZScgOiAncm93JyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBvdXRlclBvc2l0aW9uLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IHN0YXRlLnBhbmVsT3BlbiA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgd2lkdGg6IDUwMCxcbiAgICAgICAgICAgICAgcG9pbnRlckZpbHRlcjogJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgIG1hcmdpbjogaW5uZXJQb3NpdGlvbixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDUwLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogMTIsXG4gICAgICAgICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgICAgICAgbGVmdDogMTIsXG4gICAgICAgICAgICAgICAgICByaWdodDogMTIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBjb250YWluZXJCYWNrZ3JvdW5kQ29sb3IgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJBRE1JTiBUT09MU1wiXG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezIwfVxuICAgICAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuY3JlYXRlKDE2MCwgMTU1LCAxNjgsIDEpfVxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IGZsZXhHcm93OiAxIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImFkbWluX3Rvb2xraXRfbW9kZXJhdGlvbl9jb250cm9sXCJcbiAgICAgICAgICAgICAgICB2YXJpYW50PXtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MID8gJ3ByaW1hcnknIDogJ3RleHQnfVxuICAgICAgICAgICAgICAgIGljb249e2dldEJ0bk1vZGVyYXRpb25Db250cm9sKCl9XG4gICAgICAgICAgICAgICAgb25seUljb25cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTpcbiAgICAgICAgICAgICAgICAgICAgYWRtaW5Ub29sa2l0RW50aXR5Lm1vZGVyYXRpb25Db250cm9sLmlzRW5hYmxlZCAmJiAhaXNQcmV2aWV3KClcbiAgICAgICAgICAgICAgICAgICAgICA/ICdmbGV4J1xuICAgICAgICAgICAgICAgICAgICAgIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ5LFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0MixcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5NT0RFUkFUSU9OX0NPTlRST0xcbiAgICAgICAgICAgICAgICAgICAgICA/IENvbG9yNC5CbGFjaygpXG4gICAgICAgICAgICAgICAgICAgICAgOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIGljb25UcmFuc2Zvcm09e3sgaGVpZ2h0OiAnMTAwJScsIHdpZHRoOiAnMTAwJScgfX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gc2V0QWN0aXZlVGFiKFRhYlR5cGUuTU9ERVJBVElPTl9DT05UUk9MKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGlkPVwiYWRtaW5fdG9vbGtpdF9wYW5lbF92aWRlb19jb250cm9sXCJcbiAgICAgICAgICAgICAgICB2YXJpYW50PXtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVklERU9fQ09OVFJPTCA/ICdwcmltYXJ5JyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICBpY29uPXtBRE1JTl9JQ09OUy5CVE5fVklERU9fQ09OVFJPTH1cbiAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5WSURFT19DT05UUk9MID8gQ29sb3I0LkJsYWNrKCkgOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIG9ubHlJY29uXG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGFkbWluVG9vbGtpdEVudGl0eS52aWRlb0NvbnRyb2wuaXNFbmFibGVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ5LFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0MixcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gc2V0QWN0aXZlVGFiKFRhYlR5cGUuVklERU9fQ09OVFJPTCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImFkbWluX3Rvb2xraXRfcGFuZWxfc21hcnRfaXRlbXNfY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0wgPyAncHJpbWFyeScgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgaWNvbj17QURNSU5fSUNPTlMuQlROX1NNQVJUX0lURU1fQ09OVFJPTH1cbiAgICAgICAgICAgICAgICBpY29uQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5TTUFSVF9JVEVNU19DT05UUk9MXG4gICAgICAgICAgICAgICAgICAgICAgPyBDb2xvcjQuQmxhY2soKVxuICAgICAgICAgICAgICAgICAgICAgIDogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbmx5SWNvblxuICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBhZG1pblRvb2xraXRFbnRpdHkuc21hcnRJdGVtc0NvbnRyb2wuaXNFbmFibGVkID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgd2lkdGg6IDQ5LFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA0MixcbiAgICAgICAgICAgICAgICAgIG1hcmdpbjogeyByaWdodDogOCB9LFxuICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBpY29uVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gc2V0QWN0aXZlVGFiKFRhYlR5cGUuU01BUlRfSVRFTVNfQ09OVFJPTCl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICBpZD1cImFkbWluX3Rvb2xraXRfcGFuZWxfdGV4dF9hbm5vdW5jZW1lbnRfY29udHJvbFwiXG4gICAgICAgICAgICAgICAgdmFyaWFudD17c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wgPyAncHJpbWFyeScgOiAndGV4dCd9XG4gICAgICAgICAgICAgICAgaWNvbj17QURNSU5fSUNPTlMuQlROX1RFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0x9XG4gICAgICAgICAgICAgICAgaWNvbkJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgICAgIGNvbG9yOlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTFxuICAgICAgICAgICAgICAgICAgICAgID8gQ29sb3I0LkJsYWNrKClcbiAgICAgICAgICAgICAgICAgICAgICA6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25seUljb25cbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgZGlzcGxheTogYWRtaW5Ub29sa2l0RW50aXR5LnRleHRBbm5vdW5jZW1lbnRDb250cm9sLmlzRW5hYmxlZCA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA0OSxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogNDIsXG4gICAgICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDggfSxcbiAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHNldEFjdGl2ZVRhYihUYWJUeXBlLlRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgLy8gTW9iaWxlOiBjYXAgdGhlIHRhYiBjb250ZW50IHRvIHRoZSB2aWV3cG9ydCBhbmQgc2Nyb2xsIHRoZVxuICAgICAgICAgICAgICAgIC8vIG92ZXJmbG93LCBzbyB0YWxsIHRhYnMgKGUuZy4gcGVybWlzc2lvbnMpIHN0YXkgZnVsbHkgcmVhY2hhYmxlLlxuICAgICAgICAgICAgICAgIC8vIFRoZSBoZWFkZXIgYWJvdmUgc3RheXMgZml4ZWQ7IGRlc2t0b3AgaXMgbGVmdCB1bnRvdWNoZWQuXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBpc01vYmlsZSA/ICc4NXZoJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaXNNb2JpbGUgPyAnc2Nyb2xsJyA6ICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3N0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5URVhUX0FOTk9VTkNFTUVOVF9DT05UUk9MID8gKFxuICAgICAgICAgICAgICAgIDxUZXh0QW5ub3VuY2VtZW50c0NvbnRyb2xcbiAgICAgICAgICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgICAgICAgICAgcGxheWVyPXtwbGF5ZXJ9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIHtzdGF0ZS5hY3RpdmVUYWIgPT09IFRhYlR5cGUuVklERU9fQ09OVFJPTCA/IChcbiAgICAgICAgICAgICAgICA8VmlkZW9Db250cm9sXG4gICAgICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgICAgIHN0YXRlPXtzdGF0ZX1cbiAgICAgICAgICAgICAgICAgIHBsYXllckFkZHJlc3M9e3BsYXllcj8udXNlcklkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICB7c3RhdGUuYWN0aXZlVGFiID09PSBUYWJUeXBlLlNNQVJUX0lURU1TX0NPTlRST0wgPyAoXG4gICAgICAgICAgICAgICAgPFNtYXJ0SXRlbXNDb250cm9sXG4gICAgICAgICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgICAgICAgIHN0YXRlPXtzdGF0ZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAge3N0YXRlLmFjdGl2ZVRhYiA9PT0gVGFiVHlwZS5NT0RFUkFUSU9OX0NPTlRST0wgJiYgKFxuICAgICAgICAgICAgICAgIDxNb2RlcmF0aW9uQ29udHJvbFxuICAgICAgICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICAgICAgICBwbGF5ZXI9e3BsYXllcn1cbiAgICAgICAgICAgICAgICAgIHNjZW5lQWRtaW5zPXtzY2VuZUFkbWluc0NhY2hlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGhlaWdodDogdG9nZ2xlQnRuU2l6ZSxcbiAgICAgICAgICAgICAgd2lkdGg6IHRvZ2dsZUJ0blNpemUsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIHBvaW50ZXJGaWx0ZXI6ICdibG9jaycsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgIHRleHR1cmU6IHtcbiAgICAgICAgICAgICAgICBzcmM6IEFETUlOX0lDT05TLkJUTl9BRE1JTl9UT09MS0lUX0JBQ0tHUk9VTkQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuY3JlYXRlKDEsIDEsIDEsIDEpLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RENMQnV0dG9uXG4gICAgICAgICAgICAgIHZhbHVlPVwiXCJcbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IHRvZ2dsZUJ0blNpemUgLSAyLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB0b2dnbGVCdG5TaXplIC0gMixcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICAgICAgc3JjOiBBRE1JTl9JQ09OUy5CVE5fQURNSU5fVE9PTEtJVF9DT05UUk9MLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LmNyZWF0ZSgxLCAxLCAxLCAxKSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHRvZ2dsZVBhbmVsKCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxUZXh0QW5ub3VuY2VtZW50c1xuICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgLz5cbiAgICA8L1VpRW50aXR5PixcbiAgICBzdGF0ZS5tb2RlcmF0aW9uQ29udHJvbC5zaG93TW9kYWxBZG1pbkxpc3QgJiYgKFxuICAgICAgPE1vZGFsVXNlckxpc3RcbiAgICAgICAgdXNlcnM9e3NjZW5lQWRtaW5zQ2FjaGUgPz8gW119XG4gICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICB0eXBlPXtVc2VyTGlzdFR5cGUuQURNSU59XG4gICAgICAvPlxuICAgICksXG4gICAgc3RhdGUubW9kZXJhdGlvbkNvbnRyb2wuc2hvd01vZGFsQmFuTGlzdCAmJiAoXG4gICAgICA8TW9kYWxVc2VyTGlzdFxuICAgICAgICB1c2Vycz17c2NlbmVCYW5zQ2FjaGUgPz8gW119XG4gICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICB0eXBlPXtVc2VyTGlzdFR5cGUuQkFOfVxuICAgICAgLz5cbiAgICApLFxuICAgIHN0YXRlLnZpZGVvQ29udHJvbC5zaG93Y2FzZS5zaG93ICYmXG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2hvd2Nhc2Uub25TZWxlY3RUcmFjayAmJlxuICAgICAgc3RhdGUudmlkZW9Db250cm9sLnNob3djYXNlLm9uU2V0RGVmYXVsdCAmJlxuICAgICAgc3RhdGUudmlkZW9Db250cm9sLnNob3djYXNlLm9uQ2xvc2UgJiYgKFxuICAgICAgICA8U3BlYWtlclNob3djYXNlXG4gICAgICAgICAgcGFydGljaXBhbnRzPXtzdGF0ZS52aWRlb0NvbnRyb2wucGFydGljaXBhbnRzfVxuICAgICAgICAgIGFjdGl2ZVRyYWNrU2lkPXtzdGF0ZS52aWRlb0NvbnRyb2wuc2hvd2Nhc2UuYWN0aXZlVHJhY2tTaWR9XG4gICAgICAgICAgb25TZWxlY3RUcmFjaz17c3RhdGUudmlkZW9Db250cm9sLnNob3djYXNlLm9uU2VsZWN0VHJhY2t9XG4gICAgICAgICAgb25TZXREZWZhdWx0PXtzdGF0ZS52aWRlb0NvbnRyb2wuc2hvd2Nhc2Uub25TZXREZWZhdWx0fVxuICAgICAgICAgIG9uQ2xvc2U9e3N0YXRlLnZpZGVvQ29udHJvbC5zaG93Y2FzZS5vbkNsb3NlfVxuICAgICAgICAvPlxuICAgICAgKSxcbiAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2hhcmVQcmVzZW50YXRpb24uc2hvdyAmJiBzdGF0ZS52aWRlb0NvbnRyb2wuc2hhcmVQcmVzZW50YXRpb24ub25DbG9zZSAmJiAoXG4gICAgICA8U2hhcmVQcmVzZW50YXRpb25Nb2RhbFxuICAgICAgICBvbkNsb3NlPXtzdGF0ZS52aWRlb0NvbnRyb2wuc2hhcmVQcmVzZW50YXRpb24ub25DbG9zZX1cbiAgICAgICAgc3RyZWFtaW5nS2V5PXtzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdD8uc3RyZWFtaW5nS2V5ID8/ICcnfVxuICAgICAgLz5cbiAgICApLFxuICBdO1xufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ import { type State } from './types';
2
+ export declare const state: State;
@@ -0,0 +1,45 @@
1
+ import { TabType } from './types';
2
+ export const state = {
3
+ adminToolkitUiEntity: 0,
4
+ panelOpen: false,
5
+ activeTab: TabType.NONE,
6
+ videoControl: {
7
+ selectedVideoPlayer: undefined,
8
+ selectedStream: undefined,
9
+ selectedTab: undefined,
10
+ dclCast: undefined,
11
+ isMinimized: false,
12
+ presentationState: undefined,
13
+ participants: [],
14
+ showcase: {
15
+ show: false,
16
+ activeTrackSid: undefined,
17
+ onSelectTrack: undefined,
18
+ onSetDefault: undefined,
19
+ onClose: undefined,
20
+ },
21
+ sharePresentation: {
22
+ show: false,
23
+ onClose: undefined,
24
+ },
25
+ },
26
+ smartItemsControl: {
27
+ selectedSmartItem: undefined,
28
+ smartItems: new Map(),
29
+ },
30
+ textAnnouncementControl: {
31
+ entity: undefined,
32
+ text: undefined,
33
+ messageRateTracker: new Map(),
34
+ announcements: [],
35
+ maxAnnouncements: 4,
36
+ banner: undefined,
37
+ },
38
+ moderationControl: {
39
+ showModalAdminList: false,
40
+ adminToRemove: undefined,
41
+ showModalBanList: false,
42
+ unbanMessage: undefined,
43
+ },
44
+ };
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsT0FBTyxFQUEwQixNQUFNLFNBQVMsQ0FBQztBQVV0RSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQVU7SUFDMUIsb0JBQW9CLEVBQUUsQ0FBVztJQUNqQyxTQUFTLEVBQUUsS0FBSztJQUNoQixTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUk7SUFDdkIsWUFBWSxFQUFFO1FBQ1osbUJBQW1CLEVBQUUsU0FBUztRQUM5QixjQUFjLEVBQUUsU0FBUztRQUN6QixXQUFXLEVBQUUsU0FBUztRQUN0QixPQUFPLEVBQUUsU0FBUztRQUNsQixXQUFXLEVBQUUsS0FBSztRQUNsQixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLFlBQVksRUFBRSxFQUFFO1FBQ2hCLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxLQUFLO1lBQ1gsY0FBYyxFQUFFLFNBQVM7WUFDekIsYUFBYSxFQUFFLFNBQVM7WUFDeEIsWUFBWSxFQUFFLFNBQVM7WUFDdkIsT0FBTyxFQUFFLFNBQVM7U0FDbkI7UUFDRCxpQkFBaUIsRUFBRTtZQUNqQixJQUFJLEVBQUUsS0FBSztZQUNYLE9BQU8sRUFBRSxTQUFTO1NBQ25CO0tBQ0Y7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixpQkFBaUIsRUFBRSxTQUFTO1FBQzVCLFVBQVUsRUFBRSxJQUFJLEdBQUcsRUFBNkI7S0FDakQ7SUFDRCx1QkFBdUIsRUFBRTtRQUN2QixNQUFNLEVBQUUsU0FBUztRQUNqQixJQUFJLEVBQUUsU0FBUztRQUNmLGtCQUFrQixFQUFFLElBQUksR0FBRyxFQUFrQjtRQUM3QyxhQUFhLEVBQUUsRUFBRTtRQUNqQixnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxTQUFTO0tBQ2xCO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsa0JBQWtCLEVBQUUsS0FBSztRQUN6QixhQUFhLEVBQUUsU0FBUztRQUN4QixnQkFBZ0IsRUFBRSxLQUFLO1FBQ3ZCLFlBQVksRUFBRSxTQUFTO0tBQ3hCO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRW50aXR5IH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgdHlwZSBTdGF0ZSwgVGFiVHlwZSwgdHlwZSBTZWxlY3RlZFNtYXJ0SXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBTaW5nbGUgc291cmNlIG9mIHRydXRoIGZvciBBZG1pbiBUb29sa2l0IHZpZXcgc3RhdGUuXG4vL1xuLy8gTGl2ZXMgaW4gYSBsZWFmIG1vZHVsZSAoaW1wb3J0cyBvbmx5IC4vdHlwZXMpIHNvIHNlcnZpY2VzIGxpa2UgdGhlIGJvb3QtdGltZVxuLy8gcHJlc2VudGF0aW9uIGRldGVjdG9yIGNhbiByZWFkL3dyaXRlIFVJIHN0YXRlIHdpdGhvdXQgcHVsbGluZyBpbiB0aGUgY29tcG9uZW50XG4vLyBncmFwaCB0aHJvdWdoIGluZGV4LnRzeCDigJQgd2hpY2ggcHJldmlvdXNseSBmb3JtZWQgYVxuLy8gZGV0ZWN0b3IgLT4gVmlkZW9Db250cm9sL3V0aWxzIC0+IGluZGV4IC0+IGRldGVjdG9yIGltcG9ydCBjeWNsZSAodGhlXG4vLyBiYXJyZWwvY2lyY3VsYXItaW1wb3J0IGhhemFyZCBjYWxsZWQgb3V0IGluIENMQVVERS5tZCkuIEFsbCB3cml0ZXMgdG8gdGhpc1xuLy8gb2JqZWN0IGdvIHRocm91Z2ggLi9hY3Rpb25zLlxuZXhwb3J0IGNvbnN0IHN0YXRlOiBTdGF0ZSA9IHtcbiAgYWRtaW5Ub29sa2l0VWlFbnRpdHk6IDAgYXMgRW50aXR5LFxuICBwYW5lbE9wZW46IGZhbHNlLFxuICBhY3RpdmVUYWI6IFRhYlR5cGUuTk9ORSxcbiAgdmlkZW9Db250cm9sOiB7XG4gICAgc2VsZWN0ZWRWaWRlb1BsYXllcjogdW5kZWZpbmVkLFxuICAgIHNlbGVjdGVkU3RyZWFtOiB1bmRlZmluZWQsXG4gICAgc2VsZWN0ZWRUYWI6IHVuZGVmaW5lZCxcbiAgICBkY2xDYXN0OiB1bmRlZmluZWQsXG4gICAgaXNNaW5pbWl6ZWQ6IGZhbHNlLFxuICAgIHByZXNlbnRhdGlvblN0YXRlOiB1bmRlZmluZWQsXG4gICAgcGFydGljaXBhbnRzOiBbXSxcbiAgICBzaG93Y2FzZToge1xuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICBhY3RpdmVUcmFja1NpZDogdW5kZWZpbmVkLFxuICAgICAgb25TZWxlY3RUcmFjazogdW5kZWZpbmVkLFxuICAgICAgb25TZXREZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICBvbkNsb3NlOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgICBzaGFyZVByZXNlbnRhdGlvbjoge1xuICAgICAgc2hvdzogZmFsc2UsXG4gICAgICBvbkNsb3NlOiB1bmRlZmluZWQsXG4gICAgfSxcbiAgfSxcbiAgc21hcnRJdGVtc0NvbnRyb2w6IHtcbiAgICBzZWxlY3RlZFNtYXJ0SXRlbTogdW5kZWZpbmVkLFxuICAgIHNtYXJ0SXRlbXM6IG5ldyBNYXA8RW50aXR5LCBTZWxlY3RlZFNtYXJ0SXRlbT4oKSxcbiAgfSxcbiAgdGV4dEFubm91bmNlbWVudENvbnRyb2w6IHtcbiAgICBlbnRpdHk6IHVuZGVmaW5lZCxcbiAgICB0ZXh0OiB1bmRlZmluZWQsXG4gICAgbWVzc2FnZVJhdGVUcmFja2VyOiBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpLFxuICAgIGFubm91bmNlbWVudHM6IFtdLFxuICAgIG1heEFubm91bmNlbWVudHM6IDQsXG4gICAgYmFubmVyOiB1bmRlZmluZWQsXG4gIH0sXG4gIG1vZGVyYXRpb25Db250cm9sOiB7XG4gICAgc2hvd01vZGFsQWRtaW5MaXN0OiBmYWxzZSxcbiAgICBhZG1pblRvUmVtb3ZlOiB1bmRlZmluZWQsXG4gICAgc2hvd01vZGFsQmFuTGlzdDogZmFsc2UsXG4gICAgdW5iYW5NZXNzYWdlOiB1bmRlZmluZWQsXG4gIH0sXG59O1xuIl19
@@ -1,12 +1,12 @@
1
1
  import type { Entity } from '@dcl/ecs';
2
- import type { DclCastResponse } from './VideoControl/api';
2
+ import type { DclCastResponse, FlattenedTrack, Participant } from './VideoControl/api';
3
+ import type { SceneAdmin } from './ModerationControl';
3
4
  export declare enum TabType {
4
5
  NONE = "None",
5
6
  VIDEO_CONTROL = "VideoControl",
6
7
  SMART_ITEMS_CONTROL = "SmartItemsControl",
7
8
  TEXT_ANNOUNCEMENT_CONTROL = "TextAnnouncementControl",
8
- MODERATION_CONTROL = "ModerationControl",
9
- REWARDS_CONTROL = "RewardsControl"
9
+ MODERATION_CONTROL = "ModerationControl"
10
10
  }
11
11
  export type SelectedSmartItem = {
12
12
  visible: boolean;
@@ -36,9 +36,22 @@ export type State = {
36
36
  videoControl: {
37
37
  selectedVideoPlayer: number | undefined;
38
38
  selectedStream: 'live' | 'dcl-cast' | undefined;
39
+ selectedTab: 'video-url' | 'live' | 'dcl-cast' | undefined;
39
40
  dclCast: DclCastResponse | undefined;
40
41
  isMinimized: boolean;
41
42
  presentationState: PresentationState | undefined;
43
+ participants: Participant[];
44
+ showcase: {
45
+ show: boolean;
46
+ activeTrackSid: string | undefined;
47
+ onSelectTrack: ((track: FlattenedTrack) => void) | undefined;
48
+ onSetDefault: (() => void) | undefined;
49
+ onClose: (() => void) | undefined;
50
+ };
51
+ sharePresentation: {
52
+ show: boolean;
53
+ onClose: (() => void) | undefined;
54
+ };
42
55
  };
43
56
  smartItemsControl: {
44
57
  selectedSmartItem: number | undefined;
@@ -53,8 +66,12 @@ export type State = {
53
66
  timestamp: number;
54
67
  }[];
55
68
  maxAnnouncements: number;
69
+ banner: 'sent' | 'cleared' | undefined;
56
70
  };
57
- rewardsControl: {
58
- selectedRewardItem: number | undefined;
71
+ moderationControl: {
72
+ showModalAdminList: boolean;
73
+ adminToRemove: SceneAdmin | undefined;
74
+ showModalBanList: boolean;
75
+ unbanMessage: string | undefined;
59
76
  };
60
77
  };
@@ -5,6 +5,5 @@ export var TabType;
5
5
  TabType["SMART_ITEMS_CONTROL"] = "SmartItemsControl";
6
6
  TabType["TEXT_ANNOUNCEMENT_CONTROL"] = "TextAnnouncementControl";
7
7
  TabType["MODERATION_CONTROL"] = "ModerationControl";
8
- TabType["REWARDS_CONTROL"] = "RewardsControl";
9
8
  })(TabType || (TabType = {}));
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQU4sSUFBWSxPQU9YO0FBUEQsV0FBWSxPQUFPO0lBQ2pCLHdCQUFhLENBQUE7SUFDYix5Q0FBOEIsQ0FBQTtJQUM5QixvREFBeUMsQ0FBQTtJQUN6QyxnRUFBcUQsQ0FBQTtJQUNyRCxtREFBd0MsQ0FBQTtJQUN4Qyw2Q0FBa0MsQ0FBQTtBQUNwQyxDQUFDLEVBUFcsT0FBTyxLQUFQLE9BQU8sUUFPbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eSB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB0eXBlIHsgRGNsQ2FzdFJlc3BvbnNlIH0gZnJvbSAnLi9WaWRlb0NvbnRyb2wvYXBpJztcblxuLy8gVGFiIGVudW0gZm9yIHR5cGUgc2FmZXR5XG5leHBvcnQgZW51bSBUYWJUeXBlIHtcbiAgTk9ORSA9ICdOb25lJyxcbiAgVklERU9fQ09OVFJPTCA9ICdWaWRlb0NvbnRyb2wnLFxuICBTTUFSVF9JVEVNU19DT05UUk9MID0gJ1NtYXJ0SXRlbXNDb250cm9sJyxcbiAgVEVYVF9BTk5PVU5DRU1FTlRfQ09OVFJPTCA9ICdUZXh0QW5ub3VuY2VtZW50Q29udHJvbCcsXG4gIE1PREVSQVRJT05fQ09OVFJPTCA9ICdNb2RlcmF0aW9uQ29udHJvbCcsXG4gIFJFV0FSRFNfQ09OVFJPTCA9ICdSZXdhcmRzQ29udHJvbCcsXG59XG5cbmV4cG9ydCB0eXBlIFNlbGVjdGVkU21hcnRJdGVtID0geyB2aXNpYmxlOiBib29sZWFuOyBzZWxlY3RlZEFjdGlvbjogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblN0YXRlID0ge1xuICBpZDogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBjdXJyZW50U2xpZGU6IG51bWJlcjtcbiAgc2xpZGVDb3VudDogbnVtYmVyO1xuICBmaWxlVHlwZTogJ3BkZicgfCAncHB0eCc7XG4gIHNsaWRlVmlkZW9zOiBBcnJheTx7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgZ2VvbWV0cnk6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH07XG4gIH0+O1xuICB2aWRlb1N0YXRlOiAnaWRsZScgfCAnbG9hZGluZycgfCAncGxheWluZycgfCAncGF1c2VkJztcbn07XG5cbmV4cG9ydCB0eXBlIFN0YXRlID0ge1xuICBhZG1pblRvb2xraXRVaUVudGl0eTogRW50aXR5O1xuICBwYW5lbE9wZW46IGJvb2xlYW47XG4gIGFjdGl2ZVRhYjogVGFiVHlwZTtcbiAgdmlkZW9Db250cm9sOiB7XG4gICAgc2VsZWN0ZWRWaWRlb1BsYXllcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHNlbGVjdGVkU3RyZWFtOiAnbGl2ZScgfCAnZGNsLWNhc3QnIHwgdW5kZWZpbmVkO1xuICAgIGRjbENhc3Q6IERjbENhc3RSZXNwb25zZSB8IHVuZGVmaW5lZDtcbiAgICBpc01pbmltaXplZDogYm9vbGVhbjtcbiAgICBwcmVzZW50YXRpb25TdGF0ZTogUHJlc2VudGF0aW9uU3RhdGUgfCB1bmRlZmluZWQ7XG4gIH07XG4gIHNtYXJ0SXRlbXNDb250cm9sOiB7XG4gICAgc2VsZWN0ZWRTbWFydEl0ZW06IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBzbWFydEl0ZW1zOiBNYXA8RW50aXR5LCBTZWxlY3RlZFNtYXJ0SXRlbT47XG4gIH07XG4gIHRleHRBbm5vdW5jZW1lbnRDb250cm9sOiB7XG4gICAgZW50aXR5OiBFbnRpdHkgfCB1bmRlZmluZWQ7XG4gICAgdGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2VSYXRlVHJhY2tlcjogTWFwPHN0cmluZywgbnVtYmVyPjtcbiAgICBhbm5vdW5jZW1lbnRzOiB7XG4gICAgICBlbnRpdHk6IEVudGl0eTtcbiAgICAgIHRpbWVzdGFtcDogbnVtYmVyO1xuICAgIH1bXTtcbiAgICBtYXhBbm5vdW5jZW1lbnRzOiBudW1iZXI7XG4gIH07XG4gIHJld2FyZHNDb250cm9sOiB7XG4gICAgc2VsZWN0ZWRSZXdhcmRJdGVtOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIH07XG59O1xuIl19
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQU4sSUFBWSxPQU1YO0FBTkQsV0FBWSxPQUFPO0lBQ2pCLHdCQUFhLENBQUE7SUFDYix5Q0FBOEIsQ0FBQTtJQUM5QixvREFBeUMsQ0FBQTtJQUN6QyxnRUFBcUQsQ0FBQTtJQUNyRCxtREFBd0MsQ0FBQTtBQUMxQyxDQUFDLEVBTlcsT0FBTyxLQUFQLE9BQU8sUUFNbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eSB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB0eXBlIHsgRGNsQ2FzdFJlc3BvbnNlLCBGbGF0dGVuZWRUcmFjaywgUGFydGljaXBhbnQgfSBmcm9tICcuL1ZpZGVvQ29udHJvbC9hcGknO1xuaW1wb3J0IHR5cGUgeyBTY2VuZUFkbWluIH0gZnJvbSAnLi9Nb2RlcmF0aW9uQ29udHJvbCc7XG5cbi8vIFRhYiBlbnVtIGZvciB0eXBlIHNhZmV0eVxuZXhwb3J0IGVudW0gVGFiVHlwZSB7XG4gIE5PTkUgPSAnTm9uZScsXG4gIFZJREVPX0NPTlRST0wgPSAnVmlkZW9Db250cm9sJyxcbiAgU01BUlRfSVRFTVNfQ09OVFJPTCA9ICdTbWFydEl0ZW1zQ29udHJvbCcsXG4gIFRFWFRfQU5OT1VOQ0VNRU5UX0NPTlRST0wgPSAnVGV4dEFubm91bmNlbWVudENvbnRyb2wnLFxuICBNT0RFUkFUSU9OX0NPTlRST0wgPSAnTW9kZXJhdGlvbkNvbnRyb2wnLFxufVxuXG5leHBvcnQgdHlwZSBTZWxlY3RlZFNtYXJ0SXRlbSA9IHsgdmlzaWJsZTogYm9vbGVhbjsgc2VsZWN0ZWRBY3Rpb246IHN0cmluZyB9O1xuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25TdGF0ZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgY3VycmVudFNsaWRlOiBudW1iZXI7XG4gIHNsaWRlQ291bnQ6IG51bWJlcjtcbiAgZmlsZVR5cGU6ICdwZGYnIHwgJ3BwdHgnO1xuICBzbGlkZVZpZGVvczogQXJyYXk8e1xuICAgIHVybDogc3RyaW5nO1xuICAgIGdlb21ldHJ5OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9O1xuICB9PjtcbiAgdmlkZW9TdGF0ZTogJ2lkbGUnIHwgJ2xvYWRpbmcnIHwgJ3BsYXlpbmcnIHwgJ3BhdXNlZCc7XG59O1xuXG5leHBvcnQgdHlwZSBTdGF0ZSA9IHtcbiAgYWRtaW5Ub29sa2l0VWlFbnRpdHk6IEVudGl0eTtcbiAgcGFuZWxPcGVuOiBib29sZWFuO1xuICBhY3RpdmVUYWI6IFRhYlR5cGU7XG4gIHZpZGVvQ29udHJvbDoge1xuICAgIHNlbGVjdGVkVmlkZW9QbGF5ZXI6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBzZWxlY3RlZFN0cmVhbTogJ2xpdmUnIHwgJ2RjbC1jYXN0JyB8IHVuZGVmaW5lZDtcbiAgICBzZWxlY3RlZFRhYjogJ3ZpZGVvLXVybCcgfCAnbGl2ZScgfCAnZGNsLWNhc3QnIHwgdW5kZWZpbmVkO1xuICAgIGRjbENhc3Q6IERjbENhc3RSZXNwb25zZSB8IHVuZGVmaW5lZDtcbiAgICBpc01pbmltaXplZDogYm9vbGVhbjtcbiAgICBwcmVzZW50YXRpb25TdGF0ZTogUHJlc2VudGF0aW9uU3RhdGUgfCB1bmRlZmluZWQ7XG4gICAgcGFydGljaXBhbnRzOiBQYXJ0aWNpcGFudFtdO1xuICAgIHNob3djYXNlOiB7XG4gICAgICBzaG93OiBib29sZWFuO1xuICAgICAgYWN0aXZlVHJhY2tTaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIG9uU2VsZWN0VHJhY2s6ICgodHJhY2s6IEZsYXR0ZW5lZFRyYWNrKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICAgIG9uU2V0RGVmYXVsdDogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgICAgb25DbG9zZTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICAgIH07XG4gICAgc2hhcmVQcmVzZW50YXRpb246IHtcbiAgICAgIHNob3c6IGJvb2xlYW47XG4gICAgICBvbkNsb3NlOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgfTtcbiAgfTtcbiAgc21hcnRJdGVtc0NvbnRyb2w6IHtcbiAgICBzZWxlY3RlZFNtYXJ0SXRlbTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHNtYXJ0SXRlbXM6IE1hcDxFbnRpdHksIFNlbGVjdGVkU21hcnRJdGVtPjtcbiAgfTtcbiAgdGV4dEFubm91bmNlbWVudENvbnRyb2w6IHtcbiAgICBlbnRpdHk6IEVudGl0eSB8IHVuZGVmaW5lZDtcbiAgICB0ZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZVJhdGVUcmFja2VyOiBNYXA8c3RyaW5nLCBudW1iZXI+O1xuICAgIGFubm91bmNlbWVudHM6IHtcbiAgICAgIGVudGl0eTogRW50aXR5O1xuICAgICAgdGltZXN0YW1wOiBudW1iZXI7XG4gICAgfVtdO1xuICAgIG1heEFubm91bmNlbWVudHM6IG51bWJlcjtcbiAgICBiYW5uZXI6ICdzZW50JyB8ICdjbGVhcmVkJyB8IHVuZGVmaW5lZDtcbiAgfTtcbiAgbW9kZXJhdGlvbkNvbnRyb2w6IHtcbiAgICBzaG93TW9kYWxBZG1pbkxpc3Q6IGJvb2xlYW47XG4gICAgYWRtaW5Ub1JlbW92ZTogU2NlbmVBZG1pbiB8IHVuZGVmaW5lZDtcbiAgICBzaG93TW9kYWxCYW5MaXN0OiBib29sZWFuO1xuICAgIHVuYmFuTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9O1xufTtcbiJdfQ==