genassist-chat-react 1.0.38 → 1.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ChatBubble.d.ts +1 -0
- package/dist/components/ChatBubble.js +4 -4
- package/dist/components/ChatMessage.js +6 -2
- package/dist/components/DynamicFormMessage.d.ts +8 -2
- package/dist/components/DynamicFormMessage.js +99 -55
- package/dist/components/GenAgentChat.js +278 -49
- package/dist/components/LiveCallControl.d.ts +25 -0
- package/dist/components/LiveCallControl.js +83 -0
- package/dist/components/MarkdownMessage.js +23 -1
- package/dist/genassist-chat.es.js +16915 -0
- package/dist/genassist-chat.umd.js +91 -0
- package/dist/hooks/useAudioRecorder.js +74 -2
- package/dist/hooks/useChat.d.ts +7 -1
- package/dist/hooks/useChat.js +89 -36
- package/dist/hooks/useLiveVoice.d.ts +32 -0
- package/dist/hooks/useLiveVoice.js +292 -0
- package/dist/services/chatService.d.ts +19 -2
- package/dist/services/chatService.js +55 -8
- package/dist/styles/genAgentChatStyles.d.ts +2 -0
- package/dist/styles/genAgentChatStyles.js +15 -1
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.js +1 -1
- package/package.json +7 -4
- package/dist/components/AttachmentPreview.d.ts +0 -8
- package/dist/components/AttachmentPreview.js +0 -77
- package/dist/utils/urlUtil.d.ts +0 -2
- package/dist/utils/urlUtil.js +0 -7
|
@@ -10,9 +10,9 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import { Sparkles, X } from 'lucide-react';
|
|
13
|
+
import { MessageCircle, Sparkles, X } from 'lucide-react';
|
|
14
14
|
export var ChatBubble = function (_a) {
|
|
15
|
-
var showChat = _a.showChat, onClick = _a.onClick, primaryColor = _a.primaryColor, style = _a.style;
|
|
15
|
+
var showChat = _a.showChat, onClick = _a.onClick, primaryColor = _a.primaryColor, style = _a.style, chatBubbleIcon = _a.chatBubbleIcon;
|
|
16
16
|
var defaultStyle = {
|
|
17
17
|
position: 'fixed',
|
|
18
18
|
bottom: '20px',
|
|
@@ -30,6 +30,6 @@ export var ChatBubble = function (_a) {
|
|
|
30
30
|
zIndex: 40,
|
|
31
31
|
};
|
|
32
32
|
var chatBubbleStyle = __assign(__assign({}, defaultStyle), style);
|
|
33
|
-
return (_jsx("div", { style: chatBubbleStyle, onClick: onClick, children: showChat ? _jsx(X, { size: 24 }) : _jsx(Sparkles, { size: 24 }) }));
|
|
33
|
+
return (_jsx("div", { style: chatBubbleStyle, onClick: onClick, children: showChat ? _jsx(X, { size: 24 }) : chatBubbleIcon === 'message' ? _jsx(MessageCircle, { size: 30 }) : chatBubbleIcon === 'x' ? _jsx(X, { size: 24 }) : _jsx(Sparkles, { size: 24 }) }));
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdEJ1YmJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL0NoYXRCdWJibGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVUxRCxNQUFNLENBQUMsSUFBTSxVQUFVLEdBQThCLFVBQUMsRUFNckQ7UUFMQyxRQUFRLGNBQUEsRUFDUixPQUFPLGFBQUEsRUFDUCxZQUFZLGtCQUFBLEVBQ1osS0FBSyxXQUFBLEVBQ0wsY0FBYyxvQkFBQTtJQUVkLElBQU0sWUFBWSxHQUF3QjtRQUN4QyxRQUFRLEVBQUUsT0FBTztRQUNqQixNQUFNLEVBQUUsTUFBTTtRQUNkLEtBQUssRUFBRSxNQUFNO1FBQ2IsS0FBSyxFQUFFLE1BQU07UUFDYixNQUFNLEVBQUUsTUFBTTtRQUNkLFlBQVksRUFBRSxLQUFLO1FBQ25CLGVBQWUsRUFBRSxZQUFZO1FBQzdCLEtBQUssRUFBRSxTQUFTO1FBQ2hCLE9BQU8sRUFBRSxNQUFNO1FBQ2YsVUFBVSxFQUFFLFFBQVE7UUFDcEIsY0FBYyxFQUFFLFFBQVE7UUFDeEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsU0FBUyxFQUFFLGdDQUFnQztRQUMzQyxNQUFNLEVBQUUsRUFBRTtLQUNYLENBQUM7SUFFRixJQUFNLGVBQWUseUJBQ2hCLFlBQVksR0FDWixLQUFLLENBQ1QsQ0FBQztJQUVGLE9BQU8sQ0FDTCxjQUFLLEtBQUssRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE9BQU8sWUFDMUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFDLENBQUMsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUMsYUFBYSxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBQyxDQUFDLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxDQUFDLENBQUMsQ0FBQyxLQUFDLFFBQVEsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLEdBQ3hKLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBNZXNzYWdlQ2lyY2xlLCBTcGFya2xlcywgWCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5cbmludGVyZmFjZSBDaGF0QnViYmxlUHJvcHMge1xuICBzaG93Q2hhdDogYm9vbGVhbjtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgcHJpbWFyeUNvbG9yOiBzdHJpbmc7XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgY2hhdEJ1YmJsZUljb24/OiAnbWVzc2FnZScgfCAnc3BhcmtsZXMnIHwgJ3gnO1xufVxuXG5leHBvcnQgY29uc3QgQ2hhdEJ1YmJsZTogUmVhY3QuRkM8Q2hhdEJ1YmJsZVByb3BzPiA9ICh7XG4gIHNob3dDaGF0LFxuICBvbkNsaWNrLFxuICBwcmltYXJ5Q29sb3IsXG4gIHN0eWxlLFxuICBjaGF0QnViYmxlSWNvbixcbn0pID0+IHtcbiAgY29uc3QgZGVmYXVsdFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgIGJvdHRvbTogJzIwcHgnLFxuICAgIHJpZ2h0OiAnMjBweCcsXG4gICAgd2lkdGg6ICc2MHB4JyxcbiAgICBoZWlnaHQ6ICc2MHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICc1MCUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogcHJpbWFyeUNvbG9yLFxuICAgIGNvbG9yOiAnI2ZmZmZmZicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBib3hTaGFkb3c6ICcwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSknLFxuICAgIHpJbmRleDogNDAsXG4gIH07XG5cbiAgY29uc3QgY2hhdEJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIC4uLmRlZmF1bHRTdHlsZSxcbiAgICAuLi5zdHlsZSxcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgc3R5bGU9e2NoYXRCdWJibGVTdHlsZX0gb25DbGljaz17b25DbGlja30+XG4gICAgICB7c2hvd0NoYXQgPyA8WCBzaXplPXsyNH0gLz4gOiBjaGF0QnViYmxlSWNvbiA9PT0gJ21lc3NhZ2UnID8gPE1lc3NhZ2VDaXJjbGUgc2l6ZT17MzB9IC8+IDogY2hhdEJ1YmJsZUljb24gPT09ICd4JyA/IDxYIHNpemU9ezI0fSAvPiA6IDxTcGFya2xlcyBzaXplPXsyNH0gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19
|
|
@@ -32,7 +32,11 @@ export var ChatMessageComponent = function (_a) {
|
|
|
32
32
|
var isWelcomeMessage = !isUser && !isSpecial && isFirstMessage;
|
|
33
33
|
var _f = React.useState(false), isHovered = _f[0], setIsHovered = _f[1];
|
|
34
34
|
var editingFeedback = React.useState(false)[0];
|
|
35
|
-
|
|
35
|
+
// Track the message text directly (don't snapshot on mount): live-voice caption
|
|
36
|
+
// bubbles grow their text as the transcript streams, and a frozen snapshot would
|
|
37
|
+
// pin them to the first chunk. Normal messages have stable text, so this is a
|
|
38
|
+
// no-op for them. (The disabled typewriter below can re-introduce local state.)
|
|
39
|
+
var displayText = message.text;
|
|
36
40
|
var contentBlocks = React.useMemo(function () { return parseInteractiveContentBlocks(displayText, message === null || message === void 0 ? void 0 : message.type); }, [displayText]);
|
|
37
41
|
// Format timestamp with translations
|
|
38
42
|
var timestamp = React.useMemo(function () {
|
|
@@ -272,4 +276,4 @@ export var ChatMessageComponent = function (_a) {
|
|
|
272
276
|
}
|
|
273
277
|
}, children: _jsx(ThumbsDown, { size: 18 }) })] })) }))] }));
|
|
274
278
|
};
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdE1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGF0TWVzc2FnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFtQy9ELE1BQU0sQ0FBQyxJQUFNLG9CQUFvQixHQUErQixVQUFDLEVBcUJoRTtRQXBCQyxPQUFPLGFBQUEsRUFDUCxLQUFLLFdBQUEsRUFDTCxXQUFXLGlCQUFBLEVBQ1gsc0JBQXNCLEVBQXRCLGNBQWMsbUJBQUcsS0FBSyxLQUFBLEVBQ3RCLHlCQUF5QixFQUF6QixpQkFBaUIsbUJBQUcsS0FBSyxLQUFBLEVBQ3pCLFVBQVUsZ0JBQUEsRUFDVixlQUFlLHFCQUFBLEVBQ0QsZ0JBQWdCLGtCQUFBLEVBQzlCLGVBQWUscUJBQUEsRUFDZixZQUFZLGtCQUFBLEVBQ1oscUJBQXFCLEVBQXJCLGFBQWEsbUJBQUcsS0FBSyxLQUFBLEVBQ3JCLGFBQWEsbUJBQUEs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aUJBQ0UsSUFBSSxFQUFDLFFBQVEsRUFDYixLQUFLLEVBQUUsZUFBZSxFQUN0QixLQUFLLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQy9CLE9BQU8sRUFBRTtnQ0FDUCx5RUFBeUU7Z0NBQ3pFLElBQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUssT0FBZSxDQUFDLEVBQUUsQ0FBQztnQ0FDeEQsSUFBSSxLQUFLLElBQUksVUFBVSxFQUFFLENBQUM7b0NBQ3hCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0NBQzNCLENBQUM7cUNBQU0sQ0FBQztvQ0FDTixTQUFTO2dDQUNYLENBQUM7NEJBQ0gsQ0FBQyxZQUVELEtBQUMsVUFBVSxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksR0FDakIsSUFDUixDQUNKLEdBQ0csQ0FDUCxJQUNHLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBXZWxjb21lQ2FyZCB9IGZyb20gJy4vV2VsY29tZUNhcmQnO1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UsIFNjaGVkdWxlSXRlbSwgVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXNlciwgVXNlclgsIEFsZXJ0Q2lyY2xlLCBUaHVtYnNVcCwgVGh1bWJzRG93biwgTWljIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IEF1ZGlvUGxheWVyIH0gZnJvbSAnLi9BdWRpb1BsYXllcic7XG5pbXBvcnQgeyBmb3JtYXRUaW1lc3RhbXAgfSBmcm9tICcuLi91dGlscy90aW1lJztcbmltcG9ydCB7IEludGVyYWN0aXZlQ29udGVudCB9IGZyb20gJy4vSW50ZXJhY3RpdmVDb250ZW50JztcbmltcG9ydCB7IHBhcnNlSW50ZXJhY3RpdmVDb250ZW50QmxvY2tzIH0gZnJvbSAnLi4vdXRpbHMvaW50ZXJhY3RpdmVDb250ZW50JztcbmltcG9ydCB7IGRlZmF1bHRUcmFuc2xhdGlvbnMsIGdldFRyYW5zbGF0aW9uU3RyaW5nLCBtZXJnZVRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2kxOG4nO1xuaW1wb3J0IHsgVXBsb2FkRmlsZVByZXZpZXcgfSBmcm9tICcuL2NvbW1vbi9VcGxvYWRGaWxlUHJldmlldyc7XG5cbmludGVyZmFjZSBDaGF0TWVzc2FnZVByb3BzIHtcbiAgbWVzc2FnZTogQ2hhdE1lc3NhZ2U7XG4gIHRoZW1lPzoge1xuICAgIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgICBzZWNvbmRhcnlDb2xvcj86IHN0cmluZztcbiAgICBmb250RmFtaWx5Pzogc3RyaW5nO1xuICAgIGZvbnRTaXplPzogc3RyaW5nO1xuICAgIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gIH07XG4gIG9uUGxheUF1ZGlvPzogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgaXNQbGF5aW5nQXVkaW8/OiBib29sZWFuO1xuICBpc0ZpcnN0TWVzc2FnZT86IGJvb2xlYW47XG4gIGlzTmV4dFNhbWVTcGVha2VyPzogYm9vbGVhbjtcbiAgaXNQcmV2U2FtZVNwZWFrZXI/OiBib29sZWFuO1xuICBvbkZlZWRiYWNrPzogKG1lc3NhZ2VJZDogc3RyaW5nLCB2YWx1ZTogJ2dvb2QnIHwgJ2JhZCcpID0+IHZvaWQ7XG4gIGVuYWJsZVR5cGV3cml0ZXI/OiBib29sZWFuO1xuICB3ZWxjb21lSW1hZ2VVcmw/OiBzdHJpbmc7XG4gIHdlbGNvbWVUaXRsZT86IHN0cmluZztcbiAgcG9zc2libGVRdWVyaWVzPzogc3RyaW5nW107XG4gIG9uUXVpY2tRdWVyeT86IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkO1xuICBpc0xhc3RNZXNzYWdlPzogYm9vbGVhbjtcbiAgb25RdWlja0FjdGlvbj86ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWQ7XG4gIG9uU2NoZWR1bGVDb25maXJtPzogKHNjaGVkdWxlOiBTY2hlZHVsZUl0ZW0pID0+IHZvaWQ7XG4gIHRyYW5zbGF0aW9ucz86IFRyYW5zbGF0aW9ucztcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIGFnZW50TmFtZT86IHN0cmluZzsgLy8gQ3VzdG9tIGFnZW50IG5hbWUgdG8gZGlzcGxheSBpbnN0ZWFkIG9mIHRyYW5zbGF0aW9uXG4gIGlzQWdlbnRUeXBpbmc/OiBib29sZWFuOyAvLyBXaGV0aGVyIGFnZW50IGlzIGN1cnJlbnRseSB0eXBpbmcvdGhpbmtpbmdcbiAgYXVkaW9VcmxCdWlsZGVyPzogKG1lc3NhZ2VJZDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIGF1ZGlvSGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIGF1dG9QbGF5QXVkaW9NZXNzYWdlSWQ/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgQ2hhdE1lc3NhZ2VDb21wb25lbnQ6IFJlYWN0LkZDPENoYXRNZXNzYWdlUHJvcHM+ID0gKHtcbiAgbWVzc2FnZSxcbiAgdGhlbWUsXG4gIG9uUGxheUF1ZGlvLFxuICBpc0ZpcnN0TWVzc2FnZSA9IGZhbHNlLFxuICBpc1ByZXZTYW1lU3BlYWtlciA9IGZhbHNlLFxuICBvbkZlZWRiYWNrLFxuICB3ZWxjb21lSW1hZ2VVcmwsXG4gIHdlbGNvbWVUaXRsZTogd2VsY29tZVRpdGxlUHJvcCxcbiAgcG9zc2libGVRdWVyaWVzLFxuICBvblF1aWNrUXVlcnksXG4gIGlzTGFzdE1lc3NhZ2UgPSBmYWxzZSxcbiAgb25RdWlja0FjdGlvbixcbiAgb25TY2hlZHVsZUNvbmZpcm0sXG4gIHRyYW5zbGF0aW9uczogY3VzdG9tVHJhbnNsYXRpb25zLFxuICBsYW5ndWFnZSxcbiAgYWdlbnROYW1lLFxuICBpc0FnZW50VHlwaW5nID0gZmFsc2UsXG4gIGF1ZGlvVXJsQnVpbGRlcixcbiAgYXVkaW9IZWFkZXJzLFxuICBhdXRvUGxheUF1ZGlvTWVzc2FnZUlkLFxufSkgPT4ge1xuICAvLyBNZXJnZSB0cmFuc2xhdGlvbnMgd2l0aCBkZWZhdWx0c1xuICBjb25zdCB0cmFuc2xhdGlvbnMgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IG1lcmdlVHJhbnNsYXRpb25zKGN1c3RvbVRyYW5zbGF0aW9ucywgZGVmYXVsdFRyYW5zbGF0aW9ucyksXG4gICAgW2N1c3RvbVRyYW5zbGF0aW9uc11cbiAgKTtcblxuICAvLyBUcmFuc2xhdGlvbiBoZWxwZXJcbiAgY29uc3QgdCA9IChrZXk6IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiBnZXRUcmFuc2xhdGlvblN0cmluZyhrZXksIHRyYW5zbGF0aW9ucywgZmFsbGJhY2spO1xuICB9O1xuICBjb25zdCBpc1VzZXIgPSBtZXNzYWdlLnNwZWFrZXIgPT09ICdjdXN0b21lcic7XG4gIGNvbnN0IGlzU3BlY2lhbCA9IG1lc3NhZ2Uuc3BlYWtlciA9PT0gJ3NwZWNpYWwnO1xuICBjb25zdCBpc1dlbGNvbWVNZXNzYWdlID0gIWlzVXNlciAmJiAhaXNTcGVjaWFsICYmIGlzRmlyc3RNZXNzYWdlO1xuICBjb25zdCBbaXNIb3ZlcmVkLCBzZXRJc0hvdmVyZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZWRpdGluZ0ZlZWRiYWNrXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Rpc3BsYXlUZXh0XSA9IFJlYWN0LnVzZVN0YXRlPHN0cmluZz4obWVzc2FnZS50ZXh0KTtcbiAgY29uc3QgY29udGVudEJsb2NrcyA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gcGFyc2VJbnRlcmFjdGl2ZUNvbnRlbnRCbG9ja3MoZGlzcGxheVRleHQsIG1lc3NhZ2U/LnR5cGUgYXMgJ2ZpbGUnIHwgJ21lc3NhZ2UnIHwgdW5kZWZpbmVkKSxcbiAgICBbZGlzcGxheVRleHRdXG4gICk7XG5cbiAgLy8gRm9ybWF0IHRpbWVzdGFtcCB3aXRoIHRyYW5zbGF0aW9uc1xuICBjb25zdCB0aW1lc3RhbXAgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB0aW1lVHJhbnNsYXRpb25zID0gdHJhbnNsYXRpb25zPy50aW1lID8ge1xuICAgICAganVzdE5vdzogdHJhbnNsYXRpb25zLnRpbWUuanVzdE5vdyxcbiAgICAgIHRvZGF5OiB0cmFuc2xhdGlvbnMudGltZS50b2RheSxcbiAgICAgIHllc3RlcmRheTogdHJhbnNsYXRpb25zLnRpbWUueWVzdGVyZGF5LFxuICAgIH0gOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGZvcm1hdFRpbWVzdGFtcChtZXNzYWdlLmNyZWF0ZV90aW1lLCBsYW5ndWFnZSwgdGltZVRyYW5zbGF0aW9ucyk7XG4gIH0sIFttZXNzYWdlLmNyZWF0ZV90aW1lLCBsYW5ndWFnZSwgdHJhbnNsYXRpb25zXSk7XG5cbiAgLy8gRmFzdCB0eXBld3JpdGVyIGVmZmVjdCBmb3IgbmV3bHkgZGlzcGxheWVkIGFnZW50IG1lc3NhZ2VzLCBmaXggbGF0ZXJcbiAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gICBpZiAoIWlzVXNlciAmJiAhaXNTcGVjaWFsICYmIGVuYWJsZVR5cGV3cml0ZXIgJiYgbWVzc2FnZS50ZXh0ICE9PSBsYXN0QW5pbWF0ZWRSZWYuY3VycmVudCkge1xuICAvLyAgICAgbGFzdEFuaW1hdGVkUmVmLmN1cnJlbnQgPSBtZXNzYWdlLnRleHQ7XG4gIC8vICAgICBzZXRJc1R5cGV3cml0aW5nKHRydWUpO1xuICAvLyAgICAgc2V0RGlzcGxheVRleHQoJycpO1xuICAvLyAgICAgbGV0IGkgPSAwO1xuICAvLyAgICAgY29uc3QgdG90YWwgPSBtZXNzYWdlLnRleHQubGVuZ3RoO1xuICAvLyAgICAgY29uc3QgdGlja01zID0gMTY7XG4gIC8vICAgICBjb25zdCB0YXJnZXRNcyA9IDEyMDA7XG4gIC8vICAgICBjb25zdCBjaGFyc1BlclRpY2sgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHRvdGFsIC8gKHRhcmdldE1zIC8gdGlja01zKSkpO1xuICAvLyAgICAgY29uc3QgaW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAvLyAgICAgICBpICs9IGNoYXJzUGVyVGljaztcbiAgLy8gICAgICAgaWYgKGkgPj0gdG90YWwpIHtcbiAgLy8gICAgICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQpO1xuICAvLyAgICAgICAgIHNldElzVHlwZXdyaXRpbmcoZmFsc2UpO1xuICAvLyAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsKTtcbiAgLy8gICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQuc2xpY2UoMCwgaSkpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9LCB0aWNrTXMpO1xuICAvLyAgICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgc2V0RGlzcGxheVRleHQobWVzc2FnZS50ZXh0KTtcbiAgLy8gICAgIHNldElzVHlwZXdyaXRpbmcoZmFsc2UpO1xuICAvLyAgIH1cbiAgLy8gfSwgW21lc3NhZ2UudGV4dCwgZW5hYmxlVHlwZXdyaXRlciwgaXNVc2VyLCBpc1NwZWNpYWxdKTtcblxuICAvLyBVcGRhdGVkIGRlc2lnbiBjb2xvcnNcbiAgY29uc3QgdXNlckJ1YmJsZUJnQ29sb3IgPSAnI0U0RTRFNyc7IC8vIGdyZXkgZm9yIHVzZXJcbiAgY29uc3QgdXNlclRleHRDb2xvciA9ICcjMDAwMDAwJztcbiAgY29uc3QgYWdlbnRUZXh0Q29sb3IgPSB0aGVtZT8udGV4dENvbG9yIHx8ICcjMDAwMDAwJztcbiAgY29uc3QgcHJpbWFyeUNvbG9yID0gdGhlbWU/LnByaW1hcnlDb2xvciB8fCAnIzRmNDZlNSc7XG4gIGNvbnN0IGZvbnRGYW1pbHkgPSB0aGVtZT8uZm9udEZhbWlseSB8fCAnUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZic7XG4gIGNvbnN0IGZvbnRTaXplID0gdGhlbWU/LmZvbnRTaXplIHx8ICcxNXB4JztcbiAgY29uc3QgYnViYmxlVGV4dENvbG9yID0gaXNVc2VyID8gdXNlclRleHRDb2xvciA6IGFnZW50VGV4dENvbG9yO1xuXG4gIGNvbnN0IG1lc3NhZ2VDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBtYXJnaW5Cb3R0b206IGlzUHJldlNhbWVTcGVha2VyID8gJzhweCcgOiAnOHB4JyxcbiAgICBtYXJnaW5Ub3A6IGlzUHJldlNhbWVTcGVha2VyID8gJzBweCcgOiAnMTZweCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgYWxpZ25JdGVtczogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyxcbiAgfTtcblxuICBjb25zdCBsYWJlbFJvd1N0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6IGlzUHJldlNhbWVTcGVha2VyID8gJ25vbmUnIDogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnODAlJyxcbiAgICBqdXN0aWZ5Q29udGVudDogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyxcbiAgICBhbGlnbkl0ZW1zOiAnYmFzZWxpbmUnLFxuICAgIGdhcDogJzhweCcsXG4gICAgbWFyZ2luQm90dG9tOiAnNnB4JyxcbiAgfTtcblxuICBjb25zdCBtZXNzYWdlTGFiZWxTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGNvbG9yOiAnIzAwMDAwMCcsXG4gICAgbGluZUhlaWdodDogMSxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gIH07XG5cbiAgY29uc3QgdG9wVGltZXN0YW1wU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICBjb2xvcjogJyM2YjcyODAnLFxuICAgIGxpbmVIZWlnaHQ6IDEsXG4gIH07XG5cbiAgY29uc3QgbWVzc2FnZUJ1YmJsZUNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBtYXhXaWR0aDogJzgwJScsXG4gIH07XG5cbiAgLy8gT25seSB1c2VyJ3MgbWVzc2FnZXMgc2hvdWxkIHJlbmRlciBhcyBidWJibGVzLlxuICAvLyBBZ2VudCBtZXNzYWdlcyBhcmUgcGxhaW4gdGV4dCB3aXRoIG5vIGNvbnRhaW5lciBiYWNrZ3JvdW5kLlxuICBjb25zdCBidWJibGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IGlzVXNlclxuICAgID8ge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHVzZXJCdWJibGVCZ0NvbG9yLFxuICAgICAgICBjb2xvcjogdXNlclRleHRDb2xvcixcbiAgICAgICAgcGFkZGluZzogJzEycHggMTZweCcsXG4gICAgICAgIGJvcmRlclJhZGl1czogJzEycHggMCAxMnB4IDEycHgnLFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseSxcbiAgICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDEuNCxcbiAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJveFNoYWRvdzogJzAgMXB4IDJweCByZ2JhKDAsMCwwLDAuMDgpJ1xuICAgICAgfVxuICAgIDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGNvbG9yOiBhZ2VudFRleHRDb2xvcixcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAwLFxuICAgICAgICBmb250U2l6ZSxcbiAgICAgICAgZm9udEZhbWlseSxcbiAgICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICAgIGxpbmVIZWlnaHQ6IDEuNCxcbiAgICAgICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICAgIGJveFNoYWRvdzogJ25vbmUnXG4gICAgICB9O1xuXG4gIGNvbnN0IGF0dGFjaG1lbnRzQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgbWFyZ2luVG9wOiAnOHB4JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgZ2FwOiAnOHB4JyxcbiAgfTtcblxuICAvLyBGZWVkYmFjayBzdGF0ZSBhbmQgVUkgKHRodW1icyB1cC9kb3duKSBmb3IgYWdlbnQgbWVzc2FnZXNcbiAgY29uc3QgZmVlZGJhY2tWYWx1ZSA9IChtZXNzYWdlLmZlZWRiYWNrICYmIG1lc3NhZ2UuZmVlZGJhY2subGVuZ3RoID4gMClcbiAgICA/IG1lc3NhZ2UuZmVlZGJhY2tbbWVzc2FnZS5mZWVkYmFjay5sZW5ndGggLSAxXS5mZWVkYmFja1xuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHRodW1ic1Nob3VsZFNob3cgPSAhaXNVc2VyICYmICFpc1NwZWNpYWwgJiYgaXNIb3ZlcmVkICYmICFmZWVkYmFja1ZhbHVlO1xuICBjb25zdCBzaG93VGh1bWJzQXJlYSA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbDsgLy8gT25seSBhZ2VudHMgaGF2ZSB0aHVtYnMgYXJlYVxuXG4gIGNvbnN0IGZlZWRiYWNrUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogc2hvd1RodW1ic0FyZWEgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgbWFyZ2luVG9wOiA4LFxuICAgIGFsaWduU2VsZjogJ2ZsZXgtc3RhcnQnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGhlaWdodDogMjAsXG4gICAgZ2FwOiA4LFxuICAgIHZpc2liaWxpdHk6IHRodW1ic1Nob3VsZFNob3cgfHwgISFmZWVkYmFja1ZhbHVlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicsXG4gIH07XG5cbiAgY29uc3QgaWNvbkJ1dHRvblN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGJhY2tncm91bmQ6ICd0cmFuc3BhcmVudCcsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgcGFkZGluZzogMCxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBjb2xvcjogJyM5Y2EzYWYnLFxuICAgIGRpc3BsYXk6IHRodW1ic1Nob3VsZFNob3cgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH07XG5cbiAgY29uc3Qgc2VwYXJhdG9yU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgd2lkdGg6IDEsXG4gICAgaGVpZ2h0OiAxNCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZTVlN2ViJyxcbiAgICBkaXNwbGF5OiB0aHVtYnNTaG91bGRTaG93ID8gJ2Jsb2NrJyA6ICdub25lJyxcbiAgfTtcblxuICBjb25zdCBzaW5nbGVJY29uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICBkaXNwbGF5OiBmZWVkYmFja1ZhbHVlID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9O1xuXG4gIGxldCB3ZWxjb21lVGl0bGUgPSB3ZWxjb21lVGl0bGVQcm9wIHx8ICcnO1xuICBsZXQgd2VsY29tZUNvbnRlbnQgPSAnJztcbiAgXG4gIGlmIChpc1dlbGNvbWVNZXNzYWdlKSB7XG4gICAgY29uc3QgbWVzc2FnZVRleHQgPSBtZXNzYWdlLnRleHQ7XG4gICAgaWYgKCF3ZWxjb21lVGl0bGVQcm9wKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IG1lc3NhZ2VUZXh0LnNwbGl0KC9bXFxuXFwuIT9dLyk7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMCkgd2VsY29tZVRpdGxlID0gKHBhcnRzWzBdIHx8ICcnKS50cmltKCk7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IG1lc3NhZ2VUZXh0LnN1YnN0cmluZyh3ZWxjb21lVGl0bGUubGVuZ3RoKS50cmltKCk7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IHdlbGNvbWVDb250ZW50LnJlcGxhY2UoL15bLC4hP1xcc10rLywgJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3ZWxjb21lQ29udGVudCA9IG1lc3NhZ2VUZXh0O1xuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBzcGVjaWFsIG1lc3NhZ2VzIChsaWtlIHRha2VvdmVyIGluZGljYXRvcnMpXG4gIGlmIChpc1NwZWNpYWwpIHtcbiAgICBjb25zdCBzcGVjaWFsTWVzc2FnZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBtYXJnaW46ICcxNnB4IDAnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lIGljb24gYW5kIHN0eWxlIGJhc2VkIG9uIG1lc3NhZ2UgY29udGVudFxuICAgIC8vIEFnZW50IG9mZiAmIHNlcnZlciBkb3duXG4gICAgY29uc3QgaXNBZ2VudE9mZk9yU2VydmVyRG93biA9XG4gICAgICBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnb2ZmbGluZScpIHx8XG4gICAgICBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnaW5hY3RpdmUnKSB8fFxuICAgICAgbWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3VuYXZhaWxhYmxlJykgfHxcbiAgICAgIChtZXNzYWdlLmxpbmtVcmwgJiYgbWVzc2FnZS5saW5rTGFiZWwpO1xuICAgIGxldCBpY29uO1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSAnI0UzRjJGRCc7XG4gICAgbGV0IHRleHRDb2xvciA9ICcjMTk3NkQyJztcbiAgICBpZiAoaXNBZ2VudE9mZk9yU2VydmVyRG93bikge1xuICAgICAgaWNvbiA9IDxBbGVydENpcmNsZSBzaXplPXsxOH0gLz47XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnI0ZGRjNFMCc7XG4gICAgICB0ZXh0Q29sb3IgPSAnI0Y1N0MwMCc7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndG9vayBvdmVyJykgfHwgbWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Rha2VvdmVyJykpIHtcbiAgICAgIGljb24gPSA8VXNlclggc2l6ZT17MTh9IC8+O1xuICAgIH0gZWxzZSB7XG4gICAgICBpY29uID0gPFVzZXIgc2l6ZT17MTh9IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNpYWxCdWJibGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgIGNvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICBwYWRkaW5nOiAnOHB4IDE2cHgnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgZm9udEZhbWlseSxcbiAgICAgIGZvbnRXZWlnaHQ6ICc1MDAnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgICBnYXA6ICc4cHgnLFxuICAgIH07XG5cbiAgICBjb25zdCBsaW5rU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgICBjb2xvcjogdGV4dENvbG9yLFxuICAgICAgdGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnLFxuICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgZm9udEZhbWlseSxcbiAgICAgIGZvbnRXZWlnaHQ6ICc1MDAnLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17c3BlY2lhbE1lc3NhZ2VTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgLi4uc3BlY2lhbEJ1YmJsZVN0eWxlLCBmbGV4RGlyZWN0aW9uOiAncm93JywgYWxpZ25JdGVtczogJ2NlbnRlcicgfX0+XG4gICAgICAgICAge2ljb259XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6ICc0cHgnIH19PlxuICAgICAgICAgICAgPHNwYW4+e21lc3NhZ2UudGV4dH08L3NwYW4+XG4gICAgICAgICAgICB7bWVzc2FnZS5saW5rVXJsICYmIG1lc3NhZ2UubGlua0xhYmVsICYmIChcbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXttZXNzYWdlLmxpbmtVcmx9XG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17bGlua1N0eWxlfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge21lc3NhZ2UubGlua0xhYmVsfVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAoaXNXZWxjb21lTWVzc2FnZSkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXttZXNzYWdlQ29udGFpbmVyU3R5bGV9PlxuICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLm1lc3NhZ2VCdWJibGVDb250YWluZXJTdHlsZSB9fT5cbiAgICAgICAgICA8V2VsY29tZUNhcmRcbiAgICAgICAgICAgIHRoZW1lPXt0aGVtZX1cbiAgICAgICAgICAgIGltYWdlVXJsPXt3ZWxjb21lSW1hZ2VVcmx9XG4gICAgICAgICAgICB0aXRsZT17d2VsY29tZVRpdGxlfVxuICAgICAgICAgICAgY29udGVudD17d2VsY29tZUNvbnRlbnR9XG4gICAgICAgICAgICBwb3NzaWJsZVF1ZXJpZXM9e3Bvc3NpYmxlUXVlcmllc31cbiAgICAgICAgICAgIG9uUXVpY2tRdWVyeT17b25RdWlja1F1ZXJ5fVxuICAgICAgICAgICAgaXNBZ2VudFR5cGluZz17aXNBZ2VudFR5cGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgXG4gICAgICBzdHlsZT17bWVzc2FnZUNvbnRhaW5lclN0eWxlfVxuICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRJc0hvdmVyZWQodHJ1ZSl9XG4gICAgICBvbk1vdXNlTGVhdmU9eygpID0+IHsgaWYgKCFlZGl0aW5nRmVlZGJhY2spIHNldElzSG92ZXJlZChmYWxzZSk7IH19XG4gICAgPlxuICAgICAgPGRpdiBzdHlsZT17bGFiZWxSb3dTdHlsZX0+XG4gICAgICAgIHtpc1VzZXIgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3RvcFRpbWVzdGFtcFN0eWxlfT57dGltZXN0YW1wfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZUxhYmVsU3R5bGV9Pnt0KCdsYWJlbHMueW91Jyl9PC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VMYWJlbFN0eWxlfT57YWdlbnROYW1lIHx8IHQoJ2xhYmVscy5hZ2VudCcpfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17dG9wVGltZXN0YW1wU3R5bGV9Pnt0aW1lc3RhbXB9PC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge21lc3NhZ2UuYXR0YWNobWVudHMgJiYgbWVzc2FnZS5hdHRhY2htZW50cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5hdHRhY2htZW50c0NvbnRhaW5lclN0eWxlLCBhbGlnbkl0ZW1zOiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnIH19PlxuICAgICAgICAgIHttZXNzYWdlLmF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxVcGxvYWRGaWxlUHJldmlldyBrZXk9e2luZGV4fSBmaWxlPXthdHRhY2htZW50fSAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHttZXNzYWdlLnR5cGUgPT09ICdhdWRpbycgJiYgaXNVc2VyICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDQsIGFsaWduU2VsZjogJ2ZsZXgtZW5kJyB9fT5cbiAgICAgICAgICB7bWVzc2FnZS5hdWRpb09iamVjdFVybCA/IChcbiAgICAgICAgICAgIDxBdWRpb1BsYXllciBibG9iVXJsPXttZXNzYWdlLmF1ZGlvT2JqZWN0VXJsfSBwcmltYXJ5Q29sb3I9e3ByaW1hcnlDb2xvcn0gLz5cbiAgICAgICAgICApIDogYXVkaW9VcmxCdWlsZGVyICYmIG1lc3NhZ2UubWVzc2FnZV9pZCAmJiBhdWRpb0hlYWRlcnMgPyAoXG4gICAgICAgICAgICA8QXVkaW9QbGF5ZXIgYXVkaW9Vcmw9e2F1ZGlvVXJsQnVpbGRlcihtZXNzYWdlLm1lc3NhZ2VfaWQpfSBoZWFkZXJzPXthdWRpb0hlYWRlcnN9IHByaW1hcnlDb2xvcj17cHJpbWFyeUNvbG9yfSAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmJ1YmJsZVN0eWxlLCBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc4cHgnIH19PlxuICAgICAgICAgICAgICA8TWljIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS50ZXh0IHx8ICdbVm9pY2UgbWVzc2FnZV0nfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAge21lc3NhZ2UudHlwZSA9PT0gJ2F1ZGlvJyAmJiAhaXNVc2VyICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDQsIGFsaWduU2VsZjogJ2ZsZXgtc3RhcnQnIH19PlxuICAgICAgICAgIHthdWRpb1VybEJ1aWxkZXIgJiYgbWVzc2FnZS5tZXNzYWdlX2lkICYmIGF1ZGlvSGVhZGVycyA/IChcbiAgICAgICAgICAgIDxBdWRpb1BsYXllclxuICAgICAgICAgICAgICBhdWRpb1VybD17YXVkaW9VcmxCdWlsZGVyKG1lc3NhZ2UubWVzc2FnZV9pZCl9XG4gICAgICAgICAgICAgIGhlYWRlcnM9e2F1ZGlvSGVhZGVyc31cbiAgICAgICAgICAgICAgcHJpbWFyeUNvbG9yPXtwcmltYXJ5Q29sb3J9XG4gICAgICAgICAgICAgIGF1dG9QbGF5PXthdXRvUGxheUF1ZGlvTWVzc2FnZUlkID09PSBtZXNzYWdlLm1lc3NhZ2VfaWR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmJ1YmJsZVN0eWxlLCBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc4cHgnIH19PlxuICAgICAgICAgICAgICA8TWljIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS50ZXh0IHx8ICdbQXVkaW8gcmVzcG9uc2VdJ308L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHttZXNzYWdlLnR5cGUgIT09ICdhdWRpbycgJiYgbWVzc2FnZS50ZXh0ICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc4cHgnLCBhbGlnblNlbGY6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5idWJibGVTdHlsZSwgcG9zaXRpb246ICdyZWxhdGl2ZScgfX0+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogMTIgfX0+XG4gICAgICAgICAgICAgIDxJbnRlcmFjdGl2ZUNvbnRlbnRcbiAgICAgICAgICAgICAgICBibG9ja3M9e2NvbnRlbnRCbG9ja3N9XG4gICAgICAgICAgICAgICAgcHJpbWFyeUNvbG9yPXtwcmltYXJ5Q29sb3J9XG4gICAgICAgICAgICAgICAgdGV4dENvbG9yPXtidWJibGVUZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgaXNBY3Rpb25hYmxlPXshaXNVc2VyICYmIGlzTGFzdE1lc3NhZ2UgJiYgIWlzQWdlbnRUeXBpbmd9XG4gICAgICAgICAgICAgICAgb25RdWlja0FjdGlvbj17b25RdWlja0FjdGlvbn1cbiAgICAgICAgICAgICAgICBvblNjaGVkdWxlQ29uZmlybT17b25TY2hlZHVsZUNvbmZpcm19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogRmVlZGJhY2sgcm93IGJlbG93IGFnZW50IG1lc3NhZ2UgKi99XG4gICAgICB7c2hvd1RodW1ic0FyZWEgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXtmZWVkYmFja1Jvd1N0eWxlfT5cbiAgICAgICAgICB7ZmVlZGJhY2tWYWx1ZSA/IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3NpbmdsZUljb25TdHlsZX0+XG4gICAgICAgICAgICAgIHtmZWVkYmFja1ZhbHVlID09PSAnZ29vZCcgPyAoXG4gICAgICAgICAgICAgICAgPFRodW1ic1VwIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxUaHVtYnNEb3duIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aWNvbkJ1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdmZWVkYmFjay50aHVtYnNVcCcpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIFVzZSBtZXNzYWdlX2lkIGZyb20gc29ja2V0LCBmYWxsYmFjayB0byBpZCBpZiBtZXNzYWdlX2lkIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZ0lkID0gbWVzc2FnZS5tZXNzYWdlX2lkIHx8IChtZXNzYWdlIGFzIGFueSkuaWQ7XG4gICAgICAgICAgICAgICAgICBpZiAobXNnSWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1zZ0lkLCAnZ29vZCcpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUaHVtYnNVcCBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3NlcGFyYXRvclN0eWxlfSAvPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e2ljb25CdXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgICB0aXRsZT17dCgnZmVlZGJhY2sudGh1bWJzRG93bicpfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIC8vIFVzZSBtZXNzYWdlX2lkIGZyb20gc29ja2V0LCBmYWxsYmFjayB0byBpZCBpZiBtZXNzYWdlX2lkIGRvZXNuJ3QgZXhpc3RcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZ0lkID0gbWVzc2FnZS5tZXNzYWdlX2lkIHx8IChtZXNzYWdlIGFzIGFueSkuaWQ7XG4gICAgICAgICAgICAgICAgICBpZiAobXNnSWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1zZ0lkLCAnYmFkJyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRodW1ic0Rvd24gc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcbiJdfQ==
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdE1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGF0TWVzc2FnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFtQy9ELE1BQU0sQ0FBQyxJQUFNLG9CQUFvQixHQUErQixVQUFDLEVBcUJoRTtRQXBCQyxPQUFPLGFBQUEsRUFDUCxLQUFLLFdBQUEsRUFDTCxXQUFXLGlCQUFBLEVBQ1gsc0JBQXNCLEVBQXRCLGNBQWMsbUJBQUcsS0FBSyxLQUFBLEVBQ3RCLHlCQUF5QixFQUF6QixpQkFBaUIsbUJBQUcsS0FBSyxLQUFBLEVBQ3pCLFVBQVUsZ0JBQUEsRUFDVixlQUFlLHFCQUFBLEVBQ0QsZ0JBQWdCLGtCQUFBLEVBQzlCLGVBQWUscUJBQUEsRUFDZixZQUFZLGtCQUFBLEVBQ1oscUJBQXFCLEVBQXJCLGFBQWEsbUJBQUcsS0FBSyxLQUFBLEVBQ3JCLGFBQWEsbUJBQUEs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QUFFLGNBQWMsR0FBSSxFQUM5QixpQkFDRSxJQUFJLEVBQUMsUUFBUSxFQUNiLEtBQUssRUFBRSxlQUFlLEVBQ3RCLEtBQUssRUFBRSxDQUFDLENBQUMscUJBQXFCLENBQUMsRUFDL0IsT0FBTyxFQUFFO2dDQUNQLHlFQUF5RTtnQ0FDekUsSUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSyxPQUFlLENBQUMsRUFBRSxDQUFDO2dDQUN4RCxJQUFJLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztvQ0FDeEIsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztnQ0FDM0IsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLFNBQVM7Z0NBQ1gsQ0FBQzs0QkFDSCxDQUFDLFlBRUQsS0FBQyxVQUFVLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxHQUNqQixJQUNSLENBQ0osR0FDRyxDQUNQLElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFdlbGNvbWVDYXJkIH0gZnJvbSAnLi9XZWxjb21lQ2FyZCc7XG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgU2NoZWR1bGVJdGVtLCBUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBVc2VyLCBVc2VyWCwgQWxlcnRDaXJjbGUsIFRodW1ic1VwLCBUaHVtYnNEb3duLCBNaWMgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgQXVkaW9QbGF5ZXIgfSBmcm9tICcuL0F1ZGlvUGxheWVyJztcbmltcG9ydCB7IGZvcm1hdFRpbWVzdGFtcCB9IGZyb20gJy4uL3V0aWxzL3RpbWUnO1xuaW1wb3J0IHsgSW50ZXJhY3RpdmVDb250ZW50IH0gZnJvbSAnLi9JbnRlcmFjdGl2ZUNvbnRlbnQnO1xuaW1wb3J0IHsgcGFyc2VJbnRlcmFjdGl2ZUNvbnRlbnRCbG9ja3MgfSBmcm9tICcuLi91dGlscy9pbnRlcmFjdGl2ZUNvbnRlbnQnO1xuaW1wb3J0IHsgZGVmYXVsdFRyYW5zbGF0aW9ucywgZ2V0VHJhbnNsYXRpb25TdHJpbmcsIG1lcmdlVHJhbnNsYXRpb25zIH0gZnJvbSAnLi4vdXRpbHMvaTE4bic7XG5pbXBvcnQgeyBVcGxvYWRGaWxlUHJldmlldyB9IGZyb20gJy4vY29tbW9uL1VwbG9hZEZpbGVQcmV2aWV3JztcblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlUHJvcHMge1xuICBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgdGhlbWU/OiB7XG4gICAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfTtcbiAgb25QbGF5QXVkaW8/OiAodGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpc1BsYXlpbmdBdWRpbz86IGJvb2xlYW47XG4gIGlzRmlyc3RNZXNzYWdlPzogYm9vbGVhbjtcbiAgaXNOZXh0U2FtZVNwZWFrZXI/OiBib29sZWFuO1xuICBpc1ByZXZTYW1lU3BlYWtlcj86IGJvb2xlYW47XG4gIG9uRmVlZGJhY2s/OiAobWVzc2FnZUlkOiBzdHJpbmcsIHZhbHVlOiAnZ29vZCcgfCAnYmFkJykgPT4gdm9pZDtcbiAgZW5hYmxlVHlwZXdyaXRlcj86IGJvb2xlYW47XG4gIHdlbGNvbWVJbWFnZVVybD86IHN0cmluZztcbiAgd2VsY29tZVRpdGxlPzogc3RyaW5nO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgb25RdWlja1F1ZXJ5PzogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIGlzTGFzdE1lc3NhZ2U/OiBib29sZWFuO1xuICBvblF1aWNrQWN0aW9uPzogKHRleHQ6IHN0cmluZykgPT4gdm9pZDtcbiAgb25TY2hlZHVsZUNvbmZpcm0/OiAoc2NoZWR1bGU6IFNjaGVkdWxlSXRlbSkgPT4gdm9pZDtcbiAgdHJhbnNsYXRpb25zPzogVHJhbnNsYXRpb25zO1xuICBsYW5ndWFnZT86IHN0cmluZztcbiAgYWdlbnROYW1lPzogc3RyaW5nOyAvLyBDdXN0b20gYWdlbnQgbmFtZSB0byBkaXNwbGF5IGluc3RlYWQgb2YgdHJhbnNsYXRpb25cbiAgaXNBZ2VudFR5cGluZz86IGJvb2xlYW47IC8vIFdoZXRoZXIgYWdlbnQgaXMgY3VycmVudGx5IHR5cGluZy90aGlua2luZ1xuICBhdWRpb1VybEJ1aWxkZXI/OiAobWVzc2FnZUlkOiBzdHJpbmcpID0+IHN0cmluZztcbiAgYXVkaW9IZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgYXV0b1BsYXlBdWRpb01lc3NhZ2VJZD86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBDaGF0TWVzc2FnZUNvbXBvbmVudDogUmVhY3QuRkM8Q2hhdE1lc3NhZ2VQcm9wcz4gPSAoe1xuICBtZXNzYWdlLFxuICB0aGVtZSxcbiAgb25QbGF5QXVkaW8sXG4gIGlzRmlyc3RNZXNzYWdlID0gZmFsc2UsXG4gIGlzUHJldlNhbWVTcGVha2VyID0gZmFsc2UsXG4gIG9uRmVlZGJhY2ssXG4gIHdlbGNvbWVJbWFnZVVybCxcbiAgd2VsY29tZVRpdGxlOiB3ZWxjb21lVGl0bGVQcm9wLFxuICBwb3NzaWJsZVF1ZXJpZXMsXG4gIG9uUXVpY2tRdWVyeSxcbiAgaXNMYXN0TWVzc2FnZSA9IGZhbHNlLFxuICBvblF1aWNrQWN0aW9uLFxuICBvblNjaGVkdWxlQ29uZmlybSxcbiAgdHJhbnNsYXRpb25zOiBjdXN0b21UcmFuc2xhdGlvbnMsXG4gIGxhbmd1YWdlLFxuICBhZ2VudE5hbWUsXG4gIGlzQWdlbnRUeXBpbmcgPSBmYWxzZSxcbiAgYXVkaW9VcmxCdWlsZGVyLFxuICBhdWRpb0hlYWRlcnMsXG4gIGF1dG9QbGF5QXVkaW9NZXNzYWdlSWQsXG59KSA9PiB7XG4gIC8vIE1lcmdlIHRyYW5zbGF0aW9ucyB3aXRoIGRlZmF1bHRzXG4gIGNvbnN0IHRyYW5zbGF0aW9ucyA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gbWVyZ2VUcmFuc2xhdGlvbnMoY3VzdG9tVHJhbnNsYXRpb25zLCBkZWZhdWx0VHJhbnNsYXRpb25zKSxcbiAgICBbY3VzdG9tVHJhbnNsYXRpb25zXVxuICApO1xuXG4gIC8vIFRyYW5zbGF0aW9uIGhlbHBlclxuICBjb25zdCB0ID0gKGtleTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIGdldFRyYW5zbGF0aW9uU3RyaW5nKGtleSwgdHJhbnNsYXRpb25zLCBmYWxsYmFjayk7XG4gIH07XG4gIGNvbnN0IGlzVXNlciA9IG1lc3NhZ2Uuc3BlYWtlciA9PT0gJ2N1c3RvbWVyJztcbiAgY29uc3QgaXNTcGVjaWFsID0gbWVzc2FnZS5zcGVha2VyID09PSAnc3BlY2lhbCc7XG4gIGNvbnN0IGlzV2VsY29tZU1lc3NhZ2UgPSAhaXNVc2VyICYmICFpc1NwZWNpYWwgJiYgaXNGaXJzdE1lc3NhZ2U7XG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlZGl0aW5nRmVlZGJhY2tdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAvLyBUcmFjayB0aGUgbWVzc2FnZSB0ZXh0IGRpcmVjdGx5IChkb24ndCBzbmFwc2hvdCBvbiBtb3VudCk6IGxpdmUtdm9pY2UgY2FwdGlvblxuICAvLyBidWJibGVzIGdyb3cgdGhlaXIgdGV4dCBhcyB0aGUgdHJhbnNjcmlwdCBzdHJlYW1zLCBhbmQgYSBmcm96ZW4gc25hcHNob3Qgd291bGRcbiAgLy8gcGluIHRoZW0gdG8gdGhlIGZpcnN0IGNodW5rLiBOb3JtYWwgbWVzc2FnZXMgaGF2ZSBzdGFibGUgdGV4dCwgc28gdGhpcyBpcyBhXG4gIC8vIG5vLW9wIGZvciB0aGVtLiAoVGhlIGRpc2FibGVkIHR5cGV3cml0ZXIgYmVsb3cgY2FuIHJlLWludHJvZHVjZSBsb2NhbCBzdGF0ZS4pXG4gIGNvbnN0IGRpc3BsYXlUZXh0ID0gbWVzc2FnZS50ZXh0O1xuICBjb25zdCBjb250ZW50QmxvY2tzID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiBwYXJzZUludGVyYWN0aXZlQ29udGVudEJsb2NrcyhkaXNwbGF5VGV4dCwgbWVzc2FnZT8udHlwZSBhcyAnZmlsZScgfCAnbWVzc2FnZScgfCB1bmRlZmluZWQpLFxuICAgIFtkaXNwbGF5VGV4dF1cbiAgKTtcblxuICAvLyBGb3JtYXQgdGltZXN0YW1wIHdpdGggdHJhbnNsYXRpb25zXG4gIGNvbnN0IHRpbWVzdGFtcCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHRpbWVUcmFuc2xhdGlvbnMgPSB0cmFuc2xhdGlvbnM/LnRpbWUgPyB7XG4gICAgICBqdXN0Tm93OiB0cmFuc2xhdGlvbnMudGltZS5qdXN0Tm93LFxuICAgICAgdG9kYXk6IHRyYW5zbGF0aW9ucy50aW1lLnRvZGF5LFxuICAgICAgeWVzdGVyZGF5OiB0cmFuc2xhdGlvbnMudGltZS55ZXN0ZXJkYXksXG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKG1lc3NhZ2UuY3JlYXRlX3RpbWUsIGxhbmd1YWdlLCB0aW1lVHJhbnNsYXRpb25zKTtcbiAgfSwgW21lc3NhZ2UuY3JlYXRlX3RpbWUsIGxhbmd1YWdlLCB0cmFuc2xhdGlvbnNdKTtcblxuICAvLyBGYXN0IHR5cGV3cml0ZXIgZWZmZWN0IGZvciBuZXdseSBkaXNwbGF5ZWQgYWdlbnQgbWVzc2FnZXMsIGZpeCBsYXRlclxuICAvLyBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAvLyAgIGlmICghaXNVc2VyICYmICFpc1NwZWNpYWwgJiYgZW5hYmxlVHlwZXdyaXRlciAmJiBtZXNzYWdlLnRleHQgIT09IGxhc3RBbmltYXRlZFJlZi5jdXJyZW50KSB7XG4gIC8vICAgICBsYXN0QW5pbWF0ZWRSZWYuY3VycmVudCA9IG1lc3NhZ2UudGV4dDtcbiAgLy8gICAgIHNldElzVHlwZXdyaXRpbmcodHJ1ZSk7XG4gIC8vICAgICBzZXREaXNwbGF5VGV4dCgnJyk7XG4gIC8vICAgICBsZXQgaSA9IDA7XG4gIC8vICAgICBjb25zdCB0b3RhbCA9IG1lc3NhZ2UudGV4dC5sZW5ndGg7XG4gIC8vICAgICBjb25zdCB0aWNrTXMgPSAxNjtcbiAgLy8gICAgIGNvbnN0IHRhcmdldE1zID0gMTIwMDtcbiAgLy8gICAgIGNvbnN0IGNoYXJzUGVyVGljayA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQodG90YWwgLyAodGFyZ2V0TXMgLyB0aWNrTXMpKSk7XG4gIC8vICAgICBjb25zdCBpbnRlcnZhbCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gIC8vICAgICAgIGkgKz0gY2hhcnNQZXJUaWNrO1xuICAvLyAgICAgICBpZiAoaSA+PSB0b3RhbCkge1xuICAvLyAgICAgICAgIHNldERpc3BsYXlUZXh0KG1lc3NhZ2UudGV4dCk7XG4gIC8vICAgICAgICAgc2V0SXNUeXBld3JpdGluZyhmYWxzZSk7XG4gIC8vICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAvLyAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgIHNldERpc3BsYXlUZXh0KG1lc3NhZ2UudGV4dC5zbGljZSgwLCBpKSk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0sIHRpY2tNcyk7XG4gIC8vICAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQpO1xuICAvLyAgICAgc2V0SXNUeXBld3JpdGluZyhmYWxzZSk7XG4gIC8vICAgfVxuICAvLyB9LCBbbWVzc2FnZS50ZXh0LCBlbmFibGVUeXBld3JpdGVyLCBpc1VzZXIsIGlzU3BlY2lhbF0pO1xuXG4gIC8vIFVwZGF0ZWQgZGVzaWduIGNvbG9yc1xuICBjb25zdCB1c2VyQnViYmxlQmdDb2xvciA9ICcjRTRFNEU3JzsgLy8gZ3JleSBmb3IgdXNlclxuICBjb25zdCB1c2VyVGV4dENvbG9yID0gJyMwMDAwMDAnO1xuICBjb25zdCBhZ2VudFRleHRDb2xvciA9IHRoZW1lPy50ZXh0Q29sb3IgfHwgJyMwMDAwMDAnO1xuICBjb25zdCBwcmltYXJ5Q29sb3IgPSB0aGVtZT8ucHJpbWFyeUNvbG9yIHx8ICcjNGY0NmU1JztcbiAgY29uc3QgZm9udEZhbWlseSA9IHRoZW1lPy5mb250RmFtaWx5IHx8ICdSb2JvdG8sIEFyaWFsLCBzYW5zLXNlcmlmJztcbiAgY29uc3QgZm9udFNpemUgPSB0aGVtZT8uZm9udFNpemUgfHwgJzE1cHgnO1xuICBjb25zdCBidWJibGVUZXh0Q29sb3IgPSBpc1VzZXIgPyB1c2VyVGV4dENvbG9yIDogYWdlbnRUZXh0Q29sb3I7XG5cbiAgY29uc3QgbWVzc2FnZUNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIG1hcmdpbkJvdHRvbTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnOHB4JyA6ICc4cHgnLFxuICAgIG1hcmdpblRvcDogaXNQcmV2U2FtZVNwZWFrZXIgPyAnMHB4JyA6ICcxNnB4JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBhbGlnbkl0ZW1zOiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICB9O1xuXG4gIGNvbnN0IGxhYmVsUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnbm9uZScgOiAnZmxleCcsXG4gICAgd2lkdGg6ICc4MCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgZ2FwOiAnOHB4JyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VMYWJlbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICBsaW5lSGVpZ2h0OiAxLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgfTtcblxuICBjb25zdCB0b3BUaW1lc3RhbXBTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEzcHgnLFxuICAgIGNvbG9yOiAnIzZiNzI4MCcsXG4gICAgbGluZUhlaWdodDogMSxcbiAgfTtcblxuICBjb25zdCBtZXNzYWdlQnViYmxlQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIG1heFdpZHRoOiAnODAlJyxcbiAgfTtcblxuICAvLyBPbmx5IHVzZXIncyBtZXNzYWdlcyBzaG91bGQgcmVuZGVyIGFzIGJ1YmJsZXMuXG4gIC8vIEFnZW50IG1lc3NhZ2VzIGFyZSBwbGFpbiB0ZXh0IHdpdGggbm8gY29udGFpbmVyIGJhY2tncm91bmQuXG4gIGNvbnN0IGJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0gaXNVc2VyXG4gICAgPyB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdXNlckJ1YmJsZUJnQ29sb3IsXG4gICAgICAgIGNvbG9yOiB1c2VyVGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTJweCAwIDEycHggMTJweCcsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4wOCknXG4gICAgICB9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY29sb3I6IGFnZW50VGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZSdcbiAgICAgIH07XG5cbiAgY29uc3QgYXR0YWNobWVudHNDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBtYXJnaW5Ub3A6ICc4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBnYXA6ICc4cHgnLFxuICB9O1xuXG4gIC8vIEZlZWRiYWNrIHN0YXRlIGFuZCBVSSAodGh1bWJzIHVwL2Rvd24pIGZvciBhZ2VudCBtZXNzYWdlc1xuICBjb25zdCBmZWVkYmFja1ZhbHVlID0gKG1lc3NhZ2UuZmVlZGJhY2sgJiYgbWVzc2FnZS5mZWVkYmFjay5sZW5ndGggPiAwKVxuICAgID8gbWVzc2FnZS5mZWVkYmFja1ttZXNzYWdlLmZlZWRiYWNrLmxlbmd0aCAtIDFdLmZlZWRiYWNrXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgdGh1bWJzU2hvdWxkU2hvdyA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbCAmJiBpc0hvdmVyZWQgJiYgIWZlZWRiYWNrVmFsdWU7XG4gIGNvbnN0IHNob3dUaHVtYnNBcmVhID0gIWlzVXNlciAmJiAhaXNTcGVjaWFsOyAvLyBPbmx5IGFnZW50cyBoYXZlIHRodW1icyBhcmVhXG5cbiAgY29uc3QgZmVlZGJhY2tSb3dTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiBzaG93VGh1bWJzQXJlYSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBtYXJnaW5Ub3A6IDgsXG4gICAgYWxpZ25TZWxmOiAnZmxleC1zdGFydCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICBnYXA6IDgsXG4gICAgdmlzaWJpbGl0eTogdGh1bWJzU2hvdWxkU2hvdyB8fCAhIWZlZWRiYWNrVmFsdWUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgfTtcblxuICBjb25zdCBpY29uQnV0dG9uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGNvbG9yOiAnIzljYTNhZicsXG4gICAgZGlzcGxheTogdGh1bWJzU2hvdWxkU2hvdyA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfTtcblxuICBjb25zdCBzZXBhcmF0b3JTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogMSxcbiAgICBoZWlnaHQ6IDE0LFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNlNWU3ZWInLFxuICAgIGRpc3BsYXk6IHRodW1ic1Nob3VsZFNob3cgPyAnYmxvY2snIDogJ25vbmUnLFxuICB9O1xuXG4gIGNvbnN0IHNpbmdsZUljb25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgIGRpc3BsYXk6IGZlZWRiYWNrVmFsdWUgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH07XG5cbiAgbGV0IHdlbGNvbWVUaXRsZSA9IHdlbGNvbWVUaXRsZVByb3AgfHwgJyc7XG4gIGxldCB3ZWxjb21lQ29udGVudCA9ICcnO1xuICBcbiAgaWYgKGlzV2VsY29tZU1lc3NhZ2UpIHtcbiAgICBjb25zdCBtZXNzYWdlVGV4dCA9IG1lc3NhZ2UudGV4dDtcbiAgICBpZiAoIXdlbGNvbWVUaXRsZVByb3ApIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gbWVzc2FnZVRleHQuc3BsaXQoL1tcXG5cXC4hP10vKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB3ZWxjb21lVGl0bGUgPSAocGFydHNbMF0gfHwgJycpLnRyaW0oKTtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gbWVzc2FnZVRleHQuc3Vic3RyaW5nKHdlbGNvbWVUaXRsZS5sZW5ndGgpLnRyaW0oKTtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gd2VsY29tZUNvbnRlbnQucmVwbGFjZSgvXlssLiE/XFxzXSsvLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gbWVzc2FnZVRleHQ7XG4gICAgfVxuICB9XG5cbiAgLy8gSGFuZGxlIHNwZWNpYWwgbWVzc2FnZXMgKGxpa2UgdGFrZW92ZXIgaW5kaWNhdG9ycylcbiAgaWYgKGlzU3BlY2lhbCkge1xuICAgIGNvbnN0IHNwZWNpYWxNZXNzYWdlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIG1hcmdpbjogJzE2cHggMCcsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgIH07XG5cbiAgICAvLyBEZXRlcm1pbmUgaWNvbiBhbmQgc3R5bGUgYmFzZWQgb24gbWVzc2FnZSBjb250ZW50XG4gICAgLy8gQWdlbnQgb2ZmICYgc2VydmVyIGRvd25cbiAgICBjb25zdCBpc0FnZW50T2ZmT3JTZXJ2ZXJEb3duID1cbiAgICAgIG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdvZmZsaW5lJykgfHxcbiAgICAgIG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdpbmFjdGl2ZScpIHx8XG4gICAgICBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndW5hdmFpbGFibGUnKSB8fFxuICAgICAgKG1lc3NhZ2UubGlua1VybCAmJiBtZXNzYWdlLmxpbmtMYWJlbCk7XG4gICAgbGV0IGljb247XG4gICAgbGV0IGJhY2tncm91bmRDb2xvciA9ICcjRTNGMkZEJztcbiAgICBsZXQgdGV4dENvbG9yID0gJyMxOTc2RDInO1xuICAgIGlmIChpc0FnZW50T2ZmT3JTZXJ2ZXJEb3duKSB7XG4gICAgICBpY29uID0gPEFsZXJ0Q2lyY2xlIHNpemU9ezE4fSAvPjtcbiAgICAgIGJhY2tncm91bmRDb2xvciA9ICcjRkZGM0UwJztcbiAgICAgIHRleHRDb2xvciA9ICcjRjU3QzAwJztcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCd0b29rIG92ZXInKSB8fCBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndGFrZW92ZXInKSkge1xuICAgICAgaWNvbiA9IDxVc2VyWCBzaXplPXsxOH0gLz47XG4gICAgfSBlbHNlIHtcbiAgICAgIGljb24gPSA8VXNlciBzaXplPXsxOH0gLz47XG4gICAgfVxuXG4gICAgY29uc3Qgc3BlY2lhbEJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgY29sb3I6IHRleHRDb2xvcixcbiAgICAgIHBhZGRpbmc6ICc4cHggMTZweCcsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxNnB4JyxcbiAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgICBmb250RmFtaWx5LFxuICAgICAgZm9udFdlaWdodDogJzUwMCcsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyxcbiAgICAgIGdhcDogJzhweCcsXG4gICAgfTtcblxuICAgIGNvbnN0IGxpbmtTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGNvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICB0ZXh0RGVjb3JhdGlvbjogJ3VuZGVybGluZScsXG4gICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgICBmb250RmFtaWx5LFxuICAgICAgZm9udFdlaWdodDogJzUwMCcsXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXtzcGVjaWFsTWVzc2FnZVN0eWxlfT5cbiAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5zcGVjaWFsQnViYmxlU3R5bGUsIGZsZXhEaXJlY3Rpb246ICdyb3cnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICB7aWNvbn1cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogJzRweCcgfX0+XG4gICAgICAgICAgICA8c3Bhbj57bWVzc2FnZS50ZXh0fTwvc3Bhbj5cbiAgICAgICAgICAgIHttZXNzYWdlLmxpbmtVcmwgJiYgbWVzc2FnZS5saW5rTGFiZWwgJiYgKFxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9e21lc3NhZ2UubGlua1VybH1cbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtsaW5rU3R5bGV9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGUuc3RvcFByb3BhZ2F0aW9uKCl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7bWVzc2FnZS5saW5rTGFiZWx9XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc1dlbGNvbWVNZXNzYWdlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VDb250YWluZXJTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgLi4ubWVzc2FnZUJ1YmJsZUNvbnRhaW5lclN0eWxlIH19PlxuICAgICAgICAgIDxXZWxjb21lQ2FyZFxuICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgaW1hZ2VVcmw9e3dlbGNvbWVJbWFnZVVybH1cbiAgICAgICAgICAgIHRpdGxlPXt3ZWxjb21lVGl0bGV9XG4gICAgICAgICAgICBjb250ZW50PXt3ZWxjb21lQ29udGVudH1cbiAgICAgICAgICAgIHBvc3NpYmxlUXVlcmllcz17cG9zc2libGVRdWVyaWVzfVxuICAgICAgICAgICAgb25RdWlja1F1ZXJ5PXtvblF1aWNrUXVlcnl9XG4gICAgICAgICAgICBpc0FnZW50VHlwaW5nPXtpc0FnZW50VHlwaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBcbiAgICAgIHN0eWxlPXttZXNzYWdlQ29udGFpbmVyU3R5bGV9XG4gICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldElzSG92ZXJlZCh0cnVlKX1cbiAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4geyBpZiAoIWVkaXRpbmdGZWVkYmFjaykgc2V0SXNIb3ZlcmVkKGZhbHNlKTsgfX1cbiAgICA+XG4gICAgICA8ZGl2IHN0eWxlPXtsYWJlbFJvd1N0eWxlfT5cbiAgICAgICAge2lzVXNlciA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17dG9wVGltZXN0YW1wU3R5bGV9Pnt0aW1lc3RhbXB9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttZXNzYWdlTGFiZWxTdHlsZX0+e3QoJ2xhYmVscy55b3UnKX08L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZUxhYmVsU3R5bGV9PnthZ2VudE5hbWUgfHwgdCgnbGFiZWxzLmFnZW50Jyl9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt0b3BUaW1lc3RhbXBTdHlsZX0+e3RpbWVzdGFtcH08L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7bWVzc2FnZS5hdHRhY2htZW50cyAmJiBtZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmF0dGFjaG1lbnRzQ29udGFpbmVyU3R5bGUsIGFsaWduSXRlbXM6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAge21lc3NhZ2UuYXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPFVwbG9hZEZpbGVQcmV2aWV3IGtleT17aW5kZXh9IGZpbGU9e2F0dGFjaG1lbnR9IC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAge21lc3NhZ2UudHlwZSA9PT0gJ2F1ZGlvJyAmJiBpc1VzZXIgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNCwgYWxpZ25TZWxmOiAnZmxleC1lbmQnIH19PlxuICAgICAgICAgIHttZXNzYWdlLmF1ZGlvT2JqZWN0VXJsID8gKFxuICAgICAgICAgICAgPEF1ZGlvUGxheWVyIGJsb2JVcmw9e21lc3NhZ2UuYXVkaW9PYmplY3RVcmx9IHByaW1hcnlDb2xvcj17cHJpbWFyeUNvbG9yfSAvPlxuICAgICAgICAgICkgOiBhdWRpb1VybEJ1aWxkZXIgJiYgbWVzc2FnZS5tZXNzYWdlX2lkICYmIGF1ZGlvSGVhZGVycyA/IChcbiAgICAgICAgICAgIDxBdWRpb1BsYXllciBhdWRpb1VybD17YXVkaW9VcmxCdWlsZGVyKG1lc3NhZ2UubWVzc2FnZV9pZCl9IGhlYWRlcnM9e2F1ZGlvSGVhZGVyc30gcHJpbWFyeUNvbG9yPXtwcmltYXJ5Q29sb3J9IC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgLi4uYnViYmxlU3R5bGUsIGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzhweCcgfX0+XG4gICAgICAgICAgICAgIDxNaWMgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgIDxzcGFuPnttZXNzYWdlLnRleHQgfHwgJ1tWb2ljZSBtZXNzYWdlXSd9PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7bWVzc2FnZS50eXBlID09PSAnYXVkaW8nICYmICFpc1VzZXIgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogNCwgYWxpZ25TZWxmOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAge2F1ZGlvVXJsQnVpbGRlciAmJiBtZXNzYWdlLm1lc3NhZ2VfaWQgJiYgYXVkaW9IZWFkZXJzID8gKFxuICAgICAgICAgICAgPEF1ZGlvUGxheWVyXG4gICAgICAgICAgICAgIGF1ZGlvVXJsPXthdWRpb1VybEJ1aWxkZXIobWVzc2FnZS5tZXNzYWdlX2lkKX1cbiAgICAgICAgICAgICAgaGVhZGVycz17YXVkaW9IZWFkZXJzfVxuICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9e3ByaW1hcnlDb2xvcn1cbiAgICAgICAgICAgICAgYXV0b1BsYXk9e2F1dG9QbGF5QXVkaW9NZXNzYWdlSWQgPT09IG1lc3NhZ2UubWVzc2FnZV9pZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgLi4uYnViYmxlU3R5bGUsIGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzhweCcgfX0+XG4gICAgICAgICAgICAgIDxNaWMgc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgIDxzcGFuPnttZXNzYWdlLnRleHQgfHwgJ1tBdWRpbyByZXNwb25zZV0nfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAge21lc3NhZ2UudHlwZSAhPT0gJ2F1ZGlvJyAmJiBtZXNzYWdlLnRleHQgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzhweCcsIGFsaWduU2VsZjogaXNVc2VyID8gJ2ZsZXgtZW5kJyA6ICdmbGV4LXN0YXJ0JyB9fT5cbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmJ1YmJsZVN0eWxlLCBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9fT5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiAxMiB9fT5cbiAgICAgICAgICAgICAgPEludGVyYWN0aXZlQ29udGVudFxuICAgICAgICAgICAgICAgIGJsb2Nrcz17Y29udGVudEJsb2Nrc31cbiAgICAgICAgICAgICAgICBwcmltYXJ5Q29sb3I9e3ByaW1hcnlDb2xvcn1cbiAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9e2J1YmJsZVRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICBpc0FjdGlvbmFibGU9eyFpc1VzZXIgJiYgaXNMYXN0TWVzc2FnZSAmJiAhaXNBZ2VudFR5cGluZ31cbiAgICAgICAgICAgICAgICBvblF1aWNrQWN0aW9uPXtvblF1aWNrQWN0aW9ufVxuICAgICAgICAgICAgICAgIG9uU2NoZWR1bGVDb25maXJtPXtvblNjaGVkdWxlQ29uZmlybX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBGZWVkYmFjayByb3cgYmVsb3cgYWdlbnQgbWVzc2FnZSAqL31cbiAgICAgIHtzaG93VGh1bWJzQXJlYSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e2ZlZWRiYWNrUm93U3R5bGV9PlxuICAgICAgICAgIHtmZWVkYmFja1ZhbHVlID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17c2luZ2xlSWNvblN0eWxlfT5cbiAgICAgICAgICAgICAge2ZlZWRiYWNrVmFsdWUgPT09ICdnb29kJyA/IChcbiAgICAgICAgICAgICAgICA8VGh1bWJzVXAgc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRodW1ic0Rvd24gc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uQnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2ZlZWRiYWNrLnRodW1ic1VwJyl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gVXNlIG1lc3NhZ2VfaWQgZnJvbSBzb2NrZXQsIGZhbGxiYWNrIHRvIGlkIGlmIG1lc3NhZ2VfaWQgZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgICAgICAgY29uc3QgbXNnSWQgPSBtZXNzYWdlLm1lc3NhZ2VfaWQgfHwgKG1lc3NhZ2UgYXMgYW55KS5pZDtcbiAgICAgICAgICAgICAgICAgIGlmIChtc2dJZCAmJiBvbkZlZWRiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRmVlZGJhY2sobXNnSWQsICdnb29kJyk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRodW1ic1VwIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c2VwYXJhdG9yU3R5bGV9IC8+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aWNvbkJ1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdmZWVkYmFjay50aHVtYnNEb3duJyl9XG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgLy8gVXNlIG1lc3NhZ2VfaWQgZnJvbSBzb2NrZXQsIGZhbGxiYWNrIHRvIGlkIGlmIG1lc3NhZ2VfaWQgZG9lc24ndCBleGlzdFxuICAgICAgICAgICAgICAgICAgY29uc3QgbXNnSWQgPSBtZXNzYWdlLm1lc3NhZ2VfaWQgfHwgKG1lc3NhZ2UgYXMgYW55KS5pZDtcbiAgICAgICAgICAgICAgICAgIGlmIChtc2dJZCAmJiBvbkZlZWRiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIG9uRmVlZGJhY2sobXNnSWQsICdiYWQnKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGh1bWJzRG93biBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19
|
|
@@ -24,8 +24,14 @@ interface DynamicFormMessageProps {
|
|
|
24
24
|
isSubmitted: boolean;
|
|
25
25
|
primaryColor?: string;
|
|
26
26
|
fontFamily?: string;
|
|
27
|
-
/**
|
|
28
|
-
|
|
27
|
+
/**
|
|
28
|
+
* "card" = inline chat bubble
|
|
29
|
+
* "footer" = compact footer layout
|
|
30
|
+
* "fullscreen" = fills the chat panel; message shown as a heading on top
|
|
31
|
+
*/
|
|
32
|
+
variant?: 'card' | 'footer' | 'fullscreen';
|
|
33
|
+
/** Optional heading above the message (e.g. the agent name) for the fullscreen layout. */
|
|
34
|
+
title?: string;
|
|
29
35
|
}
|
|
30
36
|
declare const DynamicFormMessage: React.FC<DynamicFormMessageProps>;
|
|
31
37
|
export default DynamicFormMessage;
|
|
@@ -12,12 +12,15 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
import { useState } from 'react';
|
|
14
14
|
var DynamicFormMessage = function (_a) {
|
|
15
|
-
var schema = _a.schema, onSubmit = _a.onSubmit, onCancel = _a.onCancel, isSubmitting = _a.isSubmitting, isSubmitted = _a.isSubmitted, _b = _a.primaryColor, primaryColor = _b === void 0 ? '#2563eb' : _b, _c = _a.fontFamily, fontFamily = _c === void 0 ? 'inherit' : _c, _d = _a.variant, variant = _d === void 0 ? 'card' : _d;
|
|
15
|
+
var schema = _a.schema, onSubmit = _a.onSubmit, onCancel = _a.onCancel, isSubmitting = _a.isSubmitting, isSubmitted = _a.isSubmitted, _b = _a.primaryColor, primaryColor = _b === void 0 ? '#2563eb' : _b, _c = _a.fontFamily, fontFamily = _c === void 0 ? 'inherit' : _c, _d = _a.variant, variant = _d === void 0 ? 'card' : _d, title = _a.title;
|
|
16
16
|
var _e = useState({}), formData = _e[0], setFormData = _e[1];
|
|
17
17
|
var _f = useState({}), errors = _f[0], setErrors = _f[1];
|
|
18
|
+
var _g = useState(null), focused = _g[0], setFocused = _g[1];
|
|
18
19
|
var isFooter = variant === 'footer';
|
|
20
|
+
var isFullscreen = variant === 'fullscreen';
|
|
19
21
|
var allFieldsOptional = schema.fields.every(function (f) { return !f.required; });
|
|
20
22
|
var showCancel = !!onCancel && allFieldsOptional && !isSubmitted;
|
|
23
|
+
var disabled = isSubmitted || isSubmitting;
|
|
21
24
|
var handleChange = function (name, value) {
|
|
22
25
|
setFormData(function (prev) {
|
|
23
26
|
var _a;
|
|
@@ -48,82 +51,123 @@ var DynamicFormMessage = function (_a) {
|
|
|
48
51
|
onSubmit(formData);
|
|
49
52
|
};
|
|
50
53
|
// ── Styles (variant-aware) ──
|
|
51
|
-
var
|
|
52
|
-
? { width: '100%' }
|
|
53
|
-
:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
54
|
+
var formStyle = isFullscreen
|
|
55
|
+
? { display: 'flex', flexDirection: 'column', height: '100%', width: '100%', fontFamily: fontFamily }
|
|
56
|
+
: isFooter
|
|
57
|
+
? { width: '100%', fontFamily: fontFamily }
|
|
58
|
+
: {
|
|
59
|
+
backgroundColor: '#ffffff',
|
|
60
|
+
border: '1px solid #e5e7eb',
|
|
61
|
+
borderRadius: '14px',
|
|
62
|
+
padding: '16px',
|
|
63
|
+
maxWidth: '100%',
|
|
64
|
+
fontFamily: fontFamily,
|
|
65
|
+
boxShadow: '0 1px 2px rgba(0,0,0,0.04)',
|
|
66
|
+
};
|
|
67
|
+
var headerStyle = {
|
|
68
|
+
padding: isFullscreen ? '20px 22px 16px' : 0,
|
|
69
|
+
borderBottom: isFullscreen ? '1px solid #eef0f3' : 'none',
|
|
70
|
+
flexShrink: 0,
|
|
66
71
|
};
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
var titleStyle = {
|
|
73
|
+
fontSize: '13px',
|
|
74
|
+
fontWeight: 700,
|
|
75
|
+
color: primaryColor,
|
|
76
|
+
letterSpacing: '0.02em',
|
|
77
|
+
textTransform: 'uppercase',
|
|
78
|
+
marginBottom: '6px',
|
|
79
|
+
};
|
|
80
|
+
var messageStyle = {
|
|
81
|
+
fontSize: isFullscreen ? '18px' : isFooter ? '13px' : '15px',
|
|
82
|
+
lineHeight: 1.4,
|
|
83
|
+
color: isFullscreen ? '#111827' : '#374151',
|
|
84
|
+
marginBottom: isFullscreen ? 0 : isFooter ? '10px' : '14px',
|
|
85
|
+
fontWeight: isFullscreen ? 700 : 500,
|
|
72
86
|
};
|
|
87
|
+
var bodyStyle = isFullscreen
|
|
88
|
+
? { flex: 1, overflowY: 'auto', padding: '18px 22px', display: 'flex', flexDirection: 'column', gap: '18px' }
|
|
89
|
+
: isFooter
|
|
90
|
+
? { maxHeight: '220px', overflowY: 'auto', paddingRight: '4px', display: 'flex', flexDirection: 'column', gap: '12px' }
|
|
91
|
+
: { display: 'flex', flexDirection: 'column', gap: '14px' };
|
|
73
92
|
var labelStyle = {
|
|
74
93
|
display: 'block',
|
|
75
|
-
fontSize:
|
|
94
|
+
fontSize: '13px',
|
|
76
95
|
fontWeight: 600,
|
|
77
|
-
color: '#
|
|
78
|
-
marginBottom: '
|
|
79
|
-
fontFamily: fontFamily,
|
|
96
|
+
color: '#1f2937',
|
|
97
|
+
marginBottom: '6px',
|
|
80
98
|
};
|
|
81
99
|
var descriptionStyle = {
|
|
82
|
-
fontSize: '
|
|
100
|
+
fontSize: '12px',
|
|
83
101
|
color: '#6b7280',
|
|
84
|
-
|
|
85
|
-
|
|
102
|
+
marginTop: '-2px',
|
|
103
|
+
marginBottom: '7px',
|
|
104
|
+
lineHeight: 1.4,
|
|
86
105
|
};
|
|
87
|
-
var
|
|
106
|
+
var baseInputStyle = function (name) { return ({
|
|
88
107
|
width: '100%',
|
|
89
|
-
padding:
|
|
90
|
-
fontSize:
|
|
91
|
-
border:
|
|
92
|
-
borderRadius: '
|
|
108
|
+
padding: '10px 12px',
|
|
109
|
+
fontSize: '14px',
|
|
110
|
+
border: "1.5px solid ".concat(focused === name ? primaryColor : '#e5e7eb'),
|
|
111
|
+
borderRadius: '10px',
|
|
93
112
|
outline: 'none',
|
|
94
113
|
boxSizing: 'border-box',
|
|
95
|
-
backgroundColor:
|
|
114
|
+
backgroundColor: disabled ? '#f3f4f6' : '#ffffff',
|
|
115
|
+
color: '#111827',
|
|
96
116
|
fontFamily: fontFamily,
|
|
97
|
-
|
|
98
|
-
|
|
117
|
+
transition: 'border-color 120ms ease, box-shadow 120ms ease',
|
|
118
|
+
boxShadow: focused === name ? "0 0 0 3px ".concat(hexToSoftRing(primaryColor)) : 'none',
|
|
119
|
+
}); };
|
|
99
120
|
var errorStyle = {
|
|
100
121
|
fontSize: '12px',
|
|
101
122
|
color: '#ef4444',
|
|
102
|
-
marginTop: '
|
|
123
|
+
marginTop: '5px',
|
|
103
124
|
};
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
125
|
+
var footerStyle = __assign({ display: 'flex', gap: '10px', flexShrink: 0 }, (isFullscreen
|
|
126
|
+
? { padding: '16px 22px', borderTop: '1px solid #eef0f3' }
|
|
127
|
+
: { marginTop: isFooter ? '8px' : '14px' }));
|
|
128
|
+
var primaryButtonStyle = {
|
|
129
|
+
flex: 1,
|
|
130
|
+
padding: '11px 16px',
|
|
131
|
+
fontSize: '14px',
|
|
108
132
|
fontWeight: 600,
|
|
109
133
|
color: '#ffffff',
|
|
110
|
-
backgroundColor:
|
|
134
|
+
backgroundColor: disabled ? '#9ca3af' : primaryColor,
|
|
111
135
|
border: 'none',
|
|
112
|
-
borderRadius:
|
|
113
|
-
cursor:
|
|
114
|
-
opacity: isSubmitting ? 0.
|
|
115
|
-
|
|
136
|
+
borderRadius: '10px',
|
|
137
|
+
cursor: disabled ? 'not-allowed' : 'pointer',
|
|
138
|
+
opacity: isSubmitting ? 0.75 : 1,
|
|
139
|
+
fontFamily: fontFamily,
|
|
140
|
+
transition: 'opacity 120ms ease',
|
|
141
|
+
};
|
|
142
|
+
var skipButtonStyle = {
|
|
143
|
+
padding: '11px 16px',
|
|
144
|
+
fontSize: '14px',
|
|
145
|
+
fontWeight: 600,
|
|
146
|
+
color: '#6b7280',
|
|
147
|
+
backgroundColor: 'transparent',
|
|
148
|
+
border: '1.5px solid #e5e7eb',
|
|
149
|
+
borderRadius: '10px',
|
|
150
|
+
cursor: isSubmitting ? 'not-allowed' : 'pointer',
|
|
116
151
|
fontFamily: fontFamily,
|
|
117
152
|
};
|
|
118
|
-
var
|
|
119
|
-
|
|
120
|
-
alignItems: 'center',
|
|
121
|
-
gap: '8px',
|
|
153
|
+
var renderField = function (field) {
|
|
154
|
+
var _a;
|
|
155
|
+
return (_jsxs("div", { children: [_jsxs("label", { style: labelStyle, children: [field.label, field.required && _jsx("span", { style: { color: '#ef4444', marginLeft: '3px' }, children: "*" })] }), field.description && _jsx("div", { style: descriptionStyle, children: field.description }), field.type === 'text' && (_jsx("input", { type: "text", style: baseInputStyle(field.name), placeholder: field.placeholder || '', value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, onFocus: function () { return setFocused(field.name); }, onBlur: function () { return setFocused(null); }, disabled: disabled })), field.type === 'number' && (_jsx("input", { type: "number", style: baseInputStyle(field.name), placeholder: field.placeholder || '', value: formData[field.name] !== undefined ? String(formData[field.name]) : '', onChange: function (e) { return handleChange(field.name, e.target.value ? Number(e.target.value) : ''); }, onFocus: function () { return setFocused(field.name); }, onBlur: function () { return setFocused(null); }, disabled: disabled })), field.type === 'date' && (_jsx("input", { type: "date", style: baseInputStyle(field.name), value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, onFocus: function () { return setFocused(field.name); }, onBlur: function () { return setFocused(null); }, disabled: disabled })), field.type === 'select' && (_jsxs("select", { style: __assign(__assign({}, baseInputStyle(field.name)), { appearance: 'auto', cursor: disabled ? 'not-allowed' : 'pointer' }), value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, onFocus: function () { return setFocused(field.name); }, onBlur: function () { return setFocused(null); }, disabled: disabled, children: [_jsx("option", { value: "", children: field.placeholder || 'Select...' }), (_a = field.options) === null || _a === void 0 ? void 0 : _a.map(function (opt) { return (_jsx("option", { value: opt.value, children: opt.label }, opt.value)); })] })), field.type === 'boolean' && (_jsxs("label", { style: { display: 'flex', alignItems: 'center', gap: '10px', cursor: disabled ? 'not-allowed' : 'pointer' }, children: [_jsx("input", { type: "checkbox", checked: formData[field.name] || false, onChange: function (e) { return handleChange(field.name, e.target.checked); }, disabled: disabled, style: { width: '17px', height: '17px', accentColor: primaryColor, cursor: 'inherit' } }), _jsx("span", { style: { fontSize: '14px', color: '#374151' }, children: field.placeholder || 'Yes' })] })), errors[field.name] && _jsx("div", { style: errorStyle, children: errors[field.name] })] }, field.name));
|
|
122
156
|
};
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return (_jsxs("div", { style: fieldContainerStyle, children: [_jsxs("label", { style: labelStyle, children: [field.label, field.required && _jsx("span", { style: { color: '#ef4444', marginLeft: '2px' }, children: "*" })] }), field.description && (_jsx("div", { style: descriptionStyle, children: field.description })), field.type === 'text' && (_jsx("input", { type: "text", style: inputStyle, placeholder: field.placeholder || '', value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, disabled: isSubmitted || isSubmitting })), field.type === 'number' && (_jsx("input", { type: "number", style: inputStyle, placeholder: field.placeholder || '', value: formData[field.name] !== undefined ? String(formData[field.name]) : '', onChange: function (e) { return handleChange(field.name, e.target.value ? Number(e.target.value) : ''); }, disabled: isSubmitted || isSubmitting })), field.type === 'date' && (_jsx("input", { type: "date", style: inputStyle, value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, disabled: isSubmitted || isSubmitting })), field.type === 'select' && (_jsxs("select", { style: selectStyle, value: formData[field.name] || '', onChange: function (e) { return handleChange(field.name, e.target.value); }, disabled: isSubmitted || isSubmitting, children: [_jsx("option", { value: "", children: field.placeholder || 'Select...' }), (_a = field.options) === null || _a === void 0 ? void 0 : _a.map(function (opt) { return (_jsx("option", { value: opt.value, children: opt.label }, opt.value)); })] })), field.type === 'boolean' && (_jsxs("div", { style: checkboxContainerStyle, children: [_jsx("input", { type: "checkbox", checked: formData[field.name] || false, onChange: function (e) { return handleChange(field.name, e.target.checked); }, disabled: isSubmitted || isSubmitting, style: { width: '16px', height: '16px' } }), _jsx("span", { style: { fontSize: '14px', color: '#374151' }, children: field.placeholder || 'Yes' })] })), errors[field.name] && (_jsx("div", { style: errorStyle, children: errors[field.name] }))] }, field.name));
|
|
126
|
-
}) }), _jsxs("div", { style: { display: 'flex', gap: '8px', marginTop: isFooter ? '2px' : '4px' }, children: [showCancel && (_jsx("button", { type: "button", style: __assign(__assign({}, buttonStyle), { marginTop: 0, backgroundColor: 'transparent', color: '#6b7280', border: '1px solid #d1d5db', cursor: isSubmitting ? 'not-allowed' : 'pointer' }), disabled: isSubmitting, onClick: onCancel, children: "Skip" })), _jsx("button", { type: "submit", style: __assign(__assign({}, buttonStyle), { marginTop: 0 }), disabled: isSubmitted || isSubmitting, children: isSubmitted ? 'Submitted' : isSubmitting ? 'Submitting...' : 'Submit' })] })] }));
|
|
157
|
+
var buttons = (_jsxs("div", { style: footerStyle, children: [showCancel && (_jsx("button", { type: "button", style: skipButtonStyle, disabled: isSubmitting, onClick: onCancel, children: "Skip" })), _jsx("button", { type: "submit", style: primaryButtonStyle, disabled: disabled, children: isSubmitted ? 'Submitted' : isSubmitting ? 'Submitting…' : 'Submit' })] }));
|
|
158
|
+
return (_jsxs("form", { onSubmit: handleSubmit, style: formStyle, children: [(schema.message || (isFullscreen && title)) && (_jsxs("div", { style: headerStyle, children: [isFullscreen && title && _jsx("div", { style: titleStyle, children: title }), schema.message && _jsx("div", { style: messageStyle, children: schema.message })] })), _jsx("div", { style: bodyStyle, children: schema.fields.map(renderField) }), buttons] }));
|
|
127
159
|
};
|
|
160
|
+
/** Translucent version of the primary color for the focus ring (accepts #rgb/#rrggbb). */
|
|
161
|
+
function hexToSoftRing(hex) {
|
|
162
|
+
var m = hex.replace('#', '');
|
|
163
|
+
var full = m.length === 3 ? m.split('').map(function (c) { return c + c; }).join('') : m;
|
|
164
|
+
var int = parseInt(full, 16);
|
|
165
|
+
if (full.length !== 6 || Number.isNaN(int))
|
|
166
|
+
return 'rgba(37,99,235,0.15)';
|
|
167
|
+
var r = (int >> 16) & 255;
|
|
168
|
+
var g = (int >> 8) & 255;
|
|
169
|
+
var b = int & 255;
|
|
170
|
+
return "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", 0.15)");
|
|
171
|
+
}
|
|
128
172
|
export default DynamicFormMessage;
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0Zvcm1NZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvRHluYW1pY0Zvcm1NZXNzYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFjLEVBQUUsUUFBUSxFQUFpQixNQUFNLE9BQU8sQ0FBQztBQThCdkQsSUFBTSxrQkFBa0IsR0FBc0MsVUFBQyxFQVM5RDtRQVJDLE1BQU0sWUFBQSxFQUNOLFFBQVEsY0FBQSxFQUNSLFFBQVEsY0FBQSxFQUNSLFlBQVksa0JBQUEsRUFDWixXQUFXLGlCQUFBLEVBQ1gsb0JBQXdCLEVBQXhCLFlBQVksbUJBQUcsU0FBUyxLQUFBLEVBQ3hCLGtCQUFzQixFQUF0QixVQUFVLG1CQUFHLFNBQVMsS0FBQSxFQUN0QixlQUFnQixFQUFoQixPQUFPLG1CQUFHLE1BQU0sS0FBQTtJQUVWLElBQUEsS0FBMEIsUUFBUSxDQUEwQixFQUFFLENBQUMsRUFBOUQsUUFBUSxRQUFBLEVBQUUsV0FBVyxRQUF5QyxDQUFDO0lBQ2hFLElBQUEsS0FBc0IsUUFBUSxDQUF5QixFQUFFLENBQUMsRUFBekQsTUFBTSxRQUFBLEVBQUUsU0FBUyxRQUF3QyxDQUFDO0lBRWpFLElBQU0sUUFBUSxHQUFHLE9BQU8sS0FBSyxRQUFRLENBQUM7SUFDdEMsSUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBWCxDQUFXLENBQUMsQ0FBQztJQUNsRSxJQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJLGlCQUFpQixJQUFJLENBQUMsV0FBVyxDQUFDO0lBRW5FLElBQU0sWUFBWSxHQUFHLFVBQUMsSUFBWSxFQUFFLEtBQWM7UUFDaEQsV0FBVyxDQUFDLFVBQUMsSUFBSTs7WUFBSyxPQUFBLHVCQUFNLElBQUksZ0JBQUcsSUFBSSxJQUFH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U1NQcm9wZXJ0aWVzIH0gZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgRm9ybUZpZWxkIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdzZWxlY3QnIHwgJ2Jvb2xlYW4nIHwgJ2RhdGUnO1xuICBsYWJlbDogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgb3B0aW9ucz86IEFycmF5PHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9Pjtcbn1cblxuaW50ZXJmYWNlIEZvcm1TY2hlbWEge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGZpZWxkczogRm9ybUZpZWxkW107XG4gIG5vZGVfaWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER5bmFtaWNGb3JtTWVzc2FnZVByb3BzIHtcbiAgc2NoZW1hOiBGb3JtU2NoZW1hO1xuICBvblN1Ym1pdDogKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIGlzU3VibWl0dGluZzogYm9vbGVhbjtcbiAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW47XG4gIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgZm9udEZhbWlseT86IHN0cmluZztcbiAgLyoqIFwiY2FyZFwiID0gaW5saW5lIGNoYXQgYnViYmxlIChkZWZhdWx0KSwgXCJmb290ZXJcIiA9IGNvbXBhY3QgZm9vdGVyIGxheW91dCAqL1xuICB2YXJpYW50PzogJ2NhcmQnIHwgJ2Zvb3Rlcic7XG59XG5cbmNvbnN0IER5bmFtaWNGb3JtTWVzc2FnZTogUmVhY3QuRkM8RHluYW1pY0Zvcm1NZXNzYWdlUHJvcHM+ID0gKHtcbiAgc2NoZW1hLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIGlzU3VibWl0dGluZyxcbiAgaXNTdWJtaXR0ZWQsXG4gIHByaW1hcnlDb2xvciA9ICcjMjU2M2ViJyxcbiAgZm9udEZhbWlseSA9ICdpbmhlcml0JyxcbiAgdmFyaWFudCA9ICdjYXJkJyxcbn0pID0+IHtcbiAgY29uc3QgW2Zvcm1EYXRhLCBzZXRGb3JtRGF0YV0gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuICBjb25zdCBbZXJyb3JzLCBzZXRFcnJvcnNdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oe30pO1xuXG4gIGNvbnN0IGlzRm9vdGVyID0gdmFyaWFudCA9PT0gJ2Zvb3Rlcic7XG4gIGNvbnN0IGFsbEZpZWxkc09wdGlvbmFsID0gc2NoZW1hLmZpZWxkcy5ldmVyeSgoZikgPT4gIWYucmVxdWlyZWQpO1xuICBjb25zdCBzaG93Q2FuY2VsID0gISFvbkNhbmNlbCAmJiBhbGxGaWVsZHNPcHRpb25hbCAmJiAhaXNTdWJtaXR0ZWQ7XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKG5hbWU6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHtcbiAgICBzZXRGb3JtRGF0YSgocHJldikgPT4gKHsgLi4ucHJldiwgW25hbWVdOiB2YWx1ZSB9KSk7XG4gICAgaWYgKGVycm9yc1tuYW1lXSkge1xuICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSB7IC4uLnByZXYgfTtcbiAgICAgICAgZGVsZXRlIG5leHRbbmFtZV07XG4gICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVN1Ym1pdCA9IChlOiBSZWFjdC5Gb3JtRXZlbnQpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKGlzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZykgcmV0dXJuO1xuXG4gICAgY29uc3QgbmV3RXJyb3JzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgc2NoZW1hLmZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xuICAgICAgaWYgKGZpZWxkLnJlcXVpcmVkICYmICFmb3JtRGF0YVtmaWVsZC5uYW1lXSAmJiBmb3JtRGF0YVtmaWVsZC5uYW1lXSAhPT0gMCAmJiBmb3JtRGF0YVtmaWVsZC5uYW1lXSAhPT0gZmFsc2UpIHtcbiAgICAgICAgbmV3RXJyb3JzW2ZpZWxkLm5hbWVdID0gJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld0Vycm9ycykubGVuZ3RoID4gMCkge1xuICAgICAgc2V0RXJyb3JzKG5ld0Vycm9ycyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25TdWJtaXQoZm9ybURhdGEpO1xuICB9O1xuXG4gIC8vIOKUgOKUgCBTdHlsZXMgKHZhcmlhbnQtYXdhcmUpIOKUgOKUgFxuXG4gIGNvbnN0IGNvbnRhaW5lclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0gaXNGb290ZXJcbiAgICA/IHsgd2lkdGg6ICcxMDAlJyB9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmOWZhZmInLFxuICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2U1ZTdlYicsXG4gICAgICAgIGJvcmRlclJhZGl1czogJzEycHgnLFxuICAgICAgICBwYWRkaW5nOiAnMTZweCcsXG4gICAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogaXNGb290ZXIgPyAnMTNweCcgOiAnMTRweCcsXG4gICAgY29sb3I6ICcjMzc0MTUxJyxcbiAgICBtYXJnaW5Cb3R0b206IGlzRm9vdGVyID8gJzhweCcgOiAnMTJweCcsXG4gICAgZm9udFdlaWdodDogNTAwLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG5cbiAgY29uc3QgZmllbGRzV3JhcHBlclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0gaXNGb290ZXJcbiAgICA/IHsgbWF4SGVpZ2h0OiAnMjAwcHgnLCBvdmVyZmxvd1k6ICdhdXRvJywgcGFkZGluZ1JpZ2h0OiAnNHB4JyB9XG4gICAgOiB7fTtcblxuICBjb25zdCBmaWVsZENvbnRhaW5lclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIG1hcmdpbkJvdHRvbTogaXNGb290ZXIgPyAnOHB4JyA6ICcxMnB4JyxcbiAgfTtcblxuICBjb25zdCBsYWJlbFN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgZm9udFNpemU6IGlzRm9vdGVyID8gJzEycHgnIDogJzEzcHgnLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICBjb2xvcjogJyMzNzQxNTEnLFxuICAgIG1hcmdpbkJvdHRvbTogJzJweCcsXG4gICAgZm9udEZhbWlseSxcbiAgfTtcblxuICBjb25zdCBkZXNjcmlwdGlvblN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAnMTFweCcsXG4gICAgY29sb3I6ICcjNmI3MjgwJyxcbiAgICBtYXJnaW5Cb3R0b206ICczcHgnLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG5cbiAgY29uc3QgaW5wdXRTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6IGlzRm9vdGVyID8gJzZweCAxMHB4JyA6ICc4cHggMTJweCcsXG4gICAgZm9udFNpemU6IGlzRm9vdGVyID8gJzEzcHgnIDogJzE0cHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZDFkNWRiJyxcbiAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgIG91dGxpbmU6ICdub25lJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzU3VibWl0dGVkID8gJyNmM2Y0ZjYnIDogJyNmZmZmZmYnLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0U3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgLi4uaW5wdXRTdHlsZSxcbiAgICBhcHBlYXJhbmNlOiAnYXV0bycgYXMgY29uc3QsXG4gIH07XG5cbiAgY29uc3QgZXJyb3JTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIGNvbG9yOiAnI2VmNDQ0NCcsXG4gICAgbWFyZ2luVG9wOiAnMnB4JyxcbiAgfTtcblxuICBjb25zdCBidXR0b25TdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6IGlzRm9vdGVyID8gJzlweCAxNnB4JyA6ICcxMHB4IDE2cHgnLFxuICAgIGZvbnRTaXplOiBpc0Zvb3RlciA/ICcxM3B4JyA6ICcxNHB4JyxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgY29sb3I6ICcjZmZmZmZmJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzU3VibWl0dGVkID8gJyM5Y2EzYWYnIDogcHJpbWFyeUNvbG9yLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJvcmRlclJhZGl1czogaXNGb290ZXIgPyAnMTBweCcgOiAnOHB4JyxcbiAgICBjdXJzb3I6IGlzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZyA/ICdub3QtYWxsb3dlZCcgOiAncG9pbnRlcicsXG4gICAgb3BhY2l0eTogaXNTdWJtaXR0aW5nID8gMC43IDogMSxcbiAgICBtYXJnaW5Ub3A6IGlzRm9vdGVyID8gJzJweCcgOiAnNHB4JyxcbiAgICBmb250RmFtaWx5LFxuICB9O1xuXG4gIGNvbnN0IGNoZWNrYm94Q29udGFpbmVyU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogJzhweCcsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17aGFuZGxlU3VibWl0fSBzdHlsZT17Y29udGFpbmVyU3R5bGV9PlxuICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZVN0eWxlfT57c2NoZW1hLm1lc3NhZ2V9PC9kaXY+XG5cbiAgICAgIDxkaXYgc3R5bGU9e2ZpZWxkc1dyYXBwZXJTdHlsZX0+XG4gICAgICAgIHtzY2hlbWEuZmllbGRzLm1hcCgoZmllbGQpID0+IChcbiAgICAgICAgICA8ZGl2IGtleT17ZmllbGQubmFtZX0gc3R5bGU9e2ZpZWxkQ29udGFpbmVyU3R5bGV9PlxuICAgICAgICAgICAgPGxhYmVsIHN0eWxlPXtsYWJlbFN0eWxlfT5cbiAgICAgICAgICAgICAge2ZpZWxkLmxhYmVsfVxuICAgICAgICAgICAgICB7ZmllbGQucmVxdWlyZWQgJiYgPHNwYW4gc3R5bGU9e3sgY29sb3I6ICcjZWY0NDQ0JywgbWFyZ2luTGVmdDogJzJweCcgfX0+Kjwvc3Bhbj59XG4gICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICB7ZmllbGQuZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXtkZXNjcmlwdGlvblN0eWxlfT57ZmllbGQuZGVzY3JpcHRpb259PC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZmllbGQudHlwZSA9PT0gJ3RleHQnICYmIChcbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpbnB1dFN0eWxlfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtmaWVsZC5wbGFjZWhvbGRlciB8fCAnJ31cbiAgICAgICAgICAgICAgICB2YWx1ZT17KGZvcm1EYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZykgfHwgJyd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoZmllbGQubmFtZSwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRlZCB8fCBpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZmllbGQudHlwZSA9PT0gJ251bWJlcicgJiYgKFxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aW5wdXRTdHlsZX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17ZmllbGQucGxhY2Vob2xkZXIgfHwgJyd9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1EYXRhW2ZpZWxkLm5hbWVdICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoZm9ybURhdGFbZmllbGQubmFtZV0pIDogJyd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoZmllbGQubmFtZSwgZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIDogJycpfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRlZCB8fCBpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZmllbGQudHlwZSA9PT0gJ2RhdGUnICYmIChcbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpbnB1dFN0eWxlfVxuICAgICAgICAgICAgICAgIHZhbHVlPXsoZm9ybURhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKSB8fCAnJ31cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZShmaWVsZC5uYW1lLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHtmaWVsZC50eXBlID09PSAnc2VsZWN0JyAmJiAoXG4gICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICBzdHlsZT17c2VsZWN0U3R5bGV9XG4gICAgICAgICAgICAgICAgdmFsdWU9eyhmb3JtRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpIHx8ICcnfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQ2hhbmdlKGZpZWxkLm5hbWUsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0ZWQgfHwgaXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPntmaWVsZC5wbGFjZWhvbGRlciB8fCAnU2VsZWN0Li4uJ308L29wdGlvbj5cbiAgICAgICAgICAgICAgICB7ZmllbGQub3B0aW9ucz8ubWFwKChvcHQpID0+IChcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtvcHQudmFsdWV9IHZhbHVlPXtvcHQudmFsdWV9PlxuICAgICAgICAgICAgICAgICAgICB7b3B0LmxhYmVsfVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAge2ZpZWxkLnR5cGUgPT09ICdib29sZWFuJyAmJiAoXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e2NoZWNrYm94Q29udGFpbmVyU3R5bGV9PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9eyhmb3JtRGF0YVtmaWVsZC5uYW1lXSBhcyBib29sZWFuKSB8fCBmYWxzZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQ2hhbmdlKGZpZWxkLm5hbWUsIGUudGFyZ2V0LmNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAnMTZweCcsIGhlaWdodDogJzE2cHgnIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBmb250U2l6ZTogJzE0cHgnLCBjb2xvcjogJyMzNzQxNTEnIH19PlxuICAgICAgICAgICAgICAgICAge2ZpZWxkLnBsYWNlaG9sZGVyIHx8ICdZZXMnfVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7ZXJyb3JzW2ZpZWxkLm5hbWVdICYmIChcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17ZXJyb3JTdHlsZX0+e2Vycm9yc1tmaWVsZC5uYW1lXX08L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBnYXA6ICc4cHgnLCBtYXJnaW5Ub3A6IGlzRm9vdGVyID8gJzJweCcgOiAnNHB4JyB9fT5cbiAgICAgICAge3Nob3dDYW5jZWwgJiYgKFxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgLi4uYnV0dG9uU3R5bGUsXG4gICAgICAgICAgICAgIG1hcmdpblRvcDogMCxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICBjb2xvcjogJyM2YjcyODAnLFxuICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgI2QxZDVkYicsXG4gICAgICAgICAgICAgIGN1cnNvcjogaXNTdWJtaXR0aW5nID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgb25DbGljaz17b25DYW5jZWx9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgU2tpcFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICApfVxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgc3R5bGU9e3sgLi4uYnV0dG9uU3R5bGUsIG1hcmdpblRvcDogMCB9fVxuICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRlZCB8fCBpc1N1Ym1pdHRpbmd9XG4gICAgICAgID5cbiAgICAgICAgICB7aXNTdWJtaXR0ZWQgPyAnU3VibWl0dGVkJyA6IGlzU3VibWl0dGluZyA/ICdTdWJtaXR0aW5nLi4uJyA6ICdTdWJtaXQnfVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IER5bmFtaWNGb3JtTWVzc2FnZTtcbiJdfQ==
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1pY0Zvcm1NZXNzYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvRHluYW1pY0Zvcm1NZXNzYWdlLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxPQUFjLEVBQUUsUUFBUSxFQUFpQixNQUFNLE9BQU8sQ0FBQztBQW9DdkQsSUFBTSxrQkFBa0IsR0FBc0MsVUFBQyxFQVU5RDtRQVRDLE1BQU0sWUFBQSxFQUNOLFFBQVEsY0FBQSxFQUNSLFFBQVEsY0FBQSxFQUNSLFlBQVksa0JBQUEsRUFDWixXQUFXLGlCQUFBLEVBQ1gsb0JBQXdCLEVBQXhCLFlBQVksbUJBQUcsU0FBUyxLQUFBLEVBQ3hCLGtCQUFzQixFQUF0QixVQUFVLG1CQUFHLFNBQVMsS0FBQSxFQUN0QixlQUFnQixFQUFoQixPQUFPLG1CQUFHLE1BQU0sS0FBQSxFQUNoQixLQUFLLFdBQUE7SUFFQyxJQUFBLEtBQTBCLFFBQVEsQ0FBMEIsRUFBRSxDQUFDLEVBQTlELFFBQVEsUUFBQSxFQUFFLFdBQVcsUUFBeUMsQ0FBQztJQUNoRSxJQUFBLEtBQXNCLFFBQVEsQ0FBeUIsRUFBRSxDQUFDLEVBQXpELE1BQU0sUUFBQSxFQUFFLFNBQVMsUUFBd0MsQ0FBQztJQUMzRCxJQUFBLEtBQXdCLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDLEVBQXBELE9BQU8sUUFBQSxFQUFFLFVBQVUsUUFBaUMsQ0FBQztJQUU1RCxJQUFNLFFBQVEsR0FBRyxPQUFPLEtBQUssUUFBUSxDQUFDO0lBQ3RDLElBQU0sWUFBWSxHQUFHLE9BQU8sS0FBSyxZQUFZLENBQUM7SUFDOUMsSUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBWCxDQUFXLENBQUMsQ0FBQztJQUNsRSxJQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJ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O0FBQ3hDLENBQUM7QUFFRCxlQUFlLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCBDU1NQcm9wZXJ0aWVzIH0gZnJvbSAncmVhY3QnO1xuXG5pbnRlcmZhY2UgRm9ybUZpZWxkIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdzZWxlY3QnIHwgJ2Jvb2xlYW4nIHwgJ2RhdGUnO1xuICBsYWJlbDogc3RyaW5nO1xuICByZXF1aXJlZD86IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgb3B0aW9ucz86IEFycmF5PHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9Pjtcbn1cblxuaW50ZXJmYWNlIEZvcm1TY2hlbWEge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGZpZWxkczogRm9ybUZpZWxkW107XG4gIG5vZGVfaWQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIER5bmFtaWNGb3JtTWVzc2FnZVByb3BzIHtcbiAgc2NoZW1hOiBGb3JtU2NoZW1hO1xuICBvblN1Ym1pdDogKGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIGlzU3VibWl0dGluZzogYm9vbGVhbjtcbiAgaXNTdWJtaXR0ZWQ6IGJvb2xlYW47XG4gIHByaW1hcnlDb2xvcj86IHN0cmluZztcbiAgZm9udEZhbWlseT86IHN0cmluZztcbiAgLyoqXG4gICAqIFwiY2FyZFwiICAgICAgID0gaW5saW5lIGNoYXQgYnViYmxlXG4gICAqIFwiZm9vdGVyXCIgICAgID0gY29tcGFjdCBmb290ZXIgbGF5b3V0XG4gICAqIFwiZnVsbHNjcmVlblwiID0gZmlsbHMgdGhlIGNoYXQgcGFuZWw7IG1lc3NhZ2Ugc2hvd24gYXMgYSBoZWFkaW5nIG9uIHRvcFxuICAgKi9cbiAgdmFyaWFudD86ICdjYXJkJyB8ICdmb290ZXInIHwgJ2Z1bGxzY3JlZW4nO1xuICAvKiogT3B0aW9uYWwgaGVhZGluZyBhYm92ZSB0aGUgbWVzc2FnZSAoZS5nLiB0aGUgYWdlbnQgbmFtZSkgZm9yIHRoZSBmdWxsc2NyZWVuIGxheW91dC4gKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IER5bmFtaWNGb3JtTWVzc2FnZTogUmVhY3QuRkM8RHluYW1pY0Zvcm1NZXNzYWdlUHJvcHM+ID0gKHtcbiAgc2NoZW1hLFxuICBvblN1Ym1pdCxcbiAgb25DYW5jZWwsXG4gIGlzU3VibWl0dGluZyxcbiAgaXNTdWJtaXR0ZWQsXG4gIHByaW1hcnlDb2xvciA9ICcjMjU2M2ViJyxcbiAgZm9udEZhbWlseSA9ICdpbmhlcml0JyxcbiAgdmFyaWFudCA9ICdjYXJkJyxcbiAgdGl0bGUsXG59KSA9PiB7XG4gIGNvbnN0IFtmb3JtRGF0YSwgc2V0Rm9ybURhdGFdID0gdXNlU3RhdGU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHt9KTtcbiAgY29uc3QgW2Vycm9ycywgc2V0RXJyb3JzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KTtcbiAgY29uc3QgW2ZvY3VzZWQsIHNldEZvY3VzZWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaXNGb290ZXIgPSB2YXJpYW50ID09PSAnZm9vdGVyJztcbiAgY29uc3QgaXNGdWxsc2NyZWVuID0gdmFyaWFudCA9PT0gJ2Z1bGxzY3JlZW4nO1xuICBjb25zdCBhbGxGaWVsZHNPcHRpb25hbCA9IHNjaGVtYS5maWVsZHMuZXZlcnkoKGYpID0+ICFmLnJlcXVpcmVkKTtcbiAgY29uc3Qgc2hvd0NhbmNlbCA9ICEhb25DYW5jZWwgJiYgYWxsRmllbGRzT3B0aW9uYWwgJiYgIWlzU3VibWl0dGVkO1xuICBjb25zdCBkaXNhYmxlZCA9IGlzU3VibWl0dGVkIHx8IGlzU3VibWl0dGluZztcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAobmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIHNldEZvcm1EYXRhKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBbbmFtZV06IHZhbHVlIH0pKTtcbiAgICBpZiAoZXJyb3JzW25hbWVdKSB7XG4gICAgICBzZXRFcnJvcnMoKHByZXYpID0+IHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHsgLi4ucHJldiB9O1xuICAgICAgICBkZWxldGUgbmV4dFtuYW1lXTtcbiAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKGU6IFJlYWN0LkZvcm1FdmVudCkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoaXNTdWJtaXR0ZWQgfHwgaXNTdWJtaXR0aW5nKSByZXR1cm47XG5cbiAgICBjb25zdCBuZXdFcnJvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBzY2hlbWEuZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICBpZiAoZmllbGQucmVxdWlyZWQgJiYgIWZvcm1EYXRhW2ZpZWxkLm5hbWVdICYmIGZvcm1EYXRhW2ZpZWxkLm5hbWVdICE9PSAwICYmIGZvcm1EYXRhW2ZpZWxkLm5hbWVdICE9PSBmYWxzZSkge1xuICAgICAgICBuZXdFcnJvcnNbZmllbGQubmFtZV0gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3RXJyb3JzKS5sZW5ndGggPiAwKSB7XG4gICAgICBzZXRFcnJvcnMobmV3RXJyb3JzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvblN1Ym1pdChmb3JtRGF0YSk7XG4gIH07XG5cbiAgLy8g4pSA4pSAIFN0eWxlcyAodmFyaWFudC1hd2FyZSkg4pSA4pSAXG5cbiAgY29uc3QgZm9ybVN0eWxlOiBDU1NQcm9wZXJ0aWVzID0gaXNGdWxsc2NyZWVuXG4gICAgPyB7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogJzEwMCUnLCB3aWR0aDogJzEwMCUnLCBmb250RmFtaWx5IH1cbiAgICA6IGlzRm9vdGVyXG4gICAgPyB7IHdpZHRoOiAnMTAwJScsIGZvbnRGYW1pbHkgfVxuICAgIDoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmZmZmJyxcbiAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlNWU3ZWInLFxuICAgICAgICBib3JkZXJSYWRpdXM6ICcxNHB4JyxcbiAgICAgICAgcGFkZGluZzogJzE2cHgnLFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICBib3hTaGFkb3c6ICcwIDFweCAycHggcmdiYSgwLDAsMCwwLjA0KScsXG4gICAgICB9O1xuXG4gIGNvbnN0IGhlYWRlclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBhZGRpbmc6IGlzRnVsbHNjcmVlbiA/ICcyMHB4IDIycHggMTZweCcgOiAwLFxuICAgIGJvcmRlckJvdHRvbTogaXNGdWxsc2NyZWVuID8gJzFweCBzb2xpZCAjZWVmMGYzJyA6ICdub25lJyxcbiAgICBmbGV4U2hyaW5rOiAwLFxuICB9O1xuXG4gIGNvbnN0IHRpdGxlU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICBmb250V2VpZ2h0OiA3MDAsXG4gICAgY29sb3I6IHByaW1hcnlDb2xvcixcbiAgICBsZXR0ZXJTcGFjaW5nOiAnMC4wMmVtJyxcbiAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VTdHlsZTogQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogaXNGdWxsc2NyZWVuID8gJzE4cHgnIDogaXNGb290ZXIgPyAnMTNweCcgOiAnMTVweCcsXG4gICAgbGluZUhlaWdodDogMS40LFxuICAgIGNvbG9yOiBpc0Z1bGxzY3JlZW4gPyAnIzExMTgyNycgOiAnIzM3NDE1MScsXG4gICAgbWFyZ2luQm90dG9tOiBpc0Z1bGxzY3JlZW4gPyAwIDogaXNGb290ZXIgPyAnMTBweCcgOiAnMTRweCcsXG4gICAgZm9udFdlaWdodDogaXNGdWxsc2NyZWVuID8gNzAwIDogNTAwLFxuICB9O1xuXG4gIGNvbnN0IGJvZHlTdHlsZTogQ1NTUHJvcGVydGllcyA9IGlzRnVsbHNjcmVlblxuICAgID8geyBmbGV4OiAxLCBvdmVyZmxvd1k6ICdhdXRvJywgcGFkZGluZzogJzE4cHggMjJweCcsIGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogJzE4cHgnIH1cbiAgICA6IGlzRm9vdGVyXG4gICAgPyB7IG1heEhlaWdodDogJzIyMHB4Jywgb3ZlcmZsb3dZOiAnYXV0bycsIHBhZGRpbmdSaWdodDogJzRweCcsIGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGdhcDogJzEycHgnIH1cbiAgICA6IHsgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZ2FwOiAnMTRweCcgfTtcblxuICBjb25zdCBsYWJlbFN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgY29sb3I6ICcjMWYyOTM3JyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IGRlc2NyaXB0aW9uU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyM2YjcyODAnLFxuICAgIG1hcmdpblRvcDogJy0ycHgnLFxuICAgIG1hcmdpbkJvdHRvbTogJzdweCcsXG4gICAgbGluZUhlaWdodDogMS40LFxuICB9O1xuXG4gIGNvbnN0IGJhc2VJbnB1dFN0eWxlID0gKG5hbWU6IHN0cmluZyk6IENTU1Byb3BlcnRpZXMgPT4gKHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIHBhZGRpbmc6ICcxMHB4IDEycHgnLFxuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgYm9yZGVyOiBgMS41cHggc29saWQgJHtmb2N1c2VkID09PSBuYW1lID8gcHJpbWFyeUNvbG9yIDogJyNlNWU3ZWInfWAsXG4gICAgYm9yZGVyUmFkaXVzOiAnMTBweCcsXG4gICAgb3V0bGluZTogJ25vbmUnLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGJhY2tncm91bmRDb2xvcjogZGlzYWJsZWQgPyAnI2YzZjRmNicgOiAnI2ZmZmZmZicsXG4gICAgY29sb3I6ICcjMTExODI3JyxcbiAgICBmb250RmFtaWx5LFxuICAgIHRyYW5zaXRpb246ICdib3JkZXItY29sb3IgMTIwbXMgZWFzZSwgYm94LXNoYWRvdyAxMjBtcyBlYXNlJyxcbiAgICBib3hTaGFkb3c6IGZvY3VzZWQgPT09IG5hbWUgPyBgMCAwIDAgM3B4ICR7aGV4VG9Tb2Z0UmluZyhwcmltYXJ5Q29sb3IpfWAgOiAnbm9uZScsXG4gIH0pO1xuXG4gIGNvbnN0IGVycm9yU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFNpemU6ICcxMnB4JyxcbiAgICBjb2xvcjogJyNlZjQ0NDQnLFxuICAgIG1hcmdpblRvcDogJzVweCcsXG4gIH07XG5cbiAgY29uc3QgZm9vdGVyU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGdhcDogJzEwcHgnLFxuICAgIGZsZXhTaHJpbms6IDAsXG4gICAgLi4uKGlzRnVsbHNjcmVlblxuICAgICAgPyB7IHBhZGRpbmc6ICcxNnB4IDIycHgnLCBib3JkZXJUb3A6ICcxcHggc29saWQgI2VlZjBmMycgfVxuICAgICAgOiB7IG1hcmdpblRvcDogaXNGb290ZXIgPyAnOHB4JyA6ICcxNHB4JyB9KSxcbiAgfTtcblxuICBjb25zdCBwcmltYXJ5QnV0dG9uU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZmxleDogMSxcbiAgICBwYWRkaW5nOiAnMTFweCAxNnB4JyxcbiAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICBjb2xvcjogJyNmZmZmZmYnLFxuICAgIGJhY2tncm91bmRDb2xvcjogZGlzYWJsZWQgPyAnIzljYTNhZicgOiBwcmltYXJ5Q29sb3IsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgYm9yZGVyUmFkaXVzOiAnMTBweCcsXG4gICAgY3Vyc29yOiBkaXNhYmxlZCA/ICdub3QtYWxsb3dlZCcgOiAncG9pbnRlcicsXG4gICAgb3BhY2l0eTogaXNTdWJtaXR0aW5nID8gMC43NSA6IDEsXG4gICAgZm9udEZhbWlseSxcbiAgICB0cmFuc2l0aW9uOiAnb3BhY2l0eSAxMjBtcyBlYXNlJyxcbiAgfTtcblxuICBjb25zdCBza2lwQnV0dG9uU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgcGFkZGluZzogJzExcHggMTZweCcsXG4gICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgY29sb3I6ICcjNmI3MjgwJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgYm9yZGVyOiAnMS41cHggc29saWQgI2U1ZTdlYicsXG4gICAgYm9yZGVyUmFkaXVzOiAnMTBweCcsXG4gICAgY3Vyc29yOiBpc1N1Ym1pdHRpbmcgPyAnbm90LWFsbG93ZWQnIDogJ3BvaW50ZXInLFxuICAgIGZvbnRGYW1pbHksXG4gIH07XG5cbiAgY29uc3QgcmVuZGVyRmllbGQgPSAoZmllbGQ6IEZvcm1GaWVsZCkgPT4gKFxuICAgIDxkaXYga2V5PXtmaWVsZC5uYW1lfT5cbiAgICAgIDxsYWJlbCBzdHlsZT17bGFiZWxTdHlsZX0+XG4gICAgICAgIHtmaWVsZC5sYWJlbH1cbiAgICAgICAge2ZpZWxkLnJlcXVpcmVkICYmIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiAnI2VmNDQ0NCcsIG1hcmdpbkxlZnQ6ICczcHgnIH19Pio8L3NwYW4+fVxuICAgICAgPC9sYWJlbD5cblxuICAgICAge2ZpZWxkLmRlc2NyaXB0aW9uICYmIDxkaXYgc3R5bGU9e2Rlc2NyaXB0aW9uU3R5bGV9PntmaWVsZC5kZXNjcmlwdGlvbn08L2Rpdj59XG5cbiAgICAgIHtmaWVsZC50eXBlID09PSAndGV4dCcgJiYgKFxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgc3R5bGU9e2Jhc2VJbnB1dFN0eWxlKGZpZWxkLm5hbWUpfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXtmaWVsZC5wbGFjZWhvbGRlciB8fCAnJ31cbiAgICAgICAgICB2YWx1ZT17KGZvcm1EYXRhW2ZpZWxkLm5hbWVdIGFzIHN0cmluZykgfHwgJyd9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoZmllbGQubmFtZSwgZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uRm9jdXM9eygpID0+IHNldEZvY3VzZWQoZmllbGQubmFtZSl9XG4gICAgICAgICAgb25CbHVyPXsoKSA9PiBzZXRGb2N1c2VkKG51bGwpfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtmaWVsZC50eXBlID09PSAnbnVtYmVyJyAmJiAoXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgIHN0eWxlPXtiYXNlSW5wdXRTdHlsZShmaWVsZC5uYW1lKX1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17ZmllbGQucGxhY2Vob2xkZXIgfHwgJyd9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1EYXRhW2ZpZWxkLm5hbWVdICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoZm9ybURhdGFbZmllbGQubmFtZV0pIDogJyd9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBoYW5kbGVDaGFuZ2UoZmllbGQubmFtZSwgZS50YXJnZXQudmFsdWUgPyBOdW1iZXIoZS50YXJnZXQudmFsdWUpIDogJycpfVxuICAgICAgICAgIG9uRm9jdXM9eygpID0+IHNldEZvY3VzZWQoZmllbGQubmFtZSl9XG4gICAgICAgICAgb25CbHVyPXsoKSA9PiBzZXRGb2N1c2VkKG51bGwpfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtmaWVsZC50eXBlID09PSAnZGF0ZScgJiYgKFxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICAgICAgc3R5bGU9e2Jhc2VJbnB1dFN0eWxlKGZpZWxkLm5hbWUpfVxuICAgICAgICAgIHZhbHVlPXsoZm9ybURhdGFbZmllbGQubmFtZV0gYXMgc3RyaW5nKSB8fCAnJ31cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZShmaWVsZC5uYW1lLCBlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25Gb2N1cz17KCkgPT4gc2V0Rm9jdXNlZChmaWVsZC5uYW1lKX1cbiAgICAgICAgICBvbkJsdXI9eygpID0+IHNldEZvY3VzZWQobnVsbCl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge2ZpZWxkLnR5cGUgPT09ICdzZWxlY3QnICYmIChcbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIHN0eWxlPXt7IC4uLmJhc2VJbnB1dFN0eWxlKGZpZWxkLm5hbWUpLCBhcHBlYXJhbmNlOiAnYXV0bycgYXMgY29uc3QsIGN1cnNvcjogZGlzYWJsZWQgPyAnbm90LWFsbG93ZWQnIDogJ3BvaW50ZXInIH19XG4gICAgICAgICAgdmFsdWU9eyhmb3JtRGF0YVtmaWVsZC5uYW1lXSBhcyBzdHJpbmcpIHx8ICcnfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZGxlQ2hhbmdlKGZpZWxkLm5hbWUsIGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBzZXRGb2N1c2VkKGZpZWxkLm5hbWUpfVxuICAgICAgICAgIG9uQmx1cj17KCkgPT4gc2V0Rm9jdXNlZChudWxsKX1cbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+e2ZpZWxkLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QuLi4nfTwvb3B0aW9uPlxuICAgICAgICAgIHtmaWVsZC5vcHRpb25zPy5tYXAoKG9wdCkgPT4gKFxuICAgICAgICAgICAgPG9wdGlvbiBrZXk9e29wdC52YWx1ZX0gdmFsdWU9e29wdC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcHQubGFiZWx9XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICApfVxuXG4gICAgICB7ZmllbGQudHlwZSA9PT0gJ2Jvb2xlYW4nICYmIChcbiAgICAgICAgPGxhYmVsIHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzEwcHgnLCBjdXJzb3I6IGRpc2FibGVkID8gJ25vdC1hbGxvd2VkJyA6ICdwb2ludGVyJyB9fT5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXsoZm9ybURhdGFbZmllbGQubmFtZV0gYXMgYm9vbGVhbikgfHwgZmFsc2V9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IGhhbmRsZUNoYW5nZShmaWVsZC5uYW1lLCBlLnRhcmdldC5jaGVja2VkKX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiAnMTdweCcsIGhlaWdodDogJzE3cHgnLCBhY2NlbnRDb2xvcjogcHJpbWFyeUNvbG9yLCBjdXJzb3I6ICdpbmhlcml0JyB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZm9udFNpemU6ICcxNHB4JywgY29sb3I6ICcjMzc0MTUxJyB9fT57ZmllbGQucGxhY2Vob2xkZXIgfHwgJ1llcyd9PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgKX1cblxuICAgICAge2Vycm9yc1tmaWVsZC5uYW1lXSAmJiA8ZGl2IHN0eWxlPXtlcnJvclN0eWxlfT57ZXJyb3JzW2ZpZWxkLm5hbWVdfTwvZGl2Pn1cbiAgICA8L2Rpdj5cbiAgKTtcblxuICBjb25zdCBidXR0b25zID0gKFxuICAgIDxkaXYgc3R5bGU9e2Zvb3RlclN0eWxlfT5cbiAgICAgIHtzaG93Q2FuY2VsICYmIChcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9e3NraXBCdXR0b25TdHlsZX0gZGlzYWJsZWQ9e2lzU3VibWl0dGluZ30gb25DbGljaz17b25DYW5jZWx9PlxuICAgICAgICAgIFNraXBcbiAgICAgICAgPC9idXR0b24+XG4gICAgICApfVxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgc3R5bGU9e3ByaW1hcnlCdXR0b25TdHlsZX0gZGlzYWJsZWQ9e2Rpc2FibGVkfT5cbiAgICAgICAge2lzU3VibWl0dGVkID8gJ1N1Ym1pdHRlZCcgOiBpc1N1Ym1pdHRpbmcgPyAnU3VibWl0dGluZ+KApicgOiAnU3VibWl0J31cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2hhbmRsZVN1Ym1pdH0gc3R5bGU9e2Zvcm1TdHlsZX0+XG4gICAgICB7KHNjaGVtYS5tZXNzYWdlIHx8IChpc0Z1bGxzY3JlZW4gJiYgdGl0bGUpKSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e2hlYWRlclN0eWxlfT5cbiAgICAgICAgICB7aXNGdWxsc2NyZWVuICYmIHRpdGxlICYmIDxkaXYgc3R5bGU9e3RpdGxlU3R5bGV9Pnt0aXRsZX08L2Rpdj59XG4gICAgICAgICAge3NjaGVtYS5tZXNzYWdlICYmIDxkaXYgc3R5bGU9e21lc3NhZ2VTdHlsZX0+e3NjaGVtYS5tZXNzYWdlfTwvZGl2Pn1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICA8ZGl2IHN0eWxlPXtib2R5U3R5bGV9PntzY2hlbWEuZmllbGRzLm1hcChyZW5kZXJGaWVsZCl9PC9kaXY+XG5cbiAgICAgIHtidXR0b25zfVxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbi8qKiBUcmFuc2x1Y2VudCB2ZXJzaW9uIG9mIHRoZSBwcmltYXJ5IGNvbG9yIGZvciB0aGUgZm9jdXMgcmluZyAoYWNjZXB0cyAjcmdiLyNycmdnYmIpLiAqL1xuZnVuY3Rpb24gaGV4VG9Tb2Z0UmluZyhoZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG0gPSBoZXgucmVwbGFjZSgnIycsICcnKTtcbiAgY29uc3QgZnVsbCA9IG0ubGVuZ3RoID09PSAzID8gbS5zcGxpdCgnJykubWFwKChjKSA9PiBjICsgYykuam9pbignJykgOiBtO1xuICBjb25zdCBpbnQgPSBwYXJzZUludChmdWxsLCAxNik7XG4gIGlmIChmdWxsLmxlbmd0aCAhPT0gNiB8fCBOdW1iZXIuaXNOYU4oaW50KSkgcmV0dXJuICdyZ2JhKDM3LDk5LDIzNSwwLjE1KSc7XG4gIGNvbnN0IHIgPSAoaW50ID4+IDE2KSAmIDI1NTtcbiAgY29uc3QgZyA9IChpbnQgPj4gOCkgJiAyNTU7XG4gIGNvbnN0IGIgPSBpbnQgJiAyNTU7XG4gIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAwLjE1KWA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IER5bmFtaWNGb3JtTWVzc2FnZTtcbiJdfQ==
|