occam-nominal 1.0.430 → 1.0.432
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.
- package/lib/context/file/nominal.js +1 -5
- package/lib/context/mnemic.js +6 -44
- package/lib/context.js +1 -13
- package/lib/element/assertion/signature.js +10 -5
- package/lib/element/constructor/bracketed.js +1 -6
- package/lib/element/equality.js +4 -13
- package/lib/element/equivalence.js +49 -37
- package/lib/element/fact/step.js +2 -2
- package/lib/element/signature.js +33 -29
- package/lib/element/term.js +11 -11
- package/lib/process/equate.js +53 -19
- package/lib/process/unification.js +1 -2
- package/lib/process/unify.js +63 -60
- package/lib/utilities/brackets.js +17 -13
- package/lib/utilities/equivalences.js +6 -6
- package/lib/utilities/string.js +7 -3
- package/package.json +5 -5
- package/src/context/file/nominal.js +0 -7
- package/src/context/mnemic.js +3 -69
- package/src/context.js +0 -21
- package/src/element/assertion/signature.js +11 -5
- package/src/element/constructor/bracketed.js +0 -8
- package/src/element/equality.js +4 -18
- package/src/element/equivalence.js +68 -49
- package/src/element/fact/step.js +1 -1
- package/src/element/signature.js +36 -35
- package/src/element/term.js +10 -12
- package/src/process/equate.js +79 -27
- package/src/process/unification.js +0 -2
- package/src/process/unify.js +94 -83
- package/src/utilities/brackets.js +22 -14
- package/src/utilities/equivalences.js +3 -3
- package/src/utilities/string.js +8 -2
|
@@ -26,32 +26,36 @@ const _element = require("../utilities/element");
|
|
|
26
26
|
const _constants = require("../constants");
|
|
27
27
|
const _instance = require("../utilities/instance");
|
|
28
28
|
function stripBracketsFromTerm(term, context) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
let termNode = term.getNode(), bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
30
|
+
while(bracketedTermChildNode !== null){
|
|
31
|
+
termNode = bracketedTermChildNode; ///
|
|
32
|
+
bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
33
33
|
}
|
|
34
|
+
term = (0, _element.termFromTermNode)(termNode, context);
|
|
34
35
|
return term;
|
|
35
36
|
}
|
|
36
37
|
function stripBracketsFromTermNode(termNode) {
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
let bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
39
|
+
while(bracketedTermChildNode !== null){
|
|
39
40
|
termNode = bracketedTermChildNode; ///
|
|
41
|
+
bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
40
42
|
}
|
|
41
43
|
return termNode;
|
|
42
44
|
}
|
|
43
45
|
function stripBracketsFromStatement(statement, context) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
let statementNode = statement.getNode(), bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
47
|
+
while(bracketedStatementChildNode !== null){
|
|
48
|
+
statementNode = bracketedStatementChildNode; ///
|
|
49
|
+
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
48
50
|
}
|
|
51
|
+
statement = (0, _element.statementFromStatementNode)(statementNode, context);
|
|
49
52
|
return statement;
|
|
50
53
|
}
|
|
51
54
|
function stripBracketsFromStatementNode(statementNode) {
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
let bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
56
|
+
while(bracketedStatementChildNode !== null){
|
|
54
57
|
statementNode = bracketedStatementChildNode; ///
|
|
58
|
+
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
55
59
|
}
|
|
56
60
|
return statementNode;
|
|
57
61
|
}
|
|
@@ -74,4 +78,4 @@ function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
|
74
78
|
return bracketedStatementChildNode;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvYnJhY2tldHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHRlcm1Gcm9tVGVybU5vZGUsIHN0YXRlbWVudEZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBCUkFDS0VURURfVEVSTV9ERVBUSCwgQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGJyYWNrZXRlZENvbnN0cnVjdG9yRnJvbU5vdGhpbmcsIGJyYWNrZXRlZENvbWJpbmF0b3JGcm9tTm90aGluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvaW5zdGFuY2VcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtTm9kZSA9IHRlcm0uZ2V0Tm9kZSgpLFxuICAgICAgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUodGVybU5vZGUpO1xuXG4gIHdoaWxlIChicmFja2V0ZWRUZXJtQ2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgdGVybU5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlOyAgLy8vXG5cbiAgICBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSk7XG4gIH1cblxuICB0ZXJtID0gdGVybUZyb21UZXJtTm9kZSh0ZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHRlcm07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEJyYWNrZXRzRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKSB7XG4gIGxldCBicmFja2V0ZWRUZXJtQ2hpbGROb2RlID0gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSk7XG5cbiAgd2hpbGUgKGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgIT09IG51bGwpIHtcbiAgICB0ZXJtTm9kZSA9IGJyYWNrZXRlZFRlcm1DaGlsZE5vZGU7ICAvLy9cblxuICAgIGJyYWNrZXRlZFRlcm1DaGlsZE5vZGUgPSBicmFja2V0ZWRUZXJtQ2hpbGROb2RlRnJvbVRlcm1Ob2RlKHRlcm1Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtTm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBsZXQgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgd2hpbGUgKGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSAhPT0gbnVsbCkge1xuICAgIHN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGU7ICAvLy9cblxuICAgIGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gIGxldCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICB3aGlsZSAoYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlICE9PSBudWxsKSB7XG4gICAgc3RhdGVtZW50Tm9kZSA9IGJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZTsgIC8vL1xuXG4gICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50Tm9kZTtcbn1cblxuZnVuY3Rpb24gYnJhY2tldGVkVGVybUNoaWxkTm9kZUZyb21UZXJtTm9kZSh0ZXJtTm9kZSkge1xuICBsZXQgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IG51bGw7XG5cbiAgY29uc3QgZGVwdGggPSBCUkFDS0VURURfVEVSTV9ERVBUSCxcbiAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3IgPSBicmFja2V0ZWRDb25zdHJ1Y3RvckZyb21Ob3RoaW5nKCksXG4gICAgICAgIGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybSA9IGJyYWNrZXRlZENvbnN0cnVjdG9yLmdldFRlcm0oKSxcbiAgICAgICAgYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtTm9kZSA9IGJyYWNrZXRlZENvbnN0cnVjdG9yVGVybS5nZXROb2RlKCksXG4gICAgICAgIHRlcm1Ob2RlTWF0Y2hCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUgPSB0ZXJtTm9kZS5tYXRjaChicmFja2V0ZWRDb25zdHJ1Y3RvclRlcm1Ob2RlLCBkZXB0aCk7XG5cbiAgaWYgKHRlcm1Ob2RlTWF0Y2hCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUpIHtcbiAgICBjb25zdCBzaW5ndWxhclRlcm1Ob2RlID0gdGVybU5vZGUuZ2V0U2luZ3VsYXJUZXJtTm9kZSgpO1xuXG4gICAgYnJhY2tldGVkVGVybUNoaWxkTm9kZSA9IHNpbmd1bGFyVGVybU5vZGU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBicmFja2V0ZWRUZXJtQ2hpbGROb2RlO1xufVxuXG5mdW5jdGlvbiBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSB7XG4gIGxldCBicmFja2V0ZWRTdGF0ZW1lbnRDaGlsZE5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGRlcHRoID0gQlJBQ0tFVEVEX1NUQVRFTUVOVF9ERVBUSCxcbiAgICAgICAgYnJhY2tldGVkQ29tYmluYXRvciA9IGJyYWNrZXRlZENvbWJpbmF0b3JGcm9tTm90aGluZygpLFxuICAgICAgICBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50ID0gYnJhY2tldGVkQ29tYmluYXRvci5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudG5Ob2RlID0gYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudE5vZGVNYXRjaEJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZS5tYXRjaChicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50bk5vZGUsIGRlcHRoKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZU1hdGNoQnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBzaW5ndWxhclN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlLmdldFNpbmd1bGFyU3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlID0gc2luZ3VsYXJTdGF0ZW1lbnROb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gYnJhY2tldGVkU3RhdGVtZW50Q2hpbGROb2RlO1xufVxuIl0sIm5hbWVzIjpbInN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50Iiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnROb2RlIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtIiwic3RyaXBCcmFja2V0c0Zyb21UZXJtTm9kZSIsInRlcm0iLCJjb250ZXh0IiwidGVybU5vZGUiLCJnZXROb2RlIiwiYnJhY2tldGVkVGVybUNoaWxkTm9kZSIsImJyYWNrZXRlZFRlcm1DaGlsZE5vZGVGcm9tVGVybU5vZGUiLCJ0ZXJtRnJvbVRlcm1Ob2RlIiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZSIsImJyYWNrZXRlZFN0YXRlbWVudENoaWxkTm9kZUZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJkZXB0aCIsIkJSQUNLRVRFRF9URVJNX0RFUFRIIiwiYnJhY2tldGVkQ29uc3RydWN0b3IiLCJicmFja2V0ZWRDb25zdHJ1Y3RvckZyb21Ob3RoaW5nIiwiYnJhY2tldGVkQ29uc3RydWN0b3JUZXJtIiwiZ2V0VGVybSIsImJyYWNrZXRlZENvbnN0cnVjdG9yVGVybU5vZGUiLCJ0ZXJtTm9kZU1hdGNoQnJhY2tldGVkQ29uc3RydWN0b3JOb2RlIiwibWF0Y2giLCJzaW5ndWxhclRlcm1Ob2RlIiwiZ2V0U2luZ3VsYXJUZXJtTm9kZSIsIkJSQUNLRVRFRF9TVEFURU1FTlRfREVQVEgiLCJicmFja2V0ZWRDb21iaW5hdG9yIiwiYnJhY2tldGVkQ29tYmluYXRvckZyb21Ob3RoaW5nIiwiYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnRuTm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaEJyYWNrZXRlZENvbWJpbmF0b3JTdGF0ZW1lbnROb2RlIiwic2luZ3VsYXJTdGF0ZW1lbnROb2RlIiwiZ2V0U2luZ3VsYXJTdGF0ZW1lbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFpQ2dCQTtlQUFBQTs7UUFlQUM7ZUFBQUE7O1FBMUNBQztlQUFBQTs7UUFlQUM7ZUFBQUE7Ozt5QkFuQjZDOzJCQUNHOzBCQUNnQjtBQUV6RSxTQUFTRCxzQkFBc0JFLElBQUksRUFBRUMsT0FBTztJQUNqRCxJQUFJQyxXQUFXRixLQUFLRyxPQUFPLElBQ3ZCQyx5QkFBeUJDLG1DQUFtQ0g7SUFFaEUsTUFBT0UsMkJBQTJCLEtBQU07UUFDdENGLFdBQVdFLHdCQUF5QixHQUFHO1FBRXZDQSx5QkFBeUJDLG1DQUFtQ0g7SUFDOUQ7SUFFQUYsT0FBT00sSUFBQUEseUJBQWdCLEVBQUNKLFVBQVVEO0lBRWxDLE9BQU9EO0FBQ1Q7QUFFTyxTQUFTRCwwQkFBMEJHLFFBQVE7SUFDaEQsSUFBSUUseUJBQXlCQyxtQ0FBbUNIO0lBRWhFLE1BQU9FLDJCQUEyQixLQUFNO1FBQ3RDRixXQUFXRSx3QkFBeUIsR0FBRztRQUV2Q0EseUJBQXlCQyxtQ0FBbUNIO0lBQzlEO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVNOLDJCQUEyQlcsU0FBUyxFQUFFTixPQUFPO0lBQzNELElBQUlPLGdCQUFnQkQsVUFBVUosT0FBTyxJQUNuQ00sOEJBQThCQyw2Q0FBNkNGO0lBRTdFLE1BQU9DLGdDQUFnQyxLQUFNO1FBQzNDRCxnQkFBZ0JDLDZCQUE4QixHQUFHO1FBRWpEQSw4QkFBOEJDLDZDQUE2Q0Y7SUFDN0U7SUFFQUQsWUFBWUksSUFBQUEsbUNBQTBCLEVBQUNILGVBQWVQO0lBRXRELE9BQU9NO0FBQ1Q7QUFFTyxTQUFTViwrQkFBK0JXLGFBQWE7SUFDMUQsSUFBSUMsOEJBQThCQyw2Q0FBNkNGO0lBRS9FLE1BQU9DLGdDQUFnQyxLQUFNO1FBQzNDRCxnQkFBZ0JDLDZCQUE4QixHQUFHO1FBRWpEQSw4QkFBOEJDLDZDQUE2Q0Y7SUFDN0U7SUFFQSxPQUFPQTtBQUNUO0FBRUEsU0FBU0gsbUNBQW1DSCxRQUFRO0lBQ2xELElBQUlFLHlCQUF5QjtJQUU3QixNQUFNUSxRQUFRQywrQkFBb0IsRUFDNUJDLHVCQUF1QkMsSUFBQUEseUNBQStCLEtBQ3REQywyQkFBMkJGLHFCQUFxQkcsT0FBTyxJQUN2REMsK0JBQStCRix5QkFBeUJiLE9BQU8sSUFDL0RnQix3Q0FBd0NqQixTQUFTa0IsS0FBSyxDQUFDRiw4QkFBOEJOO0lBRTNGLElBQUlPLHVDQUF1QztRQUN6QyxNQUFNRSxtQkFBbUJuQixTQUFTb0IsbUJBQW1CO1FBRXJEbEIseUJBQXlCaUIsa0JBQW1CLEdBQUc7SUFDakQ7SUFFQSxPQUFPakI7QUFDVDtBQUVBLFNBQVNNLDZDQUE2Q0YsYUFBYTtJQUNqRSxJQUFJQyw4QkFBOEI7SUFFbEMsTUFBTUcsUUFBUVcsb0NBQXlCLEVBQ2pDQyxzQkFBc0JDLElBQUFBLHdDQUE4QixLQUNwREMsK0JBQStCRixvQkFBb0JHLFlBQVksSUFDL0RDLG9DQUFvQ0YsNkJBQTZCdkIsT0FBTyxJQUN4RTBCLHFEQUFxRHJCLGNBQWNZLEtBQUssQ0FBQ1EsbUNBQW1DaEI7SUFFbEgsSUFBSWlCLG9EQUFvRDtRQUN0RCxNQUFNQyx3QkFBd0J0QixjQUFjdUIsd0JBQXdCO1FBRXBFdEIsOEJBQThCcUIsdUJBQXdCLEdBQUc7SUFDM0Q7SUFFQSxPQUFPckI7QUFDVCJ9
|
|
@@ -12,8 +12,8 @@ _export(exports, {
|
|
|
12
12
|
get equivalencesFromEquality () {
|
|
13
13
|
return equivalencesFromEquality;
|
|
14
14
|
},
|
|
15
|
-
get
|
|
16
|
-
return
|
|
15
|
+
get findEquivalenceByTermNode () {
|
|
16
|
+
return findEquivalenceByTermNode;
|
|
17
17
|
},
|
|
18
18
|
get mergeEquivalences () {
|
|
19
19
|
return mergeEquivalences;
|
|
@@ -46,10 +46,10 @@ function equivalencesFromEquality(equality, context) {
|
|
|
46
46
|
];
|
|
47
47
|
return equivalences;
|
|
48
48
|
}
|
|
49
|
-
function
|
|
49
|
+
function findEquivalenceByTermNode(equivalences, termNode) {
|
|
50
50
|
const equivalence = equivalences.find((equivalence)=>{
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
51
|
+
const termEquates = equivalence.matchTermNode(termNode);
|
|
52
|
+
if (termEquates) {
|
|
53
53
|
return true;
|
|
54
54
|
}
|
|
55
55
|
}) || null;
|
|
@@ -131,4 +131,4 @@ function groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquiva
|
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZXF1aXZhbGVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBzZXBhcmF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBjb250ZXh0KSB7XG4gIGVxdWl2YWxlbmNlc0EgPSBbICAvLy9cbiAgICAuLi5lcXVpdmFsZW5jZXNBXG4gIF07XG5cbiAgZXF1aXZhbGVuY2VzQi5mb3JFYWNoKChlcXVpdmFsZW5jZUIpID0+IHtcbiAgICBlcXVpdmFsZW5jZXNBID0gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpO1xuICB9KTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlc0Zyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCkge1xuICBjb25zdCB7IEVxdWl2YWxlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZWF1bGl2YWxlbmNlID0gRXF1aXZhbGVuY2UuZnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgZXF1aXZhbGVuY2VzID0gW1xuICAgICAgICAgIGVhdWxpdmFsZW5jZVxuICAgICAgICBdO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlcyhlcXVpdmFsZW5jZXMsIHRlcm1Ob2Rlcykge1xuICBjb25zdCBlcXVpdmFsZW5jZSA9IGVxdWl2YWxlbmNlcy5maW5kKChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IHRlcm1Ob2RlTWF0Y2hlcyA9IGVxdWl2YWxlbmNlLm1hdGNoVGVybU5vZGVzKHRlcm1Ob2Rlcyk7XG5cbiAgICBpZiAodGVybU5vZGVNYXRjaGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgbGV0IGdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzLFxuICAgICAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsXG4gICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7XG5cbiAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcy5sZW5ndGg7XG5cbiAgaWYgKGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2VzID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7IC8vL1xuXG4gICAgbGV0IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IDE7XG5cbiAgICB3aGlsZSAoaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSAwLFxuICAgICAgICAgICAgcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gLTE7XG5cbiAgICAgIHdoaWxlIChkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID4gcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoKSB7XG4gICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IGRlZmluZWRWYXJpYWJsZXNMZW5ndGg7ICAvLy9cblxuICAgICAgICBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCk7XG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgZXF1aXZhbGVuY2VzID0gcmVtYWluaW5nRXF1aXZhbGVuY2VzOyAvLy9cblxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgcHVzaChncm91bmRlZEVxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKTtcblxuICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLmxlbmd0aDsgIC8vL1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlc0EsIGVxdWl2YWxlbmNlQiwgY29udGV4dCkge1xuICBjb25zdCBtZXJnZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBlcXVpdmFsZW5jZXNBLmZvckVhY2goKGVxdWl2YWxlbmNlQSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSA9IGVxdWl2YWxlbmNlQi5pc0Rpc2pvaW50RnJvbShlcXVpdmFsZW5jZUEpO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSkge1xuICAgICAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUE7ICAvLy9cblxuICAgICAgbWVyZ2VkRXF1aXZhbGVuY2VzLnB1c2gobWVyZ2VkRXF1aXZhbGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcXVpdmFsZW5jZUIgPSBlcXVpdmFsZW5jZUIubWVyZ2VkV2l0aChlcXVpdmFsZW5jZUEsIGNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7ICAvLy9cblxuICBtZXJnZWRFcXVpdmFsZW5jZXMucHVzaChtZXJnZWRFcXVpdmFsZW5jZSk7XG5cbiAgZXF1aXZhbGVuY2VzQSA9IG1lcmdlZEVxdWl2YWxlbmNlczsgIC8vL1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXNBO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMoZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBncm91bmRlZFRlcm1zLmZvckVhY2goKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm0gPSBncm91bmRlZFRlcm0sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIHZhcmlhYmxlcy5mb3JFYWNoKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5pbmNsdWRlcyh2YXJpYWJsZSk7XG5cbiAgICAgIGlmICghZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcy5wdXNoKGRlZmluZWRWYXJpYWJsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCkge1xuICBzZXBhcmF0ZShlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW5pdGlhbGx5R3JvdW5kZWQgPSBlcXVpdmFsZW5jZS5pc0luaXRpYWxseUdyb3VuZGVkKGNvbnRleHQpO1xuXG4gICAgaWYgKCFlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gIHNlcGFyYXRlKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCkge1xuICBncm91bmRlZEVxdWl2YWxlbmNlcy5mb3JFYWNoKChncm91bmRlZEVxdWl2YWxlbmNlKSA9PiB7XG4gICAgZ3JvdW5kZWRFcXVpdmFsZW5jZS5nZXRHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJlcXVpdmFsZW5jZXNGcm9tRXF1YWxpdHkiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlcyIsIm1lcmdlRXF1aXZhbGVuY2VzIiwic2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyIsInB1c2giLCJzZXBhcmF0ZSIsImFycmF5VXRpbGl0aWVzIiwiZXF1aXZhbGVuY2VzQSIsImVxdWl2YWxlbmNlc0IiLCJjb250ZXh0IiwiZm9yRWFjaCIsImVxdWl2YWxlbmNlQiIsIm1lcmdlRXF1aXZhbGVuY2UiLCJlcXVhbGl0eSIsIkVxdWl2YWxlbmNlIiwiZWxlbWVudHMiLCJlYXVsaXZhbGVuY2UiLCJmcm9tRXF1YWxpdHkiLCJlcXVpdmFsZW5jZXMiLCJ0ZXJtTm9kZXMiLCJlcXVpdmFsZW5jZSIsImZpbmQiLCJ0ZXJtTm9kZU1hdGNoZXMiLCJtYXRjaFRlcm1Ob2RlcyIsImdyb3VuZGVkVGVybXMiLCJkZWZpbmVkVmFyaWFibGVzIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJyZW1haW5pbmdFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsInNlcGFyYXRlSW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImxlbmd0aCIsImltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCIsImRlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJwcmV2aW91c0RlZmluZWRWYXJpYWJsZXNMZW5ndGgiLCJncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyIsImRlZmluZWRWYXJpYWJsZXNGcm9tR3JvdW5kZWRUZXJtcyIsInNlcGFyYXRlSW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwibWVyZ2VkRXF1aXZhbGVuY2VzIiwiZXF1aXZhbGVuY2VBIiwiZXF1aXZhbGVuY2VCRGlzam9pbnRGcm9tRXF1aXZhbGVuY2VBIiwiaXNEaXNqb2ludEZyb20iLCJtZXJnZWRFcXVpdmFsZW5jZSIsIm1lcmdlZFdpdGgiLCJncm91bmRlZFRlcm0iLCJ0ZXJtIiwidmFyaWFibGVzIiwidmFyaWFibGVzRnJvbVRlcm0iLCJ2YXJpYWJsZSIsImRlZmluZWRWYXJpYWJsZXNJbmNsdWRlc1Rlcm1WYXJpYWJsZSIsImluY2x1ZGVzIiwiZGVmaW5lZFZhcmlhYmxlIiwiZXF1aXZhbGVuY2VJbml0aWFsbHlHcm91bmRlZCIsImlzSW5pdGlhbGx5R3JvdW5kZWQiLCJlcXVpdmFsZW5jZUltcGxpY2l0bHlHcm91bmRlZCIsImlzSW1wbGljaXRseUdyb3VuZGVkIiwiZ3JvdW5kZWRFcXVpdmFsZW5jZSIsImdldEdyb3VuZGVkVGVybXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXNCZ0JBO2VBQUFBOztRQVVBQztlQUFBQTs7UUF0QkFDO2VBQUFBOztRQWtDQUM7ZUFBQUE7OzsyQkExQ2U7aUVBRVY7NkJBRWE7Ozs7OztBQUVsQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFLEdBQUdDLHlCQUFjO0FBRWxDLFNBQVNKLGtCQUFrQkssYUFBYSxFQUFFQyxhQUFhLEVBQUVDLE9BQU87SUFDckVGLGdCQUFnQjtXQUNYQTtLQUNKO0lBRURDLGNBQWNFLE9BQU8sQ0FBQyxDQUFDQztRQUNyQkosZ0JBQWdCSyxpQkFBaUJMLGVBQWVJLGNBQWNGO0lBQ2hFO0lBRUEsT0FBT0Y7QUFDVDtBQUVPLFNBQVNQLHlCQUF5QmEsUUFBUSxFQUFFSixPQUFPO0lBQ3hELE1BQU0sRUFBRUssV0FBVyxFQUFFLEdBQUdDLGlCQUFRLEVBQzFCQyxlQUFlRixZQUFZRyxZQUFZLENBQUNKLFVBQVVKLFVBQ2xEUyxlQUFlO1FBQ2JGO0tBQ0Q7SUFFUCxPQUFPRTtBQUNUO0FBRU8sU0FBU2pCLDJCQUEyQmlCLFlBQVksRUFBRUMsU0FBUztJQUNoRSxNQUFNQyxjQUFjRixhQUFhRyxJQUFJLENBQUMsQ0FBQ0Q7UUFDckMsTUFBTUUsa0JBQWtCRixZQUFZRyxjQUFjLENBQUNKO1FBRW5ELElBQUlHLGlCQUFpQjtZQUNuQixPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRU4sT0FBT0Y7QUFDVDtBQUVPLFNBQVNqQix5Q0FBeUNlLFlBQVksRUFBRU0sYUFBYSxFQUFFQyxnQkFBZ0IsRUFBRWhC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
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZXF1aXZhbGVuY2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuXG5pbXBvcnQgeyB2YXJpYWJsZXNGcm9tVGVybSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZXF1aXZhbGVuY2VcIjtcblxuY29uc3QgeyBwdXNoLCBzZXBhcmF0ZSB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZXNCLCBjb250ZXh0KSB7XG4gIGVxdWl2YWxlbmNlc0EgPSBbICAvLy9cbiAgICAuLi5lcXVpdmFsZW5jZXNBXG4gIF07XG5cbiAgZXF1aXZhbGVuY2VzQi5mb3JFYWNoKChlcXVpdmFsZW5jZUIpID0+IHtcbiAgICBlcXVpdmFsZW5jZXNBID0gbWVyZ2VFcXVpdmFsZW5jZShlcXVpdmFsZW5jZXNBLCBlcXVpdmFsZW5jZUIsIGNvbnRleHQpO1xuICB9KTtcblxuICByZXR1cm4gZXF1aXZhbGVuY2VzQTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWl2YWxlbmNlc0Zyb21FcXVhbGl0eShlcXVhbGl0eSwgY29udGV4dCkge1xuICBjb25zdCB7IEVxdWl2YWxlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgZWF1bGl2YWxlbmNlID0gRXF1aXZhbGVuY2UuZnJvbUVxdWFsaXR5KGVxdWFsaXR5LCBjb250ZXh0KSxcbiAgICAgICAgZXF1aXZhbGVuY2VzID0gW1xuICAgICAgICAgIGVhdWxpdmFsZW5jZVxuICAgICAgICBdO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlKGVxdWl2YWxlbmNlcywgdGVybU5vZGUpIHtcbiAgY29uc3QgZXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZXMuZmluZCgoZXF1aXZhbGVuY2UpID0+IHtcbiAgICBjb25zdCB0ZXJtRXF1YXRlcyA9IGVxdWl2YWxlbmNlLm1hdGNoVGVybU5vZGUodGVybU5vZGUpO1xuXG4gICAgaWYgKHRlcm1FcXVhdGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VwYXJhdGVHcm91bmRlZFRlcm1zQW5kRGVmaW5lZFZhcmlhYmxlcyhlcXVpdmFsZW5jZXMsIGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgbGV0IGdyb3VuZGVkRXF1aXZhbGVuY2VzLFxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzLFxuICAgICAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsXG4gICAgICBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7XG5cbiAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCk7XG5cbiAgY29uc3QgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXNMZW5ndGggPSBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcy5sZW5ndGg7XG5cbiAgaWYgKGluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgIGdyb3VuZGVkRXF1aXZhbGVuY2VzID0gaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXM7IC8vL1xuXG4gICAgbGV0IGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlc0xlbmd0aCA9IDE7XG5cbiAgICB3aGlsZSAoaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID4gMCkge1xuICAgICAgbGV0IGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSAwLFxuICAgICAgICAgICAgcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoID0gLTE7XG5cbiAgICAgIHdoaWxlIChkZWZpbmVkVmFyaWFibGVzTGVuZ3RoID4gcHJldmlvdXNEZWZpbmVkVmFyaWFibGVzTGVuZ3RoKSB7XG4gICAgICAgIHByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCA9IGRlZmluZWRWYXJpYWJsZXNMZW5ndGg7ICAvLy9cblxuICAgICAgICBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCk7XG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zKGdyb3VuZGVkVGVybXMsIGRlZmluZWRWYXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGRlZmluZWRWYXJpYWJsZXNMZW5ndGggPSBkZWZpbmVkVmFyaWFibGVzLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgZXF1aXZhbGVuY2VzID0gcmVtYWluaW5nRXF1aXZhbGVuY2VzOyAvLy9cblxuICAgICAgcmVtYWluaW5nRXF1aXZhbGVuY2VzID0gW107XG5cbiAgICAgIGltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyA9IFtdO1xuXG4gICAgICBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KTtcblxuICAgICAgcHVzaChncm91bmRlZEVxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzKTtcblxuICAgICAgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoID0gaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLmxlbmd0aDsgIC8vL1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtZXJnZUVxdWl2YWxlbmNlKGVxdWl2YWxlbmNlc0EsIGVxdWl2YWxlbmNlQiwgY29udGV4dCkge1xuICBjb25zdCBtZXJnZWRFcXVpdmFsZW5jZXMgPSBbXTtcblxuICBlcXVpdmFsZW5jZXNBLmZvckVhY2goKGVxdWl2YWxlbmNlQSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSA9IGVxdWl2YWxlbmNlQi5pc0Rpc2pvaW50RnJvbShlcXVpdmFsZW5jZUEpO1xuXG4gICAgaWYgKGVxdWl2YWxlbmNlQkRpc2pvaW50RnJvbUVxdWl2YWxlbmNlQSkge1xuICAgICAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUE7ICAvLy9cblxuICAgICAgbWVyZ2VkRXF1aXZhbGVuY2VzLnB1c2gobWVyZ2VkRXF1aXZhbGVuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlcXVpdmFsZW5jZUIgPSBlcXVpdmFsZW5jZUIubWVyZ2VkV2l0aChlcXVpdmFsZW5jZUEsIGNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgbWVyZ2VkRXF1aXZhbGVuY2UgPSBlcXVpdmFsZW5jZUI7ICAvLy9cblxuICBtZXJnZWRFcXVpdmFsZW5jZXMucHVzaChtZXJnZWRFcXVpdmFsZW5jZSk7XG5cbiAgZXF1aXZhbGVuY2VzQSA9IG1lcmdlZEVxdWl2YWxlbmNlczsgIC8vL1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZXNBO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVkVmFyaWFibGVzRnJvbUdyb3VuZGVkVGVybXMoZ3JvdW5kZWRUZXJtcywgZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCkge1xuICBncm91bmRlZFRlcm1zLmZvckVhY2goKGdyb3VuZGVkVGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm0gPSBncm91bmRlZFRlcm0sICAvLy9cbiAgICAgICAgICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNGcm9tVGVybSh0ZXJtLCBjb250ZXh0KTtcblxuICAgIHZhcmlhYmxlcy5mb3JFYWNoKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgY29uc3QgZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlID0gZGVmaW5lZFZhcmlhYmxlcy5pbmNsdWRlcyh2YXJpYWJsZSk7XG5cbiAgICAgIGlmICghZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IGRlZmluZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICAgICAgZGVmaW5lZFZhcmlhYmxlcy5wdXNoKGRlZmluZWRWYXJpYWJsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcywgY29udGV4dCkge1xuICBzZXBhcmF0ZShlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW5pdGlhbGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW5pdGlhbGx5R3JvdW5kZWQgPSBlcXVpdmFsZW5jZS5pc0luaXRpYWxseUdyb3VuZGVkKGNvbnRleHQpO1xuXG4gICAgaWYgKCFlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzZXBhcmF0ZUltcGxpY2l0bHlHcm91bmRlZEVxdWl2YWxlbmNlcyhlcXVpdmFsZW5jZXMsIHJlbWFpbmluZ0VxdWl2YWxlbmNlcywgaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzLCBkZWZpbmVkVmFyaWFibGVzLCBjb250ZXh0KSB7XG4gIHNlcGFyYXRlKGVxdWl2YWxlbmNlcywgcmVtYWluaW5nRXF1aXZhbGVuY2VzLCBpbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMsIChlcXVpdmFsZW5jZSkgPT4ge1xuICAgIGNvbnN0IGVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkID0gZXF1aXZhbGVuY2UuaXNJbXBsaWNpdGx5R3JvdW5kZWQoZGVmaW5lZFZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBncm91bmRlZFRlcm1zRnJvbUdyb3VuZGVkRXF1aXZhbGVuY2VzQW5kRGVmaW5lZFZhcmlhYmxlcyhncm91bmRlZEVxdWl2YWxlbmNlcywgZGVmaW5lZFZhcmlhYmxlcywgZ3JvdW5kZWRUZXJtcywgY29udGV4dCkge1xuICBncm91bmRlZEVxdWl2YWxlbmNlcy5mb3JFYWNoKChncm91bmRlZEVxdWl2YWxlbmNlKSA9PiB7XG4gICAgZ3JvdW5kZWRFcXVpdmFsZW5jZS5nZXRHcm91bmRlZFRlcm1zKGRlZmluZWRWYXJpYWJsZXMsIGdyb3VuZGVkVGVybXMsIGNvbnRleHQpO1xuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJlcXVpdmFsZW5jZXNGcm9tRXF1YWxpdHkiLCJmaW5kRXF1aXZhbGVuY2VCeVRlcm1Ob2RlIiwibWVyZ2VFcXVpdmFsZW5jZXMiLCJzZXBhcmF0ZUdyb3VuZGVkVGVybXNBbmREZWZpbmVkVmFyaWFibGVzIiwicHVzaCIsInNlcGFyYXRlIiwiYXJyYXlVdGlsaXRpZXMiLCJlcXVpdmFsZW5jZXNBIiwiZXF1aXZhbGVuY2VzQiIsImNvbnRleHQiLCJmb3JFYWNoIiwiZXF1aXZhbGVuY2VCIiwibWVyZ2VFcXVpdmFsZW5jZSIsImVxdWFsaXR5IiwiRXF1aXZhbGVuY2UiLCJlbGVtZW50cyIsImVhdWxpdmFsZW5jZSIsImZyb21FcXVhbGl0eSIsImVxdWl2YWxlbmNlcyIsInRlcm1Ob2RlIiwiZXF1aXZhbGVuY2UiLCJmaW5kIiwidGVybUVxdWF0ZXMiLCJtYXRjaFRlcm1Ob2RlIiwiZ3JvdW5kZWRUZXJtcyIsImRlZmluZWRWYXJpYWJsZXMiLCJncm91bmRlZEVxdWl2YWxlbmNlcyIsInJlbWFpbmluZ0VxdWl2YWxlbmNlcyIsImluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwiaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzIiwic2VwYXJhdGVJbml0aWFsbHlHcm91bmRlZEVxdWl2YWxlbmNlcyIsImluaXRpYWxseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoIiwibGVuZ3RoIiwiaW1wbGljaXRseUdyb3VuZGVkRXF1aXZhbGVuY2VzTGVuZ3RoIiwiZGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsInByZXZpb3VzRGVmaW5lZFZhcmlhYmxlc0xlbmd0aCIsImdyb3VuZGVkVGVybXNGcm9tR3JvdW5kZWRFcXVpdmFsZW5jZXNBbmREZWZpbmVkVmFyaWFibGVzIiwiZGVmaW5lZFZhcmlhYmxlc0Zyb21Hcm91bmRlZFRlcm1zIiwic2VwYXJhdGVJbXBsaWNpdGx5R3JvdW5kZWRFcXVpdmFsZW5jZXMiLCJtZXJnZWRFcXVpdmFsZW5jZXMiLCJlcXVpdmFsZW5jZUEiLCJlcXVpdmFsZW5jZUJEaXNqb2ludEZyb21FcXVpdmFsZW5jZUEiLCJpc0Rpc2pvaW50RnJvbSIsIm1lcmdlZEVxdWl2YWxlbmNlIiwibWVyZ2VkV2l0aCIsImdyb3VuZGVkVGVybSIsInRlcm0iLCJ2YXJpYWJsZXMiLCJ2YXJpYWJsZXNGcm9tVGVybSIsInZhcmlhYmxlIiwiZGVmaW5lZFZhcmlhYmxlc0luY2x1ZGVzVGVybVZhcmlhYmxlIiwiaW5jbHVkZXMiLCJkZWZpbmVkVmFyaWFibGUiLCJlcXVpdmFsZW5jZUluaXRpYWxseUdyb3VuZGVkIiwiaXNJbml0aWFsbHlHcm91bmRlZCIsImVxdWl2YWxlbmNlSW1wbGljaXRseUdyb3VuZGVkIiwiaXNJbXBsaWNpdGx5R3JvdW5kZWQiLCJncm91bmRlZEVxdWl2YWxlbmNlIiwiZ2V0R3JvdW5kZWRUZXJtcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBc0JnQkE7ZUFBQUE7O1FBVUFDO2VBQUFBOztRQXRCQUM7ZUFBQUE7O1FBa0NBQztlQUFBQTs7OzJCQTFDZTtpRUFFVjs2QkFFYTs7Ozs7O0FBRWxDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQUUsR0FBR0MseUJBQWM7QUFFbEMsU0FBU0osa0JBQWtCSyxhQUFhLEVBQUVDLGFBQWEsRUFBRUMsT0FBTztJQUNyRUYsZ0JBQWdCO1dBQ1hBO0tBQ0o7SUFFREMsY0FBY0UsT0FBTyxDQUFDLENBQUNDO1FBQ3JCSixnQkFBZ0JLLGlCQUFpQkwsZUFBZUksY0FBY0Y7SUFDaEU7SUFFQSxPQUFPRjtBQUNUO0FBRU8sU0FBU1AseUJBQXlCYSxRQUFRLEVBQUVKLE9BQU87SUFDeEQsTUFBTSxFQUFFSyxXQUFXLEVBQUUsR0FBR0MsaUJBQVEsRUFDMUJDLGVBQWVGLFlBQVlHLFlBQVksQ0FBQ0osVUFBVUosVUFDbERTLGVBQWU7UUFDYkY7S0FDRDtJQUVQLE9BQU9FO0FBQ1Q7QUFFTyxTQUFTakIsMEJBQTBCaUIsWUFBWSxFQUFFQyxRQUFRO0lBQzlELE1BQU1DLGNBQWNGLGFBQWFHLElBQUksQ0FBQyxDQUFDRDtRQUNyQyxNQUFNRSxjQUFjRixZQUFZRyxhQUFhLENBQUNKO1FBRTlDLElBQUlHLGFBQWE7WUFDZixPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRU4sT0FBT0Y7QUFDVDtBQUVPLFNBQVNqQix5Q0FBeUNlLFlBQVksRUFBRU0sYUFBYSxFQUFFQyxnQkFBZ0IsRUFBRWhCLE9BQU87SUFDN0csSUFBSWlCLHNCQUNB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
|
package/lib/utilities/string.js
CHANGED
|
@@ -90,9 +90,13 @@ _export(exports, {
|
|
|
90
90
|
});
|
|
91
91
|
const _type = require("../utilities/type");
|
|
92
92
|
const _constants = require("../constants");
|
|
93
|
-
function termsStringFromTerms(terms) {
|
|
93
|
+
function termsStringFromTerms(terms, quoted = false) {
|
|
94
94
|
const termsString = terms.reduce((termsString, term)=>{
|
|
95
|
-
|
|
95
|
+
let termString;
|
|
96
|
+
termString = term.getString();
|
|
97
|
+
if (quoted) {
|
|
98
|
+
termString = `'${termString}'`;
|
|
99
|
+
}
|
|
96
100
|
termsString = termsString !== null ? `${termsString}, ${termString}` : termString;
|
|
97
101
|
return termsString;
|
|
98
102
|
}, null);
|
|
@@ -245,4 +249,4 @@ function statementSubstitutionStringFromStatementMetavariableAndSubstitution(sta
|
|
|
245
249
|
return statementSubstitutionString;
|
|
246
250
|
}
|
|
247
251
|
|
|
248
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFBST1ZJU0lPTkFMLCBQUk9WSVNJT05BTExZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtcy5yZWR1Y2UoKHRlcm1zU3RyaW5nLCB0ZXJtKSA9PiB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICB0ZXJtc1N0cmluZyA9ICh0ZXJtc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgIGAke3Rlcm1zU3RyaW5nfSwgJHt0ZXJtU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgIHRlcm1TdHJpbmc7XG5cbiAgICByZXR1cm4gdGVybXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiB0ZXJtc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc1N0cmluZyA9IGxhYmVscy5yZWR1Y2UoKGxhYmVsc1N0cmluZywgbGFiZWwpID0+IHtcbiAgICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpO1xuXG4gICAgbGFiZWxzU3RyaW5nID0gKGxhYmVsc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgbGFiZWxTdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsc1N0cmluZ30sICR7bGFiZWxTdHJpbmd9YDtcblxuICAgIHJldHVybiBsYWJlbHNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBsYWJlbHNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyhwcmVtaXNlcykge1xuICBjb25zdCBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzLnJlZHVjZSgocHJlbWlzZXNTdHJpbmcsIHByZW1pc2UpID0+IHtcbiAgICBjb25zdCBwcmVtaXNlU3RyaW5nID0gcHJlbWlzZS5nZXRTdHJpbmcoKTtcblxuICAgIHByZW1pc2VzU3RyaW5nID0gKHByZW1pc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGAke3ByZW1pc2VzU3RyaW5nfSwgJHtwcmVtaXNlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgIHByZW1pc2VTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBwcmVtaXNlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpIHtcbiAgY29uc3QgaHlwb3RoZXNlc1N0cmluZyA9IGh5cG90aGVzZXMucmVkdWNlKChoeXBvdGhlc2VzU3RyaW5nLCBoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc1N0cmluZyA9IGh5cG90aGVzaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICBoeXBvdGhlc2VzU3RyaW5nID0gKGh5cG90aGVzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7aHlwb3RoZXNlc1N0cmluZ30sICR7aHlwb3RoZXNpc1N0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoeXBvdGhlc2lzU3RyaW5nOyAgLy8vXG5cbiAgICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGh5cG90aGVzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMoc3VwZXJUeXBlcykge1xuICBsZXQgc3VwZXJUeXBlc1N0cmluZztcblxuICBjb25zdCBiYXNlVHlwZSA9IGJhc2VUeXBlRnJvbU5vdGhpbmcoKTtcblxuICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBlclR5cGVzU3RyaW5nfSwgJyR7c3VwZXJUeXBlU3RyaW5nfSdgO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICBzdXBlclR5cGVzU3RyaW5nID0gKHN1cGVyVHlwZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYDoke3N1cGVyVHlwZXNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICByZXR1cm4gc3VwZXJUeXBlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNTdHJpbmcgPSBwYXJhbWV0ZXJzLnJlZHVjZSgocGFyYW1ldGVyc1N0cmluZywgcGFyYW1ldGVyKSA9PiB7XG4gICAgY29uc3QgcGFyYW1ldGVyU3RyaW5nID0gcGFyYW1ldGVyLmdldFN0cmluZygpO1xuXG4gICAgcGFyYW1ldGVyc1N0cmluZyA9IChwYXJhbWV0ZXJzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyU3RyaW5nIDogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke3BhcmFtZXRlcnNTdHJpbmd9LCAke3BhcmFtZXRlclN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbChwcm92aXNpb25hbCkge1xuICBjb25zdCBwcm92aXNpbmFsU3RyaW5nID0gcHJvdmlzaW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke1BST1ZJU0lPTkFMfSBgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORztcblxuICByZXR1cm4gcHJvdmlzaW5hbFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsbHlTdHJpbmdGcm9tUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW5hbGx5U3RyaW5nID0gcHJvdmlzaW9uYWwgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCAke1BST1ZJU0lPTkFMTFl9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIHByb3Zpc2luYWxseVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9ucy5yZWR1Y2UoKHN1cHBvc2l0aW9uc1N0cmluZywgc3VwcG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBzdXBwb3NpdGlvblN0cmluZyA9IHN1cHBvc2l0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc3VwcG9zaXRpb25zU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9zaXRpb25TdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cHBvc2l0aW9uc1N0cmluZ30sICR7c3VwcG9zaXRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgZXF1aXZhbGVuY2VTdHJpbmcgPSBgWyR7dGVybXNTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlU3RyaW5nRnJvbVNpZ25hdHVyZShzaWduYXR1cmUpIHtcbiAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZS5nZXRTdHJpbmcoKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzaWduYXR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlU3RyaW5nRnJvbU5vbWluYWxUeXBlTmFtZShub21pbmFsVHlwZU5hbWUpIHtcbiAgY29uc3QgdHlwZVN0cmluZyA9IG5vbWluYWxUeXBlTmFtZTsgIC8vL1xuXG4gIHJldHVybiB0eXBlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nRnJvbVN0YXRlbWVudChzdGFzdGVtZW50KSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXN0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZyA9IGAuIDo6ICR7c3RhdGVtZW50U3RyaW5nfWA7XG5cbiAgcmV0dXJuIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3Rlcm1TdHJpbmd9IGZvciAke3ZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uc3RyYWludFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQocmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICByZWZlcm5lY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSBgJHtyZWZlcm5lY2VTdHJpbmd9IDo6ICR7c3RhdGVtZW50U3RyaW5nfWA7XG5cbiAgcmV0dXJuIGNvbnN0cmFpbnRTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxzU3RyaW5nRnJvbUxhYmVsc1ByZW1pc2VzQW5kQ29uY2x1c2lvbihsYWJlbHMsIHByZW1pc2VzLCBjb25jbHVzaW9uKSB7XG4gIGxldCBydWxlU3RyaW5nID0gRU1QVFlfU1RSSU5HO1xuXG4gIGNvbnN0IGNvbmNsdXNpb25TdHJpbmcgPSBjb25jbHVzaW9uLmdldFN0cmluZygpLFxuICAgICAgICBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpO1xuXG4gIHJ1bGVTdHJpbmcgPSBgJHtydWxlU3RyaW5nfSR7bGFiZWxzU3RyaW5nfSA6OiBgO1xuXG4gIHJ1bGVTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7cnVsZVN0cmluZ31bJHtwcmVtaXNlc1N0cmluZ31dLi4uJHtjb25jbHVzaW9uU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgIGAke3J1bGVTdHJpbmd9JHtjb25jbHVzaW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHJ1bGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2hlbWFTdHJpbmdGcm9tTGFiZWxTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWwsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpLFxuICAgICAgICBzY2hlbWFTdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbFN0cmluZ30gOjogWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxTdHJpbmd9IDo6ICR7ZGVkdWN0aW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHNjaGVtYVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc0RlY2xhcmF0aW9uQW5kQ2xhaW0oaHlwb3RoZXNlcywgZGVjbGFyYXRpb24sIGNsYWltKSB7XG4gIGxldCBzZWN0aW9uU3RyaW5nO1xuXG4gIGNvbnN0IGh5cG90aGVzZXNTdHJpbmcgPSBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcyk7XG5cbiAgc2VjdGlvblN0cmluZyA9IGBbJHtoeXBvdGhlc2VzU3RyaW5nfV06OjogYDtcblxuICBpZiAoZGVjbGFyYXRpb24gIT09IG51bGwpIHtcbiAgICBjb25zdCBkZWNsYXJhdGlvblN0cmluZyA9IGRlY2xhcmF0aW9uLmdldFN0cmluZygpO1xuXG4gICAgc2VjdGlvblN0cmluZyA9IGAke3NlY3Rpb25TdHJpbmd9JHtkZWNsYXJhdGlvblN0cmluZ31gO1xuICB9XG5cbiAgaWYgKGNsYWltICE9PSBudWxsKSB7XG4gICAgY29uc3QgY2xhaW1TdHJpbmcgPSBjbGFpbS5nZXRTdHJpbmcoKTtcblxuICAgIHNlY3Rpb25TdHJpbmcgPSBgJHtzZWN0aW9uU3RyaW5nfSR7Y2xhaW1TdHJpbmd9YDtcbiAgfVxuXG4gIHJldHVybiBzZWN0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VicHJvb2ZTdHJpbmdGcm9tU3VwcG9zaXRpb25zQW5kU3ViRGVyaXZhdGlvbihzdXBwb3NpdGlvbnMsIHN1YkRlcml2YXRpb24pIHtcbiAgY29uc3QgbGFzdFN0ZXAgPSBzdWJEZXJpdmF0aW9uLmdldExhc3RTdGVwKCksXG4gICAgICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSxcbiAgICAgICAgbGFzdFN0ZXBTdHJpbmcgPSBsYXN0U3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBgWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2xhc3RTdGVwU3RyaW5nfWA7XG5cbiAgcmV0dXJuIHN1YnByb29mU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVTdWJzdGl0dXRpb25TdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUoZnJhbWUsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBmcmFtZVN0cmluZyA9IGZyYW1lLmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0cmluZyA9IGBbJHtmcmFtZVN0cmluZ30gZm9yIFske21ldGF2YXJpYWJsZVN0cmluZ31dXWA7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHNpZ25hdHVyZSwgc3VwcG9zaXRpb25zLCBkZWR1Y3Rpb24pIHtcbiAgbGV0IGNsYWltU3RyaW5nID0gRU1QVFlfU1RSSU5HO1xuXG4gIGNvbnN0IGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpLFxuICAgICAgICBzaWduYXR1cmVTdHJpbmcgPSBzaWduYXR1cmVTdHJpbmdGcm9tU2lnbmF0dXJlKHNpZ25hdHVyZSksXG4gICAgICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKTtcblxuICBjbGFpbVN0cmluZyA9IChsYWJlbHNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9JHtsYWJlbHNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgYC4uYDtcblxuICBjbGFpbVN0cmluZyA9IChzaWduYXR1cmVTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9JHtzaWduYXR1cmVTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9YDtcblxuXG4gIGNsYWltU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICBgJHtjbGFpbVN0cmluZ30gOjogWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2RlZHVjdGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICBgJHtjbGFpbVN0cmluZ30gOjogJHtkZWR1Y3Rpb25TdHJpbmd9YDtcblxuICByZXR1cm4gY2xhaW1TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMocHJvY2VkdXJlUmVmZXJlbmNlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2UuZ2V0TmFtZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLFxuICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gYEAke3Byb2NlZHVyZVJlZmVyZW5jZU5hbWV9KCR7cGFyYW1ldGVyc1N0cmluZ30pYDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbFN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nRnJvbVR5cGVTdXBlclR5cGVzQW5kUHJvdmlzaW9uYWwodHlwZSwgc3VwZXJUeXBlcywgcHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgdHlwZVN0cmluZyA9IHR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSBzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMoc3VwZXJUeXBlcyksXG4gICAgICAgIHByb3Zpc2lvbmFsU3RyaW5nID0gcHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbChwcm92aXNpb25hbCksXG4gICAgICAgIGNvdHlwZURlY2xhcmF0aW9uU3RyaW5nID0gYCR7cHJvdmlzaW9uYWxTdHJpbmd9JHt0eXBlU3RyaW5nfSR7c3VwZXJUeXBlc1N0cmluZ31gO1xuXG4gIHJldHVybiBjb3R5cGVEZWNsYXJhdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUoc3RhdGVtZW50LCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZShyZWZlcmVuY2UsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3JlZmVyZW5jZVN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiY2xhaW1TdHJpbmdGcm9tTGFiZWxzU2lnbmF0dXJlU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uIiwiY29uc3RyYWludFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQiLCJjb3R5cGVEZWNsYXJhdGlvblN0cmluZ0Zyb21UeXBlU3VwZXJUeXBlc0FuZFByb3Zpc2lvbmFsIiwiZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXMiLCJmcmFtZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21GcmFtZUFuZE1ldGF2YXJpYWJsZSIsImh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQiLCJsYWJlbHNTdHJpbmdGcm9tTGFiZWxzIiwicGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzIiwicHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMiLCJwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMiLCJwcm92aXNpbmFsU3RyaW5nRnJvbVByb3Zpc2lvbmFsIiwicHJvdmlzaW9uYWxseVN0cmluZ0Zyb21Qcm92aXNpb25hbCIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUiLCJydWxzU3RyaW5nRnJvbUxhYmVsc1ByZW1pc2VzQW5kQ29uY2x1c2lvbiIsInNjaGVtYVN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc0RlY2xhcmF0aW9uQW5kQ2xhaW0iLCJzaWduYXR1cmVTdHJpbmdGcm9tU2lnbmF0dXJlIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRNZXRhdmFyaWFibGVBbmRTdWJzdGl0dXRpb24iLCJzdWJwcm9vZlN0cmluZ0Zyb21TdXBwb3NpdGlvbnNBbmRTdWJEZXJpdmF0aW9uIiwic3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzIiwic3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyIsInRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlIiwidGVybXNTdHJpbmdGcm9tVGVybXMiLCJ0eXBlU3RyaW5nRnJvbU5vbWluYWxUeXBlTmFtZSIsInRlcm1zIiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJ0ZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsImxhYmVscyIsImxhYmVsc1N0cmluZyIsImxhYmVsIiwibGFiZWxTdHJpbmciLCJwcmVtaXNlcyIsInByZW1pc2VzU3RyaW5nIiwicHJlbWlzZSIsInByZW1pc2VTdHJpbmciLCJoeXBvdGhlc2VzIiwiaHlwb3RoZXNlc1N0cmluZyIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzU3RyaW5nIiwic3VwZXJUeXBlcyIsInN1cGVyVHlwZXNTdHJpbmciLCJiYXNlVHlwZSIsImJhc2VUeXBlRnJvbU5vdGhpbmciLCJzdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJFTVBUWV9TVFJJTkciLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyc1N0cmluZyIsInBhcmFtZXRlciIsInBhcmFtZXRlclN0cmluZyIsInByb3Zpc2lvbmFsIiwicHJvdmlzaW5hbFN0cmluZyIsIlBST1ZJU0lPTkFMIiwicHJvdmlzaW5hbGx5U3RyaW5nIiwiUFJPVklTSU9OQUxMWSIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1N0cmluZyIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJlcXVpdmFsZW5jZVN0cmluZyIsInNpZ25hdHVyZSIsInNpZ25hdHVyZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsInR5cGVTdHJpbmciLCJzdGFzdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwiaW1wbGljaXRBc3N1bXB0aW9uU3RyaW5nIiwidmFyaWFibGUiLCJ2YXJpYWJsZVN0cmluZyIsInRlcm1TdWJzdGl0dXRpb25TdHJpbmciLCJyZWZlcmVuY2UiLCJzdGF0ZW1lbnQiLCJyZWZlcm5lY2VTdHJpbmciLCJjb25zdHJhaW50U3RyaW5nIiwiY29uY2x1c2lvbiIsInJ1bGVTdHJpbmciLCJjb25jbHVzaW9uU3RyaW5nIiwiZGVkdWN0aW9uIiwiZGVkdWN0aW9uU3RyaW5nIiwic2NoZW1hU3RyaW5nIiwiZGVjbGFyYXRpb24iLCJjbGFpbSIsInNlY3Rpb25TdHJpbmciLCJkZWNsYXJhdGlvblN0cmluZyIsImNsYWltU3RyaW5nIiwic3ViRGVyaXZhdGlvbiIsImxhc3RTdGVwIiwiZ2V0TGFzdFN0ZXAiLCJsYXN0U3RlcFN0cmluZyIsInN1YnByb29mU3RyaW5nIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJmcmFtZVN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInN0cmluZyIsInByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZU5hbWUiLCJnZXROYW1lIiwicHJvY2VkdXJlQ2FsbFN0cmluZyIsInR5cGUiLCJwcm92aXNpb25hbFN0cmluZyIsImNvdHlwZURlY2xhcmF0aW9uU3RyaW5nIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nIiwicmVmZXJlbmNlU3RyaW5nIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nIiwic3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUErT2dCQTtlQUFBQTs7UUExRUFDO2VBQUFBOztRQTBHQUM7ZUFBQUE7O1FBOUlBQztlQUFBQTs7UUFzR0FDO2VBQUFBOztRQXhMQUM7ZUFBQUE7O1FBdUdBQztlQUFBQTs7UUFuSUFDO2VBQUFBOztRQWtFQUM7ZUFBQUE7O1FBcERBQztlQUFBQTs7UUFzT0FDO2VBQUFBOztRQXBLQUM7ZUFBQUE7O1FBUUFDO2VBQUFBOztRQXFMQUM7ZUFBQUE7O1FBbkhBQztlQUFBQTs7UUFnQkFDO2VBQUFBOztRQVdBQztlQUFBQTs7UUFoRUFDO2VBQUFBOztRQWdKQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUExRUFDO2VBQUFBOztRQWpLQUM7ZUFBQUE7O1FBc0RBQztlQUFBQTs7UUEwQ0FDO2VBQUFBOztRQXhKQUM7ZUFBQUE7O1FBMklBQztlQUFBQTs7O3NCQTlJb0I7MkJBQ3FCO0FBRWxELFNBQVNELHFCQUFxQkUsS0FBSztJQUN4QyxNQUFNQyxjQUFjRCxNQUFNRSxNQUFNLENBQUMsQ0FBQ0QsYUFBYUU7UUFDN0MsTUFBTUMsYUFBYUQsS0FBS0UsU0FBUztRQUVqQ0osY0FBYyxBQUFDQSxnQkFBZ0IsT0FDaEIsR0FBR0EsWUFBWSxFQUFFLEVBQUVHLFlBQVksR0FDNUJBO1FBRWxCLE9BQU9IO0lBQ1QsR0FB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
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcsIFBST1ZJU0lPTkFMLCBQUk9WSVNJT05BTExZIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybXNTdHJpbmdGcm9tVGVybXModGVybXMsIHF1b3RlZCA9IGZhbHNlKSB7XG4gIGNvbnN0IHRlcm1zU3RyaW5nID0gdGVybXMucmVkdWNlKCh0ZXJtc1N0cmluZywgdGVybSkgPT4ge1xuICAgIGxldCB0ZXJtU3RyaW5nO1xuXG4gICAgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBpZiAocXVvdGVkKSB7XG4gICAgICB0ZXJtU3RyaW5nID0gYCcke3Rlcm1TdHJpbmd9J2A7XG4gICAgfVxuXG4gICAgdGVybXNTdHJpbmcgPSAodGVybXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICBgJHt0ZXJtc1N0cmluZ30sICR7dGVybVN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICB0ZXJtU3RyaW5nO1xuXG4gICAgcmV0dXJuIHRlcm1zU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gdGVybXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNTdHJpbmdGcm9tTGFiZWxzKGxhYmVscykge1xuICBjb25zdCBsYWJlbHNTdHJpbmcgPSBsYWJlbHMucmVkdWNlKChsYWJlbHNTdHJpbmcsIGxhYmVsKSA9PiB7XG4gICAgY29uc3QgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKTtcblxuICAgIGxhYmVsc1N0cmluZyA9IChsYWJlbHNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIGxhYmVsU3RyaW5nOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9LCAke2xhYmVsU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gbGFiZWxzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gbGFiZWxzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlbWlzZXNTdHJpbmdGcm9tUHJlbWlzZXMocHJlbWlzZXMpIHtcbiAgY29uc3QgcHJlbWlzZXNTdHJpbmcgPSBwcmVtaXNlcy5yZWR1Y2UoKHByZW1pc2VzU3RyaW5nLCBwcmVtaXNlKSA9PiB7XG4gICAgY29uc3QgcHJlbWlzZVN0cmluZyA9IHByZW1pc2UuZ2V0U3RyaW5nKCk7XG5cbiAgICBwcmVtaXNlc1N0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgJHtwcmVtaXNlc1N0cmluZ30sICR7cHJlbWlzZVN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVtaXNlU3RyaW5nOyAgLy8vXG5cbiAgICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBwcmVtaXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5cG90aGVzZXNTdHJpbmdGcm9tSHlwb3RoZXNlcyhoeXBvdGhlc2VzKSB7XG4gIGNvbnN0IGh5cG90aGVzZXNTdHJpbmcgPSBoeXBvdGhlc2VzLnJlZHVjZSgoaHlwb3RoZXNlc1N0cmluZywgaHlwb3RoZXNpcykgPT4ge1xuICAgIGNvbnN0IGh5cG90aGVzaXNTdHJpbmcgPSBoeXBvdGhlc2lzLmdldFN0cmluZygpO1xuXG4gICAgaHlwb3RoZXNlc1N0cmluZyA9IChoeXBvdGhlc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke2h5cG90aGVzZXNTdHJpbmd9LCAke2h5cG90aGVzaXNTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHlwb3RoZXNpc1N0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIGh5cG90aGVzZXNTdHJpbmc7XG4gIH0sIG51bGwpO1xuXG4gIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpIHtcbiAgbGV0IHN1cGVyVHlwZXNTdHJpbmc7XG5cbiAgY29uc3QgYmFzZVR5cGUgPSBiYXNlVHlwZUZyb21Ob3RoaW5nKCk7XG5cbiAgc3VwZXJUeXBlc1N0cmluZyA9IHN1cGVyVHlwZXMucmVkdWNlKChzdXBlclR5cGVzU3RyaW5nLCBzdXBlclR5cGUpID0+IHtcbiAgICBpZiAoc3VwZXJUeXBlICE9PSBiYXNlVHlwZSkge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlU3RyaW5nID0gc3VwZXJUeXBlLmdldFN0cmluZygpO1xuXG4gICAgICBzdXBlclR5cGVzU3RyaW5nID0gKHN1cGVyVHlwZXNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGAnJHtzdXBlclR5cGVTdHJpbmd9J2AgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3VwZXJUeXBlc1N0cmluZ30sICcke3N1cGVyVHlwZVN0cmluZ30nYDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXJUeXBlc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgc3VwZXJUeXBlc1N0cmluZyA9IChzdXBlclR5cGVzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGA6JHtzdXBlclR5cGVzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzU3RyaW5nRnJvbVBhcmFtZXRlcnMocGFyYW1ldGVycykge1xuICBjb25zdCBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVycy5yZWR1Y2UoKHBhcmFtZXRlcnNTdHJpbmcsIHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlclN0cmluZyA9IHBhcmFtZXRlci5nZXRTdHJpbmcoKTtcblxuICAgIHBhcmFtZXRlcnNTdHJpbmcgPSAocGFyYW1ldGVyc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlclN0cmluZyA6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtwYXJhbWV0ZXJzU3RyaW5nfSwgJHtwYXJhbWV0ZXJTdHJpbmd9YDtcblxuICAgIHJldHVybiBwYXJhbWV0ZXJzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gcGFyYW1ldGVyc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2luYWxTdHJpbmdGcm9tUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW5hbFN0cmluZyA9IHByb3Zpc2lvbmFsID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtQUk9WSVNJT05BTH0gYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkc7XG5cbiAgcmV0dXJuIHByb3Zpc2luYWxTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aXNpb25hbGx5U3RyaW5nRnJvbVByb3Zpc2lvbmFsKHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHByb3Zpc2luYWxseVN0cmluZyA9IHByb3Zpc2lvbmFsID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAgJHtQUk9WSVNJT05BTExZfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HO1xuXG4gIHJldHVybiBwcm92aXNpbmFsbHlTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucykge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnMucmVkdWNlKChzdXBwb3NpdGlvbnNTdHJpbmcsIHN1cHBvc2l0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3VwcG9zaXRpb25TdHJpbmcgPSBzdXBwb3NpdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvc2l0aW9uU3RyaW5nOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzdXBwb3NpdGlvbnNTdHJpbmd9LCAke3N1cHBvc2l0aW9uU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb25zU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gc3VwcG9zaXRpb25zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1aXZhbGVuY2VTdHJpbmdGcm9tVGVybXModGVybXMpIHtcbiAgY29uc3QgdGVybXNTdHJpbmcgPSB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcyksXG4gICAgICAgIGVxdWl2YWxlbmNlU3RyaW5nID0gYFske3Rlcm1zU3RyaW5nfV1gO1xuXG4gIHJldHVybiBlcXVpdmFsZW5jZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVN0cmluZ0Zyb21TaWduYXR1cmUoc2lnbmF0dXJlKSB7XG4gIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IChzaWduYXR1cmUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUuZ2V0U3RyaW5nKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gc2lnbmF0dXJlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSBub21pbmFsVHlwZU5hbWU7ICAvLy9cblxuICByZXR1cm4gdHlwZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltcGxpY2l0QXNzdW1wdGlvblN0cmluZ0Zyb21TdGF0ZW1lbnQoc3Rhc3RlbWVudCkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGFzdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmcgPSBgLiA6OiAke3N0YXRlbWVudFN0cmluZ31gO1xuXG4gIHJldHVybiBpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSh0ZXJtLCB2YXJpYWJsZSkge1xuICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgdGVybVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHt0ZXJtU3RyaW5nfSBmb3IgJHt2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gdGVybVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50KHJlZmVyZW5jZSwgc3RhdGVtZW50KSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgcmVmZXJuZWNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gYCR7cmVmZXJuZWNlU3RyaW5nfSA6OiAke3N0YXRlbWVudFN0cmluZ31gO1xuXG4gIHJldHVybiBjb25zdHJhaW50U3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24obGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbikge1xuICBsZXQgcnVsZVN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICBjb25zdCBjb25jbHVzaW9uU3RyaW5nID0gY29uY2x1c2lvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgcHJlbWlzZXNTdHJpbmcgPSBwcmVtaXNlc1N0cmluZ0Zyb21QcmVtaXNlcyhwcmVtaXNlcyksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKTtcblxuICBydWxlU3RyaW5nID0gYCR7cnVsZVN0cmluZ30ke2xhYmVsc1N0cmluZ30gOjogYDtcblxuICBydWxlU3RyaW5nID0gKHByZW1pc2VzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke3J1bGVTdHJpbmd9WyR7cHJlbWlzZXNTdHJpbmd9XS4uLiR7Y29uY2x1c2lvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICBgJHtydWxlU3RyaW5nfSR7Y29uY2x1c2lvblN0cmluZ31gO1xuXG4gIHJldHVybiBydWxlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NoZW1hU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVsLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBjb25zdCBsYWJlbFN0cmluZyA9IGxhYmVsLmdldFN0cmluZygpLFxuICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1cHBvc2l0aW9uc1N0cmluZyA9IHN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMoc3VwcG9zaXRpb25zKSxcbiAgICAgICAgc2NoZW1hU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiAke2RlZHVjdGlvblN0cmluZ31gO1xuXG4gIHJldHVybiBzY2hlbWFTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNEZWNsYXJhdGlvbkFuZENsYWltKGh5cG90aGVzZXMsIGRlY2xhcmF0aW9uLCBjbGFpbSkge1xuICBsZXQgc2VjdGlvblN0cmluZztcblxuICBjb25zdCBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpO1xuXG4gIHNlY3Rpb25TdHJpbmcgPSBgWyR7aHlwb3RoZXNlc1N0cmluZ31dOjo6IGA7XG5cbiAgaWYgKGRlY2xhcmF0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZGVjbGFyYXRpb25TdHJpbmcgPSBkZWNsYXJhdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIHNlY3Rpb25TdHJpbmcgPSBgJHtzZWN0aW9uU3RyaW5nfSR7ZGVjbGFyYXRpb25TdHJpbmd9YDtcbiAgfVxuXG4gIGlmIChjbGFpbSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGNsYWltU3RyaW5nID0gY2xhaW0uZ2V0U3RyaW5nKCk7XG5cbiAgICBzZWN0aW9uU3RyaW5nID0gYCR7c2VjdGlvblN0cmluZ30ke2NsYWltU3RyaW5nfWA7XG4gIH1cblxuICByZXR1cm4gc2VjdGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24oc3VwcG9zaXRpb25zLCBzdWJEZXJpdmF0aW9uKSB7XG4gIGNvbnN0IGxhc3RTdGVwID0gc3ViRGVyaXZhdGlvbi5nZXRMYXN0U3RlcCgpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGxhc3RTdGVwU3RyaW5nID0gbGFzdFN0ZXAuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnByb29mU3RyaW5nID0gYFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtsYXN0U3RlcFN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFpbVN0cmluZ0Zyb21MYWJlbHNTaWduYXR1cmVTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24obGFiZWxzLCBzaWduYXR1cmUsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGxldCBjbGFpbVN0cmluZyA9IEVNUFRZX1NUUklORztcblxuICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSBkZWR1Y3Rpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSxcbiAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gc2lnbmF0dXJlU3RyaW5nRnJvbVNpZ25hdHVyZShzaWduYXR1cmUpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyk7XG5cbiAgY2xhaW1TdHJpbmcgPSAobGFiZWxzU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke2NsYWltU3RyaW5nfSR7bGFiZWxzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgIGAuLmA7XG5cbiAgY2xhaW1TdHJpbmcgPSAoc2lnbmF0dXJlU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke2NsYWltU3RyaW5nfSR7c2lnbmF0dXJlU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgIGAke2NsYWltU3RyaW5nfWA7XG5cblxuICBjbGFpbVN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgYCR7Y2xhaW1TdHJpbmd9IDo6ICR7ZGVkdWN0aW9uU3RyaW5nfWA7XG5cbiAgcmV0dXJuIGNsYWltU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzKHByb2NlZHVyZVJlZmVyZW5jZSwgcGFyYW1ldGVycykge1xuICBjb25zdCBwcm9jZWR1cmVSZWZlcmVuY2VOYW1lID0gcHJvY2VkdXJlUmVmZXJlbmNlLmdldE5hbWUoKSxcbiAgICAgICAgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSxcbiAgICAgICAgcHJvY2VkdXJlQ2FsbFN0cmluZyA9IGBAJHtwcm9jZWR1cmVSZWZlcmVuY2VOYW1lfSgke3BhcmFtZXRlcnNTdHJpbmd9KWA7XG5cbiAgcmV0dXJuIHByb2NlZHVyZUNhbGxTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3R5cGVEZWNsYXJhdGlvblN0cmluZ0Zyb21UeXBlU3VwZXJUeXBlc0FuZFByb3Zpc2lvbmFsKHR5cGUsIHN1cGVyVHlwZXMsIHByb3Zpc2lvbmFsKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlLmdldFN0cmluZygpLFxuICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpLFxuICAgICAgICBwcm92aXNpb25hbFN0cmluZyA9IHByb3Zpc2luYWxTdHJpbmdGcm9tUHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpLFxuICAgICAgICBjb3R5cGVEZWNsYXJhdGlvblN0cmluZyA9IGAke3Byb3Zpc2lvbmFsU3RyaW5nfSR7dHlwZVN0cmluZ30ke3N1cGVyVHlwZXNTdHJpbmd9YDtcblxuICByZXR1cm4gY290eXBlRGVjbGFyYXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7c3RhdGVtZW50U3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZ0Zyb21SZWZlcmVuY2VBbmRNZXRhdmFyaWFibGUocmVmZXJlbmNlLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgcmVmZXJlbmNlU3RyaW5nID0gcmVmZXJlbmNlLmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtyZWZlcmVuY2VTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ31dYDtcblxuICByZXR1cm4gcmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbihzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSwgc3Vic3RpdHV0aW9uKSB7XG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdWJzdGl0dXRpb25TdHJpbmcgPSBzdWJzdGl0dXRpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyA9IGBbJHtzdGF0ZW1lbnRTdHJpbmd9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ30ke3N1YnN0aXR1dGlvblN0cmluZ31dYDtcblxuICByZXR1cm4gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbImNsYWltU3RyaW5nRnJvbUxhYmVsc1NpZ25hdHVyZVN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsImNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50IiwiY290eXBlRGVjbGFyYXRpb25TdHJpbmdGcm9tVHlwZVN1cGVyVHlwZXNBbmRQcm92aXNpb25hbCIsImVxdWl2YWxlbmNlU3RyaW5nRnJvbVRlcm1zIiwiZnJhbWVTdWJzdGl0dXRpb25TdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUiLCJoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMiLCJpbXBsaWNpdEFzc3VtcHRpb25TdHJpbmdGcm9tU3RhdGVtZW50IiwibGFiZWxzU3RyaW5nRnJvbUxhYmVscyIsInBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyIsInByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzIiwicHJvdmlzaW5hbFN0cmluZ0Zyb21Qcm92aXNpb25hbCIsInByb3Zpc2lvbmFsbHlTdHJpbmdGcm9tUHJvdmlzaW9uYWwiLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlIiwicnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24iLCJzY2hlbWFTdHJpbmdGcm9tTGFiZWxTdXBwb3NpdGlvbnNBbmREZWR1Y3Rpb24iLCJzZWN0aW9uU3RyaW5nRnJvbUh5cG90aGVzZXNEZWNsYXJhdGlvbkFuZENsYWltIiwic2lnbmF0dXJlU3RyaW5nRnJvbVNpZ25hdHVyZSIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRNZXRhdmFyaWFibGUiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uIiwic3VicHJvb2ZTdHJpbmdGcm9tU3VwcG9zaXRpb25zQW5kU3ViRGVyaXZhdGlvbiIsInN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyIsInN1cHBvc2l0aW9uc1N0cmluZ0Zyb21TdXBwb3NpdGlvbnMiLCJ0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVRlcm1BbmRWYXJpYWJsZSIsInRlcm1zU3RyaW5nRnJvbVRlcm1zIiwidHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUiLCJ0ZXJtcyIsInF1b3RlZCIsInRlcm1zU3RyaW5nIiwicmVkdWNlIiwidGVybSIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJsYWJlbHMiLCJsYWJlbHNTdHJpbmciLCJsYWJlbCIsImxhYmVsU3RyaW5nIiwicHJlbWlzZXMiLCJwcmVtaXNlc1N0cmluZyIsInByZW1pc2UiLCJwcmVtaXNlU3RyaW5nIiwiaHlwb3RoZXNlcyIsImh5cG90aGVzZXNTdHJpbmciLCJoeXBvdGhlc2lzIiwiaHlwb3RoZXNpc1N0cmluZyIsInN1cGVyVHlwZXMiLCJzdXBlclR5cGVzU3RyaW5nIiwiYmFzZVR5cGUiLCJiYXNlVHlwZUZyb21Ob3RoaW5nIiwic3VwZXJUeXBlIiwic3VwZXJUeXBlU3RyaW5nIiwiRU1QVFlfU1RSSU5HIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcnNTdHJpbmciLCJwYXJhbWV0ZXIiLCJwYXJhbWV0ZXJTdHJpbmciLCJwcm92aXNpb25hbCIsInByb3Zpc2luYWxTdHJpbmciLCJQUk9WSVNJT05BTCIsInByb3Zpc2luYWxseVN0cmluZyIsIlBST1ZJU0lPTkFMTFkiLCJzdXBwb3NpdGlvbnMiLCJzdXBwb3NpdGlvbnNTdHJpbmciLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RyaW5nIiwiZXF1aXZhbGVuY2VTdHJpbmciLCJzaWduYXR1cmUiLCJzaWduYXR1cmVTdHJpbmciLCJub21pbmFsVHlwZU5hbWUiLCJ0eXBlU3RyaW5nIiwic3Rhc3RlbWVudCIsInN0YXRlbWVudFN0cmluZyIsImltcGxpY2l0QXNzdW1wdGlvblN0cmluZyIsInZhcmlhYmxlIiwidmFyaWFibGVTdHJpbmciLCJ0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nIiwicmVmZXJlbmNlIiwic3RhdGVtZW50IiwicmVmZXJuZWNlU3RyaW5nIiwiY29uc3RyYWludFN0cmluZyIsImNvbmNsdXNpb24iLCJydWxlU3RyaW5nIiwiY29uY2x1c2lvblN0cmluZyIsImRlZHVjdGlvbiIsImRlZHVjdGlvblN0cmluZyIsInNjaGVtYVN0cmluZyIsImRlY2xhcmF0aW9uIiwiY2xhaW0iLCJzZWN0aW9uU3RyaW5nIiwiZGVjbGFyYXRpb25TdHJpbmciLCJjbGFpbVN0cmluZyIsInN1YkRlcml2YXRpb24iLCJsYXN0U3RlcCIsImdldExhc3RTdGVwIiwibGFzdFN0ZXBTdHJpbmciLCJzdWJwcm9vZlN0cmluZyIsImZyYW1lIiwibWV0YXZhcmlhYmxlIiwiZnJhbWVTdHJpbmciLCJtZXRhdmFyaWFibGVTdHJpbmciLCJzdHJpbmciLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOYW1lIiwiZ2V0TmFtZSIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJ0eXBlIiwicHJvdmlzaW9uYWxTdHJpbmciLCJjb3R5cGVEZWNsYXJhdGlvblN0cmluZyIsInN0YXRlbWVudFN1YnN0aXR1dGlvblN0cmluZyIsInJlZmVyZW5jZVN0cmluZyIsInJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZyIsInN1YnN0aXR1dGlvbiIsInN1YnN0aXR1dGlvblN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBcVBnQkE7ZUFBQUE7O1FBMUVBQztlQUFBQTs7UUEwR0FDO2VBQUFBOztRQTlJQUM7ZUFBQUE7O1FBc0dBQztlQUFBQTs7UUF4TEFDO2VBQUFBOztRQXVHQUM7ZUFBQUE7O1FBbklBQztlQUFBQTs7UUFrRUFDO2VBQUFBOztRQXBEQUM7ZUFBQUE7O1FBc09BQztlQUFBQTs7UUFwS0FDO2VBQUFBOztRQVFBQztlQUFBQTs7UUFxTEFDO2VBQUFBOztRQW5IQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUFXQUM7ZUFBQUE7O1FBaEVBQztlQUFBQTs7UUFnSkFDO2VBQUFBOztRQWdCQUM7ZUFBQUE7O1FBMUVBQztlQUFBQTs7UUFqS0FDO2VBQUFBOztRQXNEQUM7ZUFBQUE7O1FBMENBQztlQUFBQTs7UUE5SkFDO2VBQUFBOztRQWlKQUM7ZUFBQUE7OztzQkFwSm9COzJCQUNxQjtBQUVsRCxTQUFTRCxxQkFBcUJFLEtBQUssRUFBRUMsU0FBUyxLQUFLO0lBQ3hELE1BQU1DLGNBQWNGLE1BQU1HLE1BQU0sQ0FBQyxD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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-nominal",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.432",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-nominal",
|
|
7
7
|
"description": "Occam's Nominal language.",
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^17.6.3",
|
|
14
|
-
"occam-furtle": "^3.0.
|
|
14
|
+
"occam-furtle": "^3.0.440",
|
|
15
15
|
"occam-grammar-utilities": "^8.1.22",
|
|
16
|
-
"occam-languages": "^2.2.
|
|
16
|
+
"occam-languages": "^2.2.57",
|
|
17
17
|
"occam-query": "^4.1.203"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@swc/core": "1.13.20",
|
|
21
21
|
"decaf-cli": "^1.0.37",
|
|
22
|
-
"occam-model": "^1.0.
|
|
23
|
-
"occam-server": "^7.0.
|
|
22
|
+
"occam-model": "^1.0.574",
|
|
23
|
+
"occam-server": "^7.0.74",
|
|
24
24
|
"watchful-cli": "^1.7.102"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
@@ -632,13 +632,6 @@ export default class NominalFileContext extends FileContext {
|
|
|
632
632
|
return labelPresent;
|
|
633
633
|
}
|
|
634
634
|
|
|
635
|
-
isAxiomPresentByReference(reference) {
|
|
636
|
-
const axiom = this.findAxiomByReference(reference),
|
|
637
|
-
axiomPresent = (axiom !== null);
|
|
638
|
-
|
|
639
|
-
return axiomPresent;
|
|
640
|
-
}
|
|
641
|
-
|
|
642
635
|
isTypePresentByTypeName(typeName, includeRelease = true) {
|
|
643
636
|
const type = this.findTypeByTypeName(typeName, includeRelease),
|
|
644
637
|
typePresent = (type !== null);
|
package/src/context/mnemic.js
CHANGED
|
@@ -12,13 +12,11 @@ import { termsFromJSON,
|
|
|
12
12
|
statementsFromJSON,
|
|
13
13
|
assertionsFromJSON,
|
|
14
14
|
referencesFromJSON,
|
|
15
|
-
signaturesFromJSON,
|
|
16
15
|
assumptionsFromJSON,
|
|
17
16
|
metavariablesFromJSON,
|
|
18
17
|
substitutionsFromJSON,
|
|
19
18
|
equalitiesToEqualitiesJSON,
|
|
20
19
|
statementsToStatementsJSON,
|
|
21
|
-
signaturesToSignaturesJSON,
|
|
22
20
|
assertionsToAssertionsJSON,
|
|
23
21
|
referencesToReferencesJSON,
|
|
24
22
|
assumptionsToAssumptionsJSON,
|
|
@@ -28,7 +26,7 @@ import { termsFromJSON,
|
|
|
28
26
|
const { push, extract } = arrayUtilities;
|
|
29
27
|
|
|
30
28
|
export default class MnemicContext extends Context {
|
|
31
|
-
constructor(context, terms, frames, equalities, assertions, statements,
|
|
29
|
+
constructor(context, terms, frames, equalities, assertions, statements, references, assumptions, metavariables, substitutions) {
|
|
32
30
|
super(context);
|
|
33
31
|
|
|
34
32
|
this.terms = terms;
|
|
@@ -36,7 +34,6 @@ export default class MnemicContext extends Context {
|
|
|
36
34
|
this.equalities = equalities;
|
|
37
35
|
this.assertions = assertions;
|
|
38
36
|
this.statements = statements;
|
|
39
|
-
this.signatures = signatures;
|
|
40
37
|
this.references = references;
|
|
41
38
|
this.assumptions = assumptions;
|
|
42
39
|
this.metavariables = metavariables;
|
|
@@ -83,16 +80,6 @@ export default class MnemicContext extends Context {
|
|
|
83
80
|
return statements;
|
|
84
81
|
}
|
|
85
82
|
|
|
86
|
-
getSignatures(signatures = []) {
|
|
87
|
-
const context = this.getContext();
|
|
88
|
-
|
|
89
|
-
push(signatures, this.signatures);
|
|
90
|
-
|
|
91
|
-
context.getSignatures(signatures);
|
|
92
|
-
|
|
93
|
-
return signatures;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
83
|
getAssertions(assertions = []) {
|
|
97
84
|
const context = this.getContext();
|
|
98
85
|
|
|
@@ -273,32 +260,6 @@ export default class MnemicContext extends Context {
|
|
|
273
260
|
context.debug(`...added the '${statementString}' statement to the mnemic context.`);
|
|
274
261
|
}
|
|
275
262
|
|
|
276
|
-
addSignature(signature) {
|
|
277
|
-
const context = this, ///
|
|
278
|
-
signatureString = signature.getString();
|
|
279
|
-
|
|
280
|
-
context.trace(`Adding the '${signatureString}' signature to the mnemic context...`);
|
|
281
|
-
|
|
282
|
-
const signatureA = signature; ///
|
|
283
|
-
|
|
284
|
-
extract(this.signatures, (signature) => {
|
|
285
|
-
const signatureB = signature, ///
|
|
286
|
-
signatureAEqualToSignatureB = signatureA.isEqualTo(signatureB);
|
|
287
|
-
|
|
288
|
-
if (signatureAEqualToSignatureB) {
|
|
289
|
-
const signatureString = signature.getString();
|
|
290
|
-
|
|
291
|
-
context.trace(`Removed the existing '${signatureString}' signature from the mnemic context...`);
|
|
292
|
-
|
|
293
|
-
return true;
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
this.signatures.push(signature);
|
|
298
|
-
|
|
299
|
-
context.debug(`...added the '${signatureString}' signature to the mnemic context.`);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
263
|
addReference(reference) {
|
|
303
264
|
const context = this, ///
|
|
304
265
|
referenceString = reference.getString();
|
|
@@ -490,19 +451,6 @@ export default class MnemicContext extends Context {
|
|
|
490
451
|
return statement;
|
|
491
452
|
}
|
|
492
453
|
|
|
493
|
-
findSignatureBySignatureNode(signatureNode) {
|
|
494
|
-
const signatures = this.getSignatures(),
|
|
495
|
-
signature = signatures.find((signature) => {
|
|
496
|
-
const signatureNodeMatches = signature.matchSignatureNode(signatureNode);
|
|
497
|
-
|
|
498
|
-
if (signatureNodeMatches) {
|
|
499
|
-
return true;
|
|
500
|
-
}
|
|
501
|
-
}) || null;
|
|
502
|
-
|
|
503
|
-
return signature;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
454
|
findReferenceByReferenceNode(referenceNode) {
|
|
507
455
|
const references = this.getReferences(),
|
|
508
456
|
reference = references.find((reference) => {
|
|
@@ -603,13 +551,6 @@ export default class MnemicContext extends Context {
|
|
|
603
551
|
return statementPresent;
|
|
604
552
|
}
|
|
605
553
|
|
|
606
|
-
isSignaturePresentBySignatureNode(signatureNode) {
|
|
607
|
-
const signature = this.findSignatureBySignatureNode(signatureNode),
|
|
608
|
-
signaturePresent = (signature !== null);
|
|
609
|
-
|
|
610
|
-
return signaturePresent;
|
|
611
|
-
}
|
|
612
|
-
|
|
613
554
|
isAssumptionPresentByAssumptionNode(assumptionNode) {
|
|
614
555
|
const assumption = this.findAssumptionByAssumptionNode(assumptionNode),
|
|
615
556
|
assumptionPresent = (assumption !== null);
|
|
@@ -647,7 +588,6 @@ export default class MnemicContext extends Context {
|
|
|
647
588
|
this.frames = framesFromJSON(json, context);
|
|
648
589
|
|
|
649
590
|
this.assertions = assertionsFromJSON(json, context);
|
|
650
|
-
this.signatures = signaturesFromJSON(json, context);
|
|
651
591
|
this.substitutions = substitutionsFromJSON(json, context);
|
|
652
592
|
}
|
|
653
593
|
|
|
@@ -663,7 +603,6 @@ export default class MnemicContext extends Context {
|
|
|
663
603
|
equalities = this.getEqualities(),
|
|
664
604
|
assertions = this.getAssertions(),
|
|
665
605
|
statements = this.getStatements(),
|
|
666
|
-
signatures = this.getSignatures(),
|
|
667
606
|
references = this.getReferences(),
|
|
668
607
|
assumptions = this.getAssumptions(),
|
|
669
608
|
metavariables = this.getMetavariables(),
|
|
@@ -674,7 +613,6 @@ export default class MnemicContext extends Context {
|
|
|
674
613
|
equalitiesJSON = equalitiesToEqualitiesJSON(equalities),
|
|
675
614
|
assertionsJSON = assertionsToAssertionsJSON(assertions),
|
|
676
615
|
statementsJSON = statementsToStatementsJSON(statements),
|
|
677
|
-
signaturesJSON = signaturesToSignaturesJSON(signatures),
|
|
678
616
|
referencesJSON = referencesToReferencesJSON(references),
|
|
679
617
|
assumptionsJSON = assumptionsToAssumptionsJSON(assumptions),
|
|
680
618
|
metavariablesJSON = metavariablesToMetavariablesJSON(metavariables),
|
|
@@ -685,7 +623,6 @@ export default class MnemicContext extends Context {
|
|
|
685
623
|
equalities = equalitiesJSON; ///
|
|
686
624
|
assertions = assertionsJSON; ///
|
|
687
625
|
statements = statementsJSON; ///
|
|
688
|
-
signatures = signaturesJSON; ///
|
|
689
626
|
references = referencesJSON; ///
|
|
690
627
|
assumptions = assumptionsJSON; ///
|
|
691
628
|
metavariables = metavariablesJSON; //
|
|
@@ -697,7 +634,6 @@ export default class MnemicContext extends Context {
|
|
|
697
634
|
equalities,
|
|
698
635
|
assertions,
|
|
699
636
|
statements,
|
|
700
|
-
signatures,
|
|
701
637
|
references,
|
|
702
638
|
assumptions,
|
|
703
639
|
metavariables,
|
|
@@ -713,12 +649,11 @@ export default class MnemicContext extends Context {
|
|
|
713
649
|
equalities = null,
|
|
714
650
|
statements = null,
|
|
715
651
|
assertions = null,
|
|
716
|
-
signatures = null,
|
|
717
652
|
references = null,
|
|
718
653
|
assumptions = null,
|
|
719
654
|
metavariables = null,
|
|
720
655
|
substitutions = null,
|
|
721
|
-
mnemicContext = new MnemicContext(context, terms, frames, equalities, assertions, statements,
|
|
656
|
+
mnemicContext = new MnemicContext(context, terms, frames, equalities, assertions, statements, references, assumptions, metavariables, substitutions);
|
|
722
657
|
|
|
723
658
|
mnemicContext.initialise(json);
|
|
724
659
|
|
|
@@ -731,12 +666,11 @@ export default class MnemicContext extends Context {
|
|
|
731
666
|
equalities = [],
|
|
732
667
|
statements = [],
|
|
733
668
|
assertions = [],
|
|
734
|
-
signatures = [],
|
|
735
669
|
references = [],
|
|
736
670
|
assumptions = [],
|
|
737
671
|
metavariables = [],
|
|
738
672
|
substitutions = [],
|
|
739
|
-
mnemicContext = new MnemicContext(context, terms, frames, equalities, assertions, statements,
|
|
673
|
+
mnemicContext = new MnemicContext(context, terms, frames, equalities, assertions, statements, references, assumptions, metavariables, substitutions);
|
|
740
674
|
|
|
741
675
|
return mnemicContext;
|
|
742
676
|
}
|
package/src/context.js
CHANGED
|
@@ -305,13 +305,6 @@ export default class Context extends ContextBase {
|
|
|
305
305
|
return statement;
|
|
306
306
|
}
|
|
307
307
|
|
|
308
|
-
findSignatureBySignatureNode(signatureNode) {
|
|
309
|
-
const context = this.getContext(),
|
|
310
|
-
signature = context.findSignatureBySignatureNode(signatureNode);
|
|
311
|
-
|
|
312
|
-
return signature;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
308
|
findReferenceByReferenceNode(referenceNode) {
|
|
316
309
|
const context = this.getContext(),
|
|
317
310
|
reference = context.findReferenceByReferenceNode(referenceNode);
|
|
@@ -417,13 +410,6 @@ export default class Context extends ContextBase {
|
|
|
417
410
|
return declaredMetavariable;
|
|
418
411
|
}
|
|
419
412
|
|
|
420
|
-
isAxiomPresentByReference(reference) {
|
|
421
|
-
const context = this.getContext(),
|
|
422
|
-
axiomPresent = context.isAxiomPresentByReference(reference);
|
|
423
|
-
|
|
424
|
-
return axiomPresent;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
413
|
isTermPresentByTermNode(termNode) {
|
|
428
414
|
const context = this.getContext(),
|
|
429
415
|
termPresent = context.isTermPresentByTermNode(termNode);
|
|
@@ -466,13 +452,6 @@ export default class Context extends ContextBase {
|
|
|
466
452
|
return statementPresent;
|
|
467
453
|
}
|
|
468
454
|
|
|
469
|
-
isSignaturePresentBySignatureNode(signatureNode) {
|
|
470
|
-
const context = this.getContext(),
|
|
471
|
-
signaturePresent = context.isSignaturePresentBySignatureNode(signatureNode);
|
|
472
|
-
|
|
473
|
-
return signaturePresent;
|
|
474
|
-
}
|
|
475
|
-
|
|
476
455
|
isMetavariablePresentByMetavariableNode(metavariableNode) {
|
|
477
456
|
const context = this.getContext(),
|
|
478
457
|
metavariablePresent = context.isMetavariablePresentByMetavariableNode(metavariableNode);
|
|
@@ -145,9 +145,17 @@ export default define(class SignatureAssertion extends Assertion {
|
|
|
145
145
|
referenceValidates = this.reference.validate(state, context, (reference, context) => {
|
|
146
146
|
let validates = false;
|
|
147
147
|
|
|
148
|
-
const
|
|
148
|
+
const axiom = context.findAxiomByReference(reference);
|
|
149
149
|
|
|
150
|
-
if (
|
|
150
|
+
if (axiom !== null) {
|
|
151
|
+
const axiomSatisfiable = axiom.isSatisfiable();
|
|
152
|
+
|
|
153
|
+
if (axiomSatisfiable) {
|
|
154
|
+
validates = true;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (validates) {
|
|
151
159
|
this.reference = reference;
|
|
152
160
|
|
|
153
161
|
validates = continuation(state, context);
|
|
@@ -200,9 +208,7 @@ export default define(class SignatureAssertion extends Assertion {
|
|
|
200
208
|
return continuation(stepAndFactOrSubproofsUnify);
|
|
201
209
|
}
|
|
202
210
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
// stepAndFactOrSubproofsUnify = axiom.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context);
|
|
211
|
+
axiom.unifyStepAndFactOrSubproofs(step, factOrSubproofs, context, continuation);
|
|
206
212
|
});
|
|
207
213
|
}, context);
|
|
208
214
|
}
|
|
@@ -16,10 +16,6 @@ export default define(class BracketedConstructor extends Constructor {
|
|
|
16
16
|
unifyTerm(term, state, context, continuation) {
|
|
17
17
|
let termUnifiesWithBracketedConstructor;
|
|
18
18
|
|
|
19
|
-
const termString = term.getString();
|
|
20
|
-
|
|
21
|
-
context.trace(`Unifying the '${termString}' term with the bracketed constructor...`);
|
|
22
|
-
|
|
23
19
|
termUnifiesWithBracketedConstructor = super.unifyTerm(term, context, (term, context) => {
|
|
24
20
|
let termUnifies = false;
|
|
25
21
|
|
|
@@ -52,10 +48,6 @@ export default define(class BracketedConstructor extends Constructor {
|
|
|
52
48
|
return termUnifies;
|
|
53
49
|
});
|
|
54
50
|
|
|
55
|
-
if (termUnifiesWithBracketedConstructor) {
|
|
56
|
-
context.debug(`...unified the '${termString}' term with the bracketed constructor.`);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
51
|
return termUnifiesWithBracketedConstructor;
|
|
60
52
|
}
|
|
61
53
|
|