@projectcor/maia-components 2.11.55-3 → 2.11.55-4
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.
|
@@ -20,7 +20,6 @@ import { useTranslation } from 'react-i18next';
|
|
|
20
20
|
import maia from '../../services/maia';
|
|
21
21
|
import { SECTIONS } from '../../constants/config';
|
|
22
22
|
import { ACTIVITY_MESSAGE_ROTATE_MS, advanceStreamActivityMessage, canAdvanceStreamActivityMessage, canRotateStreamActivityPhase, getInitialStreamActivity, getThinkingLoadingMessage, getWritingStreamActivity, resolveHitlNodeStreamActivity, resolveInitialHitlStreamActivity } from '../../utils/streamActivityMessages';
|
|
23
|
-
import { logMaiaSseEvent, logMaiaSseStreamStart } from '../../utils/debugMaiaSseLog';
|
|
24
23
|
import { isCompleteLikeSsePayload, mergeStreamChunk } from '../../utils/sseStreamContent';
|
|
25
24
|
export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
26
25
|
var onStreamUpdate = _ref.onStreamUpdate,
|
|
@@ -152,7 +151,6 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
152
151
|
}
|
|
153
152
|
};
|
|
154
153
|
_context.prev = 1;
|
|
155
|
-
logMaiaSseStreamStart('orchestrator');
|
|
156
154
|
reader = (_response$body = response.body) === null || _response$body === void 0 ? void 0 : _response$body.getReader();
|
|
157
155
|
if (reader) {
|
|
158
156
|
_context.next = 2;
|
|
@@ -260,7 +258,6 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
260
258
|
dataStr = dataLine.replace('data: ', '').trim();
|
|
261
259
|
_context.prev = 12;
|
|
262
260
|
_data = JSON.parse(dataStr);
|
|
263
|
-
logMaiaSseEvent('orchestrator', eventType, _data);
|
|
264
261
|
_t = eventType;
|
|
265
262
|
_context.next = _t === 'thinking' ? 13 : _t === 'token' ? 14 : _t === 'content' ? 15 : _t === 'node' ? 16 : _t === 'complete' ? 17 : _t === 'approval_required' ? 18 : _t === 'error' ? 19 : 20;
|
|
266
263
|
break;
|
|
@@ -289,9 +286,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
289
286
|
case 16:
|
|
290
287
|
if (_data.message && typeof _data.message === 'string') {
|
|
291
288
|
setLoading(true);
|
|
292
|
-
applyStreamActivity(resolveHitlNodeStreamActivity(_data.message, t, hitlExecutionContextRef === null || hitlExecutionContextRef === void 0 ? void 0 : hitlExecutionContextRef.current, typeof _data.thread_id === 'string' ? _data.thread_id : undefined
|
|
293
|
-
logSource: 'orchestrator:node'
|
|
294
|
-
}));
|
|
289
|
+
applyStreamActivity(resolveHitlNodeStreamActivity(_data.message, t, hitlExecutionContextRef === null || hitlExecutionContextRef === void 0 ? void 0 : hitlExecutionContextRef.current, typeof _data.thread_id === 'string' ? _data.thread_id : undefined));
|
|
295
290
|
}
|
|
296
291
|
return _context.abrupt("continue", 21);
|
|
297
292
|
case 17:
|
|
@@ -308,9 +303,7 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
308
303
|
(_onApprovalRequiredRe = onApprovalRequiredRef.current) === null || _onApprovalRequiredRe === void 0 || _onApprovalRequiredRe.call(onApprovalRequiredRef, _data, accumulatedContent);
|
|
309
304
|
if (isManualApproval && Array.isArray(_data.pending_actions) && _data.pending_actions.length > 0) {
|
|
310
305
|
setLoading(true);
|
|
311
|
-
applyStreamActivity(resolveInitialHitlStreamActivity(t, hitlExecutionContextRef === null || hitlExecutionContextRef === void 0 ? void 0 : hitlExecutionContextRef.current
|
|
312
|
-
logSource: 'orchestrator:manualApproval'
|
|
313
|
-
}));
|
|
306
|
+
applyStreamActivity(resolveInitialHitlStreamActivity(t, hitlExecutionContextRef === null || hitlExecutionContextRef === void 0 ? void 0 : hitlExecutionContextRef.current));
|
|
314
307
|
}
|
|
315
308
|
return _context.abrupt("continue", 21);
|
|
316
309
|
case 19:
|
|
@@ -544,4 +537,4 @@ export var useOrchestratorStream = function useOrchestratorStream(_ref) {
|
|
|
544
537
|
handleSSEStream: handleSSEStream // Exponer para poder usarlo en continue-thread
|
|
545
538
|
};
|
|
546
539
|
};
|
|
547
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwibG9nTWFpYVNzZUV2ZW50IiwibG9nTWFpYVNzZVN0cmVhbVN0YXJ0IiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJhZHZhbmNlZCIsIm5leHRJbmRleCIsImNsZWFySW50ZXJ2YWwiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfb25FcnJvclJlZiRjdXJyZW50IiwiX2RhdGEkZXJyb3IiLCJfZGF0YSRlcnJvcjIiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiYXBwbHlTdHJlYW1Db21wbGV0ZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJfbGluZSRzcGxpdDIiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsImRhdGFTdHIiLCJfZGF0YSIsImNodW5rIiwiX2NodW5rIiwiX29uQXBwcm92YWxSZXF1aXJlZFJlIiwiaXNNYW51YWxBcHByb3ZhbCIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsIl9vblN0YXJ0V3JpdGluZ1JlZiRjdSIsInBheWxvYWQiLCJfcGF5bG9hZCRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJyZXBsYWNlIiwiSlNPTiIsInBhcnNlIiwidGhyZWFkX2lkIiwibG9nU291cmNlIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwicGVuZGluZ19hY3Rpb25zIiwibGVuZ3RoIiwiY29uc29sZSIsImVycm9yIiwidHlwZSIsIndhcm4iLCJlIiwiZiIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiYXNrTWFpYSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcmVmMyIsImhpc3RvcnkiLCJwcm9qZWN0SWQiLCJsYW5nIiwidXNlcklkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjaGF0SWQiLCJtZXNzYWdlSWQiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJmZWVJZCIsImFnZW50TmFtZSIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwicHJvamVjdE5hbWUiLCJ0YXNrSWQiLCJ0YXNrTmFtZSIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJmdWFJZCIsInNjSWQiLCJhZ2VudEVudGl0eSIsImNvbnRleHRNZXNzYWdlIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsIl9vYmplY3RTcHJlYWQiLCJpbnB1dCIsInNpZ25hbCIsIl94MiIsInN0b3BTdHJlYW1pbmciLCJfb25TdG9wUmVmJGN1cnJlbnQiLCJhYm9ydCIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJ1cGRhdGVTdHJlYW1BY3Rpdml0eSIsInJlc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBDaGF0SGlzdG9yeSB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBBZ2VudEVudGl0eSB9IGZyb20gJy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzIH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBsb2dNYWlhU3NlRXZlbnQsIGxvZ01haWFTc2VTdHJlYW1TdGFydCB9IGZyb20gJy4uLy4uL3V0aWxzL2RlYnVnTWFpYVNzZUxvZydcbmltcG9ydCB7IGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZCwgbWVyZ2VTdHJlYW1DaHVuayB9IGZyb20gJy4uLy4uL3V0aWxzL3NzZVN0cmVhbUNvbnRlbnQnXG5cbmV4cG9ydCBjb25zdCB1c2VPcmNoZXN0cmF0b3JTdHJlYW0gPSAoe1xuICBvblN0cmVhbVVwZGF0ZSxcbiAgb25GaW5pc2hTdHJlYW0sXG4gIG9uU3RhcnRXcml0aW5nLFxuICBvblN0b3AsXG4gIG9uRXJyb3IsXG4gIG9uQXBwcm92YWxSZXF1aXJlZCxcbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYsXG59OiBVc2VPcmNoZXN0cmF0b3JTdHJlYW1Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNXcml0aW5nLCBzZXRJc1dyaXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZSwgc2V0TG9hZGluZ01lc3NhZ2VdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3N0cmVhbUFjdGl2aXR5LCBzZXRTdHJlYW1BY3Rpdml0eV0gPSB1c2VTdGF0ZTxTdHJlYW1BY3Rpdml0eSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGFib3J0Q29udHJvbGxlclJlZiA9IHVzZVJlZjxBYm9ydENvbnRyb2xsZXIgfCBudWxsPihudWxsKVxuICBjb25zdCBpc1N0b3BwZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmID0gdXNlUmVmKDApXG5cbiAgY29uc3Qgb25TdHJlYW1VcGRhdGVSZWYgPSB1c2VSZWYob25TdHJlYW1VcGRhdGUpXG4gIGNvbnN0IG9uRmluaXNoU3RyZWFtUmVmID0gdXNlUmVmKG9uRmluaXNoU3RyZWFtKVxuICBjb25zdCBvblN0YXJ0V3JpdGluZ1JlZiA9IHVzZVJlZihvblN0YXJ0V3JpdGluZylcbiAgY29uc3Qgb25TdG9wUmVmID0gdXNlUmVmKG9uU3RvcClcbiAgY29uc3Qgb25FcnJvclJlZiA9IHVzZVJlZihvbkVycm9yKVxuICBjb25zdCBvbkFwcHJvdmFsUmVxdWlyZWRSZWYgPSB1c2VSZWYob25BcHByb3ZhbFJlcXVpcmVkKVxuXG4gIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQgPSBvblN0cmVhbVVwZGF0ZVxuICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50ID0gb25GaW5pc2hTdHJlYW1cbiAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudCA9IG9uU3RhcnRXcml0aW5nXG4gIG9uU3RvcFJlZi5jdXJyZW50ID0gb25TdG9wXG4gIG9uRXJyb3JSZWYuY3VycmVudCA9IG9uRXJyb3JcbiAgb25BcHByb3ZhbFJlcXVpcmVkUmVmLmN1cnJlbnQgPSBvbkFwcHJvdmFsUmVxdWlyZWRcblxuICBjb25zdCBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgIHNldFN0cmVhbUFjdGl2aXR5KG51bGwpXG4gICAgc2V0TG9hZGluZ01lc3NhZ2UobnVsbClcbiAgfSwgW10pXG5cbiAgY29uc3QgYXBwbHlTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkpID0+IHtcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2Py5waGFzZSA9PT0gYWN0aXZpdHkucGhhc2UgJiYgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShhY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2Py5waGFzZSAhPT0gYWN0aXZpdHkucGhhc2UpIHtcbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICAgIH1cbiAgICAgIHNldExvYWRpbmdNZXNzYWdlKGFjdGl2aXR5Lm1lc3NhZ2UpXG4gICAgICByZXR1cm4gYWN0aXZpdHlcbiAgICB9KVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNMb2FkaW5nIHx8IGlzV3JpdGluZyB8fCAhc3RyZWFtQWN0aXZpdHkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKCFjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlKHN0cmVhbUFjdGl2aXR5LnBoYXNlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgc2V0U3RyZWFtQWN0aXZpdHkocHJldiA9PiB7XG4gICAgICAgIGlmICghcHJldiB8fCAhY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShwcmV2LnBoYXNlKSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKHByZXYucGhhc2UsIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZHZhbmNlZCA9IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UocHJldiwgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCwgdClcbiAgICAgICAgaWYgKCFhZHZhbmNlZCkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IGFkdmFuY2VkLm5leHRJbmRleFxuICAgICAgICBzZXRMb2FkaW5nTWVzc2FnZShhZHZhbmNlZC5hY3Rpdml0eS5tZXNzYWdlKVxuICAgICAgICByZXR1cm4gYWR2YW5jZWQuYWN0aXZpdHlcbiAgICAgIH0pXG4gICAgfSwgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMpXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZClcbiAgfSwgW2lzTG9hZGluZywgaXNXcml0aW5nLCBzdHJlYW1BY3Rpdml0eT8ucGhhc2UsIHRdKVxuXG4gIGNvbnN0IGhhbmRsZVNTRVN0cmVhbSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIHJBRi10aHJvdHRsZTogZXZpdGEgZW1pdGlyIG9uU3RyZWFtVXBkYXRlIG3DoXMgZGUgdW5hIHZleiBwb3IgZnJhbWUuXG4gICAgICAvLyBBY3VtdWxhIGVsIMO6bHRpbW8gdmFsb3IgeSBsbyBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lLlxuICAgICAgLy8gTm90YTogbm8gdG9jYW1vcyBlbCBzdGF0ZSBgZGF0YWAgZW4gZWwgaG90IHBhdGggKHNvbG8gc2UgYWN0dWFsaXphIGVuXG4gICAgICAvLyBgY29tcGxldGVgL3Jlc2V0cykgcGFyYSBubyByZS1yZW5kZXJpemFyIGEgbG9zIGNvbnN1bWlkb3JlcyBkZWwgaG9va1xuICAgICAgLy8gZW4gY2FkYSBmcmFtZTsgZWwgdGV4dG8gZW4gdml2byB2aWFqYSBwb3IgZWwgc3RyZWFtaW5nU3RvcmUuXG4gICAgICBsZXQgcGVuZGluZ0NvbnRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gICAgICBsZXQgcmFmSWQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICBwZW5kaW5nQ29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHJldHVyblxuICAgICAgICByYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJhZklkICE9IG51bGwpIHtcbiAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZClcbiAgICAgICAgICByYWZJZCA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRvRW1pdCA9IHBlbmRpbmdDb250ZW50XG4gICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgb25TdHJlYW1VcGRhdGVSZWYuY3VycmVudD8uKHRvRW1pdCwgbnVsbCwgJycpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgbG9nTWFpYVNzZVN0cmVhbVN0YXJ0KCdvcmNoZXN0cmF0b3InKVxuICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICAgICAgICBpZiAoIXJlYWRlcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgICAgICAgbGV0IGJ1ZmZlciA9ICcnXG4gICAgICAgIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICAgICAgICBsZXQgaGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZVxuXG4gICAgICAgIGNvbnN0IGVuc3VyZVdyaXRpbmdTdGFydGVkID0gKCkgPT4ge1xuICAgICAgICAgIGlmIChoYXNTdGFydGVkV3JpdGluZykgcmV0dXJuXG4gICAgICAgICAgaGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlXG4gICAgICAgICAgc2V0SXNXcml0aW5nKHRydWUpXG4gICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodCkpXG4gICAgICAgICAgb25TdGFydFdyaXRpbmdSZWYuY3VycmVudD8uKClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcGx5U3RyZWFtQ2h1bmsgPSAoY2h1bms6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmICghY2h1bmspIHJldHVyblxuICAgICAgICAgIGFjY3VtdWxhdGVkQ29udGVudCA9IG1lcmdlU3RyZWFtQ2h1bmsoYWNjdW11bGF0ZWRDb250ZW50LCBjaHVuaylcbiAgICAgICAgICBlbWl0VGhyb3R0bGVkKGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFwcGx5U3RyZWFtQ29tcGxldGUgPSAocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAocGF5bG9hZC5jb250ZW50IGFzIHN0cmluZykgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgICAgICAgY29uc3Qgc291cmNlcyA9IHBheWxvYWQuc291cmNlcyB8fCBudWxsXG4gICAgICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKHBheWxvYWQubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmF0dGFjaG1lbnRzKSA/IHBheWxvYWQuYXR0YWNobWVudHMgOiBudWxsXG4gICAgICAgICAgbGV0IHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW11cbiAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0aW9ucykpIHtcbiAgICAgICAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhZ2VudElkUmF3ID0gcGF5bG9hZC5hZ2VudF9pZCA/PyBwYXlsb2FkLmFnZW50SWRcbiAgICAgICAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID1cbiAgICAgICAgICAgIGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICBzZXREYXRhKGZpbmFsQ29udGVudClcbiAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgb25GaW5pc2hTdHJlYW1SZWYuY3VycmVudD8uKFxuICAgICAgICAgICAgZmluYWxDb250ZW50LFxuICAgICAgICAgICAgc291cmNlcyxcbiAgICAgICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgICAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICAgICAgICBjb21wbGV0ZWRBZ2VudElkXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlzU3RvcHBlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gICAgICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcbiAgICAgICAgICAgICAgbG9nTWFpYVNzZUV2ZW50KCdvcmNoZXN0cmF0b3InLCBldmVudFR5cGUsIGRhdGEpXG5cbiAgICAgICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eSh7XG4gICAgICAgICAgICAgICAgICAgICAgcGhhc2U6ICd0aGlua2luZycsXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gdHlwZW9mIGRhdGEuY29udGVudCA9PT0gJ3N0cmluZycgPyBkYXRhLmNvbnRlbnQgOiAnJ1xuICAgICAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgICAgIGlmIChpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgICAgIGlmIChkYXRhLm1lc3NhZ2UgJiYgdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGRhdGEudGhyZWFkX2lkID09PSAnc3RyaW5nJyA/IGRhdGEudGhyZWFkX2lkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBsb2dTb3VyY2U6ICdvcmNoZXN0cmF0b3I6bm9kZScgfVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdhcHByb3ZhbF9yZXF1aXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudD8uKGRhdGEsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIGlmIChpc01hbnVhbEFwcHJvdmFsICYmIEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpICYmIGRhdGEucGVuZGluZ19hY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dTb3VyY2U6ICdvcmNoZXN0cmF0b3I6bWFudWFsQXBwcm92YWwnLFxuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gaGF5IGVycm9yXG4gICAgICAgICAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlLCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiwgdF1cbiAgKVxuXG4gIGNvbnN0IGFza01haWEgPSBhc3luYyAoe1xuICAgIG1lc3NhZ2UsXG4gICAgaGlzdG9yeSxcbiAgICBwcm9qZWN0SWQsXG4gICAgbGFuZyxcbiAgICB1c2VySWQsXG4gICAgZmlyc3ROYW1lLFxuICAgIGxhc3ROYW1lLFxuICAgIGNvbXBhbnlJZCxcbiAgICBjaGF0SWQsXG4gICAgbWVzc2FnZUlkLFxuICAgIGNsaWVudElkLFxuICAgIGNsaWVudE5hbWUsXG4gICAgZmVlSWQsXG4gICAgYWdlbnROYW1lLFxuICAgIGFnZW50SWQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIHByb2plY3ROYW1lLFxuICAgIHRhc2tJZCxcbiAgICB0YXNrTmFtZSxcbiAgICBmYXFJZCxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICBmdWFJZCxcbiAgICBzY0lkLFxuICAgIGFnZW50RW50aXR5LFxuICAgIGNvbnRleHRNZXNzYWdlLFxuICB9OiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaGlzdG9yeTogQ2hhdEhpc3RvcnlbXVxuICAgIHByb2plY3RJZDogbnVtYmVyIHwgbnVsbFxuICAgIGxhbmc6IHN0cmluZ1xuICAgIHVzZXJJZDogc3RyaW5nXG4gICAgZmlyc3ROYW1lPzogc3RyaW5nXG4gICAgbGFzdE5hbWU/OiBzdHJpbmdcbiAgICBjb21wYW55SWQ6IHN0cmluZ1xuICAgIGNoYXRJZDogc3RyaW5nXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBjbGllbnRJZD86IG51bWJlclxuICAgIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgICBmZWVJZD86IG51bWJlclxuICAgIGFnZW50TmFtZTogc3RyaW5nXG4gICAgYWdlbnRJZDogc3RyaW5nXG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICAgIHByb2plY3ROYW1lPzogc3RyaW5nXG4gICAgdGFza0lkPzogbnVtYmVyXG4gICAgdGFza05hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICAgIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIHtcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHM/Lmxlbmd0aCksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IGF0dGFjaG1lbnRzPy5sZW5ndGggPz8gMCxcbiAgICAgIH0pXG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2UgLy8gUmVzZXRlYXIgZmxhZyBhbCBpbmljaWFyIG51ZXZhIHBldGljacOzblxuXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBtZXNzYWdlLFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgbGFuZyxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxhc3ROYW1lID8geyBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVJZCB9IDoge30pLFxuICAgICAgICAgIGFnZW50TmFtZSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnROYW1lID8geyBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza05hbWUgPyB7IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRFbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaSBmdWUgdW4gYWJvcnQgaW50ZW5jaW9uYWwgKHN0b3AgbWFudWFsIG8gY2FtYmlvIGRlIGNoYXQpLCBubyBkaXNwYXJhciBvbkVycm9yXG4gICAgICAvLyBwb3JxdWUgZXNvIGluc2VydGEgdW4gXCJtZW5zYWplIGRlIGVycm9yXCIgZW4gZWwgY2hhdCBhbCBxdWUgYWNhYmFtb3MgZGUgbmF2ZWdhci5cbiAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgfVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICBvblN0b3BSZWYuY3VycmVudD8uKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLyoqXG4gICAqIEFib3J0YSBlbCBzdHJlYW0gZW4gY3Vyc28gKHNpIGV4aXN0ZSkgc2luIGRpc3BhcmFyIGBvblN0b3BgLlxuICAgKiDDmnNlbG8gZW4gY2Fzb3MgZG9uZGUgbm8gcXVlcmVtb3MgYWdyZWdhciBlbCBtZW5zYWplIGRlIFwiY2FuY2VsYWRvXCJcbiAgICogKHBvciBlamVtcGxvLCBhbCBjYW1iaWFyIGRlIGNoYXQpLlxuICAgKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgIH1cbiAgfSwgW2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXSlcblxuICAvLyBDbGVhbnVwIGFsIGRlc21vbnRhcjogc2kgcXVlZGEgdW4gc3RyZWFtIGFjdGl2bywgYWJvcnRhcmxvIHBhcmEgZXZpdGFyXG4gIC8vIHF1ZSBpbnRlbnRlIGFjdHVhbGl6YXIgZXN0YWRvIGVuIHVuIGNvbXBvbmVudGUgeWEgZGVzbW9udGFkbyAoZnVnYXMgZGVcbiAgLy8gbWVtb3JpYSB5IHdhcm5pbmdzKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKFxuICAgIChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWFjdGl2aXR5KSB7XG4gICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXVxuICApXG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RGF0YShudWxsKVxuICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUU5QyxPQUFPQyxJQUFJLE1BQU0scUJBQXFCO0FBS3RDLFNBQVNDLFFBQVEsUUFBUSx3QkFBd0I7QUFFakQsU0FDRUMsMEJBQTBCLEVBQzFCQyw0QkFBNEIsRUFDNUJDLCtCQUErQixFQUMvQkMsNEJBQTRCLEVBQzVCQyx3QkFBd0IsRUFDeEJDLHlCQUF5QixFQUN6QkMsd0JBQXdCLEVBQ3hCQyw2QkFBNkIsRUFDN0JDLGdDQUFnQyxRQUMzQixvQ0FBb0M7QUFDM0MsU0FBU0MsZUFBZSxFQUFFQyxxQkFBcUIsUUFBUSw2QkFBNkI7QUFDcEYsU0FBU0Msd0JBQXdCLEVBQUVDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUV6RixPQUFPLElBQU1DLHFCQUFx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
|
|
540
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlVHJhbnNsYXRpb24iLCJtYWlhIiwiU0VDVElPTlMiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSIsImdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInVzZU9yY2hlc3RyYXRvclN0cmVhbSIsIl9yZWYiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdGFydFdyaXRpbmciLCJvblN0b3AiLCJvbkVycm9yIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiaGl0bEV4ZWN1dGlvbkNvbnRleHRSZWYiLCJfdXNlVHJhbnNsYXRpb24iLCJjaGF0QUkiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGF0YSIsInNldERhdGEiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImlzTG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibG9hZGluZ01lc3NhZ2UiLCJzZXRMb2FkaW5nTWVzc2FnZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic3RyZWFtQWN0aXZpdHkiLCJzZXRTdHJlYW1BY3Rpdml0eSIsImFib3J0Q29udHJvbGxlclJlZiIsImlzU3RvcHBlZFJlZiIsImFjdGl2aXR5TWVzc2FnZUluZGV4UmVmIiwib25TdHJlYW1VcGRhdGVSZWYiLCJvbkZpbmlzaFN0cmVhbVJlZiIsIm9uU3RhcnRXcml0aW5nUmVmIiwib25TdG9wUmVmIiwib25FcnJvclJlZiIsIm9uQXBwcm92YWxSZXF1aXJlZFJlZiIsImN1cnJlbnQiLCJjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSIsImFwcGx5U3RyZWFtQWN0aXZpdHkiLCJhY3Rpdml0eSIsInByZXYiLCJwaGFzZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJpbnRlcnZhbElkIiwid2luZG93Iiwic2V0SW50ZXJ2YWwiLCJhZHZhbmNlZCIsIm5leHRJbmRleCIsImNsZWFySW50ZXJ2YWwiLCJoYW5kbGVTU0VTdHJlYW0iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJfb25FcnJvclJlZiRjdXJyZW50IiwiX2RhdGEkZXJyb3IiLCJfZGF0YSRlcnJvcjIiLCJwZW5kaW5nQ29udGVudCIsInJhZklkIiwiZW1pdFRocm90dGxlZCIsImZsdXNoUGVuZGluZyIsIl9yZXNwb25zZSRib2R5IiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiYXBwbHlTdHJlYW1Db21wbGV0ZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJfbGluZSRzcGxpdDIiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsImRhdGFTdHIiLCJfZGF0YSIsImNodW5rIiwiX2NodW5rIiwiX29uQXBwcm92YWxSZXF1aXJlZFJlIiwiaXNNYW51YWxBcHByb3ZhbCIsIl9vbkVycm9yUmVmJGN1cnJlbnQyIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiY29udGVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdSIsInRvRW1pdCIsImNhbGwiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIl9vblN0cmVhbVVwZGF0ZVJlZiRjdTIiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsIl9vblN0YXJ0V3JpdGluZ1JlZiRjdSIsInBheWxvYWQiLCJfcGF5bG9hZCRhZ2VudF9pZCIsIl9vbkZpbmlzaFN0cmVhbVJlZiRjdSIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwiY2FuY2VsIiwiYWJydXB0IiwicmVhZCIsInNlbnQiLCJkZWNvZGUiLCJzdHJlYW0iLCJzcGxpdCIsInBvcCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJyZXBsYWNlIiwiSlNPTiIsInBhcnNlIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwicGVuZGluZ19hY3Rpb25zIiwibGVuZ3RoIiwiY29uc29sZSIsImVycm9yIiwidHlwZSIsIndhcm4iLCJlIiwiZiIsImZpbmlzaCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiYXNrTWFpYSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJfcmVmMyIsImhpc3RvcnkiLCJwcm9qZWN0SWQiLCJsYW5nIiwidXNlcklkIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55SWQiLCJjaGF0SWQiLCJtZXNzYWdlSWQiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJmZWVJZCIsImFnZW50TmFtZSIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwicHJvamVjdE5hbWUiLCJ0YXNrSWQiLCJ0YXNrTmFtZSIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJmdWFJZCIsInNjSWQiLCJhZ2VudEVudGl0eSIsImNvbnRleHRNZXNzYWdlIiwiX2F0dGFjaG1lbnRzJGxlbmd0aCIsIl9hYm9ydENvbnRyb2xsZXJSZWYkYyIsImluaXRpYWxBY3Rpdml0eSIsIl9vbkVycm9yUmVmJGN1cnJlbnQzIiwiX3Q1IiwiX2NvbnRleHQyIiwiaGFzQXR0YWNobWVudHMiLCJCb29sZWFuIiwiYXR0YWNobWVudHNDb3VudCIsIkFib3J0Q29udHJvbGxlciIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsIl9vYmplY3RTcHJlYWQiLCJpbnB1dCIsInNpZ25hbCIsIl94MiIsInN0b3BTdHJlYW1pbmciLCJfb25TdG9wUmVmJGN1cnJlbnQiLCJhYm9ydCIsImFib3J0U3RyZWFtU2lsZW50bHkiLCJ1cGRhdGVTdHJlYW1BY3Rpdml0eSIsInJlc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZU9yY2hlc3RyYXRvclN0cmVhbS91c2VPcmNoZXN0cmF0b3JTdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY2FzZS1kZWNsYXJhdGlvbnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBDaGF0SGlzdG9yeSB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBBZ2VudEVudGl0eSB9IGZyb20gJy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IFVzZU9yY2hlc3RyYXRvclN0cmVhbVByb3BzIH0gZnJvbSAnLi91c2VPcmNoZXN0cmF0b3JTdHJlYW0uaW50ZXJmYWNlJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSB9IGZyb20gJy4uLy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHtcbiAgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMsXG4gIGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UsXG4gIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSxcbiAgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSxcbiAgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHksXG59IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuXG5leHBvcnQgY29uc3QgdXNlT3JjaGVzdHJhdG9yU3RyZWFtID0gKHtcbiAgb25TdHJlYW1VcGRhdGUsXG4gIG9uRmluaXNoU3RyZWFtLFxuICBvblN0YXJ0V3JpdGluZyxcbiAgb25TdG9wLFxuICBvbkVycm9yLFxuICBvbkFwcHJvdmFsUmVxdWlyZWQsXG4gIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmLFxufTogVXNlT3JjaGVzdHJhdG9yU3RyZWFtUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbG9hZGluZ01lc3NhZ2UsIHNldExvYWRpbmdNZXNzYWdlXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzdHJlYW1BY3Rpdml0eSwgc2V0U3RyZWFtQWN0aXZpdHldID0gdXNlU3RhdGU8U3RyZWFtQWN0aXZpdHkgfCBudWxsPihudWxsKVxuICBjb25zdCBhYm9ydENvbnRyb2xsZXJSZWYgPSB1c2VSZWY8QWJvcnRDb250cm9sbGVyIHwgbnVsbD4obnVsbClcbiAgY29uc3QgaXNTdG9wcGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZiA9IHVzZVJlZigwKVxuXG4gIGNvbnN0IG9uU3RyZWFtVXBkYXRlUmVmID0gdXNlUmVmKG9uU3RyZWFtVXBkYXRlKVxuICBjb25zdCBvbkZpbmlzaFN0cmVhbVJlZiA9IHVzZVJlZihvbkZpbmlzaFN0cmVhbSlcbiAgY29uc3Qgb25TdGFydFdyaXRpbmdSZWYgPSB1c2VSZWYob25TdGFydFdyaXRpbmcpXG4gIGNvbnN0IG9uU3RvcFJlZiA9IHVzZVJlZihvblN0b3ApXG4gIGNvbnN0IG9uRXJyb3JSZWYgPSB1c2VSZWYob25FcnJvcilcbiAgY29uc3Qgb25BcHByb3ZhbFJlcXVpcmVkUmVmID0gdXNlUmVmKG9uQXBwcm92YWxSZXF1aXJlZClcblxuICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50ID0gb25TdHJlYW1VcGRhdGVcbiAgb25GaW5pc2hTdHJlYW1SZWYuY3VycmVudCA9IG9uRmluaXNoU3RyZWFtXG4gIG9uU3RhcnRXcml0aW5nUmVmLmN1cnJlbnQgPSBvblN0YXJ0V3JpdGluZ1xuICBvblN0b3BSZWYuY3VycmVudCA9IG9uU3RvcFxuICBvbkVycm9yUmVmLmN1cnJlbnQgPSBvbkVycm9yXG4gIG9uQXBwcm92YWxSZXF1aXJlZFJlZi5jdXJyZW50ID0gb25BcHByb3ZhbFJlcXVpcmVkXG5cbiAgY29uc3QgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWN0aXZpdHlNZXNzYWdlSW5kZXhSZWYuY3VycmVudCA9IDBcbiAgICBzZXRTdHJlYW1BY3Rpdml0eShudWxsKVxuICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQWN0aXZpdHkgPSB1c2VDYWxsYmFjaygoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5KSA9PiB7XG4gICAgc2V0U3RyZWFtQWN0aXZpdHkocHJldiA9PiB7XG4gICAgICBpZiAocHJldj8ucGhhc2UgPT09IGFjdGl2aXR5LnBoYXNlICYmIGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UoYWN0aXZpdHkucGhhc2UpKSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgICBpZiAocHJldj8ucGhhc2UgIT09IGFjdGl2aXR5LnBoYXNlKSB7XG4gICAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSAwXG4gICAgICB9XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZShhY3Rpdml0eS5tZXNzYWdlKVxuICAgICAgcmV0dXJuIGFjdGl2aXR5XG4gICAgfSlcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzTG9hZGluZyB8fCBpc1dyaXRpbmcgfHwgIXN0cmVhbUFjdGl2aXR5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGlmICghY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZShzdHJlYW1BY3Rpdml0eS5waGFzZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHNldFN0cmVhbUFjdGl2aXR5KHByZXYgPT4ge1xuICAgICAgICBpZiAoIXByZXYgfHwgIWNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UocHJldi5waGFzZSkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGlmICghY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShwcmV2LnBoYXNlLCBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50KSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWR2YW5jZWQgPSBhZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKHByZXYsIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQsIHQpXG4gICAgICAgIGlmICghYWR2YW5jZWQpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIGFjdGl2aXR5TWVzc2FnZUluZGV4UmVmLmN1cnJlbnQgPSBhZHZhbmNlZC5uZXh0SW5kZXhcbiAgICAgICAgc2V0TG9hZGluZ01lc3NhZ2UoYWR2YW5jZWQuYWN0aXZpdHkubWVzc2FnZSlcbiAgICAgICAgcmV0dXJuIGFkdmFuY2VkLmFjdGl2aXR5XG4gICAgICB9KVxuICAgIH0sIEFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpXG4gIH0sIFtpc0xvYWRpbmcsIGlzV3JpdGluZywgc3RyZWFtQWN0aXZpdHk/LnBoYXNlLCB0XSlcblxuICBjb25zdCBoYW5kbGVTU0VTdHJlYW0gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyByQUYtdGhyb3R0bGU6IGV2aXRhIGVtaXRpciBvblN0cmVhbVVwZGF0ZSBtw6FzIGRlIHVuYSB2ZXogcG9yIGZyYW1lLlxuICAgICAgLy8gQWN1bXVsYSBlbCDDumx0aW1vIHZhbG9yIHkgbG8gbGliZXJhIGVuIGVsIHByw7N4aW1vIHJlcXVlc3RBbmltYXRpb25GcmFtZS5cbiAgICAgIC8vIE5vdGE6IG5vIHRvY2Ftb3MgZWwgc3RhdGUgYGRhdGFgIGVuIGVsIGhvdCBwYXRoIChzb2xvIHNlIGFjdHVhbGl6YSBlblxuICAgICAgLy8gYGNvbXBsZXRlYC9yZXNldHMpIHBhcmEgbm8gcmUtcmVuZGVyaXphciBhIGxvcyBjb25zdW1pZG9yZXMgZGVsIGhvb2tcbiAgICAgIC8vIGVuIGNhZGEgZnJhbWU7IGVsIHRleHRvIGVuIHZpdm8gdmlhamEgcG9yIGVsIHN0cmVhbWluZ1N0b3JlLlxuICAgICAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICAgICAgbGV0IHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbFxuICAgICAgY29uc3QgZW1pdFRocm90dGxlZCA9IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSByZXR1cm5cbiAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJhZklkID0gbnVsbFxuICAgICAgICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgICAgICBvblN0cmVhbVVwZGF0ZVJlZi5jdXJyZW50Py4odG9FbWl0LCBudWxsLCAnJylcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBmbHVzaFBlbmRpbmcgPSAoKSA9PiB7XG4gICAgICAgIGlmIChyYWZJZCAhPSBudWxsKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmSWQpXG4gICAgICAgICAgcmFmSWQgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgIG9uU3RyZWFtVXBkYXRlUmVmLmN1cnJlbnQ/Lih0b0VtaXQsIG51bGwsICcnKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gICAgICAgIGlmICghcmVhZGVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICAgICAgICBsZXQgYnVmZmVyID0gJydcbiAgICAgICAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgICAgIGxldCBoYXNTdGFydGVkV3JpdGluZyA9IGZhbHNlXG5cbiAgICAgICAgY29uc3QgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQgPSAoKSA9PiB7XG4gICAgICAgICAgaWYgKGhhc1N0YXJ0ZWRXcml0aW5nKSByZXR1cm5cbiAgICAgICAgICBoYXNTdGFydGVkV3JpdGluZyA9IHRydWVcbiAgICAgICAgICBzZXRJc1dyaXRpbmcodHJ1ZSlcbiAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICAgICAgICBvblN0YXJ0V3JpdGluZ1JlZi5jdXJyZW50Py4oKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwbHlTdHJlYW1DaHVuayA9IChjaHVuazogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKCFjaHVuaykgcmV0dXJuXG4gICAgICAgICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNodW5rKVxuICAgICAgICAgIGVtaXRUaHJvdHRsZWQoYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwbHlTdHJlYW1Db21wbGV0ZSA9IChwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChwYXlsb2FkLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgICAgICBjb25zdCBzb3VyY2VzID0gcGF5bG9hZC5zb3VyY2VzIHx8IG51bGxcbiAgICAgICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAocGF5bG9hZC5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBBcnJheS5pc0FycmF5KHBheWxvYWQuYXR0YWNobWVudHMpID8gcGF5bG9hZC5hdHRhY2htZW50cyA6IG51bGxcbiAgICAgICAgICBsZXQgc3VnZ2VzdGlvbnM6IHN0cmluZ1tdIHwgbnVsbCA9IG51bGxcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3RfcmVwbHkpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdF9yZXBseSBhcyBzdHJpbmdbXVxuICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXlsb2FkLnN1Z2dlc3Rpb25zKSkge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3Rpb25zIGFzIHN0cmluZ1tdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGFnZW50SWRSYXcgPSBwYXlsb2FkLmFnZW50X2lkID8/IHBheWxvYWQuYWdlbnRJZFxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZEFnZW50SWQgPVxuICAgICAgICAgICAgYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgIHNldERhdGEoZmluYWxDb250ZW50KVxuICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICBvbkZpbmlzaFN0cmVhbVJlZi5jdXJyZW50Py4oXG4gICAgICAgICAgICBmaW5hbENvbnRlbnQsXG4gICAgICAgICAgICBzb3VyY2VzLFxuICAgICAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgICAgICAgYXR0YWNobWVudHMsXG4gICAgICAgICAgICBzdWdnZXN0aW9ucyxcbiAgICAgICAgICAgIGNvbXBsZXRlZEFnZW50SWRcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgIGlmIChpc1N0b3BwZWRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBidWZmZXIgKz0gZGVjb2Rlci5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgICAgICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgICAgICAgICAgIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgY29udGludWVcblxuICAgICAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gICAgICAgICAgICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuXG4gICAgICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAndGhpbmtpbmcnOlxuICAgICAgICAgICAgICAgICAgaWYgKCFoYXNTdGFydGVkV3JpdGluZykge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQWN0aXZpdHkoe1xuICAgICAgICAgICAgICAgICAgICAgIHBoYXNlOiAndGhpbmtpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UoMCwgdCksXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICAgICAgY2FzZSAndG9rZW4nOiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ2h1bmsoY2h1bmspXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbnRlbnQnOiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ2h1bmsoY2h1bmspXG4gICAgICAgICAgICAgICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnbm9kZSc6XG4gICAgICAgICAgICAgICAgICBpZiAoZGF0YS5tZXNzYWdlICYmIHR5cGVvZiBkYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZj8uY3VycmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBkYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBkYXRhLnRocmVhZF9pZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlJzpcbiAgICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgICAgICBjYXNlICdhcHByb3ZhbF9yZXF1aXJlZCc6IHtcbiAgICAgICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgICAgICBjb25zdCBpc01hbnVhbEFwcHJvdmFsID0gZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWVcbiAgICAgICAgICAgICAgICAgIGlmICghaXNNYW51YWxBcHByb3ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBvbkFwcHJvdmFsUmVxdWlyZWRSZWYuY3VycmVudD8uKGRhdGEsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgICAgIGlmIChpc01hbnVhbEFwcHJvdmFsICYmIEFycmF5LmlzQXJyYXkoZGF0YS5wZW5kaW5nX2FjdGlvbnMpICYmIGRhdGEucGVuZGluZ19hY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0UmVmPy5jdXJyZW50KSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGRhdGEuZXJyb3IpXG4gICAgICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgICAgICAgICAgIHNldExvYWRpbmdNZXNzYWdlKG51bGwpIC8vIExpbXBpYXIgbWVuc2FqZSBjdWFuZG8gaGF5IGVycm9yXG4gICAgICAgICAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG5cbiAgICAgICAgLy8gU29sbyBlamVjdXRhciBvbkVycm9yIHNpIG5vIGZ1ZSB1biBzdG9wIGludGVuY2lvbmFsXG4gICAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBvbkVycm9yUmVmLmN1cnJlbnQ/LigpXG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlLCBoaXRsRXhlY3V0aW9uQ29udGV4dFJlZiwgdF1cbiAgKVxuXG4gIGNvbnN0IGFza01haWEgPSBhc3luYyAoe1xuICAgIG1lc3NhZ2UsXG4gICAgaGlzdG9yeSxcbiAgICBwcm9qZWN0SWQsXG4gICAgbGFuZyxcbiAgICB1c2VySWQsXG4gICAgZmlyc3ROYW1lLFxuICAgIGxhc3ROYW1lLFxuICAgIGNvbXBhbnlJZCxcbiAgICBjaGF0SWQsXG4gICAgbWVzc2FnZUlkLFxuICAgIGNsaWVudElkLFxuICAgIGNsaWVudE5hbWUsXG4gICAgZmVlSWQsXG4gICAgYWdlbnROYW1lLFxuICAgIGFnZW50SWQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIHByb2plY3ROYW1lLFxuICAgIHRhc2tJZCxcbiAgICB0YXNrTmFtZSxcbiAgICBmYXFJZCxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICBmdWFJZCxcbiAgICBzY0lkLFxuICAgIGFnZW50RW50aXR5LFxuICAgIGNvbnRleHRNZXNzYWdlLFxuICB9OiB7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgaGlzdG9yeTogQ2hhdEhpc3RvcnlbXVxuICAgIHByb2plY3RJZDogbnVtYmVyIHwgbnVsbFxuICAgIGxhbmc6IHN0cmluZ1xuICAgIHVzZXJJZDogc3RyaW5nXG4gICAgZmlyc3ROYW1lPzogc3RyaW5nXG4gICAgbGFzdE5hbWU/OiBzdHJpbmdcbiAgICBjb21wYW55SWQ6IHN0cmluZ1xuICAgIGNoYXRJZDogc3RyaW5nXG4gICAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgICBjbGllbnRJZD86IG51bWJlclxuICAgIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgICBmZWVJZD86IG51bWJlclxuICAgIGFnZW50TmFtZTogc3RyaW5nXG4gICAgYWdlbnRJZDogc3RyaW5nXG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICAgIHByb2plY3ROYW1lPzogc3RyaW5nXG4gICAgdGFza0lkPzogbnVtYmVyXG4gICAgdGFza05hbWU/OiBzdHJpbmdcbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gICAgYWdlbnRFbnRpdHk/OiBBZ2VudEVudGl0eVxuICAgIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgfSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXREYXRhKG51bGwpXG4gICAgICBhY3Rpdml0eU1lc3NhZ2VJbmRleFJlZi5jdXJyZW50ID0gMFxuICAgICAgY29uc3QgaW5pdGlhbEFjdGl2aXR5ID0gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIHtcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgaGFzQXR0YWNobWVudHM6IEJvb2xlYW4oYXR0YWNobWVudHM/Lmxlbmd0aCksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IGF0dGFjaG1lbnRzPy5sZW5ndGggPz8gMCxcbiAgICAgIH0pXG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGluaXRpYWxBY3Rpdml0eSlcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gZmFsc2UgLy8gUmVzZXRlYXIgZmxhZyBhbCBpbmljaWFyIG51ZXZhIHBldGljacOzblxuXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0OiBtZXNzYWdlLFxuICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgbGFuZyxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGxhc3ROYW1lID8geyBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVJZCB9IDoge30pLFxuICAgICAgICAgIGFnZW50TmFtZSxcbiAgICAgICAgICBhZ2VudElkLFxuICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgICAgIC4uLihjbGllbnROYW1lID8geyBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4odGFza05hbWUgPyB7IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oYWdlbnRFbnRpdHkgIT0gbnVsbCA/IHsgYWdlbnRFbnRpdHkgfSA6IHt9KSxcbiAgICAgICAgICAuLi4oY29udGV4dE1lc3NhZ2UgPyB7IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50Py5zaWduYWxcbiAgICAgIClcblxuICAgICAgYXdhaXQgaGFuZGxlU1NFU3RyZWFtKHJlc3BvbnNlKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTaSBmdWUgdW4gYWJvcnQgaW50ZW5jaW9uYWwgKHN0b3AgbWFudWFsIG8gY2FtYmlvIGRlIGNoYXQpLCBubyBkaXNwYXJhciBvbkVycm9yXG4gICAgICAvLyBwb3JxdWUgZXNvIGluc2VydGEgdW4gXCJtZW5zYWplIGRlIGVycm9yXCIgZW4gZWwgY2hhdCBhbCBxdWUgYWNhYmFtb3MgZGUgbmF2ZWdhci5cbiAgICAgIGlmICghaXNTdG9wcGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgb25FcnJvclJlZi5jdXJyZW50Py4oKVxuICAgICAgfVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBzdG9wU3RyZWFtaW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCkge1xuICAgICAgaXNTdG9wcGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudC5hYm9ydCgpXG4gICAgICBhYm9ydENvbnRyb2xsZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZSgpXG4gICAgICBvblN0b3BSZWYuY3VycmVudD8uKClcbiAgICB9XG4gIH0sIFtjbGVhclN0cmVhbUxvYWRpbmdTdGF0ZV0pXG5cbiAgLyoqXG4gICAqIEFib3J0YSBlbCBzdHJlYW0gZW4gY3Vyc28gKHNpIGV4aXN0ZSkgc2luIGRpc3BhcmFyIGBvblN0b3BgLlxuICAgKiDDmnNlbG8gZW4gY2Fzb3MgZG9uZGUgbm8gcXVlcmVtb3MgYWdyZWdhciBlbCBtZW5zYWplIGRlIFwiY2FuY2VsYWRvXCJcbiAgICogKHBvciBlamVtcGxvLCBhbCBjYW1iaWFyIGRlIGNoYXQpLlxuICAgKi9cbiAgY29uc3QgYWJvcnRTdHJlYW1TaWxlbnRseSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU3RvcHBlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQuYWJvcnQoKVxuICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgY2xlYXJTdHJlYW1Mb2FkaW5nU3RhdGUoKVxuICAgIH1cbiAgfSwgW2NsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXSlcblxuICAvLyBDbGVhbnVwIGFsIGRlc21vbnRhcjogc2kgcXVlZGEgdW4gc3RyZWFtIGFjdGl2bywgYWJvcnRhcmxvIHBhcmEgZXZpdGFyXG4gIC8vIHF1ZSBpbnRlbnRlIGFjdHVhbGl6YXIgZXN0YWRvIGVuIHVuIGNvbXBvbmVudGUgeWEgZGVzbW9udGFkbyAoZnVnYXMgZGVcbiAgLy8gbWVtb3JpYSB5IHdhcm5pbmdzKS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgIGFib3J0Q29udHJvbGxlclJlZi5jdXJyZW50LmFib3J0KClcbiAgICAgICAgYWJvcnRDb250cm9sbGVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVTdHJlYW1BY3Rpdml0eSA9IHVzZUNhbGxiYWNrKFxuICAgIChhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsKSA9PiB7XG4gICAgICBpZiAoIWFjdGl2aXR5KSB7XG4gICAgICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBhcHBseVN0cmVhbUFjdGl2aXR5KGFjdGl2aXR5KVxuICAgIH0sXG4gICAgW2FwcGx5U3RyZWFtQWN0aXZpdHksIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlXVxuICApXG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RGF0YShudWxsKVxuICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIGNsZWFyU3RyZWFtTG9hZGluZ1N0YXRlKClcbiAgICBpc1N0b3BwZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFza01haWEsXG4gICAgcmVzcG9uc2U6IGRhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdHJlYW1BY3Rpdml0eSxcbiAgICB1cGRhdGVTdHJlYW1BY3Rpdml0eSxcbiAgICByZXNldCxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICAgIGFib3J0U3RyZWFtU2lsZW50bHksXG4gICAgaGFuZGxlU1NFU3RyZWFtLCAvLyBFeHBvbmVyIHBhcmEgcG9kZXIgdXNhcmxvIGVuIGNvbnRpbnVlLXRocmVhZFxuICB9XG59XG4iXSwibWFwcGluZ3Mi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
|
|
@@ -3,7 +3,6 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
|
3
3
|
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; }
|
|
4
4
|
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; }
|
|
5
5
|
import { normalizeHitlToolName } from './hitlAnalytics';
|
|
6
|
-
import { logHitlApprovalContext } from './debugMaiaSseLog';
|
|
7
6
|
var THINKING_MESSAGE_KEYS = ['chat.activity.thinking.analyzing', 'chat.activity.thinking.reviewing', 'chat.activity.thinking.planning'];
|
|
8
7
|
var GENERATING_MESSAGE_KEYS = ['chat.activity.generating.considering', 'chat.activity.generating.almostReady', 'chat.activity.generating.preparing'];
|
|
9
8
|
var SEARCH_MESSAGE_KEYS = ['chat.activity.search.scanning', 'chat.activity.search.summarizing'];
|
|
@@ -149,62 +148,26 @@ var detectToolsFromPendingActions = function detectToolsFromPendingActions(actio
|
|
|
149
148
|
export var resolveHitlNodeStreamActivity = function resolveHitlNodeStreamActivity(nodeMessage, t, context, threadId, options) {
|
|
150
149
|
var pendingForThread = resolvePendingActionsForThread(context, threadId);
|
|
151
150
|
var detectedTools = detectToolsFromPendingActions(pendingForThread);
|
|
152
|
-
if (options !== null && options !== void 0 && options.logSource) {
|
|
153
|
-
logHitlApprovalContext(options.logSource, {
|
|
154
|
-
messageId: context === null || context === void 0 ? void 0 : context.messageId,
|
|
155
|
-
messageText: context === null || context === void 0 ? void 0 : context.messageText,
|
|
156
|
-
threadId: threadId,
|
|
157
|
-
threadIds: context === null || context === void 0 ? void 0 : context.threadIds,
|
|
158
|
-
nodeMessage: nodeMessage,
|
|
159
|
-
pendingActions: pendingForThread,
|
|
160
|
-
detectedTools: detectedTools
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
151
|
var trimmedNodeMessage = nodeMessage.trim();
|
|
164
152
|
var activityFromNodeMessage = trimmedNodeMessage && !isGenericResumeNodeMessage(trimmedNodeMessage) ? {
|
|
165
153
|
phase: 'action',
|
|
166
154
|
message: trimmedNodeMessage
|
|
167
155
|
} : null;
|
|
168
|
-
var resolveAndLog = function resolveAndLog(activity) {
|
|
169
|
-
if (options !== null && options !== void 0 && options.logSource) {
|
|
170
|
-
logHitlApprovalContext("".concat(options.logSource, ":resolved"), {
|
|
171
|
-
detectedTools: detectedTools,
|
|
172
|
-
resolvedActivity: activity
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
return activity;
|
|
176
|
-
};
|
|
177
156
|
if (detectedTools.length >= 1) {
|
|
178
157
|
if (activityFromNodeMessage) {
|
|
179
|
-
return
|
|
158
|
+
return activityFromNodeMessage;
|
|
180
159
|
}
|
|
181
|
-
return
|
|
160
|
+
return mapHitlToolNameToStreamActivity(detectedTools[0], t, options);
|
|
182
161
|
}
|
|
183
|
-
return
|
|
162
|
+
return mapNodeMessageToStreamActivity(nodeMessage, t, options);
|
|
184
163
|
};
|
|
185
|
-
export var resolveInitialHitlStreamActivity = function resolveInitialHitlStreamActivity(t, context
|
|
164
|
+
export var resolveInitialHitlStreamActivity = function resolveInitialHitlStreamActivity(t, context) {
|
|
186
165
|
var pendingActions = resolvePendingActionsForThread(context);
|
|
187
166
|
var detectedTools = detectToolsFromPendingActions(pendingActions);
|
|
188
|
-
if (options !== null && options !== void 0 && options.logSource) {
|
|
189
|
-
logHitlApprovalContext(options.logSource, {
|
|
190
|
-
messageId: context === null || context === void 0 ? void 0 : context.messageId,
|
|
191
|
-
messageText: context === null || context === void 0 ? void 0 : context.messageText,
|
|
192
|
-
threadIds: context === null || context === void 0 ? void 0 : context.threadIds,
|
|
193
|
-
pendingActions: pendingActions,
|
|
194
|
-
detectedTools: detectedTools
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
167
|
if (detectedTools.length >= 1) {
|
|
198
|
-
|
|
168
|
+
return mapHitlToolNameToStreamActivity(detectedTools[0], t, {
|
|
199
169
|
useResumingFallback: true
|
|
200
170
|
});
|
|
201
|
-
if (options !== null && options !== void 0 && options.logSource) {
|
|
202
|
-
logHitlApprovalContext("".concat(options.logSource, ":resolved"), {
|
|
203
|
-
detectedTools: detectedTools,
|
|
204
|
-
resolvedActivity: activity
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
return activity;
|
|
208
171
|
}
|
|
209
172
|
return {
|
|
210
173
|
phase: 'processing',
|
|
@@ -371,4 +334,4 @@ export var resolveStreamLoadingDisplay = function resolveStreamLoadingDisplay(pa
|
|
|
371
334
|
export var isStreamingPlaceholderMessageId = function isStreamingPlaceholderMessageId(messageId) {
|
|
372
335
|
return typeof messageId === 'string' && messageId.includes('-streaming');
|
|
373
336
|
};
|
|
374
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJsb2dIaXRsQXBwcm92YWxDb250ZXh0IiwiVEhJTktJTkdfTUVTU0FHRV9LRVlTIiwiR0VORVJBVElOR19NRVNTQUdFX0tFWVMiLCJTRUFSQ0hfTUVTU0FHRV9LRVlTIiwiREVFUF9TRUFSQ0hfTUVTU0FHRV9LRVlTIiwiQVRUQUNITUVOVF9NRVNTQUdFX0tFWVMiLCJBVFRBQ0hNRU5UX01FU1NBR0VfS0VZU19QTFVSQUwiLCJXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZIiwiSElUTF9UT09MX0FDVElWSVRZX0tFWVMiLCJjcmVhdGVfdGFzayIsImNsb25lX3Rhc2siLCJjcmVhdGVfdGFza3NfYmF0Y2giLCJjcmVhdGVfYWdlbnQiLCJlZGl0X2FnZW50IiwiZWRpdF90YXNrIiwiZWRpdF90YXNrc19iYXRjaCIsImRlbGV0ZV90YXNrIiwiZGVsZXRlX3Rhc2tzX2JhdGNoIiwidGFza19hc3NpZ24iLCJ0YXNrX3VuYXNzaWduIiwiYXNzaWduX3Rhc2tfbGFiZWwiLCJ1cGRhdGVfdGFza190eXBlIiwidXBkYXRlX2VzdGltYXRlZF9ob3VycyIsInVwZGF0ZV9kZWxpdmVyYWJsZSIsImNyZWF0ZV9ob3VyIiwiY3JlYXRlX2NoZWNrbGlzdCIsImdldF90YXNrX2RhdGVfaG91cnMiLCJjb25maWd1cmVfYWdlbnRfYWNjZXNzIiwic2VuZF90YXNrX21lc3NhZ2UiLCJkZWxldGVfY2hlY2tsaXN0X2l0ZW0iLCJyZW1vdmVfdGFza190eXBlIiwicmVtb3ZlX3Rhc2tfbGFiZWwiLCJjb3VudF9kZWxpdmVyYWJsZSIsImNyZWF0ZV9yZXdvcmsiLCJ1cGRhdGVfcmV3b3JrIiwiSElUTF9UT09MX05BTUVTX0JZX1NQRUNJRklDSVRZIiwiT2JqZWN0Iiwia2V5cyIsInNvcnQiLCJhIiwiYiIsImxlbmd0aCIsImlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlIiwibWVzc2FnZSIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwidG9Mb3dlckNhc2UiLCJzdGFydHNXaXRoIiwibWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eSIsInRvb2xOYW1lIiwidCIsIm9wdGlvbnMiLCJrZXkiLCJwaGFzZSIsInVzZVJlc3VtaW5nRmFsbGJhY2siLCJyZXNvbHZlSGl0bFRvb2xGcm9tTm9kZU1lc3NhZ2UiLCJub2RlTWVzc2FnZSIsImFzVG9vbE5hbWUiLCJyZXBsYWNlIiwibWF0Y2hlZFRvb2wiLCJmaW5kIiwiaW5jbHVkZXMiLCJtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkiLCJoaXRsVG9vbCIsInRyaW1tZWRNZXNzYWdlIiwicmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkIiwiY29udGV4dCIsInRocmVhZElkIiwiX3JlZiIsIl9jb250ZXh0JHBlbmRpbmdBY3RpbyIsIl9jb250ZXh0JGFwcHJvdmFsIiwiX2NvbnRleHQkdGhyZWFkSWRzIiwicGVuZGluZyIsInBlbmRpbmdBY3Rpb25zIiwiYXBwcm92YWwiLCJwZW5kaW5nX2FjdGlvbnMiLCJmb3JUaHJlYWQiLCJmaWx0ZXIiLCJhY3Rpb24iLCJ0aHJlYWRfaWQiLCJ0aHJlYWRJZHMiLCJfY29udGV4dCR0aHJlYWRJZHMyIiwiZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMiLCJhY3Rpb25zIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwibWFwIiwidG9vbF9uYW1lIiwiQm9vbGVhbiIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicGVuZGluZ0ZvclRocmVhZCIsImRldGVjdGVkVG9vbHMiLCJsb2dTb3VyY2UiLCJtZXNzYWdlSWQiLCJtZXNzYWdlVGV4dCIsInRyaW1tZWROb2RlTWVzc2FnZSIsImFjdGl2aXR5RnJvbU5vZGVNZXNzYWdlIiwicmVzb2x2ZUFuZExvZyIsImFjdGl2aXR5IiwiY29uY2F0IiwicmVzb2x2ZWRBY3Rpdml0eSIsInJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5IiwiQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMiLCJST1RBVEFCTEVfUEhBU0VTIiwiZ2V0TWVzc2FnZUtleXNGb3JQaGFzZSIsImF0dGFjaG1lbnRzQ291bnQiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4IiwiaW5kZXgiLCJjbGFtcGVkSW5kZXgiLCJNYXRoIiwibWluIiwibWF4IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldEdlbmVyYXRpbmdMb2FkaW5nTWVzc2FnZSIsImNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJjdXJyZW50SW5kZXgiLCJhZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwibmV4dEluZGV4IiwiX29iamVjdFNwcmVhZCIsImNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImhhc0F0dGFjaG1lbnRzIiwiX29wdGlvbnMkYXR0YWNobWVudHNDIiwicmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IiwicGFyYW1zIiwic3RyZWFtQWN0aXZpdHkiLCJhY3RpdmVLZXlzIiwiYWN0aXZlTG9hZGluZ3MiLCJmaXJzdEtleSIsInJhdyIsInRyaW1tZWQiLCJsb2FkaW5nTWVzc2FnZSIsIndhaXRpbmdSZXNwb25zZSIsImlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5LCBTdHJlYW1BY3Rpdml0eVBoYXNlIH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgdHlwZSB7IEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBub3JtYWxpemVIaXRsVG9vbE5hbWUgfSBmcm9tICcuL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgeyBsb2dIaXRsQXBwcm92YWxDb250ZXh0IH0gZnJvbSAnLi9kZWJ1Z01haWFTc2VMb2cnXG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG5jb25zdCBUSElOS0lOR19NRVNTQUdFX0tFWVMgPSBbXG4gICdjaGF0LmFjdGl2aXR5LnRoaW5raW5nLmFuYWx5emluZycsXG4gICdjaGF0LmFjdGl2aXR5LnRoaW5raW5nLnJldmlld2luZycsXG4gICdjaGF0LmFjdGl2aXR5LnRoaW5raW5nLnBsYW5uaW5nJyxcbl0gYXMgY29uc3RcblxuY29uc3QgR0VORVJBVElOR19NRVNTQUdFX0tFWVMgPSBbXG4gICdjaGF0LmFjdGl2aXR5LmdlbmVyYXRpbmcuY29uc2lkZXJpbmcnLFxuICAnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nLmFsbW9zdFJlYWR5JyxcbiAgJ2NoYXQuYWN0aXZpdHkuZ2VuZXJhdGluZy5wcmVwYXJpbmcnLFxuXSBhcyBjb25zdFxuXG5jb25zdCBTRUFSQ0hfTUVTU0FHRV9LRVlTID0gWydjaGF0LmFjdGl2aXR5LnNlYXJjaC5zY2FubmluZycsICdjaGF0LmFjdGl2aXR5LnNlYXJjaC5zdW1tYXJpemluZyddIGFzIGNvbnN0XG5cbmNvbnN0IERFRVBfU0VBUkNIX01FU1NBR0VfS0VZUyA9IFtcbiAgJ2NoYXQuYWN0aXZpdHkuZGVlcFNlYXJjaC5leHBsb3JpbmcnLFxuICAnY2hhdC5hY3Rpdml0eS5kZWVwU2VhcmNoLmNyb3NzQ2hlY2tpbmcnLFxuXSBhcyBjb25zdFxuXG5jb25zdCBBVFRBQ0hNRU5UX01FU1NBR0VfS0VZUyA9IFsnY2hhdC5hY3Rpdml0eS5hdHRhY2htZW50LnJlYWRpbmcnLCAnY2hhdC5hY3Rpdml0eS5hdHRhY2htZW50LmV4dHJhY3RpbmcnXSBhcyBjb25zdFxuXG5jb25zdCBBVFRBQ0hNRU5UX01FU1NBR0VfS0VZU19QTFVSQUwgPSBbXG4gICdjaGF0LmFjdGl2aXR5LmF0dGFjaG1lbnQucmVhZGluZ1BsdXJhbCcsXG4gICdjaGF0LmFjdGl2aXR5LmF0dGFjaG1lbnQuZXh0cmFjdGluZ1BsdXJhbCcsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZID0gJ2NoYXQuYWN0aXZpdHkud3JpdGluZy5jb21wb3NpbmcnIGFzIGNvbnN0XG5cbi8qKiBUb29scyBISVRMIC8gbm9kZSBTU0Ug4oaSIGtleSBpMThuIGRlbCBpbmRpY2Fkb3IgZGUgYWN0aXZpZGFkICh0aWVtcG8gcHJlc2VudGUgY29udGludW8pLiAqL1xuY29uc3QgSElUTF9UT09MX0FDVElWSVRZX0tFWVM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNyZWF0ZV90YXNrOiAnY2hhdC5hY3Rpdml0eS5jcmVhdGluZ1Rhc2snLFxuICBjbG9uZV90YXNrOiAnY2hhdC5hY3Rpdml0eS5jcmVhdGluZ1Rhc2snLFxuICBjcmVhdGVfdGFza3NfYmF0Y2g6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nVGFza3NCYXRjaCcsXG4gIGNyZWF0ZV9hZ2VudDogJ2NoYXQuYWN0aXZpdHkuY3JlYXRpbmdBZ2VudCcsXG4gIGVkaXRfYWdlbnQ6ICdjaGF0LmFjdGl2aXR5LmVkaXRpbmdBZ2VudCcsXG4gIGVkaXRfdGFzazogJ2NoYXQuYWN0aXZpdHkuZWRpdGluZ1Rhc2snLFxuICBlZGl0X3Rhc2tzX2JhdGNoOiAnY2hhdC5hY3Rpdml0eS5lZGl0aW5nVGFza3NCYXRjaCcsXG4gIGRlbGV0ZV90YXNrOiAnY2hhdC5hY3Rpdml0eS5kZWxldGluZ1Rhc2snLFxuICBkZWxldGVfdGFza3NfYmF0Y2g6ICdjaGF0LmFjdGl2aXR5LmRlbGV0aW5nVGFza3NCYXRjaCcsXG4gIHRhc2tfYXNzaWduOiAnY2hhdC5hY3Rpdml0eS5hc3NpZ25pbmdVc2VyJyxcbiAgdGFza191bmFzc2lnbjogJ2NoYXQuYWN0aXZpdHkudW5hc3NpZ25pbmdVc2VyJyxcbiAgYXNzaWduX3Rhc2tfbGFiZWw6ICdjaGF0LmFjdGl2aXR5LmFzc2lnbmluZ0xhYmVsJyxcbiAgdXBkYXRlX3Rhc2tfdHlwZTogJ2NoYXQuYWN0aXZpdHkudXBkYXRpbmdUYXNrVHlwZScsXG4gIHVwZGF0ZV9lc3RpbWF0ZWRfaG91cnM6ICdjaGF0LmFjdGl2aXR5LnVwZGF0aW5nRXN0aW1hdGVkSG91cnMnLFxuICB1cGRhdGVfZGVsaXZlcmFibGU6ICdjaGF0LmFjdGl2aXR5LnVwZGF0aW5nRGVsaXZlcmFibGUnLFxuICBjcmVhdGVfaG91cjogJ2NoYXQuYWN0aXZpdHkubG9nZ2luZ0hvdXJzJyxcbiAgY3JlYXRlX2NoZWNrbGlzdDogJ2NoYXQuYWN0aXZpdHkuY3JlYXRpbmdDaGVja2xpc3QnLFxuICBnZXRfdGFza19kYXRlX2hvdXJzOiAnY2hhdC5hY3Rpdml0eS5xdWVyeWluZ0hvdXJzJyxcbiAgY29uZmlndXJlX2FnZW50X2FjY2VzczogJ2NoYXQuYWN0aXZpdHkuY29uZmlndXJpbmdBZ2VudEFjY2VzcycsXG4gIHNlbmRfdGFza19tZXNzYWdlOiAnY2hhdC5hY3Rpdml0eS5zZW5kaW5nVGFza01lc3NhZ2UnLFxuICBkZWxldGVfY2hlY2tsaXN0X2l0ZW06ICdjaGF0LmFjdGl2aXR5LmRlbGV0aW5nQ2hlY2tsaXN0SXRlbScsXG4gIHJlbW92ZV90YXNrX3R5cGU6ICdjaGF0LmFjdGl2aXR5LnJlbW92aW5nVGFza1R5cGUnLFxuICByZW1vdmVfdGFza19sYWJlbDogJ2NoYXQuYWN0aXZpdHkucmVtb3ZpbmdMYWJlbCcsXG4gIGNvdW50X2RlbGl2ZXJhYmxlOiAnY2hhdC5hY3Rpdml0eS51cGRhdGluZ0RlbGl2ZXJhYmxlQ291bnQnLFxuICBjcmVhdGVfcmV3b3JrOiAnY2hhdC5hY3Rpdml0eS5jcmVhdGluZ1Jld29yaycsXG4gIHVwZGF0ZV9yZXdvcms6ICdjaGF0LmFjdGl2aXR5LnVwZGF0aW5nUmV3b3JrJyxcbn1cblxuY29uc3QgSElUTF9UT09MX05BTUVTX0JZX1NQRUNJRklDSVRZID0gT2JqZWN0LmtleXMoSElUTF9UT09MX0FDVElWSVRZX0tFWVMpLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpXG5cbi8qKiBNZW5zYWplcyBnZW7DqXJpY29zIGRlbCBiYWNrZW5kIGN1YW5kbyBubyBoYXkgZGV0YWxsZSBkZSB0b29sIChjb250aW51ZS10aHJlYWQpLiAqL1xuY29uc3QgaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBtZXNzYWdlLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gIHJldHVybiAoXG4gICAgbm9ybWFsaXplZC5zdGFydHNXaXRoKCdlamVjdXRhbmRvIGFjY2nDs24gYXByb2JhZGEnKSB8fFxuICAgIG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnZXhlY3V0aW5nIGFwcHJvdmVkIGFjdGlvbicpIHx8XG4gICAgbm9ybWFsaXplZC5zdGFydHNXaXRoKCdleGVjdXRhbmRvIGHDp8OjbyBhcHJvdmFkYScpXG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkgPSAoXG4gIHRvb2xOYW1lOiBzdHJpbmcsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBvcHRpb25zPzogeyB1c2VSZXN1bWluZ0ZhbGxiYWNrPzogYm9vbGVhbiB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVIaXRsVG9vbE5hbWUodG9vbE5hbWUpXG4gIGNvbnN0IGtleSA9IEhJVExfVE9PTF9BQ1RJVklUWV9LRVlTW25vcm1hbGl6ZWRdXG4gIGlmIChrZXkpIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoa2V5KSB9XG4gIH1cbiAgaWYgKG9wdGlvbnM/LnVzZVJlc3VtaW5nRmFsbGJhY2spIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkucmVzdW1pbmdBY3Rpb24nKSB9XG4gIH1cbiAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmV4ZWN1dGluZ0FjdGlvbicpIH1cbn1cblxuY29uc3QgcmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlID0gKG5vZGVNZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vZGVNZXNzYWdlLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gIGlmICghbm9ybWFsaXplZCkgcmV0dXJuIG51bGxcblxuICBpZiAoSElUTF9UT09MX0FDVElWSVRZX0tFWVNbbm9ybWFsaXplZF0pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplZFxuICB9XG5cbiAgY29uc3QgYXNUb29sTmFtZSA9IG5vcm1hbGl6ZUhpdGxUb29sTmFtZShub3JtYWxpemVkLnJlcGxhY2UoL1xccysvZywgJ18nKSlcbiAgaWYgKEhJVExfVE9PTF9BQ1RJVklUWV9LRVlTW2FzVG9vbE5hbWVdKSB7XG4gICAgcmV0dXJuIGFzVG9vbE5hbWVcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZWRUb29sID0gSElUTF9UT09MX05BTUVTX0JZX1NQRUNJRklDSVRZLmZpbmQodG9vbE5hbWUgPT4gbm9ybWFsaXplZC5pbmNsdWRlcyh0b29sTmFtZSkpXG4gIHJldHVybiBtYXRjaGVkVG9vbCA/PyBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkgPSAoXG4gIG5vZGVNZXNzYWdlOiBzdHJpbmcsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBvcHRpb25zPzogeyB1c2VSZXN1bWluZ0ZhbGxiYWNrPzogYm9vbGVhbiB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub2RlTWVzc2FnZS50b0xvd2VyQ2FzZSgpXG5cbiAgY29uc3QgaGl0bFRvb2wgPSByZXNvbHZlSGl0bFRvb2xGcm9tTm9kZU1lc3NhZ2Uobm9kZU1lc3NhZ2UpXG4gIGlmIChoaXRsVG9vbCkge1xuICAgIHJldHVybiBtYXBIaXRsVG9vbE5hbWVUb1N0cmVhbUFjdGl2aXR5KGhpdGxUb29sLCB0LCBvcHRpb25zKVxuICB9XG5cbiAgaWYgKFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3Jlc3BvbnNlX2ZpbGVfZ2VuZXJhdGlvbicpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnZ2VuZXJhbmRvIGFyY2hpdm8nKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2dlbmVyYXRpbmcgZmlsZScpXG4gICkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nRmlsZScpIH1cbiAgfVxuICBpZiAoXG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygndGF2aWx5JykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdzZWFyY2hfd2ViJykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdidXNjYW5kbyBlbiBsYSB3ZWInKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3NlYXJjaGluZyB0aGUgd2ViJylcbiAgKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdzZWFyY2gnLCBtZXNzYWdlOiB0KFNFQVJDSF9NRVNTQUdFX0tFWVNbMF0pIH1cbiAgfVxuXG4gIGNvbnN0IHRyaW1tZWRNZXNzYWdlID0gbm9kZU1lc3NhZ2UudHJpbSgpXG4gIGlmICh0cmltbWVkTWVzc2FnZSAmJiAhaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UodHJpbW1lZE1lc3NhZ2UpKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0cmltbWVkTWVzc2FnZSB9XG4gIH1cblxuICBpZiAoaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UodHJpbW1lZE1lc3NhZ2UpIHx8IG9wdGlvbnM/LnVzZVJlc3VtaW5nRmFsbGJhY2spIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkucmVzdW1pbmdBY3Rpb24nKSB9XG4gIH1cbiAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmV4ZWN1dGluZ0FjdGlvbicpIH1cbn1cblxuZXhwb3J0IHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZD86IHN0cmluZ1xuICBtZXNzYWdlVGV4dD86IHN0cmluZ1xuICBhcHByb3ZhbD86IEFwcHJvdmFsUmVxdWVzdFxuICBwZW5kaW5nQWN0aW9ucz86IFBlbmRpbmdBY3Rpb25bXVxuICB0aHJlYWRJZHM/OiBzdHJpbmdbXVxufVxuXG5jb25zdCByZXNvbHZlUGVuZGluZ0FjdGlvbnNGb3JUaHJlYWQgPSAoXG4gIGNvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdGhyZWFkSWQ/OiBzdHJpbmdcbik6IFBlbmRpbmdBY3Rpb25bXSA9PiB7XG4gIGNvbnN0IHBlbmRpbmcgPSBjb250ZXh0Py5wZW5kaW5nQWN0aW9ucyA/PyBjb250ZXh0Py5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zID8/IFtdXG4gIGlmICghcGVuZGluZy5sZW5ndGgpIHJldHVybiBbXVxuXG4gIGlmICh0aHJlYWRJZCkge1xuICAgIGNvbnN0IGZvclRocmVhZCA9IHBlbmRpbmcuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkID09PSB0aHJlYWRJZClcbiAgICBpZiAoZm9yVGhyZWFkLmxlbmd0aCkgcmV0dXJuIGZvclRocmVhZFxuICB9XG5cbiAgaWYgKGNvbnRleHQ/LnRocmVhZElkcz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHBlbmRpbmcuZmlsdGVyKGFjdGlvbiA9PiBjb250ZXh0LnRocmVhZElkcz8uaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gIH1cblxuICByZXR1cm4gcGVuZGluZ1xufVxuXG5jb25zdCBkZXRlY3RUb29sc0Zyb21QZW5kaW5nQWN0aW9ucyA9IChhY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmdbXSA9PiBbXG4gIC4uLm5ldyBTZXQoYWN0aW9ucy5tYXAoYWN0aW9uID0+IG5vcm1hbGl6ZUhpdGxUb29sTmFtZShhY3Rpb24udG9vbF9uYW1lKSkuZmlsdGVyKEJvb2xlYW4pKSxcbl1cblxuLyoqIFJlc3VlbHZlIGluZGljYWRvciBISVRMIHByaW9yaXphbmRvIHBlbmRpbmdfYWN0aW9ucyBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBhbnRlcmlvci4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSA9IChcbiAgbm9kZU1lc3NhZ2U6IHN0cmluZyxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIHRocmVhZElkPzogc3RyaW5nLFxuICBvcHRpb25zPzogeyB1c2VSZXN1bWluZ0ZhbGxiYWNrPzogYm9vbGVhbjsgbG9nU291cmNlPzogc3RyaW5nIH1cbik6IFN0cmVhbUFjdGl2aXR5ID0+IHtcbiAgY29uc3QgcGVuZGluZ0ZvclRocmVhZCA9IHJlc29sdmVQZW5kaW5nQWN0aW9uc0ZvclRocmVhZChjb250ZXh0LCB0aHJlYWRJZClcbiAgY29uc3QgZGV0ZWN0ZWRUb29scyA9IGRldGVjdFRvb2xzRnJvbVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdGb3JUaHJlYWQpXG5cbiAgaWYgKG9wdGlvbnM/LmxvZ1NvdXJjZSkge1xuICAgIGxvZ0hpdGxBcHByb3ZhbENvbnRleHQob3B0aW9ucy5sb2dTb3VyY2UsIHtcbiAgICAgIG1lc3NhZ2VJZDogY29udGV4dD8ubWVzc2FnZUlkLFxuICAgICAgbWVzc2FnZVRleHQ6IGNvbnRleHQ/Lm1lc3NhZ2VUZXh0LFxuICAgICAgdGhyZWFkSWQsXG4gICAgICB0aHJlYWRJZHM6IGNvbnRleHQ/LnRocmVhZElkcyxcbiAgICAgIG5vZGVNZXNzYWdlLFxuICAgICAgcGVuZGluZ0FjdGlvbnM6IHBlbmRpbmdGb3JUaHJlYWQsXG4gICAgICBkZXRlY3RlZFRvb2xzLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCB0cmltbWVkTm9kZU1lc3NhZ2UgPSBub2RlTWVzc2FnZS50cmltKClcbiAgY29uc3QgYWN0aXZpdHlGcm9tTm9kZU1lc3NhZ2UgPVxuICAgIHRyaW1tZWROb2RlTWVzc2FnZSAmJiAhaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UodHJpbW1lZE5vZGVNZXNzYWdlKVxuICAgICAgPyB7IHBoYXNlOiAnYWN0aW9uJyBhcyBjb25zdCwgbWVzc2FnZTogdHJpbW1lZE5vZGVNZXNzYWdlIH1cbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IHJlc29sdmVBbmRMb2cgPSAoYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5KSA9PiB7XG4gICAgaWYgKG9wdGlvbnM/LmxvZ1NvdXJjZSkge1xuICAgICAgbG9nSGl0bEFwcHJvdmFsQ29udGV4dChgJHtvcHRpb25zLmxvZ1NvdXJjZX06cmVzb2x2ZWRgLCB7XG4gICAgICAgIGRldGVjdGVkVG9vbHMsXG4gICAgICAgIHJlc29sdmVkQWN0aXZpdHk6IGFjdGl2aXR5LFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2aXR5XG4gIH1cblxuICBpZiAoZGV0ZWN0ZWRUb29scy5sZW5ndGggPj0gMSkge1xuICAgIGlmIChhY3Rpdml0eUZyb21Ob2RlTWVzc2FnZSkge1xuICAgICAgcmV0dXJuIHJlc29sdmVBbmRMb2coYWN0aXZpdHlGcm9tTm9kZU1lc3NhZ2UpXG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlQW5kTG9nKG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoZGV0ZWN0ZWRUb29sc1swXSwgdCwgb3B0aW9ucykpXG4gIH1cblxuICByZXR1cm4gcmVzb2x2ZUFuZExvZyhtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkobm9kZU1lc3NhZ2UsIHQsIG9wdGlvbnMpKVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkgPSAoXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsLFxuICBvcHRpb25zPzogeyBsb2dTb3VyY2U/OiBzdHJpbmcgfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBjb25zdCBwZW5kaW5nQWN0aW9ucyA9IHJlc29sdmVQZW5kaW5nQWN0aW9uc0ZvclRocmVhZChjb250ZXh0KVxuICBjb25zdCBkZXRlY3RlZFRvb2xzID0gZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMocGVuZGluZ0FjdGlvbnMpXG5cbiAgaWYgKG9wdGlvbnM/LmxvZ1NvdXJjZSkge1xuICAgIGxvZ0hpdGxBcHByb3ZhbENvbnRleHQob3B0aW9ucy5sb2dTb3VyY2UsIHtcbiAgICAgIG1lc3NhZ2VJZDogY29udGV4dD8ubWVzc2FnZUlkLFxuICAgICAgbWVzc2FnZVRleHQ6IGNvbnRleHQ/Lm1lc3NhZ2VUZXh0LFxuICAgICAgdGhyZWFkSWRzOiBjb250ZXh0Py50aHJlYWRJZHMsXG4gICAgICBwZW5kaW5nQWN0aW9ucyxcbiAgICAgIGRldGVjdGVkVG9vbHMsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChkZXRlY3RlZFRvb2xzLmxlbmd0aCA+PSAxKSB7XG4gICAgY29uc3QgYWN0aXZpdHkgPSBtYXBIaXRsVG9vbE5hbWVUb1N0cmVhbUFjdGl2aXR5KGRldGVjdGVkVG9vbHNbMF0sIHQsIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9KVxuICAgIGlmIChvcHRpb25zPy5sb2dTb3VyY2UpIHtcbiAgICAgIGxvZ0hpdGxBcHByb3ZhbENvbnRleHQoYCR7b3B0aW9ucy5sb2dTb3VyY2V9OnJlc29sdmVkYCwge1xuICAgICAgICBkZXRlY3RlZFRvb2xzLFxuICAgICAgICByZXNvbHZlZEFjdGl2aXR5OiBhY3Rpdml0eSxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBhY3Rpdml0eVxuICB9XG5cbiAgcmV0dXJuIHsgcGhhc2U6ICdwcm9jZXNzaW5nJywgbWVzc2FnZTogdCgnY2hhdC5wcm9jZXNzaW5nJykgfVxufVxuXG5leHBvcnQgY29uc3QgQUNUSVZJVFlfTUVTU0FHRV9ST1RBVEVfTVMgPSAzMjAwXG5cbmNvbnN0IFJPVEFUQUJMRV9QSEFTRVM6IFN0cmVhbUFjdGl2aXR5UGhhc2VbXSA9IFsnZ2VuZXJhdGluZycsICd0aGlua2luZycsICdzZWFyY2gnLCAnZGVlcF9zZWFyY2gnLCAnYXR0YWNobWVudCddXG5cbmNvbnN0IGdldE1lc3NhZ2VLZXlzRm9yUGhhc2UgPSAocGhhc2U6IFN0cmVhbUFjdGl2aXR5UGhhc2UsIGF0dGFjaG1lbnRzQ291bnQgPSAwKTogcmVhZG9ubHkgc3RyaW5nW10gfCBudWxsID0+IHtcbiAgc3dpdGNoIChwaGFzZSkge1xuICAgIGNhc2UgJ2dlbmVyYXRpbmcnOlxuICAgICAgcmV0dXJuIEdFTkVSQVRJTkdfTUVTU0FHRV9LRVlTXG4gICAgY2FzZSAndGhpbmtpbmcnOlxuICAgICAgcmV0dXJuIFRISU5LSU5HX01FU1NBR0VfS0VZU1xuICAgIGNhc2UgJ3NlYXJjaCc6XG4gICAgICByZXR1cm4gU0VBUkNIX01FU1NBR0VfS0VZU1xuICAgIGNhc2UgJ2RlZXBfc2VhcmNoJzpcbiAgICAgIHJldHVybiBERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVNcbiAgICBjYXNlICdhdHRhY2htZW50JzpcbiAgICAgIHJldHVybiBhdHRhY2htZW50c0NvdW50ID4gMSA/IEFUVEFDSE1FTlRfTUVTU0FHRV9LRVlTX1BMVVJBTCA6IEFUVEFDSE1FTlRfTUVTU0FHRV9LRVlTXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXggPSAoXG4gIHBoYXNlOiBTdHJlYW1BY3Rpdml0eVBoYXNlLFxuICBpbmRleDogbnVtYmVyLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgYXR0YWNobWVudHNDb3VudCA9IDBcbik6IHN0cmluZyA9PiB7XG4gIGlmIChwaGFzZSA9PT0gJ3dyaXRpbmcnKSB7XG4gICAgcmV0dXJuIHQoV1JJVElOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSlcbiAgfVxuXG4gIGNvbnN0IGtleXMgPSBnZXRNZXNzYWdlS2V5c0ZvclBoYXNlKHBoYXNlLCBhdHRhY2htZW50c0NvdW50KVxuICBpZiAoIWtleXM/Lmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgY29uc3QgY2xhbXBlZEluZGV4ID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgaW5kZXgpLCBrZXlzLmxlbmd0aCAtIDEpXG4gIHJldHVybiB0KGtleXNbY2xhbXBlZEluZGV4XSlcbn1cblxuZXhwb3J0IGNvbnN0IGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UgPSAoaW5kZXg6IG51bWJlciwgdDogVHJhbnNsYXRlRm4pOiBzdHJpbmcgPT5cbiAgZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCgndGhpbmtpbmcnLCBpbmRleCwgdClcblxuZXhwb3J0IGNvbnN0IGdldEdlbmVyYXRpbmdMb2FkaW5nTWVzc2FnZSA9IChpbmRleDogbnVtYmVyLCB0OiBUcmFuc2xhdGVGbik6IHN0cmluZyA9PlxuICBnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4KCdnZW5lcmF0aW5nJywgaW5kZXgsIHQpXG5cbmV4cG9ydCBjb25zdCBjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlID0gKHBoYXNlOiBTdHJlYW1BY3Rpdml0eVBoYXNlLCBjdXJyZW50SW5kZXg6IG51bWJlcik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBrZXlzID0gZ2V0TWVzc2FnZUtleXNGb3JQaGFzZShwaGFzZSlcbiAgaWYgKCFrZXlzKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIGN1cnJlbnRJbmRleCA8IGtleXMubGVuZ3RoIC0gMVxufVxuXG5leHBvcnQgY29uc3QgYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSA9IChcbiAgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5LFxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgdDogVHJhbnNsYXRlRm5cbik6IHsgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5OyBuZXh0SW5kZXg6IG51bWJlciB9IHwgbnVsbCA9PiB7XG4gIGlmICghY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZShhY3Rpdml0eS5waGFzZSwgY3VycmVudEluZGV4KSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggKyAxXG4gIHJldHVybiB7XG4gICAgYWN0aXZpdHk6IHtcbiAgICAgIHBoYXNlOiBhY3Rpdml0eS5waGFzZSxcbiAgICAgIG1lc3NhZ2U6IGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgoYWN0aXZpdHkucGhhc2UsIG5leHRJbmRleCwgdCwgYWN0aXZpdHkuYXR0YWNobWVudHNDb3VudCksXG4gICAgICAuLi4oYWN0aXZpdHkuYXR0YWNobWVudHNDb3VudCAhPSBudWxsICYmIHsgYXR0YWNobWVudHNDb3VudDogYWN0aXZpdHkuYXR0YWNobWVudHNDb3VudCB9KSxcbiAgICB9LFxuICAgIG5leHRJbmRleCxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY2FuUm90YXRlU3RyZWFtQWN0aXZpdHlQaGFzZSA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSk6IGJvb2xlYW4gPT4gUk9UQVRBQkxFX1BIQVNFUy5pbmNsdWRlcyhwaGFzZSlcblxuZXhwb3J0IGNvbnN0IGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSA9ICh0OiBUcmFuc2xhdGVGbik6IFN0cmVhbUFjdGl2aXR5ID0+ICh7XG4gIHBoYXNlOiAnd3JpdGluZycsXG4gIG1lc3NhZ2U6IHQoV1JJVElOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSksXG59KVxuXG5leHBvcnQgY29uc3QgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5ID0gKFxuICB0OiBUcmFuc2xhdGVGbixcbiAgb3B0aW9uczoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbik6IFN0cmVhbUFjdGl2aXR5ID0+IHtcbiAgaWYgKG9wdGlvbnMuaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ3NlYXJjaCcsIG1lc3NhZ2U6IHQoU0VBUkNIX01FU1NBR0VfS0VZU1swXSkgfVxuICB9XG4gIGlmIChvcHRpb25zLmlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnZGVlcF9zZWFyY2gnLCBtZXNzYWdlOiB0KERFRVBfU0VBUkNIX01FU1NBR0VfS0VZU1swXSkgfVxuICB9XG4gIGlmIChvcHRpb25zLmhhc0F0dGFjaG1lbnRzKSB7XG4gICAgY29uc3QgYXR0YWNobWVudHNDb3VudCA9IG9wdGlvbnMuYXR0YWNobWVudHNDb3VudCA/PyAwXG4gICAgcmV0dXJuIHtcbiAgICAgIHBoYXNlOiAnYXR0YWNobWVudCcsXG4gICAgICBtZXNzYWdlOiBnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4KCdhdHRhY2htZW50JywgMCwgdCwgYXR0YWNobWVudHNDb3VudCksXG4gICAgICBhdHRhY2htZW50c0NvdW50LFxuICAgIH1cbiAgfVxuICByZXR1cm4geyBwaGFzZTogJ2dlbmVyYXRpbmcnLCBtZXNzYWdlOiB0KEdFTkVSQVRJTkdfTUVTU0FHRV9LRVlTWzBdKSB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU3RyZWFtTG9hZGluZ0Rpc3BsYXkgPSAocGFyYW1zOiB7XG4gIHN0cmVhbUFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSB8IG51bGxcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyB8IG51bGxcbiAgYWN0aXZlTG9hZGluZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgd2FpdGluZ1Jlc3BvbnNlOiBib29sZWFuXG4gIGlzV2ViU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIGlzRGVlcFNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICBoYXNBdHRhY2htZW50czogYm9vbGVhblxuICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIHQ6IFRyYW5zbGF0ZUZuXG59KTogU3RyZWFtQWN0aXZpdHkgfCBudWxsID0+IHtcbiAgaWYgKHBhcmFtcy5zdHJlYW1BY3Rpdml0eSkge1xuICAgIHJldHVybiBwYXJhbXMuc3RyZWFtQWN0aXZpdHlcbiAgfVxuXG4gIGNvbnN0IGFjdGl2ZUtleXMgPSBPYmplY3Qua2V5cyhwYXJhbXMuYWN0aXZlTG9hZGluZ3MpXG4gIGlmIChhY3RpdmVLZXlzLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBmaXJzdEtleSA9IGFjdGl2ZUtleXNbMF1cbiAgICBjb25zdCByYXcgPSBwYXJhbXMuYWN0aXZlTG9hZGluZ3NbZmlyc3RLZXldXG4gICAgaWYgKHJhdyAmJiByYXcgIT09IHBhcmFtcy50KCdjaGF0LnByb2Nlc3NpbmcnKSkge1xuICAgICAgY29uc3QgaGl0bFRvb2wgPSByZXNvbHZlSGl0bFRvb2xGcm9tTm9kZU1lc3NhZ2UocmF3KVxuICAgICAgaWYgKGhpdGxUb29sKSB7XG4gICAgICAgIHJldHVybiBtYXBIaXRsVG9vbE5hbWVUb1N0cmVhbUFjdGl2aXR5KGhpdGxUb29sLCBwYXJhbXMudClcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHJpbW1lZCA9IHJhdy50cmltKClcbiAgICAgIGlmICh0cmltbWVkICYmICFpc0dlbmVyaWNSZXN1bWVOb2RlTWVzc2FnZSh0cmltbWVkKSkge1xuICAgICAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHRyaW1tZWQgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWFwTm9kZU1lc3NhZ2VUb1N0cmVhbUFjdGl2aXR5KHJhdywgcGFyYW1zLnQsIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9KVxuICAgIH1cbiAgICByZXR1cm4geyBwaGFzZTogJ3Byb2Nlc3NpbmcnLCBtZXNzYWdlOiBwYXJhbXMudCgnY2hhdC5wcm9jZXNzaW5nJykgfVxuICB9XG5cbiAgaWYgKHBhcmFtcy5sb2FkaW5nTWVzc2FnZSkge1xuICAgIGlmIChcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQud3JpdGluZycpIHx8XG4gICAgICBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KFdSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHBhcmFtcy50KVxuICAgIH1cbiAgICBpZiAocGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nJykpIHtcbiAgICAgIHJldHVybiB7IHBoYXNlOiAnZ2VuZXJhdGluZycsIG1lc3NhZ2U6IHBhcmFtcy5sb2FkaW5nTWVzc2FnZSB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ1dlYlNlYXJjaCcpIHx8XG4gICAgICBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdEZWVwU2VhcmNoJykgfHxcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ0F0dGFjaG1lbnQnKVxuICAgICkge1xuICAgICAgcmV0dXJuIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eShwYXJhbXMudCwge1xuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nV2ViU2VhcmNoJyksXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nRGVlcFNlYXJjaCcpLFxuICAgICAgICBoYXNBdHRhY2htZW50czogcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpLFxuICAgICAgICBhdHRhY2htZW50c0NvdW50OiBwYXJhbXMuYXR0YWNobWVudHNDb3VudCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlIH1cbiAgfVxuXG4gIGlmIChwYXJhbXMud2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eShwYXJhbXMudCwge1xuICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IHBhcmFtcy5pc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogcGFyYW1zLmlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgIGhhc0F0dGFjaG1lbnRzOiBwYXJhbXMuaGFzQXR0YWNobWVudHMsXG4gICAgICBhdHRhY2htZW50c0NvdW50OiBwYXJhbXMuYXR0YWNobWVudHNDb3VudCxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQgPSAobWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuID0+XG4gIHR5cGVvZiBtZXNzYWdlSWQgPT09ICdzdHJpbmcnICYmIG1lc3NhZ2VJZC5pbmNsdWRlcygnLXN0cmVhbWluZycpXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxTQUFTQSxxQkFBcUIsUUFBUSxpQkFBaUI7QUFDdkQsU0FBU0Msc0JBQXNCLFFBQVEsbUJBQW1CO0FBSTFELElBQU1DLHFCQUFxQixHQUFHLENBQzVCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsaUNBQWlDLENBQ3pCO0FBRVYsSUFBTUMsdUJBQXVCLEdBQUcsQ0FDOUIsc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0QyxvQ0FBb0MsQ0FDNUI7QUFFVixJQUFNQyxtQkFBbUIsR0FBRyxDQUFDLCtCQUErQixFQUFFLGtDQUFrQyxDQUFVO0FBRTFHLElBQU1DLHdCQUF3QixHQUFHLENBQy9CLG9DQUFvQyxFQUNwQyx3Q0FBd0MsQ0FDaEM7QUFFVixJQUFNQyx1QkFBdUIsR0FBRyxDQUFDLGtDQUFrQyxFQUFFLHFDQUFxQyxDQUFVO0FBRXBILElBQU1DLDhCQUE4QixHQUFHLENBQ3JDLHdDQUF3QyxFQUN4QywyQ0FBMkMsQ0FDbkM7QUFFVixPQUFPLElBQU1DLDRCQUE0QixHQUFHLGlDQUEwQzs7QUFFdEY7QUFDQSxJQUFNQyx1QkFBK0MsR0FBRztFQUN0REMsV0FBVyxFQUFFLDRCQUE0QjtFQUN6Q0MsVUFBVSxFQUFFLDRCQUE0QjtFQUN4Q0Msa0JBQWtCLEVBQUUsa0NBQWtDO0VBQ3REQyxZQUFZLEVBQUUsNkJBQTZCO0VBQzNDQyxVQUFVLEVBQUUsNEJBQTRCO0VBQ3hDQyxTQUFTLEVBQUUsMkJBQTJCO0VBQ3RDQyxnQkFBZ0IsRUFBRSxpQ0FBaUM7RUFDbkRDLFdBQVcsRUFBRSw0QkFBNEI7RUFDekNDLGtCQUFrQixFQUFFLGtDQUFrQztFQUN0REMsV0FBVyxFQUFFLDZCQUE2QjtFQUMxQ0MsYUFBYSxFQUFFLCtCQUErQjtFQUM5Q0MsaUJBQWlCLEVBQUUsOEJBQThCO0VBQ2pEQyxnQkFBZ0IsRUFBRSxnQ0FBZ0M7RUFDbERDLHNCQUFzQixFQUFFLHNDQUFzQztFQUM5REMsa0JBQWtCLEVBQUUsbUNBQW1DO0VBQ3ZEQyxXQUFXLEVBQUUsNEJBQTRCO0VBQ3pDQyxnQkFBZ0IsRUFBRSxpQ0FBaUM7RUFDbkRDLG1CQUFtQixFQUFFLDZCQUE2QjtFQUNsREMsc0JBQXNCLEVBQUUsc0NBQXNDO0VBQzlEQyxpQkFBaUIsRUFBRSxrQ0FBa0M7RUFDckRDLHFCQUFxQixFQUFFLHFDQUFxQztFQUM1REMsZ0JBQWdCLEVBQUUsZ0NBQWdDO0VBQ2xEQyxpQkFBaUIsRUFBRSw2QkFBNkI7RUFDaERDLGlCQUFpQixFQUFFLHdDQUF3QztFQUMzREMsYUFBYSxFQUFFLDhCQUE4QjtFQUM3Q0MsYUFBYSxFQUFFO0FBQ2pCLENBQUM7QUFFRCxJQUFNQyw4QkFBOEIsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUM3Qix1QkFBdUIsQ0FBQyxDQUFDOEIsSUFBSSxDQUFDLFVBQUNDLENBQUMsRUFBRUMsQ0FBQztFQUFBLE9BQUtBLENBQUMsQ0FBQ0MsTUFBTSxHQUFHRixDQUFDLENBQUNFLE1BQU07QUFBQSxFQUFDOztBQUUvRztBQUNBLElBQU1DLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQUlDLE9BQWUsRUFBYztFQUMvRCxJQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQ0UsSUFBSSxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7RUFDL0MsT0FDRUYsVUFBVSxDQUFDRyxVQUFVLENBQUMsNEJBQTRCLENBQUMsSUFDbkRILFVBQVUsQ0FBQ0csVUFBVSxDQUFDLDJCQUEyQixDQUFDLElBQ2xESCxVQUFVLENBQUNHLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQztBQUVyRCxDQUFDO0FBRUQsT0FBTyxJQUFNQywrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUMxQ0MsUUFBZ0IsRUFDaEJDLENBQWMsRUFDZEMsT0FBMkMsRUFDeEI7RUFDbkIsSUFBTVAsVUFBVSxHQUFHN0MscUJBQXFCLENBQUNrRCxRQUFRLENBQUM7RUFDbEQsSUFBTUcsR0FBRyxHQUFHNUMsdUJBQXVCLENBQUNvQyxVQUFVLENBQUM7RUFDL0MsSUFBSVEsR0FBRyxFQUFFO0lBQ1AsT0FBTztNQUFFQyxLQUFLLEVBQUUsUUFBUTtNQUFFVixPQUFPLEVBQUVPLENBQUMsQ0FBQ0UsR0FBRztJQUFFLENBQUM7RUFDN0M7RUFDQSxJQUFJRCxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFFRyxtQkFBbUIsRUFBRTtJQUNoQyxPQUFPO01BQUVELEtBQUssRUFBRSxRQUFRO01BQUVWLE9BQU8sRUFBRU8sQ0FBQyxDQUFDLDhCQUE4QjtJQUFFLENBQUM7RUFDeEU7RUFDQSxPQUFPO0lBQUVHLEtBQUssRUFBRSxRQUFRO0lBQUVWLE9BQU8sRUFBRU8sQ0FBQyxDQUFDLHNCQUFzQjtFQUFFLENBQUM7QUFDaEUsQ0FBQztBQUVELElBQU1LLDhCQUE4QixHQUFHLFNBQWpDQSw4QkFBOEJBLENBQUlDLFdBQW1CLEVBQW9CO0VBQzdFLElBQU1aLFVBQVUsR0FBR1ksV0FBVyxDQUFDVixXQUFXLENBQUMsQ0FBQyxDQUFDRCxJQUFJLENBQUMsQ0FBQztFQUNuRCxJQUFJLENBQUNELFVBQVUsRUFBRSxPQUFPLElBQUk7RUFFNUIsSUFBSXBDLHVCQUF1QixDQUFDb0MsVUFBVSxDQUFDLEVBQUU7SUFDdkMsT0FBT0EsVUFBVTtFQUNuQjtFQUVBLElBQU1hLFVBQVUsR0FBRzFELHFCQUFxQixDQUFDNkMsVUFBVSxDQUFDYyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0VBQ3pFLElBQUlsRCx1QkFBdUIsQ0FBQ2lELFVBQVUsQ0FBQyxFQUFFO0lBQ3ZDLE9BQU9BLFVBQVU7RUFDbkI7RUFFQSxJQUFNRSxXQUFXLEdBQUd4Qiw4QkFBOEIsQ0FBQ3lCLElBQUksQ0FBQyxVQUFBWCxRQUFRO0lBQUEsT0FBSUwsVUFBVSxDQUFDaUIsUUFBUSxDQUFDWixRQUFRLENBQUM7RUFBQSxFQUFDO0VBQ2xHLE9BQU9VLFdBQVcsYUFBWEEsV0FBVyxjQUFYQSxXQUFXLEdBQUksSUFBSTtBQUM1QixDQUFDO0FBRUQsT0FBTyxJQUFNRyw4QkFBOEIsR0FBRyxTQUFqQ0EsOEJBQThCQSxDQUN6Q04sV0FBbUIsRUFDbkJOLENBQWMsRUFDZEMsT0FBMkMsRUFDeEI7RUFDbkIsSUFBTVAsVUFBVSxHQUFHWSxXQUFXLENBQUNWLFdBQVcsQ0FBQyxDQUFDO0VBRTVDLElBQU1pQixRQUFRLEdBQUdSLDhCQUE4QixDQUFDQyxXQUFXLENBQUM7RUFDNUQsSUFBSU8sUUFBUSxFQUFFO0lBQ1osT0FBT2YsK0JBQStCLENBQUNlLFFBQVEsRUFBRWIsQ0FBQyxFQUFFQyxPQUFPLENBQUM7RUFDOUQ7RUFFQSxJQUNFUCxVQUFVLENBQUNpQixRQUFRLENBQUMsMEJBQTBCLENBQUMsSUFDL0NqQixVQUFVLENBQUNpQixRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFDeENqQixVQUFVLENBQUNpQixRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFDdEM7SUFDQSxPQUFPO01BQUVSLEtBQUssRUFBRSxRQUFRO01BQUVWLE9BQU8sRUFBRU8sQ0FBQyxDQUFDLDhCQUE4QjtJQUFFLENBQUM7RUFDeEU7RUFDQSxJQUNFTixVQUFVLENBQUNpQixRQUFRLENBQUMsUUFBUSxDQUFDLElBQzdCakIsVUFBVSxDQUFDaUIsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUNqQ2pCLFVBQVUsQ0FBQ2lCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUN6Q2pCLFVBQVUsQ0FBQ2lCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxFQUN4QztJQUNBLE9BQU87TUFBRVIsS0FBSyxFQUFFLFFBQVE7TUFBRVYsT0FBTyxFQUFFTyxDQUFDLENBQUMvQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFBRSxDQUFDO0VBQ2hFO0VBRUEsSUFBTTZELGNBQWMsR0FBR1IsV0FBVyxDQUFDWCxJQUFJLENBQUMsQ0FBQztFQUN6QyxJQUFJbUIsY0FBYyxJQUFJLENBQUN0QiwwQkFBMEIsQ0FBQ3NCLGNBQWMsQ0FBQyxFQUFFO0lBQ2pFLE9BQU87TUFBRVgsS0FBSyxFQUFFLFFBQVE7TUFBRVYsT0FBTyxFQUFFcUI7SUFBZSxDQUFDO0VBQ3JEO0VBRUEsSUFBSXRCLDBCQUEwQixDQUFDc0IsY0FBYyxDQUFDLElBQUliLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUVHLG1CQUFtQixFQUFFO0lBQzlFLE9BQU87TUFBRUQsS0FBSyxFQUFFLFFBQVE7TUFBRVYsT0FBTyxFQUFFTyxDQUFDLENBQUMsOEJBQThCO0lBQUUsQ0FBQztFQUN4RTtFQUNBLE9BQU87SUFBRUcsS0FBSyxFQUFFLFFBQVE7SUFBRVYsT0FBTyxFQUFFTyxDQUFDLENBQUMsc0JBQXNCO0VBQUUsQ0FBQztBQUNoRSxDQUFDO0FBVUQsSUFBTWUsOEJBQThCLEdBQUcsU0FBakNBLDhCQUE4QkEsQ0FDbENDLE9BQWdELEVBQ2hEQyxRQUFpQixFQUNHO0VBQUEsSUFBQUMsSUFBQSxFQUFBQyxxQkFBQSxFQUFBQyxpQkFBQSxFQUFBQyxrQkFBQTtFQUNwQixJQUFNQyxPQUFPLElBQUFKLElBQUEsSUFBQUMscUJBQUEsR0FBR0gsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUVPLGNBQWMsY0FBQUoscUJBQUEsY0FBQUEscUJBQUEsR0FBSUgsT0FBTyxhQUFQQSxPQUFPLGdCQUFBSSxpQkFBQSxHQUFQSixPQUFPLENBQUVRLFFBQVEsY0FBQUosaUJBQUEsdUJBQWpCQSxpQkFBQSxDQUFtQkssZUFBZSxjQUFBUCxJQUFBLGNBQUFBLElBQUEsR0FBSSxFQUFFO0VBQ25GLElBQUksQ0FBQ0ksT0FBTyxDQUFDL0IsTUFBTSxFQUFFLE9BQU8sRUFBRTtFQUU5QixJQUFJMEIsUUFBUSxFQUFFO0lBQ1osSUFBTVMsU0FBUyxHQUFHSixPQUFPLENBQUNLLE1BQU0sQ0FBQyxVQUFBQyxNQUFNO01BQUEsT0FBSUEsTUFBTSxDQUFDQyxTQUFTLEtBQUtaLFFBQVE7SUFBQSxFQUFDO0lBQ3pFLElBQUlTLFNBQVMsQ0FBQ25DLE1BQU0sRUFBRSxPQUFPbUMsU0FBUztFQUN4QztFQUVBLElBQUlWLE9BQU8sYUFBUEEsT0FBTyxnQkFBQUssa0JBQUEsR0FBUEwsT0FBTyxDQUFFYyxTQUFTLGNBQUFULGtCQUFBLGVBQWxCQSxrQkFBQSxDQUFvQjlCLE1BQU0sRUFBRTtJQUM5QixPQUFPK0IsT0FBTyxDQUFDSyxNQUFNLENBQUMsVUFBQUMsTUFBTTtNQUFBLElBQUFHLG1CQUFBO01BQUEsUUFBQUEsbUJBQUEsR0FBSWYsT0FBTyxDQUFDYyxTQUFTLGNBQUFDLG1CQUFBLHVCQUFqQkEsbUJBQUEsQ0FBbUJwQixRQUFRLENBQUNpQixNQUFNLENBQUNDLFNBQVMsQ0FBQztJQUFBLEVBQUM7RUFDaEY7RUFFQSxPQUFPUCxPQUFPO0FBQ2hCLENBQUM7QUFFRCxJQUFNVSw2QkFBNkIsR0FBRyxTQUFoQ0EsNkJBQTZCQSxDQUFJQyxPQUF3QjtFQUFBLE9BQUFDLGtCQUFBLENBQzFELElBQUlDLEdBQUcsQ0FBQ0YsT0FBTyxDQUFDRyxHQUFHLENBQUMsVUFBQVIsTUFBTTtJQUFBLE9BQUkvRSxxQkFBcUIsQ0FBQytFLE1BQU0sQ0FBQ1MsU0FBUyxDQUFDO0VBQUEsRUFBQyxDQUFDVixNQUFNLENBQUNXLE9BQU8sQ0FBQyxDQUFDO0FBQUEsQ0FDM0Y7O0FBRUQ7QUFDQSxPQUFPLElBQU1DLDZCQUE2QixHQUFHLFNBQWhDQSw2QkFBNkJBLENBQ3hDakMsV0FBbUIsRUFDbkJOLENBQWMsRUFDZGdCLE9BQXFDLEVBQ3JDQyxRQUFpQixFQUNqQmhCLE9BQStELEVBQzVDO0VBQ25CLElBQU11QyxnQkFBZ0IsR0FBR3pCLDhCQUE4QixDQUFDQyxPQUFPLEVBQUVDLFFBQVEsQ0FBQztFQUMxRSxJQUFNd0IsYUFBYSxHQUFHVCw2QkFBNkIsQ0FBQ1EsZ0JBQWdCLENBQUM7RUFFckUsSUFBSXZDLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUV5QyxTQUFTLEVBQUU7SUFDdEI1RixzQkFBc0IsQ0FBQ21ELE9BQU8sQ0FBQ3lDLFNBQVMsRUFBRTtNQUN4Q0MsU0FBUyxFQUFFM0IsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUUyQixTQUFTO01BQzdCQyxXQUFXLEVBQUU1QixPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTRCLFdBQVc7TUFDakMzQixRQUFRLEVBQVJBLFFBQVE7TUFDUmEsU0FBUyxFQUFFZCxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRWMsU0FBUztNQUM3QnhCLFdBQVcsRUFBWEEsV0FBVztNQUNYaUIsY0FBYyxFQUFFaUIsZ0JBQWdCO01BQ2hDQyxhQUFhLEVBQWJBO0lBQ0YsQ0FBQyxDQUFDO0VBQ0o7RUFFQSxJQUFNSSxrQkFBa0IsR0FBR3ZDLFdBQVcsQ0FBQ1gsSUFBSSxDQUFDLENBQUM7RUFDN0MsSUFBTW1ELHVCQUF1QixHQUMzQkQsa0JBQWtCLElBQUksQ0FBQ3JELDBCQUEwQixDQUFDcUQsa0JBQWtCLENBQUMsR0FDakU7SUFBRTFDLEtBQUssRUFBRSxRQUFpQjtJQUFFVixPQUFPLEVBQUVvRDtFQUFtQixDQUFDLEdBQ3pELElBQUk7RUFFVixJQUFNRSxhQUFhLEdBQUcsU0FBaEJBLGFBQWFBLENBQUlDLFFBQXdCLEVBQUs7SUFDbEQsSUFBSS9DLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUV5QyxTQUFTLEVBQUU7TUFDdEI1RixzQkFBc0IsSUFBQW1HLE1BQUEsQ0FBSWhELE9BQU8sQ0FBQ3lDLFNBQVMsZ0JBQWE7UUFDdERELGFBQWEsRUFBYkEsYUFBYTtRQUNiUyxnQkFBZ0IsRUFBRUY7TUFDcEIsQ0FBQyxDQUFDO0lBQ0o7SUFDQSxPQUFPQSxRQUFRO0VBQ2pCLENBQUM7RUFFRCxJQUFJUCxhQUFhLENBQUNsRCxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzdCLElBQUl1RCx1QkFBdUIsRUFBRTtNQUMzQixPQUFPQyxhQUFhLENBQUNELHVCQUF1QixDQUFDO0lBQy9DO0lBQ0EsT0FBT0MsYUFBYSxDQUFDakQsK0JBQStCLENBQUMyQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUV6QyxDQUFDLEVBQUVDLE9BQU8sQ0FBQyxDQUFDO0VBQ3JGO0VBRUEsT0FBTzhDLGFBQWEsQ0FBQ25DLDhCQUE4QixDQUFDTixXQUFXLEVBQUVOLENBQUMsRUFBRUMsT0FBTyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELE9BQU8sSUFBTWtELGdDQUFnQyxHQUFHLFNBQW5DQSxnQ0FBZ0NBLENBQzNDbkQsQ0FBYyxFQUNkZ0IsT0FBcUMsRUFDckNmLE9BQWdDLEVBQ2I7RUFDbkIsSUFBTXNCLGNBQWMsR0FBR1IsOEJBQThCLENBQUNDLE9BQU8sQ0FBQztFQUM5RCxJQUFNeUIsYUFBYSxHQUFHVCw2QkFBNkIsQ0FBQ1QsY0FBYyxDQUFDO0VBRW5FLElBQUl0QixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFFeUMsU0FBUyxFQUFFO0lBQ3RCNUYsc0JBQXNCLENBQUNtRCxPQUFPLENBQUN5QyxTQUFTLEVBQUU7TUFDeENDLFNBQVMsRUFBRTNCLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFMkIsU0FBUztNQUM3QkMsV0FBVyxFQUFFNUIsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUU0QixXQUFXO01BQ2pDZCxTQUFTLEVBQUVkLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFYyxTQUFTO01BQzdCUCxjQUFjLEVBQWRBLGNBQWM7TUFDZGtCLGFBQWEsRUFBYkE7SUFDRixDQUFDLENBQUM7RUFDSjtFQUVBLElBQUlBLGFBQWEsQ0FBQ2xELE1BQU0sSUFBSSxDQUFDLEVBQUU7SUFDN0IsSUFBTXlELFFBQVEsR0FBR2xELCtCQUErQixDQUFDMkMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFekMsQ0FBQyxFQUFFO01BQUVJLG1CQUFtQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBQ3BHLElBQUlILE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUV5QyxTQUFTLEVBQUU7TUFDdEI1RixzQkFBc0IsSUFBQW1HLE1BQUEsQ0FBSWhELE9BQU8sQ0FBQ3lDLFNBQVMsZ0JBQWE7UUFDdERELGFBQWEsRUFBYkEsYUFBYTtRQUNiUyxnQkFBZ0IsRUFBRUY7TUFDcEIsQ0FBQyxDQUFDO0lBQ0o7SUFDQSxPQUFPQSxRQUFRO0VBQ2pCO0VBRUEsT0FBTztJQUFFN0MsS0FBSyxFQUFFLFlBQVk7SUFBRVYsT0FBTyxFQUFFTyxDQUFDLENBQUMsaUJBQWlCO0VBQUUsQ0FBQztBQUMvRCxDQUFDO0FBRUQsT0FBTyxJQUFNb0QsMEJBQTBCLEdBQUcsSUFBSTtBQUU5QyxJQUFNQyxnQkFBdUMsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7QUFFakgsSUFBTUMsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBSW5ELEtBQTBCLEVBQXFEO0VBQUEsSUFBbkRvRCxnQkFBZ0IsR0FBQUMsU0FBQSxDQUFBakUsTUFBQSxRQUFBaUUsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDO0VBQzlFLFFBQVFyRCxLQUFLO0lBQ1gsS0FBSyxZQUFZO01BQ2YsT0FBT25ELHVCQUF1QjtJQUNoQyxLQUFLLFVBQVU7TUFDYixPQUFPRCxxQkFBcUI7SUFDOUIsS0FBSyxRQUFRO01BQ1gsT0FBT0UsbUJBQW1CO0lBQzVCLEtBQUssYUFBYTtNQUNoQixPQUFPQyx3QkFBd0I7SUFDakMsS0FBSyxZQUFZO01BQ2YsT0FBT3FHLGdCQUFnQixHQUFHLENBQUMsR0FBR25HLDhCQUE4QixHQUFHRCx1QkFBdUI7SUFDeEY7TUFDRSxPQUFPLElBQUk7RUFDZjtBQUNGLENBQUM7QUFFRCxPQUFPLElBQU11RywrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUMxQ3ZELEtBQTBCLEVBQzFCd0QsS0FBYSxFQUNiM0QsQ0FBYyxFQUVIO0VBQUEsSUFEWHVELGdCQUFnQixHQUFBQyxTQUFBLENBQUFqRSxNQUFBLFFBQUFpRSxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUM7RUFFcEIsSUFBSXJELEtBQUssS0FBSyxTQUFTLEVBQUU7SUFDdkIsT0FBT0gsQ0FBQyxDQUFDM0MsNEJBQTRCLENBQUM7RUFDeEM7RUFFQSxJQUFNOEIsSUFBSSxHQUFHbUUsc0JBQXNCLENBQUNuRCxLQUFLLEVBQUVvRCxnQkFBZ0IsQ0FBQztFQUM1RCxJQUFJLEVBQUNwRSxJQUFJLGFBQUpBLElBQUksZUFBSkEsSUFBSSxDQUFFSSxNQUFNLEdBQUU7SUFDakIsT0FBTyxFQUFFO0VBQ1g7RUFFQSxJQUFNcUUsWUFBWSxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQ0QsSUFBSSxDQUFDRSxHQUFHLENBQUMsQ0FBQyxFQUFFSixLQUFLLENBQUMsRUFBRXhFLElBQUksQ0FBQ0ksTUFBTSxHQUFHLENBQUMsQ0FBQztFQUNsRSxPQUFPUyxDQUFDLENBQUNiLElBQUksQ0FBQ3lFLFlBQVksQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxPQUFPLElBQU1JLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUlMLEtBQWEsRUFBRTNELENBQWM7RUFBQSxPQUNyRTBELCtCQUErQixDQUFDLFVBQVUsRUFBRUMsS0FBSyxFQUFFM0QsQ0FBQyxDQUFDO0FBQUE7QUFFdkQsT0FBTyxJQUFNaUUsMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FBSU4sS0FBYSxFQUFFM0QsQ0FBYztFQUFBLE9BQ3ZFMEQsK0JBQStCLENBQUMsWUFBWSxFQUFFQyxLQUFLLEVBQUUzRCxDQUFDLENBQUM7QUFBQTtBQUV6RCxPQUFPLElBQU1rRSwrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUFJL0QsS0FBMEIsRUFBRWdFLFlBQW9CLEVBQWM7RUFDNUcsSUFBTWhGLElBQUksR0FBR21FLHNCQUFzQixDQUFDbkQsS0FBSyxDQUFDO0VBQzFDLElBQUksQ0FBQ2hCLElBQUksRUFBRTtJQUNULE9BQU8sS0FBSztFQUNkO0VBQ0EsT0FBT2dGLFlBQVksR0FBR2hGLElBQUksQ0FBQ0ksTUFBTSxHQUFHLENBQUM7QUFDdkMsQ0FBQztBQUVELE9BQU8sSUFBTTZFLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQ3ZDcEIsUUFBd0IsRUFDeEJtQixZQUFvQixFQUNwQm5FLENBQWMsRUFDNkM7RUFDM0QsSUFBSSxDQUFDa0UsK0JBQStCLENBQUNsQixRQUFRLENBQUM3QyxLQUFLLEVBQUVnRSxZQUFZLENBQUMsRUFBRTtJQUNsRSxPQUFPLElBQUk7RUFDYjtFQUVBLElBQU1FLFNBQVMsR0FBR0YsWUFBWSxHQUFHLENBQUM7RUFDbEMsT0FBTztJQUNMbkIsUUFBUSxFQUFBc0IsYUFBQTtNQUNObkUsS0FBSyxFQUFFNkMsUUFBUSxDQUFDN0MsS0FBSztNQUNyQlYsT0FBTyxFQUFFaUUsK0JBQStCLENBQUNWLFFBQVEsQ0FBQzdDLEtBQUssRUFBRWtFLFNBQVMsRUFBRXJFLENBQUMsRUFBRWdELFFBQVEsQ0FBQ08sZ0JBQWdCO0lBQUMsR0FDN0ZQLFFBQVEsQ0FBQ08sZ0JBQWdCLElBQUksSUFBSSxJQUFJO01BQUVBLGdCQUFnQixFQUFFUCxRQUFRLENBQUNPO0lBQWlCLENBQUMsQ0FDekY7SUFDRGMsU0FBUyxFQUFUQTtFQUNGLENBQUM7QUFDSCxDQUFDO0FBRUQsT0FBTyxJQUFNRSw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUFJcEUsS0FBMEI7RUFBQSxPQUFja0QsZ0JBQWdCLENBQUMxQyxRQUFRLENBQUNSLEtBQUssQ0FBQztBQUFBO0FBRXJILE9BQU8sSUFBTXFFLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUl4RSxDQUFjO0VBQUEsT0FBc0I7SUFDM0VHLEtBQUssRUFBRSxTQUFTO0lBQ2hCVixPQUFPLEVBQUVPLENBQUMsQ0FBQzNDLDRCQUE0QjtFQUN6QyxDQUFDO0FBQUEsQ0FBQztBQUVGLE9BQU8sSUFBTW9ILHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQ25DekUsQ0FBYyxFQUNkQyxPQUtDLEVBQ2tCO0VBQ25CLElBQUlBLE9BQU8sQ0FBQ3lFLGlCQUFpQixFQUFFO0lBQzdCLE9BQU87TUFBRXZFLEtBQUssRUFBRSxRQUFRO01BQUVWLE9BQU8sRUFBRU8sQ0FBQyxDQUFDL0MsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBQUUsQ0FBQztFQUNoRTtFQUNBLElBQUlnRCxPQUFPLENBQUMwRSxrQkFBa0IsRUFBRTtJQUM5QixPQUFPO01BQUV4RSxLQUFLLEVBQUUsYUFBYTtNQUFFVixPQUFPLEVBQUVPLENBQUMsQ0FBQzlDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztJQUFFLENBQUM7RUFDMUU7RUFDQSxJQUFJK0MsT0FBTyxDQUFDMkUsY0FBYyxFQUFFO0lBQUEsSUFBQUMscUJBQUE7SUFDMUIsSUFBTXRCLGdCQUFnQixJQUFBc0IscUJBQUEsR0FBRzVFLE9BQU8sQ0FBQ3NELGdCQUFnQixjQUFBc0IscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxDQUFDO0lBQ3RELE9BQU87TUFDTDFFLEtBQUssRUFBRSxZQUFZO01BQ25CVixPQUFPLEVBQUVpRSwrQkFBK0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFMUQsQ0FBQyxFQUFFdUQsZ0JBQWdCLENBQUM7TUFDOUVBLGdCQUFnQixFQUFoQkE7SUFDRixDQUFDO0VBQ0g7RUFDQSxPQUFPO0lBQUVwRCxLQUFLLEVBQUUsWUFBWTtJQUFFVixPQUFPLEVBQUVPLENBQUMsQ0FBQ2hELHVCQUF1QixDQUFDLENBQUMsQ0FBQztFQUFFLENBQUM7QUFDeEUsQ0FBQztBQUVELE9BQU8sSUFBTThILDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBMkJBLENBQUlDLE1BVTNDLEVBQTRCO0VBQzNCLElBQUlBLE1BQU0sQ0FBQ0MsY0FBYyxFQUFFO0lBQ3pCLE9BQU9ELE1BQU0sQ0FBQ0MsY0FBYztFQUM5QjtFQUVBLElBQU1DLFVBQVUsR0FBRy9GLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDNEYsTUFBTSxDQUFDRyxjQUFjLENBQUM7RUFDckQsSUFBSUQsVUFBVSxDQUFDMUYsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN6QixJQUFNNEYsUUFBUSxHQUFHRixVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQU1HLEdBQUcsR0FBR0wsTUFBTSxDQUFDRyxjQUFjLENBQUNDLFFBQVEsQ0FBQztJQUMzQyxJQUFJQyxHQUFHLElBQUlBLEdBQUcsS0FBS0wsTUFBTSxDQUFDL0UsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7TUFDOUMsSUFBTWEsUUFBUSxHQUFHUiw4QkFBOEIsQ0FBQytFLEdBQUcsQ0FBQztNQUNwRCxJQUFJdkUsUUFBUSxFQUFFO1FBQ1osT0FBT2YsK0JBQStCLENBQUNlLFFBQVEsRUFBRWtFLE1BQU0sQ0FBQy9FLENBQUMsQ0FBQztNQUM1RDtNQUVBLElBQU1xRixPQUFPLEdBQUdELEdBQUcsQ0FBQ3pGLElBQUksQ0FBQyxDQUFDO01BQzFCLElBQUkwRixPQUFPLElBQUksQ0FBQzdGLDBCQUEwQixDQUFDNkYsT0FBTyxDQUFDLEVBQUU7UUFDbkQsT0FBTztVQUFFbEYsS0FBSyxFQUFFLFFBQVE7VUFBRVYsT0FBTyxFQUFFNEY7UUFBUSxDQUFDO01BQzlDO01BRUEsT0FBT3pFLDhCQUE4QixDQUFDd0UsR0FBRyxFQUFFTCxNQUFNLENBQUMvRSxDQUFDLEVBQUU7UUFBRUksbUJBQW1CLEVBQUU7TUFBSyxDQUFDLENBQUM7SUFDckY7SUFDQSxPQUFPO01BQUVELEtBQUssRUFBRSxZQUFZO01BQUVWLE9BQU8sRUFBRXNGLE1BQU0sQ0FBQy9FLENBQUMsQ0FBQyxpQkFBaUI7SUFBRSxDQUFDO0VBQ3RFO0VBRUEsSUFBSStFLE1BQU0sQ0FBQ08sY0FBYyxFQUFFO0lBQ3pCLElBQ0VQLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUMvRSxDQUFDLENBQUMsY0FBYyxDQUFDLElBQ2xEK0UsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQy9FLENBQUMsQ0FBQzNDLDRCQUE0QixDQUFDLEVBQ2hFO01BQ0EsT0FBT21ILHdCQUF3QixDQUFDTyxNQUFNLENBQUMvRSxDQUFDLENBQUM7SUFDM0M7SUFDQSxJQUFJK0UsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQy9FLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO01BQ3pELE9BQU87UUFBRUcsS0FBSyxFQUFFLFlBQVk7UUFBRVYsT0FBTyxFQUFFc0YsTUFBTSxDQUFDTztNQUFlLENBQUM7SUFDaEU7SUFDQSxJQUNFUCxNQUFNLENBQUNPLGNBQWMsS0FBS1AsTUFBTSxDQUFDL0UsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLElBQzlEK0UsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQy9FLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxJQUMvRCtFLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUMvRSxDQUFDLENBQUMsMkJBQTJCLENBQUMsRUFDL0Q7TUFDQSxPQUFPeUUsd0JBQXdCLENBQUNNLE1BQU0sQ0FBQy9FLENBQUMsRUFBRTtRQUN4QzBFLGlCQUFpQixFQUFFSyxNQUFNLENBQUNPLGNBQWMsS0FBS1AsTUFBTSxDQUFDL0UsQ0FBQyxDQUFDLDBCQUEwQixDQUFDO1FBQ2pGMkUsa0JBQWtCLEVBQUVJLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUMvRSxDQUFDLENBQUMsMkJBQTJCLENBQUM7UUFDbkY0RSxjQUFjLEVBQUVHLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUMvRSxDQUFDLENBQUMsMkJBQTJCLENBQUM7UUFDL0V1RCxnQkFBZ0IsRUFBRXdCLE1BQU0sQ0FBQ3hCO01BQzNCLENBQUMsQ0FBQztJQUNKO0lBQ0EsT0FBTztNQUFFcEQsS0FBSyxFQUFFLFFBQVE7TUFBRVYsT0FBTyxFQUFFc0YsTUFBTSxDQUFDTztJQUFlLENBQUM7RUFDNUQ7RUFFQSxJQUFJUCxNQUFNLENBQUNRLGVBQWUsRUFBRTtJQUMxQixPQUFPZCx3QkFBd0IsQ0FBQ00sTUFBTSxDQUFDL0UsQ0FBQyxFQUFFO01BQ3hDMEUsaUJBQWlCLEVBQUVLLE1BQU0sQ0FBQ0wsaUJBQWlCO01BQzNDQyxrQkFBa0IsRUFBRUksTUFBTSxDQUFDSixrQkFBa0I7TUFDN0NDLGNBQWMsRUFBRUcsTUFBTSxDQUFDSCxjQUFjO01BQ3JDckIsZ0JBQWdCLEVBQUV3QixNQUFNLENBQUN4QjtJQUMzQixDQUFDLENBQUM7RUFDSjtFQUVBLE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFRCxPQUFPLElBQU1pQywrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUFJN0MsU0FBNkI7RUFBQSxPQUMzRSxPQUFPQSxTQUFTLEtBQUssUUFBUSxJQUFJQSxTQUFTLENBQUNoQyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
337
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJUSElOS0lOR19NRVNTQUdFX0tFWVMiLCJHRU5FUkFUSU5HX01FU1NBR0VfS0VZUyIsIlNFQVJDSF9NRVNTQUdFX0tFWVMiLCJERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVMiLCJBVFRBQ0hNRU5UX01FU1NBR0VfS0VZUyIsIkFUVEFDSE1FTlRfTUVTU0FHRV9LRVlTX1BMVVJBTCIsIldSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkiLCJISVRMX1RPT0xfQUNUSVZJVFlfS0VZUyIsImNyZWF0ZV90YXNrIiwiY2xvbmVfdGFzayIsImNyZWF0ZV90YXNrc19iYXRjaCIsImNyZWF0ZV9hZ2VudCIsImVkaXRfYWdlbnQiLCJlZGl0X3Rhc2siLCJlZGl0X3Rhc2tzX2JhdGNoIiwiZGVsZXRlX3Rhc2siLCJkZWxldGVfdGFza3NfYmF0Y2giLCJ0YXNrX2Fzc2lnbiIsInRhc2tfdW5hc3NpZ24iLCJhc3NpZ25fdGFza19sYWJlbCIsInVwZGF0ZV90YXNrX3R5cGUiLCJ1cGRhdGVfZXN0aW1hdGVkX2hvdXJzIiwidXBkYXRlX2RlbGl2ZXJhYmxlIiwiY3JlYXRlX2hvdXIiLCJjcmVhdGVfY2hlY2tsaXN0IiwiZ2V0X3Rhc2tfZGF0ZV9ob3VycyIsImNvbmZpZ3VyZV9hZ2VudF9hY2Nlc3MiLCJzZW5kX3Rhc2tfbWVzc2FnZSIsImRlbGV0ZV9jaGVja2xpc3RfaXRlbSIsInJlbW92ZV90YXNrX3R5cGUiLCJyZW1vdmVfdGFza19sYWJlbCIsImNvdW50X2RlbGl2ZXJhYmxlIiwiY3JlYXRlX3Jld29yayIsInVwZGF0ZV9yZXdvcmsiLCJISVRMX1RPT0xfTkFNRVNfQllfU1BFQ0lGSUNJVFkiLCJPYmplY3QiLCJrZXlzIiwic29ydCIsImEiLCJiIiwibGVuZ3RoIiwiaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UiLCJtZXNzYWdlIiwibm9ybWFsaXplZCIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsInN0YXJ0c1dpdGgiLCJtYXBIaXRsVG9vbE5hbWVUb1N0cmVhbUFjdGl2aXR5IiwidG9vbE5hbWUiLCJ0Iiwib3B0aW9ucyIsImtleSIsInBoYXNlIiwidXNlUmVzdW1pbmdGYWxsYmFjayIsInJlc29sdmVIaXRsVG9vbEZyb21Ob2RlTWVzc2FnZSIsIm5vZGVNZXNzYWdlIiwiYXNUb29sTmFtZSIsInJlcGxhY2UiLCJtYXRjaGVkVG9vbCIsImZpbmQiLCJpbmNsdWRlcyIsIm1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eSIsImhpdGxUb29sIiwidHJpbW1lZE1lc3NhZ2UiLCJyZXNvbHZlUGVuZGluZ0FjdGlvbnNGb3JUaHJlYWQiLCJjb250ZXh0IiwidGhyZWFkSWQiLCJfcmVmIiwiX2NvbnRleHQkcGVuZGluZ0FjdGlvIiwiX2NvbnRleHQkYXBwcm92YWwiLCJfY29udGV4dCR0aHJlYWRJZHMiLCJwZW5kaW5nIiwicGVuZGluZ0FjdGlvbnMiLCJhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsImZvclRocmVhZCIsImZpbHRlciIsImFjdGlvbiIsInRocmVhZF9pZCIsInRocmVhZElkcyIsIl9jb250ZXh0JHRocmVhZElkczIiLCJkZXRlY3RUb29sc0Zyb21QZW5kaW5nQWN0aW9ucyIsImFjdGlvbnMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJTZXQiLCJtYXAiLCJ0b29sX25hbWUiLCJCb29sZWFuIiwicmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkiLCJwZW5kaW5nRm9yVGhyZWFkIiwiZGV0ZWN0ZWRUb29scyIsInRyaW1tZWROb2RlTWVzc2FnZSIsImFjdGl2aXR5RnJvbU5vZGVNZXNzYWdlIiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyIsIlJPVEFUQUJMRV9QSEFTRVMiLCJnZXRNZXNzYWdlS2V5c0ZvclBoYXNlIiwiYXR0YWNobWVudHNDb3VudCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgiLCJpbmRleCIsImNsYW1wZWRJbmRleCIsIk1hdGgiLCJtaW4iLCJtYXgiLCJnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlIiwiZ2V0R2VuZXJhdGluZ0xvYWRpbmdNZXNzYWdlIiwiY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSIsImN1cnJlbnRJbmRleCIsImFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UiLCJhY3Rpdml0eSIsIm5leHRJbmRleCIsIl9vYmplY3RTcHJlYWQiLCJjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlIiwiZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJoYXNBdHRhY2htZW50cyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzQyIsInJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSIsInBhcmFtcyIsInN0cmVhbUFjdGl2aXR5IiwiYWN0aXZlS2V5cyIsImFjdGl2ZUxvYWRpbmdzIiwiZmlyc3RLZXkiLCJyYXciLCJ0cmltbWVkIiwibG9hZGluZ01lc3NhZ2UiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwibWVzc2FnZUlkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdHJlYW1BY3Rpdml0eSwgU3RyZWFtQWN0aXZpdHlQaGFzZSB9IGZyb20gJy4uL3R5cGVzL3N0cmVhbUFjdGl2aXR5J1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QsIFBlbmRpbmdBY3Rpb24gfSBmcm9tICcuLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgbm9ybWFsaXplSGl0bFRvb2xOYW1lIH0gZnJvbSAnLi9oaXRsQW5hbHl0aWNzJ1xuXG50eXBlIFRyYW5zbGF0ZUZuID0gKGtleTogc3RyaW5nKSA9PiBzdHJpbmdcblxuY29uc3QgVEhJTktJTkdfTUVTU0FHRV9LRVlTID0gW1xuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5hbmFseXppbmcnLFxuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5yZXZpZXdpbmcnLFxuICAnY2hhdC5hY3Rpdml0eS50aGlua2luZy5wbGFubmluZycsXG5dIGFzIGNvbnN0XG5cbmNvbnN0IEdFTkVSQVRJTkdfTUVTU0FHRV9LRVlTID0gW1xuICAnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nLmNvbnNpZGVyaW5nJyxcbiAgJ2NoYXQuYWN0aXZpdHkuZ2VuZXJhdGluZy5hbG1vc3RSZWFkeScsXG4gICdjaGF0LmFjdGl2aXR5LmdlbmVyYXRpbmcucHJlcGFyaW5nJyxcbl0gYXMgY29uc3RcblxuY29uc3QgU0VBUkNIX01FU1NBR0VfS0VZUyA9IFsnY2hhdC5hY3Rpdml0eS5zZWFyY2guc2Nhbm5pbmcnLCAnY2hhdC5hY3Rpdml0eS5zZWFyY2guc3VtbWFyaXppbmcnXSBhcyBjb25zdFxuXG5jb25zdCBERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVMgPSBbXG4gICdjaGF0LmFjdGl2aXR5LmRlZXBTZWFyY2guZXhwbG9yaW5nJyxcbiAgJ2NoYXQuYWN0aXZpdHkuZGVlcFNlYXJjaC5jcm9zc0NoZWNraW5nJyxcbl0gYXMgY29uc3RcblxuY29uc3QgQVRUQUNITUVOVF9NRVNTQUdFX0tFWVMgPSBbJ2NoYXQuYWN0aXZpdHkuYXR0YWNobWVudC5yZWFkaW5nJywgJ2NoYXQuYWN0aXZpdHkuYXR0YWNobWVudC5leHRyYWN0aW5nJ10gYXMgY29uc3RcblxuY29uc3QgQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNfUExVUkFMID0gW1xuICAnY2hhdC5hY3Rpdml0eS5hdHRhY2htZW50LnJlYWRpbmdQbHVyYWwnLFxuICAnY2hhdC5hY3Rpdml0eS5hdHRhY2htZW50LmV4dHJhY3RpbmdQbHVyYWwnLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgV1JJVElOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSA9ICdjaGF0LmFjdGl2aXR5LndyaXRpbmcuY29tcG9zaW5nJyBhcyBjb25zdFxuXG4vKiogVG9vbHMgSElUTCAvIG5vZGUgU1NFIOKGkiBrZXkgaTE4biBkZWwgaW5kaWNhZG9yIGRlIGFjdGl2aWRhZCAodGllbXBvIHByZXNlbnRlIGNvbnRpbnVvKS4gKi9cbmNvbnN0IEhJVExfVE9PTF9BQ1RJVklUWV9LRVlTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBjcmVhdGVfdGFzazogJ2NoYXQuYWN0aXZpdHkuY3JlYXRpbmdUYXNrJyxcbiAgY2xvbmVfdGFzazogJ2NoYXQuYWN0aXZpdHkuY3JlYXRpbmdUYXNrJyxcbiAgY3JlYXRlX3Rhc2tzX2JhdGNoOiAnY2hhdC5hY3Rpdml0eS5jcmVhdGluZ1Rhc2tzQmF0Y2gnLFxuICBjcmVhdGVfYWdlbnQ6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nQWdlbnQnLFxuICBlZGl0X2FnZW50OiAnY2hhdC5hY3Rpdml0eS5lZGl0aW5nQWdlbnQnLFxuICBlZGl0X3Rhc2s6ICdjaGF0LmFjdGl2aXR5LmVkaXRpbmdUYXNrJyxcbiAgZWRpdF90YXNrc19iYXRjaDogJ2NoYXQuYWN0aXZpdHkuZWRpdGluZ1Rhc2tzQmF0Y2gnLFxuICBkZWxldGVfdGFzazogJ2NoYXQuYWN0aXZpdHkuZGVsZXRpbmdUYXNrJyxcbiAgZGVsZXRlX3Rhc2tzX2JhdGNoOiAnY2hhdC5hY3Rpdml0eS5kZWxldGluZ1Rhc2tzQmF0Y2gnLFxuICB0YXNrX2Fzc2lnbjogJ2NoYXQuYWN0aXZpdHkuYXNzaWduaW5nVXNlcicsXG4gIHRhc2tfdW5hc3NpZ246ICdjaGF0LmFjdGl2aXR5LnVuYXNzaWduaW5nVXNlcicsXG4gIGFzc2lnbl90YXNrX2xhYmVsOiAnY2hhdC5hY3Rpdml0eS5hc3NpZ25pbmdMYWJlbCcsXG4gIHVwZGF0ZV90YXNrX3R5cGU6ICdjaGF0LmFjdGl2aXR5LnVwZGF0aW5nVGFza1R5cGUnLFxuICB1cGRhdGVfZXN0aW1hdGVkX2hvdXJzOiAnY2hhdC5hY3Rpdml0eS51cGRhdGluZ0VzdGltYXRlZEhvdXJzJyxcbiAgdXBkYXRlX2RlbGl2ZXJhYmxlOiAnY2hhdC5hY3Rpdml0eS51cGRhdGluZ0RlbGl2ZXJhYmxlJyxcbiAgY3JlYXRlX2hvdXI6ICdjaGF0LmFjdGl2aXR5LmxvZ2dpbmdIb3VycycsXG4gIGNyZWF0ZV9jaGVja2xpc3Q6ICdjaGF0LmFjdGl2aXR5LmNyZWF0aW5nQ2hlY2tsaXN0JyxcbiAgZ2V0X3Rhc2tfZGF0ZV9ob3VyczogJ2NoYXQuYWN0aXZpdHkucXVlcnlpbmdIb3VycycsXG4gIGNvbmZpZ3VyZV9hZ2VudF9hY2Nlc3M6ICdjaGF0LmFjdGl2aXR5LmNvbmZpZ3VyaW5nQWdlbnRBY2Nlc3MnLFxuICBzZW5kX3Rhc2tfbWVzc2FnZTogJ2NoYXQuYWN0aXZpdHkuc2VuZGluZ1Rhc2tNZXNzYWdlJyxcbiAgZGVsZXRlX2NoZWNrbGlzdF9pdGVtOiAnY2hhdC5hY3Rpdml0eS5kZWxldGluZ0NoZWNrbGlzdEl0ZW0nLFxuICByZW1vdmVfdGFza190eXBlOiAnY2hhdC5hY3Rpdml0eS5yZW1vdmluZ1Rhc2tUeXBlJyxcbiAgcmVtb3ZlX3Rhc2tfbGFiZWw6ICdjaGF0LmFjdGl2aXR5LnJlbW92aW5nTGFiZWwnLFxuICBjb3VudF9kZWxpdmVyYWJsZTogJ2NoYXQuYWN0aXZpdHkudXBkYXRpbmdEZWxpdmVyYWJsZUNvdW50JyxcbiAgY3JlYXRlX3Jld29yazogJ2NoYXQuYWN0aXZpdHkuY3JlYXRpbmdSZXdvcmsnLFxuICB1cGRhdGVfcmV3b3JrOiAnY2hhdC5hY3Rpdml0eS51cGRhdGluZ1Jld29yaycsXG59XG5cbmNvbnN0IEhJVExfVE9PTF9OQU1FU19CWV9TUEVDSUZJQ0lUWSA9IE9iamVjdC5rZXlzKEhJVExfVE9PTF9BQ1RJVklUWV9LRVlTKS5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKVxuXG4vKiogTWVuc2FqZXMgZ2Vuw6lyaWNvcyBkZWwgYmFja2VuZCBjdWFuZG8gbm8gaGF5IGRldGFsbGUgZGUgdG9vbCAoY29udGludWUtdGhyZWFkKS4gKi9cbmNvbnN0IGlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlID0gKG1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbWVzc2FnZS50cmltKCkudG9Mb3dlckNhc2UoKVxuICByZXR1cm4gKFxuICAgIG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnZWplY3V0YW5kbyBhY2Npw7NuIGFwcm9iYWRhJykgfHxcbiAgICBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ2V4ZWN1dGluZyBhcHByb3ZlZCBhY3Rpb24nKSB8fFxuICAgIG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnZXhlY3V0YW5kbyBhw6fDo28gYXByb3ZhZGEnKVxuICApXG59XG5cbmV4cG9ydCBjb25zdCBtYXBIaXRsVG9vbE5hbWVUb1N0cmVhbUFjdGl2aXR5ID0gKFxuICB0b29sTmFtZTogc3RyaW5nLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgb3B0aW9ucz86IHsgdXNlUmVzdW1pbmdGYWxsYmFjaz86IGJvb2xlYW4gfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplSGl0bFRvb2xOYW1lKHRvb2xOYW1lKVxuICBjb25zdCBrZXkgPSBISVRMX1RPT0xfQUNUSVZJVFlfS0VZU1tub3JtYWxpemVkXVxuICBpZiAoa2V5KSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KGtleSkgfVxuICB9XG4gIGlmIChvcHRpb25zPy51c2VSZXN1bWluZ0ZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmFjdGl2aXR5LnJlc3VtaW5nQWN0aW9uJykgfVxuICB9XG4gIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5leGVjdXRpbmdBY3Rpb24nKSB9XG59XG5cbmNvbnN0IHJlc29sdmVIaXRsVG9vbEZyb21Ob2RlTWVzc2FnZSA9IChub2RlTWVzc2FnZTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub2RlTWVzc2FnZS50b0xvd2VyQ2FzZSgpLnRyaW0oKVxuICBpZiAoIW5vcm1hbGl6ZWQpIHJldHVybiBudWxsXG5cbiAgaWYgKEhJVExfVE9PTF9BQ1RJVklUWV9LRVlTW25vcm1hbGl6ZWRdKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgfVxuXG4gIGNvbnN0IGFzVG9vbE5hbWUgPSBub3JtYWxpemVIaXRsVG9vbE5hbWUobm9ybWFsaXplZC5yZXBsYWNlKC9cXHMrL2csICdfJykpXG4gIGlmIChISVRMX1RPT0xfQUNUSVZJVFlfS0VZU1thc1Rvb2xOYW1lXSkge1xuICAgIHJldHVybiBhc1Rvb2xOYW1lXG4gIH1cblxuICBjb25zdCBtYXRjaGVkVG9vbCA9IEhJVExfVE9PTF9OQU1FU19CWV9TUEVDSUZJQ0lUWS5maW5kKHRvb2xOYW1lID0+IG5vcm1hbGl6ZWQuaW5jbHVkZXModG9vbE5hbWUpKVxuICByZXR1cm4gbWF0Y2hlZFRvb2wgPz8gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgbWFwTm9kZU1lc3NhZ2VUb1N0cmVhbUFjdGl2aXR5ID0gKFxuICBub2RlTWVzc2FnZTogc3RyaW5nLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgb3B0aW9ucz86IHsgdXNlUmVzdW1pbmdGYWxsYmFjaz86IGJvb2xlYW4gfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbm9kZU1lc3NhZ2UudG9Mb3dlckNhc2UoKVxuXG4gIGNvbnN0IGhpdGxUb29sID0gcmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlKG5vZGVNZXNzYWdlKVxuICBpZiAoaGl0bFRvb2wpIHtcbiAgICByZXR1cm4gbWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eShoaXRsVG9vbCwgdCwgb3B0aW9ucylcbiAgfVxuXG4gIGlmIChcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdyZXNwb25zZV9maWxlX2dlbmVyYXRpb24nKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2dlbmVyYW5kbyBhcmNoaXZvJykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdnZW5lcmF0aW5nIGZpbGUnKVxuICApIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkuZ2VuZXJhdGluZ0ZpbGUnKSB9XG4gIH1cbiAgaWYgKFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3RhdmlseScpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnc2VhcmNoX3dlYicpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnYnVzY2FuZG8gZW4gbGEgd2ViJykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdzZWFyY2hpbmcgdGhlIHdlYicpXG4gICkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnc2VhcmNoJywgbWVzc2FnZTogdChTRUFSQ0hfTUVTU0FHRV9LRVlTWzBdKSB9XG4gIH1cblxuICBjb25zdCB0cmltbWVkTWVzc2FnZSA9IG5vZGVNZXNzYWdlLnRyaW0oKVxuICBpZiAodHJpbW1lZE1lc3NhZ2UgJiYgIWlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlKHRyaW1tZWRNZXNzYWdlKSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdHJpbW1lZE1lc3NhZ2UgfVxuICB9XG5cbiAgaWYgKGlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlKHRyaW1tZWRNZXNzYWdlKSB8fCBvcHRpb25zPy51c2VSZXN1bWluZ0ZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmFjdGl2aXR5LnJlc3VtaW5nQWN0aW9uJykgfVxuICB9XG4gIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5leGVjdXRpbmdBY3Rpb24nKSB9XG59XG5cbmV4cG9ydCB0eXBlIEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICBtZXNzYWdlSWQ/OiBzdHJpbmdcbiAgbWVzc2FnZVRleHQ/OiBzdHJpbmdcbiAgYXBwcm92YWw/OiBBcHByb3ZhbFJlcXVlc3RcbiAgcGVuZGluZ0FjdGlvbnM/OiBQZW5kaW5nQWN0aW9uW11cbiAgdGhyZWFkSWRzPzogc3RyaW5nW11cbn1cblxuY29uc3QgcmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkID0gKFxuICBjb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHRocmVhZElkPzogc3RyaW5nXG4pOiBQZW5kaW5nQWN0aW9uW10gPT4ge1xuICBjb25zdCBwZW5kaW5nID0gY29udGV4dD8ucGVuZGluZ0FjdGlvbnMgPz8gY29udGV4dD8uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucyA/PyBbXVxuICBpZiAoIXBlbmRpbmcubGVuZ3RoKSByZXR1cm4gW11cblxuICBpZiAodGhyZWFkSWQpIHtcbiAgICBjb25zdCBmb3JUaHJlYWQgPSBwZW5kaW5nLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCA9PT0gdGhyZWFkSWQpXG4gICAgaWYgKGZvclRocmVhZC5sZW5ndGgpIHJldHVybiBmb3JUaHJlYWRcbiAgfVxuXG4gIGlmIChjb250ZXh0Py50aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBwZW5kaW5nLmZpbHRlcihhY3Rpb24gPT4gY29udGV4dC50aHJlYWRJZHM/LmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICB9XG5cbiAgcmV0dXJuIHBlbmRpbmdcbn1cblxuY29uc3QgZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMgPSAoYWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nW10gPT4gW1xuICAuLi5uZXcgU2V0KGFjdGlvbnMubWFwKGFjdGlvbiA9PiBub3JtYWxpemVIaXRsVG9vbE5hbWUoYWN0aW9uLnRvb2xfbmFtZSkpLmZpbHRlcihCb29sZWFuKSksXG5dXG5cbi8qKiBSZXN1ZWx2ZSBpbmRpY2Fkb3IgSElUTCBwcmlvcml6YW5kbyBwZW5kaW5nX2FjdGlvbnMgZGVsIG1lbnNhamUgZGUgYXByb2JhY2nDs24gYW50ZXJpb3IuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkgPSAoXG4gIG5vZGVNZXNzYWdlOiBzdHJpbmcsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsLFxuICB0aHJlYWRJZD86IHN0cmluZyxcbiAgb3B0aW9ucz86IHsgdXNlUmVzdW1pbmdGYWxsYmFjaz86IGJvb2xlYW4gfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBjb25zdCBwZW5kaW5nRm9yVGhyZWFkID0gcmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkKGNvbnRleHQsIHRocmVhZElkKVxuICBjb25zdCBkZXRlY3RlZFRvb2xzID0gZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMocGVuZGluZ0ZvclRocmVhZClcblxuICBjb25zdCB0cmltbWVkTm9kZU1lc3NhZ2UgPSBub2RlTWVzc2FnZS50cmltKClcbiAgY29uc3QgYWN0aXZpdHlGcm9tTm9kZU1lc3NhZ2UgPVxuICAgIHRyaW1tZWROb2RlTWVzc2FnZSAmJiAhaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UodHJpbW1lZE5vZGVNZXNzYWdlKVxuICAgICAgPyB7IHBoYXNlOiAnYWN0aW9uJyBhcyBjb25zdCwgbWVzc2FnZTogdHJpbW1lZE5vZGVNZXNzYWdlIH1cbiAgICAgIDogbnVsbFxuXG4gIGlmIChkZXRlY3RlZFRvb2xzLmxlbmd0aCA+PSAxKSB7XG4gICAgaWYgKGFjdGl2aXR5RnJvbU5vZGVNZXNzYWdlKSB7XG4gICAgICByZXR1cm4gYWN0aXZpdHlGcm9tTm9kZU1lc3NhZ2VcbiAgICB9XG4gICAgcmV0dXJuIG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoZGV0ZWN0ZWRUb29sc1swXSwgdCwgb3B0aW9ucylcbiAgfVxuXG4gIHJldHVybiBtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkobm9kZU1lc3NhZ2UsIHQsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSA9IChcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbik6IFN0cmVhbUFjdGl2aXR5ID0+IHtcbiAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSByZXNvbHZlUGVuZGluZ0FjdGlvbnNGb3JUaHJlYWQoY29udGV4dClcbiAgY29uc3QgZGV0ZWN0ZWRUb29scyA9IGRldGVjdFRvb2xzRnJvbVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuXG4gIGlmIChkZXRlY3RlZFRvb2xzLmxlbmd0aCA+PSAxKSB7XG4gICAgcmV0dXJuIG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoZGV0ZWN0ZWRUb29sc1swXSwgdCwgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH0pXG4gIH1cblxuICByZXR1cm4geyBwaGFzZTogJ3Byb2Nlc3NpbmcnLCBtZXNzYWdlOiB0KCdjaGF0LnByb2Nlc3NpbmcnKSB9XG59XG5cbmV4cG9ydCBjb25zdCBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyA9IDMyMDBcblxuY29uc3QgUk9UQVRBQkxFX1BIQVNFUzogU3RyZWFtQWN0aXZpdHlQaGFzZVtdID0gWydnZW5lcmF0aW5nJywgJ3RoaW5raW5nJywgJ3NlYXJjaCcsICdkZWVwX3NlYXJjaCcsICdhdHRhY2htZW50J11cblxuY29uc3QgZ2V0TWVzc2FnZUtleXNGb3JQaGFzZSA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSwgYXR0YWNobWVudHNDb3VudCA9IDApOiByZWFkb25seSBzdHJpbmdbXSB8IG51bGwgPT4ge1xuICBzd2l0Y2ggKHBoYXNlKSB7XG4gICAgY2FzZSAnZ2VuZXJhdGluZyc6XG4gICAgICByZXR1cm4gR0VORVJBVElOR19NRVNTQUdFX0tFWVNcbiAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICByZXR1cm4gVEhJTktJTkdfTUVTU0FHRV9LRVlTXG4gICAgY2FzZSAnc2VhcmNoJzpcbiAgICAgIHJldHVybiBTRUFSQ0hfTUVTU0FHRV9LRVlTXG4gICAgY2FzZSAnZGVlcF9zZWFyY2gnOlxuICAgICAgcmV0dXJuIERFRVBfU0VBUkNIX01FU1NBR0VfS0VZU1xuICAgIGNhc2UgJ2F0dGFjaG1lbnQnOlxuICAgICAgcmV0dXJuIGF0dGFjaG1lbnRzQ291bnQgPiAxID8gQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNfUExVUkFMIDogQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCA9IChcbiAgcGhhc2U6IFN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGluZGV4OiBudW1iZXIsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBhdHRhY2htZW50c0NvdW50ID0gMFxuKTogc3RyaW5nID0+IHtcbiAgaWYgKHBoYXNlID09PSAnd3JpdGluZycpIHtcbiAgICByZXR1cm4gdChXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZKVxuICB9XG5cbiAgY29uc3Qga2V5cyA9IGdldE1lc3NhZ2VLZXlzRm9yUGhhc2UocGhhc2UsIGF0dGFjaG1lbnRzQ291bnQpXG4gIGlmICgha2V5cz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBjb25zdCBjbGFtcGVkSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heCgwLCBpbmRleCksIGtleXMubGVuZ3RoIC0gMSlcbiAgcmV0dXJuIHQoa2V5c1tjbGFtcGVkSW5kZXhdKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSA9IChpbmRleDogbnVtYmVyLCB0OiBUcmFuc2xhdGVGbik6IHN0cmluZyA9PlxuICBnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4KCd0aGlua2luZycsIGluZGV4LCB0KVxuXG5leHBvcnQgY29uc3QgZ2V0R2VuZXJhdGluZ0xvYWRpbmdNZXNzYWdlID0gKGluZGV4OiBudW1iZXIsIHQ6IFRyYW5zbGF0ZUZuKTogc3RyaW5nID0+XG4gIGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgoJ2dlbmVyYXRpbmcnLCBpbmRleCwgdClcblxuZXhwb3J0IGNvbnN0IGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UgPSAocGhhc2U6IFN0cmVhbUFjdGl2aXR5UGhhc2UsIGN1cnJlbnRJbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGtleXMgPSBnZXRNZXNzYWdlS2V5c0ZvclBoYXNlKHBoYXNlKVxuICBpZiAoIWtleXMpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gY3VycmVudEluZGV4IDwga2V5cy5sZW5ndGggLSAxXG59XG5cbmV4cG9ydCBjb25zdCBhZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlID0gKFxuICBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHksXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICB0OiBUcmFuc2xhdGVGblxuKTogeyBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHk7IG5leHRJbmRleDogbnVtYmVyIH0gfCBudWxsID0+IHtcbiAgaWYgKCFjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKGFjdGl2aXR5LnBoYXNlLCBjdXJyZW50SW5kZXgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgcmV0dXJuIHtcbiAgICBhY3Rpdml0eToge1xuICAgICAgcGhhc2U6IGFjdGl2aXR5LnBoYXNlLFxuICAgICAgbWVzc2FnZTogZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleChhY3Rpdml0eS5waGFzZSwgbmV4dEluZGV4LCB0LCBhY3Rpdml0eS5hdHRhY2htZW50c0NvdW50KSxcbiAgICAgIC4uLihhY3Rpdml0eS5hdHRhY2htZW50c0NvdW50ICE9IG51bGwgJiYgeyBhdHRhY2htZW50c0NvdW50OiBhY3Rpdml0eS5hdHRhY2htZW50c0NvdW50IH0pLFxuICAgIH0sXG4gICAgbmV4dEluZGV4LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlID0gKHBoYXNlOiBTdHJlYW1BY3Rpdml0eVBoYXNlKTogYm9vbGVhbiA9PiBST1RBVEFCTEVfUEhBU0VTLmluY2x1ZGVzKHBoYXNlKVxuXG5leHBvcnQgY29uc3QgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5ID0gKHQ6IFRyYW5zbGF0ZUZuKTogU3RyZWFtQWN0aXZpdHkgPT4gKHtcbiAgcGhhc2U6ICd3cml0aW5nJyxcbiAgbWVzc2FnZTogdChXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkgPSAoXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBvcHRpb25zOiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGhhc0F0dGFjaG1lbnRzPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzQ291bnQ/OiBudW1iZXJcbiAgfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBpZiAob3B0aW9ucy5pc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnc2VhcmNoJywgbWVzc2FnZTogdChTRUFSQ0hfTUVTU0FHRV9LRVlTWzBdKSB9XG4gIH1cbiAgaWYgKG9wdGlvbnMuaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdkZWVwX3NlYXJjaCcsIG1lc3NhZ2U6IHQoREVFUF9TRUFSQ0hfTUVTU0FHRV9LRVlTWzBdKSB9XG4gIH1cbiAgaWYgKG9wdGlvbnMuaGFzQXR0YWNobWVudHMpIHtcbiAgICBjb25zdCBhdHRhY2htZW50c0NvdW50ID0gb3B0aW9ucy5hdHRhY2htZW50c0NvdW50ID8/IDBcbiAgICByZXR1cm4ge1xuICAgICAgcGhhc2U6ICdhdHRhY2htZW50JyxcbiAgICAgIG1lc3NhZ2U6IGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgoJ2F0dGFjaG1lbnQnLCAwLCB0LCBhdHRhY2htZW50c0NvdW50KSxcbiAgICAgIGF0dGFjaG1lbnRzQ291bnQsXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHBoYXNlOiAnZ2VuZXJhdGluZycsIG1lc3NhZ2U6IHQoR0VORVJBVElOR19NRVNTQUdFX0tFWVNbMF0pIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSA9IChwYXJhbXM6IHtcbiAgc3RyZWFtQWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbFxuICBsb2FkaW5nTWVzc2FnZTogc3RyaW5nIHwgbnVsbFxuICBhY3RpdmVMb2FkaW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICB3YWl0aW5nUmVzcG9uc2U6IGJvb2xlYW5cbiAgaXNXZWJTZWFyY2hBY3RpdmU6IGJvb2xlYW5cbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIGhhc0F0dGFjaG1lbnRzOiBib29sZWFuXG4gIGF0dGFjaG1lbnRzQ291bnQ/OiBudW1iZXJcbiAgdDogVHJhbnNsYXRlRm5cbn0pOiBTdHJlYW1BY3Rpdml0eSB8IG51bGwgPT4ge1xuICBpZiAocGFyYW1zLnN0cmVhbUFjdGl2aXR5KSB7XG4gICAgcmV0dXJuIHBhcmFtcy5zdHJlYW1BY3Rpdml0eVxuICB9XG5cbiAgY29uc3QgYWN0aXZlS2V5cyA9IE9iamVjdC5rZXlzKHBhcmFtcy5hY3RpdmVMb2FkaW5ncylcbiAgaWYgKGFjdGl2ZUtleXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGZpcnN0S2V5ID0gYWN0aXZlS2V5c1swXVxuICAgIGNvbnN0IHJhdyA9IHBhcmFtcy5hY3RpdmVMb2FkaW5nc1tmaXJzdEtleV1cbiAgICBpZiAocmF3ICYmIHJhdyAhPT0gcGFyYW1zLnQoJ2NoYXQucHJvY2Vzc2luZycpKSB7XG4gICAgICBjb25zdCBoaXRsVG9vbCA9IHJlc29sdmVIaXRsVG9vbEZyb21Ob2RlTWVzc2FnZShyYXcpXG4gICAgICBpZiAoaGl0bFRvb2wpIHtcbiAgICAgICAgcmV0dXJuIG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoaGl0bFRvb2wsIHBhcmFtcy50KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKVxuICAgICAgaWYgKHRyaW1tZWQgJiYgIWlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlKHRyaW1tZWQpKSB7XG4gICAgICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdHJpbW1lZCB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkocmF3LCBwYXJhbXMudCwgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH0pXG4gICAgfVxuICAgIHJldHVybiB7IHBoYXNlOiAncHJvY2Vzc2luZycsIG1lc3NhZ2U6IHBhcmFtcy50KCdjaGF0LnByb2Nlc3NpbmcnKSB9XG4gIH1cblxuICBpZiAocGFyYW1zLmxvYWRpbmdNZXNzYWdlKSB7XG4gICAgaWYgKFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC53cml0aW5nJykgfHxcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoV1JJVElOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSlcbiAgICApIHtcbiAgICAgIHJldHVybiBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkocGFyYW1zLnQpXG4gICAgfVxuICAgIGlmIChwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmcnKSkge1xuICAgICAgcmV0dXJuIHsgcGhhc2U6ICdnZW5lcmF0aW5nJywgbWVzc2FnZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nV2ViU2VhcmNoJykgfHxcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ0RlZXBTZWFyY2gnKSB8fFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHBhcmFtcy50LCB7XG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdXZWJTZWFyY2gnKSxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdEZWVwU2VhcmNoJyksXG4gICAgICAgIGhhc0F0dGFjaG1lbnRzOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdBdHRhY2htZW50JyksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IHBhcmFtcy5hdHRhY2htZW50c0NvdW50LFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgfVxuICB9XG5cbiAgaWYgKHBhcmFtcy53YWl0aW5nUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHBhcmFtcy50LCB7XG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogcGFyYW1zLmlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBwYXJhbXMuaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgaGFzQXR0YWNobWVudHM6IHBhcmFtcy5oYXNBdHRhY2htZW50cyxcbiAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IHBhcmFtcy5hdHRhY2htZW50c0NvdW50LFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCA9IChtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgdHlwZW9mIG1lc3NhZ2VJZCA9PT0gJ3N0cmluZycgJiYgbWVzc2FnZUlkLmluY2x1ZGVzKCctc3RyZWFtaW5nJylcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQVNBLHFCQUFxQixRQUFRLGlCQUFpQjtBQUl2RCxJQUFNQyxxQkFBcUIsR0FBRyxDQUM1QixrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ2xDLGlDQUFpQyxDQUN6QjtBQUVWLElBQU1DLHVCQUF1QixHQUFHLENBQzlCLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsb0NBQW9DLENBQzVCO0FBRVYsSUFBTUMsbUJBQW1CLEdBQUcsQ0FBQywrQkFBK0IsRUFBRSxrQ0FBa0MsQ0FBVTtBQUUxRyxJQUFNQyx3QkFBd0IsR0FBRyxDQUMvQixvQ0FBb0MsRUFDcEMsd0NBQXdDLENBQ2hDO0FBRVYsSUFBTUMsdUJBQXVCLEdBQUcsQ0FBQyxrQ0FBa0MsRUFBRSxxQ0FBcUMsQ0FBVTtBQUVwSCxJQUFNQyw4QkFBOEIsR0FBRyxDQUNyQyx3Q0FBd0MsRUFDeEMsMkNBQTJDLENBQ25DO0FBRVYsT0FBTyxJQUFNQyw0QkFBNEIsR0FBRyxpQ0FBMEM7O0FBRXRGO0FBQ0EsSUFBTUMsdUJBQStDLEdBQUc7RUFDdERDLFdBQVcsRUFB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
|
package/package.json
CHANGED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export var logHitlApprovalContext = function logHitlApprovalContext(source, context) {
|
|
2
|
-
var _context$pendingActio, _context$detectedTool;
|
|
3
|
-
console.info("[Maia HITL:".concat(source, "]"), context);
|
|
4
|
-
if ((_context$pendingActio = context.pendingActions) !== null && _context$pendingActio !== void 0 && _context$pendingActio.length) {
|
|
5
|
-
console.info("[Maia HITL:".concat(source, "] pending_actions"), context.pendingActions);
|
|
6
|
-
}
|
|
7
|
-
if ((_context$detectedTool = context.detectedTools) !== null && _context$detectedTool !== void 0 && _context$detectedTool.length) {
|
|
8
|
-
console.info("[Maia HITL:".concat(source, "] detected_tools"), context.detectedTools);
|
|
9
|
-
}
|
|
10
|
-
if (context.resolvedActivity) {
|
|
11
|
-
console.info("[Maia HITL:".concat(source, "] resolved_activity"), context.resolvedActivity);
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
export var logMaiaSseEvent = function logMaiaSseEvent(source, eventType, data) {
|
|
15
|
-
console.info("[Maia SSE:".concat(source, "]"), eventType, data);
|
|
16
|
-
if (eventType === 'node') {
|
|
17
|
-
var _payload$message, _payload$node;
|
|
18
|
-
var payload = data !== null && data !== void 0 ? data : {};
|
|
19
|
-
console.info("[Maia SSE:".concat(source, "] node.message"), (_payload$message = payload.message) !== null && _payload$message !== void 0 ? _payload$message : '(sin message)');
|
|
20
|
-
console.info("[Maia SSE:".concat(source, "] node.node"), (_payload$node = payload.node) !== null && _payload$node !== void 0 ? _payload$node : '(sin node)');
|
|
21
|
-
console.info("[Maia SSE:".concat(source, "] node.payload"), payload);
|
|
22
|
-
}
|
|
23
|
-
};
|
|
24
|
-
export var logMaiaSseStreamStart = function logMaiaSseStreamStart(source) {
|
|
25
|
-
console.info("[Maia SSE:".concat(source, "] stream started"));
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2dIaXRsQXBwcm92YWxDb250ZXh0Iiwic291cmNlIiwiY29udGV4dCIsIl9jb250ZXh0JHBlbmRpbmdBY3RpbyIsIl9jb250ZXh0JGRldGVjdGVkVG9vbCIsImNvbnNvbGUiLCJpbmZvIiwiY29uY2F0IiwicGVuZGluZ0FjdGlvbnMiLCJsZW5ndGgiLCJkZXRlY3RlZFRvb2xzIiwicmVzb2x2ZWRBY3Rpdml0eSIsImxvZ01haWFTc2VFdmVudCIsImV2ZW50VHlwZSIsImRhdGEiLCJfcGF5bG9hZCRtZXNzYWdlIiwiX3BheWxvYWQkbm9kZSIsInBheWxvYWQiLCJtZXNzYWdlIiwibm9kZSIsImxvZ01haWFTc2VTdHJlYW1TdGFydCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9kZWJ1Z01haWFTc2VMb2cudHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBNYWlhU3NlTG9nU291cmNlID0gJ29yY2hlc3RyYXRvcicgfCAnY29udGludWVUaHJlYWQnXG5cbnR5cGUgSGl0bEFwcHJvdmFsTG9nQ29udGV4dCA9IHtcbiAgbWVzc2FnZUlkPzogc3RyaW5nXG4gIG1lc3NhZ2VUZXh0Pzogc3RyaW5nXG4gIGFwcHJvdmFsU3RhdHVzPzogc3RyaW5nXG4gIHRocmVhZElkcz86IHN0cmluZ1tdXG4gIHRocmVhZElkPzogc3RyaW5nXG4gIGRlY2lzaW9uPzogJ2FwcHJvdmUnIHwgJ3JlamVjdCdcbiAgbm9kZU1lc3NhZ2U/OiBzdHJpbmdcbiAgbm9kZVBheWxvYWQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBwZW5kaW5nQWN0aW9ucz86IHVua25vd25bXVxuICBkZXRlY3RlZFRvb2xzPzogc3RyaW5nW11cbiAgcmVzb2x2ZWRBY3Rpdml0eT86IHsgcGhhc2U/OiBzdHJpbmc7IG1lc3NhZ2U/OiBzdHJpbmcgfVxufVxuXG5leHBvcnQgY29uc3QgbG9nSGl0bEFwcHJvdmFsQ29udGV4dCA9IChzb3VyY2U6IHN0cmluZywgY29udGV4dDogSGl0bEFwcHJvdmFsTG9nQ29udGV4dCk6IHZvaWQgPT4ge1xuICBjb25zb2xlLmluZm8oYFtNYWlhIEhJVEw6JHtzb3VyY2V9XWAsIGNvbnRleHQpXG5cbiAgaWYgKGNvbnRleHQucGVuZGluZ0FjdGlvbnM/Lmxlbmd0aCkge1xuICAgIGNvbnNvbGUuaW5mbyhgW01haWEgSElUTDoke3NvdXJjZX1dIHBlbmRpbmdfYWN0aW9uc2AsIGNvbnRleHQucGVuZGluZ0FjdGlvbnMpXG4gIH1cblxuICBpZiAoY29udGV4dC5kZXRlY3RlZFRvb2xzPy5sZW5ndGgpIHtcbiAgICBjb25zb2xlLmluZm8oYFtNYWlhIEhJVEw6JHtzb3VyY2V9XSBkZXRlY3RlZF90b29sc2AsIGNvbnRleHQuZGV0ZWN0ZWRUb29scylcbiAgfVxuXG4gIGlmIChjb250ZXh0LnJlc29sdmVkQWN0aXZpdHkpIHtcbiAgICBjb25zb2xlLmluZm8oYFtNYWlhIEhJVEw6JHtzb3VyY2V9XSByZXNvbHZlZF9hY3Rpdml0eWAsIGNvbnRleHQucmVzb2x2ZWRBY3Rpdml0eSlcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbG9nTWFpYVNzZUV2ZW50ID0gKHNvdXJjZTogTWFpYVNzZUxvZ1NvdXJjZSwgZXZlbnRUeXBlOiBzdHJpbmcsIGRhdGE6IHVua25vd24pOiB2b2lkID0+IHtcbiAgY29uc29sZS5pbmZvKGBbTWFpYSBTU0U6JHtzb3VyY2V9XWAsIGV2ZW50VHlwZSwgZGF0YSlcblxuICBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICBjb25zdCBwYXlsb2FkID0gKGRhdGEgPz8ge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgY29uc29sZS5pbmZvKGBbTWFpYSBTU0U6JHtzb3VyY2V9XSBub2RlLm1lc3NhZ2VgLCBwYXlsb2FkLm1lc3NhZ2UgPz8gJyhzaW4gbWVzc2FnZSknKVxuICAgIGNvbnNvbGUuaW5mbyhgW01haWEgU1NFOiR7c291cmNlfV0gbm9kZS5ub2RlYCwgcGF5bG9hZC5ub2RlID8/ICcoc2luIG5vZGUpJylcbiAgICBjb25zb2xlLmluZm8oYFtNYWlhIFNTRToke3NvdXJjZX1dIG5vZGUucGF5bG9hZGAsIHBheWxvYWQpXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGxvZ01haWFTc2VTdHJlYW1TdGFydCA9IChzb3VyY2U6IE1haWFTc2VMb2dTb3VyY2UpOiB2b2lkID0+IHtcbiAgY29uc29sZS5pbmZvKGBbTWFpYSBTU0U6JHtzb3VyY2V9XSBzdHJlYW0gc3RhcnRlZGApXG59XG4iXSwibWFwcGluZ3MiOiJBQWdCQSxPQUFPLElBQU1BLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUlDLE1BQWMsRUFBRUMsT0FBK0IsRUFBVztFQUFBLElBQUFDLHFCQUFBLEVBQUFDLHFCQUFBO0VBQy9GQyxPQUFPLENBQUNDLElBQUksZUFBQUMsTUFBQSxDQUFlTixNQUFNLFFBQUtDLE9BQU8sQ0FBQztFQUU5QyxLQUFBQyxxQkFBQSxHQUFJRCxPQUFPLENBQUNNLGNBQWMsY0FBQUwscUJBQUEsZUFBdEJBLHFCQUFBLENBQXdCTSxNQUFNLEVBQUU7SUFDbENKLE9BQU8sQ0FBQ0MsSUFBSSxlQUFBQyxNQUFBLENBQWVOLE1BQU0sd0JBQXFCQyxPQUFPLENBQUNNLGNBQWMsQ0FBQztFQUMvRTtFQUVBLEtBQUFKLHFCQUFBLEdBQUlGLE9BQU8sQ0FBQ1EsYUFBYSxjQUFBTixxQkFBQSxlQUFyQkEscUJBQUEsQ0FBdUJLLE1BQU0sRUFBRTtJQUNqQ0osT0FBTyxDQUFDQyxJQUFJLGVBQUFDLE1BQUEsQ0FBZU4sTUFBTSx1QkFBb0JDLE9BQU8sQ0FBQ1EsYUFBYSxDQUFDO0VBQzdFO0VBRUEsSUFBSVIsT0FBTyxDQUFDUyxnQkFBZ0IsRUFBRTtJQUM1Qk4sT0FBTyxDQUFDQyxJQUFJLGVBQUFDLE1BQUEsQ0FBZU4sTUFBTSwwQkFBdUJDLE9BQU8sQ0FBQ1MsZ0JBQWdCLENBQUM7RUFDbkY7QUFDRixDQUFDO0FBRUQsT0FBTyxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUlYLE1BQXdCLEVBQUVZLFNBQWlCLEVBQUVDLElBQWEsRUFBVztFQUNuR1QsT0FBTyxDQUFDQyxJQUFJLGNBQUFDLE1BQUEsQ0FBY04sTUFBTSxRQUFLWSxTQUFTLEVBQUVDLElBQUksQ0FBQztFQUVyRCxJQUFJRCxTQUFTLEtBQUssTUFBTSxFQUFFO0lBQUEsSUFBQUUsZ0JBQUEsRUFBQUMsYUFBQTtJQUN4QixJQUFNQyxPQUFPLEdBQUlILElBQUksYUFBSkEsSUFBSSxjQUFKQSxJQUFJLEdBQUksQ0FBQyxDQUE2QjtJQUN2RFQsT0FBTyxDQUFDQyxJQUFJLGNBQUFDLE1BQUEsQ0FBY04sTUFBTSxzQkFBQWMsZ0JBQUEsR0FBa0JFLE9BQU8sQ0FBQ0MsT0FBTyxjQUFBSCxnQkFBQSxjQUFBQSxnQkFBQSxHQUFJLGVBQWUsQ0FBQztJQUNyRlYsT0FBTyxDQUFDQyxJQUFJLGNBQUFDLE1BQUEsQ0FBY04sTUFBTSxtQkFBQWUsYUFBQSxHQUFlQyxPQUFPLENBQUNFLElBQUksY0FBQUgsYUFBQSxjQUFBQSxhQUFBLEdBQUksWUFBWSxDQUFDO0lBQzVFWCxPQUFPLENBQUNDLElBQUksY0FBQUMsTUFBQSxDQUFjTixNQUFNLHFCQUFrQmdCLE9BQU8sQ0FBQztFQUM1RDtBQUNGLENBQUM7QUFFRCxPQUFPLElBQU1HLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUluQixNQUF3QixFQUFXO0VBQ3ZFSSxPQUFPLENBQUNDLElBQUksY0FBQUMsTUFBQSxDQUFjTixNQUFNLHFCQUFrQixDQUFDO0FBQ3JELENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|