@dcl/asset-packs 2.14.2 → 2.15.0
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/bin/index.js +2169 -616
- package/catalog.json +127 -1
- package/dist/actions.js +8 -8
- package/dist/admin-toolkit-ui/Button.d.ts +1 -1
- package/dist/admin-toolkit-ui/Button.js +2 -2
- package/dist/admin-toolkit-ui/Error.d.ts +2 -2
- package/dist/admin-toolkit-ui/Error.js +4 -4
- package/dist/admin-toolkit-ui/Header.js +1 -1
- package/dist/admin-toolkit-ui/Modal.d.ts +19 -0
- package/dist/admin-toolkit-ui/Modal.js +37 -0
- package/dist/admin-toolkit-ui/ModerationControl/UsersList.d.ts +3 -3
- package/dist/admin-toolkit-ui/ModerationControl/UsersList.js +14 -8
- package/dist/admin-toolkit-ui/ModerationControl/index.d.ts +4 -5
- package/dist/admin-toolkit-ui/ModerationControl/index.js +19 -11
- package/dist/admin-toolkit-ui/ModerationControl/styles/AddUserInputStyles.js +4 -4
- package/dist/admin-toolkit-ui/ModerationControl/styles/UsersListStyles.d.ts +2 -0
- package/dist/admin-toolkit-ui/ModerationControl/styles/UsersListStyles.js +13 -5
- package/dist/admin-toolkit-ui/RewardsControl.d.ts +2 -2
- package/dist/admin-toolkit-ui/RewardsControl.js +9 -5
- package/dist/admin-toolkit-ui/SmartItemsControl.d.ts +2 -2
- package/dist/admin-toolkit-ui/SmartItemsControl.js +6 -4
- package/dist/admin-toolkit-ui/TextAnnouncements.d.ts +2 -2
- package/dist/admin-toolkit-ui/TextAnnouncements.js +9 -5
- package/dist/admin-toolkit-ui/TextAnnouncementsControl.d.ts +3 -3
- package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +15 -7
- package/dist/admin-toolkit-ui/VideoControl/DclCast/CompactDclCast.d.ts +11 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/CompactDclCast.js +90 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.d.ts +6 -4
- package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.js +71 -57
- package/dist/admin-toolkit-ui/VideoControl/DclCast/PresentationPanel.d.ts +10 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/PresentationPanel.js +67 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/SharePresentationModal.d.ts +6 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/SharePresentationModal.js +74 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/SpeakerShowcase.d.ts +11 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/SpeakerShowcase.js +110 -0
- package/dist/admin-toolkit-ui/VideoControl/DclCast/index.d.ts +17 -3
- package/dist/admin-toolkit-ui/VideoControl/DclCast/index.js +208 -35
- package/dist/admin-toolkit-ui/VideoControl/DclCast/styles.d.ts +73 -1
- package/dist/admin-toolkit-ui/VideoControl/DclCast/styles.js +193 -3
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +17 -13
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.d.ts +1 -1
- package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.js +8 -8
- package/dist/admin-toolkit-ui/VideoControl/VideoUrl.d.ts +2 -2
- package/dist/admin-toolkit-ui/VideoControl/VideoUrl.js +9 -9
- package/dist/admin-toolkit-ui/VideoControl/VolumeControl.d.ts +3 -2
- package/dist/admin-toolkit-ui/VideoControl/VolumeControl.js +8 -10
- package/dist/admin-toolkit-ui/VideoControl/api.d.ts +49 -0
- package/dist/admin-toolkit-ui/VideoControl/api.js +185 -1
- package/dist/admin-toolkit-ui/VideoControl/index.d.ts +16 -15
- package/dist/admin-toolkit-ui/VideoControl/index.js +57 -21
- package/dist/admin-toolkit-ui/VideoControl/utils.d.ts +2 -2
- package/dist/admin-toolkit-ui/VideoControl/utils.js +3 -3
- package/dist/admin-toolkit-ui/constants.d.ts +2 -3
- package/dist/admin-toolkit-ui/constants.js +4 -4
- package/dist/admin-toolkit-ui/fetch-utils.js +2 -2
- package/dist/admin-toolkit-ui/index.d.ts +4 -4
- package/dist/admin-toolkit-ui/index.js +40 -18
- package/dist/admin-toolkit-ui/types.d.ts +19 -0
- package/dist/admin-toolkit-ui/types.js +1 -1
- package/dist/admin.js +2 -2
- package/dist/bin/index.js +2169 -616
- package/dist/ui.js +4 -4
- package/package.json +5 -5
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import ReactEcs, { Dropdown, UiEntity, Label } from '@dcl/react-ecs';
|
|
2
|
+
import { getContentUrl } from '../../constants';
|
|
3
|
+
import { Button } from '../../Button';
|
|
4
|
+
import { Modal } from '../../Modal';
|
|
5
|
+
import { getSourceLabel, isPresentationBot } from '../api';
|
|
6
|
+
import { getSpeakerShowcaseStyles, getShowcaseColors, getShowcaseBackgrounds, getShowcaseIconBackgrounds, getPaginationColor, SHOWCASE_DROPDOWN_COLORS, SHOWCASE_PAGE_INDICATOR_COLOR, } from './styles';
|
|
7
|
+
const SPEAKERS_PER_PAGE = 10;
|
|
8
|
+
const ICONS = {
|
|
9
|
+
get BACK() {
|
|
10
|
+
return `${getContentUrl()}/admin_toolkit/assets/icons/chevron-back.png`;
|
|
11
|
+
},
|
|
12
|
+
get NEXT() {
|
|
13
|
+
return `${getContentUrl()}/admin_toolkit/assets/icons/chevron-forward.png`;
|
|
14
|
+
},
|
|
15
|
+
get STAR() {
|
|
16
|
+
return `${getContentUrl()}/admin_toolkit/assets/icons/star.png`;
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
function getDropdownOptions(participant) {
|
|
20
|
+
return participant.tracks.map(track => `${getSourceLabel(track.sourceType)}`);
|
|
21
|
+
}
|
|
22
|
+
function getActiveIndex(participant, activeTrackSid) {
|
|
23
|
+
if (!activeTrackSid)
|
|
24
|
+
return -1;
|
|
25
|
+
return participant.tracks.findIndex(t => t.sid === activeTrackSid);
|
|
26
|
+
}
|
|
27
|
+
function ParticipantRow({ participant, activeTrackSid, isHovered, onSelectTrack, onHoverEnter, onHoverLeave, }) {
|
|
28
|
+
const styles = getSpeakerShowcaseStyles();
|
|
29
|
+
const backgrounds = getShowcaseBackgrounds();
|
|
30
|
+
const colors = getShowcaseColors();
|
|
31
|
+
const iconBgs = getShowcaseIconBackgrounds();
|
|
32
|
+
const isBot = isPresentationBot(participant.name);
|
|
33
|
+
const displayName = isBot ? 'Presentation' : participant.name;
|
|
34
|
+
const activeIndex = getActiveIndex(participant, activeTrackSid);
|
|
35
|
+
const isActive = activeIndex !== -1;
|
|
36
|
+
const options = getDropdownOptions(participant);
|
|
37
|
+
const displayLabel = isActive
|
|
38
|
+
? getSourceLabel(participant.tracks[activeIndex].sourceType)
|
|
39
|
+
: 'Showcase';
|
|
40
|
+
const dropdownTextColor = isHovered
|
|
41
|
+
? SHOWCASE_DROPDOWN_COLORS.hover
|
|
42
|
+
: isActive
|
|
43
|
+
? SHOWCASE_DROPDOWN_COLORS.active
|
|
44
|
+
: SHOWCASE_DROPDOWN_COLORS.idle;
|
|
45
|
+
const dropdownBgColor = isHovered
|
|
46
|
+
? SHOWCASE_DROPDOWN_COLORS.hoverBg
|
|
47
|
+
: SHOWCASE_DROPDOWN_COLORS.transparentBg;
|
|
48
|
+
return (ReactEcs.createElement(UiEntity, { uiTransform: styles.userItem },
|
|
49
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.userRow },
|
|
50
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.userInfo },
|
|
51
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.personIconContainer },
|
|
52
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.personIcon, uiBackground: backgrounds.personIcon })),
|
|
53
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.userDetails },
|
|
54
|
+
ReactEcs.createElement(Label, { value: `<b>${displayName}</b>`, fontSize: 14, color: colors.white }))),
|
|
55
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.rowCenter }, isBot ? (ReactEcs.createElement(Button, { id: `showcase-activate-${participant.identity}`, value: isActive ? '<b>Active</b>' : '<b>Activate</b>', variant: isActive ? 'primary' : 'secondary', disabled: isActive, fontSize: 14, color: colors.white, uiTransform: styles.dropdownTransform, onMouseDown: () => {
|
|
56
|
+
const track = participant.tracks[0];
|
|
57
|
+
if (track) {
|
|
58
|
+
onSelectTrack(track);
|
|
59
|
+
}
|
|
60
|
+
} })) : (ReactEcs.createElement(UiEntity, { uiTransform: styles.rowCenter },
|
|
61
|
+
ReactEcs.createElement(UiEntity, { uiTransform: { ...styles.starIcon, display: isActive ? 'flex' : 'none' }, uiBackground: iconBgs.star }),
|
|
62
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.dropdownWrapper, onMouseEnter: onHoverEnter, onMouseLeave: onHoverLeave },
|
|
63
|
+
ReactEcs.createElement(Dropdown, { key: `showcase-dropdown-${participant.identity}-${activeTrackSid ?? 'none'}`, acceptEmpty: true, emptyLabel: displayLabel, options: options, selectedIndex: -1, onChange: (optionIndex) => {
|
|
64
|
+
const track = participant.tracks[optionIndex];
|
|
65
|
+
if (track) {
|
|
66
|
+
onSelectTrack(track);
|
|
67
|
+
}
|
|
68
|
+
}, textAlign: "middle-left", fontSize: 14, uiTransform: styles.dropdownTransform, uiBackground: { color: dropdownBgColor }, color: dropdownTextColor })))))),
|
|
69
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.divider, uiBackground: backgrounds.divider })));
|
|
70
|
+
}
|
|
71
|
+
export function SpeakerShowcase({ participants, activeTrackSid, onSelectTrack, onSetDefault, onClose, }) {
|
|
72
|
+
const [page, setPage] = ReactEcs.useState(1);
|
|
73
|
+
const [hoveredDropdown, setHoveredDropdown] = ReactEcs.useState(undefined);
|
|
74
|
+
const isDefaultActive = !activeTrackSid;
|
|
75
|
+
const styles = getSpeakerShowcaseStyles();
|
|
76
|
+
const colors = getShowcaseColors();
|
|
77
|
+
const iconBgs = getShowcaseIconBackgrounds();
|
|
78
|
+
const totalPages = Math.ceil(participants.length / SPEAKERS_PER_PAGE);
|
|
79
|
+
const startIndex = (page - 1) * SPEAKERS_PER_PAGE;
|
|
80
|
+
const endIndex = Math.min(startIndex + SPEAKERS_PER_PAGE, participants.length);
|
|
81
|
+
const currentPageParticipants = participants.slice(startIndex, endIndex);
|
|
82
|
+
const paginationFooter = participants.length > SPEAKERS_PER_PAGE && (ReactEcs.createElement(UiEntity, { uiTransform: styles.pagination },
|
|
83
|
+
ReactEcs.createElement(Button, { id: "showcase-prev", value: "Prev", variant: "secondary", disabled: page <= 1, fontSize: 18, icon: ICONS.BACK, iconTransform: styles.prevIcon, iconBackground: { color: getPaginationColor(page <= 1) }, color: getPaginationColor(page <= 1), labelTransform: styles.prevLabel, uiTransform: styles.paginationButton, onMouseDown: () => setPage(page - 1) }),
|
|
84
|
+
ReactEcs.createElement(Label, { value: `Page ${page}/${totalPages}`, fontSize: 14, color: SHOWCASE_PAGE_INDICATOR_COLOR }),
|
|
85
|
+
ReactEcs.createElement(Button, { id: "showcase-next", value: "<b>Next</b>", variant: "secondary", fontSize: 18, iconRight: ICONS.NEXT, iconRightTransform: styles.nextIcon, labelTransform: styles.nextLabel, iconRightBackground: {
|
|
86
|
+
color: getPaginationColor(page >= totalPages),
|
|
87
|
+
}, color: getPaginationColor(page >= totalPages), disabled: page >= totalPages, uiTransform: styles.paginationButton, onMouseDown: () => setPage(page + 1) })));
|
|
88
|
+
return (ReactEcs.createElement(Modal, { id: "showcase", title: "SPEAKER SHOWCASE", titleFontSize: 20, headerIcon: iconBgs.showcase, headerIconSize: 24, headerMarginBottom: 16, counterText: `(${participants.length} Speakers)`, counterFontSize: 14, width: 650, height: 650, padding: 16, onClose: onClose, footer: paginationFooter || undefined },
|
|
89
|
+
ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column', width: '100%' } },
|
|
90
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.toggleRow, uiBackground: { color: colors.softBlack } },
|
|
91
|
+
ReactEcs.createElement(UiEntity, { uiTransform: { flexDirection: 'column' } },
|
|
92
|
+
ReactEcs.createElement(Label, { value: "Automatic Showcase", fontSize: 14, color: colors.white }),
|
|
93
|
+
ReactEcs.createElement(Label, { value: "Speakers will be automatically featured when they speak", fontSize: 10, color: colors.gray })),
|
|
94
|
+
ReactEcs.createElement(Button, { id: "showcase-default-speaker", value: isDefaultActive ? 'Active' : 'Turn On', variant: "secondary", disabled: isDefaultActive, fontSize: 14, color: colors.white, icon: ICONS.STAR, iconTransform: {
|
|
95
|
+
...styles.starIcon,
|
|
96
|
+
display: isDefaultActive ? 'flex' : 'none',
|
|
97
|
+
}, iconBackground: { color: colors.white }, uiTransform: {
|
|
98
|
+
...styles.toggleButton,
|
|
99
|
+
...(isDefaultActive ? { borderColor: colors.transparent } : {}),
|
|
100
|
+
}, onMouseDown: () => {
|
|
101
|
+
if (!isDefaultActive) {
|
|
102
|
+
onSetDefault();
|
|
103
|
+
}
|
|
104
|
+
} })),
|
|
105
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.listContainer },
|
|
106
|
+
participants.length === 0 && (ReactEcs.createElement(UiEntity, { uiTransform: styles.messageContainer },
|
|
107
|
+
ReactEcs.createElement(Label, { value: "No current active participants in the Cast", fontSize: 16, color: colors.gray }))),
|
|
108
|
+
currentPageParticipants.map(participant => (ReactEcs.createElement(ParticipantRow, { key: participant.identity, participant: participant, activeTrackSid: activeTrackSid, isHovered: hoveredDropdown === participant.identity, onSelectTrack: onSelectTrack, onHoverEnter: () => setHoveredDropdown(participant.identity), onHoverLeave: () => setHoveredDropdown(undefined) })))))));
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BlYWtlclNob3djYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL0RjbENhc3QvU3BlYWtlclNob3djYXNlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUF5QyxNQUFNLFFBQVEsQ0FBQztBQUNsRyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsNkJBQTZCLEdBQzlCLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE1BQU0saUJBQWlCLEdBQUcsRUFBRSxDQUFDO0FBRTdCLE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSxJQUFJO1FBQ04sT0FBTyxHQUFHLGFBQWEsRUFBRSw4Q0FBOEMsQ0FBQztJQUMxRSxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxHQUFHLGFBQWEsRUFBRSxpREFBaUQsQ0FBQztJQUM3RSxDQUFDO0lBQ0QsSUFBSSxJQUFJO1FBQ04sT0FBTyxHQUFHLGFBQWEsRUFBRSxzQ0FBc0MsQ0FBQztJQUNsRSxDQUFDO0NBQ0YsQ0FBQztBQVVGLFNBQVMsa0JBQWtCLENBQUMsV0FBd0I7SUFDbEQsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDLEtB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TUFBTSxLQUFLLENBQUMsSUFBSSxDQUM1Qix1QkFBQyxRQUFRLElBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0I7b0JBQzVDLHVCQUFDLEtBQUssSUFDSixLQUFLLEVBQUMsNENBQTRDLEVBQ2xELFFBQVEsRUFBRSxFQUFFLEVBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQ2xCLENBQ08sQ0FDWjtnQkFDQSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUMxQyx1QkFBQyxjQUFjLElBQ2IsR0FBRyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQ3pCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLGNBQWMsRUFBRSxjQUFjLEVBQzlCLFNBQVMsRUFBRSxlQUFlLEtBQUssV0FBVyxDQUFDLFFBQVEsRUFDbkQsYUFBYSxFQUFFLGFBQWEsRUFDNUIsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFDNUQsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxHQUNqRCxDQUNILENBQUMsQ0FDTyxDQUNGLENBQ0wsQ0FDVCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdEVjcywgeyBEcm9wZG93biwgVWlFbnRpdHksIExhYmVsIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuaW1wb3J0IHsgZ2V0Q29udGVudFVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgTW9kYWwgfSBmcm9tICcuLi8uLi9Nb2RhbCc7XG5pbXBvcnQgeyBnZXRTb3VyY2VMYWJlbCwgaXNQcmVzZW50YXRpb25Cb3QsIHR5cGUgRmxhdHRlbmVkVHJhY2ssIHR5cGUgUGFydGljaXBhbnQgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHtcbiAgZ2V0U3BlYWtlclNob3djYXNlU3R5bGVzLFxuICBnZXRTaG93Y2FzZUNvbG9ycyxcbiAgZ2V0U2hvd2Nhc2VCYWNrZ3JvdW5kcyxcbiAgZ2V0U2hvd2Nhc2VJY29uQmFja2dyb3VuZHMsXG4gIGdldFBhZ2luYXRpb25Db2xvcixcbiAgU0hPV0NBU0VfRFJPUERPV05fQ09MT1JTLFxuICBTSE9XQ0FTRV9QQUdFX0lORElDQVRPUl9DT0xPUixcbn0gZnJvbSAnLi9zdHlsZXMnO1xuXG5jb25zdCBTUEVBS0VSU19QRVJfUEFHRSA9IDEwO1xuXG5jb25zdCBJQ09OUyA9IHtcbiAgZ2V0IEJBQ0soKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvY2hldnJvbi1iYWNrLnBuZ2A7XG4gIH0sXG4gIGdldCBORVhUKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2NoZXZyb24tZm9yd2FyZC5wbmdgO1xuICB9LFxuICBnZXQgU1RBUigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9zdGFyLnBuZ2A7XG4gIH0sXG59O1xuXG50eXBlIFNwZWFrZXJTaG93Y2FzZVByb3BzID0ge1xuICBwYXJ0aWNpcGFudHM6IFBhcnRpY2lwYW50W107XG4gIGFjdGl2ZVRyYWNrU2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIG9uU2VsZWN0VHJhY2s6ICh0cmFjazogRmxhdHRlbmVkVHJhY2spID0+IHZvaWQ7XG4gIG9uU2V0RGVmYXVsdDogKCkgPT4gdm9pZDtcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbn07XG5cbmZ1bmN0aW9uIGdldERyb3Bkb3duT3B0aW9ucyhwYXJ0aWNpcGFudDogUGFydGljaXBhbnQpOiBzdHJpbmdbXSB7XG4gIHJldHVybiBwYXJ0aWNpcGFudC50cmFja3MubWFwKHRyYWNrID0+IGAke2dldFNvdXJjZUxhYmVsKHRyYWNrLnNvdXJjZVR5cGUpfWApO1xufVxuXG5mdW5jdGlvbiBnZXRBY3RpdmVJbmRleChwYXJ0aWNpcGFudDogUGFydGljaXBhbnQsIGFjdGl2ZVRyYWNrU2lkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuICBpZiAoIWFjdGl2ZVRyYWNrU2lkKSByZXR1cm4gLTE7XG4gIHJldHVybiBwYXJ0aWNpcGFudC50cmFja3MuZmluZEluZGV4KHQgPT4gdC5zaWQgPT09IGFjdGl2ZVRyYWNrU2lkKTtcbn1cblxuZnVuY3Rpb24gUGFydGljaXBhbnRSb3coe1xuICBwYXJ0aWNpcGFudCxcbiAgYWN0aXZlVHJhY2tTaWQsXG4gIGlzSG92ZXJlZCxcbiAgb25TZWxlY3RUcmFjayxcbiAgb25Ib3ZlckVudGVyLFxuICBvbkhvdmVyTGVhdmUsXG59OiB7XG4gIGtleT86IHN0cmluZztcbiAgcGFydGljaXBhbnQ6IFBhcnRpY2lwYW50O1xuICBhY3RpdmVUcmFja1NpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpc0hvdmVyZWQ6IGJvb2xlYW47XG4gIG9uU2VsZWN0VHJhY2s6ICh0cmFjazogRmxhdHRlbmVkVHJhY2spID0+IHZvaWQ7XG4gIG9uSG92ZXJFbnRlcjogKCkgPT4gdm9pZDtcbiAgb25Ib3ZlckxlYXZlOiAoKSA9PiB2b2lkO1xufSkge1xuICBjb25zdCBzdHlsZXMgPSBnZXRTcGVha2VyU2hvd2Nhc2VTdHlsZXMoKTtcbiAgY29uc3QgYmFja2dyb3VuZHMgPSBnZXRTaG93Y2FzZUJhY2tncm91bmRzKCk7XG4gIGNvbnN0IGNvbG9ycyA9IGdldFNob3djYXNlQ29sb3JzKCk7XG4gIGNvbnN0IGljb25CZ3MgPSBnZXRTaG93Y2FzZUljb25CYWNrZ3JvdW5kcygpO1xuXG4gIGNvbnN0IGlzQm90ID0gaXNQcmVzZW50YXRpb25Cb3QocGFydGljaXBhbnQubmFtZSk7XG4gIGNvbnN0IGRpc3BsYXlOYW1lID0gaXNCb3QgPyAnUHJlc2VudGF0aW9uJyA6IHBhcnRpY2lwYW50Lm5hbWU7XG4gIGNvbnN0IGFjdGl2ZUluZGV4ID0gZ2V0QWN0aXZlSW5kZXgocGFydGljaXBhbnQsIGFjdGl2ZVRyYWNrU2lkKTtcbiAgY29uc3QgaXNBY3RpdmUgPSBhY3RpdmVJbmRleCAhPT0gLTE7XG4gIGNvbnN0IG9wdGlvbnMgPSBnZXREcm9wZG93bk9wdGlvbnMocGFydGljaXBhbnQpO1xuICBjb25zdCBkaXNwbGF5TGFiZWwgPSBpc0FjdGl2ZVxuICAgID8gZ2V0U291cmNlTGFiZWwocGFydGljaXBhbnQudHJhY2tzW2FjdGl2ZUluZGV4XS5zb3VyY2VUeXBlKVxuICAgIDogJ1Nob3djYXNlJztcblxuICBjb25zdCBkcm9wZG93blRleHRDb2xvciA9IGlzSG92ZXJlZFxuICAgID8gU0hPV0NBU0VfRFJPUERPV05fQ09MT1JTLmhvdmVyXG4gICAgOiBpc0FjdGl2ZVxuICAgICAgPyBTSE9XQ0FTRV9EUk9QRE9XTl9DT0xPUlMuYWN0aXZlXG4gICAgICA6IFNIT1dDQVNFX0RST1BET1dOX0NPTE9SUy5pZGxlO1xuXG4gIGNvbnN0IGRyb3Bkb3duQmdDb2xvciA9IGlzSG92ZXJlZFxuICAgID8gU0hPV0NBU0VfRFJPUERPV05fQ09MT1JTLmhvdmVyQmdcbiAgICA6IFNIT1dDQVNFX0RST1BET1dOX0NPTE9SUy50cmFuc3BhcmVudEJnO1xuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMudXNlckl0ZW19PlxuICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMudXNlclJvd30+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnVzZXJJbmZvfT5cbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5wZXJzb25JY29uQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLnBlcnNvbkljb259XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17YmFja2dyb3VuZHMucGVyc29uSWNvbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy51c2VyRGV0YWlsc30+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgdmFsdWU9e2A8Yj4ke2Rpc3BsYXlOYW1lfTwvYj5gfVxuICAgICAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnJvd0NlbnRlcn0+XG4gICAgICAgICAge2lzQm90ID8gKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD17YHNob3djYXNlLWFjdGl2YXRlLSR7cGFydGljaXBhbnQuaWRlbnRpdHl9YH1cbiAgICAgICAgICAgICAgdmFsdWU9e2lzQWN0aXZlID8gJzxiPkFjdGl2ZTwvYj4nIDogJzxiPkFjdGl2YXRlPC9iPid9XG4gICAgICAgICAgICAgIHZhcmlhbnQ9e2lzQWN0aXZlID8gJ3ByaW1hcnknIDogJ3NlY29uZGFyeSd9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc0FjdGl2ZX1cbiAgICAgICAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLndoaXRlfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmRyb3Bkb3duVHJhbnNmb3JtfVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRyYWNrID0gcGFydGljaXBhbnQudHJhY2tzWzBdO1xuICAgICAgICAgICAgICAgIGlmICh0cmFjaykge1xuICAgICAgICAgICAgICAgICAgb25TZWxlY3RUcmFjayh0cmFjayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMucm93Q2VudGVyfT5cbiAgICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3sgLi4uc3R5bGVzLnN0YXJJY29uLCBkaXNwbGF5OiBpc0FjdGl2ZSA/ICdmbGV4JyA6ICdub25lJyB9fVxuICAgICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17aWNvbkJncy5zdGFyfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmRyb3Bkb3duV3JhcHBlcn1cbiAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e29uSG92ZXJFbnRlcn1cbiAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9e29uSG92ZXJMZWF2ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxEcm9wZG93blxuICAgICAgICAgICAgICAgICAga2V5PXtgc2hvd2Nhc2UtZHJvcGRvd24tJHtwYXJ0aWNpcGFudC5pZGVudGl0eX0tJHthY3RpdmVUcmFja1NpZCA/PyAnbm9uZSd9YH1cbiAgICAgICAgICAgICAgICAgIGFjY2VwdEVtcHR5XG4gICAgICAgICAgICAgICAgICBlbXB0eUxhYmVsPXtkaXNwbGF5TGFiZWx9XG4gICAgICAgICAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KG9wdGlvbkluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhY2sgPSBwYXJ0aWNpcGFudC50cmFja3Nbb3B0aW9uSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHRleHRBbGlnbj1cIm1pZGRsZS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplPXsxNH1cbiAgICAgICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMuZHJvcGRvd25UcmFuc2Zvcm19XG4gICAgICAgICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IGRyb3Bkb3duQmdDb2xvciB9fVxuICAgICAgICAgICAgICAgICAgY29sb3I9e2Ryb3Bkb3duVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICA8L1VpRW50aXR5PlxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMuZGl2aWRlcn1cbiAgICAgICAgdWlCYWNrZ3JvdW5kPXtiYWNrZ3JvdW5kcy5kaXZpZGVyfVxuICAgICAgLz5cbiAgICA8L1VpRW50aXR5PlxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gU3BlYWtlclNob3djYXNlKHtcbiAgcGFydGljaXBhbnRzLFxuICBhY3RpdmVUcmFja1NpZCxcbiAgb25TZWxlY3RUcmFjayxcbiAgb25TZXREZWZhdWx0LFxuICBvbkNsb3NlLFxufTogU3BlYWtlclNob3djYXNlUHJvcHMpIHtcbiAgY29uc3QgW3BhZ2UsIHNldFBhZ2VdID0gUmVhY3RFY3MudXNlU3RhdGUoMSk7XG4gIGNvbnN0IFtob3ZlcmVkRHJvcGRvd24sIHNldEhvdmVyZWREcm9wZG93bl0gPSBSZWFjdEVjcy51c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGlzRGVmYXVsdEFjdGl2ZSA9ICFhY3RpdmVUcmFja1NpZDtcblxuICBjb25zdCBzdHlsZXMgPSBnZXRTcGVha2VyU2hvd2Nhc2VTdHlsZXMoKTtcbiAgY29uc3QgY29sb3JzID0gZ2V0U2hvd2Nhc2VDb2xvcnMoKTtcbiAgY29uc3QgaWNvbkJncyA9IGdldFNob3djYXNlSWNvbkJhY2tncm91bmRzKCk7XG5cbiAgY29uc3QgdG90YWxQYWdlcyA9IE1hdGguY2VpbChwYXJ0aWNpcGFudHMubGVuZ3RoIC8gU1BFQUtFUlNfUEVSX1BBR0UpO1xuICBjb25zdCBzdGFydEluZGV4ID0gKHBhZ2UgLSAxKSAqIFNQRUFLRVJTX1BFUl9QQUdFO1xuICBjb25zdCBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyBTUEVBS0VSU19QRVJfUEFHRSwgcGFydGljaXBhbnRzLmxlbmd0aCk7XG4gIGNvbnN0IGN1cnJlbnRQYWdlUGFydGljaXBhbnRzID0gcGFydGljaXBhbnRzLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KTtcblxuICBjb25zdCBwYWdpbmF0aW9uRm9vdGVyID0gcGFydGljaXBhbnRzLmxlbmd0aCA+IFNQRUFLRVJTX1BFUl9QQUdFICYmIChcbiAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5wYWdpbmF0aW9ufT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgaWQ9XCJzaG93Y2FzZS1wcmV2XCJcbiAgICAgICAgdmFsdWU9XCJQcmV2XCJcbiAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgIGRpc2FibGVkPXtwYWdlIDw9IDF9XG4gICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgaWNvbj17SUNPTlMuQkFDS31cbiAgICAgICAgaWNvblRyYW5zZm9ybT17c3R5bGVzLnByZXZJY29ufVxuICAgICAgICBpY29uQmFja2dyb3VuZD17eyBjb2xvcjogZ2V0UGFnaW5hdGlvbkNvbG9yKHBhZ2UgPD0gMSkgfX1cbiAgICAgICAgY29sb3I9e2dldFBhZ2luYXRpb25Db2xvcihwYWdlIDw9IDEpfVxuICAgICAgICBsYWJlbFRyYW5zZm9ybT17c3R5bGVzLnByZXZMYWJlbH1cbiAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5wYWdpbmF0aW9uQnV0dG9ufVxuICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gc2V0UGFnZShwYWdlIC0gMSl9XG4gICAgICAvPlxuICAgICAgPExhYmVsXG4gICAgICAgIHZhbHVlPXtgUGFnZSAke3BhZ2V9LyR7dG90YWxQYWdlc31gfVxuICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgIGNvbG9yPXtTSE9XQ0FTRV9QQUdFX0lORElDQVRPUl9DT0xPUn1cbiAgICAgIC8+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGlkPVwic2hvd2Nhc2UtbmV4dFwiXG4gICAgICAgIHZhbHVlPVwiPGI+TmV4dDwvYj5cIlxuICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICBpY29uUmlnaHQ9e0lDT05TLk5FWFR9XG4gICAgICAgIGljb25SaWdodFRyYW5zZm9ybT17c3R5bGVzLm5leHRJY29ufVxuICAgICAgICBsYWJlbFRyYW5zZm9ybT17c3R5bGVzLm5leHRMYWJlbH1cbiAgICAgICAgaWNvblJpZ2h0QmFja2dyb3VuZD17e1xuICAgICAgICAgIGNvbG9yOiBnZXRQYWdpbmF0aW9uQ29sb3IocGFnZSA+PSB0b3RhbFBhZ2VzKSxcbiAgICAgICAgfX1cbiAgICAgICAgY29sb3I9e2dldFBhZ2luYXRpb25Db2xvcihwYWdlID49IHRvdGFsUGFnZXMpfVxuICAgICAgICBkaXNhYmxlZD17cGFnZSA+PSB0b3RhbFBhZ2VzfVxuICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLnBhZ2luYXRpb25CdXR0b259XG4gICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiBzZXRQYWdlKHBhZ2UgKyAxKX1cbiAgICAgIC8+XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxNb2RhbFxuICAgICAgaWQ9XCJzaG93Y2FzZVwiXG4gICAgICB0aXRsZT1cIlNQRUFLRVIgU0hPV0NBU0VcIlxuICAgICAgdGl0bGVGb250U2l6ZT17MjB9XG4gICAgICBoZWFkZXJJY29uPXtpY29uQmdzLnNob3djYXNlfVxuICAgICAgaGVhZGVySWNvblNpemU9ezI0fVxuICAgICAgaGVhZGVyTWFyZ2luQm90dG9tPXsxNn1cbiAgICAgIGNvdW50ZXJUZXh0PXtgKCR7cGFydGljaXBhbnRzLmxlbmd0aH0gU3BlYWtlcnMpYH1cbiAgICAgIGNvdW50ZXJGb250U2l6ZT17MTR9XG4gICAgICB3aWR0aD17NjUwfVxuICAgICAgaGVpZ2h0PXs2NTB9XG4gICAgICBwYWRkaW5nPXsxNn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBmb290ZXI9e3BhZ2luYXRpb25Gb290ZXIgfHwgdW5kZWZpbmVkfVxuICAgID5cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy50b2dnbGVSb3d9XG4gICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBjb2xvcnMuc29mdEJsYWNrIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgdmFsdWU9XCJBdXRvbWF0aWMgU2hvd2Nhc2VcIlxuICAgICAgICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPExhYmVsXG4gICAgICAgICAgICAgIHZhbHVlPVwiU3BlYWtlcnMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGZlYXR1cmVkIHdoZW4gdGhleSBzcGVha1wiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxMH1cbiAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy5ncmF5fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGlkPVwic2hvd2Nhc2UtZGVmYXVsdC1zcGVha2VyXCJcbiAgICAgICAgICAgIHZhbHVlPXtpc0RlZmF1bHRBY3RpdmUgPyAnQWN0aXZlJyA6ICdUdXJuIE9uJ31cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGVmYXVsdEFjdGl2ZX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNH1cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICBpY29uPXtJQ09OUy5TVEFSfVxuICAgICAgICAgICAgaWNvblRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAuLi5zdHlsZXMuc3Rhckljb24sXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGlzRGVmYXVsdEFjdGl2ZSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBpY29uQmFja2dyb3VuZD17eyBjb2xvcjogY29sb3JzLndoaXRlIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAuLi5zdHlsZXMudG9nZ2xlQnV0dG9uLFxuICAgICAgICAgICAgICAuLi4oaXNEZWZhdWx0QWN0aXZlID8geyBib3JkZXJDb2xvcjogY29sb3JzLnRyYW5zcGFyZW50IH0gOiB7fSksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFpc0RlZmF1bHRBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBvblNldERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuXG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLmxpc3RDb250YWluZXJ9PlxuICAgICAgICAgIHtwYXJ0aWNpcGFudHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLm1lc3NhZ2VDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgICAgICB2YWx1ZT1cIk5vIGN1cnJlbnQgYWN0aXZlIHBhcnRpY2lwYW50cyBpbiB0aGUgQ2FzdFwiXG4gICAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMuZ3JheX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7Y3VycmVudFBhZ2VQYXJ0aWNpcGFudHMubWFwKHBhcnRpY2lwYW50ID0+IChcbiAgICAgICAgICAgIDxQYXJ0aWNpcGFudFJvd1xuICAgICAgICAgICAgICBrZXk9e3BhcnRpY2lwYW50LmlkZW50aXR5fVxuICAgICAgICAgICAgICBwYXJ0aWNpcGFudD17cGFydGljaXBhbnR9XG4gICAgICAgICAgICAgIGFjdGl2ZVRyYWNrU2lkPXthY3RpdmVUcmFja1NpZH1cbiAgICAgICAgICAgICAgaXNIb3ZlcmVkPXtob3ZlcmVkRHJvcGRvd24gPT09IHBhcnRpY2lwYW50LmlkZW50aXR5fVxuICAgICAgICAgICAgICBvblNlbGVjdFRyYWNrPXtvblNlbGVjdFRyYWNrfVxuICAgICAgICAgICAgICBvbkhvdmVyRW50ZXI9eygpID0+IHNldEhvdmVyZWREcm9wZG93bihwYXJ0aWNpcGFudC5pZGVudGl0eSl9XG4gICAgICAgICAgICAgIG9uSG92ZXJMZWF2ZT17KCkgPT4gc2V0SG92ZXJlZERyb3Bkb3duKHVuZGVmaW5lZCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgPC9VaUVudGl0eT5cbiAgICA8L01vZGFsPlxuICApO1xufVxuIl19
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
import ReactEcs from '@dcl/react-ecs';
|
|
2
|
-
import { DeepReadonlyObject, Entity, IEngine, PBVideoPlayer } from '@dcl/ecs';
|
|
3
|
-
import { State } from '../../types';
|
|
2
|
+
import type { DeepReadonlyObject, Entity, IEngine, PBVideoPlayer } from '@dcl/ecs';
|
|
3
|
+
import type { State } from '../../types';
|
|
4
|
+
import { type FlattenedTrack, type Participant } from '../api';
|
|
5
|
+
export declare const showcaseState: {
|
|
6
|
+
show: boolean;
|
|
7
|
+
participants: Participant[];
|
|
8
|
+
activeTrackSid: string | undefined;
|
|
9
|
+
onSelectTrack: ((track: FlattenedTrack) => void) | undefined;
|
|
10
|
+
onSetDefault: (() => void) | undefined;
|
|
11
|
+
onClose: (() => void) | undefined;
|
|
12
|
+
};
|
|
13
|
+
export declare const sharePresentationState: {
|
|
14
|
+
show: boolean;
|
|
15
|
+
onClose: (() => void) | undefined;
|
|
16
|
+
};
|
|
4
17
|
export declare function handleGetDclCastInfo(state: State): Promise<import("../api").DclCastResponse | null | undefined>;
|
|
5
|
-
declare const DclCast: ({ engine, state, entity, video, }: {
|
|
18
|
+
declare const DclCast: ({ engine, state, entity, video, playerAddress, }: {
|
|
6
19
|
engine: IEngine;
|
|
7
20
|
state: State;
|
|
8
21
|
entity: Entity;
|
|
9
22
|
video: DeepReadonlyObject<PBVideoPlayer> | undefined;
|
|
23
|
+
playerAddress: string | undefined;
|
|
10
24
|
}) => ReactEcs.JSX.Element;
|
|
11
25
|
export default DclCast;
|
|
@@ -1,16 +1,41 @@
|
|
|
1
1
|
import ReactEcs, { UiEntity } from '@dcl/react-ecs';
|
|
2
2
|
import { Color4 } from '@dcl/sdk/math';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import DclCastInfo from './DclCastInfo';
|
|
7
|
-
import { LoadingDots } from '../../Loading';
|
|
3
|
+
import { getComponents } from '../../../definitions';
|
|
4
|
+
import { getContentUrl } from '../../constants';
|
|
5
|
+
import { setInterval, clearInterval } from '../../utils';
|
|
8
6
|
import { Button } from '../../Button';
|
|
7
|
+
import { LoadingDots } from '../../Loading';
|
|
8
|
+
import { nextTickFunctions } from '../..';
|
|
9
|
+
import { LIVEKIT_STREAM_SRC } from '../LiveStream';
|
|
10
|
+
import { getDclCastInfo, getActiveStreams, groupTracksByParticipant, resetStreamKey, hasPresentationTrack, subscribeToPresentationTopic, consumePresentationMessages, ensurePresenterRole, } from '../api';
|
|
11
|
+
import { createVideoPlayerControls, isDclCast } from '../utils';
|
|
12
|
+
import DclCastInfo from './DclCastInfo';
|
|
13
|
+
import CompactDclCast from './CompactDclCast';
|
|
9
14
|
import { getDclCastStyles, getDclCastColors } from './styles';
|
|
10
|
-
import { getComponents } from '../../../definitions';
|
|
11
15
|
const ICONS = {
|
|
12
|
-
DCL_CAST_ICON
|
|
16
|
+
get DCL_CAST_ICON() {
|
|
17
|
+
return `${getContentUrl()}/admin_toolkit/assets/icons/video-control-dcl-cast.png`;
|
|
18
|
+
},
|
|
19
|
+
get CHEVRON_UP() {
|
|
20
|
+
return `${getContentUrl()}/admin_toolkit/assets/icons/chevron-up.png`;
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
export const showcaseState = {
|
|
24
|
+
show: false,
|
|
25
|
+
participants: [],
|
|
26
|
+
activeTrackSid: undefined,
|
|
27
|
+
onSelectTrack: undefined,
|
|
28
|
+
onSetDefault: undefined,
|
|
29
|
+
onClose: undefined,
|
|
30
|
+
};
|
|
31
|
+
export const sharePresentationState = {
|
|
32
|
+
show: false,
|
|
33
|
+
onClose: undefined,
|
|
13
34
|
};
|
|
35
|
+
let presentationSubscribed = false;
|
|
36
|
+
let consuming = false;
|
|
37
|
+
let presentationSystem = null;
|
|
38
|
+
let participantPollingSystem = null;
|
|
14
39
|
export async function handleGetDclCastInfo(state) {
|
|
15
40
|
const [error, data] = await getDclCastInfo();
|
|
16
41
|
if (error) {
|
|
@@ -24,22 +49,119 @@ export async function handleGetDclCastInfo(state) {
|
|
|
24
49
|
}
|
|
25
50
|
}
|
|
26
51
|
}
|
|
27
|
-
|
|
52
|
+
function startPresentationSystem(engine, state) {
|
|
53
|
+
if (presentationSystem)
|
|
54
|
+
return;
|
|
55
|
+
presentationSubscribed = true;
|
|
56
|
+
subscribeToPresentationTopic();
|
|
57
|
+
const system = () => {
|
|
58
|
+
if (consuming)
|
|
59
|
+
return;
|
|
60
|
+
consuming = true;
|
|
61
|
+
consumePresentationMessages()
|
|
62
|
+
.then(latestState => {
|
|
63
|
+
if (latestState === 'stopped') {
|
|
64
|
+
state.videoControl.presentationState = undefined;
|
|
65
|
+
}
|
|
66
|
+
else if (latestState) {
|
|
67
|
+
state.videoControl.presentationState = latestState;
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
.catch(() => {
|
|
71
|
+
console.log('[DclCast] Failed to consume presentation messages');
|
|
72
|
+
})
|
|
73
|
+
.finally(() => {
|
|
74
|
+
consuming = false;
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
engine.addSystem(system);
|
|
78
|
+
presentationSystem = system;
|
|
79
|
+
}
|
|
80
|
+
function stopPresentationSystem(engine, state) {
|
|
81
|
+
if (presentationSystem) {
|
|
82
|
+
engine.removeSystem(presentationSystem);
|
|
83
|
+
presentationSystem = null;
|
|
84
|
+
}
|
|
85
|
+
state.videoControl.presentationState = undefined;
|
|
86
|
+
presentationSubscribed = false;
|
|
87
|
+
}
|
|
88
|
+
function startParticipantPolling(engine, state) {
|
|
89
|
+
if (participantPollingSystem)
|
|
90
|
+
return;
|
|
91
|
+
const poll = async () => {
|
|
92
|
+
const tracks = await getActiveStreams();
|
|
93
|
+
if (!tracks)
|
|
94
|
+
return;
|
|
95
|
+
showcaseState.participants = groupTracksByParticipant(tracks);
|
|
96
|
+
const hasPresentation = hasPresentationTrack(tracks);
|
|
97
|
+
if (hasPresentation && !presentationSubscribed) {
|
|
98
|
+
startPresentationSystem(engine, state);
|
|
99
|
+
}
|
|
100
|
+
else if (!hasPresentation && presentationSubscribed) {
|
|
101
|
+
stopPresentationSystem(engine, state);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
poll();
|
|
105
|
+
participantPollingSystem = setInterval(engine, poll, 5000);
|
|
106
|
+
}
|
|
107
|
+
function stopParticipantPolling(engine, state) {
|
|
108
|
+
if (participantPollingSystem) {
|
|
109
|
+
clearInterval(engine, participantPollingSystem);
|
|
110
|
+
participantPollingSystem = null;
|
|
111
|
+
}
|
|
112
|
+
stopPresentationSystem(engine, state);
|
|
113
|
+
}
|
|
114
|
+
const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
|
|
28
115
|
const { VideoControlState } = getComponents(engine);
|
|
116
|
+
const controls = createVideoPlayerControls(entity, engine);
|
|
29
117
|
const styles = getDclCastStyles();
|
|
30
118
|
const colors = getDclCastColors();
|
|
31
119
|
const [isLoading, setIsLoading] = ReactEcs.useState(false);
|
|
32
120
|
const [error, setError] = ReactEcs.useState(false);
|
|
121
|
+
const onShowShowcaseModal = async () => {
|
|
122
|
+
const latestTracks = await getActiveStreams();
|
|
123
|
+
if (!latestTracks)
|
|
124
|
+
return;
|
|
125
|
+
console.log('[DclCast] Active tracks:', JSON.stringify(latestTracks, null, 2));
|
|
126
|
+
const closeModal = () => {
|
|
127
|
+
showcaseState.show = false;
|
|
128
|
+
};
|
|
129
|
+
showcaseState.participants = groupTracksByParticipant(latestTracks);
|
|
130
|
+
showcaseState.onSelectTrack = (track) => {
|
|
131
|
+
controls.setSource(track.sid);
|
|
132
|
+
showcaseState.activeTrackSid = track.sid;
|
|
133
|
+
state.videoControl.selectedStream = 'dcl-cast';
|
|
134
|
+
};
|
|
135
|
+
showcaseState.onSetDefault = () => {
|
|
136
|
+
controls.setSource(LIVEKIT_STREAM_SRC);
|
|
137
|
+
showcaseState.activeTrackSid = undefined;
|
|
138
|
+
state.videoControl.selectedStream = 'dcl-cast';
|
|
139
|
+
};
|
|
140
|
+
showcaseState.onClose = closeModal;
|
|
141
|
+
nextTickFunctions.push(() => {
|
|
142
|
+
showcaseState.show = true;
|
|
143
|
+
});
|
|
144
|
+
};
|
|
33
145
|
const fetchDclCastInfo = async () => {
|
|
34
|
-
console.log('fetching DCL cast info...');
|
|
35
146
|
setIsLoading(true);
|
|
36
147
|
setError(false);
|
|
37
148
|
const result = await handleGetDclCastInfo(state);
|
|
38
149
|
if (!result) {
|
|
39
150
|
setError(true);
|
|
40
151
|
}
|
|
152
|
+
else if (video?.src?.startsWith('livekit-video://') && !state.videoControl.selectedStream) {
|
|
153
|
+
state.videoControl.selectedStream = 'dcl-cast';
|
|
154
|
+
}
|
|
41
155
|
setIsLoading(false);
|
|
42
156
|
};
|
|
157
|
+
const onSharePresentation = () => {
|
|
158
|
+
sharePresentationState.onClose = () => {
|
|
159
|
+
sharePresentationState.show = false;
|
|
160
|
+
};
|
|
161
|
+
nextTickFunctions.push(() => {
|
|
162
|
+
sharePresentationState.show = true;
|
|
163
|
+
});
|
|
164
|
+
};
|
|
43
165
|
const handleResetRoomId = async () => {
|
|
44
166
|
setIsLoading(true);
|
|
45
167
|
const [error, data] = await resetStreamKey();
|
|
@@ -55,33 +177,84 @@ const DclCast = ({ engine, state, entity, video, }) => {
|
|
|
55
177
|
};
|
|
56
178
|
ReactEcs.useEffect(() => {
|
|
57
179
|
fetchDclCastInfo();
|
|
180
|
+
if (playerAddress) {
|
|
181
|
+
ensurePresenterRole(playerAddress);
|
|
182
|
+
}
|
|
58
183
|
}, []);
|
|
184
|
+
const videoSrc = video?.src;
|
|
185
|
+
ReactEcs.useEffect(() => {
|
|
186
|
+
if (videoSrc?.startsWith('livekit-video://') && !state.videoControl.selectedStream) {
|
|
187
|
+
state.videoControl.selectedStream = 'dcl-cast';
|
|
188
|
+
}
|
|
189
|
+
}, [videoSrc]);
|
|
190
|
+
const isCastActive = !!(video?.src && isDclCast(video.src));
|
|
191
|
+
ReactEcs.useEffect(() => {
|
|
192
|
+
if (isCastActive) {
|
|
193
|
+
startParticipantPolling(engine, state);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
stopParticipantPolling(engine, state);
|
|
197
|
+
}
|
|
198
|
+
}, [isCastActive]);
|
|
199
|
+
ReactEcs.useEffect(() => {
|
|
200
|
+
if (state.videoControl.presentationState) {
|
|
201
|
+
state.videoControl.isMinimized = true;
|
|
202
|
+
}
|
|
203
|
+
}, [!!state.videoControl.presentationState]);
|
|
204
|
+
const isMinimized = state.videoControl.isMinimized;
|
|
59
205
|
return (ReactEcs.createElement(UiEntity, { uiTransform: styles.fullContainer },
|
|
60
|
-
ReactEcs.createElement(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
206
|
+
ReactEcs.createElement(UiEntity, { uiTransform: { display: isMinimized ? 'flex' : 'none', width: '100%' } },
|
|
207
|
+
ReactEcs.createElement(CompactDclCast, { engine: engine, state: state, entity: entity, video: video, onShowShowcaseModal: onShowShowcaseModal })),
|
|
208
|
+
ReactEcs.createElement(UiEntity, { uiTransform: {
|
|
209
|
+
display: isMinimized ? 'none' : 'flex',
|
|
210
|
+
flexDirection: 'column',
|
|
211
|
+
width: '100%',
|
|
212
|
+
} },
|
|
213
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.rowCenterSpaceBetween },
|
|
214
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.rowCenter },
|
|
215
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.headerIcon, uiBackground: {
|
|
216
|
+
textureMode: 'stretch',
|
|
217
|
+
texture: { src: ICONS.DCL_CAST_ICON },
|
|
218
|
+
} }),
|
|
219
|
+
ReactEcs.createElement(UiEntity, { uiText: {
|
|
220
|
+
value: '<b>DCL Cast</b>',
|
|
221
|
+
fontSize: 24,
|
|
222
|
+
color: Color4.White(),
|
|
223
|
+
textAlign: 'middle-left',
|
|
224
|
+
}, uiTransform: { margin: { left: 10 } } })),
|
|
225
|
+
ReactEcs.createElement(UiEntity, { onMouseDown: () => {
|
|
226
|
+
state.videoControl.isMinimized = true;
|
|
227
|
+
}, uiTransform: styles.chevronButton, uiBackground: {
|
|
228
|
+
textureMode: 'stretch',
|
|
229
|
+
color: Color4.White(),
|
|
230
|
+
texture: {
|
|
231
|
+
src: ICONS.CHEVRON_UP,
|
|
232
|
+
},
|
|
233
|
+
} })),
|
|
234
|
+
ReactEcs.createElement(UiEntity, { uiTransform: styles.fullWidthWithBottomMargin },
|
|
235
|
+
ReactEcs.createElement(UiEntity, { uiText: {
|
|
236
|
+
value: 'Use a browser-based DCL Cast room to easily stream camera and screen feed to a screen in your scene.',
|
|
237
|
+
fontSize: 16,
|
|
238
|
+
color: Color4.fromHexString('#A09BA8'),
|
|
239
|
+
textAlign: 'top-left',
|
|
240
|
+
textWrap: 'wrap',
|
|
241
|
+
}, uiTransform: styles.marginBottomSmall })),
|
|
242
|
+
isLoading && (ReactEcs.createElement(LoadingDots, { uiTransform: styles.loadingContainer, engine: engine })),
|
|
243
|
+
error && (ReactEcs.createElement(UiEntity, { uiTransform: styles.columnCentered },
|
|
244
|
+
ReactEcs.createElement(UiEntity, { uiText: {
|
|
245
|
+
value: '<b>Failed to fetch DCL Cast info</b>',
|
|
246
|
+
fontSize: 16,
|
|
247
|
+
color: Color4.White(),
|
|
248
|
+
}, uiTransform: styles.marginBottomSmall }),
|
|
249
|
+
ReactEcs.createElement(UiEntity, { uiText: {
|
|
250
|
+
value: 'Please retry.',
|
|
251
|
+
fontSize: 16,
|
|
252
|
+
color: Color4.Gray(),
|
|
253
|
+
} }),
|
|
254
|
+
ReactEcs.createElement(Button, { id: "dcl_cast_retry", value: "<b>Retry</b>", variant: "secondary", fontSize: 16, color: colors.white, onMouseDown: () => {
|
|
255
|
+
handleGetDclCastInfo(state);
|
|
256
|
+
}, uiTransform: styles.retryButton }))),
|
|
257
|
+
!isLoading && !error && (ReactEcs.createElement(DclCastInfo, { state: state, entity: entity, engine: engine, video: video, onResetRoomId: handleResetRoomId, onShowShowcaseModal: onShowShowcaseModal, onSharePresentation: onSharePresentation })))));
|
|
85
258
|
};
|
|
86
259
|
export default DclCast;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVyRCxNQUFNLEtBQUssR0FBRztJQUNaLGFBQWEsRUFBRSxHQUFHLFdBQVcsd0RBQXdEO0NBQ3RGLENBQUM7QUFFRixNQUFNLENBQUMsS0FBSyxVQUFVLG9CQUFvQixDQUFDLEtBQVk7SUFDckQsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxNQUFNLGNBQWMsRUFBRSxDQUFDO0lBQzdDLElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsS0FBSyxDQUFD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QUFDLGNBQWM7WUFDMUMsdUJBQUMsUUFBUSxJQUNQLE1BQU0sRUFBRTtvQkFDTixLQUFLLEVBQUUsc0NBQXNDO29CQUM3QyxRQUFRLEVBQUUsRUFBRTtvQkFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRTtpQkFDdEIsRUFDRCxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FDdEM7WUFDRix1QkFBQyxRQUFRLElBQ1AsTUFBTSxFQUFFO29CQUNOLEtBQUssRUFBRSxlQUFlO29CQUN0QixRQUFRLEVBQUUsRUFBRTtvQkFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRTtpQkFDckIsR0FDRDtZQUNGLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsZ0JBQWdCLEVBQ25CLEtBQUssRUFBQyxjQUFjLEVBQ3BCLE9BQU8sRUFBQyxXQUFXLEVBQ25CLFFBQVEsRUFBRSxFQUFFLEVBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQ25CLFdBQVcsRUFBRSxHQUFHLEVBQUU7b0JBQ2hCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixDQUFDLEVBQ0QsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEdBQy9CLENBQ08sQ0FDWjtRQUVBLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQ3ZCLHVCQUFDLFdBQVcsSUFDVixLQUFLLEVBQUUsS0FBSyxFQUNaLE1BQU0sRUFBRSxNQUFNLEVBQ2QsTUFBTSxFQUFFLE1BQU0sRUFDZCxLQUFLLEVBQUUsS0FBSyxFQUNaLGFBQWEsRUFBRSxpQkFBaUIsR0FDaEMsQ0FDSCxDQUNRLENBQ1osQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0RWNzLCB7IFVpRW50aXR5IH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuaW1wb3J0IHsgRGVlcFJlYWRvbmx5T2JqZWN0LCBFbnRpdHksIElFbmdpbmUsIFBCVmlkZW9QbGF5ZXIgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJztcblxuaW1wb3J0IHsgZ2V0RGNsQ2FzdEluZm8sIHJlc2V0U3RyZWFtS2V5IH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IENPTlRFTlRfVVJMIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBIZWFkZXIgfSBmcm9tICcuLi8uLi9IZWFkZXInO1xuaW1wb3J0IERjbENhc3RJbmZvIGZyb20gJy4vRGNsQ2FzdEluZm8nO1xuaW1wb3J0IHsgTG9hZGluZ0RvdHMgfSBmcm9tICcuLi8uLi9Mb2FkaW5nJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBnZXREY2xDYXN0U3R5bGVzLCBnZXREY2xDYXN0Q29sb3JzIH0gZnJvbSAnLi9zdHlsZXMnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4uLy4uLy4uL2RlZmluaXRpb25zJztcblxuY29uc3QgSUNPTlMgPSB7XG4gIERDTF9DQVNUX0lDT046IGAke0NPTlRFTlRfVVJMfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLWRjbC1jYXN0LnBuZ2AsXG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaGFuZGxlR2V0RGNsQ2FzdEluZm8oc3RhdGU6IFN0YXRlKSB7XG4gIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCBnZXREY2xDYXN0SW5mbygpO1xuICBpZiAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgc3RhdGUudmlkZW9Db250cm9sLmRjbENhc3QgPSBkYXRhO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IERjbENhc3QgPSAoe1xuICBlbmdpbmUsXG4gIHN0YXRlLFxuICBlbnRpdHksXG4gIHZpZGVvLFxufToge1xuICBlbmdpbmU6IElFbmdpbmU7XG4gIHN0YXRlOiBTdGF0ZTtcbiAgZW50aXR5OiBFbnRpdHk7XG4gIHZpZGVvOiBEZWVwUmVhZG9ubHlPYmplY3Q8UEJWaWRlb1BsYXllcj4gfCB1bmRlZmluZWQ7XG59KSA9PiB7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcbiAgY29uc3Qgc3R5bGVzID0gZ2V0RGNsQ2FzdFN0eWxlcygpO1xuICBjb25zdCBjb2xvcnMgPSBnZXREY2xDYXN0Q29sb3JzKCk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGZldGNoRGNsQ2FzdEluZm8gPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ2ZldGNoaW5nIERDTCBjYXN0IGluZm8uLi4nKTtcbiAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgc2V0RXJyb3IoZmFsc2UpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaGFuZGxlR2V0RGNsQ2FzdEluZm8oc3RhdGUpO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHNldEVycm9yKHRydWUpO1xuICAgIH1cblxuICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVzZXRSb29tSWQgPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCByZXNldFN0cmVhbUtleSgpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIHNldEVycm9yKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2aWRlb0NvbnRyb2wgPSBWaWRlb0NvbnRyb2xTdGF0ZS5nZXRNdXRhYmxlKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5KTtcbiAgICAgIHZpZGVvQ29udHJvbC5lbmRzQXQgPSBkYXRhPy5lbmRzQXQ7XG4gICAgICBmZXRjaERjbENhc3RJbmZvKCk7XG4gICAgfVxuICB9O1xuXG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEY2xDYXN0SW5mbygpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5mdWxsQ29udGFpbmVyfT5cbiAgICAgIDxIZWFkZXJcbiAgICAgICAgaWNvblNyYz17SUNPTlMuRENMX0NBU1RfSUNPTn1cbiAgICAgICAgdGl0bGU9XCJEQ0wgQ2FzdFwiXG4gICAgICAvPlxuICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbFdpZHRoV2l0aEJvdHRvbU1hcmdpbn0+XG4gICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgIHVpVGV4dD17e1xuICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICdVc2UgYSBicm93c2VyLWJhc2VkIERDTCBDYXN0IHJvb20gdG8gZWFzaWx5IHN0cmVhbSBjYW1lcmEgYW5kIHNjcmVlbiBmZWVkIHRvIGEgc2NyZWVuIGluIHlvdXIgc2NlbmUuJyxcbiAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0EwOUJBOCcpLFxuXG4gICAgICAgICAgICB0ZXh0QWxpZ246ICd0b3AtbGVmdCcsXG4gICAgICAgICAgICB0ZXh0V3JhcDogJ3dyYXAnLFxuICAgICAgICAgIH19XG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5tYXJnaW5Cb3R0b21TbWFsbH1cbiAgICAgICAgLz5cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgICB7aXNMb2FkaW5nICYmIChcbiAgICAgICAgPExvYWRpbmdEb3RzXG4gICAgICAgICAgdWlUcmFuc2Zvcm09e3sgbWluSGVpZ2h0OiA0MDAgfX1cbiAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7ZXJyb3IgJiYgKFxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5jb2x1bW5DZW50ZXJlZH0+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRleHQ9e3tcbiAgICAgICAgICAgICAgdmFsdWU6ICc8Yj5GYWlsZWQgdG8gZmV0Y2ggRENMIENhc3QgaW5mbzwvYj4nLFxuICAgICAgICAgICAgICBmb250U2l6ZTogMTYsXG4gICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgYm90dG9tOiA4IH0gfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgIHZhbHVlOiAnUGxlYXNlIHJldHJ5LicsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5HcmF5KCksXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJkY2xfY2FzdF9yZXRyeVwiXG4gICAgICAgICAgICB2YWx1ZT1cIjxiPlJldHJ5PC9iPlwiXG4gICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIGNvbG9yPXtjb2xvcnMud2hpdGV9XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVHZXREY2xDYXN0SW5mbyhzdGF0ZSk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5yZXRyeUJ1dHRvbn1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgKX1cblxuICAgICAgeyFpc0xvYWRpbmcgJiYgIWVycm9yICYmIChcbiAgICAgICAgPERjbENhc3RJbmZvXG4gICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgIGVuZ2luZT17ZW5naW5lfVxuICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICBvblJlc2V0Um9vbUlkPXtoYW5kbGVSZXNldFJvb21JZH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERjbENhc3Q7XG4iXX0=
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUMzQixtQkFBbUIsR0FHcEIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoRSxPQUFPLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlELE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSxhQUFhO1FBQ2YsT0FBTyxHQUFHLGFB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QUUsTUFBTSxFQUNkLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLEtBQUssRUFDWixhQUFhLEVBQUUsaUJBQWlCLEVBQ2hDLG1CQUFtQixFQUFFLG1CQUFtQixFQUN4QyxtQkFBbUIsRUFBRSxtQkFBbUIsR0FDeEMsQ0FDSCxDQUNRLENBQ0YsQ0FDWixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsZUFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHkgfSBmcm9tICdAZGNsL3JlYWN0LWVjcyc7XG5pbXBvcnQgdHlwZSB7IERlZXBSZWFkb25seU9iamVjdCwgRW50aXR5LCBJRW5naW5lLCBQQlZpZGVvUGxheWVyIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgZ2V0Q29udGVudFVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgc2V0SW50ZXJ2YWwsIGNsZWFySW50ZXJ2YWwgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgTG9hZGluZ0RvdHMgfSBmcm9tICcuLi8uLi9Mb2FkaW5nJztcbmltcG9ydCB7IG5leHRUaWNrRnVuY3Rpb25zIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vTGl2ZVN0cmVhbSc7XG5pbXBvcnQge1xuICBnZXREY2xDYXN0SW5mbyxcbiAgZ2V0QWN0aXZlU3RyZWFtcyxcbiAgZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50LFxuICByZXNldFN0cmVhbUtleSxcbiAgaGFzUHJlc2VudGF0aW9uVHJhY2ssXG4gIHN1YnNjcmliZVRvUHJlc2VudGF0aW9uVG9waWMsXG4gIGNvbnN1bWVQcmVzZW50YXRpb25NZXNzYWdlcyxcbiAgZW5zdXJlUHJlc2VudGVyUm9sZSxcbiAgdHlwZSBGbGF0dGVuZWRUcmFjayxcbiAgdHlwZSBQYXJ0aWNpcGFudCxcbn0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMsIGlzRGNsQ2FzdCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEY2xDYXN0SW5mbyBmcm9tICcuL0RjbENhc3RJbmZvJztcbmltcG9ydCBDb21wYWN0RGNsQ2FzdCBmcm9tICcuL0NvbXBhY3REY2xDYXN0JztcbmltcG9ydCB7IGdldERjbENhc3RTdHlsZXMsIGdldERjbENhc3RDb2xvcnMgfSBmcm9tICcuL3N0eWxlcyc7XG5cbmNvbnN0IElDT05TID0ge1xuICBnZXQgRENMX0NBU1RfSUNPTigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLWRjbC1jYXN0LnBuZ2A7XG4gIH0sXG4gIGdldCBDSEVWUk9OX1VQKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2NoZXZyb24tdXAucG5nYDtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Y2FzZVN0YXRlOiB7XG4gIHNob3c6IGJvb2xlYW47XG4gIHBhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgYWN0aXZlVHJhY2tTaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb25TZWxlY3RUcmFjazogKCh0cmFjazogRmxhdHRlbmVkVHJhY2spID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBvblNldERlZmF1bHQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgb25DbG9zZTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xufSA9IHtcbiAgc2hvdzogZmFsc2UsXG4gIHBhcnRpY2lwYW50czogW10sXG4gIGFjdGl2ZVRyYWNrU2lkOiB1bmRlZmluZWQsXG4gIG9uU2VsZWN0VHJhY2s6IHVuZGVmaW5lZCxcbiAgb25TZXREZWZhdWx0OiB1bmRlZmluZWQsXG4gIG9uQ2xvc2U6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBjb25zdCBzaGFyZVByZXNlbnRhdGlvblN0YXRlOiB7XG4gIHNob3c6IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbn0gPSB7XG4gIHNob3c6IGZhbHNlLFxuICBvbkNsb3NlOiB1bmRlZmluZWQsXG59O1xuXG5sZXQgcHJlc2VudGF0aW9uU3Vic2NyaWJlZCA9IGZhbHNlO1xubGV0IGNvbnN1bWluZyA9IGZhbHNlO1xubGV0IHByZXNlbnRhdGlvblN5c3RlbTogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5sZXQgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtOiAoKGR0OiBudW1iZXIpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVHZXREY2xDYXN0SW5mbyhzdGF0ZTogU3RhdGUpIHtcbiAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IGdldERjbENhc3RJbmZvKCk7XG4gIGlmIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2Uge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdCA9IGRhdGE7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lOiBJRW5naW5lLCBzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgaWYgKHByZXNlbnRhdGlvblN5c3RlbSkgcmV0dXJuOyAvLyBBbHJlYWR5IHJ1bm5pbmdcbiAgcHJlc2VudGF0aW9uU3Vic2NyaWJlZCA9IHRydWU7XG4gIHN1YnNjcmliZVRvUHJlc2VudGF0aW9uVG9waWMoKTtcblxuICBjb25zdCBzeXN0ZW0gPSAoKSA9PiB7XG4gICAgaWYgKGNvbnN1bWluZykgcmV0dXJuOyAvLyBQcmV2ZW50IGNvbmN1cnJlbnQgcmVxdWVzdHNcbiAgICBjb25zdW1pbmcgPSB0cnVlO1xuICAgIGNvbnN1bWVQcmVzZW50YXRpb25NZXNzYWdlcygpXG4gICAgICAudGhlbihsYXRlc3RTdGF0ZSA9PiB7XG4gICAgICAgIGlmIChsYXRlc3RTdGF0ZSA9PT0gJ3N0b3BwZWQnKSB7XG4gICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKGxhdGVzdFN0YXRlKSB7XG4gICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gbGF0ZXN0U3RhdGU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUg4oCUIHdpbGwgcmV0cnkgbmV4dCBmcmFtZVxuICAgICAgICBjb25zb2xlLmxvZygnW0RjbENhc3RdIEZhaWxlZCB0byBjb25zdW1lIHByZXNlbnRhdGlvbiBtZXNzYWdlcycpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgY29uc3VtaW5nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfTtcblxuICBlbmdpbmUuYWRkU3lzdGVtKHN5c3RlbSk7XG4gIHByZXNlbnRhdGlvblN5c3RlbSA9IHN5c3RlbTtcbn1cblxuZnVuY3Rpb24gc3RvcFByZXNlbnRhdGlvblN5c3RlbShlbmdpbmU6IElFbmdpbmUsIHN0YXRlOiBTdGF0ZSk6IHZvaWQge1xuICBpZiAocHJlc2VudGF0aW9uU3lzdGVtKSB7XG4gICAgZW5naW5lLnJlbW92ZVN5c3RlbShwcmVzZW50YXRpb25TeXN0ZW0pO1xuICAgIHByZXNlbnRhdGlvblN5c3RlbSA9IG51bGw7XG4gIH1cbiAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gdW5kZWZpbmVkO1xuICBwcmVzZW50YXRpb25TdWJzY3JpYmVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0UGFydGljaXBhbnRQb2xsaW5nKGVuZ2luZTogSUVuZ2luZSwgc3RhdGU6IFN0YXRlKTogdm9pZCB7XG4gIGlmIChwYXJ0aWNpcGFudFBvbGxpbmdTeXN0ZW0pIHJldHVybjsgLy8gQWxyZWFkeSBwb2xsaW5nXG5cbiAgY29uc3QgcG9sbCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0cmFja3MgPSBhd2FpdCBnZXRBY3RpdmVTdHJlYW1zKCk7XG4gICAgaWYgKCF0cmFja3MpIHJldHVybjtcblxuICAgIC8vIERlYnVnOiBsb2cgdHJhY2tzIG9uIGVhY2ggcG9sbCB0byByZXZpZXcgcHJlc2VudGF0aW9uIGJvdCBtZXRhZGF0YVxuICAgIC8vIGNvbnNvbGUubG9nKCdbRGNsQ2FzdF0gUG9sbCB0cmFja3M6JywgSlNPTi5zdHJpbmdpZnkodHJhY2tzLCBudWxsLCAyKSk7XG5cbiAgICAvLyBLZWVwIHNob3djYXNlIG1vZGFsIGRhdGEgZnJlc2hcbiAgICBzaG93Y2FzZVN0YXRlLnBhcnRpY2lwYW50cyA9IGdyb3VwVHJhY2tzQnlQYXJ0aWNpcGFudCh0cmFja3MpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIHByZXNlbnRhdGlvbiB0cmFja1xuICAgIGNvbnN0IGhhc1ByZXNlbnRhdGlvbiA9IGhhc1ByZXNlbnRhdGlvblRyYWNrKHRyYWNrcyk7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgW0RjbENhc3RdIFByZXNlbnRhdGlvbiB0cmFjayAke2hhc1ByZXNlbnRhdGlvbiA/ICdmb3VuZCcgOiAnbm90IGZvdW5kJ30gaW4gcG9sbGApO1xuXG4gICAgaWYgKGhhc1ByZXNlbnRhdGlvbiAmJiAhcHJlc2VudGF0aW9uU3Vic2NyaWJlZCkge1xuICAgICAgc3RhcnRQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIGlmICghaGFzUHJlc2VudGF0aW9uICYmIHByZXNlbnRhdGlvblN1YnNjcmliZWQpIHtcbiAgICAgIHN0b3BQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lLCBzdGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIFBvbGwgaW1tZWRpYXRlbHksIHRoZW4gZXZlcnkgNSBzZWNvbmRzXG4gIHBvbGwoKTtcbiAgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtID0gc2V0SW50ZXJ2YWwoZW5naW5lLCBwb2xsLCA1MDAwKTtcbn1cblxuZnVuY3Rpb24gc3RvcFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmU6IElFbmdpbmUsIHN0YXRlOiBTdGF0ZSk6IHZvaWQge1xuICBpZiAocGFydGljaXBhbnRQb2xsaW5nU3lzdGVtKSB7XG4gICAgY2xlYXJJbnRlcnZhbChlbmdpbmUsIHBhcnRpY2lwYW50UG9sbGluZ1N5c3RlbSk7XG4gICAgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtID0gbnVsbDtcbiAgfVxuICBzdG9wUHJlc2VudGF0aW9uU3lzdGVtKGVuZ2luZSwgc3RhdGUpO1xufVxuXG5jb25zdCBEY2xDYXN0ID0gKHtcbiAgZW5naW5lLFxuICBzdGF0ZSxcbiAgZW50aXR5LFxuICB2aWRlbyxcbiAgcGxheWVyQWRkcmVzcyxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIGVudGl0eTogRW50aXR5O1xuICB2aWRlbzogRGVlcFJlYWRvbmx5T2JqZWN0PFBCVmlkZW9QbGF5ZXI+IHwgdW5kZWZpbmVkO1xuICBwbGF5ZXJBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59KSA9PiB7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcbiAgY29uc3QgY29udHJvbHMgPSBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKGVudGl0eSwgZW5naW5lKTtcbiAgY29uc3Qgc3R5bGVzID0gZ2V0RGNsQ2FzdFN0eWxlcygpO1xuICBjb25zdCBjb2xvcnMgPSBnZXREY2xDYXN0Q29sb3JzKCk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uU2hvd1Nob3djYXNlTW9kYWwgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbGF0ZXN0VHJhY2tzID0gYXdhaXQgZ2V0QWN0aXZlU3RyZWFtcygpO1xuICAgIGlmICghbGF0ZXN0VHJhY2tzKSByZXR1cm47XG5cbiAgICAvLyBEZWJ1ZzogbG9nIGFsbCB0cmFjayBkYXRhIHRvIHJldmlldyBwcmVzZW50YXRpb24gYm90IG1ldGFkYXRhXG4gICAgY29uc29sZS5sb2coJ1tEY2xDYXN0XSBBY3RpdmUgdHJhY2tzOicsIEpTT04uc3RyaW5naWZ5KGxhdGVzdFRyYWNrcywgbnVsbCwgMikpO1xuXG4gICAgY29uc3QgY2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIHNob3djYXNlU3RhdGUuc2hvdyA9IGZhbHNlO1xuICAgIH07XG5cbiAgICBzaG93Y2FzZVN0YXRlLnBhcnRpY2lwYW50cyA9IGdyb3VwVHJhY2tzQnlQYXJ0aWNpcGFudChsYXRlc3RUcmFja3MpO1xuXG4gICAgc2hvd2Nhc2VTdGF0ZS5vblNlbGVjdFRyYWNrID0gKHRyYWNrOiBGbGF0dGVuZWRUcmFjaykgPT4ge1xuICAgICAgY29udHJvbHMuc2V0U291cmNlKHRyYWNrLnNpZCk7XG4gICAgICBzaG93Y2FzZVN0YXRlLmFjdGl2ZVRyYWNrU2lkID0gdHJhY2suc2lkO1xuICAgICAgc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtID0gJ2RjbC1jYXN0JztcbiAgICB9O1xuXG4gICAgc2hvd2Nhc2VTdGF0ZS5vblNldERlZmF1bHQgPSAoKSA9PiB7XG4gICAgICBjb250cm9scy5zZXRTb3VyY2UoTElWRUtJVF9TVFJFQU1fU1JDKTtcbiAgICAgIHNob3djYXNlU3RhdGUuYWN0aXZlVHJhY2tTaWQgPSB1bmRlZmluZWQ7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH07XG5cbiAgICBzaG93Y2FzZVN0YXRlLm9uQ2xvc2UgPSBjbG9zZU1vZGFsO1xuXG4gICAgbmV4dFRpY2tGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICBzaG93Y2FzZVN0YXRlLnNob3cgPSB0cnVlO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRGNsQ2FzdEluZm8gPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgIHNldEVycm9yKGZhbHNlKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZUdldERjbENhc3RJbmZvKHN0YXRlKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICBzZXRFcnJvcih0cnVlKTtcbiAgICB9IGVsc2UgaWYgKHZpZGVvPy5zcmM/LnN0YXJ0c1dpdGgoJ2xpdmVraXQtdmlkZW86Ly8nKSAmJiAhc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH1cblxuICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3Qgb25TaGFyZVByZXNlbnRhdGlvbiA9ICgpID0+IHtcbiAgICBzaGFyZVByZXNlbnRhdGlvblN0YXRlLm9uQ2xvc2UgPSAoKSA9PiB7XG4gICAgICBzaGFyZVByZXNlbnRhdGlvblN0YXRlLnNob3cgPSBmYWxzZTtcbiAgICB9O1xuICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgc2hhcmVQcmVzZW50YXRpb25TdGF0ZS5zaG93ID0gdHJ1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZXNldFJvb21JZCA9IGFzeW5jICgpID0+IHtcbiAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IHJlc2V0U3RyZWFtS2V5KCk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0RXJyb3IodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZpZGVvQ29udHJvbCA9IFZpZGVvQ29udHJvbFN0YXRlLmdldE11dGFibGUoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpO1xuICAgICAgdmlkZW9Db250cm9sLmVuZHNBdCA9IGRhdGE/LmVuZHNBdDtcbiAgICAgIGZldGNoRGNsQ2FzdEluZm8oKTtcbiAgICB9XG4gIH07XG5cbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERjbENhc3RJbmZvKCk7XG4gICAgaWYgKHBsYXllckFkZHJlc3MpIHtcbiAgICAgIGVuc3VyZVByZXNlbnRlclJvbGUocGxheWVyQWRkcmVzcyk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgLy8gU3luYyBzZWxlY3RlZFN0cmVhbSB3aGVuIHZpZGVvLnNyYyBhcnJpdmVzIGFmdGVyIG1vdW50IChsYXRlLWpvaW5lciBmaXgpXG4gIGNvbnN0IHZpZGVvU3JjID0gdmlkZW8/LnNyYztcbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmlkZW9TcmM/LnN0YXJ0c1dpdGgoJ2xpdmVraXQtdmlkZW86Ly8nKSAmJiAhc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH1cbiAgfSwgW3ZpZGVvU3JjXSk7XG5cbiAgY29uc3QgaXNDYXN0QWN0aXZlID0gISEodmlkZW8/LnNyYyAmJiBpc0RjbENhc3QodmlkZW8uc3JjKSk7XG5cbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNDYXN0QWN0aXZlKSB7XG4gICAgICBzdGFydFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmUsIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RvcFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmUsIHN0YXRlKTtcbiAgICB9XG4gIH0sIFtpc0Nhc3RBY3RpdmVdKTtcblxuICAvLyBBdXRvLW1pbmltaXplIHdoZW4gYSBwcmVzZW50YXRpb24gc3RhcnRzIHNvIHRoZSBjb21wYWN0IHZpZXdcbiAgLy8gKHdpdGggcHJlc2VudGF0aW9uIGNvbnRyb2xzKSBpcyBpbW1lZGlhdGVseSB2aXNpYmxlXG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnZpZGVvQ29udHJvbC5wcmVzZW50YXRpb25TdGF0ZSkge1xuICAgICAgc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkID0gdHJ1ZTtcbiAgICB9XG4gIH0sIFshIXN0YXRlLnZpZGVvQ29udHJvbC5wcmVzZW50YXRpb25TdGF0ZV0pO1xuXG4gIGNvbnN0IGlzTWluaW1pemVkID0gc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkO1xuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbENvbnRhaW5lcn0+XG4gICAgICB7LyogQ29tcGFjdCBiYXIg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBkaXNwbGF5OiBpc01pbmltaXplZCA/ICdmbGV4JyA6ICdub25lJywgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgPENvbXBhY3REY2xDYXN0XG4gICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICBvblNob3dTaG93Y2FzZU1vZGFsPXtvblNob3dTaG93Y2FzZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cblxuICAgICAgey8qIEZ1bGwgcGFuZWwg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGRpc3BsYXk6IGlzTWluaW1pemVkID8gJ25vbmUnIDogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnJvd0NlbnRlclNwYWNlQmV0d2Vlbn0+XG4gICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMucm93Q2VudGVyfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmhlYWRlckljb259XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgICAgdGV4dHVyZTogeyBzcmM6IElDT05TLkRDTF9DQVNUX0lDT04gfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICc8Yj5EQ0wgQ2FzdDwvYj4nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyNCxcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbWlkZGxlLWxlZnQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgbGVmdDogMTAgfSB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmNoZXZyb25CdXR0b259XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgc3JjOiBJQ09OUy5DSEVWUk9OX1VQLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5mdWxsV2lkdGhXaXRoQm90dG9tTWFyZ2lufT5cbiAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgIHVpVGV4dD17e1xuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnVXNlIGEgYnJvd3Nlci1iYXNlZCBEQ0wgQ2FzdCByb29tIHRvIGVhc2lseSBzdHJlYW0gY2FtZXJhIGFuZCBzY3JlZW4gZmVlZCB0byBhIHNjcmVlbiBpbiB5b3VyIHNjZW5lLicsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4JyksXG5cbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICB0ZXh0V3JhcDogJ3dyYXAnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMubWFyZ2luQm90dG9tU21hbGx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAge2lzTG9hZGluZyAmJiAoXG4gICAgICAgICAgPExvYWRpbmdEb3RzXG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmxvYWRpbmdDb250YWluZXJ9XG4gICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7ZXJyb3IgJiYgKFxuICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLmNvbHVtbkNlbnRlcmVkfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRleHQ9e3tcbiAgICAgICAgICAgICAgICB2YWx1ZTogJzxiPkZhaWxlZCB0byBmZXRjaCBEQ0wgQ2FzdCBpbmZvPC9iPicsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5tYXJnaW5Cb3R0b21TbWFsbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICdQbGVhc2UgcmV0cnkuJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTYsXG4gICAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5HcmF5KCksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cImRjbF9jYXN0X3JldHJ5XCJcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5SZXRyeTwvYj5cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLndoaXRlfVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUdldERjbENhc3RJbmZvKHN0YXRlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5yZXRyeUJ1dHRvbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgKX1cblxuICAgICAgICB7IWlzTG9hZGluZyAmJiAhZXJyb3IgJiYgKFxuICAgICAgICAgIDxEY2xDYXN0SW5mb1xuICAgICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgICAgZW50aXR5PXtlbnRpdHl9XG4gICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICAgIG9uUmVzZXRSb29tSWQ9e2hhbmRsZVJlc2V0Um9vbUlkfVxuICAgICAgICAgICAgb25TaG93U2hvd2Nhc2VNb2RhbD17b25TaG93U2hvd2Nhc2VNb2RhbH1cbiAgICAgICAgICAgIG9uU2hhcmVQcmVzZW50YXRpb249e29uU2hhcmVQcmVzZW50YXRpb259XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERjbENhc3Q7XG4iXX0=
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Color4 } from '@dcl/sdk/math';
|
|
2
|
-
import { UiTransformProps } from '@dcl/react-ecs';
|
|
2
|
+
import type { UiTransformProps } from '@dcl/react-ecs';
|
|
3
|
+
import { getPaginationColor } from '../../ModerationControl/styles/UsersListStyles';
|
|
3
4
|
export declare const getDclCastStyles: () => Record<string, UiTransformProps>;
|
|
4
5
|
export declare const getDclCastColors: () => {
|
|
5
6
|
white: Color4.MutableColor4;
|
|
@@ -18,3 +19,74 @@ export declare const getDclCastBackgrounds: () => {
|
|
|
18
19
|
textureMode: "stretch";
|
|
19
20
|
};
|
|
20
21
|
};
|
|
22
|
+
export declare const getCompactBarStyles: () => Record<string, UiTransformProps>;
|
|
23
|
+
export declare const SHOWCASE_DROPDOWN_COLORS: {
|
|
24
|
+
idle: Color4.MutableColor4;
|
|
25
|
+
hover: Color4.MutableColor4;
|
|
26
|
+
active: Color4.MutableColor4;
|
|
27
|
+
hoverBg: Color4.MutableColor4;
|
|
28
|
+
transparentBg: Color4.MutableColor4;
|
|
29
|
+
};
|
|
30
|
+
export declare const SHOWCASE_PAGE_INDICATOR_COLOR: Color4.MutableColor4;
|
|
31
|
+
export declare const getSpeakerShowcaseStyles: () => Record<string, UiTransformProps>;
|
|
32
|
+
export declare const getShowcaseColors: () => {
|
|
33
|
+
white: Color4.MutableColor4;
|
|
34
|
+
gray: Color4.MutableColor4;
|
|
35
|
+
addressGray: Color4.MutableColor4;
|
|
36
|
+
removeRed: Color4.MutableColor4;
|
|
37
|
+
disabledGray: Color4.MutableColor4;
|
|
38
|
+
black: Color4.MutableColor4;
|
|
39
|
+
softBlack: Color4.MutableColor4;
|
|
40
|
+
transparent: Color4.MutableColor4;
|
|
41
|
+
};
|
|
42
|
+
export declare function getShowcaseIconBackgrounds(): {
|
|
43
|
+
showcase: {
|
|
44
|
+
textureMode: "stretch";
|
|
45
|
+
texture: {
|
|
46
|
+
src: string;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
star: {
|
|
50
|
+
textureMode: "stretch";
|
|
51
|
+
texture: {
|
|
52
|
+
src: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
export declare function getShowcaseBackgrounds(): {
|
|
57
|
+
container: {
|
|
58
|
+
color: Color4.MutableColor4;
|
|
59
|
+
};
|
|
60
|
+
divider: {
|
|
61
|
+
color: Color4.MutableColor4;
|
|
62
|
+
};
|
|
63
|
+
roleBadge: {
|
|
64
|
+
color: Color4.MutableColor4;
|
|
65
|
+
};
|
|
66
|
+
headerIcon: {
|
|
67
|
+
textureMode: "stretch";
|
|
68
|
+
texture: {
|
|
69
|
+
src: string;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
personIcon: {
|
|
73
|
+
textureMode: "stretch";
|
|
74
|
+
texture: {
|
|
75
|
+
src: string;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
banIcon: {
|
|
79
|
+
textureMode: "stretch";
|
|
80
|
+
texture: {
|
|
81
|
+
src: string;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
verifiedIcon: {
|
|
85
|
+
textureMode: "stretch";
|
|
86
|
+
texture: {
|
|
87
|
+
src: string;
|
|
88
|
+
};
|
|
89
|
+
color: Color4.MutableColor4;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
export { getPaginationColor };
|