@worktile/theia 17.2.0 → 17.2.2

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.
@@ -9,13 +9,18 @@ import { TheConversionHint } from '../../components';
9
9
  import { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';
10
10
  import { createPluginFactory } from '../../core';
11
11
  import { PluginKeys } from '../../interfaces';
12
- import * as TheTransforms from '../../transforms';
13
12
  import { THE_EDITOR_CONVERSION_HINT_REF, getToolbarClass, recursionNodes } from '../../utils';
14
13
  import { ImageEditor } from '../image/image.editor';
14
+ export const closeConversionHint = (editor) => {
15
+ const hintRef = THE_EDITOR_CONVERSION_HINT_REF.get(editor);
16
+ if (hintRef) {
17
+ hintRef.close();
18
+ }
19
+ };
15
20
  export const withDeserializeMd = (editor) => {
16
21
  const { insertData, onKeydown } = editor;
17
22
  editor.onKeydown = (event) => {
18
- TheTransforms.closeConversionHint(editor);
23
+ closeConversionHint(editor);
19
24
  onKeydown(event);
20
25
  };
21
26
  editor.insertData = (data) => {
@@ -25,8 +30,8 @@ export const withDeserializeMd = (editor) => {
25
30
  const plainFragment = data.getData('text/plain');
26
31
  const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);
27
32
  const oldRange = editor.selection;
28
- TheTransforms.closeConversionHint(editor);
29
- if (plainFragment && isMarkdownStynx(plainFragment) && !slateFragment) {
33
+ closeConversionHint(editor);
34
+ if (plainFragment && isMarkdownSyntax(plainFragment) && !slateFragment) {
30
35
  setTimeout(() => {
31
36
  const overlay = editor.injector.get(Overlay);
32
37
  const bodyElement = document.body;
@@ -34,7 +39,7 @@ export const withDeserializeMd = (editor) => {
34
39
  const toolbarElement = document.querySelector(`.${toolbarClass}`);
35
40
  const origin = toolbarElement ? toolbarElement : bodyElement;
36
41
  const placement = toolbarElement ? 'top' : 'topRight';
37
- const hintPopverRef = popover.open(TheConversionHint, {
42
+ const hintPopoverRef = popover.open(TheConversionHint, {
38
43
  initialState: {
39
44
  editor,
40
45
  conversion: () => {
@@ -43,7 +48,7 @@ export const withDeserializeMd = (editor) => {
43
48
  const htmlDom = new DOMParser().parseFromString(html, 'text/html');
44
49
  const fragment = TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));
45
50
  if (!isUnformatted(fragment)) {
46
- TheTransforms.closeConversionHint(editor);
51
+ closeConversionHint(editor);
47
52
  editor.undo();
48
53
  setTimeout(() => {
49
54
  Transforms.select(editor, oldRange);
@@ -66,11 +71,11 @@ export const withDeserializeMd = (editor) => {
66
71
  return;
67
72
  }
68
73
  else {
69
- TheTransforms.closeConversionHint(editor);
74
+ closeConversionHint(editor);
70
75
  }
71
76
  }
72
77
  catch (error) {
73
- TheTransforms.closeConversionHint(editor);
78
+ closeConversionHint(editor);
74
79
  }
75
80
  }
76
81
  },
@@ -82,9 +87,10 @@ export const withDeserializeMd = (editor) => {
82
87
  hasBackdrop: false,
83
88
  backdropClosable: false,
84
89
  closeOnNavigation: false,
90
+ outsideClosable: true,
85
91
  scrollStrategy: overlay.scrollStrategies.reposition()
86
92
  });
87
- THE_EDITOR_CONVERSION_HINT_REF.set(editor, hintPopverRef);
93
+ THE_EDITOR_CONVERSION_HINT_REF.set(editor, hintPopoverRef);
88
94
  cdr.markForCheck();
89
95
  });
90
96
  }
@@ -102,7 +108,7 @@ const isUnformatted = (elements) => {
102
108
  return Text.isText(node) && Object.keys(node).length === 1;
103
109
  }));
104
110
  };
105
- const isMarkdownStynx = content => {
111
+ const isMarkdownSyntax = content => {
106
112
  // https://github.com/Chalarangelo/parse-md-js/blob/master/parsemd.js
107
113
  const codeBlockRegex = /((\n\t)(.*))+/g;
108
114
  const inlineCodeRegex = /(`)(.*?)\1/g;
@@ -133,4 +139,4 @@ const isMarkdownStynx = content => {
133
139
  ];
134
140
  return regexps.some(regexp => regexp.test(content));
135
141
  };
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzZXJpYWxpemUtbWQucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvZGVzZXJpYWxpemUvZGVzZXJpYWxpemUtbWQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQVUsT0FBTyxFQUFRLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFtQixNQUFTLEVBQUssRUFBRTtJQUNoRSxNQUFNLEVBQUUsVUFB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LE1BQU0sZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQzNDLE1BQU0sbUJBQW1CLEdBQUcsdUJBQXVCLENBQUM7SUFDcEQsTUFBTSxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztJQUNsRCxNQUFNLGdCQUFnQixHQUFHLHlCQUF5QixDQUFDO0lBQ25ELE1BQU0sY0FBYyxHQUFHLG1FQUFtRSxDQUFDO0lBQzNGLGNBQWM7SUFDZCxNQUFNLEtBQUssR0FDUCwrSUFBK0ksQ0FBQztJQUNwSixNQUFNLE9BQU8sR0FBRztRQUNaLGVBQWU7UUFDZixVQUFVO1FBQ1YsU0FBUztRQUNULFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsa0JBQWtCO1FBQ2xCLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGdCQUFnQjtRQUNoQixLQUFLO0tBQ1IsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoZWlhQ29udmVydGVyIH0gZnJvbSAnQGF0aW5jL3NlbGVuZSc7XG5pbXBvcnQgeyBtYXJrZWQgfSBmcm9tICdtYXJrZWQnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIE5vZGUsIFRleHQsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBUaGVDb252ZXJzaW9uSGludCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ0xJUEJPQVJEX0ZPUk1BVF9LRVksIEVsZW1lbnRLaW5kcyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVQbHVnaW5GYWN0b3J5IH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBQbHVnaW5LZXlzIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4uLy4uL3RyYW5zZm9ybXMnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9DT05WRVJTSU9OX0hJTlRfUkVGLCBnZXRUb29sYmFyQ2xhc3MsIHJlY3Vyc2lvbk5vZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBJbWFnZUVkaXRvciB9IGZyb20gJy4uL2ltYWdlL2ltYWdlLmVkaXRvcic7XG5cbmV4cG9ydCBjb25zdCB3aXRoRGVzZXJpYWxpemVNZCA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydERhdGEsIG9uS2V5ZG93biB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBUaGVUcmFuc2Zvcm1zLmNsb3NlQ29udmVyc2lvbkhpbnQoZWRpdG9yKTtcbiAgICAgICAgb25LZXlkb3duKGV2ZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yLmluc2VydERhdGEgPSAoZGF0YTogRGF0YVRyYW5zZmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXIgPSBlZGl0b3IuaW5qZWN0b3IuZ2V0KFRoeVBvcG92ZXIpO1xuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gZWRpdG9yLmluamVjdG9yLmdldChWaWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgY29uc3QgY2RyID0gZWRpdG9yLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAgICAgY29uc3QgcGxhaW5GcmFnbWVudCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICBjb25zdCBzbGF0ZUZyYWdtZW50ID0gZGF0YS5nZXREYXRhKGBhcHBsaWNhdGlvbi8ke0NMSVBCT0FSRF9GT1JNQVRfS0VZfWApO1xuICAgICAgICBjb25zdCBvbGRSYW5nZSA9IGVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgIFRoZVRyYW5zZm9ybXMuY2xvc2VDb252ZXJzaW9uSGludChlZGl0b3IpO1xuXG4gICAgICAgIGlmIChwbGFpbkZyYWdtZW50ICYmIGlzTWFya2Rvd25TdHlueChwbGFpbkZyYWdtZW50KSAmJiAhc2xhdGVGcmFnbWVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGVkaXRvci5pbmplY3Rvci5nZXQoT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJDbGFzcyA9IGdldFRvb2xiYXJDbGFzcyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dG9vbGJhckNsYXNzfWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IHRvb2xiYXJFbGVtZW50ID8gdG9vbGJhckVsZW1lbnQgOiBib2R5RWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSB0b29sYmFyRWxlbWVudCA/ICd0b3AnIDogJ3RvcFJpZ2h0JztcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhpbnRQb3B2ZXJSZWYgPSBwb3BvdmVyLm9wZW4oVGhlQ29udmVyc2lvbkhpbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJzaW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaHRtbCA9IG1hcmtlZChwbGFpbkZyYWdtZW50LnJlcGxhY2UoL1xcbmBgYC9nLCAnXFxuXFxuYGBgJyksIHsgZ2ZtOiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBodG1sRG9tID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhodG1sLCAndGV4dC9odG1sJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50ID0gVGhlaWFDb252ZXJ0ZXIuY29udmVydFRvVGhlaWEoQXJyYXkuZnJvbShodG1sRG9tLmJvZHkuY2hpbGRyZW4pKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVW5mb3JtYXR0ZWQoZnJhZ21lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmNsb3NlQ29udmVyc2lvbkhpbnQoZWRpdG9yKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnVuZG8oKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QoZWRpdG9yLCBvbGRSYW5nZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFzZSA2NCDlm77niYflpITnkIZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN1cnNpb25Ob2RlcyhmcmFnbWVudCwgKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNJbWFnZSA9IEVsZW1lbnQuaXNFbGVtZW50KG5vZGUpICYmIG5vZGUudHlwZSA9PT0gRWxlbWVudEtpbmRzLmltYWdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNCYXNlNjQgPSBJbWFnZUVkaXRvci5pc0Jhc2U2NChub2RlPy5vcmlnaW5VcmwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQmFzZTY0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3IuaGFuZGxlQmFzZTY0SW1hZ2VFbGVtZW50KGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlRWRpdG9yLmhhbmRsZUV4dGVybmFsSW1hZ2VFbGVtZW50KGVkaXRvciwgbm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLmluc2VydEZyYWdtZW50KGVkaXRvciwgZnJhZ21lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuZ3VsYXJFZGl0b3IuZm9jdXMoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy5jbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLmNsb3NlQ29udmVyc2lvbkhpbnQoZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IC0xMDAsXG4gICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiAwLFxuICAgICAgICAgICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZU9uTmF2aWdhdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgVEhFX0VESVRPUl9DT05WRVJTSU9OX0hJTlRfUkVGLnNldChlZGl0b3IsIGhpbnRQb3B2ZXJSZWYpO1xuICAgICAgICAgICAgICAgIGNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5zZXJ0RGF0YShkYXRhKTtcbiAgICB9O1xuICAgIHJldHVybiBlZGl0b3I7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRGVzZXJpYWxpemVNZFBsdWdpbiA9IGNyZWF0ZVBsdWdpbkZhY3Rvcnkoe1xuICAgIGtleTogUGx1Z2luS2V5cy5kZXNlcmlhbGl6ZU1kLFxuICAgIHdpdGhPdmVycmlkZXM6IHdpdGhEZXNlcmlhbGl6ZU1kXG59KTtcblxuY29uc3QgaXNVbmZvcm1hdHRlZCA9IChlbGVtZW50czogRWxlbWVudFtdKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRzLmV2ZXJ5KFxuICAgICAgICBlbGVtZW50ID0+XG4gICAgICAgICAgICBlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5kZWZhdWx0ICYmXG4gICAgICAgICAgICBlbGVtZW50LmNoaWxkcmVuLmV2ZXJ5KChub2RlOiBOb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRleHQuaXNUZXh0KG5vZGUpICYmIE9iamVjdC5rZXlzKG5vZGUpLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgICAgIH0pXG4gICAgKTtcbn07XG5cbmNvbnN0IGlzTWFya2Rvd25TdHlueCA9IGNvbnRlbnQgPT4ge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9DaGFsYXJhbmdlbG8vcGFyc2UtbWQtanMvYmxvYi9tYXN0ZXIvcGFyc2VtZC5qc1xuICAgIGNvbnN0IGNvZGVCbG9ja1JlZ2V4ID0gLygoXFxuXFx0KSguKikpKy9nO1xuICAgIGNvbnN0IGlubGluZUNvZGVSZWdleCA9IC8oYCkoLio/KVxcMS9nO1xuICAgIGNvbnN0IGltYWdlUmVnZXggPSAvIVxcWyhbXlxcW10rKVxcXVxcKChbXlxcKV0rKVxcKS9nO1xuICAgIGNvbnN0IGxpbmtSZWdleCA9IC9cXFsoW15cXFtdKylcXF1cXCgoW15cXCldKylcXCkvZztcbiAgICBjb25zdCBoZWFkaW5nUmVnZXggPSAvKCMrXFxzKikoLiopL2c7XG4gICAgY29uc3QgYm9sZEl0YWxpY3NSZWdleCA9IC8oXFwqezEsMn0pKFxcUyspXFwxL2c7XG4gICAgY29uc3Qgc3RyaWtldGhyb3VnaFJlZ2V4ID0gLyhcXH5cXH4pKC4qPylcXDEvZztcbiAgICBjb25zdCBibG9ja3F1b3RlUmVnZXggPSAvXFxuKCZndDt8XFw+KSguKikvZztcbiAgICBjb25zdCBob3Jpem9udGFsUnVsZVJlZ2V4ID0gL1xcbigoXFwtezMsfSl8KD17Myx9KSkvZztcbiAgICBjb25zdCB1bm9yZGVyZWRMaXN0UmVnZXggPSAvKFxcblxccyooXFwtfFxcKylcXHMuKikrL2c7XG4gICAgY29uc3Qgb3JkZXJlZExpc3RSZWdleCA9IC8oXFxuXFxzKihbMC05XStcXC4pXFxzLiopKy9nO1xuICAgIGNvbnN0IHBhcmFncmFwaFJlZ2V4ID0gL1xcbisoPyE8cHJlPikoPyE8aCkoPyE8dWw+KSg/ITxibG9ja3F1b3RlKSg/ITxocikoPyFcXHQpKFteXFxuXSspXFxuL2c7XG4gICAgLy8gZnJvbSBtYXJrZWRcbiAgICBjb25zdCB0YWJsZSA9XG4gICAgICAgIC9eXFxzKihbXlxcc10uKlxcfC4qKVxcc3swLDN9KD86XFx8XFxzKik/KDo/LSs6P1xccyooPzpcXHxcXHMqOj8tKzo/XFxzKikqKVxcfD8oPzpcXHMqKCg/Oig/IXxocnxoZWFkaW5nfGJsb2NrcXVvdGV8Y29kZXxmZW5jZXN8bGlzdHxodG1sKS4qKD86fCQpKSopKnwkKS9nO1xuICAgIGNvbnN0IHJlZ2V4cHMgPSBbXG4gICAgICAgIGlubGluZUNvZGVSZWdleCxcbiAgICAgICAgaW1hZ2VSZWdleCxcbiAgICAgICAgbGlua1JlZ2V4LFxuICAgICAgICBoZWFkaW5nUmVnZXgsXG4gICAgICAgIGJvbGRJdGFsaWNzUmVnZXgsXG4gICAgICAgIHN0cmlrZXRocm91Z2hSZWdleCxcbiAgICAgICAgYmxvY2txdW90ZVJlZ2V4LFxuICAgICAgICBob3Jpem9udGFsUnVsZVJlZ2V4LFxuICAgICAgICB1bm9yZGVyZWRMaXN0UmVnZXgsXG4gICAgICAgIG9yZGVyZWRMaXN0UmVnZXgsXG4gICAgICAgIHRhYmxlXG4gICAgXTtcbiAgICByZXR1cm4gcmVnZXhwcy5zb21lKHJlZ2V4cCA9PiByZWdleHAudGVzdChjb250ZW50KSk7XG59O1xuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzZXJpYWxpemUtbWQucGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvZGVzZXJpYWxpemUvZGVzZXJpYWxpemUtbWQucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQVUsT0FBTyxFQUFRLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRTtJQUNsRCxNQUFNLE9BQU8sR0FBRyw4QkFBOEIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7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TSxTQUFTLEdBQUcsMkJBQTJCLENBQUM7SUFDOUMsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO0lBQ3BDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUM7SUFDN0MsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUM1QyxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztJQUMzQyxNQUFNLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDO0lBQ3BELE1BQU0sa0JBQWtCLEdBQUcsc0JBQXNCLENBQUM7SUFDbEQsTUFBTSxnQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQztJQUNuRCxNQUFNLGNBQWMsR0FBRyxtRUFBbUUsQ0FBQztJQUMzRixjQUFjO0lBQ2QsTUFBTSxLQUFLLEdBQ1AsK0lBQStJLENBQUM7SUFDcEosTUFBTSxPQUFPLEdBQUc7UUFDWixlQUFlO1FBQ2YsVUFBVTtRQUNWLFNBQVM7UUFDVCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsbUJBQW1CO1FBQ25CLGtCQUFrQjtRQUNsQixnQkFBZ0I7UUFDaEIsS0FBSztLQUNSLENBQUM7SUFDRixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVpYUNvbnZlcnRlciB9IGZyb20gJ0BhdGluYy9zZWxlbmUnO1xuaW1wb3J0IHsgbWFya2VkIH0gZnJvbSAnbWFya2VkJztcbmltcG9ydCB7IFRoeVBvcG92ZXIgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBOb2RlLCBUZXh0LCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciB9IGZyb20gJ3NsYXRlLWFuZ3VsYXInO1xuaW1wb3J0IHsgVGhlQ29udmVyc2lvbkhpbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJztcbmltcG9ydCB7IENMSVBCT0FSRF9GT1JNQVRfS0VZLCBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVEhFX0VESVRPUl9DT05WRVJTSU9OX0hJTlRfUkVGLCBnZXRUb29sYmFyQ2xhc3MsIHJlY3Vyc2lvbk5vZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgSW1hZ2VFZGl0b3IgfSBmcm9tICcuLi9pbWFnZS9pbWFnZS5lZGl0b3InO1xuXG5leHBvcnQgY29uc3QgY2xvc2VDb252ZXJzaW9uSGludCA9IChlZGl0b3I6IEVkaXRvcikgPT4ge1xuICAgIGNvbnN0IGhpbnRSZWYgPSBUSEVfRURJVE9SX0NPTlZFUlNJT05fSElOVF9SRUYuZ2V0KGVkaXRvcik7XG4gICAgaWYgKGhpbnRSZWYpIHtcbiAgICAgICAgaGludFJlZi5jbG9zZSgpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCB3aXRoRGVzZXJpYWxpemVNZCA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydERhdGEsIG9uS2V5ZG93biB9ID0gZWRpdG9yO1xuXG4gICAgZWRpdG9yLm9uS2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBjbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG4gICAgICAgIG9uS2V5ZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnREYXRhID0gKGRhdGE6IERhdGFUcmFuc2ZlcikgPT4ge1xuICAgICAgICBjb25zdCBwb3BvdmVyID0gZWRpdG9yLmluamVjdG9yLmdldChUaHlQb3BvdmVyKTtcbiAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IGVkaXRvci5pbmplY3Rvci5nZXQoVmlld0NvbnRhaW5lclJlZik7XG4gICAgICAgIGNvbnN0IGNkciA9IGVkaXRvci5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgICAgIGNvbnN0IHBsYWluRnJhZ21lbnQgPSBkYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgICAgICAgY29uc3Qgc2xhdGVGcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICAgICAgY29uc3Qgb2xkUmFuZ2UgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBjbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG5cbiAgICAgICAgaWYgKHBsYWluRnJhZ21lbnQgJiYgaXNNYXJrZG93blN5bnRheChwbGFpbkZyYWdtZW50KSAmJiAhc2xhdGVGcmFnbWVudCkge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheSA9IGVkaXRvci5pbmplY3Rvci5nZXQoT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJDbGFzcyA9IGdldFRvb2xiYXJDbGFzcyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXJFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgLiR7dG9vbGJhckNsYXNzfWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGNvbnN0IG9yaWdpbiA9IHRvb2xiYXJFbGVtZW50ID8gdG9vbGJhckVsZW1lbnQgOiBib2R5RWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSB0b29sYmFyRWxlbWVudCA/ICd0b3AnIDogJ3RvcFJpZ2h0JztcblxuICAgICAgICAgICAgICAgIGNvbnN0IGhpbnRQb3BvdmVyUmVmID0gcG9wb3Zlci5vcGVuKFRoZUNvbnZlcnNpb25IaW50LCB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udmVyc2lvbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGh0bWwgPSBtYXJrZWQocGxhaW5GcmFnbWVudC5yZXBsYWNlKC9cXG5gYGAvZywgJ1xcblxcbmBgYCcpLCB7IGdmbTogdHJ1ZSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaHRtbERvbSA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmcmFnbWVudCA9IFRoZWlhQ29udmVydGVyLmNvbnZlcnRUb1RoZWlhKEFycmF5LmZyb20oaHRtbERvbS5ib2R5LmNoaWxkcmVuKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1VuZm9ybWF0dGVkKGZyYWdtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VDb252ZXJzaW9uSGludChlZGl0b3IpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IudW5kbygpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNlbGVjdChlZGl0b3IsIG9sZFJhbmdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIDY0IOWbvueJh+WkhOeQhlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Vyc2lvbk5vZGVzKGZyYWdtZW50LCAobm9kZTogTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0ltYWdlID0gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMuaW1hZ2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0ltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0Jhc2U2NCA9IEltYWdlRWRpdG9yLmlzQmFzZTY0KG5vZGU/Lm9yaWdpblVybCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNCYXNlNjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZUVkaXRvci5oYW5kbGVCYXNlNjRJbWFnZUVsZW1lbnQoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VFZGl0b3IuaGFuZGxlRXh0ZXJuYWxJbWFnZUVsZW1lbnQoZWRpdG9yLCBub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuaW5zZXJ0RnJhZ21lbnQoZWRpdG9yLCBmcmFnbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5mb2N1cyhlZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZUNvbnZlcnNpb25IaW50KGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAtMTAwLFxuICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgVEhFX0VESVRPUl9DT05WRVJTSU9OX0hJTlRfUkVGLnNldChlZGl0b3IsIGhpbnRQb3BvdmVyUmVmKTtcbiAgICAgICAgICAgICAgICBjZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluc2VydERhdGEoZGF0YSk7XG4gICAgfTtcbiAgICByZXR1cm4gZWRpdG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURlc2VyaWFsaXplTWRQbHVnaW4gPSBjcmVhdGVQbHVnaW5GYWN0b3J5KHtcbiAgICBrZXk6IFBsdWdpbktleXMuZGVzZXJpYWxpemVNZCxcbiAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoRGVzZXJpYWxpemVNZFxufSk7XG5cbmNvbnN0IGlzVW5mb3JtYXR0ZWQgPSAoZWxlbWVudHM6IEVsZW1lbnRbXSkgPT4ge1xuICAgIHJldHVybiBlbGVtZW50cy5ldmVyeShcbiAgICAgICAgZWxlbWVudCA9PlxuICAgICAgICAgICAgZWxlbWVudC50eXBlID09PSBFbGVtZW50S2luZHMuZGVmYXVsdCAmJlxuICAgICAgICAgICAgZWxlbWVudC5jaGlsZHJlbi5ldmVyeSgobm9kZTogTm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBUZXh0LmlzVGV4dChub2RlKSAmJiBPYmplY3Qua2V5cyhub2RlKS5sZW5ndGggPT09IDE7XG4gICAgICAgICAgICB9KVxuICAgICk7XG59O1xuXG5jb25zdCBpc01hcmtkb3duU3ludGF4ID0gY29udGVudCA9PiB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0NoYWxhcmFuZ2Vsby9wYXJzZS1tZC1qcy9ibG9iL21hc3Rlci9wYXJzZW1kLmpzXG4gICAgY29uc3QgY29kZUJsb2NrUmVnZXggPSAvKChcXG5cXHQpKC4qKSkrL2c7XG4gICAgY29uc3QgaW5saW5lQ29kZVJlZ2V4ID0gLyhgKSguKj8pXFwxL2c7XG4gICAgY29uc3QgaW1hZ2VSZWdleCA9IC8hXFxbKFteXFxbXSspXFxdXFwoKFteXFwpXSspXFwpL2c7XG4gICAgY29uc3QgbGlua1JlZ2V4ID0gL1xcWyhbXlxcW10rKVxcXVxcKChbXlxcKV0rKVxcKS9nO1xuICAgIGNvbnN0IGhlYWRpbmdSZWdleCA9IC8oIytcXHMqKSguKikvZztcbiAgICBjb25zdCBib2xkSXRhbGljc1JlZ2V4ID0gLyhcXCp7MSwyfSkoXFxTKylcXDEvZztcbiAgICBjb25zdCBzdHJpa2V0aHJvdWdoUmVnZXggPSAvKFxcflxcfikoLio/KVxcMS9nO1xuICAgIGNvbnN0IGJsb2NrcXVvdGVSZWdleCA9IC9cXG4oJmd0O3xcXD4pKC4qKS9nO1xuICAgIGNvbnN0IGhvcml6b250YWxSdWxlUmVnZXggPSAvXFxuKChcXC17Myx9KXwoPXszLH0pKS9nO1xuICAgIGNvbnN0IHVub3JkZXJlZExpc3RSZWdleCA9IC8oXFxuXFxzKihcXC18XFwrKVxccy4qKSsvZztcbiAgICBjb25zdCBvcmRlcmVkTGlzdFJlZ2V4ID0gLyhcXG5cXHMqKFswLTldK1xcLilcXHMuKikrL2c7XG4gICAgY29uc3QgcGFyYWdyYXBoUmVnZXggPSAvXFxuKyg/ITxwcmU+KSg/ITxoKSg/ITx1bD4pKD8hPGJsb2NrcXVvdGUpKD8hPGhyKSg/IVxcdCkoW15cXG5dKylcXG4vZztcbiAgICAvLyBmcm9tIG1hcmtlZFxuICAgIGNvbnN0IHRhYmxlID1cbiAgICAgICAgL15cXHMqKFteXFxzXS4qXFx8LiopXFxzezAsM30oPzpcXHxcXHMqKT8oOj8tKzo/XFxzKig/OlxcfFxccyo6Py0rOj9cXHMqKSopXFx8Pyg/OlxccyooKD86KD8hfGhyfGhlYWRpbmd8YmxvY2txdW90ZXxjb2RlfGZlbmNlc3xsaXN0fGh0bWwpLiooPzp8JCkpKikqfCQpL2c7XG4gICAgY29uc3QgcmVnZXhwcyA9IFtcbiAgICAgICAgaW5saW5lQ29kZVJlZ2V4LFxuICAgICAgICBpbWFnZVJlZ2V4LFxuICAgICAgICBsaW5rUmVnZXgsXG4gICAgICAgIGhlYWRpbmdSZWdleCxcbiAgICAgICAgYm9sZEl0YWxpY3NSZWdleCxcbiAgICAgICAgc3RyaWtldGhyb3VnaFJlZ2V4LFxuICAgICAgICBibG9ja3F1b3RlUmVnZXgsXG4gICAgICAgIGhvcml6b250YWxSdWxlUmVnZXgsXG4gICAgICAgIHVub3JkZXJlZExpc3RSZWdleCxcbiAgICAgICAgb3JkZXJlZExpc3RSZWdleCxcbiAgICAgICAgdGFibGVcbiAgICBdO1xuICAgIHJldHVybiByZWdleHBzLnNvbWUocmVnZXhwID0+IHJlZ2V4cC50ZXN0KGNvbnRlbnQpKTtcbn07XG4iXX0=