css-to-tailwind-react 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,26 @@
1
+ export interface DiffLine {
2
+ type: 'context' | 'added' | 'removed';
3
+ content: string;
4
+ oldLineNumber?: number;
5
+ newLineNumber?: number;
6
+ }
7
+ export interface DiffHunk {
8
+ oldStart: number;
9
+ oldLines: number;
10
+ newStart: number;
11
+ newLines: number;
12
+ lines: DiffLine[];
13
+ }
14
+ export interface DiffResult {
15
+ hunks: DiffHunk[];
16
+ hasChanges: boolean;
17
+ }
18
+ export declare function computeUnifiedDiff(oldContent: string, newContent: string, contextLines?: number): DiffResult;
19
+ export declare function formatDiffHeader(filePath: string): string;
20
+ export declare function formatDiffHunk(hunk: DiffHunk): string;
21
+ export declare function formatDiff(filePath: string, diff: DiffResult): string;
22
+ export declare function computeAndFormatDiff(oldContent: string, newContent: string, filePath: string): string;
23
+ export declare function getChangeStats(diff: DiffResult): {
24
+ added: number;
25
+ removed: number;
26
+ };
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.computeUnifiedDiff = computeUnifiedDiff;
4
+ exports.formatDiffHeader = formatDiffHeader;
5
+ exports.formatDiffHunk = formatDiffHunk;
6
+ exports.formatDiff = formatDiff;
7
+ exports.computeAndFormatDiff = computeAndFormatDiff;
8
+ exports.getChangeStats = getChangeStats;
9
+ function diffLines(oldLines, newLines) {
10
+ const m = oldLines.length;
11
+ const n = newLines.length;
12
+ const dp = [];
13
+ for (let i = 0; i <= m; i++) {
14
+ dp[i] = [];
15
+ for (let j = 0; j <= n; j++) {
16
+ if (i === 0) {
17
+ dp[i][j] = j;
18
+ }
19
+ else if (j === 0) {
20
+ dp[i][j] = i;
21
+ }
22
+ else if (oldLines[i - 1] === newLines[j - 1]) {
23
+ dp[i][j] = dp[i - 1][j - 1];
24
+ }
25
+ else {
26
+ dp[i][j] = 1 + Math.min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]);
27
+ }
28
+ }
29
+ }
30
+ return dp;
31
+ }
32
+ function backtrackEditScript(dp, oldLines, newLines, i, j) {
33
+ const script = [];
34
+ while (i > 0 || j > 0) {
35
+ if (i > 0 && j > 0 && oldLines[i - 1] === newLines[j - 1]) {
36
+ script.unshift({ type: 'context', oldIndex: i - 1, newIndex: j - 1 });
37
+ i--;
38
+ j--;
39
+ }
40
+ else if (j > 0 && (i === 0 || dp[i][j - 1] <= dp[i - 1][j])) {
41
+ script.unshift({ type: 'added', oldIndex: -1, newIndex: j - 1 });
42
+ j--;
43
+ }
44
+ else if (i > 0) {
45
+ script.unshift({ type: 'removed', oldIndex: i - 1, newIndex: -1 });
46
+ i--;
47
+ }
48
+ }
49
+ return script;
50
+ }
51
+ const DEFAULT_CONTEXT_LINES = 3;
52
+ function computeUnifiedDiff(oldContent, newContent, contextLines = DEFAULT_CONTEXT_LINES) {
53
+ const oldLines = oldContent.split('\n');
54
+ const newLines = newContent.split('\n');
55
+ if (oldLines.length === 0 && newLines.length === 0) {
56
+ return { hunks: [], hasChanges: false };
57
+ }
58
+ if (oldContent === newContent) {
59
+ return { hunks: [], hasChanges: false };
60
+ }
61
+ const dp = diffLines(oldLines, newLines);
62
+ const editScript = backtrackEditScript(dp, oldLines, newLines, oldLines.length, newLines.length);
63
+ const changeIndices = [];
64
+ editScript.forEach((item, index) => {
65
+ if (item.type !== 'context') {
66
+ changeIndices.push(index);
67
+ }
68
+ });
69
+ if (changeIndices.length === 0) {
70
+ return { hunks: [], hasChanges: false };
71
+ }
72
+ const hunks = [];
73
+ const visited = new Set();
74
+ for (const changeIndex of changeIndices) {
75
+ if (visited.has(changeIndex))
76
+ continue;
77
+ let start = Math.max(0, changeIndex - contextLines);
78
+ let end = Math.min(editScript.length - 1, changeIndex + contextLines);
79
+ for (let i = changeIndex + contextLines + 1; i < editScript.length; i++) {
80
+ if (editScript[i].type !== 'context') {
81
+ const gapStart = end + 1;
82
+ const gapEnd = i - contextLines;
83
+ if (gapEnd <= gapStart) {
84
+ end = i + contextLines;
85
+ }
86
+ else {
87
+ break;
88
+ }
89
+ }
90
+ }
91
+ for (let i = start; i <= end; i++) {
92
+ visited.add(i);
93
+ }
94
+ const hunkLines = [];
95
+ let oldLineNum = 0;
96
+ let newLineNum = 0;
97
+ for (let i = 0; i < start; i++) {
98
+ const item = editScript[i];
99
+ if (item.type === 'context' || item.type === 'removed') {
100
+ oldLineNum++;
101
+ }
102
+ if (item.type === 'context' || item.type === 'added') {
103
+ newLineNum++;
104
+ }
105
+ }
106
+ const hunkOldStart = oldLineNum + 1;
107
+ const hunkNewStart = newLineNum + 1;
108
+ let hunkOldLines = 0;
109
+ let hunkNewLines = 0;
110
+ for (let i = start; i <= end && i < editScript.length; i++) {
111
+ const item = editScript[i];
112
+ switch (item.type) {
113
+ case 'context':
114
+ oldLineNum++;
115
+ newLineNum++;
116
+ hunkLines.push({
117
+ type: 'context',
118
+ content: oldLines[item.oldIndex],
119
+ oldLineNumber: oldLineNum,
120
+ newLineNumber: newLineNum
121
+ });
122
+ hunkOldLines++;
123
+ hunkNewLines++;
124
+ break;
125
+ case 'removed':
126
+ oldLineNum++;
127
+ hunkLines.push({
128
+ type: 'removed',
129
+ content: oldLines[item.oldIndex],
130
+ oldLineNumber: oldLineNum
131
+ });
132
+ hunkOldLines++;
133
+ break;
134
+ case 'added':
135
+ newLineNum++;
136
+ hunkLines.push({
137
+ type: 'added',
138
+ content: newLines[item.newIndex],
139
+ newLineNumber: newLineNum
140
+ });
141
+ hunkNewLines++;
142
+ break;
143
+ }
144
+ }
145
+ hunks.push({
146
+ oldStart: hunkOldStart,
147
+ oldLines: hunkOldLines,
148
+ newStart: hunkNewStart,
149
+ newLines: hunkNewLines,
150
+ lines: hunkLines
151
+ });
152
+ }
153
+ return { hunks, hasChanges: true };
154
+ }
155
+ function formatDiffHeader(filePath) {
156
+ return `--- a/${filePath}\n+++ b/${filePath}`;
157
+ }
158
+ function formatDiffHunk(hunk) {
159
+ const header = `@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`;
160
+ const lines = hunk.lines.map(line => {
161
+ switch (line.type) {
162
+ case 'context':
163
+ return ` ${line.content}`;
164
+ case 'added':
165
+ return `+${line.content}`;
166
+ case 'removed':
167
+ return `-${line.content}`;
168
+ }
169
+ });
170
+ return [header, ...lines].join('\n');
171
+ }
172
+ function formatDiff(filePath, diff) {
173
+ if (!diff.hasChanges) {
174
+ return '';
175
+ }
176
+ const header = formatDiffHeader(filePath);
177
+ const hunks = diff.hunks.map(formatDiffHunk);
178
+ return [header, ...hunks].join('\n');
179
+ }
180
+ function computeAndFormatDiff(oldContent, newContent, filePath) {
181
+ const diff = computeUnifiedDiff(oldContent, newContent);
182
+ return formatDiff(filePath, diff);
183
+ }
184
+ function getChangeStats(diff) {
185
+ let added = 0;
186
+ let removed = 0;
187
+ for (const hunk of diff.hunks) {
188
+ for (const line of hunk.lines) {
189
+ if (line.type === 'added')
190
+ added++;
191
+ if (line.type === 'removed')
192
+ removed++;
193
+ }
194
+ }
195
+ return { added, removed };
196
+ }
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdUVBLGdEQXlIQztBQUVELDRDQUVDO0FBRUQsd0NBY0M7QUFFRCxnQ0FTQztBQUVELG9EQU9DO0FBRUQsd0NBWUM7QUFsT0QsU0FBUyxTQUFTLENBQUMsUUFBa0IsRUFBRSxRQUFrQjtJQUN2RCxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQzFCLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDMUIsTUFBTSxFQUFFLEdBQWUsRUFBRSxDQUFDO0lBRTFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM1QixFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNaLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDZixDQUFDO2lCQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNuQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdB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TGluZSB7XG4gIHR5cGU6ICdjb250ZXh0JyB8ICdhZGRlZCcgfCAncmVtb3ZlZCc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgb2xkTGluZU51bWJlcj86IG51bWJlcjtcbiAgbmV3TGluZU51bWJlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWZmSHVuayB7XG4gIG9sZFN0YXJ0OiBudW1iZXI7XG4gIG9sZExpbmVzOiBudW1iZXI7XG4gIG5ld1N0YXJ0OiBudW1iZXI7XG4gIG5ld0xpbmVzOiBudW1iZXI7XG4gIGxpbmVzOiBEaWZmTGluZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpZmZSZXN1bHQge1xuICBodW5rczogRGlmZkh1bmtbXTtcbiAgaGFzQ2hhbmdlczogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZGlmZkxpbmVzKG9sZExpbmVzOiBzdHJpbmdbXSwgbmV3TGluZXM6IHN0cmluZ1tdKTogbnVtYmVyW11bXSB7XG4gIGNvbnN0IG0gPSBvbGRMaW5lcy5sZW5ndGg7XG4gIGNvbnN0IG4gPSBuZXdMaW5lcy5sZW5ndGg7XG4gIGNvbnN0IGRwOiBudW1iZXJbXVtdID0gW107XG4gIFxuICBmb3IgKGxldCBpID0gMDsgaSA8PSBtOyBpKyspIHtcbiAgICBkcFtpXSA9IFtdO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDw9IG47IGorKykge1xuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgZHBbaV1bal0gPSBqO1xuICAgICAgfSBlbHNlIGlmIChqID09PSAwKSB7XG4gICAgICAgIGRwW2ldW2pdID0gaTtcbiAgICAgIH0gZWxzZSBpZiAob2xkTGluZXNbaSAtIDFdID09PSBuZXdMaW5lc1tqIC0gMV0pIHtcbiAgICAgICAgZHBbaV1bal0gPSBkcFtpIC0gMV1baiAtIDFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHBbaV1bal0gPSAxICsgTWF0aC5taW4oZHBbaSAtIDFdW2pdLCBkcFtpXVtqIC0gMV0sIGRwW2kgLSAxXVtqIC0gMV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGRwO1xufVxuXG5mdW5jdGlvbiBiYWNrdHJhY2tFZGl0U2NyaXB0KFxuICBkcDogbnVtYmVyW11bXSxcbiAgb2xkTGluZXM6IHN0cmluZ1tdLFxuICBuZXdMaW5lczogc3RyaW5nW10sXG4gIGk6IG51bWJlcixcbiAgajogbnVtYmVyXG4pOiBBcnJheTx7IHR5cGU6ICdjb250ZXh0JyB8ICdhZGRlZCcgfCAncmVtb3ZlZCc7IG9sZEluZGV4OiBudW1iZXI7IG5ld0luZGV4OiBudW1iZXIgfT4ge1xuICBjb25zdCBzY3JpcHQ6IEFycmF5PHsgdHlwZTogJ2NvbnRleHQnIHwgJ2FkZGVkJyB8ICdyZW1vdmVkJzsgb2xkSW5kZXg6IG51bWJlcjsgbmV3SW5kZXg6IG51bWJlciB9PiA9IFtdO1xuICBcbiAgd2hpbGUgKGkgPiAwIHx8IGogPiAwKSB7XG4gICAgaWYgKGkgPiAwICYmIGogPiAwICYmIG9sZExpbmVzW2kgLSAxXSA9PT0gbmV3TGluZXNbaiAtIDFdKSB7XG4gICAgICBzY3JpcHQudW5zaGlmdCh7IHR5cGU6ICdjb250ZXh0Jywgb2xkSW5kZXg6IGkgLSAxLCBuZXdJbmRleDogaiAtIDEgfSk7XG4gICAgICBpLS07XG4gICAgICBqLS07XG4gICAgfSBlbHNlIGlmIChqID4gMCAmJiAoaSA9PT0gMCB8fCBkcFtpXVtqIC0gMV0gPD0gZHBbaSAtIDFdW2pdKSkge1xuICAgICAgc2NyaXB0LnVuc2hpZnQoeyB0eXBlOiAnYWRkZWQnLCBvbGRJbmRleDogLTEsIG5ld0luZGV4OiBqIC0gMSB9KTtcbiAgICAgIGotLTtcbiAgICB9IGVsc2UgaWYgKGkgPiAwKSB7XG4gICAgICBzY3JpcHQudW5zaGlmdCh7IHR5cGU6ICdyZW1vdmVkJywgb2xkSW5kZXg6IGkgLSAxLCBuZXdJbmRleDogLTEgfSk7XG4gICAgICBpLS07XG4gICAgfVxuICB9XG4gIFxuICByZXR1cm4gc2NyaXB0O1xufVxuXG5jb25zdCBERUZBVUxUX0NPTlRFWFRfTElORVMgPSAzO1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVVuaWZpZWREaWZmKFxuICBvbGRDb250ZW50OiBzdHJpbmcsXG4gIG5ld0NvbnRlbnQ6IHN0cmluZyxcbiAgY29udGV4dExpbmVzOiBudW1iZXIgPSBERUZBVUxUX0NPTlRFWFRfTElORVNcbik6IERpZmZSZXN1bHQge1xuICBjb25zdCBvbGRMaW5lcyA9IG9sZENvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBuZXdMaW5lcyA9IG5ld0NvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBcbiAgaWYgKG9sZExpbmVzLmxlbmd0aCA9PT0gMCAmJiBuZXdMaW5lcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBodW5rczogW10sIGhhc0NoYW5nZXM6IGZhbHNlIH07XG4gIH1cbiAgXG4gIGlmIChvbGRDb250ZW50ID09PSBuZXdDb250ZW50KSB7XG4gICAgcmV0dXJuIHsgaHVua3M6IFtdLCBoYXNDaGFuZ2VzOiBmYWxzZSB9O1xuICB9XG4gIFxuICBjb25zdCBkcCA9IGRpZmZMaW5lcyhvbGRMaW5lcywgbmV3TGluZXMpO1xuICBjb25zdCBlZGl0U2NyaXB0ID0gYmFja3RyYWNrRWRpdFNjcmlwdChkcCwgb2xkTGluZXMsIG5ld0xpbmVzLCBvbGRMaW5lcy5sZW5ndGgsIG5ld0xpbmVzLmxlbmd0aCk7XG4gIFxuICBjb25zdCBjaGFuZ2VJbmRpY2VzOiBudW1iZXJbXSA9IFtdO1xuICBlZGl0U2NyaXB0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGl0ZW0udHlwZSAhPT0gJ2NvbnRleHQnKSB7XG4gICAgICBjaGFuZ2VJbmRpY2VzLnB1c2goaW5kZXgpO1xuICAgIH1cbiAgfSk7XG4gIFxuICBpZiAoY2hhbmdlSW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4geyBodW5rczogW10sIGhhc0NoYW5nZXM6IGZhbHNlIH07XG4gIH1cbiAgXG4gIGNvbnN0IGh1bmtzOiBEaWZmSHVua1tdID0gW107XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgXG4gIGZvciAoY29uc3QgY2hhbmdlSW5kZXggb2YgY2hhbmdlSW5kaWNlcykge1xuICAgIGlmICh2aXNpdGVkLmhhcyhjaGFuZ2VJbmRleCkpIGNvbnRpbnVlO1xuICAgIFxuICAgIGxldCBzdGFydCA9IE1hdGgubWF4KDAsIGNoYW5nZUluZGV4IC0gY29udGV4dExpbmVzKTtcbiAgICBsZXQgZW5kID0gTWF0aC5taW4oZWRpdFNjcmlwdC5sZW5ndGggLSAxLCBjaGFuZ2VJbmRleCArIGNvbnRleHRMaW5lcyk7XG4gICAgXG4gICAgZm9yIChsZXQgaSA9IGNoYW5nZUluZGV4ICsgY29udGV4dExpbmVzICsgMTsgaSA8IGVkaXRTY3JpcHQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChlZGl0U2NyaXB0W2ldLnR5cGUgIT09ICdjb250ZXh0Jykge1xuICAgICAgICBjb25zdCBnYXBTdGFydCA9IGVuZCArIDE7XG4gICAgICAgIGNvbnN0IGdhcEVuZCA9IGkgLSBjb250ZXh0TGluZXM7XG4gICAgICAgIGlmIChnYXBFbmQgPD0gZ2FwU3RhcnQpIHtcbiAgICAgICAgICBlbmQgPSBpICsgY29udGV4dExpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgdmlzaXRlZC5hZGQoaSk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGh1bmtMaW5lczogRGlmZkxpbmVbXSA9IFtdO1xuICAgIGxldCBvbGRMaW5lTnVtID0gMDtcbiAgICBsZXQgbmV3TGluZU51bSA9IDA7XG4gICAgXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGFydDsgaSsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gZWRpdFNjcmlwdFtpXTtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdjb250ZXh0JyB8fCBpdGVtLnR5cGUgPT09ICdyZW1vdmVkJykge1xuICAgICAgICBvbGRMaW5lTnVtKys7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnY29udGV4dCcgfHwgaXRlbS50eXBlID09PSAnYWRkZWQnKSB7XG4gICAgICAgIG5ld0xpbmVOdW0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgY29uc3QgaHVua09sZFN0YXJ0ID0gb2xkTGluZU51bSArIDE7XG4gICAgY29uc3QgaHVua05ld1N0YXJ0ID0gbmV3TGluZU51bSArIDE7XG4gICAgbGV0IGh1bmtPbGRMaW5lcyA9IDA7XG4gICAgbGV0IGh1bmtOZXdMaW5lcyA9IDA7XG4gICAgXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZCAmJiBpIDwgZWRpdFNjcmlwdC5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgaXRlbSA9IGVkaXRTY3JpcHRbaV07XG4gICAgICBcbiAgICAgIHN3aXRjaCAoaXRlbS50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2NvbnRleHQnOlxuICAgICAgICAgIG9sZExpbmVOdW0rKztcbiAgICAgICAgICBuZXdMaW5lTnVtKys7XG4gICAgICAgICAgaHVua0xpbmVzLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogJ2NvbnRleHQnLFxuICAgICAgICAgICAgY29udGVudDogb2xkTGluZXNbaXRlbS5vbGRJbmRleCFdLFxuICAgICAgICAgICAgb2xkTGluZU51bWJlcjogb2xkTGluZU51bSxcbiAgICAgICAgICAgIG5ld0xpbmVOdW1iZXI6IG5ld0xpbmVOdW1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBodW5rT2xkTGluZXMrKztcbiAgICAgICAgICBodW5rTmV3TGluZXMrKztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVtb3ZlZCc6XG4gICAgICAgICAgb2xkTGluZU51bSsrO1xuICAgICAgICAgIGh1bmtMaW5lcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdyZW1vdmVkJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG9sZExpbmVzW2l0ZW0ub2xkSW5kZXghXSxcbiAgICAgICAgICAgIG9sZExpbmVOdW1iZXI6IG9sZExpbmVOdW1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBodW5rT2xkTGluZXMrKztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYWRkZWQnOlxuICAgICAgICAgIG5ld0xpbmVOdW0rKztcbiAgICAgICAgICBodW5rTGluZXMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAnYWRkZWQnLFxuICAgICAgICAgICAgY29udGVudDogbmV3TGluZXNbaXRlbS5uZXdJbmRleCFdLFxuICAgICAgICAgICAgbmV3TGluZU51bWJlcjogbmV3TGluZU51bVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGh1bmtOZXdMaW5lcysrO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBodW5rcy5wdXNoKHtcbiAgICAgIG9sZFN0YXJ0OiBodW5rT2xkU3RhcnQsXG4gICAgICBvbGRMaW5lczogaHVua09sZExpbmVzLFxuICAgICAgbmV3U3RhcnQ6IGh1bmtOZXdTdGFydCxcbiAgICAgIG5ld0xpbmVzOiBodW5rTmV3TGluZXMsXG4gICAgICBsaW5lczogaHVua0xpbmVzXG4gICAgfSk7XG4gIH1cbiAgXG4gIHJldHVybiB7IGh1bmtzLCBoYXNDaGFuZ2VzOiB0cnVlIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWZmSGVhZGVyKGZpbGVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYC0tLSBhLyR7ZmlsZVBhdGh9XFxuKysrIGIvJHtmaWxlUGF0aH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlmZkh1bmsoaHVuazogRGlmZkh1bmspOiBzdHJpbmcge1xuICBjb25zdCBoZWFkZXIgPSBgQEAgLSR7aHVuay5vbGRTdGFydH0sJHtodW5rLm9sZExpbmVzfSArJHtodW5rLm5ld1N0YXJ0fSwke2h1bmsubmV3TGluZXN9IEBAYDtcbiAgY29uc3QgbGluZXMgPSBodW5rLmxpbmVzLm1hcChsaW5lID0+IHtcbiAgICBzd2l0Y2ggKGxpbmUudHlwZSkge1xuICAgICAgY2FzZSAnY29udGV4dCc6XG4gICAgICAgIHJldHVybiBgICR7bGluZS5jb250ZW50fWA7XG4gICAgICBjYXNlICdhZGRlZCc6XG4gICAgICAgIHJldHVybiBgKyR7bGluZS5jb250ZW50fWA7XG4gICAgICBjYXNlICdyZW1vdmVkJzpcbiAgICAgICAgcmV0dXJuIGAtJHtsaW5lLmNvbnRlbnR9YDtcbiAgICB9XG4gIH0pO1xuICBcbiAgcmV0dXJuIFtoZWFkZXIsIC4uLmxpbmVzXS5qb2luKCdcXG4nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpZmYoZmlsZVBhdGg6IHN0cmluZywgZGlmZjogRGlmZlJlc3VsdCk6IHN0cmluZyB7XG4gIGlmICghZGlmZi5oYXNDaGFuZ2VzKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIFxuICBjb25zdCBoZWFkZXIgPSBmb3JtYXREaWZmSGVhZGVyKGZpbGVQYXRoKTtcbiAgY29uc3QgaHVua3MgPSBkaWZmLmh1bmtzLm1hcChmb3JtYXREaWZmSHVuayk7XG4gIFxuICByZXR1cm4gW2hlYWRlciwgLi4uaHVua3NdLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUFuZEZvcm1hdERpZmYoXG4gIG9sZENvbnRlbnQ6IHN0cmluZyxcbiAgbmV3Q29udGVudDogc3RyaW5nLFxuICBmaWxlUGF0aDogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBkaWZmID0gY29tcHV0ZVVuaWZpZWREaWZmKG9sZENvbnRlbnQsIG5ld0NvbnRlbnQpO1xuICByZXR1cm4gZm9ybWF0RGlmZihmaWxlUGF0aCwgZGlmZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFuZ2VTdGF0cyhkaWZmOiBEaWZmUmVzdWx0KTogeyBhZGRlZDogbnVtYmVyOyByZW1vdmVkOiBudW1iZXIgfSB7XG4gIGxldCBhZGRlZCA9IDA7XG4gIGxldCByZW1vdmVkID0gMDtcbiAgXG4gIGZvciAoY29uc3QgaHVuayBvZiBkaWZmLmh1bmtzKSB7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGh1bmsubGluZXMpIHtcbiAgICAgIGlmIChsaW5lLnR5cGUgPT09ICdhZGRlZCcpIGFkZGVkKys7XG4gICAgICBpZiAobGluZS50eXBlID09PSAncmVtb3ZlZCcpIHJlbW92ZWQrKztcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiB7IGFkZGVkLCByZW1vdmVkIH07XG59XG4iXX0=
@@ -1,6 +1,8 @@
1
1
  declare class Logger {
2
2
  private isVerbose;
3
+ private isSilent;
3
4
  setVerbose(verbose: boolean): void;
5
+ setSilent(silent: boolean): void;
4
6
  info(message: string, ...args: any[]): void;
5
7
  success(message: string, ...args: any[]): void;
6
8
  warn(message: string, ...args: any[]): void;
@@ -8,20 +8,32 @@ const chalk_1 = __importDefault(require("chalk"));
8
8
  class Logger {
9
9
  constructor() {
10
10
  this.isVerbose = false;
11
+ this.isSilent = false;
11
12
  }
12
13
  setVerbose(verbose) {
13
14
  this.isVerbose = verbose;
14
15
  }
16
+ setSilent(silent) {
17
+ this.isSilent = silent;
18
+ }
15
19
  info(message, ...args) {
20
+ if (this.isSilent)
21
+ return;
16
22
  console.log(chalk_1.default.blue(message), ...args);
17
23
  }
18
24
  success(message, ...args) {
25
+ if (this.isSilent)
26
+ return;
19
27
  console.log(chalk_1.default.green(message), ...args);
20
28
  }
21
29
  warn(message, ...args) {
30
+ if (this.isSilent)
31
+ return;
22
32
  console.log(chalk_1.default.yellow(`⚠️ ${message}`), ...args);
23
33
  }
24
34
  error(message, error) {
35
+ if (this.isSilent)
36
+ return;
25
37
  console.error(chalk_1.default.red(`❌ ${message}`));
26
38
  if (error && this.isVerbose) {
27
39
  if (error instanceof Error) {
@@ -33,16 +45,18 @@ class Logger {
33
45
  }
34
46
  }
35
47
  verbose(message, ...args) {
36
- if (this.isVerbose) {
37
- console.log(chalk_1.default.gray(`[verbose] ${message}`), ...args);
38
- }
48
+ if (this.isSilent || !this.isVerbose)
49
+ return;
50
+ console.log(chalk_1.default.gray(`[verbose] ${message}`), ...args);
39
51
  }
40
52
  debug(message, ...args) {
41
- if (this.isVerbose) {
42
- console.log(chalk_1.default.cyan(`[debug] ${message}`), ...args);
43
- }
53
+ if (this.isSilent || !this.isVerbose)
54
+ return;
55
+ console.log(chalk_1.default.cyan(`[debug] ${message}`), ...args);
44
56
  }
45
57
  file(message, filePath) {
58
+ if (this.isSilent)
59
+ return;
46
60
  console.log(chalk_1.default.magenta(`${message}:`), chalk_1.default.white(filePath));
47
61
  }
48
62
  diff(original, converted) {
@@ -53,4 +67,4 @@ class Logger {
53
67
  }
54
68
  }
55
69
  exports.logger = new Logger();
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFMUIsTUFBTSxNQUFNO0lBQVo7UUFDVSxjQUFTLEdBQVksS0FBSyxDQUFDO0lBbURyQyxDQUFDO0lBakRDLFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ3JDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNsQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBVztRQUNoQyxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDckMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbkMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxRQUFnQjtRQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLGVBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsU0FBaUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRVksUUFBQSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgaXNWZXJib3NlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2V0VmVyYm9zZSh2ZXJib3NlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1ZlcmJvc2UgPSB2ZXJib3NlO1xuICB9XG5cbiAgaW5mbyhtZXNzYWdlOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coY2hhbGsuYmx1ZShtZXNzYWdlKSwgLi4uYXJncyk7XG4gIH1cblxuICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihtZXNzYWdlKSwgLi4uYXJncyk7XG4gIH1cblxuICB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYOKaoO+4jyAgJHttZXNzYWdlfWApLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I/OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChg4p2MICR7bWVzc2FnZX1gKSk7XG4gICAgaWYgKGVycm9yICYmIHRoaXMuaXNWZXJib3NlKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5zdGFjayB8fCBlcnJvci5tZXNzYWdlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZlcmJvc2UobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JheShgW3ZlcmJvc2VdICR7bWVzc2FnZX1gKSwgLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgZGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihgW2RlYnVnXSAke21lc3NhZ2V9YCksIC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIGZpbGUobWVzc2FnZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coY2hhbGsubWFnZW50YShgJHttZXNzYWdlfTpgKSwgY2hhbGsud2hpdGUoZmlsZVBhdGgpKTtcbiAgfVxuXG4gIGRpZmYob3JpZ2luYWw6IHN0cmluZywgY29udmVydGVkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1ZlcmJvc2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZCgnICAtJyksIG9yaWdpbmFsKTtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKCcgICsnKSwgY29udmVydGVkKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoKTtcbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxrREFBMEI7QUFFMUIsTUFBTSxNQUFNO0lBQVo7UUFDVSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLGFBQVEsR0FBWSxLQUFLLENBQUM7SUEwRHBDLENBQUM7SUF4REMsVUFBVSxDQUFDLE9BQWdCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBZTtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBRyxJQUFXO1FBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBVztRQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFlLEVBQUUsS0FBVztRQUNoQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzVCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO2dCQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxhQUFhLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxHQUFHLElBQVc7UUFDbkMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLElBQUksQ0FBQyxXQUFXLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxRQUFnQjtRQUNwQyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLGVBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCLEVBQUUsU0FBaUI7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRVksUUFBQSxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmNsYXNzIExvZ2dlciB7XG4gIHByaXZhdGUgaXNWZXJib3NlOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgaXNTaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBzZXRWZXJib3NlKHZlcmJvc2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzVmVyYm9zZSA9IHZlcmJvc2U7XG4gIH1cblxuICBzZXRTaWxlbnQoc2lsZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1NpbGVudCA9IHNpbGVudDtcbiAgfVxuXG4gIGluZm8obWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2lsZW50KSByZXR1cm47XG4gICAgY29uc29sZS5sb2coY2hhbGsuYmx1ZShtZXNzYWdlKSwgLi4uYXJncyk7XG4gIH1cblxuICBzdWNjZXNzKG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1NpbGVudCkgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKG1lc3NhZ2UpLCAuLi5hcmdzKTtcbiAgfVxuXG4gIHdhcm4obWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2lsZW50KSByZXR1cm47XG4gICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KGDimqDvuI8gICR7bWVzc2FnZX1gKSwgLi4uYXJncyk7XG4gIH1cblxuICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIGVycm9yPzogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTaWxlbnQpIHJldHVybjtcbiAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChg4p2MICR7bWVzc2FnZX1gKSk7XG4gICAgaWYgKGVycm9yICYmIHRoaXMuaXNWZXJib3NlKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvci5zdGFjayB8fCBlcnJvci5tZXNzYWdlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnJvcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZlcmJvc2UobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2lsZW50IHx8ICF0aGlzLmlzVmVyYm9zZSkgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyYXkoYFt2ZXJib3NlXSAke21lc3NhZ2V9YCksIC4uLmFyZ3MpO1xuICB9XG5cbiAgZGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU2lsZW50IHx8ICF0aGlzLmlzVmVyYm9zZSkgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oYFtkZWJ1Z10gJHttZXNzYWdlfWApLCAuLi5hcmdzKTtcbiAgfVxuXG4gIGZpbGUobWVzc2FnZTogc3RyaW5nLCBmaWxlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTaWxlbnQpIHJldHVybjtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5tYWdlbnRhKGAke21lc3NhZ2V9OmApLCBjaGFsay53aGl0ZShmaWxlUGF0aCkpO1xuICB9XG5cbiAgZGlmZihvcmlnaW5hbDogc3RyaW5nLCBjb252ZXJ0ZWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzVmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsucmVkKCcgIC0nKSwgb3JpZ2luYWwpO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oJyAgKycpLCBjb252ZXJ0ZWQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcigpO1xuIl19
@@ -76,7 +76,14 @@ const PROPERTY_PREFIX_MAP = {
76
76
  'flex-grow': ['grow-', 'grow'],
77
77
  'flex-shrink': ['shrink-', 'shrink'],
78
78
  'flex-basis': ['basis-'],
79
- 'word-break': ['break-normal', 'break-all', 'break-words', 'break-keep']
79
+ 'word-break': ['break-normal', 'break-all', 'break-words', 'break-keep'],
80
+ 'grid-template-columns': ['grid-cols-'],
81
+ 'grid-template-rows': ['grid-rows-'],
82
+ 'grid-column': ['col-span-', 'col-start-', 'col-end-', 'col-'],
83
+ 'grid-row': ['row-span-', 'row-start-', 'row-end-', 'row-'],
84
+ 'place-items': ['place-items-'],
85
+ 'place-content': ['place-content-'],
86
+ 'place-self': ['place-self-']
80
87
  };
81
88
  const UTILITY_TO_PROPERTY_MAP = {
82
89
  'block': 'display',
@@ -220,7 +227,20 @@ const PREFIX_PROPERTY_MAP = {
220
227
  'object-': 'object-position',
221
228
  'basis-': 'flex-basis',
222
229
  'grow-': 'flex-grow',
223
- 'shrink-': 'flex-shrink'
230
+ 'shrink-': 'flex-shrink',
231
+ 'grid-cols-': 'grid-template-columns',
232
+ 'grid-rows-': 'grid-template-rows',
233
+ 'col-span-': 'grid-column',
234
+ 'col-start-': 'grid-column',
235
+ 'col-end-': 'grid-column',
236
+ 'col-': 'grid-column',
237
+ 'row-span-': 'grid-row',
238
+ 'row-start-': 'grid-row',
239
+ 'row-end-': 'grid-row',
240
+ 'row-': 'grid-row',
241
+ 'place-items-': 'place-items',
242
+ 'place-content-': 'place-content',
243
+ 'place-self-': 'place-self'
224
244
  };
225
245
  const FONT_SIZE_UTILITIES = new Set([
226
246
  'text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl',
@@ -263,6 +283,20 @@ function getPropertyForUtility(utility) {
263
283
  if (strippedUtility.startsWith('tracking-') && !LETTER_SPACING_UTILITIES.has(strippedUtility)) {
264
284
  return 'letter-spacing';
265
285
  }
286
+ if (/^border-[trbl]-\[/.test(strippedUtility)) {
287
+ const value = strippedUtility.match(/^border-[trbl]-\[(.+)\]$/)?.[1] || '';
288
+ if (value.startsWith('#') || value.startsWith('rgb') || value.startsWith('hsl') ||
289
+ value.startsWith('var(') || /^[a-z]/i.test(value)) {
290
+ return 'border-color';
291
+ }
292
+ }
293
+ if (strippedUtility.startsWith('border-') && strippedUtility.includes('[')) {
294
+ const value = strippedUtility.match(/^border-\[(.+)\]$/)?.[1] || '';
295
+ if (value.startsWith('#') || value.startsWith('rgb') || value.startsWith('hsl') ||
296
+ value.startsWith('var(') || /^[a-z]/i.test(value)) {
297
+ return 'border-color';
298
+ }
299
+ }
266
300
  const sortedPrefixes = Object.keys(PREFIX_PROPERTY_MAP).sort((a, b) => b.length - a.length);
267
301
  for (const prefix of sortedPrefixes) {
268
302
  if (strippedUtility.startsWith(prefix)) {
@@ -347,7 +381,14 @@ exports.PROPERTY_CONFLICT_GROUPS = {
347
381
  'aspect-ratio': ['aspect-ratio'],
348
382
  'object-fit': ['object-fit'],
349
383
  'object-position': ['object-position'],
350
- 'word-break': ['word-break']
384
+ 'word-break': ['word-break'],
385
+ 'grid-template-columns': ['grid-template-columns'],
386
+ 'grid-template-rows': ['grid-template-rows'],
387
+ 'grid-column': ['grid-column', 'grid-column-start', 'grid-column-end'],
388
+ 'grid-row': ['grid-row', 'grid-row-start', 'grid-row-end'],
389
+ 'place-items': ['place-items'],
390
+ 'place-content': ['place-content'],
391
+ 'place-self': ['place-self']
351
392
  };
352
393
  function getConflictGroup(property) {
353
394
  for (const [groupName, properties] of Object.entries(exports.PROPERTY_CONFLICT_GROUPS)) {
@@ -402,4 +443,4 @@ function propertiesConflict(prop1, prop2) {
402
443
  }
403
444
  return prop1 === prop2;
404
445
  }
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeU9BLHNEQTRDQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsa0RBR0M7QUFFRCx3REFHQztBQUVELDhEQWNDO0FBd0NELDRDQU9DO0FBRUQsZ0RBdURDO0FBcmJELE1BQU0sbUJBQW1CLEdBQTZCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMzQixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDckIsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztJQUMvSyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUM7SUFDekosU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ25LLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7SUFDakUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2YsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFD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bnRlbnQiOlsiY29uc3QgUFJPUEVSVFlfUFJFRklYX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAnY29sb3InOiBbJ3RleHQtJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiZy0nXSxcbiAgJ2JhY2tncm91bmQnOiBbJ2JnLSddLFxuICAnZm9udC1zaXplJzogWyd0ZXh0LXhzJywgJ3RleHQtc20nLCAndGV4dC1iYXNlJywgJ3RleHQtbGcnLCAndGV4dC14bCcsICd0ZXh0LTJ4bCcsICd0ZXh0LTN4bCcsICd0ZXh0LTR4bCcsICd0ZXh0LTV4bCcsICd0ZXh0LTZ4bCcsICd0ZXh0LTd4bCcsICd0ZXh0LTh4bCcsICd0ZXh0LTl4bCcsICd0ZXh0LSddLFxuICAnZm9udC13ZWlnaHQnOiBbJ2ZvbnQtdGhpbicsICdmb250LWV4dHJhbGlnaHQnLCAnZm9udC1saWdodCcsICdmb250LW5vcm1hbCcsICdmb250LW1lZGl1bScsICdmb250LXNlbWlib2xkJywgJ2ZvbnQtYm9sZCcsICdmb250LWV4dHJhYm9sZCcsICdmb250LWJsYWNrJ10sXG4gICdkaXNwbGF5JzogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdoaWRkZW4nLCAnY29udGVudHMnLCAndGFibGUnLCAndGFibGUtY2VsbCcsICd0YWJsZS1yb3cnLCAnZmxvdy1yb290J10sXG4gICdwb3NpdGlvbic6IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAnd2lkdGgnOiBbJ3ctJ10sXG4gICdoZWlnaHQnOiBbJ2gtJ10sXG4gICdtaW4td2lkdGgnOiBbJ21pbi13LSddLFxuICAnbWF4LXdpZHRoJzogWydtYXgtdy0nXSxcbiAgJ21pbi1oZWlnaHQnOiBbJ21pbi1oLSddLFxuICAnbWF4LWhlaWdodCc6IFsnbWF4LWgtJ10sXG4gICdtYXJnaW4nOiBbJ20tJ10sXG4gICdtYXJnaW4tdG9wJzogWydtdC0nXSxcbiAgJ21hcmdpbi1yaWdodCc6IFsnbXItJ10sXG4gICdtYXJnaW4tYm90dG9tJzogWydtYi0nXSxcbiAgJ21hcmdpbi1sZWZ0JzogWydtbC0nXSxcbiAgJ21hcmdpbi14JzogWydteC0nXSxcbiAgJ21hcmdpbi15JzogWydteS0nXSxcbiAgJ3BhZGRpbmcnOiBbJ3AtJ10sXG4gICdwYWRkaW5nLXRvcCc6IFsncHQtJ10sXG4gICdwYWRkaW5nLXJpZ2h0JzogWydwci0nXSxcbiAgJ3BhZGRpbmctYm90dG9tJzogWydwYi0nXSxcbiAgJ3BhZGRpbmctbGVmdCc6IFsncGwtJ10sXG4gICdwYWRkaW5nLXgnOiBbJ3B4LSddLFxuICAncGFkZGluZy15JzogWydweS0nXSxcbiAgJ2dhcCc6IFsnZ2FwLSddLFxuICAnYm9yZGVyLXJhZGl1cyc6IFsncm91bmRlZC0nLCAncm91bmRlZCddLFxuICAnYm9yZGVyLXdpZHRoJzogWydib3JkZXItJywgJ2JvcmRlci10LScsICdib3JkZXItci0nLCAnYm9yZGVyLWItJywgJ2JvcmRlci1sLSddLFxuICAnYm9yZGVyLWNvbG9yJzogWydib3JkZXItJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zb2xpZCcsICdib3JkZXItZGFzaGVkJywgJ2JvcmRlci1kb3R0ZWQnLCAnYm9yZGVyLWRvdWJsZScsICdib3JkZXItaGlkZGVuJywgJ2JvcmRlci1ub25lJ10sXG4gICdmbGV4LWRpcmVjdGlvbic6IFsnZmxleC1yb3cnLCAnZmxleC1jb2wnLCAnZmxleC1yb3ctcmV2ZXJzZScsICdmbGV4LWNvbC1yZXZlcnNlJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCcsICdmbGV4LW5vd3JhcCcsICdmbGV4LXdyYXAtcmV2ZXJzZSddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LSddLFxuICAnYWxpZ24taXRlbXMnOiBbJ2l0ZW1zLSddLFxuICAnYWxpZ24tY29udGVudCc6IFsnY29udGVudC0nXSxcbiAgJ2FsaWduLXNlbGYnOiBbJ3NlbGYtJ10sXG4gICd0ZXh0LWFsaWduJzogWyd0ZXh0LWxlZnQnLCAndGV4dC1jZW50ZXInLCAndGV4dC1yaWdodCcsICd0ZXh0LWp1c3RpZnknLCAndGV4dC1zdGFydCcsICd0ZXh0LWVuZCddLFxuICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAnbGV0dGVyLXNwYWNpbmcnOiBbJ3RyYWNraW5nLSddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xlYWRpbmctJ10sXG4gICdvdmVyZmxvdyc6IFsnb3ZlcmZsb3ctJ10sXG4gICdvdmVyZmxvdy14JzogWydvdmVyZmxvdy14LSddLFxuICAnb3ZlcmZsb3cteSc6IFsnb3ZlcmZsb3cteS0nXSxcbiAgJ3otaW5kZXgnOiBbJ3otJ10sXG4gICdvcGFjaXR5JzogWydvcGFjaXR5LSddLFxuICAnY3Vyc29yJzogWydjdXJzb3ItJ10sXG4gICdwb2ludGVyLWV2ZW50cyc6IFsncG9pbnRlci1ldmVudHMtJ10sXG4gICd1c2VyLXNlbGVjdCc6IFsnc2VsZWN0LSddLFxuICAnYm94LXNoYWRvdyc6IFsnc2hhZG93LSddLFxuICAndHJhbnNpdGlvbic6IFsndHJhbnNpdGlvbi0nXSxcbiAgJ3RyYW5zZm9ybSc6IFsnc2NhbGUtJywgJ3JvdGF0ZS0nLCAndHJhbnNsYXRlLScsICdza2V3LSddLFxuICAndG9wJzogWyd0b3AtJ10sXG4gICdyaWdodCc6IFsncmlnaHQtJ10sXG4gICdib3R0b20nOiBbJ2JvdHRvbS0nXSxcbiAgJ2xlZnQnOiBbJ2xlZnQtJ10sXG4gICdpbnNldCc6IFsnaW5zZXQtJ10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC0nXSxcbiAgJ29iamVjdC1maXQnOiBbJ29iamVjdC1jb250YWluJywgJ29iamVjdC1jb3ZlcicsICdvYmplY3QtZmlsbCcsICdvYmplY3Qtbm9uZScsICdvYmplY3Qtc2NhbGUtZG93biddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtJ10sXG4gICdmbGV4JzogWydmbGV4LTEnLCAnZmxleC1hdXRvJywgJ2ZsZXgtaW5pdGlhbCcsICdmbGV4LW5vbmUnXSxcbiAgJ2ZsZXgtZ3Jvdyc6IFsnZ3Jvdy0nLCAnZ3JvdyddLFxuICAnZmxleC1zaHJpbmsnOiBbJ3Nocmluay0nLCAnc2hyaW5rJ10sXG4gICdmbGV4LWJhc2lzJzogWydiYXNpcy0nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ2JyZWFrLW5vcm1hbCcsICdicmVhay1hbGwnLCAnYnJlYWstd29yZHMnLCAnYnJlYWsta2VlcCddXG59O1xuXG5jb25zdCBVVElMSVRZX1RPX1BST1BFUlRZX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ2Jsb2NrJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWJsb2NrJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lJzogJ2Rpc3BsYXknLFxuICAnZmxleCc6ICdkaXNwbGF5JyxcbiAgJ2lubGluZS1mbGV4JzogJ2Rpc3BsYXknLFxuICAnZ3JpZCc6ICdkaXNwbGF5JyxcbiAgJ2lubGluZS1ncmlkJzogJ2Rpc3BsYXknLFxuICAnaGlkZGVuJzogJ2Rpc3BsYXknLFxuICAnY29udGVudHMnOiAnZGlzcGxheScsXG4gICdmbG93LXJvb3QnOiAnZGlzcGxheScsXG4gICdzdGF0aWMnOiAncG9zaXRpb24nLFxuICAnZml4ZWQnOiAncG9zaXRpb24nLFxuICAnYWJzb2x1dGUnOiAncG9zaXRpb24nLFxuICAncmVsYXRpdmUnOiAncG9zaXRpb24nLFxuICAnc3RpY2t5JzogJ3Bvc2l0aW9uJyxcbiAgJ2ZsZXgtcm93JzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtY29sJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtcm93LXJldmVyc2UnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wtcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LXdyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtbm93cmFwJzogJ2ZsZXgtd3JhcCcsXG4gICdmbGV4LXdyYXAtcmV2ZXJzZSc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC0xJzogJ2ZsZXgnLFxuICAnZmxleC1hdXRvJzogJ2ZsZXgnLFxuICAnZmxleC1pbml0aWFsJzogJ2ZsZXgnLFxuICAnZmxleC1ub25lJzogJ2ZsZXgnLFxuICAnZ3Jvdyc6ICdmbGV4LWdyb3cnLFxuICAnZ3Jvdy0wJzogJ2ZsZXgtZ3JvdycsXG4gICdzaHJpbmsnOiAnZmxleC1zaHJpbmsnLFxuICAnc2hyaW5rLTAnOiAnZmxleC1zaHJpbmsnLFxuICAndGV4dC1sZWZ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1jZW50ZXInOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXJpZ2h0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1qdXN0aWZ5JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1zdGFydCc6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtZW5kJzogJ3RleHQtYWxpZ24nLFxuICAnZm9udC10aGluJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtZXh0cmFsaWdodCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbm9ybWFsJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbWVkaXVtJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtc2VtaWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ib2xkJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtZXh0cmFib2xkJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtYmxhY2snOiAnZm9udC13ZWlnaHQnLFxuICAncm91bmRlZCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbm9uZSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtc20nOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLW1kJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1sZyc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQteGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLTJ4bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtM3hsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1mdWxsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAndW5kZXJsaW5lJzogJ3RleHQtZGVjb3JhdGlvbicsXG4gICdsaW5lLXRocm91Z2gnOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ25vLXVuZGVybGluZSc6ICd0ZXh0LWRlY29yYXRpb24nLFxuICAndXBwZXJjYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2xvd2VyY2FzZSc6ICd0ZXh0LXRyYW5zZm9ybScsXG4gICdjYXBpdGFsaXplJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ25vcm1hbC1jYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2JvcmRlci1zb2xpZCc6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLWRhc2hlZCc6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLWRvdHRlZCc6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLWRvdWJsZSc6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLWhpZGRlbic6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLW5vbmUnOiAnYm9yZGVyLXN0eWxlJyxcbiAgJ29iamVjdC1jb250YWluJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LWNvdmVyJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LWZpbGwnOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3Qtbm9uZSc6ICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1zY2FsZS1kb3duJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LWNlbnRlcic6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXRvcCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LWxlZnQnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LWxlZnQtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtcmlnaHQtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdC1ib3R0b20nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodC1ib3R0b20nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ2JyZWFrLW5vcm1hbCc6ICd3b3JkLWJyZWFrJyxcbiAgJ2JyZWFrLWFsbCc6ICd3b3JkLWJyZWFrJyxcbiAgJ2JyZWFrLXdvcmRzJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWsta2VlcCc6ICd3b3JkLWJyZWFrJyxcbiAgJ2FzcGVjdC1zcXVhcmUnOiAnYXNwZWN0LXJhdGlvJyxcbiAgJ2FzcGVjdC12aWRlbyc6ICdhc3BlY3QtcmF0aW8nLFxuICAnYXNwZWN0LWF1dG8nOiAnYXNwZWN0LXJhdGlvJ1xufTtcblxuY29uc3QgUFJFRklYX1BST1BFUlRZX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ3RleHQtJzogJ2NvbG9yJyxcbiAgJ2JnLSc6ICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgJ3ctJzogJ3dpZHRoJyxcbiAgJ2gtJzogJ2hlaWdodCcsXG4gICdtaW4tdy0nOiAnbWluLXdpZHRoJyxcbiAgJ21heC13LSc6ICdtYXgtd2lkdGgnLFxuICAnbWluLWgtJzogJ21pbi1oZWlnaHQnLFxuICAnbWF4LWgtJzogJ21heC1oZWlnaHQnLFxuICAnbS0nOiAnbWFyZ2luJyxcbiAgJ210LSc6ICdtYXJnaW4tdG9wJyxcbiAgJ21yLSc6ICdtYXJnaW4tcmlnaHQnLFxuICAnbWItJzogJ21hcmdpbi1ib3R0b20nLFxuICAnbWwtJzogJ21hcmdpbi1sZWZ0JyxcbiAgJ214LSc6ICdtYXJnaW4teCcsXG4gICdteS0nOiAnbWFyZ2luLXknLFxuICAncC0nOiAncGFkZGluZycsXG4gICdwdC0nOiAncGFkZGluZy10b3AnLFxuICAncHItJzogJ3BhZGRpbmctcmlnaHQnLFxuICAncGItJzogJ3BhZGRpbmctYm90dG9tJyxcbiAgJ3BsLSc6ICdwYWRkaW5nLWxlZnQnLFxuICAncHgtJzogJ3BhZGRpbmcteCcsXG4gICdweS0nOiAncGFkZGluZy15JyxcbiAgJ2dhcC0nOiAnZ2FwJyxcbiAgJ3JvdW5kZWQtJzogJ2JvcmRlci1yYWRpdXMnLFxuICAnanVzdGlmeS0nOiAnanVzdGlmeS1jb250ZW50JyxcbiAgJ2l0ZW1zLSc6ICdhbGlnbi1pdGVtcycsXG4gICdjb250ZW50LSc6ICdhbGlnbi1jb250ZW50JyxcbiAgJ3NlbGYtJzogJ2FsaWduLXNlbGYnLFxuICAnb3ZlcmZsb3ctJzogJ292ZXJmbG93JyxcbiAgJ292ZXJmbG93LXgtJzogJ292ZXJmbG93LXgnLFxuICAnb3ZlcmZsb3cteS0nOiAnb3ZlcmZsb3cteScsXG4gICd6LSc6ICd6LWluZGV4JyxcbiAgJ29wYWNpdHktJzogJ29wYWNpdHknLFxuICAnY3Vyc29yLSc6ICdjdXJzb3InLFxuICAnc2hhZG93LSc6ICdib3gtc2hhZG93JyxcbiAgJ2JvcmRlci0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci10LSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLXItJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItYi0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1sLSc6ICdib3JkZXItd2lkdGgnLFxuICAndG9wLSc6ICd0b3AnLFxuICAncmlnaHQtJzogJ3JpZ2h0JyxcbiAgJ2JvdHRvbS0nOiAnYm90dG9tJyxcbiAgJ2xlZnQtJzogJ2xlZnQnLFxuICAnaW5zZXQtJzogJ2luc2V0JyxcbiAgJ3RyYWNraW5nLSc6ICdsZXR0ZXItc3BhY2luZycsXG4gICdsZWFkaW5nLSc6ICdsaW5lLWhlaWdodCcsXG4gICdhc3BlY3QtJzogJ2FzcGVjdC1yYXRpbycsXG4gICdvYmplY3QtJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdiYXNpcy0nOiAnZmxleC1iYXNpcycsXG4gICdncm93LSc6ICdmbGV4LWdyb3cnLFxuICAnc2hyaW5rLSc6ICdmbGV4LXNocmluaydcbn07XG5cbmNvbnN0IEZPTlRfU0laRV9VVElMSVRJRVMgPSBuZXcgU2V0KFtcbiAgJ3RleHQteHMnLCAndGV4dC1zbScsICd0ZXh0LWJhc2UnLCAndGV4dC1sZycsICd0ZXh0LXhsJyxcbiAgJ3RleHQtMnhsJywgJ3RleHQtM3hsJywgJ3RleHQtNHhsJywgJ3RleHQtNXhsJywgJ3RleHQtNnhsJyxcbiAgJ3RleHQtN3hsJywgJ3RleHQtOHhsJywgJ3RleHQtOXhsJ1xuXSk7XG5cbmNvbnN0IExJTkVfSEVJR0hUX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAnbGVhZGluZy1ub25lJywgJ2xlYWRpbmctdGlnaHQnLCAnbGVhZGluZy1zbnVnJywgJ2xlYWRpbmctbm9ybWFsJyxcbiAgJ2xlYWRpbmctcmVsYXhlZCcsICdsZWFkaW5nLWxvb3NlJywgJ2xlYWRpbmctMycsICdsZWFkaW5nLTQnLCAnbGVhZGluZy01JyxcbiAgJ2xlYWRpbmctNicsICdsZWFkaW5nLTcnLCAnbGVhZGluZy04JywgJ2xlYWRpbmctOScsICdsZWFkaW5nLTEwJ1xuXSk7XG5cbmNvbnN0IExFVFRFUl9TUEFDSU5HX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAndHJhY2tpbmctdGlnaHRlcicsICd0cmFja2luZy10aWdodCcsICd0cmFja2luZy1ub3JtYWwnLFxuICAndHJhY2tpbmctd2lkZScsICd0cmFja2luZy13aWRlcicsICd0cmFja2luZy13aWRlc3QnXG5dKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5Rm9yVXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzdHJpcHBlZFV0aWxpdHkgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICBcbiAgaWYgKFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQW3N0cmlwcGVkVXRpbGl0eV0pIHtcbiAgICByZXR1cm4gVVRJTElUWV9UT19QUk9QRVJUWV9NQVBbc3RyaXBwZWRVdGlsaXR5XTtcbiAgfVxuICBcbiAgaWYgKEZPTlRfU0laRV9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2ZvbnQtc2l6ZSc7XG4gIH1cblxuICBpZiAoTElORV9IRUlHSFRfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsaW5lLWhlaWdodCc7XG4gIH1cblxuICBpZiAoTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsZXR0ZXItc3BhY2luZyc7XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aCgndGV4dC0nKSAmJiAhRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIGNvbnN0IHZhbHVlID0gc3RyaXBwZWRVdGlsaXR5LnNsaWNlKDUpO1xuICAgIGlmICgvXlxcZC8udGVzdCh2YWx1ZSkgfHwgdmFsdWUuc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgICByZXR1cm4gJ2ZvbnQtc2l6ZSc7XG4gICAgfVxuICAgIHJldHVybiAnY29sb3InO1xuICB9XG5cbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCdsZWFkaW5nLScpICYmICFMSU5FX0hFSUdIVF9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xpbmUtaGVpZ2h0JztcbiAgfVxuXG4gIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aCgndHJhY2tpbmctJykgJiYgIUxFVFRFUl9TUEFDSU5HX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnbGV0dGVyLXNwYWNpbmcnO1xuICB9XG4gIFxuICBjb25zdCBzb3J0ZWRQcmVmaXhlcyA9IE9iamVjdC5rZXlzKFBSRUZJWF9QUk9QRVJUWV9NQVApLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xuICBcbiAgZm9yIChjb25zdCBwcmVmaXggb2Ygc29ydGVkUHJlZml4ZXMpIHtcbiAgICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgcmV0dXJuIFBSRUZJWF9QUk9QRVJUWV9NQVBbcHJlZml4XTtcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiAndW5rbm93bic7XG59XG5cbmZ1bmN0aW9uIHN0cmlwVmFyaWFudHModXRpbGl0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHMgPSB1dGlsaXR5LnNwbGl0KCc6Jyk7XG4gIHJldHVybiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dEZvbnRTaXplVXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICByZXR1cm4gRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IChcbiAgICBzdHJpcHBlZC5zdGFydHNXaXRoKCd0ZXh0LScpICYmIC9eXFxkLy50ZXN0KHN0cmlwcGVkLnNsaWNlKDUpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0Q29sb3JVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIFxuICBpZiAoRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxuICBpZiAoc3RyaXBwZWQuc3RhcnRzV2l0aCgndGV4dC0nKSkge1xuICAgIGNvbnN0IHZhbHVlID0gc3RyaXBwZWQuc2xpY2UoNSk7XG4gICAgaWYgKC9eXFxkLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5zdGFydHNXaXRoKCdbJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGluZUhlaWdodFV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIExJTkVfSEVJR0hUX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ2xlYWRpbmctJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xldHRlclNwYWNpbmdVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIHJldHVybiBMRVRURVJfU1BBQ0lOR19VVElMSVRJRVMuaGFzKHN0cmlwcGVkKSB8fCBzdHJpcHBlZC5zdGFydHNXaXRoKCd0cmFja2luZy0nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnRpZXNGb3JVdGlsaXRpZXModXRpbGl0aWVzOiBzdHJpbmdbXSk6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiB7XG4gIGNvbnN0IHByb3BlcnR5TWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpO1xuICBcbiAgZm9yIChjb25zdCB1dGlsaXR5IG9mIHV0aWxpdGllcykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0UHJvcGVydHlGb3JVdGlsaXR5KHV0aWxpdHkpO1xuICAgIFxuICAgIGlmICghcHJvcGVydHlNYXAuaGFzKHByb3BlcnR5KSkge1xuICAgICAgcHJvcGVydHlNYXAuc2V0KHByb3BlcnR5LCBbXSk7XG4gICAgfVxuICAgIFxuICAgIHByb3BlcnR5TWFwLmdldChwcm9wZXJ0eSkhLnB1c2godXRpbGl0eSk7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wZXJ0eU1hcDtcbn1cblxuZXhwb3J0IGNvbnN0IFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAnZGlzcGxheSc6IFsnZGlzcGxheSddLFxuICAncG9zaXRpb24nOiBbJ3Bvc2l0aW9uJ10sXG4gICd3aWR0aCc6IFsnd2lkdGgnLCAnbWluLXdpZHRoJywgJ21heC13aWR0aCddLFxuICAnaGVpZ2h0JzogWydoZWlnaHQnLCAnbWluLWhlaWdodCcsICdtYXgtaGVpZ2h0J10sXG4gICdtYXJnaW4nOiBbJ21hcmdpbicsICdtYXJnaW4tdG9wJywgJ21hcmdpbi1yaWdodCcsICdtYXJnaW4tYm90dG9tJywgJ21hcmdpbi1sZWZ0JywgJ21hcmdpbi14JywgJ21hcmdpbi15J10sXG4gICdwYWRkaW5nJzogWydwYWRkaW5nJywgJ3BhZGRpbmctdG9wJywgJ3BhZGRpbmctcmlnaHQnLCAncGFkZGluZy1ib3R0b20nLCAncGFkZGluZy1sZWZ0JywgJ3BhZGRpbmcteCcsICdwYWRkaW5nLXknXSxcbiAgJ2ZsZXgtZGlyZWN0aW9uJzogWydmbGV4LWRpcmVjdGlvbiddLFxuICAnZmxleC13cmFwJzogWydmbGV4LXdyYXAnXSxcbiAgJ2ZsZXgnOiBbJ2ZsZXgnLCAnZmxleC1ncm93JywgJ2ZsZXgtc2hyaW5rJywgJ2ZsZXgtYmFzaXMnXSxcbiAgJ2p1c3RpZnktY29udGVudCc6IFsnanVzdGlmeS1jb250ZW50J10sXG4gICdhbGlnbi1pdGVtcyc6IFsnYWxpZ24taXRlbXMnXSxcbiAgJ2FsaWduLWNvbnRlbnQnOiBbJ2FsaWduLWNvbnRlbnQnXSxcbiAgJ2FsaWduLXNlbGYnOiBbJ2FsaWduLXNlbGYnXSxcbiAgJ3RleHQtYWxpZ24nOiBbJ3RleHQtYWxpZ24nXSxcbiAgJ2ZvbnQtc2l6ZSc6IFsnZm9udC1zaXplJ10sXG4gICdmb250LXdlaWdodCc6IFsnZm9udC13ZWlnaHQnXSxcbiAgJ2NvbG9yJzogWydjb2xvciddLFxuICAnYmFja2dyb3VuZC1jb2xvcic6IFsnYmFja2dyb3VuZC1jb2xvcicsICdiYWNrZ3JvdW5kJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydib3JkZXItcmFkaXVzJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci13aWR0aCcsICdib3JkZXItdG9wLXdpZHRoJywgJ2JvcmRlci1yaWdodC13aWR0aCcsICdib3JkZXItYm90dG9tLXdpZHRoJywgJ2JvcmRlci1sZWZ0LXdpZHRoJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvcicsICdib3JkZXItdG9wLWNvbG9yJywgJ2JvcmRlci1yaWdodC1jb2xvcicsICdib3JkZXItYm90dG9tLWNvbG9yJywgJ2JvcmRlci1sZWZ0LWNvbG9yJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zdHlsZSddLFxuICAnb3ZlcmZsb3cnOiBbJ292ZXJmbG93JywgJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAnei1pbmRleCc6IFsnei1pbmRleCddLFxuICAnb3BhY2l0eSc6IFsnb3BhY2l0eSddLFxuICAnZ2FwJzogWydnYXAnXSxcbiAgJ2luc2V0JzogWydpbnNldCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgJ3RleHQtZGVjb3JhdGlvbic6IFsndGV4dC1kZWNvcmF0aW9uJ10sXG4gICd0ZXh0LXRyYW5zZm9ybSc6IFsndGV4dC10cmFuc2Zvcm0nXSxcbiAgJ2xldHRlci1zcGFjaW5nJzogWydsZXR0ZXItc3BhY2luZyddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xpbmUtaGVpZ2h0J10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC1yYXRpbyddLFxuICAnb2JqZWN0LWZpdCc6IFsnb2JqZWN0LWZpdCddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtcG9zaXRpb24nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ3dvcmQtYnJlYWsnXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZsaWN0R3JvdXAocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIHByb3BlcnRpZXNdIG9mIE9iamVjdC5lbnRyaWVzKFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUykpIHtcbiAgICBpZiAocHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBncm91cE5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0NvbmZsaWN0KHByb3AxOiBzdHJpbmcsIHByb3AyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZ3JvdXAxID0gZ2V0Q29uZmxpY3RHcm91cChwcm9wMSk7XG4gIGNvbnN0IGdyb3VwMiA9IGdldENvbmZsaWN0R3JvdXAocHJvcDIpO1xuICBcbiAgaWYgKGdyb3VwMSAmJiBncm91cDIgJiYgZ3JvdXAxID09PSBncm91cDIpIHtcbiAgICBpZiAocHJvcDEgPT09IHByb3AyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZ3JvdXAgPSBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFNbZ3JvdXAxXTtcbiAgICBcbiAgICBpZiAoZ3JvdXAubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGdyb3VwMSA9PT0gJ21hcmdpbicgfHwgZ3JvdXAxID09PSAncGFkZGluZycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gZ3JvdXAxIHx8IHByb3AyID09PSBncm91cDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdpbnNldCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2luc2V0JyB8fCBwcm9wMiA9PT0gJ2luc2V0Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnYm9yZGVyLXdpZHRoJykge1xuICAgICAgaWYgKHByb3AxID09PSAnYm9yZGVyLXdpZHRoJyB8fCBwcm9wMiA9PT0gJ2JvcmRlci13aWR0aCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwMSA9PT0gJ2JvcmRlci1jb2xvcicpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2JvcmRlci1jb2xvcicgfHwgcHJvcDIgPT09ICdib3JkZXItY29sb3InKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChncm91cDEgPT09ICdvdmVyZmxvdycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ292ZXJmbG93JyB8fCBwcm9wMiA9PT0gJ292ZXJmbG93Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnZmxleCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2ZsZXgnIHx8IHByb3AyID09PSAnZmxleCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59XG4iXX0=
446
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNlBBLHNEQTREQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsa0RBR0M7QUFFRCx3REFHQztBQUVELDhEQWNDO0FBK0NELDRDQU9DO0FBRUQsZ0RBdURDO0FBaGVELE1BQU0sbUJBQW1CLEdBQTZCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMzQixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDckIsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztJQUMvSyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUM7SUFDekosU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ25LLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7SUFDakUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2YsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFD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SSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxLQUFLLGNBQWMsSUFBSSxLQUFLLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLE1BQU0sS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUM5QixJQUFJLEtBQUssS0FBSyxjQUFjLElBQUksS0FBSyxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUN6RCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDMUIsSUFBSSxLQUFLLEtBQUssVUFBVSxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssS0FBSyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sS0FBSyxLQUFLLEtBQUssQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUFJPUEVSVFlfUFJFRklYX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAnY29sb3InOiBbJ3RleHQtJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiZy0nXSxcbiAgJ2JhY2tncm91bmQnOiBbJ2JnLSddLFxuICAnZm9udC1zaXplJzogWyd0ZXh0LXhzJywgJ3RleHQtc20nLCAndGV4dC1iYXNlJywgJ3RleHQtbGcnLCAndGV4dC14bCcsICd0ZXh0LTJ4bCcsICd0ZXh0LTN4bCcsICd0ZXh0LTR4bCcsICd0ZXh0LTV4bCcsICd0ZXh0LTZ4bCcsICd0ZXh0LTd4bCcsICd0ZXh0LTh4bCcsICd0ZXh0LTl4bCcsICd0ZXh0LSddLFxuICAnZm9udC13ZWlnaHQnOiBbJ2ZvbnQtdGhpbicsICdmb250LWV4dHJhbGlnaHQnLCAnZm9udC1saWdodCcsICdmb250LW5vcm1hbCcsICdmb250LW1lZGl1bScsICdmb250LXNlbWlib2xkJywgJ2ZvbnQtYm9sZCcsICdmb250LWV4dHJhYm9sZCcsICdmb250LWJsYWNrJ10sXG4gICdkaXNwbGF5JzogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdoaWRkZW4nLCAnY29udGVudHMnLCAndGFibGUnLCAndGFibGUtY2VsbCcsICd0YWJsZS1yb3cnLCAnZmxvdy1yb290J10sXG4gICdwb3NpdGlvbic6IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAnd2lkdGgnOiBbJ3ctJ10sXG4gICdoZWlnaHQnOiBbJ2gtJ10sXG4gICdtaW4td2lkdGgnOiBbJ21pbi13LSddLFxuICAnbWF4LXdpZHRoJzogWydtYXgtdy0nXSxcbiAgJ21pbi1oZWlnaHQnOiBbJ21pbi1oLSddLFxuICAnbWF4LWhlaWdodCc6IFsnbWF4LWgtJ10sXG4gICdtYXJnaW4nOiBbJ20tJ10sXG4gICdtYXJnaW4tdG9wJzogWydtdC0nXSxcbiAgJ21hcmdpbi1yaWdodCc6IFsnbXItJ10sXG4gICdtYXJnaW4tYm90dG9tJzogWydtYi0nXSxcbiAgJ21hcmdpbi1sZWZ0JzogWydtbC0nXSxcbiAgJ21hcmdpbi14JzogWydteC0nXSxcbiAgJ21hcmdpbi15JzogWydteS0nXSxcbiAgJ3BhZGRpbmcnOiBbJ3AtJ10sXG4gICdwYWRkaW5nLXRvcCc6IFsncHQtJ10sXG4gICdwYWRkaW5nLXJpZ2h0JzogWydwci0nXSxcbiAgJ3BhZGRpbmctYm90dG9tJzogWydwYi0nXSxcbiAgJ3BhZGRpbmctbGVmdCc6IFsncGwtJ10sXG4gICdwYWRkaW5nLXgnOiBbJ3B4LSddLFxuICAncGFkZGluZy15JzogWydweS0nXSxcbiAgJ2dhcCc6IFsnZ2FwLSddLFxuICAnYm9yZGVyLXJhZGl1cyc6IFsncm91bmRlZC0nLCAncm91bmRlZCddLFxuICAnYm9yZGVyLXdpZHRoJzogWydib3JkZXItJywgJ2JvcmRlci10LScsICdib3JkZXItci0nLCAnYm9yZGVyLWItJywgJ2JvcmRlci1sLSddLFxuICAnYm9yZGVyLWNvbG9yJzogWydib3JkZXItJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zb2xpZCcsICdib3JkZXItZGFzaGVkJywgJ2JvcmRlci1kb3R0ZWQnLCAnYm9yZGVyLWRvdWJsZScsICdib3JkZXItaGlkZGVuJywgJ2JvcmRlci1ub25lJ10sXG4gICdmbGV4LWRpcmVjdGlvbic6IFsnZmxleC1yb3cnLCAnZmxleC1jb2wnLCAnZmxleC1yb3ctcmV2ZXJzZScsICdmbGV4LWNvbC1yZXZlcnNlJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCcsICdmbGV4LW5vd3JhcCcsICdmbGV4LXdyYXAtcmV2ZXJzZSddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LSddLFxuICAnYWxpZ24taXRlbXMnOiBbJ2l0ZW1zLSddLFxuICAnYWxpZ24tY29udGVudCc6IFsnY29udGVudC0nXSxcbiAgJ2FsaWduLXNlbGYnOiBbJ3NlbGYtJ10sXG4gICd0ZXh0LWFsaWduJzogWyd0ZXh0LWxlZnQnLCAndGV4dC1jZW50ZXInLCAndGV4dC1yaWdodCcsICd0ZXh0LWp1c3RpZnknLCAndGV4dC1zdGFydCcsICd0ZXh0LWVuZCddLFxuICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAnbGV0dGVyLXNwYWNpbmcnOiBbJ3RyYWNraW5nLSddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xlYWRpbmctJ10sXG4gICdvdmVyZmxvdyc6IFsnb3ZlcmZsb3ctJ10sXG4gICdvdmVyZmxvdy14JzogWydvdmVyZmxvdy14LSddLFxuICAnb3ZlcmZsb3cteSc6IFsnb3ZlcmZsb3cteS0nXSxcbiAgJ3otaW5kZXgnOiBbJ3otJ10sXG4gICdvcGFjaXR5JzogWydvcGFjaXR5LSddLFxuICAnY3Vyc29yJzogWydjdXJzb3ItJ10sXG4gICdwb2ludGVyLWV2ZW50cyc6IFsncG9pbnRlci1ldmVudHMtJ10sXG4gICd1c2VyLXNlbGVjdCc6IFsnc2VsZWN0LSddLFxuICAnYm94LXNoYWRvdyc6IFsnc2hhZG93LSddLFxuICAndHJhbnNpdGlvbic6IFsndHJhbnNpdGlvbi0nXSxcbiAgJ3RyYW5zZm9ybSc6IFsnc2NhbGUtJywgJ3JvdGF0ZS0nLCAndHJhbnNsYXRlLScsICdza2V3LSddLFxuICAndG9wJzogWyd0b3AtJ10sXG4gICdyaWdodCc6IFsncmlnaHQtJ10sXG4gICdib3R0b20nOiBbJ2JvdHRvbS0nXSxcbiAgJ2xlZnQnOiBbJ2xlZnQtJ10sXG4gICdpbnNldCc6IFsnaW5zZXQtJ10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC0nXSxcbiAgJ29iamVjdC1maXQnOiBbJ29iamVjdC1jb250YWluJywgJ29iamVjdC1jb3ZlcicsICdvYmplY3QtZmlsbCcsICdvYmplY3Qtbm9uZScsICdvYmplY3Qtc2NhbGUtZG93biddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtJ10sXG4gICdmbGV4JzogWydmbGV4LTEnLCAnZmxleC1hdXRvJywgJ2ZsZXgtaW5pdGlhbCcsICdmbGV4LW5vbmUnXSxcbiAgJ2ZsZXgtZ3Jvdyc6IFsnZ3Jvdy0nLCAnZ3JvdyddLFxuICAnZmxleC1zaHJpbmsnOiBbJ3Nocmluay0nLCAnc2hyaW5rJ10sXG4gICdmbGV4LWJhc2lzJzogWydiYXNpcy0nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ2JyZWFrLW5vcm1hbCcsICdicmVhay1hbGwnLCAnYnJlYWstd29yZHMnLCAnYnJlYWsta2VlcCddLFxuICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzogWydncmlkLWNvbHMtJ10sXG4gICdncmlkLXRlbXBsYXRlLXJvd3MnOiBbJ2dyaWQtcm93cy0nXSxcbiAgJ2dyaWQtY29sdW1uJzogWydjb2wtc3Bhbi0nLCAnY29sLXN0YXJ0LScsICdjb2wtZW5kLScsICdjb2wtJ10sXG4gICdncmlkLXJvdyc6IFsncm93LXNwYW4tJywgJ3Jvdy1zdGFydC0nLCAncm93LWVuZC0nLCAncm93LSddLFxuICAncGxhY2UtaXRlbXMnOiBbJ3BsYWNlLWl0ZW1zLSddLFxuICAncGxhY2UtY29udGVudCc6IFsncGxhY2UtY29udGVudC0nXSxcbiAgJ3BsYWNlLXNlbGYnOiBbJ3BsYWNlLXNlbGYtJ11cbn07XG5cbmNvbnN0IFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUtYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUnOiAnZGlzcGxheScsXG4gICdmbGV4JzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWZsZXgnOiAnZGlzcGxheScsXG4gICdncmlkJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWdyaWQnOiAnZGlzcGxheScsXG4gICdoaWRkZW4nOiAnZGlzcGxheScsXG4gICdjb250ZW50cyc6ICdkaXNwbGF5JyxcbiAgJ2Zsb3ctcm9vdCc6ICdkaXNwbGF5JyxcbiAgJ3N0YXRpYyc6ICdwb3NpdGlvbicsXG4gICdmaXhlZCc6ICdwb3NpdGlvbicsXG4gICdhYnNvbHV0ZSc6ICdwb3NpdGlvbicsXG4gICdyZWxhdGl2ZSc6ICdwb3NpdGlvbicsXG4gICdzdGlja3knOiAncG9zaXRpb24nLFxuICAnZmxleC1yb3cnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1yb3ctcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWNvbC1yZXZlcnNlJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtd3JhcCc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC1ub3dyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtd3JhcC1yZXZlcnNlJzogJ2ZsZXgtd3JhcCcsXG4gICdmbGV4LTEnOiAnZmxleCcsXG4gICdmbGV4LWF1dG8nOiAnZmxleCcsXG4gICdmbGV4LWluaXRpYWwnOiAnZmxleCcsXG4gICdmbGV4LW5vbmUnOiAnZmxleCcsXG4gICdncm93JzogJ2ZsZXgtZ3JvdycsXG4gICdncm93LTAnOiAnZmxleC1ncm93JyxcbiAgJ3Nocmluayc6ICdmbGV4LXNocmluaycsXG4gICdzaHJpbmstMCc6ICdmbGV4LXNocmluaycsXG4gICd0ZXh0LWxlZnQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWNlbnRlcic6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtcmlnaHQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWp1c3RpZnknOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXN0YXJ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1lbmQnOiAndGV4dC1hbGlnbicsXG4gICdmb250LXRoaW4nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbGlnaHQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ub3JtYWwnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1tZWRpdW0nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1zZW1pYm9sZCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ibGFjayc6ICdmb250LXdlaWdodCcsXG4gICdyb3VuZGVkJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1ub25lJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1zbSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbWQnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWxnJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC14bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtMnhsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC0zeGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWZ1bGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICd1bmRlcmxpbmUnOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ2xpbmUtdGhyb3VnaCc6ICd0ZXh0LWRlY29yYXRpb24nLFxuICAnbm8tdW5kZXJsaW5lJzogJ3RleHQtZGVjb3JhdGlvbicsXG4gICd1cHBlcmNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbG93ZXJjYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2NhcGl0YWxpemUnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbm9ybWFsLWNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnYm9yZGVyLXNvbGlkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZGFzaGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG90dGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG91YmxlJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItaGlkZGVuJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItbm9uZSc6ICdib3JkZXItc3R5bGUnLFxuICAnb2JqZWN0LWNvbnRhaW4nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY292ZXInOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtZmlsbCc6ICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1ub25lJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LXNjYWxlLWRvd24nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY2VudGVyJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtYm90dG9tJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0JzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1sZWZ0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnYnJlYWstbm9ybWFsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstYWxsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstd29yZHMnOiAnd29yZC1icmVhaycsXG4gICdicmVhay1rZWVwJzogJ3dvcmQtYnJlYWsnLFxuICAnYXNwZWN0LXNxdWFyZSc6ICdhc3BlY3QtcmF0aW8nLFxuICAnYXNwZWN0LXZpZGVvJzogJ2FzcGVjdC1yYXRpbycsXG4gICdhc3BlY3QtYXV0byc6ICdhc3BlY3QtcmF0aW8nXG59O1xuXG5jb25zdCBQUkVGSVhfUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAndGV4dC0nOiAnY29sb3InLFxuICAnYmctJzogJ2JhY2tncm91bmQtY29sb3InLFxuICAndy0nOiAnd2lkdGgnLFxuICAnaC0nOiAnaGVpZ2h0JyxcbiAgJ21pbi13LSc6ICdtaW4td2lkdGgnLFxuICAnbWF4LXctJzogJ21heC13aWR0aCcsXG4gICdtaW4taC0nOiAnbWluLWhlaWdodCcsXG4gICdtYXgtaC0nOiAnbWF4LWhlaWdodCcsXG4gICdtLSc6ICdtYXJnaW4nLFxuICAnbXQtJzogJ21hcmdpbi10b3AnLFxuICAnbXItJzogJ21hcmdpbi1yaWdodCcsXG4gICdtYi0nOiAnbWFyZ2luLWJvdHRvbScsXG4gICdtbC0nOiAnbWFyZ2luLWxlZnQnLFxuICAnbXgtJzogJ21hcmdpbi14JyxcbiAgJ215LSc6ICdtYXJnaW4teScsXG4gICdwLSc6ICdwYWRkaW5nJyxcbiAgJ3B0LSc6ICdwYWRkaW5nLXRvcCcsXG4gICdwci0nOiAncGFkZGluZy1yaWdodCcsXG4gICdwYi0nOiAncGFkZGluZy1ib3R0b20nLFxuICAncGwtJzogJ3BhZGRpbmctbGVmdCcsXG4gICdweC0nOiAncGFkZGluZy14JyxcbiAgJ3B5LSc6ICdwYWRkaW5nLXknLFxuICAnZ2FwLSc6ICdnYXAnLFxuICAncm91bmRlZC0nOiAnYm9yZGVyLXJhZGl1cycsXG4gICdqdXN0aWZ5LSc6ICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAnaXRlbXMtJzogJ2FsaWduLWl0ZW1zJyxcbiAgJ2NvbnRlbnQtJzogJ2FsaWduLWNvbnRlbnQnLFxuICAnc2VsZi0nOiAnYWxpZ24tc2VsZicsXG4gICdvdmVyZmxvdy0nOiAnb3ZlcmZsb3cnLFxuICAnb3ZlcmZsb3cteC0nOiAnb3ZlcmZsb3cteCcsXG4gICdvdmVyZmxvdy15LSc6ICdvdmVyZmxvdy15JyxcbiAgJ3otJzogJ3otaW5kZXgnLFxuICAnb3BhY2l0eS0nOiAnb3BhY2l0eScsXG4gICdjdXJzb3ItJzogJ2N1cnNvcicsXG4gICdzaGFkb3ctJzogJ2JveC1zaGFkb3cnLFxuICAnYm9yZGVyLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLXQtJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItci0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1iLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLWwtJzogJ2JvcmRlci13aWR0aCcsXG4gICd0b3AtJzogJ3RvcCcsXG4gICdyaWdodC0nOiAncmlnaHQnLFxuICAnYm90dG9tLSc6ICdib3R0b20nLFxuICAnbGVmdC0nOiAnbGVmdCcsXG4gICdpbnNldC0nOiAnaW5zZXQnLFxuICAndHJhY2tpbmctJzogJ2xldHRlci1zcGFjaW5nJyxcbiAgJ2xlYWRpbmctJzogJ2xpbmUtaGVpZ2h0JyxcbiAgJ2FzcGVjdC0nOiAnYXNwZWN0LXJhdGlvJyxcbiAgJ29iamVjdC0nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ2Jhc2lzLSc6ICdmbGV4LWJhc2lzJyxcbiAgJ2dyb3ctJzogJ2ZsZXgtZ3JvdycsXG4gICdzaHJpbmstJzogJ2ZsZXgtc2hyaW5rJyxcbiAgJ2dyaWQtY29scy0nOiAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJyxcbiAgJ2dyaWQtcm93cy0nOiAnZ3JpZC10ZW1wbGF0ZS1yb3dzJyxcbiAgJ2NvbC1zcGFuLSc6ICdncmlkLWNvbHVtbicsXG4gICdjb2wtc3RhcnQtJzogJ2dyaWQtY29sdW1uJyxcbiAgJ2NvbC1lbmQtJzogJ2dyaWQtY29sdW1uJyxcbiAgJ2NvbC0nOiAnZ3JpZC1jb2x1bW4nLFxuICAncm93LXNwYW4tJzogJ2dyaWQtcm93JyxcbiAgJ3Jvdy1zdGFydC0nOiAnZ3JpZC1yb3cnLFxuICAncm93LWVuZC0nOiAnZ3JpZC1yb3cnLFxuICAncm93LSc6ICdncmlkLXJvdycsXG4gICdwbGFjZS1pdGVtcy0nOiAncGxhY2UtaXRlbXMnLFxuICAncGxhY2UtY29udGVudC0nOiAncGxhY2UtY29udGVudCcsXG4gICdwbGFjZS1zZWxmLSc6ICdwbGFjZS1zZWxmJ1xufTtcblxuY29uc3QgRk9OVF9TSVpFX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAndGV4dC14cycsICd0ZXh0LXNtJywgJ3RleHQtYmFzZScsICd0ZXh0LWxnJywgJ3RleHQteGwnLFxuICAndGV4dC0yeGwnLCAndGV4dC0zeGwnLCAndGV4dC00eGwnLCAndGV4dC01eGwnLCAndGV4dC02eGwnLFxuICAndGV4dC03eGwnLCAndGV4dC04eGwnLCAndGV4dC05eGwnXG5dKTtcblxuY29uc3QgTElORV9IRUlHSFRfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICdsZWFkaW5nLW5vbmUnLCAnbGVhZGluZy10aWdodCcsICdsZWFkaW5nLXNudWcnLCAnbGVhZGluZy1ub3JtYWwnLFxuICAnbGVhZGluZy1yZWxheGVkJywgJ2xlYWRpbmctbG9vc2UnLCAnbGVhZGluZy0zJywgJ2xlYWRpbmctNCcsICdsZWFkaW5nLTUnLFxuICAnbGVhZGluZy02JywgJ2xlYWRpbmctNycsICdsZWFkaW5nLTgnLCAnbGVhZGluZy05JywgJ2xlYWRpbmctMTAnXG5dKTtcblxuY29uc3QgTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICd0cmFja2luZy10aWdodGVyJywgJ3RyYWNraW5nLXRpZ2h0JywgJ3RyYWNraW5nLW5vcm1hbCcsXG4gICd0cmFja2luZy13aWRlJywgJ3RyYWNraW5nLXdpZGVyJywgJ3RyYWNraW5nLXdpZGVzdCdcbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHlGb3JVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmlwcGVkVXRpbGl0eSA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIFxuICBpZiAoVVRJTElUWV9UT19QUk9QRVJUWV9NQVBbc3RyaXBwZWRVdGlsaXR5XSkge1xuICAgIHJldHVybiBVVElMSVRZX1RPX1BST1BFUlRZX01BUFtzdHJpcHBlZFV0aWxpdHldO1xuICB9XG4gIFxuICBpZiAoRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgfVxuXG4gIGlmIChMSU5FX0hFSUdIVF9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xpbmUtaGVpZ2h0JztcbiAgfVxuXG4gIGlmIChMRVRURVJfU1BBQ0lOR19VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xldHRlci1zcGFjaW5nJztcbiAgfVxuICBcbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0ZXh0LScpICYmICFGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZFV0aWxpdHkuc2xpY2UoNSk7XG4gICAgaWYgKC9eXFxkLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5zdGFydHNXaXRoKCdbJykpIHtcbiAgICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgICB9XG4gICAgcmV0dXJuICdjb2xvcic7XG4gIH1cblxuICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgoJ2xlYWRpbmctJykgJiYgIUxJTkVfSEVJR0hUX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnbGluZS1oZWlnaHQnO1xuICB9XG5cbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0cmFja2luZy0nKSAmJiAhTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsZXR0ZXItc3BhY2luZyc7XG4gIH1cbiAgXG4gIGlmICgvXmJvcmRlci1bdHJibF0tXFxbLy50ZXN0KHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmlwcGVkVXRpbGl0eS5tYXRjaCgvXmJvcmRlci1bdHJibF0tXFxbKC4rKVxcXSQvKT8uWzFdIHx8ICcnO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcjJykgfHwgdmFsdWUuc3RhcnRzV2l0aCgncmdiJykgfHwgdmFsdWUuc3RhcnRzV2l0aCgnaHNsJykgfHwgXG4gICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoJ3ZhcignKSB8fCAvXlthLXpdL2kudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnYm9yZGVyLWNvbG9yJztcbiAgICB9XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aCgnYm9yZGVyLScpICYmIHN0cmlwcGVkVXRpbGl0eS5pbmNsdWRlcygnWycpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZFV0aWxpdHkubWF0Y2goL15ib3JkZXItXFxbKC4rKVxcXSQvKT8uWzFdIHx8ICcnO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcjJykgfHwgdmFsdWUuc3RhcnRzV2l0aCgncmdiJykgfHwgdmFsdWUuc3RhcnRzV2l0aCgnaHNsJykgfHwgXG4gICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoJ3ZhcignKSB8fCAvXlthLXpdL2kudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnYm9yZGVyLWNvbG9yJztcbiAgICB9XG4gIH1cbiAgXG4gIGNvbnN0IHNvcnRlZFByZWZpeGVzID0gT2JqZWN0LmtleXMoUFJFRklYX1BST1BFUlRZX01BUCkuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG4gIFxuICBmb3IgKGNvbnN0IHByZWZpeCBvZiBzb3J0ZWRQcmVmaXhlcykge1xuICAgIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gUFJFRklYX1BST1BFUlRZX01BUFtwcmVmaXhdO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gc3RyaXBWYXJpYW50cyh1dGlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IHV0aWxpdHkuc3BsaXQoJzonKTtcbiAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0Rm9udFNpemVVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIHJldHVybiBGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgKFxuICAgIHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RleHQtJykgJiYgL15cXGQvLnRlc3Qoc3RyaXBwZWQuc2xpY2UoNSkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRDb2xvclV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgXG4gIGlmIChGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZC5zdGFydHNXaXRoKCd0ZXh0LScpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZC5zbGljZSg1KTtcbiAgICBpZiAoL15cXGQvLnRlc3QodmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lSGVpZ2h0VXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICByZXR1cm4gTElORV9IRUlHSFRfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgc3RyaXBwZWQuc3RhcnRzV2l0aCgnbGVhZGluZy0nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGV0dGVyU3BhY2luZ1V0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIExFVFRFUl9TUEFDSU5HX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RyYWNraW5nLScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydGllc0ZvclV0aWxpdGllcyh1dGlsaXRpZXM6IHN0cmluZ1tdKTogTWFwPHN0cmluZywgc3RyaW5nW10+IHtcbiAgY29uc3QgcHJvcGVydHlNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XG4gIFxuICBmb3IgKGNvbnN0IHV0aWxpdHkgb2YgdXRpbGl0aWVzKSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBnZXRQcm9wZXJ0eUZvclV0aWxpdHkodXRpbGl0eSk7XG4gICAgXG4gICAgaWYgKCFwcm9wZXJ0eU1hcC5oYXMocHJvcGVydHkpKSB7XG4gICAgICBwcm9wZXJ0eU1hcC5zZXQocHJvcGVydHksIFtdKTtcbiAgICB9XG4gICAgXG4gICAgcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5KSEucHVzaCh1dGlsaXR5KTtcbiAgfVxuICBcbiAgcmV0dXJuIHByb3BlcnR5TWFwO1xufVxuXG5leHBvcnQgY29uc3QgUFJPUEVSVFlfQ09ORkxJQ1RfR1JPVVBTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gICdkaXNwbGF5JzogWydkaXNwbGF5J10sXG4gICdwb3NpdGlvbic6IFsncG9zaXRpb24nXSxcbiAgJ3dpZHRoJzogWyd3aWR0aCcsICdtaW4td2lkdGgnLCAnbWF4LXdpZHRoJ10sXG4gICdoZWlnaHQnOiBbJ2hlaWdodCcsICdtaW4taGVpZ2h0JywgJ21heC1oZWlnaHQnXSxcbiAgJ21hcmdpbic6IFsnbWFyZ2luJywgJ21hcmdpbi10b3AnLCAnbWFyZ2luLXJpZ2h0JywgJ21hcmdpbi1ib3R0b20nLCAnbWFyZ2luLWxlZnQnLCAnbWFyZ2luLXgnLCAnbWFyZ2luLXknXSxcbiAgJ3BhZGRpbmcnOiBbJ3BhZGRpbmcnLCAncGFkZGluZy10b3AnLCAncGFkZGluZy1yaWdodCcsICdwYWRkaW5nLWJvdHRvbScsICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy14JywgJ3BhZGRpbmcteSddLFxuICAnZmxleC1kaXJlY3Rpb24nOiBbJ2ZsZXgtZGlyZWN0aW9uJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCddLFxuICAnZmxleCc6IFsnZmxleCcsICdmbGV4LWdyb3cnLCAnZmxleC1zaHJpbmsnLCAnZmxleC1iYXNpcyddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LWNvbnRlbnQnXSxcbiAgJ2FsaWduLWl0ZW1zJzogWydhbGlnbi1pdGVtcyddLFxuICAnYWxpZ24tY29udGVudCc6IFsnYWxpZ24tY29udGVudCddLFxuICAnYWxpZ24tc2VsZic6IFsnYWxpZ24tc2VsZiddLFxuICAndGV4dC1hbGlnbic6IFsndGV4dC1hbGlnbiddLFxuICAnZm9udC1zaXplJzogWydmb250LXNpemUnXSxcbiAgJ2ZvbnQtd2VpZ2h0JzogWydmb250LXdlaWdodCddLFxuICAnY29sb3InOiBbJ2NvbG9yJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiYWNrZ3JvdW5kLWNvbG9yJywgJ2JhY2tncm91bmQnXSxcbiAgJ2JvcmRlci1yYWRpdXMnOiBbJ2JvcmRlci1yYWRpdXMnXSxcbiAgJ2JvcmRlci13aWR0aCc6IFsnYm9yZGVyLXdpZHRoJywgJ2JvcmRlci10b3Atd2lkdGgnLCAnYm9yZGVyLXJpZ2h0LXdpZHRoJywgJ2JvcmRlci1ib3R0b20td2lkdGgnLCAnYm9yZGVyLWxlZnQtd2lkdGgnXSxcbiAgJ2JvcmRlci1jb2xvcic6IFsnYm9yZGVyLWNvbG9yJywgJ2JvcmRlci10b3AtY29sb3InLCAnYm9yZGVyLXJpZ2h0LWNvbG9yJywgJ2JvcmRlci1ib3R0b20tY29sb3InLCAnYm9yZGVyLWxlZnQtY29sb3InXSxcbiAgJ2JvcmRlci1zdHlsZSc6IFsnYm9yZGVyLXN0eWxlJ10sXG4gICdvdmVyZmxvdyc6IFsnb3ZlcmZsb3cnLCAnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICd6LWluZGV4JzogWyd6LWluZGV4J10sXG4gICdvcGFjaXR5JzogWydvcGFjaXR5J10sXG4gICdnYXAnOiBbJ2dhcCddLFxuICAnaW5zZXQnOiBbJ2luc2V0JywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAndGV4dC1kZWNvcmF0aW9uJzogWyd0ZXh0LWRlY29yYXRpb24nXSxcbiAgJ3RleHQtdHJhbnNmb3JtJzogWyd0ZXh0LXRyYW5zZm9ybSddLFxuICAnbGV0dGVyLXNwYWNpbmcnOiBbJ2xldHRlci1zcGFjaW5nJ10sXG4gICdsaW5lLWhlaWdodCc6IFsnbGluZS1oZWlnaHQnXSxcbiAgJ2FzcGVjdC1yYXRpbyc6IFsnYXNwZWN0LXJhdGlvJ10sXG4gICdvYmplY3QtZml0JzogWydvYmplY3QtZml0J10sXG4gICdvYmplY3QtcG9zaXRpb24nOiBbJ29iamVjdC1wb3NpdGlvbiddLFxuICAnd29yZC1icmVhayc6IFsnd29yZC1icmVhayddLFxuICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzogWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSxcbiAgJ2dyaWQtdGVtcGxhdGUtcm93cyc6IFsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10sXG4gICdncmlkLWNvbHVtbic6IFsnZ3JpZC1jb2x1bW4nLCAnZ3JpZC1jb2x1bW4tc3RhcnQnLCAnZ3JpZC1jb2x1bW4tZW5kJ10sXG4gICdncmlkLXJvdyc6IFsnZ3JpZC1yb3cnLCAnZ3JpZC1yb3ctc3RhcnQnLCAnZ3JpZC1yb3ctZW5kJ10sXG4gICdwbGFjZS1pdGVtcyc6IFsncGxhY2UtaXRlbXMnXSxcbiAgJ3BsYWNlLWNvbnRlbnQnOiBbJ3BsYWNlLWNvbnRlbnQnXSxcbiAgJ3BsYWNlLXNlbGYnOiBbJ3BsYWNlLXNlbGYnXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZsaWN0R3JvdXAocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIHByb3BlcnRpZXNdIG9mIE9iamVjdC5lbnRyaWVzKFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUykpIHtcbiAgICBpZiAocHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBncm91cE5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0NvbmZsaWN0KHByb3AxOiBzdHJpbmcsIHByb3AyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZ3JvdXAxID0gZ2V0Q29uZmxpY3RHcm91cChwcm9wMSk7XG4gIGNvbnN0IGdyb3VwMiA9IGdldENvbmZsaWN0R3JvdXAocHJvcDIpO1xuICBcbiAgaWYgKGdyb3VwMSAmJiBncm91cDIgJiYgZ3JvdXAxID09PSBncm91cDIpIHtcbiAgICBpZiAocHJvcDEgPT09IHByb3AyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZ3JvdXAgPSBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFNbZ3JvdXAxXTtcbiAgICBcbiAgICBpZiAoZ3JvdXAubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGdyb3VwMSA9PT0gJ21hcmdpbicgfHwgZ3JvdXAxID09PSAncGFkZGluZycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gZ3JvdXAxIHx8IHByb3AyID09PSBncm91cDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdpbnNldCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2luc2V0JyB8fCBwcm9wMiA9PT0gJ2luc2V0Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnYm9yZGVyLXdpZHRoJykge1xuICAgICAgaWYgKHByb3AxID09PSAnYm9yZGVyLXdpZHRoJyB8fCBwcm9wMiA9PT0gJ2JvcmRlci13aWR0aCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwMSA9PT0gJ2JvcmRlci1jb2xvcicpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2JvcmRlci1jb2xvcicgfHwgcHJvcDIgPT09ICdib3JkZXItY29sb3InKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChncm91cDEgPT09ICdvdmVyZmxvdycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ292ZXJmbG93JyB8fCBwcm9wMiA9PT0gJ292ZXJmbG93Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnZmxleCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2ZsZXgnIHx8IHByb3AyID09PSAnZmxleCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59XG4iXX0=