single-scripture-rcl 3.3.3-patch.2 → 3.3.3-patch.3
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.
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import "core-js/modules/es.array.concat.js";
|
|
2
|
+
import "core-js/modules/es.array.every.js";
|
|
2
3
|
import "core-js/modules/es.array.find-index.js";
|
|
3
4
|
import "core-js/modules/es.array.for-each.js";
|
|
4
5
|
import "core-js/modules/es.array.includes.js";
|
|
@@ -9,6 +10,7 @@ import "core-js/modules/es.array.map.js";
|
|
|
9
10
|
import "core-js/modules/es.map.js";
|
|
10
11
|
import "core-js/modules/es.object.keys.js";
|
|
11
12
|
import "core-js/modules/es.object.to-string.js";
|
|
13
|
+
import "core-js/modules/es.object.values.js";
|
|
12
14
|
import "core-js/modules/es.parse-int.js";
|
|
13
15
|
import "core-js/modules/es.regexp.exec.js";
|
|
14
16
|
import "core-js/modules/es.string.includes.js";
|
|
@@ -18,6 +20,14 @@ import "core-js/modules/web.dom-collections.for-each.js";
|
|
|
18
20
|
import "core-js/modules/web.dom-collections.iterator.js";
|
|
19
21
|
import "regenerator-runtime/runtime.js";
|
|
20
22
|
|
|
23
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
24
|
+
|
|
25
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
26
|
+
|
|
27
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
28
|
+
|
|
29
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
30
|
+
|
|
21
31
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
22
32
|
|
|
23
33
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
@@ -49,6 +59,8 @@ import * as PropTypes from 'prop-types';
|
|
|
49
59
|
import { core, SelectionsContextProvider } from 'scripture-resources-rcl';
|
|
50
60
|
import usfmjs from 'usfm-js';
|
|
51
61
|
import { useEdit } from 'gitea-react-toolkit';
|
|
62
|
+
import { IconButton } from '@mui/material';
|
|
63
|
+
import { RxLink2, RxLinkBreak2 } from 'react-icons/rx';
|
|
52
64
|
import { Card, useCardState, useUserBranch, ERROR_STATE, MANIFEST_NOT_LOADED_ERROR } from 'translation-helps-rcl';
|
|
53
65
|
import { getQuoteMatchesInBookRef } from 'uw-quote-helpers';
|
|
54
66
|
import { AlignmentHelpers, UsfmFileConversionHelpers } from 'word-aligner-rcl';
|
|
@@ -60,6 +72,7 @@ import { fixOccurrence, getResourceLink, getResourceMessage, getScriptureVersion
|
|
|
60
72
|
import { areMapsTheSame } from '../../utils/maps';
|
|
61
73
|
import { Title } from '../ScripturePane/styled';
|
|
62
74
|
import { NT_ORIG_LANG, ORIGINAL_SOURCE, OT_ORIG_LANG } from '../../utils';
|
|
75
|
+
import { VerseSelectorPopup } from '../VerseSelectorPopup';
|
|
63
76
|
var KEY_FONT_SIZE_BASE = 'scripturePaneFontSize_';
|
|
64
77
|
var label = 'Version';
|
|
65
78
|
var style = {
|
|
@@ -118,6 +131,9 @@ export default function ScriptureCard(_ref) {
|
|
|
118
131
|
usingUserBranch: false,
|
|
119
132
|
unsavedChangesList: {},
|
|
120
133
|
versesForRef: null,
|
|
134
|
+
showAlignmentPopup: false,
|
|
135
|
+
verseSelectedForAlignment: null,
|
|
136
|
+
versesAlignmentStatus: null,
|
|
121
137
|
verseObjectsMap: new Map()
|
|
122
138
|
}),
|
|
123
139
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
@@ -137,6 +153,9 @@ export default function ScriptureCard(_ref) {
|
|
|
137
153
|
usingUserBranch = state.usingUserBranch,
|
|
138
154
|
unsavedChangesList = state.unsavedChangesList,
|
|
139
155
|
versesForRef = state.versesForRef,
|
|
156
|
+
showAlignmentPopup = state.showAlignmentPopup,
|
|
157
|
+
verseSelectedForAlignment = state.verseSelectedForAlignment,
|
|
158
|
+
versesAlignmentStatus = state.versesAlignmentStatus,
|
|
140
159
|
verseObjectsMap = state.verseObjectsMap;
|
|
141
160
|
|
|
142
161
|
var _useUserLocalStorage = useUserLocalStorage(KEY_FONT_SIZE_BASE + cardNum, 100),
|
|
@@ -912,6 +931,20 @@ export default function ScriptureCard(_ref) {
|
|
|
912
931
|
setState(newState);
|
|
913
932
|
}
|
|
914
933
|
}, [owner, resourceId, bookId, languageId_, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef, originalVerseObjects, selectedQuote]);
|
|
934
|
+
React.useEffect(function () {
|
|
935
|
+
setState({
|
|
936
|
+
versesAlignmentStatus: null
|
|
937
|
+
});
|
|
938
|
+
}, [verse]);
|
|
939
|
+
|
|
940
|
+
var updateVersesAlignmentStatus = function updateVersesAlignmentStatus(reference, aligned) {
|
|
941
|
+
setState_(function (prevState) {
|
|
942
|
+
return _objectSpread(_objectSpread({}, prevState), {}, {
|
|
943
|
+
versesAlignmentStatus: _objectSpread(_objectSpread({}, prevState.versesAlignmentStatus), {}, _defineProperty({}, "".concat(reference.chapter, ":").concat(reference.verse), aligned))
|
|
944
|
+
});
|
|
945
|
+
});
|
|
946
|
+
};
|
|
947
|
+
|
|
915
948
|
var renderedScripturePanes = versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.map(function (_currentVerseData, index) {
|
|
916
949
|
var _currentVerseData$ver;
|
|
917
950
|
|
|
@@ -932,6 +965,12 @@ export default function ScriptureCard(_ref) {
|
|
|
932
965
|
reference: _reference
|
|
933
966
|
});
|
|
934
967
|
|
|
968
|
+
var isVerseSelectedForAlignment = false;
|
|
969
|
+
|
|
970
|
+
if (verseSelectedForAlignment) {
|
|
971
|
+
isVerseSelectedForAlignment = verseSelectedForAlignment.chapter === chapter && verseSelectedForAlignment.verse === verse;
|
|
972
|
+
}
|
|
973
|
+
|
|
935
974
|
return /*#__PURE__*/React.createElement(ScripturePane, _extends({}, scriptureConfig, {
|
|
936
975
|
contentStyle: contentStyle,
|
|
937
976
|
currentIndex: index,
|
|
@@ -949,9 +988,75 @@ export default function ScriptureCard(_ref) {
|
|
|
949
988
|
setWordAlignerStatus: setWordAlignerStatus,
|
|
950
989
|
server: server,
|
|
951
990
|
translate: translate,
|
|
991
|
+
isVerseSelectedForAlignment: isVerseSelectedForAlignment,
|
|
992
|
+
onAlignmentFinish: function onAlignmentFinish() {
|
|
993
|
+
return setState({
|
|
994
|
+
verseSelectedForAlignment: null
|
|
995
|
+
});
|
|
996
|
+
},
|
|
997
|
+
updateVersesAlignmentStatus: updateVersesAlignmentStatus,
|
|
952
998
|
setOriginalScriptureResource: !index && setOriginalScriptureResource
|
|
953
999
|
}));
|
|
954
1000
|
});
|
|
1001
|
+
|
|
1002
|
+
var handleAlignButtonClick = function handleAlignButtonClick() {
|
|
1003
|
+
if ((versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.length) > 1) {
|
|
1004
|
+
setState({
|
|
1005
|
+
showAlignmentPopup: true
|
|
1006
|
+
});
|
|
1007
|
+
} else if ((versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.length) === 1) {
|
|
1008
|
+
setState({
|
|
1009
|
+
verseSelectedForAlignment: versesForRef[0]
|
|
1010
|
+
});
|
|
1011
|
+
}
|
|
1012
|
+
};
|
|
1013
|
+
|
|
1014
|
+
var onRenderToolbar = function onRenderToolbar(_ref8) {
|
|
1015
|
+
var items = _ref8.items;
|
|
1016
|
+
|
|
1017
|
+
var newItems = _toConsumableArray(items);
|
|
1018
|
+
|
|
1019
|
+
var allVersesAligned = false; // Check if all values in versesAlignmentStatus are true
|
|
1020
|
+
|
|
1021
|
+
if (versesAlignmentStatus) {
|
|
1022
|
+
allVersesAligned = Object.values(versesAlignmentStatus).every(function (alignStatus) {
|
|
1023
|
+
return alignStatus === true;
|
|
1024
|
+
});
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
var alignIcon = null;
|
|
1028
|
+
var alignButtonText = '';
|
|
1029
|
+
|
|
1030
|
+
if (allVersesAligned) {
|
|
1031
|
+
alignIcon = /*#__PURE__*/React.createElement(RxLink2, {
|
|
1032
|
+
id: "valid_icon_".concat(resourceId),
|
|
1033
|
+
color: "#BBB"
|
|
1034
|
+
});
|
|
1035
|
+
alignButtonText = 'Alignment is Valid';
|
|
1036
|
+
} else {
|
|
1037
|
+
alignIcon = /*#__PURE__*/React.createElement(RxLinkBreak2, {
|
|
1038
|
+
id: "invalid_alignment_icon_".concat(resourceId),
|
|
1039
|
+
color: "#000"
|
|
1040
|
+
});
|
|
1041
|
+
alignButtonText = 'Alignment is Invalid';
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
if (setWordAlignerStatus && resourceId !== 'ORIGINAL_SOURCE') {
|
|
1045
|
+
newItems.push( /*#__PURE__*/React.createElement(IconButton, {
|
|
1046
|
+
id: "alignment_icon_".concat(resourceId),
|
|
1047
|
+
key: "checking-button",
|
|
1048
|
+
onClick: handleAlignButtonClick,
|
|
1049
|
+
title: alignButtonText,
|
|
1050
|
+
"aria-label": alignButtonText,
|
|
1051
|
+
style: {
|
|
1052
|
+
cursor: 'pointer'
|
|
1053
|
+
}
|
|
1054
|
+
}, alignIcon));
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
return newItems;
|
|
1058
|
+
};
|
|
1059
|
+
|
|
955
1060
|
return /*#__PURE__*/React.createElement(SelectionsContextProvider, {
|
|
956
1061
|
selections: selections,
|
|
957
1062
|
onSelections: function onSelections(newSelections) {// console.log('onSelections', newSelections)
|
|
@@ -986,10 +1091,27 @@ export default function ScriptureCard(_ref) {
|
|
|
986
1091
|
return setState({
|
|
987
1092
|
saveClicked: true
|
|
988
1093
|
});
|
|
989
|
-
}
|
|
1094
|
+
},
|
|
1095
|
+
onRenderToolbar: onRenderToolbar
|
|
990
1096
|
}, /*#__PURE__*/React.createElement("div", {
|
|
991
1097
|
id: "scripture-pane-list"
|
|
992
|
-
}, renderedScripturePanes))
|
|
1098
|
+
}, renderedScripturePanes)), /*#__PURE__*/React.createElement(VerseSelectorPopup, {
|
|
1099
|
+
resourceId: resourceId,
|
|
1100
|
+
open: showAlignmentPopup,
|
|
1101
|
+
onClose: function onClose() {
|
|
1102
|
+
return setState({
|
|
1103
|
+
showAlignmentPopup: false
|
|
1104
|
+
});
|
|
1105
|
+
},
|
|
1106
|
+
versesForRef: versesForRef,
|
|
1107
|
+
versesAlignmentStatus: versesAlignmentStatus,
|
|
1108
|
+
onVerseSelect: function onVerseSelect(verse) {
|
|
1109
|
+
return setState({
|
|
1110
|
+
verseSelectedForAlignment: verse,
|
|
1111
|
+
showAlignmentPopup: false
|
|
1112
|
+
});
|
|
1113
|
+
}
|
|
1114
|
+
}));
|
|
993
1115
|
}
|
|
994
1116
|
ScriptureCard.propTypes = {
|
|
995
1117
|
/** html identifier to use for card */
|
|
@@ -1095,4 +1217,4 @@ ScriptureCard.propTypes = {
|
|
|
1095
1217
|
/**This is currently selected quote */
|
|
1096
1218
|
selectedQuote: PropTypes.object
|
|
1097
1219
|
};
|
|
1098
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJDYXJkIiwidXNlQ2FyZFN0YXRlIiwidXNlVXNlckJyYW5jaCIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsImdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiaXNFcXVhbCIsImdldFZlcnNlcyIsIlNjcmlwdHVyZVBhbmUiLCJTY3JpcHR1cmVTZWxlY3RvciIsInVzZVNjcmlwdHVyZVNldHRpbmdzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiU2NyaXB0dXJlQ2FyZCIsImlkIiwiaXNOVCIsInRpdGxlIiwic2VydmVyIiwiYXBwUmVmIiwiY2FyZE51bSIsImNsYXNzZXMiLCJyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJnZXRMYW5ndWFnZSIsInJlZmVyZW5jZSIsInZlcnNlIiwiY2hhcHRlciIsImJvb2tJZCIsInByb2plY3RJZCIsInJlc291cmNlTGluayIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJvblJlc291cmNlRXJyb3IiLCJodHRwQ29uZmlnIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImdldExleGljb25EYXRhIiwiZmV0Y2hHbG9zc2VzRm9yVmVyc2UiLCJ0cmFuc2xhdGUiLCJvbk1pbmltaXplIiwibG9nZ2VkSW5Vc2VyIiwiYXV0aGVudGljYXRpb24iLCJzZXRTYXZlZENoYW5nZXMiLCJib29rSW5kZXgiLCJzZWxlY3RlZFF1b3RlIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ1c2VTdGF0ZSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwib3JpZ2luYWxWZXJzZU9iamVjdHMiLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwic2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSIsIm5ld1Jlc291cmNlIiwibmV3Qm9va09iamVjdHMiLCJib29rT2JqZWN0cyIsIl9uZXdCb29rT2JqZWN0cyIsImNhY2hlIiwibWF4QWdlIiwic2V0VXJsRXJyb3IiLCJlcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2NyaXB0dXJlQ29uZmlnIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoUmVzcF8iLCJmZXRjaFJlc3BvbnNlIiwicmVwbyIsInJlZmVyZW5jZV8iLCJ1c2VFZmZlY3QiLCJfc2hhIiwiZGF0YSIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsInN1YnN0cmluZyIsImxlbmd0aCIsImNhcmRJZCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsInVzaW5nVXNlckJyYW5jaF8iLCJzdGFydEVkaXRCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0Iiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwid29ya2luZ1JlZl8iLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJpc0FjY2Vzc0Vycm9yIiwidmVyc2lvbiIsInVwZGF0ZVRpdGxlIiwiZ2V0U2NyaXB0dXJlU2VsZWN0b3IiLCJzY3JpcHR1cmVTZWxlY3Rpb25Db25maWciLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsInVuZGVmaW5lZCIsImZldGNoR2xvc3NEYXRhRm9yVmVyc2UiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZVJlZiIsIl92ZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJjb25jYXQiLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJnZXRDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCIsImhhc093blByb3BlcnR5IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsIk9iamVjdCIsImtleXMiLCJmaW5kUmVmSW5BcnJheSIsImZpbmRJdGVtIiwiY2h1bmtzIiwicmVmTGVuIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJjaHVuayIsImlkeCIsIm5leHRDaGFyIiwiZ2V0Qm9va05hbWUiLCJib29rQ2FwcyIsInRvVXBwZXJDYXNlIiwiZmlsZXBhdGgiLCJjb250ZW50IiwiY29uZmlnIiwidG9rZW4iLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImJyYW5jaCIsIm9uU2F2ZUVkaXQiLCJfc2F2ZUVkaXQiLCJ0aGVuIiwic3VjY2VzcyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsImluZm8iLCJyZWxvYWRSZXNvdXJjZSIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsImJpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVzcG9uc2VEYXRhIiwibWVyZ2VGYWlsIiwicGFyc2VJbnQiLCJuZXdCb29rSnNvbiIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIm9yaWdpbmFsVmVyc2VzIiwic3Vic3RpdHV0ZSIsInN0YXJ0VmVyc2UiLCJsYXN0VmVyc2UiLCJpIiwibCIsIl92ZXJzZSIsImluY2x1ZGVzIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJzZXQiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZmVyZW5jZSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJudW1iZXIiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImJvb2wiLCJvYmplY3QiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPLEtBQUtDLFNBQVosTUFBMkIsWUFBM0I7QUFDQSxTQUFTQyxJQUFULEVBQWVDLHlCQUFmLFFBQWdELHlCQUFoRDtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUFTQyxPQUFULFFBQXdCLHFCQUF4QjtBQUNBLFNBQ0VDLElBREYsRUFFRUMsWUFGRixFQUdFQyxhQUhGLEVBSUVDLFdBSkYsRUFLRUMseUJBTEYsUUFNTyx1QkFOUDtBQU9BLFNBQVNDLHdCQUFULFFBQXlDLGtCQUF6QztBQUNBLFNBQVNDLGdCQUFULEVBQTJCQyx5QkFBM0Is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LFNBQVMsQ0FBQzZSLElBeERSOztBQXlEeEI7QUFDQS9OLEVBQUFBLFNBQVMsRUFBRTlELFNBQVMsQ0FBQzZSLElBMURHOztBQTJEeEI7QUFDQTlOLEVBQUFBLFVBQVUsRUFBRS9ELFNBQVMsQ0FBQzZSLElBNURFOztBQTZEeEI7QUFDQTdOLEVBQUFBLFlBQVksRUFBRWhFLFNBQVMsQ0FBQzRSLE1BOURBOztBQStEeEI7QUFDQTNOLEVBQUFBLGNBQWMsRUFBRWpFLFNBQVMsQ0FBQ21TLE1BaEVGOztBQWlFeEI7QUFDQWpPLEVBQUFBLGVBQWUsRUFBRWxFLFNBQVMsQ0FBQzZSLElBbEVIOztBQW1FeEI7QUFDQTFOLEVBQUFBLFNBQVMsRUFBRW5FLFNBQVMsQ0FBQzRSLE1BcEVHOztBQXFFeEI7QUFDQXZOLEVBQUFBLG9CQUFvQixFQUFFckUsU0FBUyxDQUFDNlIsSUF0RVI7O0FBdUV4QjtBQUNBek4sRUFBQUEsYUFBYSxFQUFFcEUsU0FBUyxDQUFDbVM7QUF4RUQsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQge1xuICBDYXJkLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZVVzZXJCcmFuY2gsXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYgfSBmcm9tICd1dy1xdW90ZS1oZWxwZXJzJ1xuaW1wb3J0IHsgQWxpZ25tZW50SGVscGVycywgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgeyBTY3JpcHR1cmVQYW5lLCBTY3JpcHR1cmVTZWxlY3RvciB9IGZyb20gJy4uJ1xuaW1wb3J0IHsgdXNlU2NyaXB0dXJlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIGZpeE9jY3VycmVuY2UsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgaWQsXG4gIGlzTlQsXG4gIHRpdGxlLFxuICBzZXJ2ZXIsXG4gIGFwcFJlZixcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICBnZXRMYW5ndWFnZSxcbiAgcmVmZXJlbmNlOiB7XG4gICAgdmVyc2UsXG4gICAgY2hhcHRlcixcbiAgICBwcm9qZWN0SWQ6IGJvb2tJZCxcbiAgfSxcbiAgcmVzb3VyY2VMaW5rLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgaHR0cENvbmZpZyxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2UsXG4gIHRyYW5zbGF0ZSxcbiAgb25NaW5pbWl6ZSxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBhdXRoZW50aWNhdGlvbixcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBib29rSW5kZXgsXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxufSkge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZTogbnVsbCxcbiAgICBvcmlnaW5hbFZlcnNlT2JqZWN0czogbnVsbCxcbiAgICByZWY6IGFwcFJlZixcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgc2VsZWN0aW9uczogbmV3IE1hcCgpLFxuICAgIHNoYTogbnVsbCxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgb3JpZ2luYWxWZXJzZU9iamVjdHMsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNlbGVjdGlvbnMsXG4gICAgc2hhLFxuICAgIHN0YXJ0U2F2ZSxcbiAgICB1cmxFcnJvcixcbiAgICB1c2luZ1VzZXJCcmFuY2gsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0LFxuICAgIHZlcnNlc0ZvclJlZixcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gIH0gPSBzdGF0ZVxuXG4gIGNvbnN0IFtmb250U2l6ZSwgc2V0Rm9udFNpemVdID0gdXNlVXNlckxvY2FsU3RvcmFnZShLRVlfRk9OVF9TSVpFX0JBU0UgKyBjYXJkTnVtLCAxMDApXG4gIGNvbnN0IGlzTlRfID0gaXNOVChib29rSWQpXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlKG5ld1Jlc291cmNlKSB7XG4gICAgY29uc3QgbmV3Qm9va09iamVjdHMgPSBuZXdSZXNvdXJjZT8uYm9va09iamVjdHMgfHwge31cbiAgICBjb25zdCBib29rSWQgPSBuZXdSZXNvdXJjZT8ucmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgICBjb25zdCBfbmV3Qm9va09iamVjdHMgPSB7XG4gICAgICAuLi5uZXdCb29rT2JqZWN0cyxcbiAgICAgIGJvb2tJZCxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX25ld0Jvb2tPYmplY3RzLCBvcmlnaW5hbFZlcnNlT2JqZWN0cykpIHtcbiAgICAgIHNldFN0YXRlKHsgb3JpZ2luYWxWZXJzZU9iamVjdHM6IF9uZXdCb29rT2JqZWN0cyB9KVxuICAgIH1cbiAgfVxuXG4gIGlmICh1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICBodHRwQ29uZmlnID0geyAuLi5odHRwQ29uZmlnLCBjYWNoZTogeyBtYXhBZ2U6IDAgfSB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBpc05ULFxuICAgIHRpdGxlLFxuICAgIHZlcnNlLFxuICAgIG93bmVyLFxuICAgIGJvb2tJZCxcbiAgICBhcHBSZWY6IHJlZixcbiAgICBzZXJ2ZXIsXG4gICAgY2FyZE51bSxcbiAgICBjaGFwdGVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICByZXNvdXJjZUxpbmssXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIGh0dHBDb25maWcsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgd2hvbGVCb29rOiB0cnVlLFxuICB9KVxuXG4gIGNvbnN0IGZldGNoUmVzcF8gPSBzY3JpcHR1cmVDb25maWc/LmZldGNoUmVzcG9uc2VcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCByZWZlcmVuY2VfID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UgfHwgbnVsbFxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGdldCB0aGUgX3NoYSBmcm9tIGxhc3Qgc2NyaXB0dXJlIGRvd25sb2FkXG4gICAgY29uc3QgX3NoYSA9IGZldGNoUmVzcF8/LmRhdGE/LnNoYSB8fCBudWxsXG4gICAgY29uc29sZS5sb2coYGZvciAke0pTT04uc3RyaW5naWZ5KHJlZmVyZW5jZV8pfSBuZXcgc2hhIGlzICR7X3NoYX1gKVxuXG4gICAgaWYgKF9zaGEgIT09IHNoYSkge1xuICAgICAgc2V0U3RhdGUoeyBzaGE6IF9zaGEgfSlcbiAgICB9XG4gIH0sIFtmZXRjaFJlc3BfXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9IGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJlxuICAgIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uc3Vic3RyaW5nKDAsIGxvZ2dlZEluVXNlci5sZW5ndGgpID09PSBsb2dnZWRJblVzZXIpICkgLy8gbm90IHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZTogeyB3b3JraW5nUmVzb3VyY2VCcmFuY2gsIHVzaW5nVXNlckJyYW5jaDogdXNpbmdVc2VyQnJhbmNoXyB9LFxuICAgIGFjdGlvbnM6IHsgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2ggfSxcbiAgfSA9IHVzZVVzZXJCcmFuY2goe1xuICAgIG93bmVyLFxuICAgIHNlcnZlcixcbiAgICBhcHBSZWYsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKHVzaW5nVXNlckJyYW5jaF8gIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IHVzaW5nVXNlckJyYW5jaF8gfSlcbiAgICB9XG4gIH0sIFt1c2luZ1VzZXJCcmFuY2hfLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGxldCB3b3JraW5nUmVmXyA9IHdvcmtpbmdSZWYgfHwgYXBwUmVmXG5cbiAgICBpZiAocmVmICE9PSB3b3JraW5nUmVmXykge1xuICAgICAgc2V0U3RhdGUoeyByZWY6IHdvcmtpbmdSZWZfIH0pXG4gICAgfVxuICB9LCBbd29ya2luZ1JlZiwgcmVmLCBhcHBSZWZdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IHJlZmVyZW5jZSA9IHsgLi4uc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZSB9XG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gcHJlLWNhY2hlIGdsb3NzZXMgb24gdmVyc2UgY2hhbmdlXG4gICAgY29uc3QgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSA9IGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAvLyBnZXQgdmVyc2Ugb2JqZWN0cyBvZiBhbGwgdGhlIHZlcnNlc1xuICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZiBvZiBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZiB8fCBbXSkge1xuICAgICAgICBjb25zdCBfdmVyc2VPYmplY3RzID0gdmVyc2VSZWY/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG4gICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQoX3ZlcnNlT2JqZWN0cylcbiAgICAgIH1cblxuICAgICAgaWYgKCFkaXNhYmxlV29yZFBvcG92ZXIgJiYgdmVyc2VPYmplY3RzPy5sZW5ndGggJiYgZmV0Y2hHbG9zc2VzRm9yVmVyc2UpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgYXdhaXQgZmV0Y2hHbG9zc2VzRm9yVmVyc2UodmVyc2VPYmplY3RzLCBsYW5ndWFnZUlkXylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXNpbmdPcmlnaW5hbEJpYmxlKSB7XG4gICAgICBmZXRjaEdsb3NzRGF0YUZvclZlcnNlKClcbiAgICB9XG4gIH0sIFsgdmVyc2VzRm9yUmVmLCBsYW5ndWFnZUlkXyBdKVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5wcm9qZWN0SWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLnByb2plY3RJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHsgb25TYXZlRWRpdCB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCA1MDAwLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgbGV0IGJyYW5jaCA9ICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09ICdtYXN0ZXInKSA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IHVuZGVmaW5lZFxuXG4gICAgICBpZiAoIWJyYW5jaCkge1xuICAgICAgICBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKSAvLyBtYWtlIHN1cmUgdXNlciBicmFuY2ggZXhpc3RzIGFuZCBnZXQgbmFtZVxuICAgICAgfVxuXG4gICAgICBhd2FpdCBvblNhdmVFZGl0KGJyYW5jaCkudGhlbigoc3VjY2VzcykgPT4geyAvLyBwdXNoIGNoYW5nZWQgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG5cbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICBfc2F2ZUVkaXQoKVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGNvbnN0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG5cbiAgICAgIGlmICh2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSBuZXcgVVNGTSBmb3IgY2FyZDp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aFxuICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHZlcnNlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGxldCBiaWJsZVVzZm0gPSBjb3JlLmdldFJlc3BvbnNlRGF0YShzY3JpcHR1cmVDb25maWc/LmZldGNoUmVzcG9uc2UpXG4gICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm0pIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNfIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYmlibGVVc2ZtID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoT2JqZWN0LmtleXModmVyc2VzRm9yUmVmIHx8IHt9KSwgT2JqZWN0LmtleXMoX3ZlcnNlc0ZvclJlZiB8fCB7fSkpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW293bmVyLCByZXNvdXJjZUlkLCBib29rSWQsIGxhbmd1YWdlSWRfLCBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZiwgb3JpZ2luYWxWZXJzZU9iamVjdHMsIHNlbGVjdGVkUXVvdGVdKVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSB2ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBudWxsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLnJlZmVyZW5jZSxcbiAgICAgIGNoYXB0ZXIsXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2U9eyFpbmRleCAmJiBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHByZS1sb2FkIGxleGljb24gZGF0YSBmb3IgdmVyc2UgKi9cbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG59XG4iXX0=
|
|
1220
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJ1c2VDYXJkU3RhdGUiLCJ1c2VVc2VyQnJhbmNoIiwiRVJST1JfU1RBVEUiLCJNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJmaXhPY2N1cnJlbmNlIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiY2xlYW51cFZlcnNlT2JqZWN0cyIsImFyZU1hcHNUaGVTYW1lIiwiVGl0bGUiLCJOVF9PUklHX0xBTkciLCJPUklHSU5BTF9TT1VSQ0UiLCJPVF9PUklHX0xBTkciLCJWZXJzZVNlbGVjdG9yUG9wdXAiLCJLRVlfRk9OVF9TSVpFX0JBU0UiLCJsYWJlbCIsInN0eWxlIiwibWFyZ2luVG9wIiwid2lkdGgiLCJTY3JpcHR1cmVDYXJkIiwiaWQiLCJpc05UIiwidGl0bGUiLCJzZXJ2ZXIiLCJhcHBSZWYiLCJjYXJkTnVtIiwiY2xhc3NlcyIsInJlc291cmNlIiwib3duZXIiLCJsYW5ndWFnZUlkIiwicmVzb3VyY2VJZCIsIm9yaWdpbmFsTGFuZ3VhZ2VPd25lciIsImdldExhbmd1YWdlIiwicmVmZXJlbmNlIiwidmVyc2UiLCJjaGFwdGVyIiwiYm9va0lkIiwicHJvamVjdElkIiwicmVzb3VyY2VMaW5rIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsImRpc2FibGVXb3JkUG9wb3ZlciIsIm9uUmVzb3VyY2VFcnJvciIsImh0dHBDb25maWciLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiZ2V0TGV4aWNvbkRhdGEiLCJmZXRjaEdsb3NzZXNGb3JWZXJzZSIsInRyYW5zbGF0ZSIsIm9uTWluaW1pemUiLCJsb2dnZWRJblVzZXIiLCJhdXRoZW50aWNhdGlvbiIsInNldFNhdmVkQ2hhbmdlcyIsImJvb2tJbmRleCIsInNlbGVjdGVkUXVvdGUiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInVzZVN0YXRlIiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2hhIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNGb3JSZWYiLCJzaG93QWxpZ25tZW50UG9wdXAiLCJ2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VPYmplY3RzTWFwIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwic2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSIsIm5ld1Jlc291cmNlIiwibmV3Qm9va09iamVjdHMiLCJib29rT2JqZWN0cyIsIl9uZXdCb29rT2JqZWN0cyIsImNhY2hlIiwibWF4QWdlIiwic2V0VXJsRXJyb3IiLCJlcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2NyaXB0dXJlQ29uZmlnIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoUmVzcF8iLCJmZXRjaFJlc3BvbnNlIiwicmVwbyIsInJlZmVyZW5jZV8iLCJ1c2VFZmZlY3QiLCJfc2hhIiwiZGF0YSIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsInN1YnN0cmluZyIsImxlbmd0aCIsImNhcmRJZCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsInVzaW5nVXNlckJyYW5jaF8iLCJzdGFydEVkaXRCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0Iiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwid29ya2luZ1JlZl8iLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJpc0FjY2Vzc0Vycm9yIiwidmVyc2lvbiIsInVwZGF0ZVRpdGxlIiwiZ2V0U2NyaXB0dXJlU2VsZWN0b3IiLCJzY3JpcHR1cmVTZWxlY3Rpb25Db25maWciLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsInVuZGVmaW5lZCIsImZldGNoR2xvc3NEYXRhRm9yVmVyc2UiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZVJlZiIsIl92ZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJjb25jYXQiLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJnZXRDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCIsImhhc093blByb3BlcnR5IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsIk9iamVjdCIsImtleXMiLCJmaW5kUmVmSW5BcnJheSIsImZpbmRJdGVtIiwiY2h1bmtzIiwicmVmTGVuIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJjaHVuayIsImlkeCIsIm5leHRDaGFyIiwiZ2V0Qm9va05hbWUiLCJib29rQ2FwcyIsInRvVXBwZXJDYXNlIiwiZmlsZXBhdGgiLCJjb250ZW50IiwiY29uZmlnIiwidG9rZW4iLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImJyYW5jaCIsIm9uU2F2ZUVkaXQiLCJfc2F2ZUVkaXQiLCJ0aGVuIiwic3VjY2VzcyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsImluZm8iLCJyZWxvYWRSZXNvdXJjZSIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsImJpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVzcG9uc2VEYXRhIiwibWVyZ2VGYWlsIiwicGFyc2VJbnQiLCJuZXdCb29rSnNvbiIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIm9yaWdpbmFsVmVyc2VzIiwic3Vic3RpdHV0ZSIsInN0YXJ0VmVyc2UiLCJsYXN0VmVyc2UiLCJpIiwibCIsIl92ZXJzZSIsImluY2x1ZGVzIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJzZXQiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9yZWZlcmVuY2UiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImZ1bmMiLCJpc1JlcXVpcmVkIiwibnVtYmVyIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJib29sIiwib2JqZWN0IiwiYW55Il0sIm1h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MU8sRUFBQUEsYUFBYSxFQUFFeEUsU0FBUyxDQUFDd1Q7QUF4RUQsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VVc2VyQnJhbmNoLFxuICBFUlJPUl9TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG4gIGNsZWFudXBWZXJzZU9iamVjdHMsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NyaXB0dXJlQ2FyZCh7XG4gIGlkLFxuICBpc05ULFxuICB0aXRsZSxcbiAgc2VydmVyLFxuICBhcHBSZWYsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIHJlc291cmNlOiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgfSxcbiAgZ2V0TGFuZ3VhZ2UsXG4gIHJlZmVyZW5jZToge1xuICAgIHZlcnNlLFxuICAgIGNoYXB0ZXIsXG4gICAgcHJvamVjdElkOiBib29rSWQsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBvblJlc291cmNlRXJyb3IsXG4gIGh0dHBDb25maWcsXG4gIGdyZWVrUmVwb1VybCxcbiAgaGVicmV3UmVwb1VybCxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGZldGNoR2xvc3Nlc0ZvclZlcnNlLFxuICB0cmFuc2xhdGUsXG4gIG9uTWluaW1pemUsXG4gIGxvZ2dlZEluVXNlcixcbiAgYXV0aGVudGljYXRpb24sXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgYm9va0luZGV4LFxuICBzZWxlY3RlZFF1b3RlLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbn0pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgb3JpZ2luYWxWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzaGE6IG51bGwsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgb3JpZ2luYWxWZXJzZU9iamVjdHMsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNlbGVjdGlvbnMsXG4gICAgc2hhLFxuICAgIHN0YXJ0U2F2ZSxcbiAgICB1cmxFcnJvcixcbiAgICB1c2luZ1VzZXJCcmFuY2gsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0LFxuICAgIHZlcnNlc0ZvclJlZixcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgZnVuY3Rpb24gc2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZShuZXdSZXNvdXJjZSkge1xuICAgIGNvbnN0IG5ld0Jvb2tPYmplY3RzID0gbmV3UmVzb3VyY2U/LmJvb2tPYmplY3RzIHx8IHt9XG4gICAgY29uc3QgYm9va0lkID0gbmV3UmVzb3VyY2U/LnJlZmVyZW5jZT8ucHJvamVjdElkXG4gICAgY29uc3QgX25ld0Jvb2tPYmplY3RzID0ge1xuICAgICAgLi4ubmV3Qm9va09iamVjdHMsXG4gICAgICBib29rSWQsXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF9uZXdCb29rT2JqZWN0cywgb3JpZ2luYWxWZXJzZU9iamVjdHMpKSB7XG4gICAgICBzZXRTdGF0ZSh7IG9yaWdpbmFsVmVyc2VPYmplY3RzOiBfbmV3Qm9va09iamVjdHMgfSlcbiAgICB9XG4gIH1cblxuICBpZiAodXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgaHR0cENvbmZpZyA9IHsgLi4uaHR0cENvbmZpZywgY2FjaGU6IHsgbWF4QWdlOiAwIH0gfSAvLyBkaXNhYmxlIGh0dHAgY2FjaGluZ1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgaXNOVCxcbiAgICB0aXRsZSxcbiAgICB2ZXJzZSxcbiAgICBvd25lcixcbiAgICBib29rSWQsXG4gICAgYXBwUmVmOiByZWYsXG4gICAgc2VydmVyLFxuICAgIGNhcmROdW0sXG4gICAgY2hhcHRlcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBodHRwQ29uZmlnLFxuICAgIGdyZWVrUmVwb1VybCxcbiAgICBoZWJyZXdSZXBvVXJsLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBnZXQgdGhlIF9zaGEgZnJvbSBsYXN0IHNjcmlwdHVyZSBkb3dubG9hZFxuICAgIGNvbnN0IF9zaGEgPSBmZXRjaFJlc3BfPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgIGNvbnNvbGUubG9nKGBmb3IgJHtKU09OLnN0cmluZ2lmeShyZWZlcmVuY2VfKX0gbmV3IHNoYSBpcyAke19zaGF9YClcblxuICAgIGlmIChfc2hhICE9PSBzaGEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hhOiBfc2hhIH0pXG4gICAgfVxuICB9LCBbZmV0Y2hSZXNwX10pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSBsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiZcbiAgICAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJlxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLnN1YnN0cmluZygwLCBsb2dnZWRJblVzZXIubGVuZ3RoKSA9PT0gbG9nZ2VkSW5Vc2VyKSApIC8vIG5vdCB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHsgd29ya2luZ1Jlc291cmNlQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2g6IHVzaW5nVXNlckJyYW5jaF8gfSxcbiAgICBhY3Rpb25zOiB7IHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBvd25lcixcbiAgICBzZXJ2ZXIsXG4gICAgYXBwUmVmLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgY2FyZElkOiBpZCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIG9uUmVzb3VyY2VFcnJvcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmICh1c2luZ1VzZXJCcmFuY2hfICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiB1c2luZ1VzZXJCcmFuY2hfIH0pXG4gICAgfVxuICB9LCBbdXNpbmdVc2VyQnJhbmNoXywgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBsZXQgd29ya2luZ1JlZl8gPSB3b3JraW5nUmVmIHx8IGFwcFJlZlxuXG4gICAgaWYgKHJlZiAhPT0gd29ya2luZ1JlZl8pIHtcbiAgICAgIHNldFN0YXRlKHsgcmVmOiB3b3JraW5nUmVmXyB9KVxuICAgIH1cbiAgfSwgW3dvcmtpbmdSZWYsIHJlZiwgYXBwUmVmXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCByZWZlcmVuY2UgPSB7IC4uLnNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UgfVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHByZS1jYWNoZSBnbG9zc2VzIG9uIHZlcnNlIGNoYW5nZVxuICAgIGNvbnN0IGZldGNoR2xvc3NEYXRhRm9yVmVyc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgLy8gZ2V0IHZlcnNlIG9iamVjdHMgb2YgYWxsIHRoZSB2ZXJzZXNcbiAgICAgIGZvciAoY29uc3QgdmVyc2VSZWYgb2Ygc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYgfHwgW10pIHtcbiAgICAgICAgY29uc3QgX3ZlcnNlT2JqZWN0cyA9IHZlcnNlUmVmPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KF92ZXJzZU9iamVjdHMpXG4gICAgICB9XG5cbiAgICAgIGlmICghZGlzYWJsZVdvcmRQb3BvdmVyICYmIHZlcnNlT2JqZWN0cz8ubGVuZ3RoICYmIGZldGNoR2xvc3Nlc0ZvclZlcnNlKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgIGF3YWl0IGZldGNoR2xvc3Nlc0ZvclZlcnNlKHZlcnNlT2JqZWN0cywgbGFuZ3VhZ2VJZF8pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSgpXG4gICAgfVxuICB9LCBbIHZlcnNlc0ZvclJlZiwgbGFuZ3VhZ2VJZF8gXSlcblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IHJlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7IG9uU2F2ZUVkaXQgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgNTAwMCxcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGxldCBicmFuY2ggPSAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSAnbWFzdGVyJykgPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiB1bmRlZmluZWRcblxuICAgICAgaWYgKCFicmFuY2gpIHtcbiAgICAgICAgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKCkgLy8gbWFrZSBzdXJlIHVzZXIgYnJhbmNoIGV4aXN0cyBhbmQgZ2V0IG5hbWVcbiAgICAgIH1cblxuICAgICAgYXdhaXQgb25TYXZlRWRpdChicmFuY2gpLnRoZW4oKHN1Y2Nlc3MpID0+IHsgLy8gcHVzaCBjaGFuZ2VkIHRvIHNlcnZlclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgICAgIHNldFN0YXRlKHsgc3RhcnRTYXZlOiBmYWxzZSB9KVxuXG4gICAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjbGVhckNoYW5nZXMgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCcpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgX3NhdmVFZGl0KClcbiAgICB9XG4gIH0sIFtzdGFydFNhdmVdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byB2ZXJzZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBsZXQgYmlibGVVc2ZtID0gY29yZS5nZXRSZXNwb25zZURhdGEoc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlKVxuICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7IHZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzXyB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ29udGVudDogYmlibGVVc2ZtLCBzdGFydFNhdmU6IHRydWUsIHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxWZXJzZU9iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IG5ld1NlbGVjdGVkUXVvdGUgPSBudWxsXG5cbiAgICAvLyBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBjYWxjdWxhdGUgc2VsZWN0aW9uc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXG4gICAgICAgIGxldCBzdGFydFZlcnNlID0gX3ZlcnNlc0ZvclJlZlswXS52ZXJzZVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdGFydFZlcnNlID0gcGFyc2VJbnQoc3RhcnRWZXJzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0VmVyc2UgPSBzdGFydFZlcnNlXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXG4gICAgICAgICAgbGV0IF92ZXJzZSA9IHN0YXJ0VmVyc2UgKyBpXG4gICAgICAgICAgbGFzdFZlcnNlID0gX3ZlcnNlXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSkge1xuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcblxuICAgICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdCh2bylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyByZWZlcmVuY2UgcmFuZ2UgZm9yIG5ldyBsaW5lYXIgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXG4gICAgICAgIGxldCBzdWJSZWYgPSBgJHtjaGFwdGVyfToke3N0YXJ0VmVyc2V9YFxuXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xuICAgICAgICAgIHN1YlJlZiArPSBgLSR7bGFzdFZlcnNlfWBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXG4gICAgICAgICAgcXVvdGU6IHNlbGVjdGVkUXVvdGU/LnF1b3RlLFxuICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuXG4gICAgICAgIGlmIChxdW90ZU1hdGNoZXM/LnNpemUpIHtcbiAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxuXG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChfa2V5LCB3b3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XG4gICAgICAgICAgICApKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld1NlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgIG5ld1NlbGVjdGVkUXVvdGUgPSBzZWxlY3RlZFF1b3RlXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHt9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgaWYgKCFhcmVNYXBzVGhlU2FtZSh2ZXJzZU9iamVjdHNNYXAsIF9tYXApKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZU9iamVjdHNNYXAgPSBfbWFwXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKE9iamVjdC5rZXlzKHZlcnNlc0ZvclJlZiB8fCB7fSksIE9iamVjdC5rZXlzKF92ZXJzZXNGb3JSZWYgfHwge30pKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtvd25lciwgcmVzb3VyY2VJZCwgYm9va0lkLCBsYW5ndWFnZUlkXywgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsIG9yaWdpbmFsVmVyc2VPYmplY3RzLCBzZWxlY3RlZFF1b3RlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFN0YXRlKHsgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsIH0pXG4gIH0sIFt2ZXJzZV0pXG5cbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZSwgYWxpZ25lZCkgPT4ge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHtcbiAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogey4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWR9LFxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IHZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IG51bGxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4ucmVmZXJlbmNlLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlPXshaW5kZXggJiYgc2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZX1cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkge1xuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nIzAwMCcvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3tjdXJzb3I6ICdwb2ludGVyJ319XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIHNlbGVjdGlvbnM9e3NlbGVjdGlvbnN9XG4gICAgICBvblNlbGVjdGlvbnM9e25ld1NlbGVjdGlvbnMgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcbiAgICAgIH19XG4gICAgICBxdW90ZT17c2VsZWN0ZWRRdW90ZT8ucXVvdGV9XG4gICAgICBvY2N1cnJlbmNlPXtmaXhPY2N1cnJlbmNlKHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UpfVxuICAgICAgdmVyc2VPYmplY3RzTWFwPXt2ZXJzZU9iamVjdHNNYXB9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICAgIG9uU2F2ZUVkaXQ9eygpID0+IHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IHRydWUgfSl9XG4gICAgICAgIG9uUmVuZGVyVG9vbGJhcj17b25SZW5kZXJUb29sYmFyfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwic2NyaXB0dXJlLXBhbmUtbGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIDxWZXJzZVNlbGVjdG9yUG9wdXBcbiAgICAgICAgcmVzb3VyY2VJZD17cmVzb3VyY2VJZH1cbiAgICAgICAgb3Blbj17c2hvd0FsaWdubWVudFBvcHVwfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UgfSl9XG4gICAgICAgIHZlcnNlc0ZvclJlZj17dmVyc2VzRm9yUmVmfVxuICAgICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3ZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgICAgb25WZXJzZVNlbGVjdD17KHZlcnNlKSA9PiBzZXRTdGF0ZSh7XG4gICAgICAgICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2UsXG4gICAgICAgICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZVxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHByZS1sb2FkIGxleGljb24gZGF0YSBmb3IgdmVyc2UgKi9cbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG59XG4iXX0=
|
|
@@ -24,8 +24,6 @@ import * as React from 'react';
|
|
|
24
24
|
import useDeepCompareEffect from 'use-deep-compare-effect';
|
|
25
25
|
import { VerseObjects } from 'scripture-resources-rcl';
|
|
26
26
|
import { UsfmFileConversionHelpers } from 'word-aligner-rcl';
|
|
27
|
-
import { RxLink2, RxLinkBreak2 } from 'react-icons/rx';
|
|
28
|
-
import { IconButton } from '@mui/material';
|
|
29
27
|
import { ScriptureReference } from '../../types';
|
|
30
28
|
import { getResourceMessage } from '../../utils';
|
|
31
29
|
import { ScriptureALignmentEditProps, useScriptureAlignmentEdit } from "../../hooks/useScriptureAlignmentEdit";
|
|
@@ -70,6 +68,9 @@ function ScripturePane(_ref) {
|
|
|
70
68
|
scriptureAlignmentEditConfig = _ref.scriptureAlignmentEditConfig,
|
|
71
69
|
setSavedChanges = _ref.setSavedChanges,
|
|
72
70
|
setWordAlignerStatus = _ref.setWordAlignerStatus,
|
|
71
|
+
isVerseSelectedForAlignment = _ref.isVerseSelectedForAlignment,
|
|
72
|
+
onAlignmentFinish = _ref.onAlignmentFinish,
|
|
73
|
+
updateVersesAlignmentStatus = _ref.updateVersesAlignmentStatus,
|
|
73
74
|
setOriginalScriptureResource = _ref.setOriginalScriptureResource;
|
|
74
75
|
|
|
75
76
|
var _React$useState = React.useState({
|
|
@@ -128,6 +129,14 @@ function ScripturePane(_ref) {
|
|
|
128
129
|
unsavedChanges = _scriptureAlignmentEd2.unsavedChanges,
|
|
129
130
|
newVerseText = _scriptureAlignmentEd2.newVerseText,
|
|
130
131
|
originalScriptureResource = _scriptureAlignmentEd2.originalScriptureResource;
|
|
132
|
+
|
|
133
|
+
if (isVerseSelectedForAlignment && !alignerData && !doingAlignment) {
|
|
134
|
+
handleAlignmentClick();
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
React.useEffect(function () {
|
|
138
|
+
updateVersesAlignmentStatus(reference, aligned);
|
|
139
|
+
}, [aligned]);
|
|
131
140
|
React.useEffect(function () {
|
|
132
141
|
if (originalScriptureResource) {
|
|
133
142
|
setOriginalScriptureResource && setOriginalScriptureResource(originalScriptureResource);
|
|
@@ -144,6 +153,7 @@ function ScripturePane(_ref) {
|
|
|
144
153
|
setState({
|
|
145
154
|
doingAlignment: false
|
|
146
155
|
});
|
|
156
|
+
onAlignmentFinish && onAlignmentFinish();
|
|
147
157
|
}
|
|
148
158
|
}, [_scriptureAlignmentEdit === null || _scriptureAlignmentEdit === void 0 ? void 0 : (_scriptureAlignmentEd3 = _scriptureAlignmentEdit.state) === null || _scriptureAlignmentEd3 === void 0 ? void 0 : _scriptureAlignmentEd3.alignerData]); // dynamically adjust font size
|
|
149
159
|
|
|
@@ -217,25 +227,6 @@ function ScripturePane(_ref) {
|
|
|
217
227
|
disableWordPopover: disableWordPopover,
|
|
218
228
|
getLexiconData: getLexiconData,
|
|
219
229
|
translate: translate
|
|
220
|
-
})), setWordAlignerStatus &&
|
|
221
|
-
/*#__PURE__*/
|
|
222
|
-
//add scriptureAlignmentEditConfig?.enableAlignment
|
|
223
|
-
React.createElement(IconButton, {
|
|
224
|
-
key: "checking-button",
|
|
225
|
-
onClick: function onClick() {
|
|
226
|
-
return handleAlignmentClick();
|
|
227
|
-
},
|
|
228
|
-
title: titleText,
|
|
229
|
-
"aria-label": titleText,
|
|
230
|
-
style: {
|
|
231
|
-
cursor: 'pointer'
|
|
232
|
-
}
|
|
233
|
-
}, checkingState === 'valid' ? /*#__PURE__*/React.createElement(RxLink2, {
|
|
234
|
-
id: "valid_icon",
|
|
235
|
-
color: "#BBB"
|
|
236
|
-
}) : /*#__PURE__*/React.createElement(RxLinkBreak2, {
|
|
237
|
-
id: "invalid_icon",
|
|
238
|
-
color: "#000"
|
|
239
230
|
}))));
|
|
240
231
|
}
|
|
241
232
|
|
|
@@ -243,4 +234,4 @@ ScripturePane.defaultProps = {
|
|
|
243
234
|
verseObjects: []
|
|
244
235
|
};
|
|
245
236
|
export default ScripturePane;
|
|
246
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJSeExpbmsyIiwiUnhMaW5rQnJlYWsyIiwiSWNvbkJ1dHRvbiIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsImdldFJlc291cmNlTWVzc2FnZSIsIlNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyIsInVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQiLCJDb250YWluZXIiLCJDb250ZW50IiwiTWVzc2FnZVN0eWxlIiwiZGlyZWN0aW9uIiwid2hpdGVTcGFjZSIsImxpbmVIZWlnaHQiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwiaGVpZ2h0Iiwid2lkdGgiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwiVGV4dEFyZWFTdHlsZSIsIm1pbldpZHRoIiwiU2NyaXB0dXJlUGFuZSIsInJlZmVyZW5jZSIsInJlZlN0eWxlIiwiY3VycmVudEluZGV4IiwiY29udGVudFN0eWxlIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwicmVzb3VyY2VTdGF0dXMiLCJyZXNvdXJjZUxpbmsiLCJzZXJ2ZXIiLCJpc05UIiwiZ2V0TGV4aWNvbkRhdGEiLCJ0cmFuc2xhdGUiLCJzYXZpbmciLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlIiwidXNlU3RhdGUiLCJkb2luZ0FsaWdubWVudCIsIm5ld1RleHQiLCJ1cmxFcnJvciIsInN0YXRlIiwic2V0U3RhdGVfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImluaXRpYWxWZXJzZVRleHQiLCJzZXRJbml0aWFsVmVyc2VUZXh0IiwicmVzb3VyY2VNc2ciLCJjaGFwdGVyIiwidmVyc2UiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiYWN0aW9ucyIsImhhbmRsZUFsaWdubWVudENsaWNrIiwic2V0RWRpdGluZyIsInNldFZlcnNlQ2hhbmdlZCIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiZWRpdGluZyIsInVuc2F2ZWRDaGFuZ2VzIiwibmV3VmVyc2VUZXh0Iiwib3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSIsInVzZUVmZmVjdCIsImNhbGN1bGF0ZWRGb250U2l6ZSIsInVzZU1lbW8iLCJwYXJzZUZsb2F0IiwidGV4dEFyZWFTdHlsZSIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJ2ZXJzZU9iamVjdHMiLCJvblRleHRDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY2hhbmdlZCIsIm9uQmx1ciIsImNoZWNraW5nU3RhdGUiLCJ0aXRsZVRleHQiLCJwYWRkaW5nQm90dG9tIiwiY3Vyc29yIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsT0FBT0Msb0JBQVAsTUFBaUMseUJBQWpDO0FBQ0EsU0FBU0MsWUFBVCxRQUE2Qix5QkFBN0I7QUFDQSxTQUFTQyx5QkFBVCxRQUEwQyxrQkFBMUM7QUFDQSxTQUFTQyxPQUFULEVBQWtCQyxZQUFsQixRQUFzQyxnQkFBdEM7QUFDQSxTQUFTQyxVQUFULFFBQTJCLGVBQTNCO0FBQ0EsU0FBU0Msa0JBQVQsUUFBbUMsYUFBbkM7QUFDQSxTQUFTQyxrQkFBVCxRQUFtQyxhQUFuQztBQUNBLFNBQVNDLDJCQUFULEVBQXNDQyx5QkFBdEMsUUFBdUUsdUNBQXZFO0FBQ0Es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QXRDLElBVkosQ0F6QkosQ0FQSixDQURGO0FBbUREOztBQUVEM0QsYUFBYSxDQUFDK0QsWUFBZCxHQUE2QjtBQUFFWCxFQUFBQSxZQUFZLEVBQUU7QUFBaEIsQ0FBN0I7QUFFQSxlQUFlcEQsYUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHVzZURlZXBDb21wYXJlRWZmZWN0IGZyb20gJ3VzZS1kZWVwLWNvbXBhcmUtZWZmZWN0J1xuaW1wb3J0IHsgVmVyc2VPYmplY3RzIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgeyBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnXG5pbXBvcnQgeyBTY3JpcHR1cmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldFJlc291cmNlTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzLCB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZUFsaWdubWVudEVkaXRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQ29udGVudCB9IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLyoqIGxhbmd1YWdlIGRpcmVjdGlvbiB0byB1c2UgKiovXG4gIGRpcmVjdGlvbjogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBkbyBub3QgZGlzcGxheSBsZXhpY29uIHBvcG92ZXIgb24gaG92ZXIgKiovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogYm9vbGVhbnx1bmRlZmluZWQ7XG4gIC8qKiBmb250IHNpemUgZm9yIG1lc3NhZ2VzICovXG4gIGZvbnRTaXplOiBudW1iZXI7XG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogRnVuY3Rpb247XG4gIC8qKiB0cnVlIGlmIGJyb3dzaW5nIE5UICovXG4gIGlzTlQ6IGJvb2xlYW47XG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciByZWZlcmVuY2UgKiovXG4gIHJlZlN0eWxlOiBhbnk7XG4gIC8qKiBvYmplY3QgdGhhdCBjb250YWlucyByZXNvdXJjZSBsb2FkaW5nIHN0YXR1cyBvciBmZXRjaGluZyBlcnJvcnMgKi9cbiAgcmVzb3VyY2VTdGF0dXM6IG9iamVjdHx1bmRlZmluZWQ7XG4gIC8qKiByZXNvdXJjZSB0aGF0IHdhcyBsb2FkZWQgKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBjdXJyZW50bHkgc2F2aW5nIHVwZGF0ZWQgdGV4dCBhbmQgYWxpZ25tZW50cyAqL1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIC8vIGluaXRpYWxpemF0aW9uIGZvciB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyxcbiAgLyoqIHNlcnZlciAqL1xuICBzZXJ2ZXI6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHVuc2F2ZWQgc3RhdHVzICovXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb247XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIFRoaXMgaXMgYSBjYWxsYmFjayBmb3Igb3JpZ2luYWwgc2NyaXB0dXJlIHJlc291cmNlICovXG4gIHNldE9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2U6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgZm9udFNpemU6ICcxNnB4Jyxcbn1cblxuZnVuY3Rpb24gU2NyaXB0dXJlUGFuZSh7XG4gIHJlZmVyZW5jZSxcbiAgcmVmU3R5bGUsXG4gIGRpcmVjdGlvbixcbiAgY3VycmVudEluZGV4LFxuICBjb250ZW50U3R5bGUsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgcmVzb3VyY2VTdGF0dXMsXG4gIHJlc291cmNlTGluayxcbiAgc2VydmVyLFxuICBpc05ULFxuICBmb250U2l6ZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIHRyYW5zbGF0ZSxcbiAgc2F2aW5nLFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlLFxufSA6IFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBkb2luZ0FsaWdubWVudDogZmFsc2UsXG4gICAgbmV3VGV4dDogbnVsbCxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGRvaW5nQWxpZ25tZW50LFxuICAgIG5ld1RleHQsXG4gICAgdXJsRXJyb3IsXG4gIH0gPSBzdGF0ZVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgY29uc3QgW2luaXRpYWxWZXJzZVRleHQsIHNldEluaXRpYWxWZXJzZVRleHRdID0gUmVhY3QudXNlU3RhdGUobnVsbClcbiAgY29uc3QgcmVzb3VyY2VNc2cgPSBzYXZpbmcgPyAnU2F2aW5nIENoYW5nZXMuLi4nIDogZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gcmVmZXJlbmNlXG4gIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAnbHRyJ1xuXG4gIHJlZlN0eWxlID0gcmVmU3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnOTAlJyxcbiAgfVxuXG4gIGNvbnRlbnRTdHlsZSA9IGNvbnRlbnRTdHlsZSB8fCB7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6ICcxMDAlJyxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0ID0gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdChfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZylcbiAgY29uc3Qge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIGVkaXRpbmcsXG4gICAgICB1bnNhdmVkQ2hhbmdlcyxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIG9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UsXG4gICAgfSxcbiAgfSA9IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSkge1xuICAgICAgc2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSAmJiBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlKG9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UpXG4gICAgfVxuICB9LFtvcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAoZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogZmFsc2UgfSlcbiAgICB9XG4gIH0sIFtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdD8uc3RhdGU/LmFsaWduZXJEYXRhXSlcblxuICAvLyBkeW5hbWljYWxseSBhZGp1c3QgZm9udCBzaXplXG4gIGNvbnN0IGNhbGN1bGF0ZWRGb250U2l6ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKFxuICAgIHBhcnNlRmxvYXQoVGV4dEFyZWFTdHlsZS5mb250U2l6ZSkgKiBmb250U2l6ZSAvIDEwMCArICdweCdcbiAgKSwgW2ZvbnRTaXplXSlcblxuICBjb25zdCB0ZXh0QXJlYVN0eWxlID0ge1xuICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAuLi5UZXh0QXJlYVN0eWxlLFxuICAgIGZvbnRTaXplOiBjYWxjdWxhdGVkRm9udFNpemUsXG4gIH1cblxuICB1c2VEZWVwQ29tcGFyZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHsgdmVyc2VPYmplY3RzOiBpbml0aWFsVmVyc2VPYmplY3RzIH0pXG4gICAgc2V0SW5pdGlhbFZlcnNlVGV4dCh2ZXJzZVRleHQpXG4gIH0sIFt7IHJlZmVyZW5jZSwgaW5pdGlhbFZlcnNlT2JqZWN0cyB9XSlcblxuICBmdW5jdGlvbiBvblRleHRDaGFuZ2UoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgbmV3VmVyc2VUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWVcbiAgICBjb25zdCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgLy8gY29uc29sZS5sb2coYFNQLm9uVGV4dENoYW5nZWAsIHsgY2hhbmdlZCwgbmV3VGV4dDogbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0IH0pXG4gICAgc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQsIG5ld1ZlcnNlVGV4dCwgaW5pdGlhbFZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7IG5ld1RleHQ6IG5ld1ZlcnNlVGV4dCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25CbHVyKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pikge1xuICAgIHNldEVkaXRpbmcoZmFsc2UsIG5ld1RleHQpXG4gIH1cblxuICBjb25zdCBjaGVja2luZ1N0YXRlID0gYWxpZ25lZCA/ICd2YWxpZCcgOiAnaW52YWxpZCdcbiAgY29uc3QgdGl0bGVUZXh0ID0gY2hlY2tpbmdTdGF0ZSA9PT0gJ3ZhbGlkJyA/ICdBbGlnbm1lbnQgaXMgVmFsaWQnIDogJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBzdHlsZT17eyBkaXJlY3Rpb24sIHdpZHRoOiAnMTAwJScsIHBhZGRpbmdCb3R0b206ICcwLjVlbScgfX0+XG4gICAgICB7cmVzb3VyY2VNc2cgP1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIDxkaXYgc3R5bGU9e01lc3NhZ2VTdHlsZX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogYCR7Zm9udFNpemV9JWAgfX0+IHtyZXNvdXJjZU1zZ30gPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA6XG4gICAgICAgIDxDb250ZW50PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtyZWZTdHlsZX0+IHtjaGFwdGVyfTp7dmVyc2V9Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtjb250ZW50U3R5bGV9IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEVkaXRpbmcgJiYgc2V0RWRpdGluZyh0cnVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2VkaXRpbmcgP1xuICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRleHRDaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3RleHRBcmVhU3R5bGV9XG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgPFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgIHZlcnNlS2V5PXtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YH1cbiAgICAgICAgICAgICAgICB2ZXJzZU9iamVjdHM9e2N1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c31cbiAgICAgICAgICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcn1cbiAgICAgICAgICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiAvL2FkZCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPy5lbmFibGVBbGlnbm1lbnQgXG4gICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQWxpZ25tZW50Q2xpY2soKX1cbiAgICAgICAgICAgICAgdGl0bGU9e3RpdGxlVGV4dH1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dGl0bGVUZXh0fVxuICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7Y2hlY2tpbmdTdGF0ZSA9PT0gJ3ZhbGlkJyA/IChcbiAgICAgICAgICAgICAgICA8UnhMaW5rMiBpZD0ndmFsaWRfaWNvbicgY29sb3I9JyNCQkInIC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFJ4TGlua0JyZWFrMiBpZD0naW52YWxpZF9pY29uJyBjb2xvcj0nIzAwMCcgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvQ29udGVudD5cbiAgICAgIH1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVQYW5lLmRlZmF1bHRQcm9wcyA9IHsgdmVyc2VPYmplY3RzOiBbXSB9XG5cbmV4cG9ydCBkZWZhdWx0IFNjcmlwdHVyZVBhbmVcbiJdfQ==
|
|
237
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMiLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiQ29udGFpbmVyIiwiQ29udGVudCIsIk1lc3NhZ2VTdHlsZSIsImRpcmVjdGlvbiIsIndoaXRlU3BhY2UiLCJsaW5lSGVpZ2h0IiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImhlaWdodCIsIndpZHRoIiwiZm9udFNpemUiLCJmb250RmFtaWx5IiwiZm9udFdlaWdodCIsIlRleHRBcmVhU3R5bGUiLCJtaW5XaWR0aCIsIlNjcmlwdHVyZVBhbmUiLCJyZWZlcmVuY2UiLCJyZWZTdHlsZSIsImN1cnJlbnRJbmRleCIsImNvbnRlbnRTdHlsZSIsImRpc2FibGVXb3JkUG9wb3ZlciIsInJlc291cmNlU3RhdHVzIiwicmVzb3VyY2VMaW5rIiwic2VydmVyIiwiaXNOVCIsImdldExleGljb25EYXRhIiwidHJhbnNsYXRlIiwic2F2aW5nIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50Iiwib25BbGlnbm1lbnRGaW5pc2giLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlIiwidXNlU3RhdGUiLCJkb2luZ0FsaWdubWVudCIsIm5ld1RleHQiLCJ1cmxFcnJvciIsInN0YXRlIiwic2V0U3RhdGVfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImluaXRpYWxWZXJzZVRleHQiLCJzZXRJbml0aWFsVmVyc2VUZXh0IiwicmVzb3VyY2VNc2ciLCJjaGFwdGVyIiwidmVyc2UiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiYWN0aW9ucyIsImhhbmRsZUFsaWdubWVudENsaWNrIiwic2V0RWRpdGluZyIsInNldFZlcnNlQ2hhbmdlZCIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiZWRpdGluZyIsInVuc2F2ZWRDaGFuZ2VzIiwibmV3VmVyc2VUZXh0Iiwib3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSIsInVzZUVmZmVjdCIsImNhbGN1bGF0ZWRGb250U2l6ZSIsInVzZU1lbW8iLCJwYXJzZUZsb2F0IiwidGV4dEFyZWFTdHlsZSIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJ2ZXJzZU9iamVjdHMiLCJvblRleHRDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY2hhbmdlZCIsIm9uQmx1ciIsImNoZWNraW5nU3RhdGUiLCJ0aXRsZVRleHQiLCJwYWRkaW5nQm90dG9tIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsT0FBT0Msb0JBQVAsTUFBaUMseUJBQWpDO0FBQ0EsU0FBU0MsWUFBVCxRQUE2Qix5QkFBN0I7QUFDQSxTQUFTQyx5QkFBVCxRQUEwQyxrQkFBMUM7QUFDQSxTQUFTQyxrQkFBVCxRQUFtQyxhQUFuQztBQUNBLFNBQVNDLGtCQUFULFFBQW1DLGFBQW5DO0FBQ0EsU0FBU0MsMkJBQVQsRUFBc0NDLHlCQUF0QyxRQUF1RSx1Q0FBdkU7QUFDQSxTQUFTQyxTQUFULEVBQW9CQyxPQUFwQixRQUFtQyxVQUFuQztB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QUFFO0FBQWhCLENBQTdCO0FBRUEsZUFBZXZELGFBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCdcbmltcG9ydCB7IFZlcnNlT2JqZWN0cyB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHsgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgeyBTY3JpcHR1cmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldFJlc291cmNlTWVzc2FnZSB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzLCB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZUFsaWdubWVudEVkaXRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQ29udGVudCB9IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLyoqIGxhbmd1YWdlIGRpcmVjdGlvbiB0byB1c2UgKiovXG4gIGRpcmVjdGlvbjogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBkbyBub3QgZGlzcGxheSBsZXhpY29uIHBvcG92ZXIgb24gaG92ZXIgKiovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogYm9vbGVhbnx1bmRlZmluZWQ7XG4gIC8qKiBmb250IHNpemUgZm9yIG1lc3NhZ2VzICovXG4gIGZvbnRTaXplOiBudW1iZXI7XG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogRnVuY3Rpb247XG4gIC8qKiB0cnVlIGlmIGJyb3dzaW5nIE5UICovXG4gIGlzTlQ6IGJvb2xlYW47XG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciByZWZlcmVuY2UgKiovXG4gIHJlZlN0eWxlOiBhbnk7XG4gIC8qKiBvYmplY3QgdGhhdCBjb250YWlucyByZXNvdXJjZSBsb2FkaW5nIHN0YXR1cyBvciBmZXRjaGluZyBlcnJvcnMgKi9cbiAgcmVzb3VyY2VTdGF0dXM6IG9iamVjdHx1bmRlZmluZWQ7XG4gIC8qKiByZXNvdXJjZSB0aGF0IHdhcyBsb2FkZWQgKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBjdXJyZW50bHkgc2F2aW5nIHVwZGF0ZWQgdGV4dCBhbmQgYWxpZ25tZW50cyAqL1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIC8vIGluaXRpYWxpemF0aW9uIGZvciB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyxcbiAgLyoqIHNlcnZlciAqL1xuICBzZXJ2ZXI6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHVuc2F2ZWQgc3RhdHVzICovXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb247XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIHdoZXRoZXIgb3Igbm90IHRoaXMgY3VycmVudCB2ZXJzZSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgYWxpZ25tZW50ICovXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogYm9vbGVhbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHZlcnNlIGFsaWdubWVudCBoYXMgZmluaXNoZWQgKi9cbiAgb25BbGlnbm1lbnRGaW5pc2g6IEZ1bmN0aW9uO1xuICAvKiogZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHRvIHVwZGF0ZSB2ZXJzZSBhbGlnbm1lbnQgc3RhdHVzICovXG4gIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1czogRnVuY3Rpb247XG4gIC8qKiBUaGlzIGlzIGEgY2FsbGJhY2sgZm9yIG9yaWdpbmFsIHNjcmlwdHVyZSByZXNvdXJjZSAqL1xuICBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlOiBGdW5jdGlvbjtcbn1cblxuY29uc3QgTWVzc2FnZVN0eWxlID0ge1xuICBkaXJlY3Rpb246ICdsdHInLFxuICB3aGl0ZVNwYWNlOiAncHJlLXdyYXAnLFxuICBsaW5lSGVpZ2h0OiAnbm9ybWFsJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBoZWlnaHQ6ICcxMDAlJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgZm9udFNpemU6ICcxNnB4JyxcbiAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbn1cblxuY29uc3QgVGV4dEFyZWFTdHlsZSA9IHtcbiAgaGVpZ2h0OiAnNjAlJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgbWluV2lkdGg6ICcyMjBweCcsXG4gIGZvbnRTaXplOiAnMTZweCcsXG59XG5cbmZ1bmN0aW9uIFNjcmlwdHVyZVBhbmUoe1xuICByZWZlcmVuY2UsXG4gIHJlZlN0eWxlLFxuICBkaXJlY3Rpb24sXG4gIGN1cnJlbnRJbmRleCxcbiAgY29udGVudFN0eWxlLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIHJlc291cmNlU3RhdHVzLFxuICByZXNvdXJjZUxpbmssXG4gIHNlcnZlcixcbiAgaXNOVCxcbiAgZm9udFNpemUsXG4gIGdldExleGljb25EYXRhLFxuICB0cmFuc2xhdGUsXG4gIHNhdmluZyxcbiAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LFxuICBvbkFsaWdubWVudEZpbmlzaCxcbiAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlLFxufSA6IFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBkb2luZ0FsaWdubWVudDogZmFsc2UsXG4gICAgbmV3VGV4dDogbnVsbCxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGRvaW5nQWxpZ25tZW50LFxuICAgIG5ld1RleHQsXG4gICAgdXJsRXJyb3IsXG4gIH0gPSBzdGF0ZVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgY29uc3QgW2luaXRpYWxWZXJzZVRleHQsIHNldEluaXRpYWxWZXJzZVRleHRdID0gUmVhY3QudXNlU3RhdGUobnVsbClcbiAgY29uc3QgcmVzb3VyY2VNc2cgPSBzYXZpbmcgPyAnU2F2aW5nIENoYW5nZXMuLi4nIDogZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gcmVmZXJlbmNlXG4gIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAnbHRyJ1xuXG4gIHJlZlN0eWxlID0gcmVmU3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnOTAlJyxcbiAgfVxuXG4gIGNvbnRlbnRTdHlsZSA9IGNvbnRlbnRTdHlsZSB8fCB7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6ICcxMDAlJyxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0ID0gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdChfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZylcbiAgY29uc3Qge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIGVkaXRpbmcsXG4gICAgICB1bnNhdmVkQ2hhbmdlcyxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIG9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UsXG4gICAgfSxcbiAgfSA9IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG5cbiAgaWYgKGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCAmJiAhYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgaGFuZGxlQWxpZ25tZW50Q2xpY2soKVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMocmVmZXJlbmNlLCBhbGlnbmVkKVxuICB9LCBbYWxpZ25lZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSkge1xuICAgICAgc2V0T3JpZ2luYWxTY3JpcHR1cmVSZXNvdXJjZSAmJiBzZXRPcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlKG9yaWdpbmFsU2NyaXB0dXJlUmVzb3VyY2UpXG4gICAgfVxuICB9LFtvcmlnaW5hbFNjcmlwdHVyZVJlc291cmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAoZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogZmFsc2UgfSlcbiAgICAgIG9uQWxpZ25tZW50RmluaXNoICYmIG9uQWxpZ25tZW50RmluaXNoKClcbiAgICB9XG4gIH0sIFtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdD8uc3RhdGU/LmFsaWduZXJEYXRhXSlcblxuICAvLyBkeW5hbWljYWxseSBhZGp1c3QgZm9udCBzaXplXG4gIGNvbnN0IGNhbGN1bGF0ZWRGb250U2l6ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKFxuICAgIHBhcnNlRmxvYXQoVGV4dEFyZWFTdHlsZS5mb250U2l6ZSkgKiBmb250U2l6ZSAvIDEwMCArICdweCdcbiAgKSwgW2ZvbnRTaXplXSlcblxuICBjb25zdCB0ZXh0QXJlYVN0eWxlID0ge1xuICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAuLi5UZXh0QXJlYVN0eWxlLFxuICAgIGZvbnRTaXplOiBjYWxjdWxhdGVkRm9udFNpemUsXG4gIH1cblxuICB1c2VEZWVwQ29tcGFyZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHsgdmVyc2VPYmplY3RzOiBpbml0aWFsVmVyc2VPYmplY3RzIH0pXG4gICAgc2V0SW5pdGlhbFZlcnNlVGV4dCh2ZXJzZVRleHQpXG4gIH0sIFt7IHJlZmVyZW5jZSwgaW5pdGlhbFZlcnNlT2JqZWN0cyB9XSlcblxuICBmdW5jdGlvbiBvblRleHRDaGFuZ2UoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgbmV3VmVyc2VUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWVcbiAgICBjb25zdCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgLy8gY29uc29sZS5sb2coYFNQLm9uVGV4dENoYW5nZWAsIHsgY2hhbmdlZCwgbmV3VGV4dDogbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0IH0pXG4gICAgc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQsIG5ld1ZlcnNlVGV4dCwgaW5pdGlhbFZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7IG5ld1RleHQ6IG5ld1ZlcnNlVGV4dCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25CbHVyKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pikge1xuICAgIHNldEVkaXRpbmcoZmFsc2UsIG5ld1RleHQpXG4gIH1cblxuICBjb25zdCBjaGVja2luZ1N0YXRlID0gYWxpZ25lZCA/ICd2YWxpZCcgOiAnaW52YWxpZCdcbiAgY29uc3QgdGl0bGVUZXh0ID0gY2hlY2tpbmdTdGF0ZSA9PT0gJ3ZhbGlkJyA/ICdBbGlnbm1lbnQgaXMgVmFsaWQnIDogJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBzdHlsZT17eyBkaXJlY3Rpb24sIHdpZHRoOiAnMTAwJScsIHBhZGRpbmdCb3R0b206ICcwLjVlbScgfX0+XG4gICAgICB7cmVzb3VyY2VNc2cgP1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIDxkaXYgc3R5bGU9e01lc3NhZ2VTdHlsZX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogYCR7Zm9udFNpemV9JWAgfX0+IHtyZXNvdXJjZU1zZ30gPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA6XG4gICAgICAgIDxDb250ZW50PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtyZWZTdHlsZX0+IHtjaGFwdGVyfTp7dmVyc2V9Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtjb250ZW50U3R5bGV9IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEVkaXRpbmcgJiYgc2V0RWRpdGluZyh0cnVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2VkaXRpbmcgP1xuICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRleHRDaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3RleHRBcmVhU3R5bGV9XG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgPFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgIHZlcnNlS2V5PXtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YH1cbiAgICAgICAgICAgICAgICB2ZXJzZU9iamVjdHM9e2N1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c31cbiAgICAgICAgICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcn1cbiAgICAgICAgICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0NvbnRlbnQ+XG4gICAgICB9XG4gICAgPC9Db250YWluZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlUGFuZS5kZWZhdWx0UHJvcHMgPSB7IHZlcnNlT2JqZWN0czogW10gfVxuXG5leHBvcnQgZGVmYXVsdCBTY3JpcHR1cmVQYW5lXG4iXX0=
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import "core-js/modules/es.array.concat.js";
|
|
2
|
+
import "core-js/modules/es.array.map.js";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
5
|
+
import { DraggableCard } from 'translation-helps-rcl';
|
|
6
|
+
import Box from '@mui/material/Box';
|
|
7
|
+
import List from '@mui/material/List';
|
|
8
|
+
import ListItem from '@mui/material/ListItem';
|
|
9
|
+
import ListItemButton from '@mui/material/ListItemButton';
|
|
10
|
+
import ListItemIcon from '@mui/material/ListItemIcon';
|
|
11
|
+
import ListItemText from '@mui/material/ListItemText';
|
|
12
|
+
import { RxLink2, RxLinkBreak2 } from 'react-icons/rx';
|
|
13
|
+
var useStyles = makeStyles(function (theme) {
|
|
14
|
+
return {
|
|
15
|
+
wrapper: {
|
|
16
|
+
display: 'flex',
|
|
17
|
+
flexDirection: 'column'
|
|
18
|
+
},
|
|
19
|
+
list: {
|
|
20
|
+
paddingTop: theme.spacing(1),
|
|
21
|
+
paddingBottom: theme.spacing(1)
|
|
22
|
+
},
|
|
23
|
+
button: {
|
|
24
|
+
marginTop: theme.spacing(1),
|
|
25
|
+
marginBottom: theme.spacing(1),
|
|
26
|
+
alignSelf: 'flex-end'
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
var VerseSelectorContent = function VerseSelectorContent(_ref) {
|
|
32
|
+
var resourceId = _ref.resourceId,
|
|
33
|
+
versesForRef = _ref.versesForRef,
|
|
34
|
+
versesAlignmentStatus = _ref.versesAlignmentStatus,
|
|
35
|
+
onVerseSelect = _ref.onVerseSelect;
|
|
36
|
+
var renderedVerseItems = versesForRef.map(function (verse) {
|
|
37
|
+
var isVerseAligned = versesAlignmentStatus === null || versesAlignmentStatus === void 0 ? void 0 : versesAlignmentStatus["".concat(verse.chapter, ":").concat(verse.verse)];
|
|
38
|
+
var alignIcon = null;
|
|
39
|
+
|
|
40
|
+
if (isVerseAligned) {
|
|
41
|
+
alignIcon = /*#__PURE__*/React.createElement(RxLink2, {
|
|
42
|
+
id: "valid_icon_".concat(resourceId),
|
|
43
|
+
color: "#BBB",
|
|
44
|
+
size: 24
|
|
45
|
+
});
|
|
46
|
+
} else {
|
|
47
|
+
alignIcon = /*#__PURE__*/React.createElement(RxLinkBreak2, {
|
|
48
|
+
id: "invalid_alignment_icon_".concat(resourceId),
|
|
49
|
+
color: "#000",
|
|
50
|
+
size: 24
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return /*#__PURE__*/React.createElement(ListItem, {
|
|
55
|
+
disablePadding: true,
|
|
56
|
+
id: "verse-".concat(verse.chapter, ":").concat(verse.verse),
|
|
57
|
+
key: "verse-".concat(verse.chapter, ":").concat(verse.verse),
|
|
58
|
+
onClick: function onClick(event) {
|
|
59
|
+
onVerseSelect(verse);
|
|
60
|
+
}
|
|
61
|
+
}, /*#__PURE__*/React.createElement(ListItemButton, null, /*#__PURE__*/React.createElement(ListItemIcon, null, alignIcon), /*#__PURE__*/React.createElement(ListItemText, {
|
|
62
|
+
primary: "".concat(verse.chapter, ":").concat(verse.verse)
|
|
63
|
+
})));
|
|
64
|
+
});
|
|
65
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
66
|
+
id: "verse-list-".concat(resourceId),
|
|
67
|
+
sx: {
|
|
68
|
+
minWidth: '360px',
|
|
69
|
+
maxWidth: '600px',
|
|
70
|
+
bgcolor: 'background.paper'
|
|
71
|
+
}
|
|
72
|
+
}, /*#__PURE__*/React.createElement(List, null, renderedVerseItems));
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
var VerseSelectorPopup = function VerseSelectorPopup(_ref2) {
|
|
76
|
+
var resourceId = _ref2.resourceId,
|
|
77
|
+
versesForRef = _ref2.versesForRef,
|
|
78
|
+
versesAlignmentStatus = _ref2.versesAlignmentStatus,
|
|
79
|
+
onVerseSelect = _ref2.onVerseSelect,
|
|
80
|
+
open = _ref2.open,
|
|
81
|
+
onClose = _ref2.onClose;
|
|
82
|
+
return /*#__PURE__*/React.createElement(DraggableCard, {
|
|
83
|
+
id: "verse-selector-popup-".concat(resourceId),
|
|
84
|
+
title: "Select Verse to Align",
|
|
85
|
+
open: open,
|
|
86
|
+
showRawContent: true,
|
|
87
|
+
initialPosition: {
|
|
88
|
+
x: 0,
|
|
89
|
+
y: -10
|
|
90
|
+
} // workspaceRef={mainScreenRef}
|
|
91
|
+
,
|
|
92
|
+
onClose: onClose,
|
|
93
|
+
dimBackground: true,
|
|
94
|
+
content: /*#__PURE__*/React.createElement(VerseSelectorContent, {
|
|
95
|
+
resourceId: resourceId,
|
|
96
|
+
versesForRef: versesForRef,
|
|
97
|
+
versesAlignmentStatus: versesAlignmentStatus,
|
|
98
|
+
onVerseSelect: onVerseSelect
|
|
99
|
+
})
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export default VerseSelectorPopup;
|
|
104
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1ZlcnNlU2VsZWN0b3JQb3B1cC9WZXJzZVNlbGVjdG9yUG9wdXAudHN4Il0sIm5hbWVzIjpbIlJlYWN0IiwibWFrZVN0eWxlcyIsIkRyYWdnYWJsZUNhcmQiLCJCb3giLCJMaXN0IiwiTGlzdEl0ZW0iLCJMaXN0SXRlbUJ1dHRvbiIsIkxpc3RJdGVtSWNvbiIsIkxpc3RJdGVtVGV4dCIsIlJ4TGluazIiLCJSeExpbmtCcmVhazIiLCJ1c2VTdHlsZXMiLCJ0aGVtZSIsIndyYXBwZXIiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImxpc3QiLCJwYWRkaW5nVG9wIiwic3BhY2luZyIsInBhZGRpbmdCb3R0b20iLCJidXR0b24iLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJhbGlnblNlbGYiLCJWZXJzZVNlbGVjdG9yQ29udGVudCIsInJlc291cmNlSWQiLCJ2ZXJzZXNGb3JSZWYiLCJ2ZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJvblZlcnNlU2VsZWN0IiwicmVuZGVyZWRWZXJzZUl0ZW1zIiwibWFwIiwidmVyc2UiLCJpc1ZlcnNlQWxpZ25lZCIsImNoYXB0ZXIiLCJhbGlnbkljb24iLCJldmVudCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJiZ2NvbG9yIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwib3BlbiIsIm9uQ2xvc2UiLCJ4IiwieSJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLDBCQUEzQjtBQUNBLFNBQVNDLGFBQVQsUUFBOEIsdUJBQTlCO0FBQ0EsT0FBT0MsR0FBUCxNQUFnQixtQkFBaEI7QUFDQSxPQUFPQyxJQUFQLE1BQWlCLG9CQUFqQjtBQUNBLE9BQU9DLFFBQVAsTUFBcUIsd0JBQXJCO0FBQ0EsT0FBT0MsY0FBUCxNQUEyQiw4QkFBM0I7QUFDQSxPQUFPQyxZQUFQLE1BQXlCLDRCQUF6QjtBQUNBLE9BQU9DLFlB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RjtBQU9ELENBeENEOztBQTBDQSxJQUFNVSxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQXFCLFFBQXVGO0FBQUEsTUFBcEZkLFVBQW9GLFNBQXBGQSxVQUFvRjtBQUFBLE1BQXhFQyxZQUF3RSxTQUF4RUEsWUFBd0U7QUFBQSxNQUExREMscUJBQTBELFNBQTFEQSxxQkFBMEQ7QUFBQSxNQUFuQ0MsYUFBbUMsU0FBbkNBLGFBQW1DO0FBQUEsTUFBcEJZLElBQW9CLFNBQXBCQSxJQUFvQjtBQUFBLE1BQWRDLE9BQWMsU0FBZEEsT0FBYztBQUNoSCxzQkFFRSxvQkFBQyxhQUFEO0FBQ0UsSUFBQSxFQUFFLGlDQUEwQmhCLFVBQTFCLENBREo7QUFFRSxJQUFBLEtBQUssRUFBQyx1QkFGUjtBQUdFLElBQUEsSUFBSSxFQUFFZSxJQUhSO0FBSUUsSUFBQSxjQUFjLE1BSmhCO0FBS0UsSUFBQSxlQUFlLEVBQUU7QUFBRUUsTUFBQUEsQ0FBQyxFQUFFLENBQUw7QUFBUUMsTUFBQUEsQ0FBQyxFQUFFLENBQUM7QUFBWixLQUxuQixDQU1FO0FBTkY7QUFPRSxJQUFBLE9BQU8sRUFBRUYsT0FQWDtBQVFFLElBQUEsYUFBYSxFQUFFLElBUmpCO0FBU0UsSUFBQSxPQUFPLGVBQ0wsb0JBQUMsb0JBQUQ7QUFDRSxNQUFBLFVBQVUsRUFBRWhCLFVBRGQ7QUFFRSxNQUFBLFlBQVksRUFBRUMsWUFGaEI7QUFHRSxNQUFBLHFCQUFxQixFQUFFQyxxQkFIekI7QUFJRSxNQUFBLGFBQWEsRUFBRUM7QUFKakI7QUFWSixJQUZGO0FBcUJELENBdEJEOztBQXdCQSxlQUFlVyxrQkFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL3N0eWxlcydcbmltcG9ydCB7IERyYWdnYWJsZUNhcmQgfSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgQm94IGZyb20gJ0BtdWkvbWF0ZXJpYWwvQm94JztcbmltcG9ydCBMaXN0IGZyb20gJ0BtdWkvbWF0ZXJpYWwvTGlzdCc7XG5pbXBvcnQgTGlzdEl0ZW0gZnJvbSAnQG11aS9tYXRlcmlhbC9MaXN0SXRlbSc7XG5pbXBvcnQgTGlzdEl0ZW1CdXR0b24gZnJvbSAnQG11aS9tYXRlcmlhbC9MaXN0SXRlbUJ1dHRvbic7XG5pbXBvcnQgTGlzdEl0ZW1JY29uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvTGlzdEl0ZW1JY29uJztcbmltcG9ydCBMaXN0SXRlbVRleHQgZnJvbSAnQG11aS9tYXRlcmlhbC9MaXN0SXRlbVRleHQnO1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5cbmNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXModGhlbWUgPT4gKHtcbiAgd3JhcHBlcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgfSxcbiAgbGlzdDoge1xuICAgIHBhZGRpbmdUb3A6IHRoZW1lLnNwYWNpbmcoMSksXG4gICAgcGFkZGluZ0JvdHRvbTogdGhlbWUuc3BhY2luZygxKSxcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nKDEpLFxuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZygxKSxcbiAgICBhbGlnblNlbGY6ICdmbGV4LWVuZCcsXG4gIH0sXG59KSlcblxuY29uc3QgVmVyc2VTZWxlY3RvckNvbnRlbnQgPSAoe1xuICByZXNvdXJjZUlkLFxuICB2ZXJzZXNGb3JSZWYsXG4gIHZlcnNlc0FsaWdubWVudFN0YXR1cyxcbiAgb25WZXJzZVNlbGVjdCxcbn0pID0+IHtcblxuICBjb25zdCByZW5kZXJlZFZlcnNlSXRlbXMgPSB2ZXJzZXNGb3JSZWYubWFwKHZlcnNlID0+IHtcbiAgICBjb25zdCBpc1ZlcnNlQWxpZ25lZCA9IHZlcnNlc0FsaWdubWVudFN0YXR1cz8uW2Ake3ZlcnNlLmNoYXB0ZXJ9OiR7dmVyc2UudmVyc2V9YF1cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGlmIChpc1ZlcnNlQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicgc2l6ZT17MjR9IC8+XG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nIzAwMCcgc2l6ZT17MjR9IC8+XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxMaXN0SXRlbVxuICAgICAgICBkaXNhYmxlUGFkZGluZ1xuICAgICAgICBpZD17YHZlcnNlLSR7dmVyc2UuY2hhcHRlcn06JHt2ZXJzZS52ZXJzZX1gfVxuICAgICAgICBrZXk9e2B2ZXJzZS0ke3ZlcnNlLmNoYXB0ZXJ9OiR7dmVyc2UudmVyc2V9YH1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7b25WZXJzZVNlbGVjdCh2ZXJzZSl9fVxuICAgICAgPlxuICAgICAgICA8TGlzdEl0ZW1CdXR0b24+XG4gICAgICAgICAgPExpc3RJdGVtSWNvbj5cbiAgICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgICAgPC9MaXN0SXRlbUljb24+XG4gICAgICAgICAgPExpc3RJdGVtVGV4dCBwcmltYXJ5PXtgJHt2ZXJzZS5jaGFwdGVyfToke3ZlcnNlLnZlcnNlfWB9IC8+XG4gICAgICAgIDwvTGlzdEl0ZW1CdXR0b24+XG4gICAgICA8L0xpc3RJdGVtPlxuICAgIClcbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxCb3ggaWQ9e2B2ZXJzZS1saXN0LSR7cmVzb3VyY2VJZH1gfSBzeD17eyBtaW5XaWR0aDogJzM2MHB4JyxtYXhXaWR0aDogJzYwMHB4JywgYmdjb2xvcjogJ2JhY2tncm91bmQucGFwZXInIH19PlxuICAgICAgPExpc3Q+XG4gICAgICAgIHtyZW5kZXJlZFZlcnNlSXRlbXN9XG4gICAgICA8L0xpc3Q+XG4gICAgPC9Cb3g+XG4gIClcbn1cblxuY29uc3QgVmVyc2VTZWxlY3RvclBvcHVwID0gKHsgcmVzb3VyY2VJZCwgdmVyc2VzRm9yUmVmLCB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIG9uVmVyc2VTZWxlY3QsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICByZXR1cm4gKFxuXG4gICAgPERyYWdnYWJsZUNhcmRcbiAgICAgIGlkPXtgdmVyc2Utc2VsZWN0b3ItcG9wdXAtJHtyZXNvdXJjZUlkfWB9XG4gICAgICB0aXRsZT1cIlNlbGVjdCBWZXJzZSB0byBBbGlnblwiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgc2hvd1Jhd0NvbnRlbnRcbiAgICAgIGluaXRpYWxQb3NpdGlvbj17eyB4OiAwLCB5OiAtMTAgfX1cbiAgICAgIC8vIHdvcmtzcGFjZVJlZj17bWFpblNjcmVlblJlZn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBkaW1CYWNrZ3JvdW5kPXt0cnVlfVxuICAgICAgY29udGVudD17XG4gICAgICAgIDxWZXJzZVNlbGVjdG9yQ29udGVudFxuICAgICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgICAgb25WZXJzZVNlbGVjdD17b25WZXJzZVNlbGVjdH1cbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICAvPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IFZlcnNlU2VsZWN0b3JQb3B1cFxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { default as VerseSelectorPopup } from './VerseSelectorPopup';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1ZlcnNlU2VsZWN0b3JQb3B1cC9pbmRleC50cyJdLCJuYW1lcyI6WyJkZWZhdWx0IiwiVmVyc2VTZWxlY3RvclBvcHVwIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxPQUFPLElBQUlDLGtCQUFwQixRQUE4QyxzQkFBOUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuIl19
|
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-patch.
|
|
4
|
+
"version": "3.3.3-patch.3",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|