@projectcor/maia-components 2.11.26-4 → 2.11.26-5
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/lib/components/atoms/ApprovalBox/ApprovalBox.js +1 -2
- package/lib/components/atoms/ApprovalBox/ApprovalBox.styles.js +3 -2
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +1 -3
- package/lib/hooks/useChatManager/useChatManager.js +2 -4
- package/lib/hooks/useOrchestratorStream/streamRevealSmooth.js +4 -145
- package/lib/lang/br/index.js +20 -49
- package/lib/lang/en/index.js +12 -41
- package/lib/lang/es/index.js +1 -40
- package/lib/lang/fr/index.js +1 -19
- package/lib/services/utils/mapChatMessages.js +4 -21
- package/lib/types/Chat.js +1 -1
- package/package.json +1 -1
|
@@ -1,35 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
-
/* eslint-disable no-underscore-dangle -- flags globales window.__MAIA_STREAM_REVEAL_DEBUG__ */
|
|
5
|
-
|
|
6
|
-
/** Valores por defecto del reveal: typing suave sin quedarse demasiado atrás del SSE. */
|
|
1
|
+
/** Valores por defecto únicos para todos los ambientes. */
|
|
7
2
|
export var STREAM_REVEAL_DEFAULTS = {
|
|
8
|
-
maxCharsPerFrame:
|
|
3
|
+
maxCharsPerFrame: 10,
|
|
9
4
|
minCharsPerFrame: 1,
|
|
10
|
-
backlogDivisor:
|
|
5
|
+
backlogDivisor: 24
|
|
11
6
|
};
|
|
12
|
-
var REPORT_INTERVAL_MS = 1000;
|
|
13
|
-
function isRevealDebugEnabled() {
|
|
14
|
-
return typeof window !== 'undefined' && Boolean(window.__MAIA_STREAM_REVEAL_DEBUG__);
|
|
15
|
-
}
|
|
16
|
-
function isRevealDebugVerbose() {
|
|
17
|
-
return typeof window !== 'undefined' && Boolean(window.__MAIA_STREAM_REVEAL_DEBUG_VERBOSE__);
|
|
18
|
-
}
|
|
19
|
-
function emptyPeriod() {
|
|
20
|
-
return {
|
|
21
|
-
tickCount: 0,
|
|
22
|
-
charsRevealed: 0,
|
|
23
|
-
stepSum: 0,
|
|
24
|
-
maxBacklog: 0,
|
|
25
|
-
setTargetCount: 0,
|
|
26
|
-
sseCharsAppended: 0,
|
|
27
|
-
firstTickAt: 0,
|
|
28
|
-
lastTickAt: 0,
|
|
29
|
-
sumInterTickMs: 0,
|
|
30
|
-
interTickSamples: 0
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
7
|
|
|
34
8
|
/**
|
|
35
9
|
* Convierte ráfagas irregulares del SSE en actualizaciones de UI más frecuentes y
|
|
@@ -44,155 +18,40 @@ export function createStreamRevealSmooth(onReveal) {
|
|
|
44
18
|
var target = '';
|
|
45
19
|
var display = '';
|
|
46
20
|
var raf = null;
|
|
47
|
-
var sessionId = 0;
|
|
48
|
-
var lastReportAt = 0;
|
|
49
|
-
var period = emptyPeriod();
|
|
50
|
-
var prevTargetLen = 0;
|
|
51
|
-
var lastTickPerf = 0;
|
|
52
|
-
var logConstantsOnce = function logConstantsOnce() {
|
|
53
|
-
if (!isRevealDebugEnabled()) return;
|
|
54
|
-
// eslint-disable-next-line no-console
|
|
55
|
-
console.log('[MAIA stream reveal] constantes activas', {
|
|
56
|
-
sessionId: sessionId,
|
|
57
|
-
maxCharsPerFrame: maxPF,
|
|
58
|
-
minCharsPerFrame: minPF,
|
|
59
|
-
backlogDivisor: divisor,
|
|
60
|
-
defaults: _objectSpread({}, STREAM_REVEAL_DEFAULTS),
|
|
61
|
-
hint: 'Ajustar en STREAM_REVEAL_DEFAULTS o vía options si staging/prod se siente lento o entrecortado'
|
|
62
|
-
});
|
|
63
|
-
};
|
|
64
|
-
var flushPeriodReport = function flushPeriodReport(reason) {
|
|
65
|
-
if (!isRevealDebugEnabled() || period.tickCount === 0 && period.setTargetCount === 0) {
|
|
66
|
-
period = emptyPeriod();
|
|
67
|
-
lastReportAt = performance.now();
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
var now = performance.now();
|
|
71
|
-
var elapsed = Math.max(1, now - lastReportAt);
|
|
72
|
-
var wallMs = period.lastTickAt > 0 && period.firstTickAt > 0 ? period.lastTickAt - period.firstTickAt : 0;
|
|
73
|
-
var avgInterTickMs = period.interTickSamples > 0 ? period.sumInterTickMs / period.interTickSamples : null;
|
|
74
|
-
var revealCharsPerSec = elapsed > 0 ? period.charsRevealed / elapsed * 1000 : 0;
|
|
75
|
-
var avgStep = period.tickCount > 0 ? period.stepSum / period.tickCount : 0;
|
|
76
|
-
var avgSseChunk = period.setTargetCount > 0 ? period.sseCharsAppended / period.setTargetCount : 0;
|
|
77
|
-
|
|
78
|
-
// eslint-disable-next-line no-console
|
|
79
|
-
console.log("[MAIA stream reveal] ".concat(reason), {
|
|
80
|
-
sessionId: sessionId,
|
|
81
|
-
windowMs: Math.round(elapsed),
|
|
82
|
-
ticks: period.tickCount,
|
|
83
|
-
charsRevealedInWindow: period.charsRevealed,
|
|
84
|
-
revealCharsPerSec: Math.round(revealCharsPerSec * 10) / 10,
|
|
85
|
-
maxBacklogInWindow: period.maxBacklog,
|
|
86
|
-
avgStep: Math.round(avgStep * 10) / 10,
|
|
87
|
-
setTargetCalls: period.setTargetCount,
|
|
88
|
-
sseCharsAppendedInWindow: period.sseCharsAppended,
|
|
89
|
-
avgSseDeltaCharsPerSetTarget: Math.round(avgSseChunk * 10) / 10,
|
|
90
|
-
avgMsBetweenRevealTicks: avgInterTickMs != null ? Math.round(avgInterTickMs * 10) / 10 : null,
|
|
91
|
-
revealWallMs: wallMs > 0 ? Math.round(wallMs) : null,
|
|
92
|
-
currentLagChars: target.length - display.length
|
|
93
|
-
});
|
|
94
|
-
period = emptyPeriod();
|
|
95
|
-
lastReportAt = now;
|
|
96
|
-
};
|
|
97
21
|
var _tick = function tick() {
|
|
98
22
|
raf = null;
|
|
99
23
|
if (display.length >= target.length) {
|
|
100
24
|
return;
|
|
101
25
|
}
|
|
102
|
-
var now = performance.now();
|
|
103
26
|
var backlog = target.length - display.length;
|
|
104
27
|
var step = Math.min(maxPF, Math.max(minPF, Math.ceil(backlog / divisor)));
|
|
105
|
-
if (isRevealDebugEnabled()) {
|
|
106
|
-
if (period.tickCount === 0) {
|
|
107
|
-
period.firstTickAt = now;
|
|
108
|
-
} else if (lastTickPerf > 0) {
|
|
109
|
-
period.sumInterTickMs += now - lastTickPerf;
|
|
110
|
-
period.interTickSamples += 1;
|
|
111
|
-
}
|
|
112
|
-
lastTickPerf = now;
|
|
113
|
-
period.tickCount += 1;
|
|
114
|
-
period.charsRevealed += step;
|
|
115
|
-
period.stepSum += step;
|
|
116
|
-
period.maxBacklog = Math.max(period.maxBacklog, backlog);
|
|
117
|
-
period.lastTickAt = now;
|
|
118
|
-
if (isRevealDebugVerbose()) {
|
|
119
|
-
// eslint-disable-next-line no-console
|
|
120
|
-
console.log('[MAIA stream reveal] tick', {
|
|
121
|
-
sessionId: sessionId,
|
|
122
|
-
backlog: backlog,
|
|
123
|
-
step: step,
|
|
124
|
-
displayLen: display.length + step,
|
|
125
|
-
targetLen: target.length
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
if (lastReportAt === 0) lastReportAt = now;
|
|
129
|
-
if (now - lastReportAt >= REPORT_INTERVAL_MS) {
|
|
130
|
-
flushPeriodReport('periódico (~1s)');
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
28
|
display = target.slice(0, display.length + step);
|
|
134
29
|
onReveal(display);
|
|
135
30
|
if (display.length < target.length) {
|
|
136
31
|
raf = requestAnimationFrame(_tick);
|
|
137
|
-
} else if (isRevealDebugEnabled()) {
|
|
138
|
-
lastTickPerf = 0;
|
|
139
|
-
flushPeriodReport('alcanzó target (catch-up)');
|
|
140
32
|
}
|
|
141
33
|
};
|
|
142
34
|
return {
|
|
143
35
|
/** Sustituye el texto objetivo (contenido acumulado del servidor). */setTarget: function setTarget(nextFull) {
|
|
144
|
-
if (isRevealDebugEnabled()) {
|
|
145
|
-
var delta = nextFull.length - prevTargetLen;
|
|
146
|
-
prevTargetLen = nextFull.length;
|
|
147
|
-
period.setTargetCount += 1;
|
|
148
|
-
if (delta > 0) period.sseCharsAppended += delta;
|
|
149
|
-
var now = performance.now();
|
|
150
|
-
if (lastReportAt === 0) lastReportAt = now;
|
|
151
|
-
if (now - lastReportAt >= REPORT_INTERVAL_MS) {
|
|
152
|
-
flushPeriodReport('periódico (~1s, desde setTarget)');
|
|
153
|
-
}
|
|
154
|
-
if (isRevealDebugVerbose()) {
|
|
155
|
-
// eslint-disable-next-line no-console
|
|
156
|
-
console.log('[MAIA stream reveal] setTarget (SSE acumulado)', {
|
|
157
|
-
sessionId: sessionId,
|
|
158
|
-
targetLen: nextFull.length,
|
|
159
|
-
deltaCharsFromPrevTarget: delta,
|
|
160
|
-
displayLen: display.length,
|
|
161
|
-
lagCharsBefore: nextFull.length - display.length
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
36
|
target = nextFull;
|
|
166
37
|
if (display.length < target.length && raf == null) {
|
|
167
38
|
raf = requestAnimationFrame(_tick);
|
|
168
39
|
}
|
|
169
40
|
},
|
|
170
41
|
cancel: function cancel() {
|
|
171
|
-
if (isRevealDebugEnabled() && (period.tickCount > 0 || period.setTargetCount > 0)) {
|
|
172
|
-
flushPeriodReport('cancel');
|
|
173
|
-
}
|
|
174
42
|
if (raf != null) {
|
|
175
43
|
cancelAnimationFrame(raf);
|
|
176
44
|
raf = null;
|
|
177
45
|
}
|
|
178
46
|
},
|
|
179
47
|
/** Limpia estado para un nuevo stream. */reset: function reset() {
|
|
180
|
-
if (isRevealDebugEnabled() && (period.tickCount > 0 || period.setTargetCount > 0)) {
|
|
181
|
-
flushPeriodReport('reset (fin de sesión anterior)');
|
|
182
|
-
}
|
|
183
48
|
if (raf != null) {
|
|
184
49
|
cancelAnimationFrame(raf);
|
|
185
50
|
raf = null;
|
|
186
51
|
}
|
|
187
52
|
target = '';
|
|
188
53
|
display = '';
|
|
189
|
-
sessionId += 1;
|
|
190
|
-
prevTargetLen = 0;
|
|
191
|
-
lastTickPerf = 0;
|
|
192
|
-
period = emptyPeriod();
|
|
193
|
-
lastReportAt = 0;
|
|
194
|
-
logConstantsOnce();
|
|
195
54
|
}
|
|
196
55
|
};
|
|
197
56
|
}
|
|
198
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVFJFQU1fUkVWRUFMX0RFRkFVTFRTIiwibWF4Q2hhcnNQZXJGcmFtZSIsIm1pbkNoYXJzUGVyRnJhbWUiLCJiYWNrbG9nRGl2aXNvciIsIlJFUE9SVF9JTlRFUlZBTF9NUyIsImlzUmV2ZWFsRGVidWdFbmFibGVkIiwid2luZG93IiwiQm9vbGVhbiIsIl9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX18iLCJpc1JldmVhbERlYnVnVmVyYm9zZSIsIl9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX1ZFUkJPU0VfXyIsImVtcHR5UGVyaW9kIiwidGlja0NvdW50IiwiY2hhcnNSZXZlYWxlZCIsInN0ZXBTdW0iLCJtYXhCYWNrbG9nIiwic2V0VGFyZ2V0Q291bnQiLCJzc2VDaGFyc0FwcGVuZGVkIiwiZmlyc3RUaWNrQXQiLCJsYXN0VGlja0F0Iiwic3VtSW50ZXJUaWNrTXMiLCJpbnRlclRpY2tTYW1wbGVzIiwiY3JlYXRlU3RyZWFtUmV2ZWFsU21vb3RoIiwib25SZXZlYWwiLCJfb3B0aW9ucyRtYXhDaGFyc1BlckYiLCJfb3B0aW9ucyRtaW5DaGFyc1BlckYiLCJfb3B0aW9ucyRiYWNrbG9nRGl2aXMiLCJvcHRpb25zIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwibWF4UEYiLCJtaW5QRiIsImRpdmlzb3IiLCJ0YXJnZXQiLCJkaXNwbGF5IiwicmFmIiwic2Vzc2lvbklkIiwibGFzdFJlcG9ydEF0IiwicGVyaW9kIiwicHJldlRhcmdldExlbiIsImxhc3RUaWNrUGVyZiIsImxvZ0NvbnN0YW50c09uY2UiLCJjb25zb2xlIiwibG9nIiwiZGVmYXVsdHMiLCJfb2JqZWN0U3ByZWFkIiwiaGludCIsImZsdXNoUGVyaW9kUmVwb3J0IiwicmVhc29uIiwicGVyZm9ybWFuY2UiLCJub3ciLCJlbGFwc2VkIiwiTWF0aCIsIm1heCIsIndhbGxNcyIsImF2Z0ludGVyVGlja01zIiwicmV2ZWFsQ2hhcnNQZXJTZWMiLCJhdmdTdGVwIiwiYXZnU3NlQ2h1bmsiLCJjb25jYXQiLCJ3aW5kb3dNcyIsInJvdW5kIiwidGlja3MiLCJjaGFyc1JldmVhbGVkSW5XaW5kb3ciLCJtYXhCYWNrbG9nSW5XaW5kb3ciLCJzZXRUYXJnZXRDYWxscyIsInNzZUNoYXJzQXBwZW5kZWRJbldpbmRvdyIsImF2Z1NzZURlbHRhQ2hhcnNQZXJTZXRUYXJnZXQiLCJhdmdNc0JldHdlZW5SZXZlYWxUaWNrcyIsInJldmVhbFdhbGxNcyIsImN1cnJlbnRMYWdDaGFycyIsInRpY2siLCJiYWNrbG9nIiwic3RlcCIsIm1pbiIsImNlaWwiLCJkaXNwbGF5TGVuIiwidGFyZ2V0TGVuIiwic2xpY2UiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUYXJnZXQiLCJuZXh0RnVsbCIsImRlbHRhIiwiZGVsdGFDaGFyc0Zyb21QcmV2VGFyZ2V0IiwibGFnQ2hhcnNCZWZvcmUiLCJjYW5jZWwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsInJlc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS9zdHJlYW1SZXZlYWxTbW9vdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgLS0gZmxhZ3MgZ2xvYmFsZXMgd2luZG93Ll9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX18gKi9cbmV4cG9ydCB0eXBlIFN0cmVhbVJldmVhbFNtb290aE9wdGlvbnMgPSB7XG4gIC8qKiBUb3BlIGRlIGNhcmFjdGVyZXMgcmV2ZWxhZG9zIHBvciBmcmFtZSAofjYwZnBzKS4gTcOhcyBiYWpvID0gbcOhcyBzdWF2ZS4gKi9cbiAgbWF4Q2hhcnNQZXJGcmFtZT86IG51bWJlclxuICBtaW5DaGFyc1BlckZyYW1lPzogbnVtYmVyXG4gIC8qKlxuICAgKiBFbnRyZSBtw6FzIGFsdG8sIG3DoXMgcGVxdWXDsW9zIGxvcyBwYXNvcyBjdWFuZG8gaGF5IG11Y2hvIHRleHRvIHBlbmRpZW50ZVxuICAgKiAobcOhcyBmbHVpZGV6OyBtw6FzIGZyYW1lcyBoYXN0YSBhbGNhbnphciBlbCBvYmpldGl2byBzaSBlbCBzdHJlYW0gZXMgbXV5IGxhcmdvKS5cbiAgICovXG4gIGJhY2tsb2dEaXZpc29yPzogbnVtYmVyXG59XG5cbi8qKiBWYWxvcmVzIHBvciBkZWZlY3RvIGRlbCByZXZlYWw6IHR5cGluZyBzdWF2ZSBzaW4gcXVlZGFyc2UgZGVtYXNpYWRvIGF0csOhcyBkZWwgU1NFLiAqL1xuZXhwb3J0IGNvbnN0IFNUUkVBTV9SRVZFQUxfREVGQVVMVFMgPSB7XG4gIG1heENoYXJzUGVyRnJhbWU6IDgsXG4gIG1pbkNoYXJzUGVyRnJhbWU6IDEsXG4gIGJhY2tsb2dEaXZpc29yOiAyOCxcbn0gYXMgY29uc3Qgc2F0aXNmaWVzIFN0cmVhbVJldmVhbFNtb290aE9wdGlvbnNcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAvKipcbiAgICAgKiBFbiBjb25zb2xhOiBgd2luZG93Ll9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX18gPSB0cnVlYFxuICAgICAqIExvZ3MgZGUgdmVsb2NpZGFkIGRlIHJldmVhbCwgYmFja2xvZyB2cyBTU0UgeSBjb25zdGFudGVzIGFjdGl2YXMgKGxvY2FsL3N0YWdpbmcvcHJvZCkuXG4gICAgICovXG4gICAgX19NQUlBX1NUUkVBTV9SRVZFQUxfREVCVUdfXz86IGJvb2xlYW5cbiAgICAvKiogU2kgYWRlbcOhcyBlc3TDoSBlbiB0cnVlLCB1biBsb2cgcG9yIGNhZGEgZnJhbWUgZGUgcmV2ZWFsIChtdXkgcnVpZG9zbykuICovXG4gICAgX19NQUlBX1NUUkVBTV9SRVZFQUxfREVCVUdfVkVSQk9TRV9fPzogYm9vbGVhblxuICB9XG59XG5cbmNvbnN0IFJFUE9SVF9JTlRFUlZBTF9NUyA9IDEwMDBcblxuZnVuY3Rpb24gaXNSZXZlYWxEZWJ1Z0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiBCb29sZWFuKHdpbmRvdy5fX01BSUFfU1RSRUFNX1JFVkVBTF9ERUJVR19fKVxufVxuXG5mdW5jdGlvbiBpc1JldmVhbERlYnVnVmVyYm9zZSgpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIEJvb2xlYW4od2luZG93Ll9fTUFJQV9TVFJFQU1fUkVWRUFMX0RFQlVHX1ZFUkJPU0VfXylcbn1cblxudHlwZSBQZXJpb2RTdGF0cyA9IHtcbiAgdGlja0NvdW50OiBudW1iZXJcbiAgY2hhcnNSZXZlYWxlZDogbnVtYmVyXG4gIHN0ZXBTdW06IG51bWJlclxuICBtYXhCYWNrbG9nOiBudW1iZXJcbiAgc2V0VGFyZ2V0Q291bnQ6IG51bWJlclxuICBzc2VDaGFyc0FwcGVuZGVkOiBudW1iZXJcbiAgZmlyc3RUaWNrQXQ6IG51bWJlclxuICBsYXN0VGlja0F0OiBudW1iZXJcbiAgc3VtSW50ZXJUaWNrTXM6IG51bWJlclxuICBpbnRlclRpY2tTYW1wbGVzOiBudW1iZXJcbn1cblxuZnVuY3Rpb24gZW1wdHlQZXJpb2QoKTogUGVyaW9kU3RhdHMge1xuICByZXR1cm4ge1xuICAgIHRpY2tDb3VudDogMCxcbiAgICBjaGFyc1JldmVhbGVkOiAwLFxuICAgIHN0ZXBTdW06IDAsXG4gICAgbWF4QmFja2xvZzogMCxcbiAgICBzZXRUYXJnZXRDb3VudDogMCxcbiAgICBzc2VDaGFyc0FwcGVuZGVkOiAwLFxuICAgIGZpcnN0VGlja0F0OiAwLFxuICAgIGxhc3RUaWNrQXQ6IDAsXG4gICAgc3VtSW50ZXJUaWNrTXM6IDAsXG4gICAgaW50ZXJUaWNrU2FtcGxlczogMCxcbiAgfVxufVxuXG4vKipcbiAqIENvbnZpZXJ0ZSByw6FmYWdhcyBpcnJlZ3VsYXJlcyBkZWwgU1NFIGVuIGFjdHVhbGl6YWNpb25lcyBkZSBVSSBtw6FzIGZyZWN1ZW50ZXMgeVxuICogYWNvdGFkYXMgcG9yIGZyYW1lIChlc3RpbG8g4oCccGVyc2lndWUgYWwgb2JqZXRpdm/igJ0pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RyZWFtUmV2ZWFsU21vb3RoKFxuICBvblJldmVhbDogKGRpc3BsYXlUZXh0OiBzdHJpbmcpID0+IHZvaWQsXG4gIG9wdGlvbnM6IFN0cmVhbVJldmVhbFNtb290aE9wdGlvbnMgPSB7fVxuKSB7XG4gIGNvbnN0IG1heFBGID0gb3B0aW9ucy5tYXhDaGFyc1BlckZyYW1lID8/IFNUUkVBTV9SRVZFQUxfREVGQVVMVFMubWF4Q2hhcnNQZXJGcmFtZVxuICBjb25zdCBtaW5QRiA9IG9wdGlvbnMubWluQ2hhcnNQZXJGcmFtZSA/PyBTVFJFQU1fUkVWRUFMX0RFRkFVTFRTLm1pbkNoYXJzUGVyRnJhbWVcbiAgY29uc3QgZGl2aXNvciA9IG9wdGlvbnMuYmFja2xvZ0Rpdmlzb3IgPz8gU1RSRUFNX1JFVkVBTF9ERUZBVUxUUy5iYWNrbG9nRGl2aXNvclxuXG4gIGxldCB0YXJnZXQgPSAnJ1xuICBsZXQgZGlzcGxheSA9ICcnXG4gIGxldCByYWY6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgbGV0IHNlc3Npb25JZCA9IDBcbiAgbGV0IGxhc3RSZXBvcnRBdCA9IDBcbiAgbGV0IHBlcmlvZCA9IGVtcHR5UGVyaW9kKClcbiAgbGV0IHByZXZUYXJnZXRMZW4gPSAwXG4gIGxldCBsYXN0VGlja1BlcmYgPSAwXG5cbiAgY29uc3QgbG9nQ29uc3RhbnRzT25jZSA9ICgpID0+IHtcbiAgICBpZiAoIWlzUmV2ZWFsRGVidWdFbmFibGVkKCkpIHJldHVyblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coJ1tNQUlBIHN0cmVhbSByZXZlYWxdIGNvbnN0YW50ZXMgYWN0aXZhcycsIHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIG1heENoYXJzUGVyRnJhbWU6IG1heFBGLFxuICAgICAgbWluQ2hhcnNQZXJGcmFtZTogbWluUEYsXG4gICAgICBiYWNrbG9nRGl2aXNvcjogZGl2aXNvcixcbiAgICAgIGRlZmF1bHRzOiB7IC4uLlNUUkVBTV9SRVZFQUxfREVGQVVMVFMgfSxcbiAgICAgIGhpbnQ6ICdBanVzdGFyIGVuIFNUUkVBTV9SRVZFQUxfREVGQVVMVFMgbyB2w61hIG9wdGlvbnMgc2kgc3RhZ2luZy9wcm9kIHNlIHNpZW50ZSBsZW50byBvIGVudHJlY29ydGFkbycsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGZsdXNoUGVyaW9kUmVwb3J0ID0gKHJlYXNvbjogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFpc1JldmVhbERlYnVnRW5hYmxlZCgpIHx8IChwZXJpb2QudGlja0NvdW50ID09PSAwICYmIHBlcmlvZC5zZXRUYXJnZXRDb3VudCA9PT0gMCkpIHtcbiAgICAgIHBlcmlvZCA9IGVtcHR5UGVyaW9kKClcbiAgICAgIGxhc3RSZXBvcnRBdCA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgbm93ID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICBjb25zdCBlbGFwc2VkID0gTWF0aC5tYXgoMSwgbm93IC0gbGFzdFJlcG9ydEF0KVxuICAgIGNvbnN0IHdhbGxNcyA9IHBlcmlvZC5sYXN0VGlja0F0ID4gMCAmJiBwZXJpb2QuZmlyc3RUaWNrQXQgPiAwID8gcGVyaW9kLmxhc3RUaWNrQXQgLSBwZXJpb2QuZmlyc3RUaWNrQXQgOiAwXG4gICAgY29uc3QgYXZnSW50ZXJUaWNrTXMgPSBwZXJpb2QuaW50ZXJUaWNrU2FtcGxlcyA+IDAgPyBwZXJpb2Quc3VtSW50ZXJUaWNrTXMgLyBwZXJpb2QuaW50ZXJUaWNrU2FtcGxlcyA6IG51bGxcbiAgICBjb25zdCByZXZlYWxDaGFyc1BlclNlYyA9IGVsYXBzZWQgPiAwID8gKHBlcmlvZC5jaGFyc1JldmVhbGVkIC8gZWxhcHNlZCkgKiAxMDAwIDogMFxuICAgIGNvbnN0IGF2Z1N0ZXAgPSBwZXJpb2QudGlja0NvdW50ID4gMCA/IHBlcmlvZC5zdGVwU3VtIC8gcGVyaW9kLnRpY2tDb3VudCA6IDBcbiAgICBjb25zdCBhdmdTc2VDaHVuayA9IHBlcmlvZC5zZXRUYXJnZXRDb3VudCA+IDAgPyBwZXJpb2Quc3NlQ2hhcnNBcHBlbmRlZCAvIHBlcmlvZC5zZXRUYXJnZXRDb3VudCA6IDBcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coYFtNQUlBIHN0cmVhbSByZXZlYWxdICR7cmVhc29ufWAsIHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHdpbmRvd01zOiBNYXRoLnJvdW5kKGVsYXBzZWQpLFxuICAgICAgdGlja3M6IHBlcmlvZC50aWNrQ291bnQsXG4gICAgICBjaGFyc1JldmVhbGVkSW5XaW5kb3c6IHBlcmlvZC5jaGFyc1JldmVhbGVkLFxuICAgICAgcmV2ZWFsQ2hhcnNQZXJTZWM6IE1hdGgucm91bmQocmV2ZWFsQ2hhcnNQZXJTZWMgKiAxMCkgLyAxMCxcbiAgICAgIG1heEJhY2tsb2dJbldpbmRvdzogcGVyaW9kLm1heEJhY2tsb2csXG4gICAgICBhdmdTdGVwOiBNYXRoLnJvdW5kKGF2Z1N0ZXAgKiAxMCkgLyAxMCxcbiAgICAgIHNldFRhcmdldENhbGxzOiBwZXJpb2Quc2V0VGFyZ2V0Q291bnQsXG4gICAgICBzc2VDaGFyc0FwcGVuZGVkSW5XaW5kb3c6IHBlcmlvZC5zc2VDaGFyc0FwcGVuZGVkLFxuICAgICAgYXZnU3NlRGVsdGFDaGFyc1BlclNldFRhcmdldDogTWF0aC5yb3VuZChhdmdTc2VDaHVuayAqIDEwKSAvIDEwLFxuICAgICAgYXZnTXNCZXR3ZWVuUmV2ZWFsVGlja3M6IGF2Z0ludGVyVGlja01zICE9IG51bGwgPyBNYXRoLnJvdW5kKGF2Z0ludGVyVGlja01zICogMTApIC8gMTAgOiBudWxsLFxuICAgICAgcmV2ZWFsV2FsbE1zOiB3YWxsTXMgPiAwID8gTWF0aC5yb3VuZCh3YWxsTXMpIDogbnVsbCxcbiAgICAgIGN1cnJlbnRMYWdDaGFyczogdGFyZ2V0Lmxlbmd0aCAtIGRpc3BsYXkubGVuZ3RoLFxuICAgIH0pXG5cbiAgICBwZXJpb2QgPSBlbXB0eVBlcmlvZCgpXG4gICAgbGFzdFJlcG9ydEF0ID0gbm93XG4gIH1cblxuICBjb25zdCB0aWNrID0gKCkgPT4ge1xuICAgIHJhZiA9IG51bGxcbiAgICBpZiAoZGlzcGxheS5sZW5ndGggPj0gdGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgY29uc3QgYmFja2xvZyA9IHRhcmdldC5sZW5ndGggLSBkaXNwbGF5Lmxlbmd0aFxuICAgIGNvbnN0IHN0ZXAgPSBNYXRoLm1pbihtYXhQRiwgTWF0aC5tYXgobWluUEYsIE1hdGguY2VpbChiYWNrbG9nIC8gZGl2aXNvcikpKVxuXG4gICAgaWYgKGlzUmV2ZWFsRGVidWdFbmFibGVkKCkpIHtcbiAgICAgIGlmIChwZXJpb2QudGlja0NvdW50ID09PSAwKSB7XG4gICAgICAgIHBlcmlvZC5maXJzdFRpY2tBdCA9IG5vd1xuICAgICAgfSBlbHNlIGlmIChsYXN0VGlja1BlcmYgPiAwKSB7XG4gICAgICAgIHBlcmlvZC5zdW1JbnRlclRpY2tNcyArPSBub3cgLSBsYXN0VGlja1BlcmZcbiAgICAgICAgcGVyaW9kLmludGVyVGlja1NhbXBsZXMgKz0gMVxuICAgICAgfVxuICAgICAgbGFzdFRpY2tQZXJmID0gbm93XG4gICAgICBwZXJpb2QudGlja0NvdW50ICs9IDFcbiAgICAgIHBlcmlvZC5jaGFyc1JldmVhbGVkICs9IHN0ZXBcbiAgICAgIHBlcmlvZC5zdGVwU3VtICs9IHN0ZXBcbiAgICAgIHBlcmlvZC5tYXhCYWNrbG9nID0gTWF0aC5tYXgocGVyaW9kLm1heEJhY2tsb2csIGJhY2tsb2cpXG4gICAgICBwZXJpb2QubGFzdFRpY2tBdCA9IG5vd1xuXG4gICAgICBpZiAoaXNSZXZlYWxEZWJ1Z1ZlcmJvc2UoKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmxvZygnW01BSUEgc3RyZWFtIHJldmVhbF0gdGljaycsIHtcbiAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgYmFja2xvZyxcbiAgICAgICAgICBzdGVwLFxuICAgICAgICAgIGRpc3BsYXlMZW46IGRpc3BsYXkubGVuZ3RoICsgc3RlcCxcbiAgICAgICAgICB0YXJnZXRMZW46IHRhcmdldC5sZW5ndGgsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChsYXN0UmVwb3J0QXQgPT09IDApIGxhc3RSZXBvcnRBdCA9IG5vd1xuICAgICAgaWYgKG5vdyAtIGxhc3RSZXBvcnRBdCA+PSBSRVBPUlRfSU5URVJWQUxfTVMpIHtcbiAgICAgICAgZmx1c2hQZXJpb2RSZXBvcnQoJ3BlcmnDs2RpY28gKH4xcyknKVxuICAgICAgfVxuICAgIH1cblxuICAgIGRpc3BsYXkgPSB0YXJnZXQuc2xpY2UoMCwgZGlzcGxheS5sZW5ndGggKyBzdGVwKVxuICAgIG9uUmV2ZWFsKGRpc3BsYXkpXG4gICAgaWYgKGRpc3BsYXkubGVuZ3RoIDwgdGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG4gICAgfSBlbHNlIGlmIChpc1JldmVhbERlYnVnRW5hYmxlZCgpKSB7XG4gICAgICBsYXN0VGlja1BlcmYgPSAwXG4gICAgICBmbHVzaFBlcmlvZFJlcG9ydCgnYWxjYW56w7MgdGFyZ2V0IChjYXRjaC11cCknKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLyoqIFN1c3RpdHV5ZSBlbCB0ZXh0byBvYmpldGl2byAoY29udGVuaWRvIGFjdW11bGFkbyBkZWwgc2Vydmlkb3IpLiAqL1xuICAgIHNldFRhcmdldChuZXh0RnVsbDogc3RyaW5nKSB7XG4gICAgICBpZiAoaXNSZXZlYWxEZWJ1Z0VuYWJsZWQoKSkge1xuICAgICAgICBjb25zdCBkZWx0YSA9IG5leHRGdWxsLmxlbmd0aCAtIHByZXZUYXJnZXRMZW5cbiAgICAgICAgcHJldlRhcmdldExlbiA9IG5leHRGdWxsLmxlbmd0aFxuICAgICAgICBwZXJpb2Quc2V0VGFyZ2V0Q291bnQgKz0gMVxuICAgICAgICBpZiAoZGVsdGEgPiAwKSBwZXJpb2Quc3NlQ2hhcnNBcHBlbmRlZCArPSBkZWx0YVxuXG4gICAgICAgIGNvbnN0IG5vdyA9IHBlcmZvcm1hbmNlLm5vdygpXG4gICAgICAgIGlmIChsYXN0UmVwb3J0QXQgPT09IDApIGxhc3RSZXBvcnRBdCA9IG5vd1xuICAgICAgICBpZiAobm93IC0gbGFzdFJlcG9ydEF0ID49IFJFUE9SVF9JTlRFUlZBTF9NUykge1xuICAgICAgICAgIGZsdXNoUGVyaW9kUmVwb3J0KCdwZXJpw7NkaWNvICh+MXMsIGRlc2RlIHNldFRhcmdldCknKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzUmV2ZWFsRGVidWdWZXJib3NlKCkpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUubG9nKCdbTUFJQSBzdHJlYW0gcmV2ZWFsXSBzZXRUYXJnZXQgKFNTRSBhY3VtdWxhZG8pJywge1xuICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgdGFyZ2V0TGVuOiBuZXh0RnVsbC5sZW5ndGgsXG4gICAgICAgICAgICBkZWx0YUNoYXJzRnJvbVByZXZUYXJnZXQ6IGRlbHRhLFxuICAgICAgICAgICAgZGlzcGxheUxlbjogZGlzcGxheS5sZW5ndGgsXG4gICAgICAgICAgICBsYWdDaGFyc0JlZm9yZTogbmV4dEZ1bGwubGVuZ3RoIC0gZGlzcGxheS5sZW5ndGgsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0YXJnZXQgPSBuZXh0RnVsbFxuICAgICAgaWYgKGRpc3BsYXkubGVuZ3RoIDwgdGFyZ2V0Lmxlbmd0aCAmJiByYWYgPT0gbnVsbCkge1xuICAgICAgICByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgaWYgKGlzUmV2ZWFsRGVidWdFbmFibGVkKCkgJiYgKHBlcmlvZC50aWNrQ291bnQgPiAwIHx8IHBlcmlvZC5zZXRUYXJnZXRDb3VudCA+IDApKSB7XG4gICAgICAgIGZsdXNoUGVyaW9kUmVwb3J0KCdjYW5jZWwnKVxuICAgICAgfVxuICAgICAgaWYgKHJhZiAhPSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZilcbiAgICAgICAgcmFmID0gbnVsbFxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKiogTGltcGlhIGVzdGFkbyBwYXJhIHVuIG51ZXZvIHN0cmVhbS4gKi9cbiAgICByZXNldCgpIHtcbiAgICAgIGlmIChpc1JldmVhbERlYnVnRW5hYmxlZCgpICYmIChwZXJpb2QudGlja0NvdW50ID4gMCB8fCBwZXJpb2Quc2V0VGFyZ2V0Q291bnQgPiAwKSkge1xuICAgICAgICBmbHVzaFBlcmlvZFJlcG9ydCgncmVzZXQgKGZpbiBkZSBzZXNpw7NuIGFudGVyaW9yKScpXG4gICAgICB9XG4gICAgICBpZiAocmFmICE9IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKVxuICAgICAgICByYWYgPSBudWxsXG4gICAgICB9XG4gICAgICB0YXJnZXQgPSAnJ1xuICAgICAgZGlzcGxheSA9ICcnXG4gICAgICBzZXNzaW9uSWQgKz0gMVxuICAgICAgcHJldlRhcmdldExlbiA9IDBcbiAgICAgIGxhc3RUaWNrUGVyZiA9IDBcbiAgICAgIHBlcmlvZCA9IGVtcHR5UGVyaW9kKClcbiAgICAgIGxhc3RSZXBvcnRBdCA9IDBcbiAgICAgIGxvZ0NvbnN0YW50c09uY2UoKVxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgU3RyZWFtUmV2ZWFsU21vb3RoID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlU3RyZWFtUmV2ZWFsU21vb3RoPlxuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQTs7QUFZQTtBQUNBLE9BQU8sSUFB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
|
|
57
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVFJFQU1fUkVWRUFMX0RFRkFVTFRTIiwibWF4Q2hhcnNQZXJGcmFtZSIsIm1pbkNoYXJzUGVyRnJhbWUiLCJiYWNrbG9nRGl2aXNvciIsImNyZWF0ZVN0cmVhbVJldmVhbFNtb290aCIsIm9uUmV2ZWFsIiwiX29wdGlvbnMkbWF4Q2hhcnNQZXJGIiwiX29wdGlvbnMkbWluQ2hhcnNQZXJGIiwiX29wdGlvbnMkYmFja2xvZ0RpdmlzIiwib3B0aW9ucyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIm1heFBGIiwibWluUEYiLCJkaXZpc29yIiwidGFyZ2V0IiwiZGlzcGxheSIsInJhZiIsInRpY2siLCJiYWNrbG9nIiwic3RlcCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJjZWlsIiwic2xpY2UiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUYXJnZXQiLCJuZXh0RnVsbCIsImNhbmNlbCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwicmVzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlT3JjaGVzdHJhdG9yU3RyZWFtL3N0cmVhbVJldmVhbFNtb290aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTdHJlYW1SZXZlYWxTbW9vdGhPcHRpb25zID0ge1xuICAvKiogVG9wZSBkZSBjYXJhY3RlcmVzIHJldmVsYWRvcyBwb3IgZnJhbWUgKH42MGZwcykuIE3DoXMgYmFqbyA9IG3DoXMgc3VhdmUuICovXG4gIG1heENoYXJzUGVyRnJhbWU/OiBudW1iZXJcbiAgbWluQ2hhcnNQZXJGcmFtZT86IG51bWJlclxuICAvKipcbiAgICogRW50cmUgbcOhcyBhbHRvLCBtw6FzIHBlcXVlw7FvcyBsb3MgcGFzb3MgY3VhbmRvIGhheSBtdWNobyB0ZXh0byBwZW5kaWVudGVcbiAgICogKG3DoXMgZmx1aWRlejsgbcOhcyBmcmFtZXMgaGFzdGEgYWxjYW56YXIgZWwgb2JqZXRpdm8gc2kgZWwgc3RyZWFtIGVzIG11eSBsYXJnbykuXG4gICAqL1xuICBiYWNrbG9nRGl2aXNvcj86IG51bWJlclxufVxuXG50eXBlIFJlc29sdmVkU3RyZWFtUmV2ZWFsRGVmYXVsdHMgPSBSZXF1aXJlZDxTdHJlYW1SZXZlYWxTbW9vdGhPcHRpb25zPlxuXG4vKiogVmFsb3JlcyBwb3IgZGVmZWN0byDDum5pY29zIHBhcmEgdG9kb3MgbG9zIGFtYmllbnRlcy4gKi9cbmV4cG9ydCBjb25zdCBTVFJFQU1fUkVWRUFMX0RFRkFVTFRTOiBSZXNvbHZlZFN0cmVhbVJldmVhbERlZmF1bHRzID0ge1xuICBtYXhDaGFyc1BlckZyYW1lOiAxMCxcbiAgbWluQ2hhcnNQZXJGcmFtZTogMSxcbiAgYmFja2xvZ0Rpdmlzb3I6IDI0LFxufVxuXG4vKipcbiAqIENvbnZpZXJ0ZSByw6FmYWdhcyBpcnJlZ3VsYXJlcyBkZWwgU1NFIGVuIGFjdHVhbGl6YWNpb25lcyBkZSBVSSBtw6FzIGZyZWN1ZW50ZXMgeVxuICogYWNvdGFkYXMgcG9yIGZyYW1lIChlc3RpbG8g4oCccGVyc2lndWUgYWwgb2JqZXRpdm/igJ0pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RyZWFtUmV2ZWFsU21vb3RoKFxuICBvblJldmVhbDogKGRpc3BsYXlUZXh0OiBzdHJpbmcpID0+IHZvaWQsXG4gIG9wdGlvbnM6IFN0cmVhbVJldmVhbFNtb290aE9wdGlvbnMgPSB7fVxuKSB7XG4gIGNvbnN0IG1heFBGID0gb3B0aW9ucy5tYXhDaGFyc1BlckZyYW1lID8/IFNUUkVBTV9SRVZFQUxfREVGQVVMVFMubWF4Q2hhcnNQZXJGcmFtZVxuICBjb25zdCBtaW5QRiA9IG9wdGlvbnMubWluQ2hhcnNQZXJGcmFtZSA/PyBTVFJFQU1fUkVWRUFMX0RFRkFVTFRTLm1pbkNoYXJzUGVyRnJhbWVcbiAgY29uc3QgZGl2aXNvciA9IG9wdGlvbnMuYmFja2xvZ0Rpdmlzb3IgPz8gU1RSRUFNX1JFVkVBTF9ERUZBVUxUUy5iYWNrbG9nRGl2aXNvclxuXG4gIGxldCB0YXJnZXQgPSAnJ1xuICBsZXQgZGlzcGxheSA9ICcnXG4gIGxldCByYWY6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgY29uc3QgdGljayA9ICgpID0+IHtcbiAgICByYWYgPSBudWxsXG4gICAgaWYgKGRpc3BsYXkubGVuZ3RoID49IHRhcmdldC5sZW5ndGgpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBiYWNrbG9nID0gdGFyZ2V0Lmxlbmd0aCAtIGRpc3BsYXkubGVuZ3RoXG4gICAgY29uc3Qgc3RlcCA9IE1hdGgubWluKG1heFBGLCBNYXRoLm1heChtaW5QRiwgTWF0aC5jZWlsKGJhY2tsb2cgLyBkaXZpc29yKSkpXG5cbiAgICBkaXNwbGF5ID0gdGFyZ2V0LnNsaWNlKDAsIGRpc3BsYXkubGVuZ3RoICsgc3RlcClcbiAgICBvblJldmVhbChkaXNwbGF5KVxuICAgIGlmIChkaXNwbGF5Lmxlbmd0aCA8IHRhcmdldC5sZW5ndGgpIHtcbiAgICAgIHJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLyoqIFN1c3RpdHV5ZSBlbCB0ZXh0byBvYmpldGl2byAoY29udGVuaWRvIGFjdW11bGFkbyBkZWwgc2Vydmlkb3IpLiAqL1xuICAgIHNldFRhcmdldChuZXh0RnVsbDogc3RyaW5nKSB7XG4gICAgICB0YXJnZXQgPSBuZXh0RnVsbFxuICAgICAgaWYgKGRpc3BsYXkubGVuZ3RoIDwgdGFyZ2V0Lmxlbmd0aCAmJiByYWYgPT0gbnVsbCkge1xuICAgICAgICByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgY2FuY2VsKCkge1xuICAgICAgaWYgKHJhZiAhPSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZilcbiAgICAgICAgcmFmID0gbnVsbFxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKiogTGltcGlhIGVzdGFkbyBwYXJhIHVuIG51ZXZvIHN0cmVhbS4gKi9cbiAgICByZXNldCgpIHtcbiAgICAgIGlmIChyYWYgIT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpXG4gICAgICAgIHJhZiA9IG51bGxcbiAgICAgIH1cbiAgICAgIHRhcmdldCA9ICcnXG4gICAgICBkaXNwbGF5ID0gJydcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFN0cmVhbVJldmVhbFNtb290aCA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVN0cmVhbVJldmVhbFNtb290aD5cbiJdLCJtYXBwaW5ncyI6IkFBYUE7QUFDQSxPQUFPLElBQU1BLHNCQUFvRCxHQUFHO0VBQ2xFQyxnQkFBZ0IsRUFBRSxFQUFFO0VBQ3BCQyxnQkFBZ0IsRUFBRSxDQUFDO0VBQ25CQyxjQUFjLEVBQUU7QUFDbEIsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0Msd0JBQXdCQSxDQUN0Q0MsUUFBdUMsRUFFdkM7RUFBQSxJQUFBQyxxQkFBQSxFQUFBQyxxQkFBQSxFQUFBQyxxQkFBQTtFQUFBLElBREFDLE9BQWtDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUV2QyxJQUFNRyxLQUFLLElBQUFQLHFCQUFBLEdBQUdHLE9BQU8sQ0FBQ1IsZ0JBQWdCLGNBQUFLLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUlOLHNCQUFzQixDQUFDQyxnQkFBZ0I7RUFDakYsSUFBTWEsS0FBSyxJQUFBUCxxQkFBQSxHQUFHRSxPQUFPLENBQUNQLGdCQUFnQixjQUFBSyxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJUCxzQkFBc0IsQ0FBQ0UsZ0JBQWdCO0VBQ2pGLElBQU1hLE9BQU8sSUFBQVAscUJBQUEsR0FBR0MsT0FBTyxDQUFDTixjQUFjLGNBQUFLLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUlSLHNCQUFzQixDQUFDRyxjQUFjO0VBRS9FLElBQUlhLE1BQU0sR0FBRyxFQUFFO0VBQ2YsSUFBSUMsT0FBTyxHQUFHLEVBQUU7RUFDaEIsSUFBSUMsR0FBa0IsR0FBRyxJQUFJO0VBRTdCLElBQU1DLEtBQUksR0FBRyxTQUFQQSxJQUFJQSxDQUFBLEVBQVM7SUFDakJELEdBQUcsR0FBRyxJQUFJO0lBQ1YsSUFBSUQsT0FBTyxDQUFDTixNQUFNLElBQUlLLE1BQU0sQ0FBQ0wsTUFBTSxFQUFFO01BQ25DO0lBQ0Y7SUFDQSxJQUFNUyxPQUFPLEdBQUdKLE1BQU0sQ0FBQ0wsTUFBTSxHQUFHTSxPQUFPLENBQUNOLE1BQU07SUFDOUMsSUFBTVUsSUFBSSxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQ1YsS0FBSyxFQUFFUyxJQUFJLENBQUNFLEdBQUcsQ0FBQ1YsS0FBSyxFQUFFUSxJQUFJLENBQUNHLElBQUksQ0FBQ0wsT0FBTyxHQUFHTCxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRTNFRSxPQUFPLEdBQUdELE1BQU0sQ0FBQ1UsS0FBSyxDQUFDLENBQUMsRUFBRVQsT0FBTyxDQUFDTixNQUFNLEdBQUdVLElBQUksQ0FBQztJQUNoRGhCLFFBQVEsQ0FBQ1ksT0FBTyxDQUFDO0lBQ2pCLElBQUlBLE9BQU8sQ0FBQ04sTUFBTSxHQUFHSyxNQUFNLENBQUNMLE1BQU0sRUFBRTtNQUNsQ08sR0FBRyxHQUFHUyxxQkFBcUIsQ0FBQ1IsS0FBSSxDQUFDO0lBQ25DO0VBQ0YsQ0FBQztFQUVELE9BQU87SUFDTCxzRUFDQVMsU0FBUyxXQUFUQSxTQUFTQSxDQUFDQyxRQUFnQixFQUFFO01BQzFCYixNQUFNLEdBQUdhLFFBQVE7TUFDakIsSUFBSVosT0FBTyxDQUFDTixNQUFNLEdBQUdLLE1BQU0sQ0FBQ0wsTUFBTSxJQUFJTyxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ2pEQSxHQUFHLEdBQUdTLHFCQUFxQixDQUFDUixLQUFJLENBQUM7TUFDbkM7SUFDRixDQUFDO0lBRURXLE1BQU0sV0FBTkEsTUFBTUEsQ0FBQSxFQUFHO01BQ1AsSUFBSVosR0FBRyxJQUFJLElBQUksRUFBRTtRQUNmYSxvQkFBb0IsQ0FBQ2IsR0FBRyxDQUFDO1FBQ3pCQSxHQUFHLEdBQUcsSUFBSTtNQUNaO0lBQ0YsQ0FBQztJQUVELDBDQUNBYyxLQUFLLFdBQUxBLEtBQUtBLENBQUEsRUFBRztNQUNOLElBQUlkLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDZmEsb0JBQW9CLENBQUNiLEdBQUcsQ0FBQztRQUN6QkEsR0FBRyxHQUFHLElBQUk7TUFDWjtNQUNBRixNQUFNLEdBQUcsRUFBRTtNQUNYQyxPQUFPLEdBQUcsRUFBRTtJQUNkO0VBQ0YsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
|