genassist-chat-react 1.0.9 → 1.0.11
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/AttachmentPreview.d.ts +8 -0
- package/dist/components/AttachmentPreview.js +72 -0
- package/dist/components/ChatMessage.d.ts +9 -9
- package/dist/components/ChatMessage.js +9 -161
- package/dist/components/FileTypeIcon.d.ts +2 -0
- package/dist/components/FileTypeIcon.js +12 -0
- package/dist/components/GenAgentChat.js +46 -31
- package/dist/components/GenAgentConfigPanel.d.ts +12 -2
- package/dist/components/GenAgentConfigPanel.js +1 -1
- package/dist/components/Spinner.d.ts +2 -2
- package/dist/components/Spinner.js +15 -4
- package/dist/components/VoiceInput.js +3 -4
- package/dist/components/WelcomeCard.d.ts +19 -0
- package/dist/components/WelcomeCard.js +38 -0
- package/dist/hooks/useChat.d.ts +1 -0
- package/dist/hooks/useChat.js +14 -12
- package/dist/index.js +1 -1
- package/dist/services/chatService.d.ts +0 -1
- package/dist/services/chatService.js +5 -6
- package/dist/types/index.d.ts +8 -13
- package/dist/types/index.js +1 -1
- package/dist/utils/time.d.ts +1 -4
- package/dist/utils/time.js +5 -9
- package/package.json +1 -1
- package/dist/utils/fileIcons.d.ts +0 -4
- package/dist/utils/fileIcons.js +0 -15
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Spinner } from './Spinner';
|
|
4
|
+
import { getFileIcon } from './FileTypeIcon';
|
|
5
|
+
export var AttachmentPreview = function (_a) {
|
|
6
|
+
var file = _a.file, onRemove = _a.onRemove, _b = _a.uploading, uploading = _b === void 0 ? false : _b;
|
|
7
|
+
var fileType = file.type;
|
|
8
|
+
var isImage = fileType.startsWith('image/');
|
|
9
|
+
var _c = React.useState(null), imagePreview = _c[0], setImagePreview = _c[1];
|
|
10
|
+
React.useEffect(function () {
|
|
11
|
+
if (isImage) {
|
|
12
|
+
var reader_1 = new FileReader();
|
|
13
|
+
reader_1.onloadend = function () {
|
|
14
|
+
setImagePreview(reader_1.result);
|
|
15
|
+
};
|
|
16
|
+
reader_1.readAsDataURL(file);
|
|
17
|
+
}
|
|
18
|
+
}, [file, isImage]);
|
|
19
|
+
var containerStyle = {
|
|
20
|
+
display: 'flex',
|
|
21
|
+
alignItems: 'center',
|
|
22
|
+
padding: '8px',
|
|
23
|
+
backgroundColor: '#f0f0f0',
|
|
24
|
+
borderRadius: '8px',
|
|
25
|
+
position: 'relative',
|
|
26
|
+
maxWidth: '250px',
|
|
27
|
+
};
|
|
28
|
+
var imageStyle = {
|
|
29
|
+
width: '40px',
|
|
30
|
+
height: '40px',
|
|
31
|
+
borderRadius: '4px',
|
|
32
|
+
objectFit: 'cover',
|
|
33
|
+
marginRight: '10px',
|
|
34
|
+
};
|
|
35
|
+
var fileInfoStyle = {
|
|
36
|
+
flex: 1,
|
|
37
|
+
overflow: 'hidden',
|
|
38
|
+
whiteSpace: 'nowrap',
|
|
39
|
+
textOverflow: 'ellipsis',
|
|
40
|
+
};
|
|
41
|
+
var fileNameStyle = {
|
|
42
|
+
fontWeight: 'bold',
|
|
43
|
+
fontSize: '14px',
|
|
44
|
+
};
|
|
45
|
+
var fileSizeStyle = {
|
|
46
|
+
fontSize: '12px',
|
|
47
|
+
color: '#666',
|
|
48
|
+
};
|
|
49
|
+
var removeButtonStyle = {
|
|
50
|
+
background: 'none',
|
|
51
|
+
border: 'none',
|
|
52
|
+
cursor: 'pointer',
|
|
53
|
+
padding: '4px',
|
|
54
|
+
position: 'absolute',
|
|
55
|
+
top: '4px',
|
|
56
|
+
right: '4px',
|
|
57
|
+
};
|
|
58
|
+
var uploadingOverlayStyle = {
|
|
59
|
+
position: 'absolute',
|
|
60
|
+
top: 0,
|
|
61
|
+
left: 0,
|
|
62
|
+
right: 0,
|
|
63
|
+
bottom: 0,
|
|
64
|
+
backgroundColor: 'rgba(255, 255, 255, 0.7)',
|
|
65
|
+
display: 'flex',
|
|
66
|
+
alignItems: 'center',
|
|
67
|
+
justifyContent: 'center',
|
|
68
|
+
borderRadius: '8px',
|
|
69
|
+
};
|
|
70
|
+
return (_jsxs("div", { style: containerStyle, children: [isImage && imagePreview ? (_jsx("img", { src: imagePreview, alt: file.name, style: imageStyle })) : (_jsx("div", { style: { marginRight: '10px' }, children: getFileIcon(fileType) })), _jsxs("div", { style: fileInfoStyle, children: [_jsx("div", { style: fileNameStyle, title: file.name, children: file.name }), _jsxs("div", { style: fileSizeStyle, children: [(file.size / 1024).toFixed(2), " KB"] })] }), !uploading && (_jsx("button", { onClick: onRemove, style: removeButtonStyle, title: "Remove file", children: "\u2715" })), uploading && (_jsx("div", { style: uploadingOverlayStyle, children: _jsx(Spinner, { size: 24, color: "#000" }) }))] }));
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0YWNobWVudFByZXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9BdHRhY2htZW50UHJldmlldy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVE3QyxNQUFNLENBQUMsSUFBTSxpQkFBaUIsR0FBcUMsVUFBQyxFQUFxQztRQUFuQyxJQUFJLFVBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxpQkFBaUIsRUFBakIsU0FBUyxtQkFBRyxLQUFLLEtBQUE7SUFDckcsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMzQixJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLElBQUEsS0FBa0MsS0FBSyxDQUFDLFFBQVEsQ0FBZ0IsSUFBSSxDQUFDLEVBQXBFLFlBQVksUUFBQSxFQUFFLGVBQWUsUUFBdUMsQ0FBQztJQUU1RSxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2QsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQU0sUUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsUUFBTSxDQUFDLFNBQVMsR0FBRztnQkFDakIsZUFBZSxDQUFDLFFBQU0sQ0FBQyxNQUFnQixDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDO1lBQ0YsUUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFcEIsSUFBTSxjQUFjLEdBQXdCO1FBQzFDLE9BQU8sRUFBRSxNQUFNO1FBQ2YsVUFBVSxFQUFFLFFBQVE7UUFDcEIsT0FBTyxFQUFFLEtBQUs7UUFDZCxlQUFlLEVBQUUsU0FBUztRQUMxQixZQUFZLEVBQUUsS0FBSztRQUNuQixRQUFRLEVBQUUsVUFBVTtRQUNwQixRQUFRLEVBQUUsT0FBTztLQUNsQixDQUFDO0lBRUYsSUFBTSxVQUFVLEdBQXdCO1FBQ3RDLEtBQUssRUFBRSxNQUFNO1FBQ2IsTUFBTSxFQUFFLE1BQU07UUFDZCxZQUFZLEVBQUUsS0FBSztRQUNuQixTQUFTLEVBQUUsT0FBTztRQUNsQixXQUFXLEVBQUUsTUFBTTtLQUNwQixDQUFDO0lBRUYsSUFBTSxhQUFhLEdBQXdCO1FBQ3pDLElBQUksRUFBRSxDQUFDO1FBQ1AsUUFBUSxFQUFFLFFBQVE7UUFDbEIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsWUFBWSxFQUFFLFVBQVU7S0FDekIsQ0FBQztJQUVGLElBQU0sYUFBYSxHQUF3QjtRQUN6QyxVQUFVLEVBQUUsTUFBTTtRQUNsQixRQUFRLEVBQUUsTUFBTTtLQUNqQixDQUFDO0lBRUYsSUFBTSxhQUFhLEdBQXdCO1FBQ3pDLFFBQVEsRUFBRSxNQUFNO1FBQ2hCLEtBQUssRUFBRSxNQUFNO0tBQ2QsQ0FBQztJQUVGLElBQU0saUJBQWlCLEdBQXdCO1FBQzdDLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLE1BQU0sRUFBRSxNQUFNO1FBQ2QsTUFBTSxFQUFFLFNBQVM7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsVUFBVTtRQUNwQixHQUFHLEVBQUUsS0FBSztRQUNWLEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQztJQUVGLElBQU0scUJBQXFCLEdBQXdCO1FBQ2pELFFBQVEsRUFBRSxVQUFVO1FBQ3BCLEdBQUcsRUFBRSxDQUFDO1FBQ04sSUFBSSxFQUFFLENBQUM7UUFDUCxLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sRUFBRSxDQUFDO1FBQ1QsZUFBZSxFQUFFLDBCQUEwQjtRQUMzQyxPQUFPLEVBQUUsTUFBTTtRQUNmLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLGNBQWMsRUFBRSxRQUFRO1FBQ3hCLFlBQVksRUFBRSxLQUFLO0tBQ3BCLENBQUM7SUFFRixPQUFPLENBQ0wsZUFBSyxLQUFLLEVBQUUsY0FBYyxhQUN2QixPQUFPLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUN6QixjQUFLLEdBQUcsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsR0FBSSxDQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUNGLGNBQUssS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBTyxDQUNuRSxFQUNELGVBQUssS0FBSyxFQUFFLGFBQWEsYUFDdkIsY0FBSyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxZQUFHLElBQUksQ0FBQyxJQUFJLEdBQU8sRUFDOUQsZUFBSyxLQUFLLEVBQUUsYUFBYSxhQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVUsSUFDL0QsRUFDTCxDQUFDLFNBQVMsSUFBSSxDQUNiLGlCQUFRLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBQyxhQUFhLHVCQUUvRCxDQUNWLEVBQ0EsU0FBUyxJQUFJLENBQ1osY0FBSyxLQUFLLEVBQUUscUJBQXFCLFlBQy9CLEtBQUMsT0FBTyxJQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFDLE1BQU0sR0FBRyxHQUM5QixDQUNQLElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNwaW5uZXIgfSBmcm9tICcuL1NwaW5uZXInO1xuaW1wb3J0IHsgZ2V0RmlsZUljb24gfSBmcm9tICcuL0ZpbGVUeXBlSWNvbic7XG5cbmludGVyZmFjZSBBdHRhY2htZW50UHJldmlld1Byb3BzIHtcbiAgZmlsZTogRmlsZTtcbiAgb25SZW1vdmU6ICgpID0+IHZvaWQ7XG4gIHVwbG9hZGluZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50UHJldmlldzogUmVhY3QuRkM8QXR0YWNobWVudFByZXZpZXdQcm9wcz4gPSAoeyBmaWxlLCBvblJlbW92ZSwgdXBsb2FkaW5nID0gZmFsc2UgfSkgPT4ge1xuICBjb25zdCBmaWxlVHlwZSA9IGZpbGUudHlwZTtcbiAgY29uc3QgaXNJbWFnZSA9IGZpbGVUeXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpO1xuICBjb25zdCBbaW1hZ2VQcmV2aWV3LCBzZXRJbWFnZVByZXZpZXddID0gUmVhY3QudXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbWFnZSkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICAgIHNldEltYWdlUHJldmlldyhyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfVxuICB9LCBbZmlsZSwgaXNJbWFnZV0pO1xuXG4gIGNvbnN0IGNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBwYWRkaW5nOiAnOHB4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZjBmMGYwJyxcbiAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIG1heFdpZHRoOiAnMjUwcHgnLFxuICB9O1xuXG4gIGNvbnN0IGltYWdlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgd2lkdGg6ICc0MHB4JyxcbiAgICBoZWlnaHQ6ICc0MHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIG9iamVjdEZpdDogJ2NvdmVyJyxcbiAgICBtYXJnaW5SaWdodDogJzEwcHgnLFxuICB9O1xuXG4gIGNvbnN0IGZpbGVJbmZvU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZmxleDogMSxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICB9O1xuXG4gIGNvbnN0IGZpbGVOYW1lU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gIH07XG5cbiAgY29uc3QgZmlsZVNpemVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIGNvbG9yOiAnIzY2NicsXG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlQnV0dG9uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIHBhZGRpbmc6ICc0cHgnLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogJzRweCcsXG4gICAgcmlnaHQ6ICc0cHgnLFxuICB9O1xuXG4gIGNvbnN0IHVwbG9hZGluZ092ZXJsYXlTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6IDAsXG4gICAgbGVmdDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGJvcmRlclJhZGl1czogJzhweCcsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXtjb250YWluZXJTdHlsZX0+XG4gICAgICB7aXNJbWFnZSAmJiBpbWFnZVByZXZpZXcgPyAoXG4gICAgICAgIDxpbWcgc3JjPXtpbWFnZVByZXZpZXd9IGFsdD17ZmlsZS5uYW1lfSBzdHlsZT17aW1hZ2VTdHlsZX0gLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6ICcxMHB4JyB9fT57Z2V0RmlsZUljb24oZmlsZVR5cGUpfTwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXYgc3R5bGU9e2ZpbGVJbmZvU3R5bGV9PlxuICAgICAgICA8ZGl2IHN0eWxlPXtmaWxlTmFtZVN0eWxlfSB0aXRsZT17ZmlsZS5uYW1lfT57ZmlsZS5uYW1lfTwvZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXtmaWxlU2l6ZVN0eWxlfT57KGZpbGUuc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMil9IEtCPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIHshdXBsb2FkaW5nICYmIChcbiAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtvblJlbW92ZX0gc3R5bGU9e3JlbW92ZUJ1dHRvblN0eWxlfSB0aXRsZT1cIlJlbW92ZSBmaWxlXCI+XG4gICAgICAgICAgJiN4MjcxNTtcbiAgICAgICAgPC9idXR0b24+XG4gICAgICApfVxuICAgICAge3VwbG9hZGluZyAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3VwbG9hZGluZ092ZXJsYXlTdHlsZX0+XG4gICAgICAgICAgPFNwaW5uZXIgc2l6ZT17MjR9IGNvbG9yPVwiIzAwMFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbiJdfQ==
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { ChatTheme } from '../types';
|
|
3
2
|
import { ChatMessage } from '../types';
|
|
4
|
-
|
|
5
|
-
file: File;
|
|
6
|
-
onRemove: () => void;
|
|
7
|
-
uploading?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare const AttachmentPreview: React.FC<AttachmentPreviewProps>;
|
|
3
|
+
export { AttachmentPreview } from './AttachmentPreview';
|
|
10
4
|
interface ChatMessageProps {
|
|
11
5
|
message: ChatMessage;
|
|
12
|
-
theme?:
|
|
6
|
+
theme?: {
|
|
7
|
+
primaryColor?: string;
|
|
8
|
+
secondaryColor?: string;
|
|
9
|
+
fontFamily?: string;
|
|
10
|
+
fontSize?: string;
|
|
11
|
+
backgroundColor?: string;
|
|
12
|
+
textColor?: string;
|
|
13
|
+
};
|
|
13
14
|
onPlayAudio?: (text: string) => Promise<void>;
|
|
14
15
|
isPlayingAudio?: boolean;
|
|
15
16
|
isFirstMessage?: boolean;
|
|
@@ -23,4 +24,3 @@ interface ChatMessageProps {
|
|
|
23
24
|
onQuickQuery?: (query: string) => void;
|
|
24
25
|
}
|
|
25
26
|
export declare const ChatMessageComponent: React.FC<ChatMessageProps>;
|
|
26
|
-
export {};
|
|
@@ -11,87 +11,19 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
13
|
import React from 'react';
|
|
14
|
+
import { WelcomeCard } from './WelcomeCard';
|
|
14
15
|
import { User, UserX, AlertCircle, ThumbsUp, ThumbsDown } from 'lucide-react';
|
|
15
|
-
import { getFileIcon } from '../utils/fileIcons';
|
|
16
16
|
import { formatTimestamp } from '../utils/time';
|
|
17
|
-
import {
|
|
18
|
-
export
|
|
19
|
-
var file = _a.file, onRemove = _a.onRemove, _b = _a.uploading, uploading = _b === void 0 ? false : _b;
|
|
20
|
-
var fileType = file.type;
|
|
21
|
-
var isImage = fileType.startsWith('image/');
|
|
22
|
-
var _c = React.useState(null), imagePreview = _c[0], setImagePreview = _c[1];
|
|
23
|
-
React.useEffect(function () {
|
|
24
|
-
if (isImage) {
|
|
25
|
-
var reader_1 = new FileReader();
|
|
26
|
-
reader_1.onloadend = function () {
|
|
27
|
-
setImagePreview(reader_1.result);
|
|
28
|
-
};
|
|
29
|
-
reader_1.readAsDataURL(file);
|
|
30
|
-
}
|
|
31
|
-
}, [file, isImage]);
|
|
32
|
-
var containerStyle = {
|
|
33
|
-
display: 'flex',
|
|
34
|
-
alignItems: 'center',
|
|
35
|
-
padding: '8px',
|
|
36
|
-
backgroundColor: '#f0f0f0',
|
|
37
|
-
borderRadius: '8px',
|
|
38
|
-
position: 'relative',
|
|
39
|
-
maxWidth: '250px',
|
|
40
|
-
};
|
|
41
|
-
var imageStyle = {
|
|
42
|
-
width: '40px',
|
|
43
|
-
height: '40px',
|
|
44
|
-
borderRadius: '4px',
|
|
45
|
-
objectFit: 'cover',
|
|
46
|
-
marginRight: '10px',
|
|
47
|
-
};
|
|
48
|
-
var fileInfoStyle = {
|
|
49
|
-
flex: 1,
|
|
50
|
-
overflow: 'hidden',
|
|
51
|
-
whiteSpace: 'nowrap',
|
|
52
|
-
textOverflow: 'ellipsis',
|
|
53
|
-
};
|
|
54
|
-
var fileNameStyle = {
|
|
55
|
-
fontWeight: 'bold',
|
|
56
|
-
fontSize: '14px',
|
|
57
|
-
};
|
|
58
|
-
var fileSizeStyle = {
|
|
59
|
-
fontSize: '12px',
|
|
60
|
-
color: '#666',
|
|
61
|
-
};
|
|
62
|
-
var removeButtonStyle = {
|
|
63
|
-
background: 'none',
|
|
64
|
-
border: 'none',
|
|
65
|
-
cursor: 'pointer',
|
|
66
|
-
padding: '4px',
|
|
67
|
-
position: 'absolute',
|
|
68
|
-
top: '4px',
|
|
69
|
-
right: '4px',
|
|
70
|
-
};
|
|
71
|
-
var uploadingOverlayStyle = {
|
|
72
|
-
position: 'absolute',
|
|
73
|
-
top: 0,
|
|
74
|
-
left: 0,
|
|
75
|
-
right: 0,
|
|
76
|
-
bottom: 0,
|
|
77
|
-
backgroundColor: 'rgba(255, 255, 255, 0.7)',
|
|
78
|
-
display: 'flex',
|
|
79
|
-
alignItems: 'center',
|
|
80
|
-
justifyContent: 'center',
|
|
81
|
-
borderRadius: '8px',
|
|
82
|
-
};
|
|
83
|
-
return (_jsxs("div", { style: containerStyle, children: [isImage && imagePreview ? (_jsx("img", { src: imagePreview, alt: file.name, style: imageStyle })) : (_jsx("div", { style: { marginRight: '10px' }, children: getFileIcon(fileType) })), _jsxs("div", { style: fileInfoStyle, children: [_jsx("div", { style: fileNameStyle, title: file.name, children: file.name }), _jsxs("div", { style: fileSizeStyle, children: [(file.size / 1024).toFixed(2), " KB"] })] }), !uploading && (_jsx("button", { onClick: onRemove, style: removeButtonStyle, title: "Remove file", children: "\u2715" })), uploading && (_jsx("div", { style: uploadingOverlayStyle, children: _jsx(Spinner, { size: 24, color: "#000" }) }))] }));
|
|
84
|
-
};
|
|
17
|
+
import { getFileIcon } from './FileTypeIcon';
|
|
18
|
+
export { AttachmentPreview } from './AttachmentPreview';
|
|
85
19
|
export var ChatMessageComponent = function (_a) {
|
|
86
|
-
var message = _a.message, theme = _a.theme, onPlayAudio = _a.onPlayAudio,
|
|
20
|
+
var message = _a.message, theme = _a.theme, onPlayAudio = _a.onPlayAudio, _b = _a.isFirstMessage, isFirstMessage = _b === void 0 ? false : _b, _c = _a.isPrevSameSpeaker, isPrevSameSpeaker = _c === void 0 ? false : _c, onFeedback = _a.onFeedback, welcomeImageUrl = _a.welcomeImageUrl, welcomeTitleProp = _a.welcomeTitle, possibleQueries = _a.possibleQueries, onQuickQuery = _a.onQuickQuery;
|
|
87
21
|
var isUser = message.speaker === 'customer';
|
|
88
22
|
var isSpecial = message.speaker === 'special';
|
|
89
23
|
var isWelcomeMessage = !isUser && !isSpecial && isFirstMessage;
|
|
90
|
-
var
|
|
91
|
-
var
|
|
92
|
-
var
|
|
93
|
-
var _j = React.useState(false), isTypewriting = _j[0], setIsTypewriting = _j[1];
|
|
94
|
-
var lastAnimatedRef = React.useRef('');
|
|
24
|
+
var _d = React.useState(false), isHovered = _d[0], setIsHovered = _d[1];
|
|
25
|
+
var editingFeedback = React.useState(false)[0];
|
|
26
|
+
var displayText = React.useState(message.text)[0];
|
|
95
27
|
var timestamp = formatTimestamp(message.create_time);
|
|
96
28
|
// Fast typewriter effect for newly displayed agent messages, fix later
|
|
97
29
|
// React.useEffect(() => {
|
|
@@ -135,11 +67,6 @@ export var ChatMessageComponent = function (_a) {
|
|
|
135
67
|
position: 'relative',
|
|
136
68
|
alignItems: isUser ? 'flex-end' : 'flex-start',
|
|
137
69
|
};
|
|
138
|
-
var messageRowStyle = {
|
|
139
|
-
display: 'flex',
|
|
140
|
-
width: '100%',
|
|
141
|
-
justifyContent: isUser ? 'flex-end' : 'flex-start',
|
|
142
|
-
};
|
|
143
70
|
var labelRowStyle = {
|
|
144
71
|
display: isPrevSameSpeaker ? 'none' : 'flex',
|
|
145
72
|
width: '80%',
|
|
@@ -199,43 +126,10 @@ export var ChatMessageComponent = function (_a) {
|
|
|
199
126
|
flexDirection: 'column',
|
|
200
127
|
gap: '8px',
|
|
201
128
|
};
|
|
202
|
-
var attachmentContainerStyle = {
|
|
203
|
-
display: 'flex',
|
|
204
|
-
alignItems: 'center',
|
|
205
|
-
padding: '10px',
|
|
206
|
-
backgroundColor: isUser ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.05)',
|
|
207
|
-
borderRadius: '8px',
|
|
208
|
-
};
|
|
209
|
-
var imageAttachmentStyle = {
|
|
210
|
-
maxWidth: '100%',
|
|
211
|
-
borderRadius: '8px',
|
|
212
|
-
};
|
|
213
|
-
var fileAttachmentStyle = {
|
|
214
|
-
display: 'flex',
|
|
215
|
-
alignItems: 'center',
|
|
216
|
-
padding: '10px',
|
|
217
|
-
backgroundColor: isUser ? 'rgba(255, 255, 255, 0.1)' : 'rgba(0, 0, 0, 0.05)',
|
|
218
|
-
borderRadius: '8px',
|
|
219
|
-
};
|
|
220
|
-
var fileInfoStyle = {
|
|
221
|
-
marginLeft: '10px',
|
|
222
|
-
flex: 1,
|
|
223
|
-
};
|
|
224
|
-
var fileNameStyle = {
|
|
225
|
-
fontWeight: 'bold',
|
|
226
|
-
};
|
|
227
|
-
var fileSizeStyle = {
|
|
228
|
-
fontSize: '12px',
|
|
229
|
-
opacity: 0.8,
|
|
230
|
-
};
|
|
231
|
-
// No bottom timestamp in the new design
|
|
232
|
-
var timestampStyle = { display: 'none' };
|
|
233
|
-
var speakerLabel = isUser ? 'You' : isSpecial ? 'System' : 'Agent';
|
|
234
129
|
// Feedback state and UI (thumbs up/down) for agent messages
|
|
235
130
|
var feedbackValue = (message.feedback && message.feedback.length > 0)
|
|
236
131
|
? message.feedback[message.feedback.length - 1].feedback
|
|
237
132
|
: undefined;
|
|
238
|
-
var primaryColor = (theme === null || theme === void 0 ? void 0 : theme.primaryColor) || '#2962FF';
|
|
239
133
|
var thumbsShouldShow = !isUser && !isSpecial && isHovered && !feedbackValue;
|
|
240
134
|
var showThumbsArea = !isUser && !isSpecial; // Only agents have thumbs area
|
|
241
135
|
var feedbackRowStyle = {
|
|
@@ -322,53 +216,7 @@ export var ChatMessageComponent = function (_a) {
|
|
|
322
216
|
return (_jsx("div", { style: specialMessageStyle, children: _jsxs("div", { style: specialBubbleStyle, children: [icon, message.text] }) }));
|
|
323
217
|
}
|
|
324
218
|
if (isWelcomeMessage) {
|
|
325
|
-
|
|
326
|
-
var chipStyle_1 = {
|
|
327
|
-
display: 'inline-block',
|
|
328
|
-
backgroundColor: primaryColor_1,
|
|
329
|
-
color: '#fff',
|
|
330
|
-
padding: '8px 12px',
|
|
331
|
-
borderRadius: 12,
|
|
332
|
-
fontSize: '14px',
|
|
333
|
-
marginRight: 8,
|
|
334
|
-
marginBottom: 8,
|
|
335
|
-
cursor: onQuickQuery ? 'pointer' : 'default',
|
|
336
|
-
userSelect: 'none',
|
|
337
|
-
};
|
|
338
|
-
var chipContainerStyle = {
|
|
339
|
-
display: 'flex',
|
|
340
|
-
flexWrap: 'wrap',
|
|
341
|
-
marginTop: 8,
|
|
342
|
-
};
|
|
343
|
-
var imageBoxStyle = {
|
|
344
|
-
width: 120,
|
|
345
|
-
height: 120,
|
|
346
|
-
borderRadius: 12,
|
|
347
|
-
backgroundColor: '#e5e7eb',
|
|
348
|
-
display: 'flex',
|
|
349
|
-
alignItems: 'center',
|
|
350
|
-
justifyContent: 'center',
|
|
351
|
-
color: '#6b7280',
|
|
352
|
-
fontSize: 12,
|
|
353
|
-
fontWeight: 600,
|
|
354
|
-
overflow: 'hidden',
|
|
355
|
-
};
|
|
356
|
-
var welcomeTitleStyle = {
|
|
357
|
-
fontSize: '22px',
|
|
358
|
-
fontWeight: 700,
|
|
359
|
-
margin: '8px 0 4px 0',
|
|
360
|
-
color: agentTextColor,
|
|
361
|
-
fontFamily: fontFamily,
|
|
362
|
-
};
|
|
363
|
-
var welcomeSubtitleStyle = {
|
|
364
|
-
fontSize: '14px',
|
|
365
|
-
color: '#6b7280',
|
|
366
|
-
margin: 0,
|
|
367
|
-
fontFamily: fontFamily,
|
|
368
|
-
};
|
|
369
|
-
return (_jsx("div", { style: messageContainerStyle, children: _jsx("div", { style: messageBubbleContainerStyle, children: _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 8 }, children: [_jsx("div", { style: { display: 'flex', gap: 16 }, children: _jsx("div", { style: imageBoxStyle, children: welcomeImageUrl ? (
|
|
370
|
-
// eslint-disable-next-line jsx-a11y/alt-text
|
|
371
|
-
_jsx("img", { src: welcomeImageUrl, style: { width: '100%', height: '100%', objectFit: 'cover' } })) : (_jsx("div", { children: "IMAGE 120 \u00D7 120 px" })) }) }), welcomeTitle && _jsx("div", { style: welcomeTitleStyle, children: welcomeTitle }), welcomeContent && _jsx("div", { style: welcomeSubtitleStyle, children: welcomeContent }), possibleQueries && possibleQueries.length > 0 && (_jsx("div", { style: chipContainerStyle, children: possibleQueries.map(function (q, idx) { return (_jsx("span", { style: chipStyle_1, onClick: function () { return onQuickQuery && onQuickQuery(q); }, children: q }, idx)); }) }))] }) }) }));
|
|
219
|
+
return (_jsx("div", { style: messageContainerStyle, children: _jsx("div", { style: __assign({}, messageBubbleContainerStyle), children: _jsx(WelcomeCard, { theme: theme, imageUrl: welcomeImageUrl, title: welcomeTitle, content: welcomeContent, possibleQueries: possibleQueries, onQuickQuery: onQuickQuery }) }) }));
|
|
372
220
|
}
|
|
373
221
|
return (_jsxs("div", { style: messageContainerStyle, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { if (!editingFeedback)
|
|
374
222
|
setIsHovered(false); }, children: [_jsx("div", { style: labelRowStyle, children: isUser ? (_jsxs(_Fragment, { children: [_jsx("div", { style: topTimestampStyle, children: timestamp }), _jsx("div", { style: messageLabelStyle, children: "You" })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { style: messageLabelStyle, children: "Agent" }), _jsx("div", { style: topTimestampStyle, children: timestamp })] })) }), message.attachments && message.attachments.length > 0 && (_jsx("div", { style: __assign(__assign({}, attachmentsContainerStyle), { alignItems: isUser ? 'flex-end' : 'flex-start' }), children: message.attachments.map(function (attachment, index) { return (_jsxs("div", { style: {
|
|
@@ -392,4 +240,4 @@ export var ChatMessageComponent = function (_a) {
|
|
|
392
240
|
}
|
|
393
241
|
}, children: _jsx(ThumbsDown, { size: 18 }) })] })) }))] }));
|
|
394
242
|
};
|
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdE1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGF0TWVzc2FnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRzFCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFRcEMsTUFBTSxDQUFDLElBQU0saUJBQWlCLEdBQXFDLFVBQUMsRUFBcUM7UUFBbkMsSUFBSSxVQUFBLEVBQUUsUUFBUSxjQUFBLEVBQUUsaUJBQWlCLEVBQWpCLFNBQVMsbUJBQUcsS0FBSyxLQUFBO0lBQ3JHLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDM0IsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxJQUFBLEtBQWtDLEtBQUssQ0FBQyxRQUFRLENBQWdCLElBQUksQ0FBQyxFQUFwRSxZQUFZLFFBQUEsRUFBRSxlQUFlLFFBQXVDLENBQUM7SUFFNUUsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNkLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFNLFFBQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLFFBQU0sQ0FBQyxTQUFTLEdBQUc7Z0JBQ2pCLGVBQWUsQ0FBQyxRQUFNLENBQUMsTUFBZ0IsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQztZQUNGLFFBQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJ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Q0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dDQUN6QyxDQUFDOzRCQUNILENBQUMsWUFFRCxLQUFDLFFBQVEsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLEdBQ2YsRUFDVCxjQUFLLEtBQUssRUFBRSxjQUFjLEdBQUksRUFDOUIsaUJBQ0UsSUFBSSxFQUFDLFFBQVEsRUFDYixLQUFLLEVBQUUsZUFBZSxFQUN0QixLQUFLLEVBQUMsYUFBYSxFQUNuQixPQUFPLEVBQUU7Z0NBQ1AsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLFVBQVUsRUFBRSxDQUFDO29DQUNyQyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQ0FDeEMsQ0FBQzs0QkFDSCxDQUFDLFlBRUQsS0FBQyxVQUFVLElBQUMsSUFBSSxFQUFFLEVBQUUsR0FBSSxHQUNqQixJQUNSLENBQ0osR0FDRyxDQUNQLElBQ0csQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgQ2hhdFRoZW1lIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBVc2VyLCBVc2VyWCwgQWxlcnRDaXJjbGUsIFRodW1ic1VwLCBUaHVtYnNEb3duIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGdldEZpbGVJY29uIH0gZnJvbSAnLi4vdXRpbHMvZmlsZUljb25zJztcbmltcG9ydCB7IGZvcm1hdFRpbWVzdGFtcCB9IGZyb20gJy4uL3V0aWxzL3RpbWUnO1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4vU3Bpbm5lcic7XG5cbmludGVyZmFjZSBBdHRhY2htZW50UHJldmlld1Byb3BzIHtcbiAgZmlsZTogRmlsZTtcbiAgb25SZW1vdmU6ICgpID0+IHZvaWQ7XG4gIHVwbG9hZGluZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50UHJldmlldzogUmVhY3QuRkM8QXR0YWNobWVudFByZXZpZXdQcm9wcz4gPSAoeyBmaWxlLCBvblJlbW92ZSwgdXBsb2FkaW5nID0gZmFsc2UgfSkgPT4ge1xuICBjb25zdCBmaWxlVHlwZSA9IGZpbGUudHlwZTtcbiAgY29uc3QgaXNJbWFnZSA9IGZpbGVUeXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpO1xuICBjb25zdCBbaW1hZ2VQcmV2aWV3LCBzZXRJbWFnZVByZXZpZXddID0gUmVhY3QudXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNJbWFnZSkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICAgIHNldEltYWdlUHJldmlldyhyZWFkZXIucmVzdWx0IGFzIHN0cmluZyk7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfVxuICB9LCBbZmlsZSwgaXNJbWFnZV0pO1xuXG4gIGNvbnN0IGNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBwYWRkaW5nOiAnOHB4JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZjBmMGYwJyxcbiAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIG1heFdpZHRoOiAnMjUwcHgnLFxuICB9O1xuXG4gIGNvbnN0IGltYWdlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgd2lkdGg6ICc0MHB4JyxcbiAgICBoZWlnaHQ6ICc0MHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIG9iamVjdEZpdDogJ2NvdmVyJyxcbiAgICBtYXJnaW5SaWdodDogJzEwcHgnLFxuICB9O1xuXG4gIGNvbnN0IGZpbGVJbmZvU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZmxleDogMSxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICB9O1xuXG4gIGNvbnN0IGZpbGVOYW1lU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZm9udFdlaWdodDogJ2JvbGQnLFxuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gIH07XG5cbiAgY29uc3QgZmlsZVNpemVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEycHgnLFxuICAgIGNvbG9yOiAnIzY2NicsXG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlQnV0dG9uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIHBhZGRpbmc6ICc0cHgnLFxuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogJzRweCcsXG4gICAgcmlnaHQ6ICc0cHgnLFxuICB9O1xuXG4gIGNvbnN0IHVwbG9hZGluZ092ZXJsYXlTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6IDAsXG4gICAgbGVmdDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGJvcmRlclJhZGl1czogJzhweCcsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHN0eWxlPXtjb250YWluZXJTdHlsZX0+XG4gICAgICB7aXNJbWFnZSAmJiBpbWFnZVByZXZpZXcgPyAoXG4gICAgICAgIDxpbWcgc3JjPXtpbWFnZVByZXZpZXd9IGFsdD17ZmlsZS5uYW1lfSBzdHlsZT17aW1hZ2VTdHlsZX0gLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6ICcxMHB4JyB9fT57Z2V0RmlsZUljb24oZmlsZVR5cGUpfTwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXYgc3R5bGU9e2ZpbGVJbmZvU3R5bGV9PlxuICAgICAgICA8ZGl2IHN0eWxlPXtmaWxlTmFtZVN0eWxlfSB0aXRsZT17ZmlsZS5uYW1lfT57ZmlsZS5uYW1lfTwvZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXtmaWxlU2l6ZVN0eWxlfT57KGZpbGUuc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMil9IEtCPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIHshdXBsb2FkaW5nICYmIChcbiAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtvblJlbW92ZX0gc3R5bGU9e3JlbW92ZUJ1dHRvblN0eWxlfSB0aXRsZT1cIlJlbW92ZSBmaWxlXCI+XG4gICAgICAgICAgJiN4MjcxNTtcbiAgICAgICAgPC9idXR0b24+XG4gICAgICApfVxuICAgICAge3VwbG9hZGluZyAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3VwbG9hZGluZ092ZXJsYXlTdHlsZX0+XG4gICAgICAgICAgPFNwaW5uZXIgc2l6ZT17MjR9IGNvbG9yPVwiIzAwMFwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlUHJvcHMge1xuICBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgdGhlbWU/OiBQYXJ0aWFsPENoYXRUaGVtZT47XG4gIG9uUGxheUF1ZGlvPzogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgaXNQbGF5aW5nQXVkaW8/OiBib29sZWFuO1xuICBpc0ZpcnN0TWVzc2FnZT86IGJvb2xlYW47XG4gIGlzTmV4dFNhbWVTcGVha2VyPzogYm9vbGVhbjtcbiAgaXNQcmV2U2FtZVNwZWFrZXI/OiBib29sZWFuO1xuICBvbkZlZWRiYWNrPzogKG1lc3NhZ2VJZDogc3RyaW5nLCB2YWx1ZTogJ2dvb2QnIHwgJ2JhZCcpID0+IHZvaWQ7XG4gIGVuYWJsZVR5cGV3cml0ZXI/OiBib29sZWFuO1xuICB3ZWxjb21lSW1hZ2VVcmw/OiBzdHJpbmc7XG4gIHdlbGNvbWVUaXRsZT86IHN0cmluZztcbiAgcG9zc2libGVRdWVyaWVzPzogc3RyaW5nW107XG4gIG9uUXVpY2tRdWVyeT86IChxdWVyeTogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQ2hhdE1lc3NhZ2VDb21wb25lbnQ6IFJlYWN0LkZDPENoYXRNZXNzYWdlUHJvcHM+ID0gKHtcbiAgbWVzc2FnZSxcbiAgdGhlbWUsXG4gIG9uUGxheUF1ZGlvLFxuICBpc1BsYXlpbmdBdWRpbyxcbiAgaXNGaXJzdE1lc3NhZ2UgPSBmYWxzZSxcbiAgaXNOZXh0U2FtZVNwZWFrZXIgPSBmYWxzZSxcbiAgaXNQcmV2U2FtZVNwZWFrZXIgPSBmYWxzZSxcbiAgb25GZWVkYmFjayxcbiAgZW5hYmxlVHlwZXdyaXRlciA9IGZhbHNlLFxuICB3ZWxjb21lSW1hZ2VVcmwsXG4gIHdlbGNvbWVUaXRsZTogd2VsY29tZVRpdGxlUHJvcCxcbiAgcG9zc2libGVRdWVyaWVzLFxuICBvblF1aWNrUXVlcnksXG59KSA9PiB7XG4gIGNvbnN0IGlzVXNlciA9IG1lc3NhZ2Uuc3BlYWtlciA9PT0gJ2N1c3RvbWVyJztcbiAgY29uc3QgaXNTcGVjaWFsID0gbWVzc2FnZS5zcGVha2VyID09PSAnc3BlY2lhbCc7XG4gIGNvbnN0IGlzV2VsY29tZU1lc3NhZ2UgPSAhaXNVc2VyICYmICFpc1NwZWNpYWwgJiYgaXNGaXJzdE1lc3NhZ2U7XG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlZGl0aW5nRmVlZGJhY2ssIHNldEVkaXRpbmdGZWVkYmFja10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtkaXNwbGF5VGV4dCwgc2V0RGlzcGxheVRleHRdID0gUmVhY3QudXNlU3RhdGU8c3RyaW5nPihtZXNzYWdlLnRleHQpO1xuICBjb25zdCBbaXNUeXBld3JpdGluZywgc2V0SXNUeXBld3JpdGluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGxhc3RBbmltYXRlZFJlZiA9IFJlYWN0LnVzZVJlZjxzdHJpbmc+KCcnKTtcblxuICBjb25zdCB0aW1lc3RhbXAgPSBmb3JtYXRUaW1lc3RhbXAobWVzc2FnZS5jcmVhdGVfdGltZSk7XG5cbiAgLy8gRmFzdCB0eXBld3JpdGVyIGVmZmVjdCBmb3IgbmV3bHkgZGlzcGxheWVkIGFnZW50IG1lc3NhZ2VzLCBmaXggbGF0ZXJcbiAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gICBpZiAoIWlzVXNlciAmJiAhaXNTcGVjaWFsICYmIGVuYWJsZVR5cGV3cml0ZXIgJiYgbWVzc2FnZS50ZXh0ICE9PSBsYXN0QW5pbWF0ZWRSZWYuY3VycmVudCkge1xuICAvLyAgICAgbGFzdEFuaW1hdGVkUmVmLmN1cnJlbnQgPSBtZXNzYWdlLnRleHQ7XG4gIC8vICAgICBzZXRJc1R5cGV3cml0aW5nKHRydWUpO1xuICAvLyAgICAgc2V0RGlzcGxheVRleHQoJycpO1xuICAvLyAgICAgbGV0IGkgPSAwO1xuICAvLyAgICAgY29uc3QgdG90YWwgPSBtZXNzYWdlLnRleHQubGVuZ3RoO1xuICAvLyAgICAgY29uc3QgdGlja01zID0gMTY7XG4gIC8vICAgICBjb25zdCB0YXJnZXRNcyA9IDEyMDA7XG4gIC8vICAgICBjb25zdCBjaGFyc1BlclRpY2sgPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHRvdGFsIC8gKHRhcmdldE1zIC8gdGlja01zKSkpO1xuICAvLyAgICAgY29uc3QgaW50ZXJ2YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAvLyAgICAgICBpICs9IGNoYXJzUGVyVGljaztcbiAgLy8gICAgICAgaWYgKGkgPj0gdG90YWwpIHtcbiAgLy8gICAgICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQpO1xuICAvLyAgICAgICAgIHNldElzVHlwZXdyaXRpbmcoZmFsc2UpO1xuICAvLyAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsKTtcbiAgLy8gICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICBzZXREaXNwbGF5VGV4dChtZXNzYWdlLnRleHQuc2xpY2UoMCwgaSkpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9LCB0aWNrTXMpO1xuICAvLyAgICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsKTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgc2V0RGlzcGxheVRleHQobWVzc2FnZS50ZXh0KTtcbiAgLy8gICAgIHNldElzVHlwZXdyaXRpbmcoZmFsc2UpO1xuICAvLyAgIH1cbiAgLy8gfSwgW21lc3NhZ2UudGV4dCwgZW5hYmxlVHlwZXdyaXRlciwgaXNVc2VyLCBpc1NwZWNpYWxdKTtcblxuICAvLyBVcGRhdGVkIGRlc2lnbiBjb2xvcnNcbiAgY29uc3QgdXNlckJ1YmJsZUJnQ29sb3IgPSAnI0U0RTRFNyc7IC8vIGdyZXkgZm9yIHVzZXJcbiAgY29uc3QgdXNlclRleHRDb2xvciA9ICcjMDAwMDAwJztcbiAgY29uc3QgYWdlbnRUZXh0Q29sb3IgPSAnIzAwMDAwMCc7XG4gIGNvbnN0IGZvbnRGYW1pbHkgPSB0aGVtZT8uZm9udEZhbWlseSB8fCAnUm9ib3RvLCBBcmlhbCwgc2Fucy1zZXJpZic7XG4gIGNvbnN0IGZvbnRTaXplID0gdGhlbWU/LmZvbnRTaXplIHx8ICcxNXB4JztcblxuICBjb25zdCBtZXNzYWdlQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgbWFyZ2luQm90dG9tOiBpc1ByZXZTYW1lU3BlYWtlciA/ICc4cHgnIDogJzhweCcsXG4gICAgbWFyZ2luVG9wOiBpc1ByZXZTYW1lU3BlYWtlciA/ICcwcHgnIDogJzE2cHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGFsaWduSXRlbXM6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcsXG4gIH07XG5cbiAgY29uc3QgbWVzc2FnZVJvd1N0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICB9O1xuXG4gIGNvbnN0IGxhYmVsUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnbm9uZScgOiAnZmxleCcsXG4gICAgd2lkdGg6ICc4MCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgZ2FwOiAnOHB4JyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VMYWJlbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICBsaW5lSGVpZ2h0OiAxLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgfTtcblxuICBjb25zdCB0b3BUaW1lc3RhbXBTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEzcHgnLFxuICAgIGNvbG9yOiAnIzZiNzI4MCcsXG4gICAgbGluZUhlaWdodDogMSxcbiAgfTtcblxuICBjb25zdCBtZXNzYWdlQnViYmxlQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIG1heFdpZHRoOiAnODAlJyxcbiAgfTtcblxuICAvLyBPbmx5IHVzZXIncyBtZXNzYWdlcyBzaG91bGQgcmVuZGVyIGFzIGJ1YmJsZXMuXG4gIC8vIEFnZW50IG1lc3NhZ2VzIGFyZSBwbGFpbiB0ZXh0IHdpdGggbm8gY29udGFpbmVyIGJhY2tncm91bmQuXG4gIGNvbnN0IGJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0gaXNVc2VyXG4gICAgPyB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdXNlckJ1YmJsZUJnQ29sb3IsXG4gICAgICAgIGNvbG9yOiB1c2VyVGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTJweCAwIDEycHggMTJweCcsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4wOCknXG4gICAgICB9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY29sb3I6IGFnZW50VGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZSdcbiAgICAgIH07XG5cbiAgY29uc3QgYXR0YWNobWVudHNDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBtYXJnaW5Ub3A6ICc4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBnYXA6ICc4cHgnLFxuICB9O1xuXG4gIGNvbnN0IGF0dGFjaG1lbnRDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgcGFkZGluZzogJzEwcHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogaXNVc2VyID8gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKScgOiAncmdiYSgwLCAwLCAwLCAwLjA1KScsXG4gICAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgfTtcblxuICBjb25zdCBpbWFnZUF0dGFjaG1lbnRTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgIGJvcmRlclJhZGl1czogJzhweCcsXG4gIH07XG5cbiAgY29uc3QgZmlsZUF0dGFjaG1lbnRTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgcGFkZGluZzogJzEwcHgnLFxuICAgIGJhY2tncm91bmRDb2xvcjogaXNVc2VyID8gJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKScgOiAncmdiYSgwLCAwLCAwLCAwLjA1KScsXG4gICAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgfTtcblxuICBjb25zdCBmaWxlSW5mb1N0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIG1hcmdpbkxlZnQ6ICcxMHB4JyxcbiAgICBmbGV4OiAxLFxuICB9O1xuICBcbiAgY29uc3QgZmlsZU5hbWVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250V2VpZ2h0OiAnYm9sZCcsXG4gIH07XG4gIFxuICBjb25zdCBmaWxlU2l6ZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAnMTJweCcsXG4gICAgb3BhY2l0eTogMC44LFxuICB9O1xuXG4gIC8vIE5vIGJvdHRvbSB0aW1lc3RhbXAgaW4gdGhlIG5ldyBkZXNpZ25cbiAgY29uc3QgdGltZXN0YW1wU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7IGRpc3BsYXk6ICdub25lJyB9O1xuICBjb25zdCBzcGVha2VyTGFiZWwgPSBpc1VzZXIgPyAnWW91JyA6IGlzU3BlY2lhbCA/ICdTeXN0ZW0nIDogJ0FnZW50JztcblxuICAvLyBGZWVkYmFjayBzdGF0ZSBhbmQgVUkgKHRodW1icyB1cC9kb3duKSBmb3IgYWdlbnQgbWVzc2FnZXNcbiAgY29uc3QgZmVlZGJhY2tWYWx1ZSA9IChtZXNzYWdlLmZlZWRiYWNrICYmIG1lc3NhZ2UuZmVlZGJhY2subGVuZ3RoID4gMClcbiAgICA/IG1lc3NhZ2UuZmVlZGJhY2tbbWVzc2FnZS5mZWVkYmFjay5sZW5ndGggLSAxXS5mZWVkYmFja1xuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHByaW1hcnlDb2xvciA9IHRoZW1lPy5wcmltYXJ5Q29sb3IgfHwgJyMyOTYyRkYnO1xuICBjb25zdCB0aHVtYnNTaG91bGRTaG93ID0gIWlzVXNlciAmJiAhaXNTcGVjaWFsICYmIGlzSG92ZXJlZCAmJiAhZmVlZGJhY2tWYWx1ZTtcbiAgY29uc3Qgc2hvd1RodW1ic0FyZWEgPSAhaXNVc2VyICYmICFpc1NwZWNpYWw7IC8vIE9ubHkgYWdlbnRzIGhhdmUgdGh1bWJzIGFyZWFcblxuICBjb25zdCBmZWVkYmFja1Jvd1N0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6IHNob3dUaHVtYnNBcmVhID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgIG1hcmdpblRvcDogOCxcbiAgICBhbGlnblNlbGY6ICdmbGV4LXN0YXJ0JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBoZWlnaHQ6IDIwLFxuICAgIGdhcDogOCxcbiAgICB2aXNpYmlsaXR5OiB0aHVtYnNTaG91bGRTaG93IHx8ICEhZmVlZGJhY2tWYWx1ZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nLFxuICB9O1xuXG4gIGNvbnN0IGljb25CdXR0b25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIHBhZGRpbmc6IDAsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgY29sb3I6ICcjOWNhM2FmJyxcbiAgICBkaXNwbGF5OiB0aHVtYnNTaG91bGRTaG93ID8gJ2ZsZXgnIDogJ25vbmUnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICB9O1xuXG4gIGNvbnN0IHNlcGFyYXRvclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIHdpZHRoOiAxLFxuICAgIGhlaWdodDogMTQsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2U1ZTdlYicsXG4gICAgZGlzcGxheTogdGh1bWJzU2hvdWxkU2hvdyA/ICdibG9jaycgOiAnbm9uZScsXG4gIH07XG5cbiAgY29uc3Qgc2luZ2xlSWNvblN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGNvbG9yOiAnIzAwMDAwMCcsXG4gICAgZGlzcGxheTogZmVlZGJhY2tWYWx1ZSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfTtcblxuICBsZXQgd2VsY29tZVRpdGxlID0gd2VsY29tZVRpdGxlUHJvcCB8fCAnJztcbiAgbGV0IHdlbGNvbWVDb250ZW50ID0gJyc7XG4gIFxuICBpZiAoaXNXZWxjb21lTWVzc2FnZSkge1xuICAgIGNvbnN0IG1lc3NhZ2VUZXh0ID0gbWVzc2FnZS50ZXh0O1xuICAgIGlmICghd2VsY29tZVRpdGxlUHJvcCkge1xuICAgICAgY29uc3QgcGFydHMgPSBtZXNzYWdlVGV4dC5zcGxpdCgvW1xcblxcLiE/XS8pO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDApIHdlbGNvbWVUaXRsZSA9IChwYXJ0c1swXSB8fCAnJykudHJpbSgpO1xuICAgICAgd2VsY29tZUNvbnRlbnQgPSBtZXNzYWdlVGV4dC5zdWJzdHJpbmcod2VsY29tZVRpdGxlLmxlbmd0aCkudHJpbSgpO1xuICAgICAgd2VsY29tZUNvbnRlbnQgPSB3ZWxjb21lQ29udGVudC5yZXBsYWNlKC9eWywuIT9cXHNdKy8sICcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2VsY29tZUNvbnRlbnQgPSBtZXNzYWdlVGV4dDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZXNzYWdlTGluZXMgPSAhaXNXZWxjb21lTWVzc2FnZSA/IGRpc3BsYXlUZXh0LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtpfT5cbiAgICAgIHtsaW5lfVxuICAgICAge2kgPCBkaXNwbGF5VGV4dC5zcGxpdCgnXFxuJykubGVuZ3RoIC0gMSAmJiA8YnIgLz59XG4gICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgKSkgOiBudWxsO1xuXG4gIC8vIEhhbmRsZSBzcGVjaWFsIG1lc3NhZ2VzIChsaWtlIHRha2VvdmVyIGluZGljYXRvcnMpXG4gIGlmIChpc1NwZWNpYWwpIHtcbiAgICBjb25zdCBzcGVjaWFsTWVzc2FnZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBtYXJnaW46ICcxNnB4IDAnLFxuICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lIGljb24gYW5kIHN0eWxlIGJhc2VkIG9uIG1lc3NhZ2UgY29udGVudFxuICAgIGxldCBpY29uO1xuICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSAnI0UzRjJGRCc7XG4gICAgbGV0IHRleHRDb2xvciA9ICcjMTk3NkQyJztcbiAgICBcbiAgICBpZiAobWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ29mZmxpbmUnKSB8fCBtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnaW5hY3RpdmUnKSkge1xuICAgICAgaWNvbiA9IDxBbGVydENpcmNsZSBzaXplPXsxOH0gLz47XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IgPSAnI0ZGRjNFMCc7XG4gICAgICB0ZXh0Q29sb3IgPSAnI0Y1N0MwMCc7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnRleHQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygndG9vayBvdmVyJykgfHwgbWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Rha2VvdmVyJykpIHtcbiAgICAgIGljb24gPSA8VXNlclggc2l6ZT17MTh9IC8+O1xuICAgIH0gZWxzZSB7XG4gICAgICBpY29uID0gPFVzZXIgc2l6ZT17MTh9IC8+O1xuICAgIH1cblxuICAgIGNvbnN0IHNwZWNpYWxCdWJibGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcixcbiAgICAgIGNvbG9yOiB0ZXh0Q29sb3IsXG4gICAgICBwYWRkaW5nOiAnOHB4IDE2cHgnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgZm9udEZhbWlseSxcbiAgICAgIGZvbnRXZWlnaHQ6ICc1MDAnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBnYXA6ICc4cHgnLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBzdHlsZT17c3BlY2lhbE1lc3NhZ2VTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3NwZWNpYWxCdWJibGVTdHlsZX0+XG4gICAgICAgICAge2ljb259XG4gICAgICAgICAge21lc3NhZ2UudGV4dH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgaWYgKGlzV2VsY29tZU1lc3NhZ2UpIHtcbiAgICBjb25zdCBwcmltYXJ5Q29sb3IgPSB0aGVtZT8ucHJpbWFyeUNvbG9yIHx8ICcjNUIzREY1JztcbiAgICBjb25zdCBjaGlwU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogcHJpbWFyeUNvbG9yLFxuICAgICAgY29sb3I6ICcjZmZmJyxcbiAgICAgIHBhZGRpbmc6ICc4cHggMTJweCcsXG4gICAgICBib3JkZXJSYWRpdXM6IDEyLFxuICAgICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICAgIG1hcmdpblJpZ2h0OiA4LFxuICAgICAgbWFyZ2luQm90dG9tOiA4LFxuICAgICAgY3Vyc29yOiBvblF1aWNrUXVlcnkgPyAncG9pbnRlcicgOiAnZGVmYXVsdCcsXG4gICAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgfTtcbiAgICBjb25zdCBjaGlwQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICAgICAgbWFyZ2luVG9wOiA4LFxuICAgIH07XG4gICAgY29uc3QgaW1hZ2VCb3hTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIHdpZHRoOiAxMjAsXG4gICAgICBoZWlnaHQ6IDEyMCxcbiAgICAgIGJvcmRlclJhZGl1czogMTIsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZTVlN2ViJyxcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgY29sb3I6ICcjNmI3MjgwJyxcbiAgICAgIGZvbnRTaXplOiAxMixcbiAgICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB9O1xuICAgIGNvbnN0IHdlbGNvbWVUaXRsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgICAgZm9udFNpemU6ICcyMnB4JyxcbiAgICAgIGZvbnRXZWlnaHQ6IDcwMCxcbiAgICAgIG1hcmdpbjogJzhweCAwIDRweCAwJyxcbiAgICAgIGNvbG9yOiBhZ2VudFRleHRDb2xvcixcbiAgICAgIGZvbnRGYW1pbHksXG4gICAgfTtcbiAgICBjb25zdCB3ZWxjb21lU3VidGl0bGVTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgICBjb2xvcjogJyM2YjcyODAnLFxuICAgICAgbWFyZ2luOiAwLFxuICAgICAgZm9udEZhbWlseSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VDb250YWluZXJTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VCdWJibGVDb250YWluZXJTdHlsZX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBnYXA6IDggfX0+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZ2FwOiAxNiB9fT5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17aW1hZ2VCb3hTdHlsZX0+XG4gICAgICAgICAgICAgICAge3dlbGNvbWVJbWFnZVVybCA/IChcbiAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbHQtdGV4dFxuICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e3dlbGNvbWVJbWFnZVVybH0gc3R5bGU9e3sgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsIG9iamVjdEZpdDogJ2NvdmVyJyB9fSAvPlxuICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2PklNQUdFIDEyMCDDlyAxMjAgcHg8L2Rpdj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAge3dlbGNvbWVUaXRsZSAmJiA8ZGl2IHN0eWxlPXt3ZWxjb21lVGl0bGVTdHlsZX0+e3dlbGNvbWVUaXRsZX08L2Rpdj59XG4gICAgICAgICAgICB7d2VsY29tZUNvbnRlbnQgJiYgPGRpdiBzdHlsZT17d2VsY29tZVN1YnRpdGxlU3R5bGV9Pnt3ZWxjb21lQ29udGVudH08L2Rpdj59XG4gICAgICAgICAgICB7cG9zc2libGVRdWVyaWVzICYmIHBvc3NpYmxlUXVlcmllcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17Y2hpcENvbnRhaW5lclN0eWxlfT5cbiAgICAgICAgICAgICAgICB7cG9zc2libGVRdWVyaWVzLm1hcCgocSwgaWR4KSA9PiAoXG4gICAgICAgICAgICAgICAgICA8c3BhbiBrZXk9e2lkeH0gc3R5bGU9e2NoaXBTdHlsZX0gb25DbGljaz17KCkgPT4gb25RdWlja1F1ZXJ5ICYmIG9uUXVpY2tRdWVyeShxKX0+XG4gICAgICAgICAgICAgICAgICAgIHtxfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBcbiAgICAgIHN0eWxlPXttZXNzYWdlQ29udGFpbmVyU3R5bGV9XG4gICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldElzSG92ZXJlZCh0cnVlKX1cbiAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4geyBpZiAoIWVkaXRpbmdGZWVkYmFjaykgc2V0SXNIb3ZlcmVkKGZhbHNlKTsgfX1cbiAgICA+XG4gICAgICA8ZGl2IHN0eWxlPXtsYWJlbFJvd1N0eWxlfT5cbiAgICAgICAge2lzVXNlciA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17dG9wVGltZXN0YW1wU3R5bGV9Pnt0aW1lc3RhbXB9PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXttZXNzYWdlTGFiZWxTdHlsZX0+WW91PC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VMYWJlbFN0eWxlfT5BZ2VudDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17dG9wVGltZXN0YW1wU3R5bGV9Pnt0aW1lc3RhbXB9PC9kaXY+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cblxuICAgICAge21lc3NhZ2UuYXR0YWNobWVudHMgJiYgbWVzc2FnZS5hdHRhY2htZW50cy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5hdHRhY2htZW50c0NvbnRhaW5lclN0eWxlLCBhbGlnbkl0ZW1zOiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnIH19PlxuICAgICAgICAgIHttZXNzYWdlLmF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgZ2FwOiAnMTJweCcsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogJzEycHggMTRweCcsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpc1VzZXIgPyAncmdiYSgyNTUsMjU1LDI1NSwwLjEyKScgOiAnI2Y1ZjVmNScsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiBpc1VzZXIgPyAnMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xOCknIDogJzFweCBzb2xpZCAjZTVlNWU1JyxcbiAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzI2MHB4JyxcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogJzM2MHB4JyxcbiAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHthdHRhY2htZW50LnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykgPyAoXG4gICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgc3JjPXthdHRhY2htZW50LnVybH1cbiAgICAgICAgICAgICAgICAgIGFsdD17YXR0YWNobWVudC5uYW1lfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgd2lkdGg6IDU2LCBoZWlnaHQ6IDU2LCBib3JkZXJSYWRpdXM6IDgsIG9iamVjdEZpdDogJ2NvdmVyJyB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogNDAsIGhlaWdodDogNDAsIGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgIHtnZXRGaWxlSWNvbihhdHRhY2htZW50LnR5cGUpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250V2VpZ2h0OiA2MDAsIGZvbnRTaXplOiAxNCB9fT57YXR0YWNobWVudC5uYW1lfTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDEyLCBvcGFjaXR5OiAwLjggfX0+XG4gICAgICAgICAgICAgICAgICB7YXR0YWNobWVudC50eXBlLmluY2x1ZGVzKCcvJykgPyBhdHRhY2htZW50LnR5cGUuc3BsaXQoJy8nKVsxXS50b1VwcGVyQ2FzZSgpIDogYXR0YWNobWVudC50eXBlfVxuICAgICAgICAgICAgICAgICAge2F0dGFjaG1lbnQuc2l6ZSA/IGAgwrcgJHsoYXR0YWNobWVudC5zaXplIC8gMTAyNCkudG9GaXhlZCgxKX0gS0JgIDogJyd9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAge21lc3NhZ2UudGV4dCAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAnOHB4JywgYWxpZ25TZWxmOiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnIH19PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgLi4uYnViYmxlU3R5bGUsIHBvc2l0aW9uOiAncmVsYXRpdmUnIH19PlxuICAgICAgICAgICAge21lc3NhZ2VMaW5lc31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogRmVlZGJhY2sgcm93IGJlbG93IGFnZW50IG1lc3NhZ2UgKi99XG4gICAgICB7c2hvd1RodW1ic0FyZWEgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXtmZWVkYmFja1Jvd1N0eWxlfT5cbiAgICAgICAgICB7ZmVlZGJhY2tWYWx1ZSA/IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3NpbmdsZUljb25TdHlsZX0+XG4gICAgICAgICAgICAgIHtmZWVkYmFja1ZhbHVlID09PSAnZ29vZCcgPyAoXG4gICAgICAgICAgICAgICAgPFRodW1ic1VwIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxUaHVtYnNEb3duIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aWNvbkJ1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIHRpdGxlPVwiVGh1bWJzIHVwXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlX2lkICYmIG9uRmVlZGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgb25GZWVkYmFjayhtZXNzYWdlLm1lc3NhZ2VfaWQsICdnb29kJyk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxUaHVtYnNVcCBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3NlcGFyYXRvclN0eWxlfSAvPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e2ljb25CdXR0b25TdHlsZX1cbiAgICAgICAgICAgICAgICB0aXRsZT1cIlRodW1icyBkb3duXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS5tZXNzYWdlX2lkICYmIG9uRmVlZGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgb25GZWVkYmFjayhtZXNzYWdlLm1lc3NhZ2VfaWQsICdiYWQnKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRodW1ic0Rvd24gc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcbiJdfQ==
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hhdE1lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9DaGF0TWVzc2FnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUF5QnhELE1BQU0sQ0FBQyxJQUFNLG9CQUFvQixHQUErQixVQUFDLEVBV2hFO1FBVkMsT0FBTyxhQUFBLEVBQ1AsS0FBSyxXQUFBLEVBQ0wsV0FBVyxpQkFBQSxFQUNYLHNCQUFzQixFQUF0QixjQUFjLG1CQUFHLEtBQUssS0FBQSxFQUN0Qix5QkFBeUIsRUFBekIsaUJBQWlCLG1CQUFHLEtBQUssS0FBQSxFQUN6QixVQUFVLGdCQUFBLEVBQ1YsZUFBZSxxQkFBQSxFQUNELGdCQUFnQixrQkFBQSxFQUM5QixlQUFlLHFCQUFBLEVBQ2YsWUFBWSxrQkFBQTtJQUVaLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxDQUFDO0lBQzlDLElBQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO0lBQ2hELElBQU0sZ0JBQWdCLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLElBQUksY0FBYyxDQUFDO0lBQzNELElBQUEsS0FBNEIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBaEQsU0FBUyxR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QyxDQUFDLENBQzFCLEtBQUMsUUFBUSxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksQ0FDdkIsQ0FBQyxDQUFDLENBQUMsQ0FDRixLQUFDLFVBQVUsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLENBQ3pCLEdBQ0csQ0FDUCxDQUFDLENBQUMsQ0FBQyxDQUNGLDhCQUNFLGlCQUNFLElBQUksRUFBQyxRQUFRLEVBQ2IsS0FBSyxFQUFFLGVBQWUsRUFDdEIsS0FBSyxFQUFDLFdBQVcsRUFDakIsT0FBTyxFQUFFO2dDQUNQLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUUsQ0FBQztvQ0FDckMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0NBQ3pDLENBQUM7NEJBQ0gsQ0FBQyxZQUVELEtBQUMsUUFBUSxJQUFDLElBQUksRUFBRSxFQUFFLEdBQUksR0FDZixFQUNULGNBQUssS0FBSyxFQUFFLGNBQWMsR0FBSSxFQUM5QixpQkFDRSxJQUFJLEVBQUMsUUFBUSxFQUNiLEtBQUssRUFBRSxlQUFlLEVBQ3RCLEtBQUssRUFBQyxhQUFhLEVBQ25CLE9BQU8sRUFBRTtnQ0FDUCxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksVUFBVSxFQUFFLENBQUM7b0NBQ3JDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dDQUN4QyxDQUFDOzRCQUNILENBQUMsWUFFRCxLQUFDLFVBQVUsSUFBQyxJQUFJLEVBQUUsRUFBRSxHQUFJLEdBQ2pCLElBQ1IsQ0FDSixHQUNHLENBQ1AsSUFDRyxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgV2VsY29tZUNhcmQgfSBmcm9tICcuL1dlbGNvbWVDYXJkJztcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVXNlciwgVXNlclgsIEFsZXJ0Q2lyY2xlLCBUaHVtYnNVcCwgVGh1bWJzRG93biB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyBmb3JtYXRUaW1lc3RhbXAgfSBmcm9tICcuLi91dGlscy90aW1lJztcbmltcG9ydCB7IGdldEZpbGVJY29uIH0gZnJvbSAnLi9GaWxlVHlwZUljb24nO1xuZXhwb3J0IHsgQXR0YWNobWVudFByZXZpZXcgfSBmcm9tICcuL0F0dGFjaG1lbnRQcmV2aWV3JztcblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlUHJvcHMge1xuICBtZXNzYWdlOiBDaGF0TWVzc2FnZTtcbiAgdGhlbWU/OiB7XG4gICAgcHJpbWFyeUNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUNvbG9yPzogc3RyaW5nO1xuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XG4gICAgZm9udFNpemU/OiBzdHJpbmc7XG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgfTtcbiAgb25QbGF5QXVkaW8/OiAodGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpc1BsYXlpbmdBdWRpbz86IGJvb2xlYW47XG4gIGlzRmlyc3RNZXNzYWdlPzogYm9vbGVhbjtcbiAgaXNOZXh0U2FtZVNwZWFrZXI/OiBib29sZWFuO1xuICBpc1ByZXZTYW1lU3BlYWtlcj86IGJvb2xlYW47XG4gIG9uRmVlZGJhY2s/OiAobWVzc2FnZUlkOiBzdHJpbmcsIHZhbHVlOiAnZ29vZCcgfCAnYmFkJykgPT4gdm9pZDtcbiAgZW5hYmxlVHlwZXdyaXRlcj86IGJvb2xlYW47XG4gIHdlbGNvbWVJbWFnZVVybD86IHN0cmluZztcbiAgd2VsY29tZVRpdGxlPzogc3RyaW5nO1xuICBwb3NzaWJsZVF1ZXJpZXM/OiBzdHJpbmdbXTtcbiAgb25RdWlja1F1ZXJ5PzogKHF1ZXJ5OiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBDaGF0TWVzc2FnZUNvbXBvbmVudDogUmVhY3QuRkM8Q2hhdE1lc3NhZ2VQcm9wcz4gPSAoe1xuICBtZXNzYWdlLFxuICB0aGVtZSxcbiAgb25QbGF5QXVkaW8sXG4gIGlzRmlyc3RNZXNzYWdlID0gZmFsc2UsXG4gIGlzUHJldlNhbWVTcGVha2VyID0gZmFsc2UsXG4gIG9uRmVlZGJhY2ssXG4gIHdlbGNvbWVJbWFnZVVybCxcbiAgd2VsY29tZVRpdGxlOiB3ZWxjb21lVGl0bGVQcm9wLFxuICBwb3NzaWJsZVF1ZXJpZXMsXG4gIG9uUXVpY2tRdWVyeSxcbn0pID0+IHtcbiAgY29uc3QgaXNVc2VyID0gbWVzc2FnZS5zcGVha2VyID09PSAnY3VzdG9tZXInO1xuICBjb25zdCBpc1NwZWNpYWwgPSBtZXNzYWdlLnNwZWFrZXIgPT09ICdzcGVjaWFsJztcbiAgY29uc3QgaXNXZWxjb21lTWVzc2FnZSA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbCAmJiBpc0ZpcnN0TWVzc2FnZTtcbiAgY29uc3QgW2lzSG92ZXJlZCwgc2V0SXNIb3ZlcmVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2VkaXRpbmdGZWVkYmFja10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtkaXNwbGF5VGV4dF0gPSBSZWFjdC51c2VTdGF0ZTxzdHJpbmc+KG1lc3NhZ2UudGV4dCk7XG5cbiAgY29uc3QgdGltZXN0YW1wID0gZm9ybWF0VGltZXN0YW1wKG1lc3NhZ2UuY3JlYXRlX3RpbWUpO1xuXG4gIC8vIEZhc3QgdHlwZXdyaXRlciBlZmZlY3QgZm9yIG5ld2x5IGRpc3BsYXllZCBhZ2VudCBtZXNzYWdlcywgZml4IGxhdGVyXG4gIC8vIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gIC8vICAgaWYgKCFpc1VzZXIgJiYgIWlzU3BlY2lhbCAmJiBlbmFibGVUeXBld3JpdGVyICYmIG1lc3NhZ2UudGV4dCAhPT0gbGFzdEFuaW1hdGVkUmVmLmN1cnJlbnQpIHtcbiAgLy8gICAgIGxhc3RBbmltYXRlZFJlZi5jdXJyZW50ID0gbWVzc2FnZS50ZXh0O1xuICAvLyAgICAgc2V0SXNUeXBld3JpdGluZyh0cnVlKTtcbiAgLy8gICAgIHNldERpc3BsYXlUZXh0KCcnKTtcbiAgLy8gICAgIGxldCBpID0gMDtcbiAgLy8gICAgIGNvbnN0IHRvdGFsID0gbWVzc2FnZS50ZXh0Lmxlbmd0aDtcbiAgLy8gICAgIGNvbnN0IHRpY2tNcyA9IDE2O1xuICAvLyAgICAgY29uc3QgdGFyZ2V0TXMgPSAxMjAwO1xuICAvLyAgICAgY29uc3QgY2hhcnNQZXJUaWNrID0gTWF0aC5tYXgoMSwgTWF0aC5yb3VuZCh0b3RhbCAvICh0YXJnZXRNcyAvIHRpY2tNcykpKTtcbiAgLy8gICAgIGNvbnN0IGludGVydmFsID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgLy8gICAgICAgaSArPSBjaGFyc1BlclRpY2s7XG4gIC8vICAgICAgIGlmIChpID49IHRvdGFsKSB7XG4gIC8vICAgICAgICAgc2V0RGlzcGxheVRleHQobWVzc2FnZS50ZXh0KTtcbiAgLy8gICAgICAgICBzZXRJc1R5cGV3cml0aW5nKGZhbHNlKTtcbiAgLy8gICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIC8vICAgICAgIH0gZWxzZSB7XG4gIC8vICAgICAgICAgc2V0RGlzcGxheVRleHQobWVzc2FnZS50ZXh0LnNsaWNlKDAsIGkpKTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfSwgdGlja01zKTtcbiAgLy8gICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHNldERpc3BsYXlUZXh0KG1lc3NhZ2UudGV4dCk7XG4gIC8vICAgICBzZXRJc1R5cGV3cml0aW5nKGZhbHNlKTtcbiAgLy8gICB9XG4gIC8vIH0sIFttZXNzYWdlLnRleHQsIGVuYWJsZVR5cGV3cml0ZXIsIGlzVXNlciwgaXNTcGVjaWFsXSk7XG5cbiAgLy8gVXBkYXRlZCBkZXNpZ24gY29sb3JzXG4gIGNvbnN0IHVzZXJCdWJibGVCZ0NvbG9yID0gJyNFNEU0RTcnOyAvLyBncmV5IGZvciB1c2VyXG4gIGNvbnN0IHVzZXJUZXh0Q29sb3IgPSAnIzAwMDAwMCc7XG4gIGNvbnN0IGFnZW50VGV4dENvbG9yID0gJyMwMDAwMDAnO1xuICBjb25zdCBmb250RmFtaWx5ID0gdGhlbWU/LmZvbnRGYW1pbHkgfHwgJ1JvYm90bywgQXJpYWwsIHNhbnMtc2VyaWYnO1xuICBjb25zdCBmb250U2l6ZSA9IHRoZW1lPy5mb250U2l6ZSB8fCAnMTVweCc7XG5cbiAgY29uc3QgbWVzc2FnZUNvbnRhaW5lclN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIG1hcmdpbkJvdHRvbTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnOHB4JyA6ICc4cHgnLFxuICAgIG1hcmdpblRvcDogaXNQcmV2U2FtZVNwZWFrZXIgPyAnMHB4JyA6ICcxNnB4JyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBhbGlnbkl0ZW1zOiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICB9O1xuXG4gIGNvbnN0IGxhYmVsUm93U3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogaXNQcmV2U2FtZVNwZWFrZXIgPyAnbm9uZScgOiAnZmxleCcsXG4gICAgd2lkdGg6ICc4MCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiBpc1VzZXIgPyAnZmxleC1lbmQnIDogJ2ZsZXgtc3RhcnQnLFxuICAgIGFsaWduSXRlbXM6ICdiYXNlbGluZScsXG4gICAgZ2FwOiAnOHB4JyxcbiAgICBtYXJnaW5Cb3R0b206ICc2cHgnLFxuICB9O1xuXG4gIGNvbnN0IG1lc3NhZ2VMYWJlbFN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0ge1xuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgY29sb3I6ICcjMDAwMDAwJyxcbiAgICBsaW5lSGVpZ2h0OiAxLFxuICAgIGZvbnRXZWlnaHQ6IDYwMCxcbiAgfTtcblxuICBjb25zdCB0b3BUaW1lc3RhbXBTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBmb250U2l6ZTogJzEzcHgnLFxuICAgIGNvbG9yOiAnIzZiNzI4MCcsXG4gICAgbGluZUhlaWdodDogMSxcbiAgfTtcblxuICBjb25zdCBtZXNzYWdlQnViYmxlQ29udGFpbmVyU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIG1heFdpZHRoOiAnODAlJyxcbiAgfTtcblxuICAvLyBPbmx5IHVzZXIncyBtZXNzYWdlcyBzaG91bGQgcmVuZGVyIGFzIGJ1YmJsZXMuXG4gIC8vIEFnZW50IG1lc3NhZ2VzIGFyZSBwbGFpbiB0ZXh0IHdpdGggbm8gY29udGFpbmVyIGJhY2tncm91bmQuXG4gIGNvbnN0IGJ1YmJsZVN0eWxlOiBSZWFjdC5DU1NQcm9wZXJ0aWVzID0gaXNVc2VyXG4gICAgPyB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdXNlckJ1YmJsZUJnQ29sb3IsXG4gICAgICAgIGNvbG9yOiB1c2VyVGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAnMTJweCAxNnB4JyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTJweCAwIDEycHggMTJweCcsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnMCAxcHggMnB4IHJnYmEoMCwwLDAsMC4wOCknXG4gICAgICB9XG4gICAgOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgY29sb3I6IGFnZW50VGV4dENvbG9yLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIGZvbnRTaXplLFxuICAgICAgICBmb250RmFtaWx5LFxuICAgICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgICAgbGluZUhlaWdodDogMS40LFxuICAgICAgICBtYXhXaWR0aDogJzEwMCUnLFxuICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZSdcbiAgICAgIH07XG5cbiAgY29uc3QgYXR0YWNobWVudHNDb250YWluZXJTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBtYXJnaW5Ub3A6ICc4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBnYXA6ICc4cHgnLFxuICB9O1xuXG4gIC8vIEZlZWRiYWNrIHN0YXRlIGFuZCBVSSAodGh1bWJzIHVwL2Rvd24pIGZvciBhZ2VudCBtZXNzYWdlc1xuICBjb25zdCBmZWVkYmFja1ZhbHVlID0gKG1lc3NhZ2UuZmVlZGJhY2sgJiYgbWVzc2FnZS5mZWVkYmFjay5sZW5ndGggPiAwKVxuICAgID8gbWVzc2FnZS5mZWVkYmFja1ttZXNzYWdlLmZlZWRiYWNrLmxlbmd0aCAtIDFdLmZlZWRiYWNrXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgdGh1bWJzU2hvdWxkU2hvdyA9ICFpc1VzZXIgJiYgIWlzU3BlY2lhbCAmJiBpc0hvdmVyZWQgJiYgIWZlZWRiYWNrVmFsdWU7XG4gIGNvbnN0IHNob3dUaHVtYnNBcmVhID0gIWlzVXNlciAmJiAhaXNTcGVjaWFsOyAvLyBPbmx5IGFnZW50cyBoYXZlIHRodW1icyBhcmVhXG5cbiAgY29uc3QgZmVlZGJhY2tSb3dTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBkaXNwbGF5OiBzaG93VGh1bWJzQXJlYSA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBtYXJnaW5Ub3A6IDgsXG4gICAgYWxpZ25TZWxmOiAnZmxleC1zdGFydCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICBnYXA6IDgsXG4gICAgdmlzaWJpbGl0eTogdGh1bWJzU2hvdWxkU2hvdyB8fCAhIWZlZWRiYWNrVmFsdWUgPyAndmlzaWJsZScgOiAnaGlkZGVuJyxcbiAgfTtcblxuICBjb25zdCBpY29uQnV0dG9uU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBwYWRkaW5nOiAwLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGNvbG9yOiAnIzljYTNhZicsXG4gICAgZGlzcGxheTogdGh1bWJzU2hvdWxkU2hvdyA/ICdmbGV4JyA6ICdub25lJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgfTtcblxuICBjb25zdCBzZXBhcmF0b3JTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICB3aWR0aDogMSxcbiAgICBoZWlnaHQ6IDE0LFxuICAgIGJhY2tncm91bmRDb2xvcjogJyNlNWU3ZWInLFxuICAgIGRpc3BsYXk6IHRodW1ic1Nob3VsZFNob3cgPyAnYmxvY2snIDogJ25vbmUnLFxuICB9O1xuXG4gIGNvbnN0IHNpbmdsZUljb25TdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICBjb2xvcjogJyMwMDAwMDAnLFxuICAgIGRpc3BsYXk6IGZlZWRiYWNrVmFsdWUgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIH07XG5cbiAgbGV0IHdlbGNvbWVUaXRsZSA9IHdlbGNvbWVUaXRsZVByb3AgfHwgJyc7XG4gIGxldCB3ZWxjb21lQ29udGVudCA9ICcnO1xuICBcbiAgaWYgKGlzV2VsY29tZU1lc3NhZ2UpIHtcbiAgICBjb25zdCBtZXNzYWdlVGV4dCA9IG1lc3NhZ2UudGV4dDtcbiAgICBpZiAoIXdlbGNvbWVUaXRsZVByb3ApIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gbWVzc2FnZVRleHQuc3BsaXQoL1tcXG5cXC4hP10vKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAwKSB3ZWxjb21lVGl0bGUgPSAocGFydHNbMF0gfHwgJycpLnRyaW0oKTtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gbWVzc2FnZVRleHQuc3Vic3RyaW5nKHdlbGNvbWVUaXRsZS5sZW5ndGgpLnRyaW0oKTtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gd2VsY29tZUNvbnRlbnQucmVwbGFjZSgvXlssLiE/XFxzXSsvLCAnJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdlbGNvbWVDb250ZW50ID0gbWVzc2FnZVRleHQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZUxpbmVzID0gIWlzV2VsY29tZU1lc3NhZ2UgPyBkaXNwbGF5VGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgPFJlYWN0LkZyYWdtZW50IGtleT17aX0+XG4gICAgICB7bGluZX1cbiAgICAgIHtpIDwgZGlzcGxheVRleHQuc3BsaXQoJ1xcbicpLmxlbmd0aCAtIDEgJiYgPGJyIC8+fVxuICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICkpIDogbnVsbDtcblxuICAvLyBIYW5kbGUgc3BlY2lhbCBtZXNzYWdlcyAobGlrZSB0YWtlb3ZlciBpbmRpY2F0b3JzKVxuICBpZiAoaXNTcGVjaWFsKSB7XG4gICAgY29uc3Qgc3BlY2lhbE1lc3NhZ2VTdHlsZTogUmVhY3QuQ1NTUHJvcGVydGllcyA9IHtcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgbWFyZ2luOiAnMTZweCAwJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgfTtcblxuICAgIC8vIERldGVybWluZSBpY29uIGFuZCBzdHlsZSBiYXNlZCBvbiBtZXNzYWdlIGNvbnRlbnRcbiAgICBsZXQgaWNvbjtcbiAgICBsZXQgYmFja2dyb3VuZENvbG9yID0gJyNFM0YyRkQnO1xuICAgIGxldCB0ZXh0Q29sb3IgPSAnIzE5NzZEMic7XG4gICAgXG4gICAgaWYgKG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdvZmZsaW5lJykgfHwgbWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2luYWN0aXZlJykpIHtcbiAgICAgIGljb24gPSA8QWxlcnRDaXJjbGUgc2l6ZT17MTh9IC8+O1xuICAgICAgYmFja2dyb3VuZENvbG9yID0gJyNGRkYzRTAnO1xuICAgICAgdGV4dENvbG9yID0gJyNGNTdDMDAnO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3Rvb2sgb3ZlcicpIHx8IG1lc3NhZ2UudGV4dC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCd0YWtlb3ZlcicpKSB7XG4gICAgICBpY29uID0gPFVzZXJYIHNpemU9ezE4fSAvPjtcbiAgICB9IGVsc2Uge1xuICAgICAgaWNvbiA9IDxVc2VyIHNpemU9ezE4fSAvPjtcbiAgICB9XG5cbiAgICBjb25zdCBzcGVjaWFsQnViYmxlU3R5bGU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBjb2xvcjogdGV4dENvbG9yLFxuICAgICAgcGFkZGluZzogJzhweCAxNnB4JyxcbiAgICAgIGJvcmRlclJhZGl1czogJzE2cHgnLFxuICAgICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICAgIGZvbnRGYW1pbHksXG4gICAgICBmb250V2VpZ2h0OiAnNTAwJyxcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgZ2FwOiAnOHB4JyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e3NwZWNpYWxNZXNzYWdlU3R5bGV9PlxuICAgICAgICA8ZGl2IHN0eWxlPXtzcGVjaWFsQnViYmxlU3R5bGV9PlxuICAgICAgICAgIHtpY29ufVxuICAgICAgICAgIHttZXNzYWdlLnRleHR9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc1dlbGNvbWVNZXNzYWdlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VDb250YWluZXJTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3sgLi4ubWVzc2FnZUJ1YmJsZUNvbnRhaW5lclN0eWxlIH19PlxuICAgICAgICAgIDxXZWxjb21lQ2FyZFxuICAgICAgICAgICAgdGhlbWU9e3RoZW1lfVxuICAgICAgICAgICAgaW1hZ2VVcmw9e3dlbGNvbWVJbWFnZVVybH1cbiAgICAgICAgICAgIHRpdGxlPXt3ZWxjb21lVGl0bGV9XG4gICAgICAgICAgICBjb250ZW50PXt3ZWxjb21lQ29udGVudH1cbiAgICAgICAgICAgIHBvc3NpYmxlUXVlcmllcz17cG9zc2libGVRdWVyaWVzfVxuICAgICAgICAgICAgb25RdWlja1F1ZXJ5PXtvblF1aWNrUXVlcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IFxuICAgICAgc3R5bGU9e21lc3NhZ2VDb250YWluZXJTdHlsZX1cbiAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0SXNIb3ZlcmVkKHRydWUpfVxuICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiB7IGlmICghZWRpdGluZ0ZlZWRiYWNrKSBzZXRJc0hvdmVyZWQoZmFsc2UpOyB9fVxuICAgID5cbiAgICAgIDxkaXYgc3R5bGU9e2xhYmVsUm93U3R5bGV9PlxuICAgICAgICB7aXNVc2VyID8gKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt0b3BUaW1lc3RhbXBTdHlsZX0+e3RpbWVzdGFtcH08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e21lc3NhZ2VMYWJlbFN0eWxlfT5Zb3U8L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17bWVzc2FnZUxhYmVsU3R5bGV9PkFnZW50PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt0b3BUaW1lc3RhbXBTdHlsZX0+e3RpbWVzdGFtcH08L2Rpdj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7bWVzc2FnZS5hdHRhY2htZW50cyAmJiBtZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8ZGl2IHN0eWxlPXt7IC4uLmF0dGFjaG1lbnRzQ29udGFpbmVyU3R5bGUsIGFsaWduSXRlbXM6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAge21lc3NhZ2UuYXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBnYXA6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMTJweCAxNHB4JyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGlzVXNlciA/ICdyZ2JhKDI1NSwyNTUsMjU1LDAuMTIpJyA6ICcjZjVmNWY1JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6IGlzVXNlciA/ICcxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjE4KScgOiAnMXB4IHNvbGlkICNlNWU1ZTUnLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzEycHgnLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMjYwcHgnLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiAnMzYwcHgnLFxuICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2F0dGFjaG1lbnQudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSA/IChcbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBzcmM9e2F0dGFjaG1lbnQudXJsfVxuICAgICAgICAgICAgICAgICAgYWx0PXthdHRhY2htZW50Lm5hbWV9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogNTYsIGhlaWdodDogNTYsIGJvcmRlclJhZGl1czogOCwgb2JqZWN0Rml0OiAnY292ZXInIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiA0MCwgaGVpZ2h0OiA0MCwgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAge2dldEZpbGVJY29uKGF0dGFjaG1lbnQudHlwZSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRXZWlnaHQ6IDYwMCwgZm9udFNpemU6IDE0IH19PnthdHRhY2htZW50Lm5hbWV9PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMTIsIG9wYWNpdHk6IDAuOCB9fT5cbiAgICAgICAgICAgICAgICAgIHthdHRhY2htZW50LnR5cGUuaW5jbHVkZXMoJy8nKSA/IGF0dGFjaG1lbnQudHlwZS5zcGxpdCgnLycpWzFdLnRvVXBwZXJDYXNlKCkgOiBhdHRhY2htZW50LnR5cGV9XG4gICAgICAgICAgICAgICAgICB7YXR0YWNobWVudC5zaXplID8gYCDCtyAkeyhhdHRhY2htZW50LnNpemUgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmAgOiAnJ31cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7bWVzc2FnZS50ZXh0ICYmIChcbiAgICAgICAgPGRpdiBzdHlsZT17eyBkaXNwbGF5OiAnZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInLCBnYXA6ICc4cHgnLCBhbGlnblNlbGY6IGlzVXNlciA/ICdmbGV4LWVuZCcgOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyAuLi5idWJibGVTdHlsZSwgcG9zaXRpb246ICdyZWxhdGl2ZScgfX0+XG4gICAgICAgICAgICB7bWVzc2FnZUxpbmVzfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBGZWVkYmFjayByb3cgYmVsb3cgYWdlbnQgbWVzc2FnZSAqL31cbiAgICAgIHtzaG93VGh1bWJzQXJlYSAmJiAoXG4gICAgICAgIDxkaXYgc3R5bGU9e2ZlZWRiYWNrUm93U3R5bGV9PlxuICAgICAgICAgIHtmZWVkYmFja1ZhbHVlID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17c2luZ2xlSWNvblN0eWxlfT5cbiAgICAgICAgICAgICAge2ZlZWRiYWNrVmFsdWUgPT09ICdnb29kJyA/IChcbiAgICAgICAgICAgICAgICA8VGh1bWJzVXAgc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRodW1ic0Rvd24gc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtpY29uQnV0dG9uU3R5bGV9XG4gICAgICAgICAgICAgICAgdGl0bGU9XCJUaHVtYnMgdXBcIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLm1lc3NhZ2VfaWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1lc3NhZ2UubWVzc2FnZV9pZCwgJ2dvb2QnKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFRodW1ic1VwIHNpemU9ezE4fSAvPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT17c2VwYXJhdG9yU3R5bGV9IC8+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17aWNvbkJ1dHRvblN0eWxlfVxuICAgICAgICAgICAgICAgIHRpdGxlPVwiVGh1bWJzIGRvd25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLm1lc3NhZ2VfaWQgJiYgb25GZWVkYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBvbkZlZWRiYWNrKG1lc3NhZ2UubWVzc2FnZV9pZCwgJ2JhZCcpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8VGh1bWJzRG93biBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { FileText, FileJson, FileImage } from 'lucide-react';
|
|
3
|
+
export var getFileIcon = function (fileType) {
|
|
4
|
+
if (fileType.startsWith('image/'))
|
|
5
|
+
return _jsx(FileImage, { size: 24, color: "#6D28D9" });
|
|
6
|
+
if (fileType === 'application/pdf')
|
|
7
|
+
return _jsx(FileText, { size: 24, color: "#B91C1C" });
|
|
8
|
+
if (fileType === 'application/json')
|
|
9
|
+
return _jsx(FileJson, { size: 24, color: "#1D4ED8" });
|
|
10
|
+
return _jsx(FileText, { size: 24, color: "#4B5563" });
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmlsZVR5cGVJY29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvRmlsZVR5cGVJY29uLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdELE1BQU0sQ0FBQyxJQUFNLFdBQVcsR0FBRyxVQUFDLFFBQWdCO0lBQzFDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFBRSxPQUFPLEtBQUMsU0FBUyxJQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFDLFNBQVMsR0FBRyxDQUFDO0lBQ2xGLElBQUksUUFBUSxLQUFLLGlCQUFpQjtRQUFFLE9BQU8sS0FBQyxRQUFRLElBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUMsU0FBUyxHQUFHLENBQUM7SUFDbEYsSUFBSSxRQUFRLEtBQUssa0JBQWtCO1FBQUUsT0FBTyxLQUFDLFFBQVEsSUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBQyxTQUFTLEdBQUcsQ0FBQztJQUNuRixPQUFPLEtBQUMsUUFBUSxJQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFDLFNBQVMsR0FBRyxDQUFDO0FBQ2hELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGaWxlVGV4dCwgRmlsZUpzb24sIEZpbGVJbWFnZSB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5cbmV4cG9ydCBjb25zdCBnZXRGaWxlSWNvbiA9IChmaWxlVHlwZTogc3RyaW5nKTogUmVhY3QuUmVhY3RFbGVtZW50ID0+IHtcbiAgaWYgKGZpbGVUeXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSByZXR1cm4gPEZpbGVJbWFnZSBzaXplPXsyNH0gY29sb3I9XCIjNkQyOEQ5XCIgLz47XG4gIGlmIChmaWxlVHlwZSA9PT0gJ2FwcGxpY2F0aW9uL3BkZicpIHJldHVybiA8RmlsZVRleHQgc2l6ZT17MjR9IGNvbG9yPVwiI0I5MUMxQ1wiIC8+O1xuICBpZiAoZmlsZVR5cGUgPT09ICdhcHBsaWNhdGlvbi9qc29uJykgcmV0dXJuIDxGaWxlSnNvbiBzaXplPXsyNH0gY29sb3I9XCIjMUQ0RUQ4XCIgLz47XG4gIHJldHVybiA8RmlsZVRleHQgc2l6ZT17MjR9IGNvbG9yPVwiIzRCNTU2M1wiIC8+O1xufTtcblxuIl19
|