@workflow/web-shared 5.0.0-beta.36 → 5.0.0-beta.38

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.
@@ -247,6 +247,8 @@ const attributeToDisplayFn = {
247
247
  receivedCount: (value) => String(value),
248
248
  lastReceivedAt: localMillisecondTimeOrNull,
249
249
  disposedAt: localMillisecondTimeOrNull,
250
+ // Internal resume plumbing — not surfaced in the UI
251
+ resumeContext: (_value) => null,
250
252
  // Event details
251
253
  eventType: (value) => String(value),
252
254
  correlationId: (value) => String(value),
@@ -363,6 +365,10 @@ const attributeToDisplayFn = {
363
365
  return null;
364
366
  return String(value);
365
367
  },
368
+ // Internal encryption plumbing: the run's X25519 public key, used by
369
+ // cross-run writers to seal payloads to this run. Not actionable for users
370
+ // and not secret — hidden rather than rendered as 44 opaque base64 chars.
371
+ encryptionPublicKey: (_value) => null,
366
372
  };
367
373
  const resolvableAttributes = [
368
374
  'input',
@@ -524,4 +530,4 @@ export const AttributePanel = ({ data, moduleSpecifier, moduleSourceUrl, isLoadi
524
530
  resource === 'sleep' &&
525
531
  !displayData.resumeAt && (_jsxs("div", { className: "flex items-center justify-between gap-3 py-0.5", children: [_jsx("span", { className: "text-label-13 text-gray-900", children: "Resume" }), _jsx(Skeleton, { className: "h-4 w-[55%]" })] }))] }) })] })), error ? (_jsx(ErrorCard, { title: "Failed to load resource details", details: error.message, className: "my-4" })) : hasExpired ? (_jsx(ExpiredDataMessage, {})) : resolvedAttributes.length > 0 ? (resolvedAttributes.map((attribute) => (_jsx(AttributeBlock, { isLoading: isLoading, attribute: attribute, value: displayData[attribute], context: displayContext }, attribute)))) : null] }) }) }) }));
526
532
  };
527
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2lkZWJhci9hdHRyaWJ1dGUtcGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFD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VyxDQUFDLFNBQXFDLENBQUMsRUFDekQsT0FBTyxFQUFFLGNBQWMsSUFIbEIsU0FBUyxDQUlkLENBQ0gsQ0FBQyxDQUNILENBQUMsQ0FBQyxDQUFDLElBQUksSUFDcUIsR0FDSCxHQUNMLEdBQ1AsQ0FDdkIsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgcGFyc2VTdGVwTmFtZSwgcGFyc2VXb3JrZmxvd05hbWUgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMvcGFyc2UtbmFtZSc7XG5pbXBvcnQgdHlwZSB7IEV2ZW50LCBIb29rLCBTdGVwLCBXb3JrZmxvd1J1biB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgdHlwZSB7IE1vZGVsTWVzc2FnZSB9IGZyb20gJ2FpJztcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmRFdmVudCwgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0VuY3J5cHRlZE1hcmtlciwgaXNFeHBpcmVkTWFya2VyIH0gZnJvbSAnLi4vLi4vbGliL2h5ZHJhdGlvbic7XG5pbXBvcnQgeyBleHRyYWN0Q29udmVyc2F0aW9uLCBpc0RvU3RyZWFtU3RlcCB9IGZyb20gJy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQge1xuICBDb2xsYXBzaWJsZSxcbiAgQ29sbGFwc2libGVDb250ZW50LFxuICBDb2xsYXBzaWJsZVJvb3QsXG4gIENvbGxhcHNpYmxlVHJpZ2dlcixcbn0gZnJvbSAnLi4vdWkvY29sbGFwc2libGUnO1xuaW1wb3J0IHsgQ29udGV4dENhcmRQcm92aWRlciB9IGZyb20gJy4uL3VpL2NvbnRleHQtY2FyZCc7XG5pbXBvcnQge1xuICBEZWNyeXB0Q2xpY2tDb250ZXh0LFxuICBSdW5DbGlja0NvbnRleHQsXG4gIFN0cmVhbUNsaWNrQ29udGV4dCxcbn0gZnJvbSAnLi4vdWkvZGF0YS1pbnNwZWN0b3InO1xuaW1wb3J0IHsgRXJyb3JDYXJkIH0gZnJvbSAnLi4vdWkvZXJyb3ItY2FyZCc7XG5pbXBvcnQgeyBFcnJvclN0YWNrQmxvY2ssIGlzU3RydWN0dXJlZEVycm9yIH0gZnJvbSAnLi4vdWkvZXJyb3Itc3RhY2stYmxvY2snO1xuaW1wb3J0IHsgU2tlbGV0b24gfSBmcm9tICcuLi91aS9za2VsZXRvbic7XG5pbXBvcnQgeyBUaW1lc3RhbXBUb29sdGlwIH0gZnJvbSAnLi4vdWkvdGltZXN0YW1wLXRvb2x0aXAnO1xuaW1wb3J0IHtcbiAgRGV0YWlsTW9ub0tleVZhbHVlUm93LFxuICBSdW5BdHRyaWJ1dGVzQ2FyZCxcbiAgUnVuTWV0YWRhdGFDYXJkLFxufSBmcm9tICcuL2F0dHJpYnV0ZXMtYmxvY2snO1xuaW1wb3J0IHsgQ29udmVyc2F0aW9uVmlldyB9IGZyb20gJy4vY29udmVyc2F0aW9uLXZpZXcnO1xuaW1wb3J0IHsgQ29weWFibGVEYXRhQmxvY2ssIEVuY3J5cHRlZERhdGFCbG9jayB9IGZyb20gJy4vY29weWFibGUtZGF0YS1ibG9jayc7XG5cbi8qKlxuICogVGFiIGJ1dHRvbiBmb3IgY29udmVyc2F0aW9uL0pTT04gdG9nZ2xlXG4gKi9cbmZ1bmN0aW9uIFRhYkJ1dHRvbih7XG4gIGFjdGl2ZSxcbiAgb25DbGljayxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgYXJpYS1zZWxlY3RlZD17YWN0aXZlfVxuICAgICAgdGFiSW5kZXg9e2FjdGl2ZSA/IDAgOiAtMX1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICBjbGFzc05hbWU9XCJweC0zIHB5LTEuNSB0ZXh0LVsxMXB4XSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyAtbWItcHhcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLy8gRXhwbGljaXQgc3R5bGVzIHRvIHByZXZlbnQgYXBwLWxldmVsIGJ1dHRvbiBvdmVycmlkZXMgd2hlbiB3ZWItc2hhcmVkXG4gICAgICAgIC8vIGlzIGVtYmVkZGVkIGluIGEgc2VsZi1ob3N0ZWQgYXBwLlxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIGJvcmRlclRvcDogJ25vbmUnLFxuICAgICAgICBib3JkZXJMZWZ0OiAnbm9uZScsXG4gICAgICAgIGJvcmRlclJpZ2h0OiAnbm9uZScsXG4gICAgICAgIGJvcmRlckJvdHRvbTogYDJweCBzb2xpZCAke2FjdGl2ZSA/ICd2YXIoLS1kcy1ibHVlLTYwMCknIDogJ3RyYW5zcGFyZW50J31gLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDAsXG4gICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgYm94U2hhZG93OiAnbm9uZScsXG4gICAgICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICAgICBjb2xvcjogYWN0aXZlID8gJ3ZhcigtLWRzLWdyYXktMTAwMCknIDogJ3ZhcigtLWRzLWdyYXktNjAwKScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cblxuLyoqXG4gKiBTaGFyZWQgdGFiYmVkIGNvbnRhaW5lciB3aXRoIGFjY2Vzc2libGUgQVJJQSByb2xlcyBhbmQga2V5Ym9hcmQgbmF2aWdhdGlvbi5cbiAqIFVzZWQgYnkgQ29udmVyc2F0aW9uV2l0aFRhYnMgZm9yIHRoZSBjb252ZXJzYXRpb24vSlNPTiB0b2dnbGUuXG4gKi9cbmZ1bmN0aW9uIFRhYmJlZENvbnRhaW5lcjxUIGV4dGVuZHMgc3RyaW5nPih7XG4gIHRhYnMsXG4gIGFjdGl2ZVRhYixcbiAgb25UYWJDaGFuZ2UsXG4gIGFyaWFMYWJlbCxcbiAgY2hpbGRyZW4sXG59OiB7XG4gIHRhYnM6IHsgaWQ6IFQ7IGxhYmVsOiBzdHJpbmcgfVtdO1xuICBhY3RpdmVUYWI6IFQ7XG4gIG9uVGFiQ2hhbmdlOiAodGFiOiBUKSA9PiB2b2lkO1xuICBhcmlhTGFiZWw6IHN0cmluZztcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0pIHtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09ICdBcnJvd1JpZ2h0JyAmJiBldmVudC5rZXkgIT09ICdBcnJvd0xlZnQnKSByZXR1cm47XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGFicy5maW5kSW5kZXgoKHQpID0+IHQuaWQgPT09IGFjdGl2ZVRhYik7XG4gICAgICBjb25zdCBuZXh0SW5kZXggPVxuICAgICAgICBldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0J1xuICAgICAgICAgID8gKGN1cnJlbnRJbmRleCArIDEpICUgdGFicy5sZW5ndGhcbiAgICAgICAgICA6IChjdXJyZW50SW5kZXggLSAxICsgdGFicy5sZW5ndGgpICUgdGFicy5sZW5ndGg7XG4gICAgICBvblRhYkNoYW5nZSh0YWJzW25leHRJbmRleF0uaWQpO1xuICAgIH0sXG4gICAgW3RhYnMsIGFjdGl2ZVRhYiwgb25UYWJDaGFuZ2VdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlclwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGdhcC0xIGJvcmRlci1iXCJcbiAgICAgICAgcm9sZT1cInRhYmxpc3RcIlxuICAgICAgICBhcmlhLWxhYmVsPXthcmlhTGFiZWx9XG4gICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7dGFicy5tYXAoKHRhYikgPT4gKFxuICAgICAgICAgIDxUYWJCdXR0b25cbiAgICAgICAgICAgIGtleT17dGFiLmlkfVxuICAgICAgICAgICAgYWN0aXZlPXthY3RpdmVUYWIgPT09IHRhYi5pZH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uVGFiQ2hhbmdlKHRhYi5pZCl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3RhYi5sYWJlbH1cbiAgICAgICAgICA8L1RhYkJ1dHRvbj5cbiAgICAgICAgKSl9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiByb2xlPVwidGFicGFuZWxcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IGNvbnZlcnNhdGlvblRhYnMgPSBbXG4gIHsgaWQ6ICdjb252ZXJzYXRpb24nIGFzIGNvbnN0LCBsYWJlbDogJ0NvbnZlcnNhdGlvbicgfSxcbiAgeyBpZDogJ2pzb24nIGFzIGNvbnN0LCBsYWJlbDogJ1JhdyBKU09OJyB9LFxuXTtcblxuLyoqXG4gKiBUYWJiZWQgdmlldyBmb3IgY29udmVyc2F0aW9uIGFuZCByYXcgSlNPTlxuICovXG5mdW5jdGlvbiBDb252ZXJzYXRpb25XaXRoVGFicyh7XG4gIGNvbnZlcnNhdGlvbixcbiAgYXJncyxcbiAgZGVmYXVsdE9wZW4sXG4gIG9uT3BlbkNoYW5nZSxcbn06IHtcbiAgY29udmVyc2F0aW9uOiBNb2RlbE1lc3NhZ2VbXTtcbiAgYXJnczogdW5rbm93bltdO1xuICBkZWZhdWx0T3Blbj86IGJvb2xlYW47XG4gIG9uT3BlbkNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufSkge1xuICBjb25zdCBbYWN0aXZlVGFiLCBzZXRBY3RpdmVUYWJdID0gdXNlU3RhdGU8J2NvbnZlcnNhdGlvbicgfCAnanNvbic+KFxuICAgICdjb252ZXJzYXRpb24nXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29sbGFwc2libGVcbiAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgZGVmYXVsdE9wZW49e2RlZmF1bHRPcGVufVxuICAgICAgb25PcGVuQ2hhbmdlPXtvbk9wZW5DaGFuZ2V9XG4gICAgPlxuICAgICAgPFRhYmJlZENvbnRhaW5lclxuICAgICAgICB0YWJzPXtjb252ZXJzYXRpb25UYWJzfVxuICAgICAgICBhY3RpdmVUYWI9e2FjdGl2ZVRhYn1cbiAgICAgICAgb25UYWJDaGFuZ2U9e3NldEFjdGl2ZVRhYn1cbiAgICAgICAgYXJpYUxhYmVsPVwiQ29udmVyc2F0aW9uIHZpZXdcIlxuICAgICAgPlxuICAgICAgICB7YWN0aXZlVGFiID09PSAnY29udmVyc2F0aW9uJyA/IChcbiAgICAgICAgICA8Q29udmVyc2F0aW9uVmlldyBtZXNzYWdlcz17Y29udmVyc2F0aW9ufSAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC0zXCI+XG4gICAgICAgICAgICB7QXJyYXkuaXNBcnJheShhcmdzKVxuICAgICAgICAgICAgICA/IGFyZ3MubWFwKCh2LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIgZmlyc3Q6bXQtMFwiIGtleT17aX0+XG4gICAgICAgICAgICAgICAgICAgIHtKc29uQmxvY2sodil9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6IEpzb25CbG9jayhhcmdzKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvVGFiYmVkQ29udGFpbmVyPlxuICAgIDwvQ29sbGFwc2libGU+XG4gICk7XG59XG5cbi8qKlxuICogUmVuZGVyIGEgdmFsdWUgd2l0aCB0aGUgc2hhcmVkIERhdGFJbnNwZWN0b3IgKE9iamVjdEluc3BlY3RvciB3aXRoXG4gKiBjdXN0b20gdGhlbWluZywgbm9kZVJlbmRlcmVyIGZvciBTdHJlYW1SZWYvQ2xhc3NJbnN0YW5jZVJlZiwgZXRjLilcbiAqL1xuZnVuY3Rpb24gRW5jcnlwdGVkRmllbGRCbG9jaygpIHtcbiAgcmV0dXJuIDxFbmNyeXB0ZWREYXRhQmxvY2sgLz47XG59XG5cbi8qKlxuICogSW5saW5lIGRpc3BsYXkgZm9yIGFuIGV4cGlyZWQgZmllbGQg4oCUIGZsYXQgbGFiZWwgaW5kaWNhdGluZyBkYXRhIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuXG4gKi9cbmZ1bmN0aW9uIEV4cGlyZWRGaWVsZEJsb2NrKCkge1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcm91bmRlZC1tZCBib3JkZXIgcHgtMyBweS0yIHRleHQteHNcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMCknLFxuICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtXCI+RGF0YSBleHBpcmVkPC9zcGFuPlxuICAgIDwvZGl2PlxuICApO1xufVxuXG5mdW5jdGlvbiBKc29uQmxvY2sodmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIDxDb3B5YWJsZURhdGFCbG9jayBkYXRhPXt2YWx1ZX0gLz47XG59XG5cbmNvbnN0IGhhc0Rpc3BsYXlDb250ZW50ID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSByZXR1cm4gdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSByZXR1cm4gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDA7XG4gIHJldHVybiB0cnVlO1xufTtcblxudHlwZSBBdHRyaWJ1dGVLZXkgPVxuICB8IGtleW9mIFN0ZXBcbiAgfCBrZXlvZiBXb3JrZmxvd1J1blxuICB8IGtleW9mIEhvb2tcbiAgfCBrZXlvZiBFdmVudFxuICB8ICdvY2N1cnJlZEF0J1xuICB8ICdtb2R1bGVTcGVjaWZpZXInXG4gIHwgJ2V2ZW50RGF0YSdcbiAgfCAncmVzdW1lQXQnXG4gIHwgJ2V4cGlyZWRBdCdcbiAgfCAnd29ya2Zsb3dDb3JlVmVyc2lvbidcbiAgfCAncmVjZWl2ZWRDb3VudCdcbiAgfCAnbGFzdFJlY2VpdmVkQXQnXG4gIHwgJ2Rpc3Bvc2VkQXQnXG4gIHwgJ2lzU3lzdGVtJ1xuICB8ICdlcnJvckNvZGUnO1xuXG5jb25zdCBhdHRyaWJ1dGVPcmRlcjogQXR0cmlidXRlS2V5W10gPSBbXG4gICd3b3JrZmxvd05hbWUnLFxuICAnbW9kdWxlU3BlY2lmaWVyJyxcbiAgJ3N0ZXBOYW1lJyxcbiAgJ3N0YXR1cycsXG4gICdzdGVwSWQnLFxuICAnaG9va0lkJyxcbiAgJ2V2ZW50SWQnLFxuICAncnVuSWQnLFxuICAnYXR0ZW1wdCcsXG4gICd0b2tlbicsXG4gICdyZWNlaXZlZENvdW50JyxcbiAgJ2xhc3RSZWNlaXZlZEF0JyxcbiAgJ2Rpc3Bvc2VkQXQnLFxuICAnY29ycmVsYXRpb25JZCcsXG4gICdldmVudFR5cGUnLFxuICAnZGVwbG95bWVudElkJyxcbiAgJ3NwZWNWZXJzaW9uJyxcbiAgJ3dvcmtmbG93Q29yZVZlcnNpb24nLFxuICAnb3duZXJJZCcsXG4gICdwcm9qZWN0SWQnLFxuICAnZW52aXJvbm1lbnQnLFxuICAnZXhlY3V0aW9uQ29udGV4dCcsXG4gICdvY2N1cnJlZEF0JyxcbiAgJ2NyZWF0ZWRBdCcsXG4gICdzdGFydGVkQXQnLFxuICAndXBkYXRlZEF0JyxcbiAgJ2NvbXBsZXRlZEF0JyxcbiAgJ2V4cGlyZWRBdCcsXG4gICdyZXRyeUFmdGVyJyxcbiAgJ2Vycm9yJyxcbiAgJ21ldGFkYXRhJyxcbiAgJ2V2ZW50RGF0YScsXG4gICdpbnB1dCcsXG4gICdvdXRwdXQnLFxuICAnYXR0cmlidXRlcycsXG4gICdyZXN1bWVBdCcsXG5dO1xuXG5jb25zdCBzb3J0QnlBdHRyaWJ1dGVPcmRlciA9IChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciA9PiB7XG4gIGNvbnN0IGFJbmRleCA9IGF0dHJpYnV0ZU9yZGVyLmluZGV4T2YoYSBhcyBBdHRyaWJ1dGVLZXkpIHx8IDA7XG4gIGNvbnN0IGJJbmRleCA9IGF0dHJpYnV0ZU9yZGVyLmluZGV4T2YoYiBhcyBBdHRyaWJ1dGVLZXkpIHx8IDA7XG4gIHJldHVybiBhSW5kZXggLSBiSW5kZXg7XG59O1xuXG4vKipcbiAqIERpc3BsYXkgbmFtZXMgZm9yIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgcmVuZGVyIGRpZmZlcmVudGx5IGZyb20gdGhlaXIga2V5LlxuICovXG5jb25zdCBhdHRyaWJ1dGVEaXNwbGF5TmFtZXM6IFBhcnRpYWw8UmVjb3JkPEF0dHJpYnV0ZUtleSwgc3RyaW5nPj4gPSB7XG4gIG1vZHVsZVNwZWNpZmllcjogJ01vZHVsZScsXG4gIHdvcmtmbG93TmFtZTogJ1dvcmtmbG93IE5hbWUnLFxuICBzdGVwTmFtZTogJ1N0ZXAgTmFtZScsXG4gIHN0ZXBJZDogJ1N0ZXAgSUQnLFxuICBob29rSWQ6ICdIb29rIElEJyxcbiAgYXR0ZW1wdDogJ0F0dGVtcHRzJyxcbiAgZXZlbnRJZDogJ0V2ZW50IElEJyxcbiAgcnVuSWQ6ICdSdW4gSUQnLFxuICB0b2tlbjogJ1Rva2VuJyxcbiAgZXZlbnRUeXBlOiAnRXZlbnQgVHlwZScsXG4gIGVycm9yQ29kZTogJ0Vycm9yIENvZGUnLFxuICBjb3JyZWxhdGlvbklkOiAnQ29ycmVsYXRpb24gSUQnLFxuICBkZXBsb3ltZW50SWQ6ICdEZXBsb3ltZW50IElEJyxcbiAgc3BlY1ZlcnNpb246ICdTcGVjIFZlcnNpb24nLFxuICB3b3JrZmxvd0NvcmVWZXJzaW9uOiAnQHdvcmtmbG93L2NvcmUgdmVyc2lvbicsXG4gIG9jY3VycmVkQXQ6ICdPY2N1cnJlZCcsXG4gIGNyZWF0ZWRBdDogJ0NyZWF0ZWQnLFxuICBzdGFydGVkQXQ6ICdTdGFydGVkJyxcbiAgdXBkYXRlZEF0OiAnVXBkYXRlZCcsXG4gIGNvbXBsZXRlZEF0OiAnQ29tcGxldGVkJyxcbiAgZXhwaXJlZEF0OiAnRXhwaXJlZCcsXG4gIHJldHJ5QWZ0ZXI6ICdSZXRyeSBBZnRlcicsXG4gIHJlc3VtZUF0OiAnUmVzdW1lJyxcbiAgbGFzdFJlY2VpdmVkQXQ6ICdMYXN0IFJlY2VpdmVkJyxcbiAgZGlzcG9zZWRBdDogJ0Rpc3Bvc2VkJyxcbiAgcmVjZWl2ZWRDb3VudDogJ1RpbWVzIFJlc29sdmVkJyxcbn07XG5cbi8qKlxuICogR2V0IHRoZSBkaXNwbGF5IG5hbWUgZm9yIGFuIGF0dHJpYnV0ZSBrZXkuXG4gKi9cbmNvbnN0IGdldEF0dHJpYnV0ZURpc3BsYXlOYW1lID0gKGF0dHJpYnV0ZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGF0dHJpYnV0ZURpc3BsYXlOYW1lc1thdHRyaWJ1dGUgYXMgQXR0cmlidXRlS2V5XSA/PyBhdHRyaWJ1dGU7XG59O1xuXG5jb25zdCBnZXRNb2R1bGVTcGVjaWZpZXJGcm9tTmFtZSA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHJhdyA9IFN0cmluZyh2YWx1ZSk7XG4gIGNvbnN0IHBhcnNlZFN0ZXAgPSBwYXJzZVN0ZXBOYW1lKHJhdyk7XG4gIGlmIChwYXJzZWRTdGVwKSB7XG4gICAgcmV0dXJuIHBhcnNlZFN0ZXAubW9kdWxlU3BlY2lmaWVyO1xuICB9XG4gIGNvbnN0IHBhcnNlZFdvcmtmbG93ID0gcGFyc2VXb3JrZmxvd05hbWUocmF3KTtcbiAgaWYgKHBhcnNlZFdvcmtmbG93KSB7XG4gICAgcmV0dXJuIHBhcnNlZFdvcmtmbG93Lm1vZHVsZVNwZWNpZmllcjtcbiAgfVxuICByZXR1cm4gcmF3O1xufTtcblxuY29uc3QgcGFyc2VEYXRlVmFsdWUgPSAodmFsdWU6IHVua25vd24pOiBEYXRlIHwgbnVsbCA9PiB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgIHJldHVybiBOdW1iZXIuaXNOYU4odmFsdWUuZ2V0VGltZSgpKSA/IG51bGwgOiB2YWx1ZTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBkYXRlID1cbiAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gbmV3IERhdGUodmFsdWUpIDogbmV3IERhdGUoU3RyaW5nKHZhbHVlKSk7XG4gIHJldHVybiBOdW1iZXIuaXNOYU4oZGF0ZS5nZXRUaW1lKCkpID8gbnVsbCA6IGRhdGU7XG59O1xuXG5jb25zdCBmb3JtYXRMb2NhbE1pbGxpc2Vjb25kVGltZSA9IChkYXRlOiBEYXRlKTogc3RyaW5nID0+XG4gIGZvcm1hdChkYXRlLCAnTU1NIGRkIEhIOm1tOnNzLlNTIE9PJykudG9VcHBlckNhc2UoKTtcblxuZXhwb3J0IGNvbnN0IGxvY2FsTWlsbGlzZWNvbmRUaW1lID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZVZhbHVlKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuICctJztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRMb2NhbE1pbGxpc2Vjb25kVGltZShkYXRlKTtcbn07XG5cbmNvbnN0IGxvY2FsTWlsbGlzZWNvbmRUaW1lT3JOdWxsID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGRhdGUgPSBwYXJzZURhdGVWYWx1ZSh2YWx1ZSk7XG4gIGlmICghZGF0ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBmb3JtYXRMb2NhbE1pbGxpc2Vjb25kVGltZShkYXRlKTtcbn07XG5cbmNvbnN0IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsID0gKHZhbHVlOiB1bmtub3duKTogUmVhY3ROb2RlIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGRhdGUgPSBwYXJzZURhdGVWYWx1ZSh2YWx1ZSk7XG4gIGlmICghZGF0ZSkgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoXG4gICAgPFRpbWVzdGFtcFRvb2x0aXAgZGF0ZT17ZGF0ZX0+XG4gICAgICA8c3Bhbj57Zm9ybWF0TG9jYWxNaWxsaXNlY29uZFRpbWUoZGF0ZSl9PC9zcGFuPlxuICAgIDwvVGltZXN0YW1wVG9vbHRpcD5cbiAgKTtcbn07XG5cbmludGVyZmFjZSBEaXNwbGF5Q29udGV4dCB7XG4gIHN0ZXBOYW1lPzogc3RyaW5nO1xuICBzZWN0aW9uT3Blbj86IGJvb2xlYW47XG4gIG9uU2VjdGlvbk9wZW5DaGFuZ2U/OiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuY29uc3QgYXR0cmlidXRlVG9EaXNwbGF5Rm46IFJlY29yZDxcbiAgQXR0cmlidXRlS2V5LFxuICAodmFsdWU6IHVua25vd24sIGNvbnRleHQ/OiBEaXNwbGF5Q29udGV4dCkgPT4gbnVsbCB8IHN0cmluZyB8IFJlYWN0Tm9kZVxuPiA9IHtcbiAgLy8gTmFtZXMgdGhhdCBuZWVkIHByZXR0eS1wcmludGluZ1xuICB3b3JrZmxvd05hbWU6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIG1vZHVsZVNwZWNpZmllcjogKHZhbHVlOiB1bmtub3duKSA9PiBnZXRNb2R1bGVTcGVjaWZpZXJGcm9tTmFtZSh2YWx1ZSksXG4gIHN0ZXBOYW1lOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICAvLyBJRHNcbiAgcnVuSWQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIHN0ZXBJZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBob29rSWQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgZXZlbnRJZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICAvLyBSdW4vc3RlcCBkZXRhaWxzXG4gIHN0YXR1czogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgYXR0ZW1wdDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICAvLyBIb29rIGRldGFpbHNcbiAgdG9rZW46ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgaXNXZWJob29rOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGlzU3lzdGVtOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIHJlY2VpdmVkQ291bnQ6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgbGFzdFJlY2VpdmVkQXQ6IGxvY2FsTWlsbGlzZWNvbmRUaW1lT3JOdWxsLFxuICBkaXNwb3NlZEF0OiBsb2NhbE1pbGxpc2Vjb25kVGltZU9yTnVsbCxcbiAgLy8gRXZlbnQgZGV0YWlsc1xuICBldmVudFR5cGU6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgY29ycmVsYXRpb25JZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICAvLyBQcm9qZWN0IGRldGFpbHNcbiAgZGVwbG95bWVudElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIHNwZWNWZXJzaW9uOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIHdvcmtmbG93Q29yZVZlcnNpb246ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgLy8gVGVuYW5jeSAod2UgZG9uJ3Qgc2hvdyB0aGVzZSlcbiAgb3duZXJJZDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgcHJvamVjdElkOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBlbnZpcm9ubWVudDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgZXhlY3V0aW9uQ29udGV4dDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgLy8gQXR0cmlidXRlcyDigJQgc3RyaW5nLXN0cmluZyBtZXRhZGF0YSBhdHRhY2hlZCB0byB0aGUgcnVuLlxuICAvLyBSZW5kZXJlZCBhcyBrZXktdmFsdWUgcm93cyBpbiBpdHMgb3duIGNvbGxhcHNpYmxlIHNlY3Rpb247XG4gIC8vIGlmIGVtcHR5L21pc3NpbmcsIGhpZGRlbiBieSB0aGUgaGFzRGlzcGxheUNvbnRlbnQgZ2F0ZS5cbiAgYXR0cmlidXRlczogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiA8UnVuQXR0cmlidXRlc0NhcmQgYXR0cmlidXRlcz17dmFsdWUgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPn0gLz47XG4gIH0sXG4gIC8vIERhdGVzIOKAlCB3cmFwcGVkIHdpdGggVGltZXN0YW1wVG9vbHRpcCBzaG93aW5nIFVUQy9sb2NhbCArIHJlbGF0aXZlIHRpbWVcbiAgb2NjdXJyZWRBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIHN0YXJ0ZWRBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIHVwZGF0ZWRBdDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgY29tcGxldGVkQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICBleHBpcmVkQXQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIHJldHJ5QWZ0ZXI6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICByZXN1bWVBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIC8vIFJlc29sdmVkIGF0dHJpYnV0ZXMsIHdvbid0IGFjdHVhbGx5IHVzZSB0aGlzIGZ1bmN0aW9uXG4gIG1ldGFkYXRhOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiTWV0YWRhdGFcIj5cbiAgICAgICAgICA8RW5jcnlwdGVkRGF0YUJsb2NrIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiTWV0YWRhdGFcIj5cbiAgICAgICAgICA8RXhwaXJlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiA8UnVuTWV0YWRhdGFDYXJkIG1ldGFkYXRhPXt2YWx1ZX0gLz47XG4gIH0sXG4gIGlucHV0OiAodmFsdWU6IHVua25vd24sIGNvbnRleHQ/OiBEaXNwbGF5Q29udGV4dCkgPT4ge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgICAgIGRlZmF1bHRPcGVuPXtjb250ZXh0Py5zZWN0aW9uT3Blbn1cbiAgICAgICAgICBvbk9wZW5DaGFuZ2U9e2NvbnRleHQ/Lm9uU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICAgID5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgLy8gQ2hlY2sgaWYgaW5wdXQgaGFzIGFyZ3MgKyBjbG9zdXJlIHZhcnMgc3RydWN0dXJlXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2FyZ3MnIGluIHZhbHVlKSB7XG4gICAgICBjb25zdCB7IGFyZ3MsIGNsb3N1cmVWYXJzLCB0aGlzVmFsIH0gPSB2YWx1ZSBhcyB7XG4gICAgICAgIGFyZ3M6IHVua25vd25bXTtcbiAgICAgICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgdGhpc1ZhbD86IHVua25vd247XG4gICAgICB9O1xuICAgICAgY29uc3QgaGFzQ2xvc3VyZVZhcnMgPSBoYXNEaXNwbGF5Q29udGVudChjbG9zdXJlVmFycyk7XG4gICAgICBjb25zdCBoYXNUaGlzVmFsID0gaGFzRGlzcGxheUNvbnRlbnQodGhpc1ZhbCk7XG4gICAgICBjb25zdCBoYXNBcmdzID0gaGFzRGlzcGxheUNvbnRlbnQoYXJncyk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBkb1N0cmVhbVN0ZXAgLSBzaG93IGNvbnZlcnNhdGlvbiB2aWV3IHdpdGggdGFic1xuICAgICAgaWYgKGNvbnRleHQ/LnN0ZXBOYW1lICYmIGlzRG9TdHJlYW1TdGVwKGNvbnRleHQuc3RlcE5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IGV4dHJhY3RDb252ZXJzYXRpb24oYXJncyk7XG4gICAgICAgIGlmIChjb252ZXJzYXRpb24gJiYgY29udmVyc2F0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPENvbnZlcnNhdGlvbldpdGhUYWJzXG4gICAgICAgICAgICAgICAgY29udmVyc2F0aW9uPXtjb252ZXJzYXRpb259XG4gICAgICAgICAgICAgICAgYXJncz17YXJnc31cbiAgICAgICAgICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7aGFzQ2xvc3VyZVZhcnMgJiYgKFxuICAgICAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkNsb3N1cmUgVmFyaWFibGVzXCI+XG4gICAgICAgICAgICAgICAgICB7SnNvbkJsb2NrKGNsb3N1cmVWYXJzKX1cbiAgICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aGFzVGhpc1ZhbCAmJiAoXG4gICAgICAgICAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiVGhpcyBWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge0pzb25CbG9jayh0aGlzVmFsKX1cbiAgICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBEb24ndCByZW5kZXIgYW4gZW1wdHkgXCJJbnB1dCAoMCBhcmd1bWVudHMpXCIgY2FyZCB3aGVuIG5vIGlucHV0IGV4aXN0cy5cbiAgICAgIGlmICghaGFzQXJncyAmJiAhaGFzQ2xvc3VyZVZhcnMgJiYgIWhhc1RoaXNWYWwpIHtcbiAgICAgICAgcmV0dXJuIDxDb2xsYXBzaWJsZSBsYWJlbD1cIklucHV0IChubyBkYXRhKVwiIGRpc2FibGVkIC8+O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgICAgbGFiZWw9XCJJbnB1dFwiXG4gICAgICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgICAgICBvbk9wZW5DaGFuZ2U9e2NvbnRleHQ/Lm9uU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge0FycmF5LmlzQXJyYXkoYXJncylcbiAgICAgICAgICAgICAgPyBhcmdzLm1hcCgodiwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIGZpcnN0Om10LTBcIiBrZXk9e2l9PlxuICAgICAgICAgICAgICAgICAgICB7SnNvbkJsb2NrKHYpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgOiBKc29uQmxvY2soYXJncyl9XG4gICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICB7aGFzQ2xvc3VyZVZhcnMgJiYgKFxuICAgICAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiQ2xvc3VyZSBWYXJpYWJsZXNcIj5cbiAgICAgICAgICAgICAge0pzb25CbG9jayhjbG9zdXJlVmFycyl9XG4gICAgICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2hhc1RoaXNWYWwgJiYgKFxuICAgICAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiQ29udGV4dFwiPntKc29uQmxvY2sodGhpc1ZhbCl9PC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IHRyZWF0IGFzIHBsYWluIGFycmF5IG9yIG9iamVjdFxuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gPENvbGxhcHNpYmxlIGxhYmVsPVwiSW5wdXQgKG5vIGRhdGEpXCIgZGlzYWJsZWQgLz47XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgbGFiZWw9XCJJbnB1dFwiXG4gICAgICAgIGRlZmF1bHRPcGVuPXtjb250ZXh0Py5zZWN0aW9uT3Blbn1cbiAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgPlxuICAgICAgICB7QXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IHZhbHVlLm1hcCgodiwgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIgZmlyc3Q6bXQtMFwiIGtleT17aX0+XG4gICAgICAgICAgICAgICAge0pzb25CbG9jayh2KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKVxuICAgICAgICAgIDogSnNvbkJsb2NrKHZhbHVlKX1cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgKTtcbiAgfSxcbiAgb3V0cHV0OiAodmFsdWU6IHVua25vd24sIGNvbnRleHQ/OiBEaXNwbGF5Q29udGV4dCkgPT4ge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgIGxhYmVsPVwiT3V0cHV0XCJcbiAgICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICA+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICByZXR1cm4gKFxuICAgICAgPENvbGxhcHNpYmxlXG4gICAgICAgIGxhYmVsPVwiT3V0cHV0XCJcbiAgICAgICAgZGVmYXVsdE9wZW49e2NvbnRleHQ/LnNlY3Rpb25PcGVufVxuICAgICAgICBvbk9wZW5DaGFuZ2U9e2NvbnRleHQ/Lm9uU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICA+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICApO1xuICB9LFxuICBlcnJvcjogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiRXJyb3JcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gICAgLy8gU3RydWN0dXJlZCB3b3JrZmxvdyBlcnJvcnMgbWF5IGJlIHBlcnNpc3RlZCBhcyBlaXRoZXIgYHsgbWVzc2FnZSB9YCBvclxuICAgIC8vIGB7IG1lc3NhZ2UsIHN0YWNrIH1gLiBSZW5kZXIgYm90aCB3aXRoIHRoZSBkZWRpY2F0ZWQgZXJyb3IgYmxvY2suXG4gICAgaWYgKGlzU3RydWN0dXJlZEVycm9yKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiRXJyb3JcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RXJyb3JTdGFja0Jsb2NrIHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkVycm9yXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICApO1xuICB9LFxuICBldmVudERhdGE6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkV2ZW50IERhdGFcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGUgbGFiZWw9XCJFdmVudCBEYXRhXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICApO1xuICB9LFxuICBlcnJvckNvZGU6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH0sXG59O1xuXG5jb25zdCByZXNvbHZhYmxlQXR0cmlidXRlcyA9IFtcbiAgJ2lucHV0JyxcbiAgJ291dHB1dCcsXG4gICdlcnJvcicsXG4gICdtZXRhZGF0YScsXG4gICdhdHRyaWJ1dGVzJyxcbiAgJ2V2ZW50RGF0YScsXG5dO1xuXG4vLyBBdHRyaWJ1dGVzIHdob3NlIGRpc3BsYXlGbiByZW5kZXJzIGl0cyBvd24gc2VjdGlvbiBoZWFkZXIgdmlhIENvbGxhcHNpYmxlLFxuLy8gc28gdGhlIG91dGVyIEF0dHJpYnV0ZUJsb2NrIHNob3VsZCBub3QgZHVwbGljYXRlIHRoZSBsYWJlbC5cbmNvbnN0IHNlbGZIZWFkZXJlZEF0dHJpYnV0ZXMgPSBuZXcgU2V0KFtcbiAgJ2lucHV0JyxcbiAgJ291dHB1dCcsXG4gICdlcnJvcicsXG4gICdtZXRhZGF0YScsXG4gICdhdHRyaWJ1dGVzJyxcbiAgJ2V2ZW50RGF0YScsXG5dKTtcblxuY29uc3QgRXhwaXJlZERhdGFNZXNzYWdlID0gKCkgPT4gKFxuICA8ZGl2XG4gICAgY2xhc3NOYW1lPVwidGV4dC1jb3B5LTEyIHJvdW5kZWQtbWQgYm9yZGVyIHAtNCBteS0yXCJcbiAgICBzdHlsZT17e1xuICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDApJyxcbiAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICB9fVxuICA+XG4gICAgPHNwYW4+VGhlIGRhdGEgZm9yIHRoaXMgcnVuIGhhcyBleHBpcmVkIGFuZCBpcyBubyBsb25nZXIgYXZhaWxhYmxlLjwvc3Bhbj5cbiAgPC9kaXY+XG4pO1xuXG5jb25zdCBjb3B5YWJsZUJhc2ljQXR0cmlidXRlcyA9IG5ldyBTZXQ8QXR0cmlidXRlS2V5PihbXG4gICdzdGVwSWQnLFxuICAnaG9va0lkJyxcbiAgJ2V2ZW50SWQnLFxuICAnZGVwbG95bWVudElkJyxcbiAgJ21vZHVsZVNwZWNpZmllcicsXG4gICd0b2tlbicsXG5dKTtcblxuY29uc3QgbG9hZGluZ1NlY3Rpb25MYWJlbHM6IFBhcnRpYWw8UmVjb3JkPEF0dHJpYnV0ZUtleSwgc3RyaW5nPj4gPSB7XG4gIGlucHV0OiAnSW5wdXQnLFxuICBvdXRwdXQ6ICdPdXRwdXQnLFxuICBldmVudERhdGE6ICdFdmVudCBEYXRhJyxcbn07XG5cbmV4cG9ydCBjb25zdCBBdHRyaWJ1dGVCbG9jayA9ICh7XG4gIGF0dHJpYnV0ZSxcbiAgdmFsdWUsXG4gIGlzTG9hZGluZyxcbiAgaW5saW5lID0gZmFsc2UsXG4gIGNvbnRleHQsXG59OiB7XG4gIGF0dHJpYnV0ZTogc3RyaW5nO1xuICB2YWx1ZTogdW5rbm93bjtcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgaW5saW5lPzogYm9vbGVhbjtcbiAgY29udGV4dD86IERpc3BsYXlDb250ZXh0O1xufSkgPT4ge1xuICBjb25zdCBkZWNyeXB0Q3R4ID0gdXNlQ29udGV4dChEZWNyeXB0Q2xpY2tDb250ZXh0KTtcbiAgY29uc3Qgc2VjdGlvbk9wZW5SZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVTZWN0aW9uT3BlbkNoYW5nZSA9IHVzZUNhbGxiYWNrKChvcGVuOiBib29sZWFuKSA9PiB7XG4gICAgc2VjdGlvbk9wZW5SZWYuY3VycmVudCA9IG9wZW47XG4gIH0sIFtdKTtcbiAgY29uc3QgbGFiZWwgPSBsb2FkaW5nU2VjdGlvbkxhYmVsc1thdHRyaWJ1dGUgYXMgQXR0cmlidXRlS2V5XTtcbiAgaWYgKGlzTG9hZGluZyAmJiBsYWJlbCAmJiAhaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSB7XG4gICAgaWYgKGRlY3J5cHRDdHg/Lmhhc0VuY3J5cHRlZERhdGEpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICBkZWZhdWx0T3Blbj17YXR0cmlidXRlID09PSAnZXZlbnREYXRhJyB8fCBzZWN0aW9uT3BlblJlZi5jdXJyZW50fVxuICAgICAgICAgIG9uT3BlbkNoYW5nZT17aGFuZGxlU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICAgID5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIDxDb2xsYXBzaWJsZSBsYWJlbD17bGFiZWx9IC8+O1xuICB9XG5cbiAgY29uc3QgZGlzcGxheUZuID1cbiAgICBhdHRyaWJ1dGVUb0Rpc3BsYXlGblthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGF0dHJpYnV0ZVRvRGlzcGxheUZuXTtcbiAgaWYgKCFkaXNwbGF5Rm4pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBkaXNwbGF5VmFsdWUgPSBkaXNwbGF5Rm4odmFsdWUsIHtcbiAgICAuLi5jb250ZXh0LFxuICAgIHNlY3Rpb25PcGVuOiBzZWN0aW9uT3BlblJlZi5jdXJyZW50LFxuICAgIG9uU2VjdGlvbk9wZW5DaGFuZ2U6IGhhbmRsZVNlY3Rpb25PcGVuQ2hhbmdlLFxuICB9KTtcbiAgaWYgKCFkaXNwbGF5VmFsdWUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChpbmxpbmUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bMTFweF0gZm9udC1tZWRpdW1cIlxuICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2F0dHJpYnV0ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMXB4XVwiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScgfX0+XG4gICAgICAgICAge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGlmIChzZWxmSGVhZGVyZWRBdHRyaWJ1dGVzLmhhcyhhdHRyaWJ1dGUpKSB7XG4gICAgcmV0dXJuIDw+e2Rpc3BsYXlWYWx1ZX08Lz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgIHt0eXBlb2YgaXNMb2FkaW5nID09PSAnYm9vbGVhbicgJiYgaXNMb2FkaW5nICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtOSByaWdodC00XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHJvdW5kZWQtZnVsbCBoLTQgdy00IGJvcmRlci1iLTJcIlxuICAgICAgICAgICAgc3R5bGU9e3sgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAgPGRpdiBrZXk9e2F0dHJpYnV0ZX0gY2xhc3NOYW1lPVwibXktMiBmbGV4IGZsZXgtY29sIGdhcC0wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGFiZWwtMTQgdGV4dC1ncmF5LTEwMDAgZm9udC1tZWRpdW0gZmlyc3QtbGV0dGVyOnVwcGVyY2FzZVwiPlxuICAgICAgICAgIHthdHRyaWJ1dGV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14c1wiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDAwKScgfX0+XG4gICAgICAgICAge2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRlUGFuZWwgPSAoe1xuICBkYXRhLFxuICBtb2R1bGVTcGVjaWZpZXIsXG4gIG1vZHVsZVNvdXJjZVVybCxcbiAgaXNMb2FkaW5nLFxuICBlcnJvcixcbiAgZXhwaXJlZEF0LFxuICBvblN0cmVhbUNsaWNrLFxuICBvblJ1bkNsaWNrLFxuICBvbkRlY3J5cHQsXG4gIGlzRGVjcnlwdGluZyA9IGZhbHNlLFxuICByZXNvdXJjZSxcbn06IHtcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1vZHVsZVNwZWNpZmllcj86IHN0cmluZztcbiAgbW9kdWxlU291cmNlVXJsPzogc3RyaW5nO1xuICBpc0xvYWRpbmc/OiBib29sZWFuO1xuICBlcnJvcj86IEVycm9yO1xuICBleHBpcmVkQXQ/OiBzdHJpbmcgfCBEYXRlO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBhIHN0cmVhbSByZWZlcmVuY2UgaXMgY2xpY2tlZCAqL1xuICBvblN0cmVhbUNsaWNrPzogKHN0cmVhbUlkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIC8qKiBDYWxsYmFjayB3aGVuIGEgcnVuIHJlZmVyZW5jZSBpcyBjbGlja2VkICovXG4gIG9uUnVuQ2xpY2s/OiAocnVuSWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIHdoZW4gYW4gZW5jcnlwdGVkIG1hcmtlciBpcyBjbGlja2VkICh0cmlnZ2VycyBkZWNyeXB0aW9uKSAqL1xuICBvbkRlY3J5cHQ/OiAoKSA9PiB2b2lkO1xuICAvKiogV2hldGhlciBkZWNyeXB0aW9uIGlzIGN1cnJlbnRseSBpbiBwcm9ncmVzcyAqL1xuICBpc0RlY3J5cHRpbmc/OiBib29sZWFuO1xuICAvKiogUmVzb3VyY2UgdHlwZSBvZiB0aGUgc2VsZWN0ZWQgc3BhbiDigJQgdXNlZCB0byBzaG93IHRhcmdldGVkIGxvYWRpbmcgc2tlbGV0b25zLiAqL1xuICByZXNvdXJjZT86IHN0cmluZztcbn0pID0+IHtcbiAgLy8gRXh0cmFjdCB3b3JrZmxvd0NvcmVWZXJzaW9uIGZyb20gZXhlY3V0aW9uQ29udGV4dCBmb3IgZGlzcGxheVxuICBjb25zdCBkaXNwbGF5RGF0YSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHsgLi4uZGF0YSB9O1xuICAgIGNvbnN0IGV4ZWNDdHggPSBkYXRhLmV4ZWN1dGlvbkNvbnRleHQgYXNcbiAgICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIHwgdW5kZWZpbmVkO1xuICAgIGlmIChleGVjQ3R4Py53b3JrZmxvd0NvcmVWZXJzaW9uKSB7XG4gICAgICByZXN1bHQud29ya2Zsb3dDb3JlVmVyc2lvbiA9IGV4ZWNDdHgud29ya2Zsb3dDb3JlVmVyc2lvbjtcbiAgICB9XG4gICAgaWYgKG1vZHVsZVNwZWNpZmllcikge1xuICAgICAgcmVzdWx0Lm1vZHVsZVNwZWNpZmllciA9IG1vZHVsZVNwZWNpZmllcjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhLnN0ZXBOYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0Lm1vZHVsZVNwZWNpZmllciA9IGRhdGEuc3RlcE5hbWU7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YS53b3JrZmxvd05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXN1bHQubW9kdWxlU3BlY2lmaWVyID0gZGF0YS53b3JrZmxvd05hbWU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIFtkYXRhLCBtb2R1bGVTcGVjaWZpZXJdKTtcbiAgY29uc3QgaGFzRXhwaXJlZCA9IGV4cGlyZWRBdCAhPSBudWxsICYmIG5ldyBEYXRlKGV4cGlyZWRBdCkgPCBuZXcgRGF0ZSgpO1xuICBjb25zdCBiYXNpY0F0dHJpYnV0ZXMgPSBPYmplY3Qua2V5cyhkaXNwbGF5RGF0YSlcbiAgICAuZmlsdGVyKChrZXkpID0+ICFyZXNvbHZhYmxlQXR0cmlidXRlcy5pbmNsdWRlcyhrZXkpKVxuICAgIC5zb3J0KHNvcnRCeUF0dHJpYnV0ZU9yZGVyKTtcbiAgY29uc3QgcmVzb2x2ZWRBdHRyaWJ1dGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcHJlc2VudCA9IE9iamVjdC5rZXlzKGRpc3BsYXlEYXRhKVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiByZXNvbHZhYmxlQXR0cmlidXRlcy5pbmNsdWRlcyhrZXkpKVxuICAgICAgLnNvcnQoc29ydEJ5QXR0cmlidXRlT3JkZXIpO1xuXG4gICAgaWYgKCFpc0xvYWRpbmcpIHJldHVybiBwcmVzZW50O1xuXG4gICAgaWYgKHJlc291cmNlID09PSAnc2xlZXAnKSByZXR1cm4gcHJlc2VudDtcblxuICAgIGNvbnN0IGxvYWRpbmdQbGFjZWhvbGRlcnMgPSBbJ2lucHV0JywgJ291dHB1dCddO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGxvYWRpbmdQbGFjZWhvbGRlcnMpIHtcbiAgICAgIGlmICghcHJlc2VudC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHByZXNlbnQucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJlc2VudC5zb3J0KHNvcnRCeUF0dHJpYnV0ZU9yZGVyKTtcbiAgfSwgW2Rpc3BsYXlEYXRhLCBpc0xvYWRpbmcsIHJlc291cmNlXSk7XG5cbiAgLy8gRmlsdGVyIG91dCBhdHRyaWJ1dGVzIHRoYXQgcmV0dXJuIG51bGxcbiAgY29uc3QgdmlzaWJsZUJhc2ljQXR0cmlidXRlcyA9IGJhc2ljQXR0cmlidXRlcy5maWx0ZXIoKGF0dHJpYnV0ZSkgPT4ge1xuICAgIGNvbnN0IGRpc3BsYXlGbiA9XG4gICAgICBhdHRyaWJ1dGVUb0Rpc3BsYXlGblthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGF0dHJpYnV0ZVRvRGlzcGxheUZuXTtcbiAgICBpZiAoIWRpc3BsYXlGbikgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGRpc3BsYXlWYWx1ZSA9IGRpc3BsYXlGbihcbiAgICAgIGRpc3BsYXlEYXRhW2F0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgZGlzcGxheURhdGFdXG4gICAgKTtcbiAgICByZXR1cm4gZGlzcGxheVZhbHVlICE9PSBudWxsO1xuICB9KTtcblxuICAvLyBLZWVwIGBtb2R1bGVTcGVjaWZpZXJgIGltbWVkaWF0ZWx5IGFmdGVyIGB3b3JrZmxvd05hbWVgIG9yIGBzdGVwTmFtZWAuXG4gIGNvbnN0IG9yZGVyZWRCYXNpY0F0dHJpYnV0ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gWy4uLnZpc2libGVCYXNpY0F0dHJpYnV0ZXNdO1xuICAgIGNvbnN0IG1vZHVsZVNwZWNpZmllckluZGV4ID0gYXR0cmlidXRlcy5pbmRleE9mKCdtb2R1bGVTcGVjaWZpZXInKTtcbiAgICBpZiAobW9kdWxlU3BlY2lmaWVySW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVzLnNwbGljZShtb2R1bGVTcGVjaWZpZXJJbmRleCwgMSk7XG4gICAgY29uc3Qgd29ya2Zsb3dOYW1lSW5kZXggPSBhdHRyaWJ1dGVzLmluZGV4T2YoJ3dvcmtmbG93TmFtZScpO1xuICAgIGlmICh3b3JrZmxvd05hbWVJbmRleCAhPT0gLTEpIHtcbiAgICAgIGF0dHJpYnV0ZXMuc3BsaWNlKHdvcmtmbG93TmFtZUluZGV4ICsgMSwgMCwgJ21vZHVsZVNwZWNpZmllcicpO1xuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RlcE5hbWVJbmRleCA9IGF0dHJpYnV0ZXMuaW5kZXhPZignc3RlcE5hbWUnKTtcbiAgICBpZiAoc3RlcE5hbWVJbmRleCAhPT0gLTEpIHtcbiAgICAgIGF0dHJpYnV0ZXMuc3BsaWNlKHN0ZXBOYW1lSW5kZXggKyAxLCAwLCAnbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBhdHRyaWJ1dGVzLnVuc2hpZnQoJ21vZHVsZVNwZWNpZmllcicpO1xuICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICB9LCBbdmlzaWJsZUJhc2ljQXR0cmlidXRlc10pO1xuXG4gIC8vIE1lbW9pemUgY29udGV4dCBvYmplY3QgdG8gYXZvaWQgb2JqZWN0IHJlY29uc3RydWN0aW9uIG9uIHJlbmRlclxuICBjb25zdCBkaXNwbGF5Q29udGV4dCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHN0ZXBOYW1lOiBkaXNwbGF5RGF0YS5zdGVwTmFtZSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgfSksXG4gICAgW2Rpc3BsYXlEYXRhLnN0ZXBOYW1lXVxuICApO1xuICBjb25zdCBvdXRlckRlY3J5cHRDdHggPSB1c2VDb250ZXh0KERlY3J5cHRDbGlja0NvbnRleHQpO1xuICBjb25zdCBkZWNyeXB0VmFsdWUgPSBvbkRlY3J5cHRcbiAgICA/IHtcbiAgICAgICAgb25EZWNyeXB0LFxuICAgICAgICBpc0RlY3J5cHRpbmcsXG4gICAgICAgIGhhc0VuY3J5cHRlZERhdGE6IG91dGVyRGVjcnlwdEN0eD8uaGFzRW5jcnlwdGVkRGF0YSxcbiAgICAgIH1cbiAgICA6IG91dGVyRGVjcnlwdEN0eDtcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0Q2FyZFByb3ZpZGVyPlxuICAgICAgPFJ1bkNsaWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17b25SdW5DbGlja30+XG4gICAgICAgIDxTdHJlYW1DbGlja0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e29uU3RyZWFtQ2xpY2t9PlxuICAgICAgICAgIDxEZWNyeXB0Q2xpY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtkZWNyeXB0VmFsdWV9PlxuICAgICAgICAgICAge3Zpc2libGVCYXNpY0F0dHJpYnV0ZXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgIDxDb2xsYXBzaWJsZVJvb3QgZGVmYXVsdE9wZW4+XG4gICAgICAgICAgICAgICAgPENvbGxhcHNpYmxlVHJpZ2dlcj5NZXRhZGF0YTwvQ29sbGFwc2libGVUcmlnZ2VyPlxuICAgICAgICAgICAgICAgIDxDb2xsYXBzaWJsZUNvbnRlbnQgY2xhc3NOYW1lPVwibXQtMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgICAgICAgICAge29yZGVyZWRCYXNpY0F0dHJpYnV0ZXMubWFwKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkaXNwbGF5VmFsdWUgPSBhdHRyaWJ1dGVUb0Rpc3BsYXlGbltcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgYXR0cmlidXRlVG9EaXNwbGF5Rm5cbiAgICAgICAgICAgICAgICAgICAgICBdPy4oZGlzcGxheURhdGFbYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBkaXNwbGF5RGF0YV0pO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29weWFibGVCYXNpY0F0dHJpYnV0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5YWJsZUJhc2ljQXR0cmlidXRlcy5oYXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICkgJiYgdHlwZW9mIGRpc3BsYXlWYWx1ZSA9PT0gJ3N0cmluZyc7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBnZXRBdHRyaWJ1dGVEaXNwbGF5TmFtZShhdHRyaWJ1dGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxEZXRhaWxNb25vS2V5VmFsdWVSb3dcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVRleHQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29weWFibGVCYXNpY0F0dHJpYnV0ZSA/IGRpc3BsYXlWYWx1ZSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSA9PT0gJ21vZHVsZVNwZWNpZmllcidcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbW9kdWxlU291cmNlVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nICYmXG4gICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2UgPT09ICdzbGVlcCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhZGlzcGxheURhdGEucmVzdW1lQXQgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMgcHktMC41XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtbGFiZWwtMTMgdGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJoLTQgdy1bNTUlXVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9Db2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICAgICAgICAgIDwvQ29sbGFwc2libGVSb290PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtlcnJvciA/IChcbiAgICAgICAgICAgICAgPEVycm9yQ2FyZFxuICAgICAgICAgICAgICAgIHRpdGxlPVwiRmFpbGVkIHRvIGxvYWQgcmVzb3VyY2UgZGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgZGV0YWlscz17ZXJyb3IubWVzc2FnZX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteS00XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBoYXNFeHBpcmVkID8gKFxuICAgICAgICAgICAgICA8RXhwaXJlZERhdGFNZXNzYWdlIC8+XG4gICAgICAgICAgICApIDogcmVzb2x2ZWRBdHRyaWJ1dGVzLmxlbmd0aCA+IDAgPyAoXG4gICAgICAgICAgICAgIHJlc29sdmVkQXR0cmlidXRlcy5tYXAoKGF0dHJpYnV0ZSkgPT4gKFxuICAgICAgICAgICAgICAgIDxBdHRyaWJ1dGVCbG9ja1xuICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgICAgICAgICBrZXk9e2F0dHJpYnV0ZX1cbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZT17YXR0cmlidXRlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2Rpc3BsYXlEYXRhW2F0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgZGlzcGxheURhdGFdfVxuICAgICAgICAgICAgICAgICAgY29udGV4dD17ZGlzcGxheUNvbnRleHR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvRGVjcnlwdENsaWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9TdHJlYW1DbGlja0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L1J1bkNsaWNrQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0NvbnRleHRDYXJkUHJvdmlkZXI+XG4gICk7XG59O1xuIl19
533
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0cmlidXRlLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2lkZWJhci9hdHRyaWJ1dGUtcGFuZWwudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixrQkFBa0IsR0FDbkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFD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QyxDQUFDLENBQUMsQ0FBQyxDQUNsQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQ3BDLEtBQUMsY0FBYyxJQUNiLFNBQVMsRUFBRSxTQUFTLEVBRXBCLFNBQVMsRUFBRSxTQUFTLEVBQ3BCLEtBQUssRUFBRSxXQUFXLENBQUMsU0FBcUMsQ0FBQyxFQUN6RCxPQUFPLEVBQUUsY0FBYyxJQUhsQixTQUFTLENBSWQsQ0FDSCxDQUFDLENBQ0gsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUNxQixHQUNILEdBQ0wsR0FDUCxDQUN2QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBwYXJzZVN0ZXBOYW1lLCBwYXJzZVdvcmtmbG93TmFtZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmltcG9ydCB0eXBlIHsgRXZlbnQsIEhvb2ssIFN0ZXAsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB0eXBlIHsgTW9kZWxNZXNzYWdlIH0gZnJvbSAnYWknO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZEV2ZW50LCBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGlzRW5jcnlwdGVkTWFya2VyLCBpc0V4cGlyZWRNYXJrZXIgfSBmcm9tICcuLi8uLi9saWIvaHlkcmF0aW9uJztcbmltcG9ydCB7IGV4dHJhY3RDb252ZXJzYXRpb24sIGlzRG9TdHJlYW1TdGVwIH0gZnJvbSAnLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7XG4gIENvbGxhcHNpYmxlLFxuICBDb2xsYXBzaWJsZUNvbnRlbnQsXG4gIENvbGxhcHNpYmxlUm9vdCxcbiAgQ29sbGFwc2libGVUcmlnZ2VyLFxufSBmcm9tICcuLi91aS9jb2xsYXBzaWJsZSc7XG5pbXBvcnQgeyBDb250ZXh0Q2FyZFByb3ZpZGVyIH0gZnJvbSAnLi4vdWkvY29udGV4dC1jYXJkJztcbmltcG9ydCB7XG4gIERlY3J5cHRDbGlja0NvbnRleHQsXG4gIFJ1bkNsaWNrQ29udGV4dCxcbiAgU3RyZWFtQ2xpY2tDb250ZXh0LFxufSBmcm9tICcuLi91aS9kYXRhLWluc3BlY3Rvcic7XG5pbXBvcnQgeyBFcnJvckNhcmQgfSBmcm9tICcuLi91aS9lcnJvci1jYXJkJztcbmltcG9ydCB7IEVycm9yU3RhY2tCbG9jaywgaXNTdHJ1Y3R1cmVkRXJyb3IgfSBmcm9tICcuLi91aS9lcnJvci1zdGFjay1ibG9jayc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL3VpL3NrZWxldG9uJztcbmltcG9ydCB7IFRpbWVzdGFtcFRvb2x0aXAgfSBmcm9tICcuLi91aS90aW1lc3RhbXAtdG9vbHRpcCc7XG5pbXBvcnQge1xuICBEZXRhaWxNb25vS2V5VmFsdWVSb3csXG4gIFJ1bkF0dHJpYnV0ZXNDYXJkLFxuICBSdW5NZXRhZGF0YUNhcmQsXG59IGZyb20gJy4vYXR0cmlidXRlcy1ibG9jayc7XG5pbXBvcnQgeyBDb252ZXJzYXRpb25WaWV3IH0gZnJvbSAnLi9jb252ZXJzYXRpb24tdmlldyc7XG5pbXBvcnQgeyBDb3B5YWJsZURhdGFCbG9jaywgRW5jcnlwdGVkRGF0YUJsb2NrIH0gZnJvbSAnLi9jb3B5YWJsZS1kYXRhLWJsb2NrJztcblxuLyoqXG4gKiBUYWIgYnV0dG9uIGZvciBjb252ZXJzYXRpb24vSlNPTiB0b2dnbGVcbiAqL1xuZnVuY3Rpb24gVGFiQnV0dG9uKHtcbiAgYWN0aXZlLFxuICBvbkNsaWNrLFxuICBjaGlsZHJlbixcbn06IHtcbiAgYWN0aXZlOiBib29sZWFuO1xuICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufSkge1xuICByZXR1cm4gKFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgcm9sZT1cInRhYlwiXG4gICAgICBhcmlhLXNlbGVjdGVkPXthY3RpdmV9XG4gICAgICB0YWJJbmRleD17YWN0aXZlID8gMCA6IC0xfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgIGNsYXNzTmFtZT1cInB4LTMgcHktMS41IHRleHQtWzExcHhdIGZvbnQtbWVkaXVtIHRyYW5zaXRpb24tY29sb3JzIC1tYi1weFwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICAvLyBFeHBsaWNpdCBzdHlsZXMgdG8gcHJldmVudCBhcHAtbGV2ZWwgYnV0dG9uIG92ZXJyaWRlcyB3aGVuIHdlYi1zaGFyZWRcbiAgICAgICAgLy8gaXMgZW1iZWRkZWQgaW4gYSBzZWxmLWhvc3RlZCBhcHAuXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgYm9yZGVyVG9wOiAnbm9uZScsXG4gICAgICAgIGJvcmRlckxlZnQ6ICdub25lJyxcbiAgICAgICAgYm9yZGVyUmlnaHQ6ICdub25lJyxcbiAgICAgICAgYm9yZGVyQm90dG9tOiBgMnB4IHNvbGlkICR7YWN0aXZlID8gJ3ZhcigtLWRzLWJsdWUtNjAwKScgOiAndHJhbnNwYXJlbnQnfWAsXG4gICAgICAgIGJvcmRlclJhZGl1czogMCxcbiAgICAgICAgb3V0bGluZTogJ25vbmUnLFxuICAgICAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgIGNvbG9yOiBhY3RpdmUgPyAndmFyKC0tZHMtZ3JheS0xMDAwKScgOiAndmFyKC0tZHMtZ3JheS02MDApJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvYnV0dG9uPlxuICApO1xufVxuXG4vKipcbiAqIFNoYXJlZCB0YWJiZWQgY29udGFpbmVyIHdpdGggYWNjZXNzaWJsZSBBUklBIHJvbGVzIGFuZCBrZXlib2FyZCBuYXZpZ2F0aW9uLlxuICogVXNlZCBieSBDb252ZXJzYXRpb25XaXRoVGFicyBmb3IgdGhlIGNvbnZlcnNhdGlvbi9KU09OIHRvZ2dsZS5cbiAqL1xuZnVuY3Rpb24gVGFiYmVkQ29udGFpbmVyPFQgZXh0ZW5kcyBzdHJpbmc+KHtcbiAgdGFicyxcbiAgYWN0aXZlVGFiLFxuICBvblRhYkNoYW5nZSxcbiAgYXJpYUxhYmVsLFxuICBjaGlsZHJlbixcbn06IHtcbiAgdGFiczogeyBpZDogVDsgbGFiZWw6IHN0cmluZyB9W107XG4gIGFjdGl2ZVRhYjogVDtcbiAgb25UYWJDaGFuZ2U6ICh0YWI6IFQpID0+IHZvaWQ7XG4gIGFyaWFMYWJlbDogc3RyaW5nO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufSkge1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ0Fycm93UmlnaHQnICYmIGV2ZW50LmtleSAhPT0gJ0Fycm93TGVmdCcpIHJldHVybjtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0YWJzLmZpbmRJbmRleCgodCkgPT4gdC5pZCA9PT0gYWN0aXZlVGFiKTtcbiAgICAgIGNvbnN0IG5leHRJbmRleCA9XG4gICAgICAgIGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnXG4gICAgICAgICAgPyAoY3VycmVudEluZGV4ICsgMSkgJSB0YWJzLmxlbmd0aFxuICAgICAgICAgIDogKGN1cnJlbnRJbmRleCAtIDEgKyB0YWJzLmxlbmd0aCkgJSB0YWJzLmxlbmd0aDtcbiAgICAgIG9uVGFiQ2hhbmdlKHRhYnNbbmV4dEluZGV4XS5pZCk7XG4gICAgfSxcbiAgICBbdGFicywgYWN0aXZlVGFiLCBvblRhYkNoYW5nZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtbWQgYm9yZGVyXCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS0zMDApJyxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cImZsZXggZ2FwLTEgYm9yZGVyLWJcIlxuICAgICAgICByb2xlPVwidGFibGlzdFwiXG4gICAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3dufVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS0zMDApJyxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHt0YWJzLm1hcCgodGFiKSA9PiAoXG4gICAgICAgICAgPFRhYkJ1dHRvblxuICAgICAgICAgICAga2V5PXt0YWIuaWR9XG4gICAgICAgICAgICBhY3RpdmU9e2FjdGl2ZVRhYiA9PT0gdGFiLmlkfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25UYWJDaGFuZ2UodGFiLmlkKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGFiLmxhYmVsfVxuICAgICAgICAgIDwvVGFiQnV0dG9uPlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IHJvbGU9XCJ0YWJwYW5lbFwiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgY29udmVyc2F0aW9uVGFicyA9IFtcbiAgeyBpZDogJ2NvbnZlcnNhdGlvbicgYXMgY29uc3QsIGxhYmVsOiAnQ29udmVyc2F0aW9uJyB9LFxuICB7IGlkOiAnanNvbicgYXMgY29uc3QsIGxhYmVsOiAnUmF3IEpTT04nIH0sXG5dO1xuXG4vKipcbiAqIFRhYmJlZCB2aWV3IGZvciBjb252ZXJzYXRpb24gYW5kIHJhdyBKU09OXG4gKi9cbmZ1bmN0aW9uIENvbnZlcnNhdGlvbldpdGhUYWJzKHtcbiAgY29udmVyc2F0aW9uLFxuICBhcmdzLFxuICBkZWZhdWx0T3BlbixcbiAgb25PcGVuQ2hhbmdlLFxufToge1xuICBjb252ZXJzYXRpb246IE1vZGVsTWVzc2FnZVtdO1xuICBhcmdzOiB1bmtub3duW107XG4gIGRlZmF1bHRPcGVuPzogYm9vbGVhbjtcbiAgb25PcGVuQ2hhbmdlPzogKG9wZW46IGJvb2xlYW4pID0+IHZvaWQ7XG59KSB7XG4gIGNvbnN0IFthY3RpdmVUYWIsIHNldEFjdGl2ZVRhYl0gPSB1c2VTdGF0ZTwnY29udmVyc2F0aW9uJyB8ICdqc29uJz4oXG4gICAgJ2NvbnZlcnNhdGlvbidcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxDb2xsYXBzaWJsZVxuICAgICAgbGFiZWw9XCJJbnB1dFwiXG4gICAgICBkZWZhdWx0T3Blbj17ZGVmYXVsdE9wZW59XG4gICAgICBvbk9wZW5DaGFuZ2U9e29uT3BlbkNoYW5nZX1cbiAgICA+XG4gICAgICA8VGFiYmVkQ29udGFpbmVyXG4gICAgICAgIHRhYnM9e2NvbnZlcnNhdGlvblRhYnN9XG4gICAgICAgIGFjdGl2ZVRhYj17YWN0aXZlVGFifVxuICAgICAgICBvblRhYkNoYW5nZT17c2V0QWN0aXZlVGFifVxuICAgICAgICBhcmlhTGFiZWw9XCJDb252ZXJzYXRpb24gdmlld1wiXG4gICAgICA+XG4gICAgICAgIHthY3RpdmVUYWIgPT09ICdjb252ZXJzYXRpb24nID8gKFxuICAgICAgICAgIDxDb252ZXJzYXRpb25WaWV3IG1lc3NhZ2VzPXtjb252ZXJzYXRpb259IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTNcIj5cbiAgICAgICAgICAgIHtBcnJheS5pc0FycmF5KGFyZ3MpXG4gICAgICAgICAgICAgID8gYXJncy5tYXAoKHYsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmaXJzdDptdC0wXCIga2V5PXtpfT5cbiAgICAgICAgICAgICAgICAgICAge0pzb25CbG9jayh2KX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIDogSnNvbkJsb2NrKGFyZ3MpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9UYWJiZWRDb250YWluZXI+XG4gICAgPC9Db2xsYXBzaWJsZT5cbiAgKTtcbn1cblxuLyoqXG4gKiBSZW5kZXIgYSB2YWx1ZSB3aXRoIHRoZSBzaGFyZWQgRGF0YUluc3BlY3RvciAoT2JqZWN0SW5zcGVjdG9yIHdpdGhcbiAqIGN1c3RvbSB0aGVtaW5nLCBub2RlUmVuZGVyZXIgZm9yIFN0cmVhbVJlZi9DbGFzc0luc3RhbmNlUmVmLCBldGMuKVxuICovXG5mdW5jdGlvbiBFbmNyeXB0ZWRGaWVsZEJsb2NrKCkge1xuICByZXR1cm4gPEVuY3J5cHRlZERhdGFCbG9jayAvPjtcbn1cblxuLyoqXG4gKiBJbmxpbmUgZGlzcGxheSBmb3IgYW4gZXhwaXJlZCBmaWVsZCDigJQgZmxhdCBsYWJlbCBpbmRpY2F0aW5nIGRhdGEgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS5cbiAqL1xuZnVuY3Rpb24gRXhwaXJlZEZpZWxkQmxvY2soKSB7XG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSByb3VuZGVkLW1kIGJvcmRlciBweC0zIHB5LTIgdGV4dC14c1wiXG4gICAgICBzdHlsZT17e1xuICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktMzAwKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwKScsXG4gICAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyxcbiAgICAgIH19XG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1tZWRpdW1cIj5EYXRhIGV4cGlyZWQ8L3NwYW4+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEpzb25CbG9jayh2YWx1ZTogdW5rbm93bikge1xuICByZXR1cm4gPENvcHlhYmxlRGF0YUJsb2NrIGRhdGE9e3ZhbHVlfSAvPjtcbn1cblxuY29uc3QgaGFzRGlzcGxheUNvbnRlbnQgPSAodmFsdWU6IHVua25vd24pOiBib29sZWFuID0+IHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gdmFsdWUubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoID4gMDtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG50eXBlIEF0dHJpYnV0ZUtleSA9XG4gIHwga2V5b2YgU3RlcFxuICB8IGtleW9mIFdvcmtmbG93UnVuXG4gIHwga2V5b2YgSG9va1xuICB8IGtleW9mIEV2ZW50XG4gIHwgJ29jY3VycmVkQXQnXG4gIHwgJ21vZHVsZVNwZWNpZmllcidcbiAgfCAnZXZlbnREYXRhJ1xuICB8ICdyZXN1bWVBdCdcbiAgfCAnZXhwaXJlZEF0J1xuICB8ICd3b3JrZmxvd0NvcmVWZXJzaW9uJ1xuICB8ICdyZWNlaXZlZENvdW50J1xuICB8ICdsYXN0UmVjZWl2ZWRBdCdcbiAgfCAnZGlzcG9zZWRBdCdcbiAgfCAnaXNTeXN0ZW0nXG4gIHwgJ2Vycm9yQ29kZSc7XG5cbmNvbnN0IGF0dHJpYnV0ZU9yZGVyOiBBdHRyaWJ1dGVLZXlbXSA9IFtcbiAgJ3dvcmtmbG93TmFtZScsXG4gICdtb2R1bGVTcGVjaWZpZXInLFxuICAnc3RlcE5hbWUnLFxuICAnc3RhdHVzJyxcbiAgJ3N0ZXBJZCcsXG4gICdob29rSWQnLFxuICAnZXZlbnRJZCcsXG4gICdydW5JZCcsXG4gICdhdHRlbXB0JyxcbiAgJ3Rva2VuJyxcbiAgJ3JlY2VpdmVkQ291bnQnLFxuICAnbGFzdFJlY2VpdmVkQXQnLFxuICAnZGlzcG9zZWRBdCcsXG4gICdjb3JyZWxhdGlvbklkJyxcbiAgJ2V2ZW50VHlwZScsXG4gICdkZXBsb3ltZW50SWQnLFxuICAnc3BlY1ZlcnNpb24nLFxuICAnd29ya2Zsb3dDb3JlVmVyc2lvbicsXG4gICdvd25lcklkJyxcbiAgJ3Byb2plY3RJZCcsXG4gICdlbnZpcm9ubWVudCcsXG4gICdleGVjdXRpb25Db250ZXh0JyxcbiAgJ29jY3VycmVkQXQnLFxuICAnY3JlYXRlZEF0JyxcbiAgJ3N0YXJ0ZWRBdCcsXG4gICd1cGRhdGVkQXQnLFxuICAnY29tcGxldGVkQXQnLFxuICAnZXhwaXJlZEF0JyxcbiAgJ3JldHJ5QWZ0ZXInLFxuICAnZXJyb3InLFxuICAnbWV0YWRhdGEnLFxuICAnZXZlbnREYXRhJyxcbiAgJ2lucHV0JyxcbiAgJ291dHB1dCcsXG4gICdhdHRyaWJ1dGVzJyxcbiAgJ3Jlc3VtZUF0Jyxcbl07XG5cbmNvbnN0IHNvcnRCeUF0dHJpYnV0ZU9yZGVyID0gKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyID0+IHtcbiAgY29uc3QgYUluZGV4ID0gYXR0cmlidXRlT3JkZXIuaW5kZXhPZihhIGFzIEF0dHJpYnV0ZUtleSkgfHwgMDtcbiAgY29uc3QgYkluZGV4ID0gYXR0cmlidXRlT3JkZXIuaW5kZXhPZihiIGFzIEF0dHJpYnV0ZUtleSkgfHwgMDtcbiAgcmV0dXJuIGFJbmRleCAtIGJJbmRleDtcbn07XG5cbi8qKlxuICogRGlzcGxheSBuYW1lcyBmb3IgYXR0cmlidXRlcyB0aGF0IHNob3VsZCByZW5kZXIgZGlmZmVyZW50bHkgZnJvbSB0aGVpciBrZXkuXG4gKi9cbmNvbnN0IGF0dHJpYnV0ZURpc3BsYXlOYW1lczogUGFydGlhbDxSZWNvcmQ8QXR0cmlidXRlS2V5LCBzdHJpbmc+PiA9IHtcbiAgbW9kdWxlU3BlY2lmaWVyOiAnTW9kdWxlJyxcbiAgd29ya2Zsb3dOYW1lOiAnV29ya2Zsb3cgTmFtZScsXG4gIHN0ZXBOYW1lOiAnU3RlcCBOYW1lJyxcbiAgc3RlcElkOiAnU3RlcCBJRCcsXG4gIGhvb2tJZDogJ0hvb2sgSUQnLFxuICBhdHRlbXB0OiAnQXR0ZW1wdHMnLFxuICBldmVudElkOiAnRXZlbnQgSUQnLFxuICBydW5JZDogJ1J1biBJRCcsXG4gIHRva2VuOiAnVG9rZW4nLFxuICBldmVudFR5cGU6ICdFdmVudCBUeXBlJyxcbiAgZXJyb3JDb2RlOiAnRXJyb3IgQ29kZScsXG4gIGNvcnJlbGF0aW9uSWQ6ICdDb3JyZWxhdGlvbiBJRCcsXG4gIGRlcGxveW1lbnRJZDogJ0RlcGxveW1lbnQgSUQnLFxuICBzcGVjVmVyc2lvbjogJ1NwZWMgVmVyc2lvbicsXG4gIHdvcmtmbG93Q29yZVZlcnNpb246ICdAd29ya2Zsb3cvY29yZSB2ZXJzaW9uJyxcbiAgb2NjdXJyZWRBdDogJ09jY3VycmVkJyxcbiAgY3JlYXRlZEF0OiAnQ3JlYXRlZCcsXG4gIHN0YXJ0ZWRBdDogJ1N0YXJ0ZWQnLFxuICB1cGRhdGVkQXQ6ICdVcGRhdGVkJyxcbiAgY29tcGxldGVkQXQ6ICdDb21wbGV0ZWQnLFxuICBleHBpcmVkQXQ6ICdFeHBpcmVkJyxcbiAgcmV0cnlBZnRlcjogJ1JldHJ5IEFmdGVyJyxcbiAgcmVzdW1lQXQ6ICdSZXN1bWUnLFxuICBsYXN0UmVjZWl2ZWRBdDogJ0xhc3QgUmVjZWl2ZWQnLFxuICBkaXNwb3NlZEF0OiAnRGlzcG9zZWQnLFxuICByZWNlaXZlZENvdW50OiAnVGltZXMgUmVzb2x2ZWQnLFxufTtcblxuLyoqXG4gKiBHZXQgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYW4gYXR0cmlidXRlIGtleS5cbiAqL1xuY29uc3QgZ2V0QXR0cmlidXRlRGlzcGxheU5hbWUgPSAoYXR0cmlidXRlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gYXR0cmlidXRlRGlzcGxheU5hbWVzW2F0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVLZXldID8/IGF0dHJpYnV0ZTtcbn07XG5cbmNvbnN0IGdldE1vZHVsZVNwZWNpZmllckZyb21OYW1lID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgY29uc3QgcmF3ID0gU3RyaW5nKHZhbHVlKTtcbiAgY29uc3QgcGFyc2VkU3RlcCA9IHBhcnNlU3RlcE5hbWUocmF3KTtcbiAgaWYgKHBhcnNlZFN0ZXApIHtcbiAgICByZXR1cm4gcGFyc2VkU3RlcC5tb2R1bGVTcGVjaWZpZXI7XG4gIH1cbiAgY29uc3QgcGFyc2VkV29ya2Zsb3cgPSBwYXJzZVdvcmtmbG93TmFtZShyYXcpO1xuICBpZiAocGFyc2VkV29ya2Zsb3cpIHtcbiAgICByZXR1cm4gcGFyc2VkV29ya2Zsb3cubW9kdWxlU3BlY2lmaWVyO1xuICB9XG4gIHJldHVybiByYXc7XG59O1xuXG5jb25zdCBwYXJzZURhdGVWYWx1ZSA9ICh2YWx1ZTogdW5rbm93bik6IERhdGUgfCBudWxsID0+IHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc05hTih2YWx1ZS5nZXRUaW1lKCkpID8gbnVsbCA6IHZhbHVlO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGRhdGUgPVxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBuZXcgRGF0ZShTdHJpbmcodmFsdWUpKTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihkYXRlLmdldFRpbWUoKSkgPyBudWxsIDogZGF0ZTtcbn07XG5cbmNvbnN0IGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lID0gKGRhdGU6IERhdGUpOiBzdHJpbmcgPT5cbiAgZm9ybWF0KGRhdGUsICdNTU0gZGQgSEg6bW06c3MuU1MgT08nKS50b1VwcGVyQ2FzZSgpO1xuXG5leHBvcnQgY29uc3QgbG9jYWxNaWxsaXNlY29uZFRpbWUgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkYXRlID0gcGFyc2VEYXRlVmFsdWUodmFsdWUpO1xuICBpZiAoIWRhdGUpIHtcbiAgICByZXR1cm4gJy0nO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lKGRhdGUpO1xufTtcblxuY29uc3QgbG9jYWxNaWxsaXNlY29uZFRpbWVPck51bGwgPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZVZhbHVlKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdExvY2FsTWlsbGlzZWNvbmRUaW1lKGRhdGUpO1xufTtcblxuY29uc3QgdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwgPSAodmFsdWU6IHVua25vd24pOiBSZWFjdE5vZGUgfCBudWxsID0+IHtcbiAgY29uc3QgZGF0ZSA9IHBhcnNlRGF0ZVZhbHVlKHZhbHVlKTtcbiAgaWYgKCFkYXRlKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIChcbiAgICA8VGltZXN0YW1wVG9vbHRpcCBkYXRlPXtkYXRlfT5cbiAgICAgIDxzcGFuPntmb3JtYXRMb2NhbE1pbGxpc2Vjb25kVGltZShkYXRlKX08L3NwYW4+XG4gICAgPC9UaW1lc3RhbXBUb29sdGlwPlxuICApO1xufTtcblxuaW50ZXJmYWNlIERpc3BsYXlDb250ZXh0IHtcbiAgc3RlcE5hbWU/OiBzdHJpbmc7XG4gIHNlY3Rpb25PcGVuPzogYm9vbGVhbjtcbiAgb25TZWN0aW9uT3BlbkNoYW5nZT86IChvcGVuOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBhdHRyaWJ1dGVUb0Rpc3BsYXlGbjogUmVjb3JkPFxuICBBdHRyaWJ1dGVLZXksXG4gICh2YWx1ZTogdW5rbm93biwgY29udGV4dD86IERpc3BsYXlDb250ZXh0KSA9PiBudWxsIHwgc3RyaW5nIHwgUmVhY3ROb2RlXG4+ID0ge1xuICAvLyBOYW1lcyB0aGF0IG5lZWQgcHJldHR5LXByaW50aW5nXG4gIHdvcmtmbG93TmFtZTogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgbW9kdWxlU3BlY2lmaWVyOiAodmFsdWU6IHVua25vd24pID0+IGdldE1vZHVsZVNwZWNpZmllckZyb21OYW1lKHZhbHVlKSxcbiAgc3RlcE5hbWU6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIC8vIElEc1xuICBydW5JZDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgc3RlcElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIGhvb2tJZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBldmVudElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIFJ1bi9zdGVwIGRldGFpbHNcbiAgc3RhdHVzOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBhdHRlbXB0OiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIC8vIEhvb2sgZGV0YWlsc1xuICB0b2tlbjogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBpc1dlYmhvb2s6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgaXNTeXN0ZW06ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgcmVjZWl2ZWRDb3VudDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICBsYXN0UmVjZWl2ZWRBdDogbG9jYWxNaWxsaXNlY29uZFRpbWVPck51bGwsXG4gIGRpc3Bvc2VkQXQ6IGxvY2FsTWlsbGlzZWNvbmRUaW1lT3JOdWxsLFxuICAvLyBJbnRlcm5hbCByZXN1bWUgcGx1bWJpbmcg4oCUIG5vdCBzdXJmYWNlZCBpbiB0aGUgVUlcbiAgcmVzdW1lQ29udGV4dDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgLy8gRXZlbnQgZGV0YWlsc1xuICBldmVudFR5cGU6ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgY29ycmVsYXRpb25JZDogKHZhbHVlOiB1bmtub3duKSA9PiBTdHJpbmcodmFsdWUpLFxuICAvLyBQcm9qZWN0IGRldGFpbHNcbiAgZGVwbG95bWVudElkOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIHNwZWNWZXJzaW9uOiAodmFsdWU6IHVua25vd24pID0+IFN0cmluZyh2YWx1ZSksXG4gIHdvcmtmbG93Q29yZVZlcnNpb246ICh2YWx1ZTogdW5rbm93bikgPT4gU3RyaW5nKHZhbHVlKSxcbiAgLy8gVGVuYW5jeSAod2UgZG9uJ3Qgc2hvdyB0aGVzZSlcbiAgb3duZXJJZDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgcHJvamVjdElkOiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxuICBlbnZpcm9ubWVudDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgZXhlY3V0aW9uQ29udGV4dDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgLy8gQXR0cmlidXRlcyDigJQgc3RyaW5nLXN0cmluZyBtZXRhZGF0YSBhdHRhY2hlZCB0byB0aGUgcnVuLlxuICAvLyBSZW5kZXJlZCBhcyBrZXktdmFsdWUgcm93cyBpbiBpdHMgb3duIGNvbGxhcHNpYmxlIHNlY3Rpb247XG4gIC8vIGlmIGVtcHR5L21pc3NpbmcsIGhpZGRlbiBieSB0aGUgaGFzRGlzcGxheUNvbnRlbnQgZ2F0ZS5cbiAgYXR0cmlidXRlczogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiA8UnVuQXR0cmlidXRlc0NhcmQgYXR0cmlidXRlcz17dmFsdWUgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPn0gLz47XG4gIH0sXG4gIC8vIERhdGVzIOKAlCB3cmFwcGVkIHdpdGggVGltZXN0YW1wVG9vbHRpcCBzaG93aW5nIFVUQy9sb2NhbCArIHJlbGF0aXZlIHRpbWVcbiAgb2NjdXJyZWRBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIHN0YXJ0ZWRBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIHVwZGF0ZWRBdDogKF92YWx1ZTogdW5rbm93bikgPT4gbnVsbCxcbiAgY29tcGxldGVkQXQ6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICBleHBpcmVkQXQ6IChfdmFsdWU6IHVua25vd24pID0+IG51bGwsXG4gIHJldHJ5QWZ0ZXI6IHRpbWVzdGFtcFdpdGhUb29sdGlwT3JOdWxsLFxuICByZXN1bWVBdDogdGltZXN0YW1wV2l0aFRvb2x0aXBPck51bGwsXG4gIC8vIFJlc29sdmVkIGF0dHJpYnV0ZXMsIHdvbid0IGFjdHVhbGx5IHVzZSB0aGlzIGZ1bmN0aW9uXG4gIG1ldGFkYXRhOiAodmFsdWU6IHVua25vd24pID0+IHtcbiAgICBpZiAoIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiTWV0YWRhdGFcIj5cbiAgICAgICAgICA8RW5jcnlwdGVkRGF0YUJsb2NrIC8+XG4gICAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiTWV0YWRhdGFcIj5cbiAgICAgICAgICA8RXhwaXJlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiA8UnVuTWV0YWRhdGFDYXJkIG1ldGFkYXRhPXt2YWx1ZX0gLz47XG4gIH0sXG4gIGlucHV0OiAodmFsdWU6IHVua25vd24sIGNvbnRleHQ/OiBEaXNwbGF5Q29udGV4dCkgPT4ge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgIGxhYmVsPVwiSW5wdXRcIlxuICAgICAgICAgIGRlZmF1bHRPcGVuPXtjb250ZXh0Py5zZWN0aW9uT3Blbn1cbiAgICAgICAgICBvbk9wZW5DaGFuZ2U9e2NvbnRleHQ/Lm9uU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICAgID5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgLy8gQ2hlY2sgaWYgaW5wdXQgaGFzIGFyZ3MgKyBjbG9zdXJlIHZhcnMgc3RydWN0dXJlXG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ2FyZ3MnIGluIHZhbHVlKSB7XG4gICAgICBjb25zdCB7IGFyZ3MsIGNsb3N1cmVWYXJzLCB0aGlzVmFsIH0gPSB2YWx1ZSBhcyB7XG4gICAgICAgIGFyZ3M6IHVua25vd25bXTtcbiAgICAgICAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgdGhpc1ZhbD86IHVua25vd247XG4gICAgICB9O1xuICAgICAgY29uc3QgaGFzQ2xvc3VyZVZhcnMgPSBoYXNEaXNwbGF5Q29udGVudChjbG9zdXJlVmFycyk7XG4gICAgICBjb25zdCBoYXNUaGlzVmFsID0gaGFzRGlzcGxheUNvbnRlbnQodGhpc1ZhbCk7XG4gICAgICBjb25zdCBoYXNBcmdzID0gaGFzRGlzcGxheUNvbnRlbnQoYXJncyk7XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBkb1N0cmVhbVN0ZXAgLSBzaG93IGNvbnZlcnNhdGlvbiB2aWV3IHdpdGggdGFic1xuICAgICAgaWYgKGNvbnRleHQ/LnN0ZXBOYW1lICYmIGlzRG9TdHJlYW1TdGVwKGNvbnRleHQuc3RlcE5hbWUpKSB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IGV4dHJhY3RDb252ZXJzYXRpb24oYXJncyk7XG4gICAgICAgIGlmIChjb252ZXJzYXRpb24gJiYgY29udmVyc2F0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPENvbnZlcnNhdGlvbldpdGhUYWJzXG4gICAgICAgICAgICAgICAgY29udmVyc2F0aW9uPXtjb252ZXJzYXRpb259XG4gICAgICAgICAgICAgICAgYXJncz17YXJnc31cbiAgICAgICAgICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB7aGFzQ2xvc3VyZVZhcnMgJiYgKFxuICAgICAgICAgICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkNsb3N1cmUgVmFyaWFibGVzXCI+XG4gICAgICAgICAgICAgICAgICB7SnNvbkJsb2NrKGNsb3N1cmVWYXJzKX1cbiAgICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aGFzVGhpc1ZhbCAmJiAoXG4gICAgICAgICAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiVGhpcyBWYWx1ZVwiPlxuICAgICAgICAgICAgICAgICAge0pzb25CbG9jayh0aGlzVmFsKX1cbiAgICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBEb24ndCByZW5kZXIgYW4gZW1wdHkgXCJJbnB1dCAoMCBhcmd1bWVudHMpXCIgY2FyZCB3aGVuIG5vIGlucHV0IGV4aXN0cy5cbiAgICAgIGlmICghaGFzQXJncyAmJiAhaGFzQ2xvc3VyZVZhcnMgJiYgIWhhc1RoaXNWYWwpIHtcbiAgICAgICAgcmV0dXJuIDxDb2xsYXBzaWJsZSBsYWJlbD1cIklucHV0IChubyBkYXRhKVwiIGRpc2FibGVkIC8+O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgICAgbGFiZWw9XCJJbnB1dFwiXG4gICAgICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgICAgICBvbk9wZW5DaGFuZ2U9e2NvbnRleHQ/Lm9uU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge0FycmF5LmlzQXJyYXkoYXJncylcbiAgICAgICAgICAgICAgPyBhcmdzLm1hcCgodiwgaSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0yIGZpcnN0Om10LTBcIiBrZXk9e2l9PlxuICAgICAgICAgICAgICAgICAgICB7SnNvbkJsb2NrKHYpfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgOiBKc29uQmxvY2soYXJncyl9XG4gICAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICB7aGFzQ2xvc3VyZVZhcnMgJiYgKFxuICAgICAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiQ2xvc3VyZSBWYXJpYWJsZXNcIj5cbiAgICAgICAgICAgICAge0pzb25CbG9jayhjbG9zdXJlVmFycyl9XG4gICAgICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2hhc1RoaXNWYWwgJiYgKFxuICAgICAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiQ29udGV4dFwiPntKc29uQmxvY2sodGhpc1ZhbCl9PC9Db2xsYXBzaWJsZT5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IHRyZWF0IGFzIHBsYWluIGFycmF5IG9yIG9iamVjdFxuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSB7XG4gICAgICByZXR1cm4gPENvbGxhcHNpYmxlIGxhYmVsPVwiSW5wdXQgKG5vIGRhdGEpXCIgZGlzYWJsZWQgLz47XG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgbGFiZWw9XCJJbnB1dFwiXG4gICAgICAgIGRlZmF1bHRPcGVuPXtjb250ZXh0Py5zZWN0aW9uT3Blbn1cbiAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgPlxuICAgICAgICB7QXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICA/IHZhbHVlLm1hcCgodiwgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIgZmlyc3Q6bXQtMFwiIGtleT17aX0+XG4gICAgICAgICAgICAgICAge0pzb25CbG9jayh2KX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKVxuICAgICAgICAgIDogSnNvbkJsb2NrKHZhbHVlKX1cbiAgICAgIDwvQ29sbGFwc2libGU+XG4gICAgKTtcbiAgfSxcbiAgb3V0cHV0OiAodmFsdWU6IHVua25vd24sIGNvbnRleHQ/OiBEaXNwbGF5Q29udGV4dCkgPT4ge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZVxuICAgICAgICAgIGxhYmVsPVwiT3V0cHV0XCJcbiAgICAgICAgICBkZWZhdWx0T3Blbj17Y29udGV4dD8uc2VjdGlvbk9wZW59XG4gICAgICAgICAgb25PcGVuQ2hhbmdlPXtjb250ZXh0Py5vblNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICA+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIGlmICghaGFzRGlzcGxheUNvbnRlbnQodmFsdWUpKSByZXR1cm4gbnVsbDtcbiAgICBpZiAoaXNFeHBpcmVkTWFya2VyKHZhbHVlKSkgcmV0dXJuIDxFeHBpcmVkRmllbGRCbG9jayAvPjtcbiAgICByZXR1cm4gKFxuICAgICAgPENvbGxhcHNpYmxlXG4gICAgICAgIGxhYmVsPVwiT3V0cHV0XCJcbiAgICAgICAgZGVmYXVsdE9wZW49e2NvbnRleHQ/LnNlY3Rpb25PcGVufVxuICAgICAgICBvbk9wZW5DaGFuZ2U9e2NvbnRleHQ/Lm9uU2VjdGlvbk9wZW5DaGFuZ2V9XG4gICAgICA+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICApO1xuICB9LFxuICBlcnJvcjogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKGlzRW5jcnlwdGVkTWFya2VyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiRXJyb3JcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuXG4gICAgLy8gU3RydWN0dXJlZCB3b3JrZmxvdyBlcnJvcnMgbWF5IGJlIHBlcnNpc3RlZCBhcyBlaXRoZXIgYHsgbWVzc2FnZSB9YCBvclxuICAgIC8vIGB7IG1lc3NhZ2UsIHN0YWNrIH1gLiBSZW5kZXIgYm90aCB3aXRoIHRoZSBkZWRpY2F0ZWQgZXJyb3IgYmxvY2suXG4gICAgaWYgKGlzU3RydWN0dXJlZEVycm9yKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPENvbGxhcHNpYmxlIGxhYmVsPVwiRXJyb3JcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RXJyb3JTdGFja0Jsb2NrIHZhbHVlPXt2YWx1ZX0gLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkVycm9yXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICApO1xuICB9LFxuICBldmVudERhdGE6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxDb2xsYXBzaWJsZSBsYWJlbD1cIkV2ZW50IERhdGFcIiBkZWZhdWx0T3Blbj5cbiAgICAgICAgICA8RW5jcnlwdGVkRmllbGRCbG9jayAvPlxuICAgICAgICA8L0NvbGxhcHNpYmxlPlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGlzRXhwaXJlZE1hcmtlcih2YWx1ZSkpIHJldHVybiA8RXhwaXJlZEZpZWxkQmxvY2sgLz47XG4gICAgaWYgKCFoYXNEaXNwbGF5Q29udGVudCh2YWx1ZSkpIHJldHVybiBudWxsO1xuICAgIHJldHVybiAoXG4gICAgICA8Q29sbGFwc2libGUgbGFiZWw9XCJFdmVudCBEYXRhXCIgZGVmYXVsdE9wZW4+XG4gICAgICAgIHtKc29uQmxvY2sodmFsdWUpfVxuICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICApO1xuICB9LFxuICBlcnJvckNvZGU6ICh2YWx1ZTogdW5rbm93bikgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH0sXG4gIC8vIEludGVybmFsIGVuY3J5cHRpb24gcGx1bWJpbmc6IHRoZSBydW4ncyBYMjU1MTkgcHVibGljIGtleSwgdXNlZCBieVxuICAvLyBjcm9zcy1ydW4gd3JpdGVycyB0byBzZWFsIHBheWxvYWRzIHRvIHRoaXMgcnVuLiBOb3QgYWN0aW9uYWJsZSBmb3IgdXNlcnNcbiAgLy8gYW5kIG5vdCBzZWNyZXQg4oCUIGhpZGRlbiByYXRoZXIgdGhhbiByZW5kZXJlZCBhcyA0NCBvcGFxdWUgYmFzZTY0IGNoYXJzLlxuICBlbmNyeXB0aW9uUHVibGljS2V5OiAoX3ZhbHVlOiB1bmtub3duKSA9PiBudWxsLFxufTtcblxuY29uc3QgcmVzb2x2YWJsZUF0dHJpYnV0ZXMgPSBbXG4gICdpbnB1dCcsXG4gICdvdXRwdXQnLFxuICAnZXJyb3InLFxuICAnbWV0YWRhdGEnLFxuICAnYXR0cmlidXRlcycsXG4gICdldmVudERhdGEnLFxuXTtcblxuLy8gQXR0cmlidXRlcyB3aG9zZSBkaXNwbGF5Rm4gcmVuZGVycyBpdHMgb3duIHNlY3Rpb24gaGVhZGVyIHZpYSBDb2xsYXBzaWJsZSxcbi8vIHNvIHRoZSBvdXRlciBBdHRyaWJ1dGVCbG9jayBzaG91bGQgbm90IGR1cGxpY2F0ZSB0aGUgbGFiZWwuXG5jb25zdCBzZWxmSGVhZGVyZWRBdHRyaWJ1dGVzID0gbmV3IFNldChbXG4gICdpbnB1dCcsXG4gICdvdXRwdXQnLFxuICAnZXJyb3InLFxuICAnbWV0YWRhdGEnLFxuICAnYXR0cmlidXRlcycsXG4gICdldmVudERhdGEnLFxuXSk7XG5cbmNvbnN0IEV4cGlyZWREYXRhTWVzc2FnZSA9ICgpID0+IChcbiAgPGRpdlxuICAgIGNsYXNzTmFtZT1cInRleHQtY29weS0xMiByb3VuZGVkLW1kIGJvcmRlciBwLTQgbXktMlwiXG4gICAgc3R5bGU9e3tcbiAgICAgIGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS0zMDApJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwKScsXG4gICAgICBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScsXG4gICAgfX1cbiAgPlxuICAgIDxzcGFuPlRoZSBkYXRhIGZvciB0aGlzIHJ1biBoYXMgZXhwaXJlZCBhbmQgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS48L3NwYW4+XG4gIDwvZGl2PlxuKTtcblxuY29uc3QgY29weWFibGVCYXNpY0F0dHJpYnV0ZXMgPSBuZXcgU2V0PEF0dHJpYnV0ZUtleT4oW1xuICAnc3RlcElkJyxcbiAgJ2hvb2tJZCcsXG4gICdldmVudElkJyxcbiAgJ2RlcGxveW1lbnRJZCcsXG4gICdtb2R1bGVTcGVjaWZpZXInLFxuICAndG9rZW4nLFxuXSk7XG5cbmNvbnN0IGxvYWRpbmdTZWN0aW9uTGFiZWxzOiBQYXJ0aWFsPFJlY29yZDxBdHRyaWJ1dGVLZXksIHN0cmluZz4+ID0ge1xuICBpbnB1dDogJ0lucHV0JyxcbiAgb3V0cHV0OiAnT3V0cHV0JyxcbiAgZXZlbnREYXRhOiAnRXZlbnQgRGF0YScsXG59O1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRlQmxvY2sgPSAoe1xuICBhdHRyaWJ1dGUsXG4gIHZhbHVlLFxuICBpc0xvYWRpbmcsXG4gIGlubGluZSA9IGZhbHNlLFxuICBjb250ZXh0LFxufToge1xuICBhdHRyaWJ1dGU6IHN0cmluZztcbiAgdmFsdWU6IHVua25vd247XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGlubGluZT86IGJvb2xlYW47XG4gIGNvbnRleHQ/OiBEaXNwbGF5Q29udGV4dDtcbn0pID0+IHtcbiAgY29uc3QgZGVjcnlwdEN0eCA9IHVzZUNvbnRleHQoRGVjcnlwdENsaWNrQ29udGV4dCk7XG4gIGNvbnN0IHNlY3Rpb25PcGVuUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlU2VjdGlvbk9wZW5DaGFuZ2UgPSB1c2VDYWxsYmFjaygob3BlbjogYm9vbGVhbikgPT4ge1xuICAgIHNlY3Rpb25PcGVuUmVmLmN1cnJlbnQgPSBvcGVuO1xuICB9LCBbXSk7XG4gIGNvbnN0IGxhYmVsID0gbG9hZGluZ1NlY3Rpb25MYWJlbHNbYXR0cmlidXRlIGFzIEF0dHJpYnV0ZUtleV07XG4gIGlmIChpc0xvYWRpbmcgJiYgbGFiZWwgJiYgIWhhc0Rpc3BsYXlDb250ZW50KHZhbHVlKSkge1xuICAgIGlmIChkZWNyeXB0Q3R4Py5oYXNFbmNyeXB0ZWREYXRhKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Q29sbGFwc2libGVcbiAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgZGVmYXVsdE9wZW49e2F0dHJpYnV0ZSA9PT0gJ2V2ZW50RGF0YScgfHwgc2VjdGlvbk9wZW5SZWYuY3VycmVudH1cbiAgICAgICAgICBvbk9wZW5DaGFuZ2U9e2hhbmRsZVNlY3Rpb25PcGVuQ2hhbmdlfVxuICAgICAgICA+XG4gICAgICAgICAgPEVuY3J5cHRlZEZpZWxkQmxvY2sgLz5cbiAgICAgICAgPC9Db2xsYXBzaWJsZT5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiA8Q29sbGFwc2libGUgbGFiZWw9e2xhYmVsfSAvPjtcbiAgfVxuXG4gIGNvbnN0IGRpc3BsYXlGbiA9XG4gICAgYXR0cmlidXRlVG9EaXNwbGF5Rm5bYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBhdHRyaWJ1dGVUb0Rpc3BsYXlGbl07XG4gIGlmICghZGlzcGxheUZuKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgZGlzcGxheVZhbHVlID0gZGlzcGxheUZuKHZhbHVlLCB7XG4gICAgLi4uY29udGV4dCxcbiAgICBzZWN0aW9uT3Blbjogc2VjdGlvbk9wZW5SZWYuY3VycmVudCxcbiAgICBvblNlY3Rpb25PcGVuQ2hhbmdlOiBoYW5kbGVTZWN0aW9uT3BlbkNoYW5nZSxcbiAgfSk7XG4gIGlmICghZGlzcGxheVZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoaW5saW5lKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtWzExcHhdIGZvbnQtbWVkaXVtXCJcbiAgICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthdHRyaWJ1dGV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bMTFweF1cIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwMCknIH19PlxuICAgICAgICAgIHtkaXNwbGF5VmFsdWV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAoc2VsZkhlYWRlcmVkQXR0cmlidXRlcy5oYXMoYXR0cmlidXRlKSkge1xuICAgIHJldHVybiA8PntkaXNwbGF5VmFsdWV9PC8+O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlXCI+XG4gICAgICB7dHlwZW9mIGlzTG9hZGluZyA9PT0gJ2Jvb2xlYW4nICYmIGlzTG9hZGluZyAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLTkgcmlnaHQtNFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgaC00IHctNCBib3JkZXItYi0yXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS05MDApJyB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIDxkaXYga2V5PXthdHRyaWJ1dGV9IGNsYXNzTmFtZT1cIm15LTIgZmxleCBmbGV4LWNvbCBnYXAtMFwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTE0IHRleHQtZ3JheS0xMDAwIGZvbnQtbWVkaXVtIGZpcnN0LWxldHRlcjp1cHBlcmNhc2VcIj5cbiAgICAgICAgICB7YXR0cmlidXRlfVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwMCknIH19PlxuICAgICAgICAgIHtkaXNwbGF5VmFsdWV9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0ZVBhbmVsID0gKHtcbiAgZGF0YSxcbiAgbW9kdWxlU3BlY2lmaWVyLFxuICBtb2R1bGVTb3VyY2VVcmwsXG4gIGlzTG9hZGluZyxcbiAgZXJyb3IsXG4gIGV4cGlyZWRBdCxcbiAgb25TdHJlYW1DbGljayxcbiAgb25SdW5DbGljayxcbiAgb25EZWNyeXB0LFxuICBpc0RlY3J5cHRpbmcgPSBmYWxzZSxcbiAgcmVzb3VyY2UsXG59OiB7XG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBtb2R1bGVTcGVjaWZpZXI/OiBzdHJpbmc7XG4gIG1vZHVsZVNvdXJjZVVybD86IHN0cmluZztcbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgZXJyb3I/OiBFcnJvcjtcbiAgZXhwaXJlZEF0Pzogc3RyaW5nIHwgRGF0ZTtcbiAgLyoqIENhbGxiYWNrIHdoZW4gYSBzdHJlYW0gcmVmZXJlbmNlIGlzIGNsaWNrZWQgKi9cbiAgb25TdHJlYW1DbGljaz86IChzdHJlYW1JZDogc3RyaW5nKSA9PiB2b2lkO1xuICAvKiogQ2FsbGJhY2sgd2hlbiBhIHJ1biByZWZlcmVuY2UgaXMgY2xpY2tlZCAqL1xuICBvblJ1bkNsaWNrPzogKHJ1bklkOiBzdHJpbmcpID0+IHZvaWQ7XG4gIC8qKiBDYWxsYmFjayB3aGVuIGFuIGVuY3J5cHRlZCBtYXJrZXIgaXMgY2xpY2tlZCAodHJpZ2dlcnMgZGVjcnlwdGlvbikgKi9cbiAgb25EZWNyeXB0PzogKCkgPT4gdm9pZDtcbiAgLyoqIFdoZXRoZXIgZGVjcnlwdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MgKi9cbiAgaXNEZWNyeXB0aW5nPzogYm9vbGVhbjtcbiAgLyoqIFJlc291cmNlIHR5cGUgb2YgdGhlIHNlbGVjdGVkIHNwYW4g4oCUIHVzZWQgdG8gc2hvdyB0YXJnZXRlZCBsb2FkaW5nIHNrZWxldG9ucy4gKi9cbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG59KSA9PiB7XG4gIC8vIEV4dHJhY3Qgd29ya2Zsb3dDb3JlVmVyc2lvbiBmcm9tIGV4ZWN1dGlvbkNvbnRleHQgZm9yIGRpc3BsYXlcbiAgY29uc3QgZGlzcGxheURhdGEgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSB7IC4uLmRhdGEgfTtcbiAgICBjb25zdCBleGVjQ3R4ID0gZGF0YS5leGVjdXRpb25Db250ZXh0IGFzXG4gICAgICB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZXhlY0N0eD8ud29ya2Zsb3dDb3JlVmVyc2lvbikge1xuICAgICAgcmVzdWx0LndvcmtmbG93Q29yZVZlcnNpb24gPSBleGVjQ3R4LndvcmtmbG93Q29yZVZlcnNpb247XG4gICAgfVxuICAgIGlmIChtb2R1bGVTcGVjaWZpZXIpIHtcbiAgICAgIHJlc3VsdC5tb2R1bGVTcGVjaWZpZXIgPSBtb2R1bGVTcGVjaWZpZXI7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YS5zdGVwTmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdC5tb2R1bGVTcGVjaWZpZXIgPSBkYXRhLnN0ZXBOYW1lO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEud29ya2Zsb3dOYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgcmVzdWx0Lm1vZHVsZVNwZWNpZmllciA9IGRhdGEud29ya2Zsb3dOYW1lO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCBbZGF0YSwgbW9kdWxlU3BlY2lmaWVyXSk7XG4gIGNvbnN0IGhhc0V4cGlyZWQgPSBleHBpcmVkQXQgIT0gbnVsbCAmJiBuZXcgRGF0ZShleHBpcmVkQXQpIDwgbmV3IERhdGUoKTtcbiAgY29uc3QgYmFzaWNBdHRyaWJ1dGVzID0gT2JqZWN0LmtleXMoZGlzcGxheURhdGEpXG4gICAgLmZpbHRlcigoa2V5KSA9PiAhcmVzb2x2YWJsZUF0dHJpYnV0ZXMuaW5jbHVkZXMoa2V5KSlcbiAgICAuc29ydChzb3J0QnlBdHRyaWJ1dGVPcmRlcik7XG4gIGNvbnN0IHJlc29sdmVkQXR0cmlidXRlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHByZXNlbnQgPSBPYmplY3Qua2V5cyhkaXNwbGF5RGF0YSlcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4gcmVzb2x2YWJsZUF0dHJpYnV0ZXMuaW5jbHVkZXMoa2V5KSlcbiAgICAgIC5zb3J0KHNvcnRCeUF0dHJpYnV0ZU9yZGVyKTtcblxuICAgIGlmICghaXNMb2FkaW5nKSByZXR1cm4gcHJlc2VudDtcblxuICAgIGlmIChyZXNvdXJjZSA9PT0gJ3NsZWVwJykgcmV0dXJuIHByZXNlbnQ7XG5cbiAgICBjb25zdCBsb2FkaW5nUGxhY2Vob2xkZXJzID0gWydpbnB1dCcsICdvdXRwdXQnXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBsb2FkaW5nUGxhY2Vob2xkZXJzKSB7XG4gICAgICBpZiAoIXByZXNlbnQuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICBwcmVzZW50LnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByZXNlbnQuc29ydChzb3J0QnlBdHRyaWJ1dGVPcmRlcik7XG4gIH0sIFtkaXNwbGF5RGF0YSwgaXNMb2FkaW5nLCByZXNvdXJjZV0pO1xuXG4gIC8vIEZpbHRlciBvdXQgYXR0cmlidXRlcyB0aGF0IHJldHVybiBudWxsXG4gIGNvbnN0IHZpc2libGVCYXNpY0F0dHJpYnV0ZXMgPSBiYXNpY0F0dHJpYnV0ZXMuZmlsdGVyKChhdHRyaWJ1dGUpID0+IHtcbiAgICBjb25zdCBkaXNwbGF5Rm4gPVxuICAgICAgYXR0cmlidXRlVG9EaXNwbGF5Rm5bYXR0cmlidXRlIGFzIGtleW9mIHR5cGVvZiBhdHRyaWJ1dGVUb0Rpc3BsYXlGbl07XG4gICAgaWYgKCFkaXNwbGF5Rm4pIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBkaXNwbGF5VmFsdWUgPSBkaXNwbGF5Rm4oXG4gICAgICBkaXNwbGF5RGF0YVthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGRpc3BsYXlEYXRhXVxuICAgICk7XG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZSAhPT0gbnVsbDtcbiAgfSk7XG5cbiAgLy8gS2VlcCBgbW9kdWxlU3BlY2lmaWVyYCBpbW1lZGlhdGVseSBhZnRlciBgd29ya2Zsb3dOYW1lYCBvciBgc3RlcE5hbWVgLlxuICBjb25zdCBvcmRlcmVkQmFzaWNBdHRyaWJ1dGVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IFsuLi52aXNpYmxlQmFzaWNBdHRyaWJ1dGVzXTtcbiAgICBjb25zdCBtb2R1bGVTcGVjaWZpZXJJbmRleCA9IGF0dHJpYnV0ZXMuaW5kZXhPZignbW9kdWxlU3BlY2lmaWVyJyk7XG4gICAgaWYgKG1vZHVsZVNwZWNpZmllckluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgYXR0cmlidXRlcy5zcGxpY2UobW9kdWxlU3BlY2lmaWVySW5kZXgsIDEpO1xuICAgIGNvbnN0IHdvcmtmbG93TmFtZUluZGV4ID0gYXR0cmlidXRlcy5pbmRleE9mKCd3b3JrZmxvd05hbWUnKTtcbiAgICBpZiAod29ya2Zsb3dOYW1lSW5kZXggIT09IC0xKSB7XG4gICAgICBhdHRyaWJ1dGVzLnNwbGljZSh3b3JrZmxvd05hbWVJbmRleCArIDEsIDAsICdtb2R1bGVTcGVjaWZpZXInKTtcbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIGNvbnN0IHN0ZXBOYW1lSW5kZXggPSBhdHRyaWJ1dGVzLmluZGV4T2YoJ3N0ZXBOYW1lJyk7XG4gICAgaWYgKHN0ZXBOYW1lSW5kZXggIT09IC0xKSB7XG4gICAgICBhdHRyaWJ1dGVzLnNwbGljZShzdGVwTmFtZUluZGV4ICsgMSwgMCwgJ21vZHVsZVNwZWNpZmllcicpO1xuICAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgYXR0cmlidXRlcy51bnNoaWZ0KCdtb2R1bGVTcGVjaWZpZXInKTtcbiAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgfSwgW3Zpc2libGVCYXNpY0F0dHJpYnV0ZXNdKTtcblxuICAvLyBNZW1vaXplIGNvbnRleHQgb2JqZWN0IHRvIGF2b2lkIG9iamVjdCByZWNvbnN0cnVjdGlvbiBvbiByZW5kZXJcbiAgY29uc3QgZGlzcGxheUNvbnRleHQgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBzdGVwTmFtZTogZGlzcGxheURhdGEuc3RlcE5hbWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIH0pLFxuICAgIFtkaXNwbGF5RGF0YS5zdGVwTmFtZV1cbiAgKTtcbiAgY29uc3Qgb3V0ZXJEZWNyeXB0Q3R4ID0gdXNlQ29udGV4dChEZWNyeXB0Q2xpY2tDb250ZXh0KTtcbiAgY29uc3QgZGVjcnlwdFZhbHVlID0gb25EZWNyeXB0XG4gICAgPyB7XG4gICAgICAgIG9uRGVjcnlwdCxcbiAgICAgICAgaXNEZWNyeXB0aW5nLFxuICAgICAgICBoYXNFbmNyeXB0ZWREYXRhOiBvdXRlckRlY3J5cHRDdHg/Lmhhc0VuY3J5cHRlZERhdGEsXG4gICAgICB9XG4gICAgOiBvdXRlckRlY3J5cHRDdHg7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGV4dENhcmRQcm92aWRlcj5cbiAgICAgIDxSdW5DbGlja0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e29uUnVuQ2xpY2t9PlxuICAgICAgICA8U3RyZWFtQ2xpY2tDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtvblN0cmVhbUNsaWNrfT5cbiAgICAgICAgICA8RGVjcnlwdENsaWNrQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17ZGVjcnlwdFZhbHVlfT5cbiAgICAgICAgICAgIHt2aXNpYmxlQmFzaWNBdHRyaWJ1dGVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8Q29sbGFwc2libGVSb290IGRlZmF1bHRPcGVuPlxuICAgICAgICAgICAgICAgIDxDb2xsYXBzaWJsZVRyaWdnZXI+TWV0YWRhdGE8L0NvbGxhcHNpYmxlVHJpZ2dlcj5cbiAgICAgICAgICAgICAgICA8Q29sbGFwc2libGVDb250ZW50IGNsYXNzTmFtZT1cIm10LTAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIHtvcmRlcmVkQmFzaWNBdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlzcGxheVZhbHVlID0gYXR0cmlidXRlVG9EaXNwbGF5Rm5bXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGF0dHJpYnV0ZVRvRGlzcGxheUZuXG4gICAgICAgICAgICAgICAgICAgICAgXT8uKGRpc3BsYXlEYXRhW2F0dHJpYnV0ZSBhcyBrZXlvZiB0eXBlb2YgZGlzcGxheURhdGFdKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0NvcHlhYmxlQmFzaWNBdHRyaWJ1dGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgY29weWFibGVCYXNpY0F0dHJpYnV0ZXMuaGFzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgYXMgQXR0cmlidXRlS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICApICYmIHR5cGVvZiBkaXNwbGF5VmFsdWUgPT09ICdzdHJpbmcnO1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZ2V0QXR0cmlidXRlRGlzcGxheU5hbWUoYXR0cmlidXRlKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8RGV0YWlsTW9ub0tleVZhbHVlUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YXR0cmlidXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5VmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHlUZXh0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0NvcHlhYmxlQmFzaWNBdHRyaWJ1dGUgPyBkaXNwbGF5VmFsdWUgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgPT09ICdtb2R1bGVTcGVjaWZpZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG1vZHVsZVNvdXJjZVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAge2lzTG9hZGluZyAmJlxuICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlID09PSAnc2xlZXAnICYmXG4gICAgICAgICAgICAgICAgICAgICAgIWRpc3BsYXlEYXRhLnJlc3VtZUF0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zIHB5LTAuNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTEzIHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwiaC00IHctWzU1JV1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvQ29sbGFwc2libGVDb250ZW50PlxuICAgICAgICAgICAgICA8L0NvbGxhcHNpYmxlUm9vdD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7ZXJyb3IgPyAoXG4gICAgICAgICAgICAgIDxFcnJvckNhcmRcbiAgICAgICAgICAgICAgICB0aXRsZT1cIkZhaWxlZCB0byBsb2FkIHJlc291cmNlIGRldGFpbHNcIlxuICAgICAgICAgICAgICAgIGRldGFpbHM9e2Vycm9yLm1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXktNFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogaGFzRXhwaXJlZCA/IChcbiAgICAgICAgICAgICAgPEV4cGlyZWREYXRhTWVzc2FnZSAvPlxuICAgICAgICAgICAgKSA6IHJlc29sdmVkQXR0cmlidXRlcy5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICByZXNvbHZlZEF0dHJpYnV0ZXMubWFwKChhdHRyaWJ1dGUpID0+IChcbiAgICAgICAgICAgICAgICA8QXR0cmlidXRlQmxvY2tcbiAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAga2V5PXthdHRyaWJ1dGV9XG4gICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU9e2F0dHJpYnV0ZX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtkaXNwbGF5RGF0YVthdHRyaWJ1dGUgYXMga2V5b2YgdHlwZW9mIGRpc3BsYXlEYXRhXX1cbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ9e2Rpc3BsYXlDb250ZXh0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L0RlY3J5cHRDbGlja0NvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvU3RyZWFtQ2xpY2tDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgPC9SdW5DbGlja0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9Db250ZXh0Q2FyZFByb3ZpZGVyPlxuICApO1xufTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export declare function StreamViewerSkeleton(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=stream-viewer-skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-viewer-skeleton.d.ts","sourceRoot":"","sources":["../../src/components/stream-viewer-skeleton.tsx"],"names":[],"mappings":"AASA,wBAAgB,oBAAoB,4CAwBnC"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Skeleton } from './ui/skeleton';
3
+ const STREAM_SKELETON_ROWS = [
4
+ { id: 'stream-skeleton-row-1', width: '72%' },
5
+ { id: 'stream-skeleton-row-2', width: '58%' },
6
+ { id: 'stream-skeleton-row-3', width: '80%' },
7
+ { id: 'stream-skeleton-row-4', width: '64%' },
8
+ ];
9
+ export function StreamViewerSkeleton() {
10
+ return (_jsxs("output", { "aria-busy": "true", "aria-label": "Loading stream", className: "flex h-full min-h-0 w-full flex-col overflow-hidden bg-background-100", children: [_jsx("span", { className: "sr-only", children: "Loading stream\u2026" }), _jsx("div", { className: "flex h-10 min-h-10 items-center border-b border-gray-alpha-400 px-3", children: _jsx(Skeleton, { className: "h-3 w-10" }) }), _jsx("div", { className: "flex flex-col", children: STREAM_SKELETON_ROWS.map((row) => (_jsxs("div", { className: "flex h-10 items-center gap-2 border-b border-gray-alpha-400 px-3", children: [_jsx(Skeleton, { className: "h-3", style: { width: row.width } }), _jsx(Skeleton, { className: "h-4 w-4 shrink-0 rounded-sm" })] }, row.id))) })] }));
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLXZpZXdlci1za2VsZXRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0cmVhbS12aWV3ZXItc2tlbGV0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE1BQU0sb0JBQW9CLEdBQUc7SUFDM0IsRUFBRSxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtJQUM3QyxFQUFFLEVBQUUsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0lBQzdDLEVBQUUsRUFBRSxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFDN0MsRUFBRSxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtDQUM5QyxDQUFDO0FBRUYsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLENBQ0wsK0JBQ1ksTUFBTSxnQkFDTCxnQkFBZ0IsRUFDM0IsU0FBUyxFQUFDLHVFQUF1RSxhQUVqRixlQUFNLFNBQVMsRUFBQyxTQUFTLHFDQUF1QixFQUNoRCxjQUFLLFNBQVMsRUFBQyxxRUFBcUUsWUFDbEYsS0FBQyxRQUFRLElBQUMsU0FBUyxFQUFDLFVBQVUsR0FBRyxHQUM3QixFQUNOLGNBQUssU0FBUyxFQUFDLGVBQWUsWUFDM0Isb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUNqQyxlQUVFLFNBQVMsRUFBQyxrRUFBa0UsYUFFNUUsS0FBQyxRQUFRLElBQUMsU0FBUyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFJLEVBQ3pELEtBQUMsUUFBUSxJQUFDLFNBQVMsRUFBQyw2QkFBNkIsR0FBRyxLQUovQyxHQUFHLENBQUMsRUFBRSxDQUtQLENBQ1AsQ0FBQyxHQUNFLElBQ0MsQ0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi91aS9za2VsZXRvbic7XG5cbmNvbnN0IFNUUkVBTV9TS0VMRVRPTl9ST1dTID0gW1xuICB7IGlkOiAnc3RyZWFtLXNrZWxldG9uLXJvdy0xJywgd2lkdGg6ICc3MiUnIH0sXG4gIHsgaWQ6ICdzdHJlYW0tc2tlbGV0b24tcm93LTInLCB3aWR0aDogJzU4JScgfSxcbiAgeyBpZDogJ3N0cmVhbS1za2VsZXRvbi1yb3ctMycsIHdpZHRoOiAnODAlJyB9LFxuICB7IGlkOiAnc3RyZWFtLXNrZWxldG9uLXJvdy00Jywgd2lkdGg6ICc2NCUnIH0sXG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gU3RyZWFtVmlld2VyU2tlbGV0b24oKSB7XG4gIHJldHVybiAoXG4gICAgPG91dHB1dFxuICAgICAgYXJpYS1idXN5PVwidHJ1ZVwiXG4gICAgICBhcmlhLWxhYmVsPVwiTG9hZGluZyBzdHJlYW1cIlxuICAgICAgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgbWluLWgtMCB3LWZ1bGwgZmxleC1jb2wgb3ZlcmZsb3ctaGlkZGVuIGJnLWJhY2tncm91bmQtMTAwXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJzci1vbmx5XCI+TG9hZGluZyBzdHJlYW3igKY8L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC0xMCBtaW4taC0xMCBpdGVtcy1jZW50ZXIgYm9yZGVyLWIgYm9yZGVyLWdyYXktYWxwaGEtNDAwIHB4LTNcIj5cbiAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtMyB3LTEwXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgIHtTVFJFQU1fU0tFTEVUT05fUk9XUy5tYXAoKHJvdykgPT4gKFxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGtleT17cm93LmlkfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBoLTEwIGl0ZW1zLWNlbnRlciBnYXAtMiBib3JkZXItYiBib3JkZXItZ3JheS1hbHBoYS00MDAgcHgtM1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtM1wiIHN0eWxlPXt7IHdpZHRoOiByb3cud2lkdGggfX0gLz5cbiAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJoLTQgdy00IHNocmluay0wIHJvdW5kZWQtc21cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvb3V0cHV0PlxuICApO1xufVxuIl19
@@ -10,7 +10,7 @@ interface StreamViewerProps {
10
10
  error?: string | null;
11
11
  /** True while the initial stream connection is being established */
12
12
  isLoading?: boolean;
13
- /** Called when the user scrolls near the bottom, for triggering pagination */
13
+ /** Called when the user scrolls near the rendered end. */
14
14
  onScrollEnd?: () => void;
15
15
  }
16
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"stream-viewer.d.ts","sourceRoot":"","sources":["../../src/components/stream-viewer.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,KAAK,KAAK,GAAG,WAAW,CAAC;AAEzB,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAgED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EAAE,SAAS,EACnB,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,WAAW,GACZ,EAAE,iBAAiB,2CAmGnB"}
1
+ {"version":3,"file":"stream-viewer.d.ts","sourceRoot":"","sources":["../../src/components/stream-viewer.tsx"],"names":[],"mappings":"AAaA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,KAAK,KAAK,GAAG,WAAW,CAAC;AAEzB,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AA+BD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EAAE,SAAS,EACnB,MAAM,EACN,MAAM,EACN,KAAK,EACL,SAAS,EACT,WAAW,GACZ,EAAE,iBAAiB,2CA0DnB"}
@@ -1,25 +1,18 @@
1
1
  'use client';
2
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import React, { useEffect, useRef } from 'react';
4
4
  import { Virtuoso } from 'react-virtuoso';
5
+ import { CopyButton } from './new-trace-viewer/components/copy-button';
6
+ import { serializeForClipboard } from './sidebar/copyable-data-block';
7
+ import { StreamViewerSkeleton } from './stream-viewer-skeleton';
5
8
  import { DataInspector } from './ui/data-inspector';
6
- import { Skeleton } from './ui/skeleton';
7
9
  // ──────────────────────────────────────────────────────────────────────────
8
10
  // Chunk row — memoized to prevent remounts during polling
9
11
  // ──────────────────────────────────────────────────────────────────────────
10
- const ChunkRow = React.memo(function ChunkRow({ chunk, index, }) {
11
- return (_jsx("div", { className: "text-[11px] rounded-md border p-3", style: {
12
- borderColor: 'var(--ds-gray-300)',
13
- backgroundColor: 'var(--ds-gray-100)',
14
- }, children: _jsxs("div", { className: "flex items-start gap-2", children: [_jsxs("span", { className: "select-none pt-px", style: { color: 'var(--ds-gray-500)' }, children: ["[", index, "]"] }), _jsx("div", { className: "min-w-0 flex-1", children: typeof chunk.value === 'string' ? (_jsx("span", { className: "whitespace-pre-wrap break-words", style: { color: 'var(--ds-gray-1000)' }, children: chunk.value })) : (_jsx(DataInspector, { data: chunk.value, expandLevel: 1 })) })] }) }));
12
+ const ChunkRow = React.memo(function ChunkRow({ chunk }) {
13
+ return (_jsxs("div", { className: "flex w-full items-start gap-1 border-b border-gray-alpha-400 px-3 py-2", children: [_jsx("div", { className: "min-w-0 flex-1", children: typeof chunk.value === 'string' ? (_jsx("span", { className: "whitespace-pre-wrap break-words text-label-12 font-mono text-gray-1000", children: chunk.value })) : (_jsx(DataInspector, { data: chunk.value, expandLevel: 1 })) }), _jsx(CopyButton, { copyText: serializeForClipboard(chunk.value), ariaLabel: "Copy chunk", className: "shrink-0 -mr-1 [&>div]:h-4 [&>div]:w-4 [&_svg]:h-4 [&_svg]:w-4" })] }));
15
14
  });
16
15
  // ──────────────────────────────────────────────────────────────────────────
17
- // Skeleton loading
18
- // ──────────────────────────────────────────────────────────────────────────
19
- function StreamSkeleton() {
20
- return (_jsxs("div", { className: "flex flex-col gap-3 animate-in fade-in", children: [_jsx(Skeleton, { style: { width: 120, height: 16, borderRadius: 4 } }), [1, 2, 3, 4].map((i) => (_jsx(Skeleton, { style: { height: 56, borderRadius: 6 } }, i)))] }));
21
- }
22
- // ──────────────────────────────────────────────────────────────────────────
23
16
  // Main component
24
17
  // ──────────────────────────────────────────────────────────────────────────
25
18
  /**
@@ -30,7 +23,6 @@ function StreamSkeleton() {
30
23
  export function StreamViewer({ streamId: _streamId, chunks, isLive, error, isLoading, onScrollEnd, }) {
31
24
  const virtuosoRef = useRef(null);
32
25
  const prevChunkCountRef = useRef(0);
33
- // Auto-scroll to bottom when new chunks arrive (live streaming)
34
26
  useEffect(() => {
35
27
  if (chunks.length > prevChunkCountRef.current && chunks.length > 0) {
36
28
  virtuosoRef.current?.scrollToIndex({
@@ -40,18 +32,9 @@ export function StreamViewer({ streamId: _streamId, chunks, isLive, error, isLoa
40
32
  }
41
33
  prevChunkCountRef.current = chunks.length;
42
34
  }, [chunks.length]);
43
- // Show skeleton when loading and no chunks have arrived yet
44
35
  if (isLoading && chunks.length === 0) {
45
- return (_jsx("div", { className: "flex flex-col h-full", children: _jsx(StreamSkeleton, {}) }));
36
+ return _jsx(StreamViewerSkeleton, {});
46
37
  }
47
- return (_jsxs("div", { className: "flex flex-col h-full", children: [isLive && (_jsxs("div", { className: "flex items-center gap-1.5 mb-2 px-1", children: [_jsx("span", { className: "inline-block w-2 h-2 rounded-full", style: { backgroundColor: 'var(--ds-green-600)' } }), _jsx("span", { className: "text-xs", style: { color: 'var(--ds-green-700)' }, children: "Live" })] })), chunks.length > 0 && (_jsxs("div", { className: "flex items-center gap-2 mb-2 px-1", children: [_jsx("span", { className: "text-[13px] font-medium", style: { color: 'var(--ds-gray-900)' }, children: "Stream Chunks" }), _jsxs("span", { className: "text-xs tabular-nums", style: { color: 'var(--ds-gray-600)' }, children: ["(", chunks.length, ")"] })] })), _jsx("div", { className: "flex-1 min-h-0", children: error ? (_jsxs("div", { className: "text-[11px] rounded-md border p-3", style: {
48
- borderColor: 'var(--ds-red-300)',
49
- backgroundColor: 'var(--ds-red-100)',
50
- color: 'var(--ds-red-700)',
51
- }, children: [_jsx("div", { children: "Error reading stream:" }), _jsx("div", { children: error })] })) : chunks.length === 0 ? (_jsx("div", { className: "text-[11px] rounded-md border p-3", style: {
52
- borderColor: 'var(--ds-gray-300)',
53
- backgroundColor: 'var(--ds-gray-100)',
54
- color: 'var(--ds-gray-600)',
55
- }, children: isLive ? 'Waiting for stream data...' : 'Stream is empty' })) : (_jsx(Virtuoso, { ref: virtuosoRef, totalCount: chunks.length, overscan: 10, endReached: () => onScrollEnd?.(), itemContent: (index) => (_jsx("div", { style: { paddingBottom: 8 }, children: _jsx(ChunkRow, { chunk: chunks[index], index: index }) })), style: { flex: 1, minHeight: 0 } })) })] }));
38
+ return (_jsxs("div", { className: "flex h-full w-full flex-col overflow-hidden bg-background-100", children: [_jsx("div", { className: "flex h-10 min-h-10 items-center gap-1.5 border-b border-gray-alpha-400 px-3", children: isLive && (_jsxs(_Fragment, { children: [_jsx("span", { className: "inline-block h-2 w-2 rounded-full bg-green-600" }), _jsx("span", { className: "text-label-12 text-green-700", children: "Live" })] })) }), _jsx("div", { className: "flex-1 min-h-0", children: error ? (_jsxs("div", { className: "border-b border-red-400 bg-red-100 px-3 py-2 text-label-12 text-red-900", children: [_jsx("div", { children: "Error reading stream:" }), _jsx("div", { children: error })] })) : chunks.length === 0 ? (_jsx("div", { className: "flex h-10 items-center border-b border-gray-alpha-400 bg-background-200 px-3 text-label-12 text-gray-900", children: isLive ? 'Waiting for stream data...' : 'Stream is empty' })) : (_jsx(Virtuoso, { ref: virtuosoRef, totalCount: chunks.length, overscan: 10, endReached: () => onScrollEnd?.(), itemContent: (index) => (_jsx("div", { className: "w-full", children: _jsx(ChunkRow, { chunk: chunks[index] }) })), style: { flex: 1, minHeight: 0 } })) })] }));
56
39
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLXZpZXdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0cmVhbS12aWV3ZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQXdCekMsNkVBQTZFO0FBQzdFLDBEQUEwRDtBQUMxRCw2RUFBNkU7QUFFN0UsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLFFBQVEsQ0FBQyxFQUM1QyxLQUFLLEVBQ0wsS0FBSyxHQUlOO0lBQ0MsT0FBTyxDQUNMLGNBQ0UsU0FBUyxFQUFDLG1DQUFtQyxFQUM3QyxLQUFLLEVBQUU7WUFDTCxXQUFXLEVBQUUsb0JBQW9CO1lBQ2pDLGVBQWUsRUFBRSxvQkFBb0I7U0FDdEMsWUFFRCxlQUFLLFNBQVMsRUFBQyx3QkFBd0IsYUFDckMsZ0JBQ0UsU0FBUyxFQUFDLG1CQUFtQixFQUM3QixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsa0JBRXBDLEtBQUssU0FDRixFQUNQLGNBQUssU0FBUyxFQUFDLGdCQUFnQixZQUM1QixPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUNqQyxlQUNFLFNBQVMsRUFBQyxpQ0FBaUMsRUFDM0MsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFLFlBRXRDLEtBQUssQ0FBQyxLQUFLLEdBQ1AsQ0FDUixDQUFDLENBQUMsQ0FBQyxDQUNGLEtBQUMsYUFBYSxJQUFDLElBQUksRUFB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fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBWaXJ0dW9zbywgdHlwZSBWaXJ0dW9zb0hhbmRsZSB9IGZyb20gJ3JlYWN0LXZpcnR1b3NvJztcbmltcG9ydCB7IERhdGFJbnNwZWN0b3IgfSBmcm9tICcuL3VpL2RhdGEtaW5zcGVjdG9yJztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi91aS9za2VsZXRvbic7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gVHlwZXNcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbUNodW5rIHtcbiAgaWQ6IG51bWJlcjtcbiAgdmFsdWU6IHVua25vd247XG59XG5cbnR5cGUgQ2h1bmsgPSBTdHJlYW1DaHVuaztcblxuaW50ZXJmYWNlIFN0cmVhbVZpZXdlclByb3BzIHtcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgY2h1bmtzOiBDaHVua1tdO1xuICBpc0xpdmU6IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFRydWUgd2hpbGUgdGhlIGluaXRpYWwgc3RyZWFtIGNvbm5lY3Rpb24gaXMgYmVpbmcgZXN0YWJsaXNoZWQgKi9cbiAgaXNMb2FkaW5nPzogYm9vbGVhbjtcbiAgLyoqIENhbGxlZCB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgbmVhciB0aGUgYm90dG9tLCBmb3IgdHJpZ2dlcmluZyBwYWdpbmF0aW9uICovXG4gIG9uU2Nyb2xsRW5kPzogKCkgPT4gdm9pZDtcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBDaHVuayByb3cg4oCUIG1lbW9pemVkIHRvIHByZXZlbnQgcmVtb3VudHMgZHVyaW5nIHBvbGxpbmdcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5jb25zdCBDaHVua1JvdyA9IFJlYWN0Lm1lbW8oZnVuY3Rpb24gQ2h1bmtSb3coe1xuICBjaHVuayxcbiAgaW5kZXgsXG59OiB7XG4gIGNodW5rOiBDaHVuaztcbiAgaW5kZXg6IG51bWJlcjtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJ0ZXh0LVsxMXB4XSByb3VuZGVkLW1kIGJvcmRlciBwLTNcIlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTMwMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMCknLFxuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQgZ2FwLTJcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9XCJzZWxlY3Qtbm9uZSBwdC1weFwiXG4gICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTUwMCknIH19XG4gICAgICAgID5cbiAgICAgICAgICBbe2luZGV4fV1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTAgZmxleC0xXCI+XG4gICAgICAgICAge3R5cGVvZiBjaHVuay52YWx1ZSA9PT0gJ3N0cmluZycgPyAoXG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3aGl0ZXNwYWNlLXByZS13cmFwIGJyZWFrLXdvcmRzXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTEwMDApJyB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7Y2h1bmsudmFsdWV9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxEYXRhSW5zcGVjdG9yIGRhdGE9e2NodW5rLnZhbHVlfSBleHBhbmRMZXZlbD17MX0gLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufSk7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU2tlbGV0b24gbG9hZGluZ1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmZ1bmN0aW9uIFN0cmVhbVNrZWxldG9uKCkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBnYXAtMyBhbmltYXRlLWluIGZhZGUtaW5cIj5cbiAgICAgIDxTa2VsZXRvbiBzdHlsZT17eyB3aWR0aDogMTIwLCBoZWlnaHQ6IDE2LCBib3JkZXJSYWRpdXM6IDQgfX0gLz5cbiAgICAgIHtbMSwgMiwgMywgNF0ubWFwKChpKSA9PiAoXG4gICAgICAgIDxTa2VsZXRvbiBrZXk9e2l9IHN0eWxlPXt7IGhlaWdodDogNTYsIGJvcmRlclJhZGl1czogNiB9fSAvPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gTWFpbiBjb21wb25lbnRcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKipcbiAqIFN0cmVhbVZpZXdlciBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyByZWFsLXRpbWUgc3RyZWFtIGRhdGEuXG4gKiBFYWNoIGNodW5rIGlzIHJlbmRlcmVkIHdpdGggRGF0YUluc3BlY3RvciBmb3IgcHJvcGVyIGRpc3BsYXlcbiAqIG9mIGNvbXBsZXggdHlwZXMgKE1hcCwgU2V0LCBEYXRlLCBjdXN0b20gY2xhc3NlcywgZXRjLikuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTdHJlYW1WaWV3ZXIoe1xuICBzdHJlYW1JZDogX3N0cmVhbUlkLFxuICBjaHVua3MsXG4gIGlzTGl2ZSxcbiAgZXJyb3IsXG4gIGlzTG9hZGluZyxcbiAgb25TY3JvbGxFbmQsXG59OiBTdHJlYW1WaWV3ZXJQcm9wcykge1xuICBjb25zdCB2aXJ0dW9zb1JlZiA9IHVzZVJlZjxWaXJ0dW9zb0hhbmRsZT4obnVsbCk7XG4gIGNvbnN0IHByZXZDaHVua0NvdW50UmVmID0gdXNlUmVmKDApO1xuXG4gIC8vIEF1dG8tc2Nyb2xsIHRvIGJvdHRvbSB3aGVuIG5ldyBjaHVua3MgYXJyaXZlIChsaXZlIHN0cmVhbWluZylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2h1bmtzLmxlbmd0aCA+IHByZXZDaHVua0NvdW50UmVmLmN1cnJlbnQgJiYgY2h1bmtzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZpcnR1b3NvUmVmLmN1cnJlbnQ/LnNjcm9sbFRvSW5kZXgoe1xuICAgICAgICBpbmRleDogY2h1bmtzLmxlbmd0aCAtIDEsXG4gICAgICAgIGFsaWduOiAnZW5kJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBwcmV2Q2h1bmtDb3VudFJlZi5jdXJyZW50ID0gY2h1bmtzLmxlbmd0aDtcbiAgfSwgW2NodW5rcy5sZW5ndGhdKTtcblxuICAvLyBTaG93IHNrZWxldG9uIHdoZW4gbG9hZGluZyBhbmQgbm8gY2h1bmtzIGhhdmUgYXJyaXZlZCB5ZXRcbiAgaWYgKGlzTG9hZGluZyAmJiBjaHVua3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGxcIj5cbiAgICAgICAgPFN0cmVhbVNrZWxldG9uIC8+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC1mdWxsXCI+XG4gICAgICB7LyogTGl2ZSBpbmRpY2F0b3IgKi99XG4gICAgICB7aXNMaXZlICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IG1iLTIgcHgtMVwiPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtYmxvY2sgdy0yIGgtMiByb3VuZGVkLWZ1bGxcIlxuICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtZ3JlZW4tNjAwKScgfX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyZWVuLTcwMCknIH19PlxuICAgICAgICAgICAgTGl2ZVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogSGVhZGVyICovfVxuICAgICAge2NodW5rcy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBtYi0yIHB4LTFcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bMTNweF0gZm9udC1tZWRpdW1cIlxuICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgU3RyZWFtIENodW5rc1xuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyB0YWJ1bGFyLW51bXNcIlxuICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTYwMCknIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgKHtjaHVua3MubGVuZ3RofSlcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cblxuICAgICAgey8qIENvbnRlbnQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBtaW4taC0wXCI+XG4gICAgICAgIHtlcnJvciA/IChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LVsxMXB4XSByb3VuZGVkLW1kIGJvcmRlciBwLTNcIlxuICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1yZWQtMzAwKScsXG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLWRzLXJlZC0xMDApJyxcbiAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1kcy1yZWQtNzAwKScsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXY+RXJyb3IgcmVhZGluZyBzdHJlYW06PC9kaXY+XG4gICAgICAgICAgICA8ZGl2PntlcnJvcn08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IGNodW5rcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1bMTFweF0gcm91bmRlZC1tZCBib3JkZXIgcC0zXCJcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS0zMDApJyxcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtZ3JheS0xMDApJyxcbiAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTYwMCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNMaXZlID8gJ1dhaXRpbmcgZm9yIHN0cmVhbSBkYXRhLi4uJyA6ICdTdHJlYW0gaXMgZW1wdHknfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxWaXJ0dW9zb1xuICAgICAgICAgICAgcmVmPXt2aXJ0dW9zb1JlZn1cbiAgICAgICAgICAgIHRvdGFsQ291bnQ9e2NodW5rcy5sZW5ndGh9XG4gICAgICAgICAgICBvdmVyc2Nhbj17MTB9XG4gICAgICAgICAgICBlbmRSZWFjaGVkPXsoKSA9PiBvblNjcm9sbEVuZD8uKCl9XG4gICAgICAgICAgICBpdGVtQ29udGVudD17KGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcGFkZGluZ0JvdHRvbTogOCB9fT5cbiAgICAgICAgICAgICAgICA8Q2h1bmtSb3cgY2h1bms9e2NodW5rc1tpbmRleF19IGluZGV4PXtpbmRleH0gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc3R5bGU9e3sgZmxleDogMSwgbWluSGVpZ2h0OiAwIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLXZpZXdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3N0cmVhbS12aWV3ZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBd0JwRCw2RUFBNkU7QUFDN0UsMERBQTBEO0FBQzFELDZFQUE2RTtBQUU3RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFvQjtJQUN2RSxPQUFPLENBQ0wsZUFBSyxTQUFTLEVBQUMsd0VBQXdFLGFBQ3JGLGNBQUssU0FBUyxFQUFDLGdCQUFnQixZQUM1QixPQUFPLEtBQUssQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUNqQyxlQUFNLFNBQVMsRUFBQyx3RUFBd0UsWUFDckYsS0FBSyxDQUFDLEtBQUssR0FDUCxDQUNSLENBQUMsQ0FBQyxDQUFDLENBQ0YsS0FBQyxhQUFhLElBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBSSxDQUNyRCxHQUNHLEVBQ04sS0FBQyxVQUFVLElBQ1QsUUFBUSxFQUFFLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDNUMsU0FBUyxFQUFDLFlBQVksRUFDdEIsU0FBUyxFQUFDLGdFQUFnRSxHQUMxRSxJQUNFLENBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUNqQiw2RUFBNkU7QUFFN0U7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsRUFDM0IsUUFBUSxFQUFFLFNBQVMsRUFDbkIsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULFdBQVcsR0FDTztJQUNsQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQWlCLElBQUksQ0FBQyxDQUFDO0lBQ2pELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXBDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbkUsV0FBVyxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7Z0JBQ2pDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3hCLEtBQUssRUFBRSxLQUFLO2FBQ2IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELGlCQUFpQixDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRXBCLElBQUksU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDckMsT0FBTyxLQUFDLG9CQUFvQixLQUFHLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU8sQ0FDTCxlQUFLLFNBQVMsRUFBQywrREFBK0QsYUFFNUUsY0FBSyxTQUFTLEVBQUMsNkVBQTZFLFlBQ3pGLE1BQU0sSUFBSSxDQUNULDhCQUNFLGVBQU0sU0FBUyxFQUFDLGdEQUFnRCxHQUFHLEVBQ25FLGVBQU0sU0FBUyxFQUFDLDhCQUE4QixxQkFBWSxJQUN6RCxDQUNKLEdBQ0csRUFHTixjQUFLLFNBQVMsRUFBQyxnQkFBZ0IsWUFDNUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNQLGVBQUssU0FBUyxFQUFDLHlFQUF5RSxhQUN0RixrREFBZ0MsRUFDaEMsd0JBQU0sS0FBSyxHQUFPLElBQ2QsQ0FDUCxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDeEIsY0FBSyxTQUFTLEVBQUMsMEdBQTBHLFlBQ3RILE1BQU0sQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUN0RCxDQUNQLENBQUMsQ0FBQyxDQUFDLENBQ0YsS0FBQyxRQUFRLElBQ1AsR0FBRyxFQUFFLFdBQVcsRUFDaEIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQ3pCLFFBQVEsRUFBRSxFQUFFLEVBQ1osVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQ2pDLFdBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDdEIsY0FBSyxTQUFTLEVBQUMsUUFBUSxZQUNyQixLQUFDLFFBQVEsSUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFJLEdBQzlCLENBQ1AsRUFDRCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FDaEMsQ0FDSCxHQUNHLElBQ0YsQ0FDUCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVmlydHVvc28sIHR5cGUgVmlydHVvc29IYW5kbGUgfSBmcm9tICdyZWFjdC12aXJ0dW9zbyc7XG5pbXBvcnQgeyBDb3B5QnV0dG9uIH0gZnJvbSAnLi9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvY29weS1idXR0b24nO1xuaW1wb3J0IHsgc2VyaWFsaXplRm9yQ2xpcGJvYXJkIH0gZnJvbSAnLi9zaWRlYmFyL2NvcHlhYmxlLWRhdGEtYmxvY2snO1xuaW1wb3J0IHsgU3RyZWFtVmlld2VyU2tlbGV0b24gfSBmcm9tICcuL3N0cmVhbS12aWV3ZXItc2tlbGV0b24nO1xuaW1wb3J0IHsgRGF0YUluc3BlY3RvciB9IGZyb20gJy4vdWkvZGF0YS1pbnNwZWN0b3InO1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFR5cGVzXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1DaHVuayB7XG4gIGlkOiBudW1iZXI7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG50eXBlIENodW5rID0gU3RyZWFtQ2h1bms7XG5cbmludGVyZmFjZSBTdHJlYW1WaWV3ZXJQcm9wcyB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIGNodW5rczogQ2h1bmtbXTtcbiAgaXNMaXZlOiBib29sZWFuO1xuICBlcnJvcj86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUcnVlIHdoaWxlIHRoZSBpbml0aWFsIHN0cmVhbSBjb25uZWN0aW9uIGlzIGJlaW5nIGVzdGFibGlzaGVkICovXG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIC8qKiBDYWxsZWQgd2hlbiB0aGUgdXNlciBzY3JvbGxzIG5lYXIgdGhlIHJlbmRlcmVkIGVuZC4gKi9cbiAgb25TY3JvbGxFbmQ/OiAoKSA9PiB2b2lkO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIENodW5rIHJvdyDigJQgbWVtb2l6ZWQgdG8gcHJldmVudCByZW1vdW50cyBkdXJpbmcgcG9sbGluZ1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmNvbnN0IENodW5rUm93ID0gUmVhY3QubWVtbyhmdW5jdGlvbiBDaHVua1Jvdyh7IGNodW5rIH06IHsgY2h1bms6IENodW5rIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggdy1mdWxsIGl0ZW1zLXN0YXJ0IGdhcC0xIGJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMCBweC0zIHB5LTJcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMCBmbGV4LTFcIj5cbiAgICAgICAge3R5cGVvZiBjaHVuay52YWx1ZSA9PT0gJ3N0cmluZycgPyAoXG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwid2hpdGVzcGFjZS1wcmUtd3JhcCBicmVhay13b3JkcyB0ZXh0LWxhYmVsLTEyIGZvbnQtbW9ubyB0ZXh0LWdyYXktMTAwMFwiPlxuICAgICAgICAgICAge2NodW5rLnZhbHVlfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8RGF0YUluc3BlY3RvciBkYXRhPXtjaHVuay52YWx1ZX0gZXhwYW5kTGV2ZWw9ezF9IC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxDb3B5QnV0dG9uXG4gICAgICAgIGNvcHlUZXh0PXtzZXJpYWxpemVGb3JDbGlwYm9hcmQoY2h1bmsudmFsdWUpfVxuICAgICAgICBhcmlhTGFiZWw9XCJDb3B5IGNodW5rXCJcbiAgICAgICAgY2xhc3NOYW1lPVwic2hyaW5rLTAgLW1yLTEgWyY+ZGl2XTpoLTQgWyY+ZGl2XTp3LTQgWyZfc3ZnXTpoLTQgWyZfc3ZnXTp3LTRcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIE1haW4gY29tcG9uZW50XG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqXG4gKiBTdHJlYW1WaWV3ZXIgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgcmVhbC10aW1lIHN0cmVhbSBkYXRhLlxuICogRWFjaCBjaHVuayBpcyByZW5kZXJlZCB3aXRoIERhdGFJbnNwZWN0b3IgZm9yIHByb3BlciBkaXNwbGF5XG4gKiBvZiBjb21wbGV4IHR5cGVzIChNYXAsIFNldCwgRGF0ZSwgY3VzdG9tIGNsYXNzZXMsIGV0Yy4pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gU3RyZWFtVmlld2VyKHtcbiAgc3RyZWFtSWQ6IF9zdHJlYW1JZCxcbiAgY2h1bmtzLFxuICBpc0xpdmUsXG4gIGVycm9yLFxuICBpc0xvYWRpbmcsXG4gIG9uU2Nyb2xsRW5kLFxufTogU3RyZWFtVmlld2VyUHJvcHMpIHtcbiAgY29uc3QgdmlydHVvc29SZWYgPSB1c2VSZWY8VmlydHVvc29IYW5kbGU+KG51bGwpO1xuICBjb25zdCBwcmV2Q2h1bmtDb3VudFJlZiA9IHVzZVJlZigwKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaHVua3MubGVuZ3RoID4gcHJldkNodW5rQ291bnRSZWYuY3VycmVudCAmJiBjaHVua3MubGVuZ3RoID4gMCkge1xuICAgICAgdmlydHVvc29SZWYuY3VycmVudD8uc2Nyb2xsVG9JbmRleCh7XG4gICAgICAgIGluZGV4OiBjaHVua3MubGVuZ3RoIC0gMSxcbiAgICAgICAgYWxpZ246ICdlbmQnLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHByZXZDaHVua0NvdW50UmVmLmN1cnJlbnQgPSBjaHVua3MubGVuZ3RoO1xuICB9LCBbY2h1bmtzLmxlbmd0aF0pO1xuXG4gIGlmIChpc0xvYWRpbmcgJiYgY2h1bmtzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiA8U3RyZWFtVmlld2VyU2tlbGV0b24gLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgdy1mdWxsIGZsZXgtY29sIG92ZXJmbG93LWhpZGRlbiBiZy1iYWNrZ3JvdW5kLTEwMFwiPlxuICAgICAgey8qIFN0YXR1cyBoZWFkZXIgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC0xMCBtaW4taC0xMCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBib3JkZXItYiBib3JkZXItZ3JheS1hbHBoYS00MDAgcHgtM1wiPlxuICAgICAgICB7aXNMaXZlICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIGgtMiB3LTIgcm91bmRlZC1mdWxsIGJnLWdyZWVuLTYwMFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTEyIHRleHQtZ3JlZW4tNzAwXCI+TGl2ZTwvc3Bhbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogQ29udGVudCAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG1pbi1oLTBcIj5cbiAgICAgICAge2Vycm9yID8gKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLXJlZC00MDAgYmctcmVkLTEwMCBweC0zIHB5LTIgdGV4dC1sYWJlbC0xMiB0ZXh0LXJlZC05MDBcIj5cbiAgICAgICAgICAgIDxkaXY+RXJyb3IgcmVhZGluZyBzdHJlYW06PC9kaXY+XG4gICAgICAgICAgICA8ZGl2PntlcnJvcn08L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IGNodW5rcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGgtMTAgaXRlbXMtY2VudGVyIGJvcmRlci1iIGJvcmRlci1ncmF5LWFscGhhLTQwMCBiZy1iYWNrZ3JvdW5kLTIwMCBweC0zIHRleHQtbGFiZWwtMTIgdGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgICAge2lzTGl2ZSA/ICdXYWl0aW5nIGZvciBzdHJlYW0gZGF0YS4uLicgOiAnU3RyZWFtIGlzIGVtcHR5J31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8VmlydHVvc29cbiAgICAgICAgICAgIHJlZj17dmlydHVvc29SZWZ9XG4gICAgICAgICAgICB0b3RhbENvdW50PXtjaHVua3MubGVuZ3RofVxuICAgICAgICAgICAgb3ZlcnNjYW49ezEwfVxuICAgICAgICAgICAgZW5kUmVhY2hlZD17KCkgPT4gb25TY3JvbGxFbmQ/LigpfVxuICAgICAgICAgICAgaXRlbUNvbnRlbnQ9eyhpbmRleCkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxDaHVua1JvdyBjaHVuaz17Y2h1bmtzW2luZGV4XX0gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgc3R5bGU9e3sgZmxleDogMSwgbWluSGVpZ2h0OiAwIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl19
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type { HealthCheckEndpoint, HealthCheckResult, } from '@workflow/core/runtime';
1
+ export type { HealthCheckResult } from '@workflow/core/runtime';
2
2
  export { parseStepName, parseWorkflowName, } from '@workflow/utils/parse-name';
3
3
  export type { Event, Hook, Step, WorkflowRun } from '@workflow/world';
4
4
  export * from './components';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtE,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtE,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -7,4 +7,4 @@ export { looksLikeWorkflowIdSearchInput, parseExactWorkflowSearchId, } from './l
7
7
  export { CLASS_INSTANCE_REF_TYPE, ClassInstanceRef, ENCRYPTED_PLACEHOLDER, extractStreamIds, getWebRevivers, hasEncryptedFields, hydrateResourceIO, hydrateResourceIOAsync, hydrateResourceIOWithKey, isClassInstanceRef, isEncryptedMarker, isStreamId, isStreamRef, STREAM_REF_TYPE, truncateId, } from './lib/hydration';
8
8
  export { ToastProvider, useToast } from './lib/toast';
9
9
  export { extractConversation, formatDuration, formatDurationPrecise, identifyStreamSteps, isDoStreamStep, } from './lib/utils';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUNMLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixzQkFBc0IsR0FDdkIsTUFBTSxzREFBc0QsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLHlCQUF5QixHQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBTzlCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBSUwsOEJBQThCLEVBQzlCLDBCQUEwQixHQUMzQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixXQUFXLEVBQ1gsZUFBZSxFQUNmLFVBQVUsR0FDWCxNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUge1xuICBIZWFsdGhDaGVja0VuZHBvaW50LFxuICBIZWFsdGhDaGVja1Jlc3VsdCxcbn0gZnJvbSAnQHdvcmtmbG93L2NvcmUvcnVudGltZSc7XG5leHBvcnQge1xuICBwYXJzZVN0ZXBOYW1lLFxuICBwYXJzZVdvcmtmbG93TmFtZSxcbn0gZnJvbSAnQHdvcmtmbG93L3V0aWxzL3BhcnNlLW5hbWUnO1xuZXhwb3J0IHR5cGUgeyBFdmVudCwgSG9vaywgU3RlcCwgV29ya2Zsb3dSdW4gfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzJztcbmV4cG9ydCB7XG4gIGhvb2tFdmVudHNUb0hvb2tFbnRpdHksXG4gIHN0ZXBFdmVudHNUb1N0ZXBFbnRpdHksXG4gIHdhaXRFdmVudHNUb1dhaXRFbnRpdHksXG59IGZyb20gJy4vY29tcG9uZW50cy93b3JrZmxvdy10cmFjZXMvdHJhY2Utc3Bhbi1jb25zdHJ1Y3Rpb24nO1xuZXhwb3J0IHR5cGUgeyBFdmVudEFuYWx5c2lzIH0gZnJvbSAnLi9saWIvZXZlbnQtYW5hbHlzaXMnO1xuZXhwb3J0IHtcbiAgYW5hbHl6ZUV2ZW50cyxcbiAgaGFzUGVuZGluZ0hvb2tzRnJvbUV2ZW50cyxcbiAgaGFzUGVuZGluZ1N0ZXBzRnJvbUV2ZW50cyxcbiAgaXNUZXJtaW5hbFN0YXR1cyxcbiAgc2hvdWxkU2hvd1JlZW5xdWV1ZUJ1dHRvbixcbn0gZnJvbSAnLi9saWIvZXZlbnQtYW5hbHlzaXMnO1xuZXhwb3J0IHR5cGUge1xuICBNYXRlcmlhbGl6ZWRFbnRpdGllcyxcbiAgTWF0ZXJpYWxpemVkSG9vayxcbiAgTWF0ZXJpYWxpemVkU3RlcCxcbiAgTWF0ZXJpYWxpemVkV2FpdCxcbn0gZnJvbSAnLi9saWIvZXZlbnQtbWF0ZXJpYWxpemF0aW9uJztcbmV4cG9ydCB7XG4gIG1hdGVyaWFsaXplQWxsLFxuICBtYXRlcmlhbGl6ZUhvb2tzLFxuICBtYXRlcmlhbGl6ZVN0ZXBzLFxuICBtYXRlcmlhbGl6ZVdhaXRzLFxufSBmcm9tICcuL2xpYi9ldmVudC1tYXRlcmlhbGl6YXRpb24nO1xuZXhwb3J0IHtcbiAgdHlwZSBFeGFjdElkU2VhcmNoUmVzdWx0LFxuICB0eXBlIEV4YWN0V29ya2Zsb3dTZWFyY2hJZCxcbiAgdHlwZSBFeGFjdFdvcmtmbG93U2VhcmNoSWRLaW5kLFxuICBsb29rc0xpa2VXb3JrZmxvd0lkU2VhcmNoSW5wdXQsXG4gIHBhcnNlRXhhY3RXb3JrZmxvd1NlYXJjaElkLFxufSBmcm9tICcuL2xpYi9leGFjdC1ldmVudC1zZWFyY2gtaWQnO1xuZXhwb3J0IHR5cGUgeyBSZXZpdmVycywgU3RyZWFtUmVmIH0gZnJvbSAnLi9saWIvaHlkcmF0aW9uJztcbmV4cG9ydCB7XG4gIENMQVNTX0lOU1RBTkNFX1JFRl9UWVBFLFxuICBDbGFzc0luc3RhbmNlUmVmLFxuICBFTkNSWVBURURfUExBQ0VIT0xERVIsXG4gIGV4dHJhY3RTdHJlYW1JZHMsXG4gIGdldFdlYlJldml2ZXJzLFxuICBoYXNFbmNyeXB0ZWRGaWVsZHMsXG4gIGh5ZHJhdGVSZXNvdXJjZUlPLFxuICBoeWRyYXRlUmVzb3VyY2VJT0FzeW5jLFxuICBoeWRyYXRlUmVzb3VyY2VJT1dpdGhLZXksXG4gIGlzQ2xhc3NJbnN0YW5jZVJlZixcbiAgaXNFbmNyeXB0ZWRNYXJrZXIsXG4gIGlzU3RyZWFtSWQsXG4gIGlzU3RyZWFtUmVmLFxuICBTVFJFQU1fUkVGX1RZUEUsXG4gIHRydW5jYXRlSWQsXG59IGZyb20gJy4vbGliL2h5ZHJhdGlvbic7XG5leHBvcnQgdHlwZSB7IERlY29kZWRTdHJlYW1DaHVua1NvdXJjZSB9IGZyb20gJy4vbGliL3N0cmVhbS1kaXNwbGF5JztcbmV4cG9ydCB0eXBlIHsgVG9hc3RBZGFwdGVyIH0gZnJvbSAnLi9saWIvdG9hc3QnO1xuZXhwb3J0IHsgVG9hc3RQcm92aWRlciwgdXNlVG9hc3QgfSBmcm9tICcuL2xpYi90b2FzdCc7XG5leHBvcnQgdHlwZSB7IFN0cmVhbVN0ZXAgfSBmcm9tICcuL2xpYi91dGlscyc7XG5leHBvcnQge1xuICBleHRyYWN0Q29udmVyc2F0aW9uLFxuICBmb3JtYXREdXJhdGlvbixcbiAgZm9ybWF0RHVyYXRpb25QcmVjaXNlLFxuICBpZGVudGlmeVN0cmVhbVN0ZXBzLFxuICBpc0RvU3RyZWFtU3RlcCxcbn0gZnJvbSAnLi9saWIvdXRpbHMnO1xuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixzQkFBc0IsR0FDdkIsTUFBTSxzREFBc0QsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsZ0JBQWdCLEVBQ2hCLHlCQUF5QixHQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBTzlCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBSUwsOEJBQThCLEVBQzlCLDBCQUEwQixHQUMzQixNQUFNLDZCQUE2QixDQUFDO0FBRXJDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLHFCQUFxQixFQUNyQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLHdCQUF3QixFQUN4QixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixXQUFXLEVBQ1gsZUFBZSxFQUNmLFVBQVUsR0FDWCxNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsY0FBYyxHQUNmLE1BQU0sYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgeyBIZWFsdGhDaGVja1Jlc3VsdCB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlL3J1bnRpbWUnO1xuZXhwb3J0IHtcbiAgcGFyc2VTdGVwTmFtZSxcbiAgcGFyc2VXb3JrZmxvd05hbWUsXG59IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmV4cG9ydCB0eXBlIHsgRXZlbnQsIEhvb2ssIFN0ZXAsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cyc7XG5leHBvcnQge1xuICBob29rRXZlbnRzVG9Ib29rRW50aXR5LFxuICBzdGVwRXZlbnRzVG9TdGVwRW50aXR5LFxuICB3YWl0RXZlbnRzVG9XYWl0RW50aXR5LFxufSBmcm9tICcuL2NvbXBvbmVudHMvd29ya2Zsb3ctdHJhY2VzL3RyYWNlLXNwYW4tY29uc3RydWN0aW9uJztcbmV4cG9ydCB0eXBlIHsgRXZlbnRBbmFseXNpcyB9IGZyb20gJy4vbGliL2V2ZW50LWFuYWx5c2lzJztcbmV4cG9ydCB7XG4gIGFuYWx5emVFdmVudHMsXG4gIGhhc1BlbmRpbmdIb29rc0Zyb21FdmVudHMsXG4gIGhhc1BlbmRpbmdTdGVwc0Zyb21FdmVudHMsXG4gIGlzVGVybWluYWxTdGF0dXMsXG4gIHNob3VsZFNob3dSZWVucXVldWVCdXR0b24sXG59IGZyb20gJy4vbGliL2V2ZW50LWFuYWx5c2lzJztcbmV4cG9ydCB0eXBlIHtcbiAgTWF0ZXJpYWxpemVkRW50aXRpZXMsXG4gIE1hdGVyaWFsaXplZEhvb2ssXG4gIE1hdGVyaWFsaXplZFN0ZXAsXG4gIE1hdGVyaWFsaXplZFdhaXQsXG59IGZyb20gJy4vbGliL2V2ZW50LW1hdGVyaWFsaXphdGlvbic7XG5leHBvcnQge1xuICBtYXRlcmlhbGl6ZUFsbCxcbiAgbWF0ZXJpYWxpemVIb29rcyxcbiAgbWF0ZXJpYWxpemVTdGVwcyxcbiAgbWF0ZXJpYWxpemVXYWl0cyxcbn0gZnJvbSAnLi9saWIvZXZlbnQtbWF0ZXJpYWxpemF0aW9uJztcbmV4cG9ydCB7XG4gIHR5cGUgRXhhY3RJZFNlYXJjaFJlc3VsdCxcbiAgdHlwZSBFeGFjdFdvcmtmbG93U2VhcmNoSWQsXG4gIHR5cGUgRXhhY3RXb3JrZmxvd1NlYXJjaElkS2luZCxcbiAgbG9va3NMaWtlV29ya2Zsb3dJZFNlYXJjaElucHV0LFxuICBwYXJzZUV4YWN0V29ya2Zsb3dTZWFyY2hJZCxcbn0gZnJvbSAnLi9saWIvZXhhY3QtZXZlbnQtc2VhcmNoLWlkJztcbmV4cG9ydCB0eXBlIHsgUmV2aXZlcnMsIFN0cmVhbVJlZiB9IGZyb20gJy4vbGliL2h5ZHJhdGlvbic7XG5leHBvcnQge1xuICBDTEFTU19JTlNUQU5DRV9SRUZfVFlQRSxcbiAgQ2xhc3NJbnN0YW5jZVJlZixcbiAgRU5DUllQVEVEX1BMQUNFSE9MREVSLFxuICBleHRyYWN0U3RyZWFtSWRzLFxuICBnZXRXZWJSZXZpdmVycyxcbiAgaGFzRW5jcnlwdGVkRmllbGRzLFxuICBoeWRyYXRlUmVzb3VyY2VJTyxcbiAgaHlkcmF0ZVJlc291cmNlSU9Bc3luYyxcbiAgaHlkcmF0ZVJlc291cmNlSU9XaXRoS2V5LFxuICBpc0NsYXNzSW5zdGFuY2VSZWYsXG4gIGlzRW5jcnlwdGVkTWFya2VyLFxuICBpc1N0cmVhbUlkLFxuICBpc1N0cmVhbVJlZixcbiAgU1RSRUFNX1JFRl9UWVBFLFxuICB0cnVuY2F0ZUlkLFxufSBmcm9tICcuL2xpYi9oeWRyYXRpb24nO1xuZXhwb3J0IHR5cGUgeyBEZWNvZGVkU3RyZWFtQ2h1bmtTb3VyY2UgfSBmcm9tICcuL2xpYi9zdHJlYW0tZGlzcGxheSc7XG5leHBvcnQgdHlwZSB7IFRvYXN0QWRhcHRlciB9IGZyb20gJy4vbGliL3RvYXN0JztcbmV4cG9ydCB7IFRvYXN0UHJvdmlkZXIsIHVzZVRvYXN0IH0gZnJvbSAnLi9saWIvdG9hc3QnO1xuZXhwb3J0IHR5cGUgeyBTdHJlYW1TdGVwIH0gZnJvbSAnLi9saWIvdXRpbHMnO1xuZXhwb3J0IHtcbiAgZXh0cmFjdENvbnZlcnNhdGlvbixcbiAgZm9ybWF0RHVyYXRpb24sXG4gIGZvcm1hdER1cmF0aW9uUHJlY2lzZSxcbiAgaWRlbnRpZnlTdHJlYW1TdGVwcyxcbiAgaXNEb1N0cmVhbVN0ZXAsXG59IGZyb20gJy4vbGliL3V0aWxzJztcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAOL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,YAAY,EACZ,KAAK,MAAM,EACX,eAAe,EACf,KAAK,SAAS,EACd,uBAAuB,EACvB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAgE7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA+MzC;AAmBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMnD;AAMD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AA0BlD,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMzD;AAMD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAiBnD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvD;AAsCD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,EACX,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,CAAC,CAAC,CAyDZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAkB7D"}
1
+ {"version":3,"file":"hydration.d.ts","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAOL,KAAK,QAAQ,EAEd,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,QAAQ,EACb,YAAY,EACZ,KAAK,MAAM,EACX,eAAe,EACf,KAAK,SAAS,EACd,uBAAuB,EACvB,UAAU,GACX,MAAM,qCAAqC,CAAC;AAgE7C;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CA+MzC;AAmBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMnD;AAMD,eAAO,MAAM,sBAAsB,cAAc,CAAC;AA0BlD,sDAAsD;AACtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMzD;AAMD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAiBnD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMvD;AAsCD;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,QAAQ,EAAE,CAAC,EACX,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,EACX,GAAG,CAAC,EAAE,UAAU,GACf,OAAO,CAAC,CAAC,CAAC,CA+DZ;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAkB7D"}