single-scripture-rcl 3.3.1 → 3.3.2-beta

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.
@@ -24,8 +24,11 @@ import * as React from 'react';
24
24
  import useDeepCompareEffect from 'use-deep-compare-effect';
25
25
  import { VerseObjects } from 'scripture-resources-rcl';
26
26
  import { UsfmFileConversionHelpers } from 'word-aligner-rcl';
27
- import { ScriptureReference, VerseObjectsType } from '../../types';
27
+ import { RxLink2, RxLinkBreak2 } from 'react-icons/rx';
28
+ import { IconButton } from '@mui/material';
29
+ import { ScriptureReference } from '../../types';
28
30
  import { getResourceMessage } from '../../utils';
31
+ import { ScriptureALignmentEditProps, useScriptureAlignmentEdit } from "../../hooks/useScriptureAlignmentEdit";
29
32
  import { Container, Content } from './styled';
30
33
  var MessageStyle = {
31
34
  direction: 'ltr',
@@ -48,11 +51,13 @@ var TextAreaStyle = {
48
51
  };
49
52
 
50
53
  function ScripturePane(_ref) {
54
+ var _scriptureAlignmentEd3;
55
+
51
56
  var reference = _ref.reference,
52
57
  refStyle = _ref.refStyle,
53
58
  direction = _ref.direction,
59
+ currentIndex = _ref.currentIndex,
54
60
  contentStyle = _ref.contentStyle,
55
- verseObjects = _ref.verseObjects,
56
61
  disableWordPopover = _ref.disableWordPopover,
57
62
  resourceStatus = _ref.resourceStatus,
58
63
  resourceLink = _ref.resourceLink,
@@ -61,16 +66,34 @@ function ScripturePane(_ref) {
61
66
  fontSize = _ref.fontSize,
62
67
  getLexiconData = _ref.getLexiconData,
63
68
  translate = _ref.translate,
64
- editing = _ref.editing,
65
- setEditing = _ref.setEditing,
66
- setVerseChanged = _ref.setVerseChanged;
67
-
68
- var _React$useState = React.useState(null),
69
+ saving = _ref.saving,
70
+ scriptureAlignmentEditConfig = _ref.scriptureAlignmentEditConfig,
71
+ setSavedChanges = _ref.setSavedChanges,
72
+ setWordAlignerStatus = _ref.setWordAlignerStatus;
73
+
74
+ var _React$useState = React.useState({
75
+ urlError: null,
76
+ doingAlignment: false
77
+ }),
69
78
  _React$useState2 = _slicedToArray(_React$useState, 2),
70
- initialVerseText = _React$useState2[0],
71
- setInitialVerseText = _React$useState2[1];
79
+ state = _React$useState2[0],
80
+ setState_ = _React$useState2[1];
81
+
82
+ var urlError = state.urlError,
83
+ doingAlignment = state.doingAlignment;
84
+
85
+ function setState(newState) {
86
+ setState_(function (prevState) {
87
+ return _objectSpread(_objectSpread({}, prevState), newState);
88
+ });
89
+ }
72
90
 
73
- var resourceMsg = getResourceMessage(resourceStatus, server, resourceLink, isNT);
91
+ var _React$useState3 = React.useState(null),
92
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
93
+ initialVerseText = _React$useState4[0],
94
+ setInitialVerseText = _React$useState4[1];
95
+
96
+ var resourceMsg = saving ? 'Saving Changes...' : getResourceMessage(resourceStatus, server, resourceLink, isNT);
74
97
  var chapter = reference.chapter,
75
98
  verse = reference.verse;
76
99
  direction = direction || 'ltr';
@@ -81,7 +104,39 @@ function ScripturePane(_ref) {
81
104
  contentStyle = contentStyle || {
82
105
  fontFamily: 'Noto Sans',
83
106
  fontSize: '100%'
84
- }; // dynamically adjust font size
107
+ };
108
+
109
+ var _scriptureAlignmentEditConfig = _objectSpread(_objectSpread({}, scriptureAlignmentEditConfig), {}, {
110
+ initialVerseText: initialVerseText
111
+ });
112
+
113
+ var _scriptureAlignmentEdit = useScriptureAlignmentEdit(_scriptureAlignmentEditConfig);
114
+
115
+ var _scriptureAlignmentEd = _scriptureAlignmentEdit.actions,
116
+ handleAlignmentClick = _scriptureAlignmentEd.handleAlignmentClick,
117
+ setEditing = _scriptureAlignmentEd.setEditing,
118
+ setVerseChanged = _scriptureAlignmentEd.setVerseChanged,
119
+ _scriptureAlignmentEd2 = _scriptureAlignmentEdit.state,
120
+ aligned = _scriptureAlignmentEd2.aligned,
121
+ alignerData = _scriptureAlignmentEd2.alignerData,
122
+ currentVerseObjects = _scriptureAlignmentEd2.currentVerseObjects,
123
+ initialVerseObjects = _scriptureAlignmentEd2.initialVerseObjects,
124
+ editing = _scriptureAlignmentEd2.editing,
125
+ unsavedChanges = _scriptureAlignmentEd2.unsavedChanges,
126
+ newVerseText = _scriptureAlignmentEd2.newVerseText;
127
+ React.useEffect(function () {
128
+ if (alignerData && !doingAlignment) {
129
+ setWordAlignerStatus && setWordAlignerStatus(_scriptureAlignmentEdit);
130
+ setState({
131
+ doingAlignment: true
132
+ });
133
+ } else if (doingAlignment) {
134
+ setWordAlignerStatus && setWordAlignerStatus(_scriptureAlignmentEdit);
135
+ setState({
136
+ doingAlignment: false
137
+ });
138
+ }
139
+ }, [_scriptureAlignmentEdit === null || _scriptureAlignmentEdit === void 0 ? void 0 : (_scriptureAlignmentEd3 = _scriptureAlignmentEdit.state) === null || _scriptureAlignmentEd3 === void 0 ? void 0 : _scriptureAlignmentEd3.alignerData]); // dynamically adjust font size
85
140
 
86
141
  var calculatedFontSize = React.useMemo(function () {
87
142
  return parseFloat(TextAreaStyle.fontSize) * fontSize / 100 + 'px';
@@ -93,11 +148,12 @@ function ScripturePane(_ref) {
93
148
 
94
149
  useDeepCompareEffect(function () {
95
150
  var verseText = UsfmFileConversionHelpers.getUsfmForVerseContent({
96
- verseObjects: verseObjects
151
+ verseObjects: initialVerseObjects
97
152
  });
98
153
  setInitialVerseText(verseText);
99
154
  }, [{
100
- verseObjects: verseObjects
155
+ reference: reference,
156
+ initialVerseObjects: initialVerseObjects
101
157
  }]);
102
158
 
103
159
  function onTextChange(event) {
@@ -112,6 +168,8 @@ function ScripturePane(_ref) {
112
168
  setEditing(false);
113
169
  }
114
170
 
171
+ var checkingState = aligned ? 'valid' : 'invalid';
172
+ var titleText = checkingState === 'valid' ? 'Alignment is Valid' : 'Alignment is Invalid';
115
173
  return /*#__PURE__*/React.createElement(Container, {
116
174
  style: {
117
175
  direction: direction,
@@ -135,17 +193,33 @@ function ScripturePane(_ref) {
135
193
  setEditing && setEditing(true);
136
194
  }
137
195
  }, editing ? /*#__PURE__*/React.createElement("textarea", {
138
- defaultValue: initialVerseText,
196
+ defaultValue: newVerseText || initialVerseText,
139
197
  onChange: onTextChange,
140
198
  onBlur: onBlur,
141
199
  style: textAreaStyle,
142
200
  autoFocus: true
143
201
  }) : /*#__PURE__*/React.createElement(VerseObjects, {
144
202
  verseKey: "".concat(reference.chapter, ":").concat(reference.verse),
145
- verseObjects: verseObjects || [],
203
+ verseObjects: currentVerseObjects || [],
146
204
  disableWordPopover: disableWordPopover,
147
205
  getLexiconData: getLexiconData,
148
206
  translate: translate
207
+ })), setWordAlignerStatus && /*#__PURE__*/React.createElement(IconButton, {
208
+ key: "checking-button",
209
+ onClick: function onClick() {
210
+ return handleAlignmentClick();
211
+ },
212
+ title: titleText,
213
+ "aria-label": titleText,
214
+ style: {
215
+ cursor: 'pointer'
216
+ }
217
+ }, checkingState === 'valid' ? /*#__PURE__*/React.createElement(RxLink2, {
218
+ id: "valid_icon",
219
+ color: "#BBB"
220
+ }) : /*#__PURE__*/React.createElement(RxLinkBreak2, {
221
+ id: "invalid_icon",
222
+ color: "#000"
149
223
  }))));
150
224
  }
151
225
 
@@ -153,4 +227,4 @@ ScripturePane.defaultProps = {
153
227
  verseObjects: []
154
228
  };
155
229
  export default ScripturePane;
156
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJWZXJzZU9iamVjdHNUeXBlIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiQ29udGFpbmVyIiwiQ29udGVudCIsIk1lc3NhZ2VTdHlsZSIsImRpcmVjdGlvbiIsIndoaXRlU3BhY2UiLCJsaW5lSGVpZ2h0IiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImhlaWdodCIsIndpZHRoIiwiZm9udFNpemUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsIlRleHRBcmVhU3R5bGUiLCJtaW5XaWR0aCIsIlNjcmlwdHVyZVBhbmUiLCJyZWZlcmVuY2UiLCJyZWZTdHlsZSIsImNvbnRlbnRTdHlsZSIsInZlcnNlT2JqZWN0cyIsImRpc2FibGVXb3JkUG9wb3ZlciIsInJlc291cmNlU3RhdHVzIiwicmVzb3VyY2VMaW5rIiwic2VydmVyIiwiaXNOVCIsImdldExleGljb25EYXRhIiwidHJhbnNsYXRlIiwiZWRpdGluZyIsInNldEVkaXRpbmciLCJzZXRWZXJzZUNoYW5nZWQiLCJ1c2VTdGF0ZSIsImluaXRpYWxWZXJzZVRleHQiLCJzZXRJbml0aWFsVmVyc2VUZXh0IiwicmVzb3VyY2VNc2ciLCJjaGFwdGVyIiwidmVyc2UiLCJjYWxjdWxhdGVkRm9udFNpemUiLCJ1c2VNZW1vIiwicGFyc2VGbG9hdCIsInRleHRBcmVhU3R5bGUiLCJ2ZXJzZVRleHQiLCJnZXRVc2ZtRm9yVmVyc2VDb250ZW50Iiwib25UZXh0Q2hhbmdlIiwiZXZlbnQiLCJuZXdUZXh0IiwidGFyZ2V0IiwidmFsdWUiLCJjaGFuZ2VkIiwib25CbHVyIiwicGFkZGluZ0JvdHRvbSIsImRl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LElBQUEsS0FBSyxFQUFFO0FBQUVTLE1BQUFBLFFBQVEsWUFBS0EsUUFBTDtBQUFWO0FBQVosVUFBNEN1QixXQUE1QyxNQURGLENBRlUsZ0JBTVYsb0JBQUMsT0FBRCxxQkFDRTtBQUFNLElBQUEsS0FBSyxFQUFFaEI7QUFBYixVQUF5QmlCLE9BQXpCLE9BQW1DQyxLQUFuQyxTQURGLGVBRUU7QUFBTSxJQUFBLEtBQUssRUFBRWpCLFlBQWI7QUFBMkIsSUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDeENVLE1BQUFBLFVBQVUsSUFBSUEsVUFBVSxDQUFDLElBQUQsQ0FBeEI7QUFDRDtBQUZELEtBSUdELE9BQU8sZ0JBQ047QUFDRSxJQUFBLFlBQVksRUFBRUksZ0JBRGhCO0FBRUUsSUFBQSxRQUFRLEVBQUVXLFlBRlo7QUFHRSxJQUFBLE1BQU0sRUFBRU0sTUFIVjtBQUlFLElBQUEsS0FBSyxFQUFFVCxhQUpUO0FBS0UsSUFBQSxTQUFTO0FBTFgsSUFETSxnQkFTTixvQkFBQyxZQUFEO0FBQ0UsSUFBQSxRQUFRLFlBQUt2QixTQUFTLENBQUNrQixPQUFmLGNBQTBCbEIsU0FBUyxDQUFDbUIsS0FBcEMsQ0FEVjtBQUVFLElBQUEsWUFBWSxFQUFFaEIsWUFBWSxJQUFJLEVBRmhDO0FBR0UsSUFBQSxrQkFBa0IsRUFBRUMsa0JBSHRCO0FBSUUsSUFBQSxjQUFjLEVBQUVLLGNBSmxCO0FBS0UsSUFBQSxTQUFTLEVBQUVDO0FBTGIsSUFiSixDQUZGLENBUEosQ0FERjtBQW9DRDs7QUFFRFgsYUFBYSxDQUFDbUMsWUFBZCxHQUE2QjtBQUFFL0IsRUFBQUEsWUFBWSxFQUFFO0FBQWhCLENBQTdCO0FBRUEsZUFBZUosYUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHVzZURlZXBDb21wYXJlRWZmZWN0IGZyb20gJ3VzZS1kZWVwLWNvbXBhcmUtZWZmZWN0J1xuaW1wb3J0IHsgVmVyc2VPYmplY3RzIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgeyBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IFNjcmlwdHVyZVJlZmVyZW5jZSwgVmVyc2VPYmplY3RzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNZXNzYWdlIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBDb250YWluZXIsIENvbnRlbnQgfSBmcm9tICcuL3N0eWxlZCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIGN1cnJlbnQgcmVmZXJlbmNlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIG9wdGlvbmFsIHN0eWxlcyB0byB1c2UgZm9yIHJlZmVyZW5jZSAqKi9cbiAgcmVmU3R5bGU6IGFueTtcbiAgLyoqIG9wdGlvbmFsIHN0eWxlcyB0byB1c2UgZm9yIGNvbnRlbnQgKiovXG4gIGNvbnRlbnRTdHlsZTogYW55O1xuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uIHRvIHVzZSAqKi9cbiAgZGlyZWN0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdmVyc2VPYmplY3RzICoqL1xuICB2ZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGV8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNwbGF5IGxleGljb24gcG9wb3ZlciBvbiBob3ZlciAqKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBib29sZWFufHVuZGVmaW5lZDtcbiAgLyoqIG9iamVjdCB0aGF0IGNvbnRhaW5zIHJlc291cmNlIGxvYWRpbmcgc3RhdHVzIG9yIGZldGNoaW5nIGVycm9ycyAqL1xuICByZXNvdXJjZVN0YXR1czogb2JqZWN0fHVuZGVmaW5lZDtcbiAgLyoqIHJlc291cmNlIHRoYXQgd2FzIGxvYWRlZCAqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBzZXJ2ZXIgKi9cbiAgc2VydmVyOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBicm93c2luZyBOVCAqL1xuICBpc05UOiBib29sZWFuO1xuICAvKiogZm9udCBzaXplIGZvciBtZXNzYWdlcyAqL1xuICBmb250U2l6ZTogbnVtYmVyO1xuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IEZ1bmN0aW9uO1xuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IEZ1bmN0aW9uO1xuICAvKiogdHJ1ZSBpZiBpbiBlZGl0IG1vZGUgKi9cbiAgZWRpdGluZzogYm9vbGVhbjtcbiAgLyoqIGNhbGxiYWNrIHRvIHNldCBlZGl0IG1vZGUgKi9cbiAgc2V0RWRpdGluZzogRnVuY3Rpb247XG4gIC8qKiBjYWxsYmFjayB0byBzZXQgdGhhdCB2ZXJzZSBoYXMgY2hhbmdlZCAqL1xuICBzZXRWZXJzZUNoYW5nZWQ6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgZm9udFNpemU6ICcxNnB4Jyxcbn1cblxuZnVuY3Rpb24gU2NyaXB0dXJlUGFuZSh7XG4gIHJlZmVyZW5jZSxcbiAgcmVmU3R5bGUsXG4gIGRpcmVjdGlvbixcbiAgY29udGVudFN0eWxlLFxuICB2ZXJzZU9iamVjdHMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgcmVzb3VyY2VTdGF0dXMsXG4gIHJlc291cmNlTGluayxcbiAgc2VydmVyLFxuICBpc05ULFxuICBmb250U2l6ZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIHRyYW5zbGF0ZSxcbiAgZWRpdGluZyxcbiAgc2V0RWRpdGluZyxcbiAgc2V0VmVyc2VDaGFuZ2VkLFxufSA6IFByb3BzKSB7XG4gIGNvbnN0IFtpbml0aWFsVmVyc2VUZXh0LCBzZXRJbml0aWFsVmVyc2VUZXh0XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXG4gIGNvbnN0IHJlc291cmNlTXNnID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gcmVmZXJlbmNlXG4gIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAnbHRyJ1xuXG4gIHJlZlN0eWxlID0gcmVmU3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnOTAlJyxcbiAgfVxuXG4gIGNvbnRlbnRTdHlsZSA9IGNvbnRlbnRTdHlsZSB8fCB7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6ICcxMDAlJyxcbiAgfVxuXG4gIC8vIGR5bmFtaWNhbGx5IGFkanVzdCBmb250IHNpemVcbiAgY29uc3QgY2FsY3VsYXRlZEZvbnRTaXplID0gUmVhY3QudXNlTWVtbygoKSA9PiAoXG4gICAgcGFyc2VGbG9hdChUZXh0QXJlYVN0eWxlLmZvbnRTaXplKSAqIGZvbnRTaXplIC8gMTAwICsgJ3B4J1xuICApLCBbZm9udFNpemVdKVxuXG4gIGNvbnN0IHRleHRBcmVhU3R5bGUgPSB7XG4gICAgLi4uY29udGVudFN0eWxlLFxuICAgIC4uLlRleHRBcmVhU3R5bGUsXG4gICAgZm9udFNpemU6IGNhbGN1bGF0ZWRGb250U2l6ZSxcbiAgfVxuXG4gIHVzZURlZXBDb21wYXJlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB2ZXJzZVRleHQgPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQoeyB2ZXJzZU9iamVjdHMgfSlcbiAgICBzZXRJbml0aWFsVmVyc2VUZXh0KHZlcnNlVGV4dClcbiAgfSwgW3sgdmVyc2VPYmplY3RzIH1dKVxuXG4gIGZ1bmN0aW9uIG9uVGV4dENoYW5nZShldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcbiAgICBjb25zdCBuZXdUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWVcbiAgICBjb25zdCBjaGFuZ2VkID0gbmV3VGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuICAgIHNldFZlcnNlQ2hhbmdlZChjaGFuZ2VkLCBuZXdUZXh0LCBpbml0aWFsVmVyc2VUZXh0KVxuICB9XG5cbiAgZnVuY3Rpb24gb25CbHVyKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pikge1xuICAgIHNldEVkaXRpbmcoZmFsc2UpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgc3R5bGU9e3sgZGlyZWN0aW9uLCB3aWR0aDogJzEwMCUnLCBwYWRkaW5nQm90dG9tOiAnMC41ZW0nfX0+XG4gICAgICB7cmVzb3VyY2VNc2cgP1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIDxkaXYgc3R5bGU9e01lc3NhZ2VTdHlsZX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogYCR7Zm9udFNpemV9JWAgfX0+IHtyZXNvdXJjZU1zZ30gPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA6XG4gICAgICAgIDxDb250ZW50PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtyZWZTdHlsZX0+IHtjaGFwdGVyfTp7dmVyc2V9Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtjb250ZW50U3R5bGV9IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEVkaXRpbmcgJiYgc2V0RWRpdGluZyh0cnVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2VkaXRpbmcgP1xuICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2luaXRpYWxWZXJzZVRleHR9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uVGV4dENoYW5nZX1cbiAgICAgICAgICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgICAgICAgICBzdHlsZT17dGV4dEFyZWFTdHlsZX1cbiAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICA8VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgdmVyc2VLZXk9e2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gfVxuICAgICAgICAgICAgICAgIHZlcnNlT2JqZWN0cz17dmVyc2VPYmplY3RzIHx8IFtdfVxuICAgICAgICAgICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyfVxuICAgICAgICAgICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvQ29udGVudD5cbiAgICAgIH1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVQYW5lLmRlZmF1bHRQcm9wcyA9IHsgdmVyc2VPYmplY3RzOiBbXSB9XG5cbmV4cG9ydCBkZWZhdWx0IFNjcmlwdHVyZVBhbmVcbiJdfQ==
230
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJSeExpbmsyIiwiUnhMaW5rQnJlYWsyIiwiSWNvbkJ1dHRvbiIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsImdldFJlc291cmNlTWVzc2FnZSIsIlNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyIsInVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQiLCJDb250YWluZXIiLCJDb250ZW50IiwiTWVzc2FnZVN0eWxlIiwiZGlyZWN0aW9uIiwid2hpdGVTcGFjZSIsImxpbmVIZWlnaHQiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwiaGVpZ2h0Iiwid2lkdGgiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwiVGV4dEFyZWFTdHlsZSIsIm1pbldpZHRoIiwiU2NyaXB0dXJlUGFuZSIsInJlZmVyZW5jZSIsInJlZlN0eWxlIiwiY3VycmVudEluZGV4IiwiY29udGVudFN0eWxlIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwicmVzb3VyY2VTdGF0dXMiLCJyZXNvdXJjZUxpbmsiLCJzZXJ2ZXIiLCJpc05UIiwiZ2V0TGV4aWNvbkRhdGEiLCJ0cmFuc2xhdGUiLCJzYXZpbmciLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ1c2VTdGF0ZSIsInVybEVycm9yIiwiZG9pbmdBbGlnbm1lbnQiLCJzdGF0ZSIsInNldFN0YXRlXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJpbml0aWFsVmVyc2VUZXh0Iiwic2V0SW5pdGlhbFZlcnNlVGV4dCIsInJlc291cmNlTXNnIiwiY2hhcHRlciIsInZlcnNlIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsImFjdGlvbnMiLCJoYW5kbGVBbGlnbm1lbnRDbGljayIsInNldEVkaXRpbmciLCJzZXRWZXJzZUNoYW5nZWQiLCJhbGlnbmVkIiwiYWxpZ25lckRhdGEiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsImVkaXRpbmciLCJ1bnNhdmVkQ2hhbmdlcyIsIm5ld1ZlcnNlVGV4dCIsInVzZUVmZmVjdCIsImNhbGN1bGF0ZWRGb250U2l6ZSIsInVzZU1lbW8iLCJwYXJzZUZsb2F0IiwidGV4dEFyZWFTdHlsZSIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJ2ZXJzZU9iamVjdHMiLCJvblRleHRDaGFuZ2UiLCJldmVudCIsIm5ld1RleHQiLCJ0YXJnZXQiLCJ2YWx1ZSIsImNoYW5nZWQiLCJvbkJsdXIiLCJjaGVja2luZ1N0YXRlIiwidGl0bGVUZXh0IiwicGFkZGluZ0JvdHRvbSIsImN1cnNvciIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFlBQVQsUUFBNkIseUJBQTdCO0FBQ0EsU0FBU0MseUJBQVQsUUFBMEMsa0JBQTFDO0FBQ0EsU0FBU0MsT0FBVCxFQUFrQkMsWUFBbEIsUUFBc0MsZ0JBQXRDO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixlQUEzQjtBQUNBLFNBQVNDLGtCQUFULFFBQW1DLGFBQW5DO0FBQ0EsU0FBU0Msa0JBQVQsUUFBbUMsYUFBbkM7QUFDQSxTQUFTQywyQkFBVCxFQUFzQ0MseUJBQXRDLFFBQXVFLHVDQUF2RTtBQUNBLFNBQVNDLFNBQVQsRUFBb0JDLE9BQXBCLFFBQW1DLFVBQW5DO0FBdUNBLElBQU1DLFlBQVksR0FBRztB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RWhDLGtCQUh0QjtBQUlFLElBQUEsY0FBYyxFQUFFSyxjQUpsQjtBQUtFLElBQUEsU0FBUyxFQUFFQztBQUxiLElBYkosQ0FGRixFQXdCR0ksb0JBQW9CLGlCQUNuQixvQkFBQyxVQUFEO0FBQ0UsSUFBQSxHQUFHLEVBQUMsaUJBRE47QUFFRSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQU1pQixvQkFBb0IsRUFBMUI7QUFBQSxLQUZYO0FBR0UsSUFBQSxLQUFLLEVBQUUwQixTQUhUO0FBSUUsa0JBQVlBLFNBSmQ7QUFLRSxJQUFBLEtBQUssRUFBRTtBQUFFRSxNQUFBQSxNQUFNLEVBQUU7QUFBVjtBQUxULEtBT0dILGFBQWEsS0FBSyxPQUFsQixnQkFDQyxvQkFBQyxPQUFEO0FBQVMsSUFBQSxFQUFFLEVBQUMsWUFBWjtBQUF5QixJQUFBLEtBQUssRUFBQztBQUEvQixJQURELGdCQUdDLG9CQUFDLFlBQUQ7QUFBYyxJQUFBLEVBQUUsRUFBQyxjQUFqQjtBQUFnQyxJQUFBLEtBQUssRUFBQztBQUF0QyxJQVZKLENBekJKLENBUEosQ0FERjtBQW1ERDs7QUFFRHpELGFBQWEsQ0FBQzZELFlBQWQsR0FBNkI7QUFBRVosRUFBQUEsWUFBWSxFQUFFO0FBQWhCLENBQTdCO0FBRUEsZUFBZWpELGFBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCdcbmltcG9ydCB7IFZlcnNlT2JqZWN0cyB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHsgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgeyBSeExpbmsyLCBSeExpbmtCcmVhazIgfSBmcm9tICdyZWFjdC1pY29ucy9yeCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcywgdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIENvbnRlbnQgfSBmcm9tICcuL3N0eWxlZCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIG9wdGlvbmFsIHN0eWxlcyB0byB1c2UgZm9yIGNvbnRlbnQgKiovXG4gIGNvbnRlbnRTdHlsZTogYW55O1xuICAvLyBpbmRleCBudW1iZXIgZm9yIHRoaXMgc2NyaXB0dXJlIHBhbmVcbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIC8qKiBsYW5ndWFnZSBkaXJlY3Rpb24gdG8gdXNlICoqL1xuICBkaXJlY3Rpb246IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBpZiB0cnVlIHRoZW4gZG8gbm90IGRpc3BsYXkgbGV4aWNvbiBwb3BvdmVyIG9uIGhvdmVyICoqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IGJvb2xlYW58dW5kZWZpbmVkO1xuICAvKiogZm9udCBzaXplIGZvciBtZXNzYWdlcyAqL1xuICBmb250U2l6ZTogbnVtYmVyO1xuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IEZ1bmN0aW9uO1xuICAvKiogdHJ1ZSBpZiBicm93c2luZyBOVCAqL1xuICBpc05UOiBib29sZWFuO1xuICAvKiogY3VycmVudCByZWZlcmVuY2UgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlO1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgcmVmZXJlbmNlICoqL1xuICByZWZTdHlsZTogYW55O1xuICAvKiogb2JqZWN0IHRoYXQgY29udGFpbnMgcmVzb3VyY2UgbG9hZGluZyBzdGF0dXMgb3IgZmV0Y2hpbmcgZXJyb3JzICovXG4gIHJlc291cmNlU3RhdHVzOiBvYmplY3R8dW5kZWZpbmVkO1xuICAvKiogcmVzb3VyY2UgdGhhdCB3YXMgbG9hZGVkICovXG4gIHJlc291cmNlTGluazogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIHRydWUgaWYgY3VycmVudGx5IHNhdmluZyB1cGRhdGVkIHRleHQgYW5kIGFsaWdubWVudHMgKi9cbiAgc2F2aW5nOiBib29sZWFuO1xuICAvLyBpbml0aWFsaXphdGlvbiBmb3IgdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnOiBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMsXG4gIC8qKiBzZXJ2ZXIgKi9cbiAgc2VydmVyOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogY2FsbGJhY2sgdG8gZmxhZyB1bnNhdmVkIHN0YXR1cyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IEZ1bmN0aW9uO1xuICAvLyBjYWxsYmFjayBmb3IgY2hhbmdlIGluIHdvcmQgYWxpZ25tZW50IHN0YXR1c1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogRnVuY3Rpb247XG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogRnVuY3Rpb247XG59XG5cbmNvbnN0IE1lc3NhZ2VTdHlsZSA9IHtcbiAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgd2hpdGVTcGFjZTogJ3ByZS13cmFwJyxcbiAgbGluZUhlaWdodDogJ25vcm1hbCcsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIHdpZHRoOiAnMTAwJScsXG4gIGZvbnRTaXplOiAnMTZweCcsXG4gIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICBmb250V2VpZ2h0OiAnYm9sZCcsXG59XG5cbmNvbnN0IFRleHRBcmVhU3R5bGUgPSB7XG4gIGhlaWdodDogJzYwJScsXG4gIHdpZHRoOiAnMTAwJScsXG4gIG1pbldpZHRoOiAnMjIwcHgnLFxuICBmb250U2l6ZTogJzE2cHgnLFxufVxuXG5mdW5jdGlvbiBTY3JpcHR1cmVQYW5lKHtcbiAgcmVmZXJlbmNlLFxuICByZWZTdHlsZSxcbiAgZGlyZWN0aW9uLFxuICBjdXJyZW50SW5kZXgsXG4gIGNvbnRlbnRTdHlsZSxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICByZXNvdXJjZVN0YXR1cyxcbiAgcmVzb3VyY2VMaW5rLFxuICBzZXJ2ZXIsXG4gIGlzTlQsXG4gIGZvbnRTaXplLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgdHJhbnNsYXRlLFxuICBzYXZpbmcsXG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIHVybEVycm9yOiBudWxsLFxuICAgIGRvaW5nQWxpZ25tZW50OiBmYWxzZSxcbiAgfSlcbiAgY29uc3Qge1xuICAgIHVybEVycm9yLFxuICAgIGRvaW5nQWxpZ25tZW50LFxuICB9ID0gc3RhdGVcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGNvbnN0IFtpbml0aWFsVmVyc2VUZXh0LCBzZXRJbml0aWFsVmVyc2VUZXh0XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXG4gIGNvbnN0IHJlc291cmNlTXNnID0gc2F2aW5nID8gJ1NhdmluZyBDaGFuZ2VzLi4uJyA6IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlQpXG4gIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IHJlZmVyZW5jZVxuICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgJ2x0cidcblxuICByZWZTdHlsZSA9IHJlZlN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzkwJScsXG4gIH1cblxuICBjb250ZW50U3R5bGUgPSBjb250ZW50U3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTAwJScsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgIGluaXRpYWxWZXJzZVRleHQsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdCA9IHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcpXG4gIGNvbnN0IHtcbiAgICBhY3Rpb25zOiB7XG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIHNldEVkaXRpbmcsXG4gICAgICBzZXRWZXJzZUNoYW5nZWQsXG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgYWxpZ25lZCxcbiAgICAgIGFsaWduZXJEYXRhLFxuICAgICAgY3VycmVudFZlcnNlT2JqZWN0cyxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgdW5zYXZlZENoYW5nZXMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgfSxcbiAgfSA9IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKGRvaW5nQWxpZ25tZW50KSB7XG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlIH0pXG4gICAgfVxuICB9LCBbX3NjcmlwdHVyZUFsaWdubWVudEVkaXQ/LnN0YXRlPy5hbGlnbmVyRGF0YV0pXG5cbiAgLy8gZHluYW1pY2FsbHkgYWRqdXN0IGZvbnQgc2l6ZVxuICBjb25zdCBjYWxjdWxhdGVkRm9udFNpemUgPSBSZWFjdC51c2VNZW1vKCgpID0+IChcbiAgICBwYXJzZUZsb2F0KFRleHRBcmVhU3R5bGUuZm9udFNpemUpICogZm9udFNpemUgLyAxMDAgKyAncHgnXG4gICksIFtmb250U2l6ZV0pXG5cbiAgY29uc3QgdGV4dEFyZWFTdHlsZSA9IHtcbiAgICAuLi5jb250ZW50U3R5bGUsXG4gICAgLi4uVGV4dEFyZWFTdHlsZSxcbiAgICBmb250U2l6ZTogY2FsY3VsYXRlZEZvbnRTaXplLFxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogaW5pdGlhbFZlcnNlT2JqZWN0cyB9KVxuICAgIHNldEluaXRpYWxWZXJzZVRleHQodmVyc2VUZXh0KVxuICB9LCBbeyByZWZlcmVuY2UsIGluaXRpYWxWZXJzZU9iamVjdHMgfV0pXG5cbiAgZnVuY3Rpb24gb25UZXh0Q2hhbmdlKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pikge1xuICAgIGNvbnN0IG5ld1RleHQgPSBldmVudD8udGFyZ2V0Py52YWx1ZVxuICAgIGNvbnN0IGNoYW5nZWQgPSBuZXdUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQsIG5ld1RleHQsIGluaXRpYWxWZXJzZVRleHQpXG4gIH1cblxuICBmdW5jdGlvbiBvbkJsdXIoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgc2V0RWRpdGluZyhmYWxzZSlcbiAgfVxuXG4gIGNvbnN0IGNoZWNraW5nU3RhdGUgPSBhbGlnbmVkID8gJ3ZhbGlkJyA6ICdpbnZhbGlkJ1xuICBjb25zdCB0aXRsZVRleHQgPSBjaGVja2luZ1N0YXRlID09PSAndmFsaWQnID8gJ0FsaWdubWVudCBpcyBWYWxpZCcgOiAnQWxpZ25tZW50IGlzIEludmFsaWQnXG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIHN0eWxlPXt7IGRpcmVjdGlvbiwgd2lkdGg6ICcxMDAlJywgcGFkZGluZ0JvdHRvbTogJzAuNWVtJ319PlxuICAgICAge3Jlc291cmNlTXNnID9cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICA8ZGl2IHN0eWxlPXtNZXNzYWdlU3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IGAke2ZvbnRTaXplfSVgIH19PiB7cmVzb3VyY2VNc2d9IDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgOlxuICAgICAgICA8Q29udGVudD5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17cmVmU3R5bGV9PiB7Y2hhcHRlcn06e3ZlcnNlfSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17Y29udGVudFN0eWxlfSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRFZGl0aW5nICYmIHNldEVkaXRpbmcodHJ1ZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtlZGl0aW5nID9cbiAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtuZXdWZXJzZVRleHQgfHwgaW5pdGlhbFZlcnNlVGV4dH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25UZXh0Q2hhbmdlfVxuICAgICAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt0ZXh0QXJlYVN0eWxlfVxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgIDxWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICB2ZXJzZUtleT17YCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWB9XG4gICAgICAgICAgICAgICAgdmVyc2VPYmplY3RzPXtjdXJyZW50VmVyc2VPYmplY3RzIHx8IFtdfVxuICAgICAgICAgICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyfVxuICAgICAgICAgICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAge3NldFdvcmRBbGlnbmVyU3RhdHVzICYmXG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQWxpZ25tZW50Q2xpY2soKX1cbiAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlVGV4dH1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dGl0bGVUZXh0fVxuICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7Y2hlY2tpbmdTdGF0ZSA9PT0gJ3ZhbGlkJyA/IChcbiAgICAgICAgICAgICAgICA8UnhMaW5rMiBpZD0ndmFsaWRfaWNvbicgY29sb3I9JyNCQkInIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFJ4TGlua0JyZWFrMiBpZD0naW52YWxpZF9pY29uJyBjb2xvcj0nIzAwMCcgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvQ29udGVudD5cbiAgICAgIH1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVQYW5lLmRlZmF1bHRQcm9wcyA9IHsgdmVyc2VPYmplY3RzOiBbXSB9XG5cbmV4cG9ydCBkZWZhdWx0IFNjcmlwdHVyZVBhbmVcbiJdfQ==