single-scripture-rcl 3.3.3-beta.50 → 3.3.3-beta.52
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.
|
@@ -57,6 +57,7 @@ import { getVerses } from 'bible-reference-range';
|
|
|
57
57
|
import { ScripturePane, ScriptureSelector } from '..';
|
|
58
58
|
import { useScriptureSettings } from '../../hooks/useScriptureSettings';
|
|
59
59
|
import { fixOccurrence, getResourceLink, getResourceMessage, getScriptureVersionSettings, isOriginalBible, cleanupVerseObjects } from '../../utils/ScriptureSettings';
|
|
60
|
+
import { areMapsTheSame } from '../../utils/maps';
|
|
60
61
|
import { Title } from '../ScripturePane/styled';
|
|
61
62
|
import { NT_ORIG_LANG, ORIGINAL_SOURCE, OT_ORIG_LANG } from '../../utils';
|
|
62
63
|
var KEY_FONT_SIZE_BASE = 'scripturePaneFontSize_';
|
|
@@ -105,51 +106,44 @@ export default function ScriptureCard(_ref) {
|
|
|
105
106
|
|
|
106
107
|
var _React$useState = React.useState({
|
|
107
108
|
haveUnsavedChanges: false,
|
|
109
|
+
lastSelectedQuote: null,
|
|
110
|
+
originalVerseObjects: null,
|
|
108
111
|
ref: appRef,
|
|
109
112
|
saveClicked: false,
|
|
110
113
|
saveContent: null,
|
|
114
|
+
selections: new Map(),
|
|
111
115
|
sha: null,
|
|
112
116
|
startSave: false,
|
|
113
117
|
urlError: null,
|
|
114
118
|
usingUserBranch: false,
|
|
115
119
|
unsavedChangesList: {},
|
|
116
|
-
versesForRef: null
|
|
120
|
+
versesForRef: null,
|
|
121
|
+
verseObjectsMap: new Map()
|
|
117
122
|
}),
|
|
118
123
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
119
124
|
state = _React$useState2[0],
|
|
120
125
|
setState_ = _React$useState2[1];
|
|
121
126
|
|
|
122
|
-
var
|
|
127
|
+
var haveUnsavedChanges = state.haveUnsavedChanges,
|
|
128
|
+
lastSelectedQuote = state.lastSelectedQuote,
|
|
129
|
+
originalVerseObjects = state.originalVerseObjects,
|
|
130
|
+
ref = state.ref,
|
|
123
131
|
saveClicked = state.saveClicked,
|
|
124
132
|
saveContent = state.saveContent,
|
|
133
|
+
selections = state.selections,
|
|
125
134
|
sha = state.sha,
|
|
126
135
|
startSave = state.startSave,
|
|
127
136
|
urlError = state.urlError,
|
|
128
137
|
usingUserBranch = state.usingUserBranch,
|
|
129
138
|
unsavedChangesList = state.unsavedChangesList,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
var _React$useState3 = React.useState(new Map()),
|
|
134
|
-
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
135
|
-
verseObjectsMap = _React$useState4[0],
|
|
136
|
-
setVerseObjectsMap = _React$useState4[1];
|
|
137
|
-
|
|
138
|
-
var _React$useState5 = React.useState(null),
|
|
139
|
-
_React$useState6 = _slicedToArray(_React$useState5, 2),
|
|
140
|
-
originalScriptureResource = _React$useState6[0],
|
|
141
|
-
setOriginalScriptureResource = _React$useState6[1];
|
|
139
|
+
versesForRef = state.versesForRef,
|
|
140
|
+
verseObjectsMap = state.verseObjectsMap;
|
|
142
141
|
|
|
143
142
|
var _useUserLocalStorage = useUserLocalStorage(KEY_FONT_SIZE_BASE + cardNum, 100),
|
|
144
143
|
_useUserLocalStorage2 = _slicedToArray(_useUserLocalStorage, 2),
|
|
145
144
|
fontSize = _useUserLocalStorage2[0],
|
|
146
145
|
setFontSize = _useUserLocalStorage2[1];
|
|
147
146
|
|
|
148
|
-
var _React$useState7 = React.useState(new Map()),
|
|
149
|
-
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
150
|
-
selections = _React$useState8[0],
|
|
151
|
-
_setSelections = _React$useState8[1];
|
|
152
|
-
|
|
153
147
|
var isNT_ = isNT(bookId);
|
|
154
148
|
|
|
155
149
|
function setState(newState) {
|
|
@@ -158,6 +152,23 @@ export default function ScriptureCard(_ref) {
|
|
|
158
152
|
});
|
|
159
153
|
}
|
|
160
154
|
|
|
155
|
+
function setOriginalScriptureResource(newResource) {
|
|
156
|
+
var _newResource$referenc;
|
|
157
|
+
|
|
158
|
+
var newBookObjects = (newResource === null || newResource === void 0 ? void 0 : newResource.bookObjects) || {};
|
|
159
|
+
var bookId = newResource === null || newResource === void 0 ? void 0 : (_newResource$referenc = newResource.reference) === null || _newResource$referenc === void 0 ? void 0 : _newResource$referenc.projectId;
|
|
160
|
+
|
|
161
|
+
var _newBookObjects = _objectSpread(_objectSpread({}, newBookObjects), {}, {
|
|
162
|
+
bookId: bookId
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
if (!isEqual(_newBookObjects, originalVerseObjects)) {
|
|
166
|
+
setState({
|
|
167
|
+
originalVerseObjects: _newBookObjects
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
161
172
|
if (usingUserBranch) {
|
|
162
173
|
httpConfig = _objectSpread(_objectSpread({}, httpConfig), {}, {
|
|
163
174
|
cache: {
|
|
@@ -202,17 +213,6 @@ export default function ScriptureCard(_ref) {
|
|
|
202
213
|
|
|
203
214
|
var repo = "".concat(scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$reso = scriptureConfig.resource) === null || _scriptureConfig$reso === void 0 ? void 0 : _scriptureConfig$reso.languageId, "_").concat(scriptureConfig === null || scriptureConfig === void 0 ? void 0 : (_scriptureConfig$reso2 = scriptureConfig.resource) === null || _scriptureConfig$reso2 === void 0 ? void 0 : _scriptureConfig$reso2.projectId);
|
|
204
215
|
var reference_ = (scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reference) || null;
|
|
205
|
-
/**
|
|
206
|
-
* update selections if changed
|
|
207
|
-
* @param {Map} newSelections
|
|
208
|
-
*/
|
|
209
|
-
|
|
210
|
-
function setSelections(newSelections) {
|
|
211
|
-
if (!isEqual(selections, newSelections)) {
|
|
212
|
-
_setSelections(newSelections);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
|
|
216
216
|
React.useEffect(function () {
|
|
217
217
|
var _fetchResp_$data;
|
|
218
218
|
|
|
@@ -773,23 +773,21 @@ export default function ScriptureCard(_ref) {
|
|
|
773
773
|
}
|
|
774
774
|
}, [saveClicked]);
|
|
775
775
|
React.useEffect(function () {
|
|
776
|
-
|
|
777
|
-
var _originalScriptureRes;
|
|
778
|
-
|
|
779
|
-
var _map = new Map();
|
|
776
|
+
var _versesForRef = scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef;
|
|
780
777
|
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
}
|
|
778
|
+
var newSelections = new Map();
|
|
779
|
+
var updateSelections = false;
|
|
780
|
+
var _map = newSelections;
|
|
781
|
+
var originalBookId = originalVerseObjects === null || originalVerseObjects === void 0 ? void 0 : originalVerseObjects.bookId;
|
|
782
|
+
var bookVerseObject = originalVerseObjects === null || originalVerseObjects === void 0 ? void 0 : originalVerseObjects.chapters;
|
|
783
|
+
var newSelectedQuote = null; // if we have everything we need to calculate selections
|
|
788
784
|
|
|
789
|
-
|
|
790
|
-
|
|
785
|
+
if (_versesForRef && bookVerseObject && bookId === originalBookId && bookVerseObject[chapter] && // we need to have data for chapter
|
|
786
|
+
selectedQuote !== null && selectedQuote !== void 0 && selectedQuote.quote) {
|
|
787
|
+
// if quote is different than last
|
|
788
|
+
if (!isEqual(lastSelectedQuote, selectedQuote) || !isEqual(versesForRef, _versesForRef)) {
|
|
789
|
+
var originalVerses = {};
|
|
791
790
|
|
|
792
|
-
if (bookVerseObject) {
|
|
793
791
|
var _iterator5 = _createForOfIteratorHelper(_versesForRef || []),
|
|
794
792
|
_step5;
|
|
795
793
|
|
|
@@ -823,15 +821,19 @@ export default function ScriptureCard(_ref) {
|
|
|
823
821
|
_iterator6.f();
|
|
824
822
|
}
|
|
825
823
|
} else {
|
|
826
|
-
|
|
824
|
+
var _bookVerseObject$_cha;
|
|
825
|
+
|
|
826
|
+
verseObjects = (_bookVerseObject$_cha = bookVerseObject[_chapter][_verse]) === null || _bookVerseObject$_cha === void 0 ? void 0 : _bookVerseObject$_cha.verseObjects;
|
|
827
827
|
}
|
|
828
828
|
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
829
|
+
if (verseObjects) {
|
|
830
|
+
verseObjects = cleanupVerseObjects(verseObjects);
|
|
831
|
+
originalVerses[_chapter][_verse] = {
|
|
832
|
+
verseObjects: verseObjects
|
|
833
|
+
};
|
|
833
834
|
|
|
834
|
-
|
|
835
|
+
_map.set("".concat(_chapter, ":").concat(_verse), verseObjects);
|
|
836
|
+
}
|
|
835
837
|
}
|
|
836
838
|
} catch (err) {
|
|
837
839
|
_iterator5.e(err);
|
|
@@ -839,35 +841,57 @@ export default function ScriptureCard(_ref) {
|
|
|
839
841
|
_iterator5.f();
|
|
840
842
|
}
|
|
841
843
|
|
|
842
|
-
|
|
844
|
+
var quoteMatches = getQuoteMatchesInBookRef({
|
|
845
|
+
bookObject: originalVerses,
|
|
846
|
+
ref: selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.reference,
|
|
847
|
+
quote: selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.quote,
|
|
848
|
+
occurrence: selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.occurrence
|
|
849
|
+
});
|
|
850
|
+
|
|
851
|
+
var _selections = new Map();
|
|
843
852
|
|
|
844
|
-
if (
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
853
|
+
if (quoteMatches !== null && quoteMatches !== void 0 && quoteMatches.size) {
|
|
854
|
+
quoteMatches.forEach(function (words, key) {
|
|
855
|
+
_selections.set(key, words.map(function (word) {
|
|
856
|
+
return _objectSpread(_objectSpread({}, word), {}, {
|
|
857
|
+
text: core.normalizeString(word.text)
|
|
858
|
+
});
|
|
859
|
+
}));
|
|
850
860
|
});
|
|
861
|
+
}
|
|
851
862
|
|
|
852
|
-
|
|
863
|
+
newSelections = _selections;
|
|
864
|
+
newSelectedQuote = selectedQuote;
|
|
865
|
+
updateSelections = true;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
853
868
|
|
|
854
|
-
|
|
855
|
-
quoteMatches.forEach(function (words, key) {
|
|
856
|
-
_selections.set(key, words.map(function (word) {
|
|
857
|
-
return _objectSpread(_objectSpread({}, word), {}, {
|
|
858
|
-
text: core.normalizeString(word.text)
|
|
859
|
-
});
|
|
860
|
-
}));
|
|
861
|
-
});
|
|
862
|
-
}
|
|
869
|
+
var newState = {}; // update states that have changed
|
|
863
870
|
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
871
|
+
if (!areMapsTheSame(verseObjectsMap, _map)) {
|
|
872
|
+
newState.verseObjectsMap = _map;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
if (!isEqual(Object.keys(versesForRef || {}), Object.keys(_versesForRef || {}))) {
|
|
876
|
+
newState.versesForRef = _versesForRef;
|
|
877
|
+
newState.lastSelectedQuote = newSelectedQuote;
|
|
878
|
+
newState.selections = newSelections;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
if (newSelectedQuote) {
|
|
882
|
+
newState.lastSelectedQuote = newSelectedQuote;
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
if (updateSelections) {
|
|
886
|
+
if (!areMapsTheSame(selections || new Map(), newSelections)) {
|
|
887
|
+
newState.selections = newSelections;
|
|
868
888
|
}
|
|
869
889
|
}
|
|
870
|
-
|
|
890
|
+
|
|
891
|
+
if (Object.keys(newState).length) {
|
|
892
|
+
setState(newState);
|
|
893
|
+
}
|
|
894
|
+
}, [owner, resourceId, bookId, languageId_, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef, originalVerseObjects, selectedQuote]);
|
|
871
895
|
var renderedScripturePanes = versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.map(function (_currentVerseData, index) {
|
|
872
896
|
var _currentVerseData$ver;
|
|
873
897
|
|
|
@@ -905,12 +929,14 @@ export default function ScriptureCard(_ref) {
|
|
|
905
929
|
setWordAlignerStatus: setWordAlignerStatus,
|
|
906
930
|
server: server,
|
|
907
931
|
translate: translate,
|
|
908
|
-
setOriginalScriptureResource: setOriginalScriptureResource
|
|
932
|
+
setOriginalScriptureResource: !index && setOriginalScriptureResource
|
|
909
933
|
}));
|
|
910
934
|
});
|
|
911
935
|
return /*#__PURE__*/React.createElement(SelectionsContextProvider, {
|
|
912
936
|
selections: selections,
|
|
913
|
-
onSelections:
|
|
937
|
+
onSelections: function onSelections(newSelections) {
|
|
938
|
+
console.log('onSelections', newSelections);
|
|
939
|
+
},
|
|
914
940
|
quote: selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.quote,
|
|
915
941
|
occurrence: fixOccurrence(selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.occurrence),
|
|
916
942
|
verseObjectsMap: verseObjectsMap
|
|
@@ -1050,4 +1076,4 @@ ScriptureCard.propTypes = {
|
|
|
1050
1076
|
/**This is currently selected quote */
|
|
1051
1077
|
selectedQuote: PropTypes.object
|
|
1052
1078
|
};
|
|
1053
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJDYXJkIiwidXNlQ2FyZFN0YXRlIiwidXNlVXNlckJyYW5jaCIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsImdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiaXNFcXVhbCIsImdldFZlcnNlcyIsIlNjcmlwdHVyZVBhbmUiLCJTY3JpcHR1cmVTZWxlY3RvciIsInVzZVNjcmlwdHVyZVNldHRpbmdzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsIlNjcmlwdHVyZUNhcmQiLCJpZCIsImlzTlQiLCJ0aXRsZSIsInNlcnZlciIsImFwcFJlZiIsImNhcmROdW0iLCJjbGFzc2VzIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwiZ2V0TGFuZ3VhZ2UiLCJyZWZlcmVuY2UiLCJ2ZXJzZSIsImNoYXB0ZXIiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJyZXNvdXJjZUxpbmsiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwib25SZXNvdXJjZUVycm9yIiwiaHR0cENvbmZpZyIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJnZXRMZXhpY29uRGF0YSIsImZldGNoR2xvc3Nlc0ZvclZlcnNlIiwidHJhbnNsYXRlIiwib25NaW5pbWl6ZSIsImxvZ2dlZEluVXNlciIsImF1dGhlbnRpY2F0aW9uIiwic2V0U2F2ZWRDaGFuZ2VzIiwiYm9va0luZGV4Iiwic2VsZWN0ZWRRdW90ZSIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidXNlU3RhdGUiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2hhIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNGb3JSZWYiLCJzdGF0ZSIsInNldFN0YXRlXyIsIk1hcCIsInZlcnNlT2JqZWN0c01hcCIsInNldFZlcnNlT2JqZWN0c01hcCIsIm9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UiLCJzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsInNlbGVjdGlvbnMiLCJfc2V0U2VsZWN0aW9ucyIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwic2V0VXJsRXJyb3IiLCJlcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2NyaXB0dXJlQ29uZmlnIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoUmVzcF8iLCJmZXRjaFJlc3BvbnNlIiwicmVwbyIsInJlZmVyZW5jZV8iLCJzZXRTZWxlY3Rpb25zIiwibmV3U2VsZWN0aW9ucyIsInVzZUVmZmVjdCIsIl9zaGEiLCJkYXRhIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiY2FyZElkIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwidXNpbmdVc2VyQnJhbmNoXyIsInN0YXJ0RWRpdEJyYW5jaCIsImFjdGlvbnMiLCJzdGFydEVkaXQiLCJ3b3JraW5nUmVmIiwic2NyaXB0dXJlVGl0bGUiLCJ3b3JraW5nUmVmXyIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsIm9uTWVudUNsb3NlIiwibGFuZ3VhZ2VJZF8iLCJsYW5ndWFnZSIsImRpcmVjdGlvbiIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSIsInZlcnNlT2JqZWN0cyIsInZlcnNlUmVmIiwiX3ZlcnNlT2JqZWN0cyIsInZlcnNlRGF0YSIsImNvbmNhdCIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJvcmlnaW5hbFJlcG9VcmwiLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiY3VycmVudFZlcnNlUmVmIiwiX3NldFNhdmVkQ2hhbmdlcyIsInNvdXJjZUxhbmd1YWdlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50SW5kZXgiLCJzYXZlZCIsImdldENoYW5nZXMiLCJjbGVhckNoYW5nZXMiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiaGFzT3duUHJvcGVydHkiLCJfaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwiT2JqZWN0Iiwia2V5cyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4IiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsImNvbnRlbnQiLCJjb25maWciLCJ0b2tlbiIsInRpbWVvdXQiLCJzZXJ2ZXJUaW1lT3V0IiwiYXV0aG9yIiwiYnJhbmNoIiwib25TYXZlRWRpdCIsIl9zYXZlRWRpdCIsInRoZW4iLCJzdWNjZXNzIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiY2FyZEluZGV4IiwiaW5mbyIsInJlbG9hZFJlc291cmNlIiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwiYmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwic3BsaXQiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZXNwb25zZURhdGEiLCJtZXJnZUZhaWwiLCJwYXJzZUludCIsIm5ld0Jvb2tKc29uIiwibmV3VmVyc2VUZXh0IiwidGFyZ2V0VmVyc2VPYmplY3RzXyIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsIl9tYXAiLCJvcmlnaW5hbFZlcnNlcyIsImJvb2tWZXJzZU9iamVjdCIsImJvb2tPYmplY3RzIiwiY2hhcHRlcnMiLCJpbmNsdWRlcyIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwic2V0IiwicXVvdGUiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJtYXAiLCJ3b3JkIiwidGV4dCIsIm5vcm1hbGl6ZVN0cmluZyIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfcmVmZXJlbmNlIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwiaXNSZXF1aXJlZCIsIm51bWJlciIsInNoYXBlIiwib25lT2ZUeXBlIiwiYm9vbCIsIm9iamVjdCIsImFueSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FDRUMsSUFERixFQUVFQyxZQUZGLEVBR0VDLGFBSEYsRUFJRUMsV0FKRixFQUtFQyx5QkFMRixRQU1PLHVCQU5QO0FBT0EsU0FBU0Msd0JBQVQsUUFBeUMsa0JBQXpDO0FBQ0EsU0FBU0MsZ0JBQVQsRUFBMkJDLHlCQUEzQixRQUE0RCxrQkFBNUQ7QUFDQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUFTQyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVNDLGFBQVQsRUFBd0JDLGlCQUF4QixRQUFpRCxJQUFqRDtBQUNBLFNBQVNDLG9CQUFULFFBQXFDLGtDQUFyQztBQUNBLFNBQ0VDLGFBREYsRUFFRUMs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LElBdEVSOztBQXVFeEI7QUFDQTVNLEVBQUFBLGFBQWEsRUFBRW5FLFNBQVMsQ0FBQ3FSO0FBeEVELENBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IGNvcmUsIFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXIgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7IHVzZUVkaXQgfSBmcm9tICdnaXRlYS1yZWFjdC10b29sa2l0J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VVc2VyQnJhbmNoLFxuICBFUlJPUl9TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG4gIGNsZWFudXBWZXJzZU9iamVjdHMsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NyaXB0dXJlQ2FyZCh7XG4gIGlkLFxuICBpc05ULFxuICB0aXRsZSxcbiAgc2VydmVyLFxuICBhcHBSZWYsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIHJlc291cmNlOiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgfSxcbiAgZ2V0TGFuZ3VhZ2UsXG4gIHJlZmVyZW5jZToge1xuICAgIHZlcnNlLFxuICAgIGNoYXB0ZXIsXG4gICAgcHJvamVjdElkOiBib29rSWQsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBvblJlc291cmNlRXJyb3IsXG4gIGh0dHBDb25maWcsXG4gIGdyZWVrUmVwb1VybCxcbiAgaGVicmV3UmVwb1VybCxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGZldGNoR2xvc3Nlc0ZvclZlcnNlLFxuICB0cmFuc2xhdGUsXG4gIG9uTWluaW1pemUsXG4gIGxvZ2dlZEluVXNlcixcbiAgYXV0aGVudGljYXRpb24sXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgYm9va0luZGV4LFxuICBzZWxlY3RlZFF1b3RlLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbn0pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNoYTogbnVsbCxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2hhLFxuICAgIHN0YXJ0U2F2ZSxcbiAgICB1cmxFcnJvcixcbiAgICB1c2luZ1VzZXJCcmFuY2gsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH0gPSBzdGF0ZVxuXG4gIGNvbnN0IFt2ZXJzZU9iamVjdHNNYXAsIHNldFZlcnNlT2JqZWN0c01hcF0gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpXG4gIGNvbnN0IFtvcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlLCBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXG4gIGNvbnN0IFtmb250U2l6ZSwgc2V0Rm9udFNpemVdID0gdXNlVXNlckxvY2FsU3RvcmFnZShLRVlfRk9OVF9TSVpFX0JBU0UgKyBjYXJkTnVtLCAxMDApXG4gIGNvbnN0IFtzZWxlY3Rpb25zLCBfc2V0U2VsZWN0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShuZXcgTWFwKCkpXG4gIGNvbnN0IGlzTlRfID0gaXNOVChib29rSWQpXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBpZiAodXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgaHR0cENvbmZpZyA9IHsgLi4uaHR0cENvbmZpZywgY2FjaGU6IHsgbWF4QWdlOiAwIH0gfSAvLyBkaXNhYmxlIGh0dHAgY2FjaGluZ1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgaXNOVCxcbiAgICB0aXRsZSxcbiAgICB2ZXJzZSxcbiAgICBvd25lcixcbiAgICBib29rSWQsXG4gICAgYXBwUmVmOiByZWYsXG4gICAgc2VydmVyLFxuICAgIGNhcmROdW0sXG4gICAgY2hhcHRlcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBodHRwQ29uZmlnLFxuICAgIGdyZWVrUmVwb1VybCxcbiAgICBoZWJyZXdSZXBvVXJsLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICAvKipcbiAgICogdXBkYXRlIHNlbGVjdGlvbnMgaWYgY2hhbmdlZFxuICAgKiBAcGFyYW0ge01hcH0gbmV3U2VsZWN0aW9uc1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0U2VsZWN0aW9ucyhuZXdTZWxlY3Rpb25zKSB7XG4gICAgaWYgKCFpc0VxdWFsKHNlbGVjdGlvbnMsIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICBfc2V0U2VsZWN0aW9ucyhuZXdTZWxlY3Rpb25zKVxuICAgIH1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGdldCB0aGUgX3NoYSBmcm9tIGxhc3Qgc2NyaXB0dXJlIGRvd25sb2FkXG4gICAgY29uc3QgX3NoYSA9IGZldGNoUmVzcF8/LmRhdGE/LnNoYSB8fCBudWxsXG4gICAgY29uc29sZS5sb2coYGZvciAke0pTT04uc3RyaW5naWZ5KHJlZmVyZW5jZV8pfSBuZXcgc2hhIGlzICR7X3NoYX1gKVxuXG4gICAgaWYgKF9zaGEgIT09IHNoYSkge1xuICAgICAgc2V0U3RhdGUoeyBzaGE6IF9zaGEgfSlcbiAgICB9XG4gIH0sIFtmZXRjaFJlc3BfXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9IGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJlxuICAgIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uc3Vic3RyaW5nKDAsIGxvZ2dlZEluVXNlci5sZW5ndGgpID09PSBsb2dnZWRJblVzZXIpICkgLy8gbm90IHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZTogeyB3b3JraW5nUmVzb3VyY2VCcmFuY2gsIHVzaW5nVXNlckJyYW5jaDogdXNpbmdVc2VyQnJhbmNoXyB9LFxuICAgIGFjdGlvbnM6IHsgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2ggfSxcbiAgfSA9IHVzZVVzZXJCcmFuY2goe1xuICAgIG93bmVyLFxuICAgIHNlcnZlcixcbiAgICBhcHBSZWYsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKHVzaW5nVXNlckJyYW5jaF8gIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IHVzaW5nVXNlckJyYW5jaF8gfSlcbiAgICB9XG4gIH0sIFt1c2luZ1VzZXJCcmFuY2hfLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGxldCB3b3JraW5nUmVmXyA9IHdvcmtpbmdSZWYgfHwgYXBwUmVmXG5cbiAgICBpZiAocmVmICE9PSB3b3JraW5nUmVmXykge1xuICAgICAgc2V0U3RhdGUoeyByZWY6IHdvcmtpbmdSZWZfIH0pXG4gICAgfVxuICB9LCBbd29ya2luZ1JlZiwgcmVmLCBhcHBSZWZdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHsgLi4uc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZSB9XG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gcHJlLWNhY2hlIGdsb3NzZXMgb24gdmVyc2UgY2hhbmdlXG4gICAgY29uc3QgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAvLyBnZXQgdmVyc2Ugb2JqZWN0cyBvZiBhbGwgdGhlIHZlcnNlc1xuICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZiBvZiBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZiB8fCBbXSkge1xuICAgICAgICBjb25zdCBfdmVyc2VPYmplY3RzID0gdmVyc2VSZWY/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG4gICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQoX3ZlcnNlT2JqZWN0cylcbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlV29yZFBvcG92ZXIgJiYgdmVyc2VPYmplY3RzPy5sZW5ndGggJiYgZmV0Y2hHbG9zc2VzRm9yVmVyc2UpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgYXdhaXQgZmV0Y2hHbG9zc2VzRm9yVmVyc2UodmVyc2VPYmplY3RzLCBsYW5ndWFnZUlkXylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXNpbmdPcmlnaW5hbEJpYmxlKSB7XG4gICAgICBmZXRjaEdsb3NzRGF0YUZvclZlcnNlKClcbiAgICB9XG4gIH0sIFsgdmVyc2VzRm9yUmVmLCBsYW5ndWFnZUlkXyBdKVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5wcm9qZWN0SWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLnByb2plY3RJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHsgb25TYXZlRWRpdCB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCA1MDAwLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgbGV0IGJyYW5jaCA9ICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09ICdtYXN0ZXInKSA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IHVuZGVmaW5lZFxuXG4gICAgICBpZiAoIWJyYW5jaCkge1xuICAgICAgICBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKSAvLyBtYWtlIHN1cmUgdXNlciBicmFuY2ggZXhpc3RzIGFuZCBnZXQgbmFtZVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBvblNhdmVFZGl0KGJyYW5jaCkudGhlbigoc3VjY2VzcykgPT4geyAvLyBwdXNoIGNoYW5nZWQgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjbGVhckNoYW5nZXMgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCcpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgX3NhdmVFZGl0KClcbiAgICB9XG4gIH0sIFtzdGFydFNhdmVdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byB2ZXJzZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBsZXQgYmlibGVVc2ZtID0gY29yZS5nZXRSZXNwb25zZURhdGEoc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlKVxuICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7IHZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzXyB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ29udGVudDogYmlibGVVc2ZtLCBzdGFydFNhdmU6IHRydWUsIHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZikge1xuICAgICAgY29uc3QgX21hcCA9IG5ldyBNYXAoKVxuXG4gICAgICBjb25zdCB2ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gICAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RhdGUoeyB2ZXJzZXNGb3JSZWYgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZT8uYm9va09iamVjdHM/LmNoYXB0ZXJzXG5cbiAgICAgIGlmIChib29rVmVyc2VPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZiBvZiB2ZXJzZXNGb3JSZWYgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZVJlZi52ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZVJlZi52ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdLnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cbiAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVt2ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgIH1cbiAgICAgICAgc2V0VmVyc2VPYmplY3RzTWFwKF9tYXApXG5cbiAgICAgICAgaWYgKHNlbGVjdGVkUXVvdGU/LnF1b3RlKSB7XG4gICAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgICAgcmVmOiBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgICBzZWxlY3Rpb25zLnNldChrZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgICApKSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldFNlbGVjdGlvbnMoc2VsZWN0aW9ucylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRTZWxlY3Rpb25zKG5ldyBNYXAoKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLCBvcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlPy5ib29rT2JqZWN0cywgc2VsZWN0ZWRRdW90ZV0pXG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IHZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IG51bGxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4ucmVmZXJlbmNlLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgc2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZT17c2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZX1cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIHNlbGVjdGlvbnM9e3NlbGVjdGlvbnN9XG4gICAgICBvblNlbGVjdGlvbnM9e3NldFNlbGVjdGlvbnN9XG4gICAgICBxdW90ZT17c2VsZWN0ZWRRdW90ZT8ucXVvdGV9XG4gICAgICBvY2N1cnJlbmNlPXtmaXhPY2N1cnJlbmNlKHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UpfVxuICAgICAgdmVyc2VPYmplY3RzTWFwPXt2ZXJzZU9iamVjdHNNYXB9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICAgIG9uU2F2ZUVkaXQ9eygpID0+IHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IHRydWUgfSl9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgIDwvU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB0aXRsZSBmb3Igc2NyaXB0dXJlIGNhcmQgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHByb2plY3RJZCAoYm9va0lEKSB0byB1c2UgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIHJlcG8gYnJhbmNoIG9yIHRhZyBzdWNoIGFzIG1hc3RlciAqL1xuICBhcHBSZWY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBwcmUtbG9hZCBsZXhpY29uIGRhdGEgZm9yIHZlcnNlICovXG4gIGZldGNoR2xvc3Nlc0ZvclZlcnNlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBpbmRleCBmb3IgY3VycmVudCBib29rIChlLmcuICcwMScgZm9yICdnZW4nKSovXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxufVxuIl19
|
|
1079
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJDYXJkIiwidXNlQ2FyZFN0YXRlIiwidXNlVXNlckJyYW5jaCIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsImdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiaXNFcXVhbCIsImdldFZlcnNlcyIsIlNjcmlwdHVyZVBhbmUiLCJTY3JpcHR1cmVTZWxlY3RvciIsInVzZVNjcmlwdHVyZVNldHRpbmdzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiU2NyaXB0dXJlQ2FyZCIsImlkIiwiaXNOVCIsInRpdGxlIiwic2VydmVyIiwiYXBwUmVmIiwiY2FyZE51bSIsImNsYXNzZXMiLCJyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJnZXRMYW5ndWFnZSIsInJlZmVyZW5jZSIsInZlcnNlIiwiY2hhcHRlciIsImJvb2tJZCIsInByb2plY3RJZCIsInJlc291cmNlTGluayIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJvblJlc291cmNlRXJyb3IiLCJodHRwQ29uZmlnIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImdldExleGljb25EYXRhIiwiZmV0Y2hHbG9zc2VzRm9yVmVyc2UiLCJ0cmFuc2xhdGUiLCJvbk1pbmltaXplIiwibG9nZ2VkSW5Vc2VyIiwiYXV0aGVudGljYXRpb24iLCJzZXRTYXZlZENoYW5nZXMiLCJib29rSW5kZXgiLCJzZWxlY3RlZFF1b3RlIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ1c2VTdGF0ZSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwib3JpZ2luYWxWZXJzZU9iamVjdHMiLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwic2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSIsIm5ld1Jlc291cmNlIiwibmV3Qm9va09iamVjdHMiLCJib29rT2JqZWN0cyIsIl9uZXdCb29rT2JqZWN0cyIsImNhY2hlIiwibWF4QWdlIiwic2V0VXJsRXJyb3IiLCJlcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2NyaXB0dXJlQ29uZmlnIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoUmVzcF8iLCJmZXRjaFJlc3BvbnNlIiwicmVwbyIsInJlZmVyZW5jZV8iLCJ1c2VFZmZlY3QiLCJfc2hhIiwiZGF0YSIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsInN1YnN0cmluZyIsImxlbmd0aCIsImNhcmRJZCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsInVzaW5nVXNlckJyYW5jaF8iLCJzdGFydEVkaXRCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0Iiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwid29ya2luZ1JlZl8iLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJpc0FjY2Vzc0Vycm9yIiwidmVyc2lvbiIsInVwZGF0ZVRpdGxlIiwiZ2V0U2NyaXB0dXJlU2VsZWN0b3IiLCJzY3JpcHR1cmVTZWxlY3Rpb25Db25maWciLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsInVuZGVmaW5lZCIsImZldGNoR2xvc3NEYXRhRm9yVmVyc2UiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZVJlZiIsIl92ZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJjb25jYXQiLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJnZXRDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCIsImhhc093blByb3BlcnR5IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsIk9iamVjdCIsImtleXMiLCJmaW5kUmVmSW5BcnJheSIsImZpbmRJdGVtIiwiY2h1bmtzIiwicmVmTGVuIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJjaHVuayIsImlkeCIsIm5leHRDaGFyIiwiZ2V0Qm9va05hbWUiLCJib29rQ2FwcyIsInRvVXBwZXJDYXNlIiwiZmlsZXBhdGgiLCJjb250ZW50IiwiY29uZmlnIiwidG9rZW4iLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImJyYW5jaCIsIm9uU2F2ZUVkaXQiLCJfc2F2ZUVkaXQiLCJ0aGVuIiwic3VjY2VzcyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsImluZm8iLCJyZWxvYWRSZXNvdXJjZSIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsImJpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVzcG9uc2VEYXRhIiwibWVyZ2VGYWlsIiwicGFyc2VJbnQiLCJuZXdCb29rSnNvbiIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIm9yaWdpbmFsVmVyc2VzIiwiaW5jbHVkZXMiLCJ2ZXJzZXMiLCJ2ZXJzZUl0ZW0iLCJ2byIsInNldCIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsImZvckVhY2giLCJ3b3JkcyIsImtleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9yZWZlcmVuY2UiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJib29sIiwib2JqZWN0IiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsT0FBTyxLQUFLQyxTQUFaLE1BQTJCLFlBQTNCO0FBQ0EsU0FBU0MsSUFBVCxFQUFlQyx5QkFBZixRQUFnRCx5QkFBaEQ7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFNBQW5CO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixxQkFBeEI7QUFDQSxTQUNFQyxJQURGLEVBRUVDLFlBRkYsRUFHRUMsYUFIRixFQUlFQyxXQUpGLEVBS0VDLHlCQUxGLFFBTU8sdUJBTlA7QUFPQSxTQUFTQyx3QkFBVCxRQUF5QyxrQkFBekM7QUFDQSxTQUFTQyxnQkFBVCxFQUEyQkMseUJBQTNCLFFBQTRELGtCQUE1RDtBQUNBLE9BQU8sS0FBS0MsT0FBWixNQUF5QixZQUF6QjtBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJB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bERBOztBQW1EeEI7QUFDQXpOLEVBQUFBLGFBQWEsRUFBRTNELFNBQVMsQ0FBQ29SLE1BcEREOztBQXFEeEI7QUFDQXhOLEVBQUFBLGNBQWMsRUFBRTVELFNBQVMsQ0FBQ3FSLElBdERGOztBQXVEeEI7QUFDQXhOLEVBQUFBLG9CQUFvQixFQUFFN0QsU0FBUyxDQUFDcVIsSUF4RFI7O0FBeUR4QjtBQUNBdk4sRUFBQUEsU0FBUyxFQUFFOUQsU0FBUyxDQUFDcVIsSUExREc7O0FBMkR4QjtBQUNBdE4sRUFBQUEsVUFBVSxFQUFFL0QsU0FBUyxDQUFDcVIsSUE1REU7O0FBNkR4QjtBQUNBck4sRUFBQUEsWUFBWSxFQUFFaEUsU0FBUyxDQUFDb1IsTUE5REE7O0FBK0R4QjtBQUNBbk4sRUFBQUEsY0FBYyxFQUFFakUsU0FBUyxDQUFDMlIsTUFoRUY7O0FBaUV4QjtBQUNBek4sRUFBQUEsZUFBZSxFQUFFbEUsU0FBUyxDQUFDcVIsSUFsRUg7O0FBbUV4QjtBQUNBbE4sRUFBQUEsU0FBUyxFQUFFbkUsU0FBUyxDQUFDb1IsTUFwRUc7O0FBcUV4QjtBQUNBL00sRUFBQUEsb0JBQW9CLEVBQUVyRSxTQUFTLENBQUNxUixJQXRFUjs7QUF1RXhCO0FBQ0FqTixFQUFBQSxhQUFhLEVBQUVwRSxTQUFTLENBQUMyUjtBQXhFRCxDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7XG4gIENhcmQsXG4gIHVzZUNhcmRTdGF0ZSxcbiAgdXNlVXNlckJyYW5jaCxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBpZCxcbiAgaXNOVCxcbiAgdGl0bGUsXG4gIHNlcnZlcixcbiAgYXBwUmVmLFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIGdldExhbmd1YWdlLFxuICByZWZlcmVuY2U6IHtcbiAgICB2ZXJzZSxcbiAgICBjaGFwdGVyLFxuICAgIHByb2plY3RJZDogYm9va0lkLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgb25SZXNvdXJjZUVycm9yLFxuICBodHRwQ29uZmlnLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGdldExleGljb25EYXRhLFxuICBmZXRjaEdsb3NzZXNGb3JWZXJzZSxcbiAgdHJhbnNsYXRlLFxuICBvbk1pbmltaXplLFxuICBsb2dnZWRJblVzZXIsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIGJvb2tJbmRleCxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG59KSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIG9yaWdpbmFsVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hhOiBudWxsLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICBvcmlnaW5hbFZlcnNlT2JqZWN0cyxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzaGEsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VzRm9yUmVmLFxuICAgIHZlcnNlT2JqZWN0c01hcCxcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UobmV3UmVzb3VyY2UpIHtcbiAgICBjb25zdCBuZXdCb29rT2JqZWN0cyA9IG5ld1Jlc291cmNlPy5ib29rT2JqZWN0cyB8fCB7fVxuICAgIGNvbnN0IGJvb2tJZCA9IG5ld1Jlc291cmNlPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9uZXdCb29rT2JqZWN0cyA9IHtcbiAgICAgIC4uLm5ld0Jvb2tPYmplY3RzLFxuICAgICAgYm9va0lkLFxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfbmV3Qm9va09iamVjdHMsIG9yaWdpbmFsVmVyc2VPYmplY3RzKSkge1xuICAgICAgc2V0U3RhdGUoeyBvcmlnaW5hbFZlcnNlT2JqZWN0czogX25ld0Jvb2tPYmplY3RzIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKHVzaW5nVXNlckJyYW5jaCkge1xuICAgIGh0dHBDb25maWcgPSB7IC4uLmh0dHBDb25maWcsIGNhY2hlOiB7IG1heEFnZTogMCB9IH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2V0U2NyaXB0dXJlLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICB9ID0gdXNlU2NyaXB0dXJlU2V0dGluZ3Moe1xuICAgIGlzTlQsXG4gICAgdGl0bGUsXG4gICAgdmVyc2UsXG4gICAgb3duZXIsXG4gICAgYm9va0lkLFxuICAgIGFwcFJlZjogcmVmLFxuICAgIHNlcnZlcixcbiAgICBjYXJkTnVtLFxuICAgIGNoYXB0ZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgc2V0VXJsRXJyb3I6IChlcnJvcikgPT4gc2V0U3RhdGUoeyB1cmxFcnJvcjogZXJyb3IgfSksXG4gICAgaHR0cENvbmZpZyxcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hSZXNwXyA9IHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHJlcG8gPSBgJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkfV8ke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZH1gXG4gIGNvbnN0IHJlZmVyZW5jZV8gPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSB8fCBudWxsXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZ2V0IHRoZSBfc2hhIGZyb20gbGFzdCBzY3JpcHR1cmUgZG93bmxvYWRcbiAgICBjb25zdCBfc2hhID0gZmV0Y2hSZXNwXz8uZGF0YT8uc2hhIHx8IG51bGxcbiAgICBjb25zb2xlLmxvZyhgZm9yICR7SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlXyl9IG5ldyBzaGEgaXMgJHtfc2hhfWApXG5cbiAgICBpZiAoX3NoYSAhPT0gc2hhKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNoYTogX3NoYSB9KVxuICAgIH1cbiAgfSwgW2ZldGNoUmVzcF9dKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gbG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmXG4gICAgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiZcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5zdWJzdHJpbmcoMCwgbG9nZ2VkSW5Vc2VyLmxlbmd0aCkgPT09IGxvZ2dlZEluVXNlcikgKSAvLyBub3QgdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoOiB1c2luZ1VzZXJCcmFuY2hfIH0sXG4gICAgYWN0aW9uczogeyBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgb3duZXIsXG4gICAgc2VydmVyLFxuICAgIGFwcFJlZixcbiAgICBsYW5ndWFnZUlkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgfSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAodXNpbmdVc2VyQnJhbmNoXyAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogdXNpbmdVc2VyQnJhbmNoXyB9KVxuICAgIH1cbiAgfSwgW3VzaW5nVXNlckJyYW5jaF8sIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgbGV0IHdvcmtpbmdSZWZfID0gd29ya2luZ1JlZiB8fCBhcHBSZWZcblxuICAgIGlmIChyZWYgIT09IHdvcmtpbmdSZWZfKSB7XG4gICAgICBzZXRTdGF0ZSh7IHJlZjogd29ya2luZ1JlZl8gfSlcbiAgICB9XG4gIH0sIFt3b3JraW5nUmVmLCByZWYsIGFwcFJlZl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgcmVmZXJlbmNlID0geyAuLi5zY3JpcHR1cmVDb25maWcucmVmZXJlbmNlIH1cblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBwcmUtY2FjaGUgZ2xvc3NlcyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBjb25zdCBmZXRjaEdsb3NzRGF0YUZvclZlcnNlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgIC8vIGdldCB2ZXJzZSBvYmplY3RzIG9mIGFsbCB0aGUgdmVyc2VzXG4gICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmIG9mIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IF92ZXJzZU9iamVjdHMgPSB2ZXJzZVJlZj8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHNcbiAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdChfdmVyc2VPYmplY3RzKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWRpc2FibGVXb3JkUG9wb3ZlciAmJiB2ZXJzZU9iamVjdHM/Lmxlbmd0aCAmJiBmZXRjaEdsb3NzZXNGb3JWZXJzZSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICBhd2FpdCBmZXRjaEdsb3NzZXNGb3JWZXJzZSh2ZXJzZU9iamVjdHMsIGxhbmd1YWdlSWRfKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIGZldGNoR2xvc3NEYXRhRm9yVmVyc2UoKVxuICAgIH1cbiAgfSwgWyB2ZXJzZXNGb3JSZWYsIGxhbmd1YWdlSWRfIF0pXG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiByZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3QgeyBvblNhdmVFZGl0IH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDUwMDAsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBsZXQgYnJhbmNoID0gKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gJ21hc3RlcicpID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogdW5kZWZpbmVkXG5cbiAgICAgIGlmICghYnJhbmNoKSB7XG4gICAgICAgIGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpIC8vIG1ha2Ugc3VyZSB1c2VyIGJyYW5jaCBleGlzdHMgYW5kIGdldCBuYW1lXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IG9uU2F2ZUVkaXQoYnJhbmNoKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlZCB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcblxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnKVxuICAgICAgICAgIHNldFN0YXRlKHsgc3RhcnRTYXZlOiBmYWxzZSB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgIF9zYXZlRWRpdCgpXG4gICAgfVxuICB9LCBbc3RhcnRTYXZlXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIHRvIG1lcmdlIGluXG4gICAqIEBwYXJhbSB7b2JqZWN0W119IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW06IG51bWJlcikge1xuICAgIGxldCBuZXdVc2ZtXG4gICAgY29uc3QgY2hhcHRlckNodW5rcyA9IGJpYmxlVXNmbT8uc3BsaXQoJ1xcXFxjICcpXG4gICAgY29uc3QgY2hhcHRlckluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy5jaGFwdGVyLCBjaGFwdGVyQ2h1bmtzKVxuXG4gICAgaWYgKGNoYXB0ZXJJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hhcHRlciA9IGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XVxuICAgICAgY29uc3QgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcblxuICAgICAgaWYgKHZlcnNlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0odXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIG5ldyBVU0ZNIGZvciBjYXJkOn0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoXG4gICAgICAgIHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHZlcnNlTnVtTGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gdmVyc2VQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGJpYmxlVXNmbSA9IGNvcmUuZ2V0UmVzcG9uc2VEYXRhKHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZSlcbiAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG4gICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgIGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbSkgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgYmlibGVVc2ZtID0gbmV3VXNmbVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwgeyB2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c18gfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBiaWJsZVVzZm0gPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtLnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgIHNldFN0YXRlKHsgc2F2ZUNvbnRlbnQ6IGJpYmxlVXNmbSwgc3RhcnRTYXZlOiB0cnVlLCBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICBsZXQgbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2U7XG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWYgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuXG4gICAgICAgIGZvciAoY29uc3QgdmVyc2VSZWYgb2YgX3ZlcnNlc0ZvclJlZiB8fCBbXSkge1xuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlUmVmLnZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlUmVmLnZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZSxcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChrZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoT2JqZWN0LmtleXModmVyc2VzRm9yUmVmIHx8IHt9KSwgT2JqZWN0LmtleXMoX3ZlcnNlc0ZvclJlZiB8fCB7fSkpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW293bmVyLCByZXNvdXJjZUlkLCBib29rSWQsIGxhbmd1YWdlSWRfLCBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZiwgb3JpZ2luYWxWZXJzZU9iamVjdHMsIHNlbGVjdGVkUXVvdGVdKVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSB2ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBudWxsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLnJlZmVyZW5jZSxcbiAgICAgIGNoYXB0ZXIsXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2U9eyFpbmRleCAmJiBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHByZS1sb2FkIGxleGljb24gZGF0YSBmb3IgdmVyc2UgKi9cbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG59XG4iXX0=
|
package/dist/utils/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './common';
|
|
2
2
|
export * from './delay';
|
|
3
|
+
export * from './maps';
|
|
3
4
|
export * from './LocalStorage';
|
|
4
5
|
export * from './ScriptureSettings';
|
|
5
6
|
export * from './ScriptureVersionHistory';
|
|
6
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQWQ7QUFDQSxjQUFjLFNBQWQ7QUFDQSxjQUFjLFFBQWQ7QUFDQSxjQUFjLGdCQUFkO0FBQ0EsY0FBYyxxQkFBZDtBQUNBLGNBQWMsMkJBQWQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbW1vbidcbmV4cG9ydCAqIGZyb20gJy4vZGVsYXknXG5leHBvcnQgKiBmcm9tICcuL21hcHMnXG5leHBvcnQgKiBmcm9tICcuL0xvY2FsU3RvcmFnZSdcbmV4cG9ydCAqIGZyb20gJy4vU2NyaXB0dXJlU2V0dGluZ3MnXG5leHBvcnQgKiBmcm9tICcuL1NjcmlwdHVyZVZlcnNpb25IaXN0b3J5J1xuXG5cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import "core-js/modules/es.array.from.js";
|
|
2
|
+
import "core-js/modules/es.array.iterator.js";
|
|
3
|
+
import "core-js/modules/es.object.to-string.js";
|
|
4
|
+
import "core-js/modules/es.string.iterator.js";
|
|
5
|
+
import "core-js/modules/web.dom-collections.iterator.js";
|
|
6
|
+
import * as isEqual from 'deep-equal';
|
|
7
|
+
/**
|
|
8
|
+
* do quick comparison of two maps
|
|
9
|
+
* @param {Map} map1
|
|
10
|
+
* @param map2
|
|
11
|
+
* @return {boolean} - true if same
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
export function areMapsTheSame(map1, map2) {
|
|
15
|
+
if (map1.size !== map2.size) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
var keys1 = Array.from(map1.keys());
|
|
20
|
+
var keys2 = Array.from(map2.keys());
|
|
21
|
+
|
|
22
|
+
if (!isEqual(keys1, keys2)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
var different = false;
|
|
27
|
+
|
|
28
|
+
for (var _i = 0, _keys = keys1; _i < _keys.length; _i++) {
|
|
29
|
+
var key = _keys[_i];
|
|
30
|
+
var value1 = map1.get(key);
|
|
31
|
+
var value2 = map2.get(key);
|
|
32
|
+
|
|
33
|
+
if (!isEqual(value1, value2)) {
|
|
34
|
+
different = true;
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return !different;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tYXBzLmpzIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJhcmVNYXBzVGhlU2FtZSIsIm1hcDEiLCJtYXAyIiwic2l6ZSIsImtleXMxIiwiQXJyYXkiLCJmcm9tIiwia2V5cyIsImtleXMyIiwiZGlmZmVyZW50Iiwia2V5IiwidmFsdWUxIiwiZ2V0IiwidmFsdWUyIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sS0FBS0EsT0FBWixNQUF5QixZQUF6QjtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxPQUFPLFNBQVNDLGNBQVQsQ0FBeUJDLElBQXpCLEVBQStCQyxJQUEvQixFQUFzQztBQUMzQyxNQUFJRCxJQUFJLENBQUNFLElBQUwsS0FBY0QsSUFBSSxDQUFDQyxJQUF2QixFQUE2QjtBQUMzQixXQUFPLEtBQVA7QUFDRDs7QUFFRCxNQUFNQyxLQUFLLEdBQUdDLEtBQUssQ0FBQ0MsSUFBTixDQUFZTCxJQUFJLENBQUNNLElBQUwsRUFBWixDQUFkO0FBQ0EsTUFBTUMsS0FBSyxHQUFHSCxLQUFLLENBQUNDLElBQU4sQ0FBWUosSUFBSSxDQUFDSyxJQUFMLEVBQVosQ0FBZDs7QUFFQSxNQUFJLENBQUNSLE9BQU8sQ0FBQ0ssS0FBRCxFQUFRSSxLQUFSLENBQVosRUFBNEI7QUFDMUIsV0FBTyxLQUFQO0FBQ0Q7O0FBRUQsTUFBSUMsU0FBUyxHQUFHLEtBQWhCOztBQUVBLDJCQUFrQkwsS0FBbEIsMkJBQXlCO0FBQXBCLFFBQU1NLEdBQUcsWUFBVDtBQUNILFFBQU1DLE1BQU0sR0FBR1YsSUFBSSxDQUFDVyxHQUFMLENBQVNGLEdBQVQsQ0FBZjtBQUNBLFFBQU1HLE1BQU0sR0FBR1gsSUFBSSxDQUFDVSxHQUFMLENBQVNGLEdBQVQsQ0FBZjs7QUFFQSxRQUFJLENBQUNYLE9BQU8sQ0FBQ1ksTUFBRCxFQUFTRSxNQUFULENBQVosRUFBOEI7QUFDNUJKLE1BQUFBLFNBQVMsR0FBRyxJQUFaO0FBQ0E7QUFDRDtBQUNGOztBQUVELFNBQU8sQ0FBQ0EsU0FBUjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuXG4vKipcbiAqIGRvIHF1aWNrIGNvbXBhcmlzb24gb2YgdHdvIG1hcHNcbiAqIEBwYXJhbSB7TWFwfSBtYXAxXG4gKiBAcGFyYW0gbWFwMlxuICogQHJldHVybiB7Ym9vbGVhbn0gLSB0cnVlIGlmIHNhbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyZU1hcHNUaGVTYW1lKCBtYXAxLCBtYXAyICkge1xuICBpZiAobWFwMS5zaXplICE9PSBtYXAyLnNpemUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGtleXMxID0gQXJyYXkuZnJvbSggbWFwMS5rZXlzKCkgKVxuICBjb25zdCBrZXlzMiA9IEFycmF5LmZyb20oIG1hcDIua2V5cygpIClcblxuICBpZiAoIWlzRXF1YWwoa2V5czEsIGtleXMyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgbGV0IGRpZmZlcmVudCA9IGZhbHNlXG5cbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5czEpIHtcbiAgICBjb25zdCB2YWx1ZTEgPSBtYXAxLmdldChrZXkpXG4gICAgY29uc3QgdmFsdWUyID0gbWFwMi5nZXQoa2V5KVxuXG4gICAgaWYgKCFpc0VxdWFsKHZhbHVlMSwgdmFsdWUyKSkge1xuICAgICAgZGlmZmVyZW50ID0gdHJ1ZVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gIWRpZmZlcmVudFxufVxuXG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "single-scripture-rcl",
|
|
3
3
|
"description": "A React Component Library for Rendering a Single Scripture Resource.",
|
|
4
|
-
"version": "3.3.3-beta.
|
|
4
|
+
"version": "3.3.3-beta.52",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|