occam-verify-cli 0.0.960 → 0.0.962
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/local.js +3 -9
- package/lib/proofStep.js +8 -5
- package/lib/substitution/termForVariable.js +24 -25
- package/lib/unifier/statementWithCombinator.js +6 -6
- package/lib/unify/statementAtainstStatement.js +16 -16
- package/lib/unify/statementWithBracketedCombinator.js +30 -0
- package/lib/unify/statementWithCombinators.js +40 -0
- package/lib/unify/statementWithMetaType.js +6 -30
- package/lib/unify/termWithBracketedConstructor.js +39 -0
- package/lib/unify/termWithConstructors.js +61 -0
- package/lib/unify/termWithType.js +4 -12
- package/lib/utilities/assignments.js +9 -12
- package/lib/verifier/intrinsicLevel.js +140 -0
- package/lib/verifier/metaLevel.js +11 -20
- package/lib/verifier/statementAsCombinator.js +9 -9
- package/lib/verifier/termAsConstructor.js +5 -5
- package/lib/verify/assertion/contained.js +2 -3
- package/lib/verify/assertion/defined.js +2 -4
- package/lib/verify/assertion/subproof.js +20 -18
- package/lib/verify/assertion/type.js +1 -2
- package/lib/verify/declaration.js +27 -9
- package/lib/verify/frame.js +25 -6
- package/lib/verify/premise.js +3 -3
- package/lib/verify/proofStep.js +23 -30
- package/lib/verify/statement/qualified.js +93 -137
- package/lib/verify/statement/unqualified.js +18 -104
- package/lib/verify/statement.js +95 -76
- package/lib/verify/statementAsCombinator.js +2 -2
- package/lib/verify/statementGivenMetaType.js +41 -0
- package/lib/verify/supposition.js +3 -3
- package/lib/verify/term.js +39 -65
- package/lib/verify/termAsConstructor.js +2 -2
- package/lib/verify/termGivenType.js +34 -0
- package/package.json +1 -1
- package/src/context/local.js +4 -13
- package/src/proofStep.js +10 -5
- package/src/substitution/termForVariable.js +33 -30
- package/src/unifier/statementWithCombinator.js +5 -5
- package/src/unify/statementAtainstStatement.js +13 -13
- package/src/unify/statementWithBracketedCombinator.js +22 -0
- package/src/unify/statementWithCombinators.js +38 -0
- package/src/unify/statementWithMetaType.js +6 -42
- package/src/unify/termWithBracketedConstructor.js +39 -0
- package/src/unify/termWithConstructors.js +63 -0
- package/src/unify/termWithType.js +4 -20
- package/src/utilities/assignments.js +6 -13
- package/src/verifier/intrinsicLevel.js +42 -0
- package/src/verifier/metaLevel.js +13 -21
- package/src/verifier/statementAsCombinator.js +11 -7
- package/src/verifier/termAsConstructor.js +4 -3
- package/src/verify/assertion/contained.js +1 -3
- package/src/verify/assertion/defined.js +1 -4
- package/src/verify/assertion/subproof.js +22 -18
- package/src/verify/assertion/type.js +0 -1
- package/src/verify/declaration.js +34 -11
- package/src/verify/frame.js +32 -5
- package/src/verify/premise.js +3 -3
- package/src/verify/proofStep.js +26 -38
- package/src/verify/statement/qualified.js +104 -184
- package/src/verify/statement/unqualified.js +19 -149
- package/src/verify/statement.js +126 -72
- package/src/verify/statementAsCombinator.js +1 -1
- package/src/verify/statementGivenMetaType.js +37 -0
- package/src/verify/supposition.js +3 -3
- package/src/verify/term.js +44 -93
- package/src/verify/termAsConstructor.js +1 -1
- package/src/verify/termGivenType.js +32 -0
|
@@ -8,192 +8,148 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return verifyQualifiedStatement;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
var
|
|
12
|
-
var _judgement = /*#__PURE__*/ _interop_require_default(require("../judgement"));
|
|
13
|
-
var _type = /*#__PURE__*/ _interop_require_default(require("../assertion/type"));
|
|
14
|
-
var _metavariableWithStatement = /*#__PURE__*/ _interop_require_default(require("../../unify/metavariableWithStatement"));
|
|
11
|
+
var _statement = /*#__PURE__*/ _interop_require_default(require("../../verify/statement"));
|
|
15
12
|
var _query = require("../../utilities/query");
|
|
16
13
|
function _interop_require_default(obj) {
|
|
17
14
|
return obj && obj.__esModule ? obj : {
|
|
18
15
|
default: obj
|
|
19
16
|
};
|
|
20
17
|
}
|
|
21
|
-
var statementNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement!"),
|
|
22
|
-
|
|
18
|
+
var statementNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/statement!"), metavariableNodeQuery = (0, _query.nodeQuery)("/qualifiedStatement/reference/metavariable!");
|
|
19
|
+
var unifyDerivedQualifiedStatementFunctions = [
|
|
20
|
+
unifyDerivedQualifiedStatementAWithRule,
|
|
21
|
+
unifyDerivedQualifiedStatementAWithAxiom,
|
|
22
|
+
unifyDerivedQualifiedStatementAWithLemma,
|
|
23
|
+
unifyDerivedQualifiedStatementAWithTheorem,
|
|
24
|
+
unifyDerivedQualifiedStatementAWithConjecture,
|
|
25
|
+
unifyDerivedQualifiedStatementAWithReference
|
|
26
|
+
];
|
|
27
|
+
function verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext) {
|
|
23
28
|
var qualifiedStatementVerified;
|
|
24
29
|
var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
25
30
|
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' qualified statement..."), qualifiedStatementNode);
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
];
|
|
34
|
-
var qualifiedStatementUnified = unifyQualifiedStatementFunctions.some(function(unifyQualifiedStatementFunction) {
|
|
35
|
-
var qualifiedStatementUnified = unifyQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
|
|
36
|
-
if (qualifiedStatementUnified) {
|
|
37
|
-
return true;
|
|
31
|
+
var statementNode = statementNodeQuery(qualifiedStatementNode), statementVerified = (0, _statement.default)(statementNode, assignments, derived, localContext);
|
|
32
|
+
if (statementVerified) {
|
|
33
|
+
if (derived) {
|
|
34
|
+
var derivedQualifiedStatementVerified = verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
|
|
35
|
+
qualifiedStatementVerified = derivedQualifiedStatementVerified; ///
|
|
36
|
+
} else {
|
|
37
|
+
qualifiedStatementVerified = true;
|
|
38
38
|
}
|
|
39
|
-
});
|
|
40
|
-
if (qualifiedStatementUnified) {
|
|
41
|
-
var derived = false, statementNode = statementNodeQuery(qualifiedStatementNode), statedStatementVerified = verifyStatedStatement(statementNode, assignments, derived, localContext);
|
|
42
|
-
qualifiedStatementVerified = statedStatementVerified; ///
|
|
43
39
|
}
|
|
44
40
|
if (qualifiedStatementVerified) {
|
|
45
41
|
localContext.debug("...verified the '".concat(qualifiedStatementString, "' qualified statement."), qualifiedStatementNode);
|
|
46
42
|
}
|
|
47
43
|
return qualifiedStatementVerified;
|
|
48
44
|
}
|
|
49
|
-
function
|
|
50
|
-
var
|
|
45
|
+
function verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
|
|
46
|
+
var derivedQualifiedStatementVerified;
|
|
47
|
+
var qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
48
|
+
localContext.trace("Verifying the '".concat(qualifiedStatementString, "' derived qualified statement..."), qualifiedStatementNode);
|
|
49
|
+
var derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some(function(unifyDerivedQualifiedStatementFunction) {
|
|
50
|
+
var derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
|
|
51
|
+
return derivedQualifiedStatementUnified;
|
|
52
|
+
});
|
|
53
|
+
derivedQualifiedStatementVerified = derivedQualifiedStatementUnified; ///
|
|
54
|
+
if (derivedQualifiedStatementVerified) {
|
|
55
|
+
localContext.debug("...verified the '".concat(qualifiedStatementString, "' derived qualified statement."), qualifiedStatementNode);
|
|
56
|
+
}
|
|
57
|
+
return derivedQualifiedStatementVerified;
|
|
58
|
+
}
|
|
59
|
+
function unifyDerivedQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
|
|
60
|
+
var derivedQualifiedStatementUnifiedWithRule = false;
|
|
51
61
|
var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), rule = localContext.findRuleByMetavariableNode(metavariableNode);
|
|
52
62
|
if (rule !== null) {
|
|
53
63
|
var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
54
|
-
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' rule..."), qualifiedStatementNode);
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
if (
|
|
58
|
-
localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' rule."), qualifiedStatementNode);
|
|
64
|
+
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' rule..."), qualifiedStatementNode);
|
|
65
|
+
var statementUnified = rule.unifyStatement(statementNode, localContext);
|
|
66
|
+
derivedQualifiedStatementUnifiedWithRule = statementUnified; ///
|
|
67
|
+
if (derivedQualifiedStatementUnifiedWithRule) {
|
|
68
|
+
localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' rule."), qualifiedStatementNode);
|
|
59
69
|
}
|
|
60
70
|
}
|
|
61
|
-
return
|
|
71
|
+
return derivedQualifiedStatementUnifiedWithRule;
|
|
62
72
|
}
|
|
63
|
-
function
|
|
64
|
-
var
|
|
73
|
+
function unifyDerivedQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions, localContext) {
|
|
74
|
+
var derivedQualifiedStatementUnifiedWithAxiom = false;
|
|
65
75
|
var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), axiom = localContext.findAxiomByMetavariableNode(metavariableNode);
|
|
66
76
|
if (axiom !== null) {
|
|
67
77
|
var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
68
|
-
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' axiom..."), qualifiedStatementNode);
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
if (
|
|
72
|
-
localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' axiom."), qualifiedStatementNode);
|
|
78
|
+
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' axiom..."), qualifiedStatementNode);
|
|
79
|
+
var statementUnified = axiom.unifyStatement(statementNode, localContext);
|
|
80
|
+
derivedQualifiedStatementUnifiedWithAxiom = statementUnified; ///
|
|
81
|
+
if (derivedQualifiedStatementUnifiedWithAxiom) {
|
|
82
|
+
localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' axiom."), qualifiedStatementNode);
|
|
73
83
|
}
|
|
74
84
|
}
|
|
75
|
-
return
|
|
85
|
+
return derivedQualifiedStatementUnifiedWithAxiom;
|
|
76
86
|
}
|
|
77
|
-
function
|
|
78
|
-
var
|
|
87
|
+
function unifyDerivedQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions, localContext) {
|
|
88
|
+
var derivedQualifiedStatementUnifiedWithLemma = false;
|
|
79
89
|
var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), lemma = localContext.findLemmaByMetavariableNode(metavariableNode);
|
|
80
90
|
if (lemma !== null) {
|
|
81
91
|
var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
82
|
-
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' lemma..."), qualifiedStatementNode);
|
|
83
|
-
var
|
|
84
|
-
|
|
85
|
-
if (
|
|
86
|
-
localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' lemma."), qualifiedStatementNode);
|
|
92
|
+
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' lemma..."), qualifiedStatementNode);
|
|
93
|
+
var statementUnified = lemma.unifyStatement(statementNode, localContext);
|
|
94
|
+
derivedQualifiedStatementUnifiedWithLemma = statementUnified; ///
|
|
95
|
+
if (derivedQualifiedStatementUnifiedWithLemma) {
|
|
96
|
+
localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' lemma."), qualifiedStatementNode);
|
|
87
97
|
}
|
|
88
98
|
}
|
|
89
|
-
return
|
|
99
|
+
return derivedQualifiedStatementUnifiedWithLemma;
|
|
90
100
|
}
|
|
91
|
-
function
|
|
92
|
-
var
|
|
101
|
+
function unifyDerivedQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutions, localContext) {
|
|
102
|
+
var derivedQualifiedStatementUnifiedWithTheorem = false;
|
|
93
103
|
var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), theorem = localContext.findTheoremByMetavariableNode(metavariableNode);
|
|
94
104
|
if (theorem !== null) {
|
|
95
105
|
var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
96
|
-
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' theorem..."), qualifiedStatementNode);
|
|
97
|
-
var
|
|
98
|
-
|
|
99
|
-
if (
|
|
100
|
-
localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' theorem."), qualifiedStatementNode);
|
|
106
|
+
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' theorem..."), qualifiedStatementNode);
|
|
107
|
+
var statementUnified = theorem.unifyStatement(statementNode, localContext);
|
|
108
|
+
derivedQualifiedStatementUnifiedWithTheorem = statementUnified; ///
|
|
109
|
+
if (derivedQualifiedStatementUnifiedWithTheorem) {
|
|
110
|
+
localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' theorem."), qualifiedStatementNode);
|
|
101
111
|
}
|
|
102
112
|
}
|
|
103
|
-
return
|
|
113
|
+
return derivedQualifiedStatementUnifiedWithTheorem;
|
|
104
114
|
}
|
|
105
|
-
function
|
|
106
|
-
var
|
|
115
|
+
function unifyDerivedQualifiedStatementAWithConjecture(qualifiedStatementNode, substitutions, localContext) {
|
|
116
|
+
var derivedQualifiedStatementUnifiedWithConjecture = false;
|
|
107
117
|
var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), conjecture = localContext.findConjectureByMetavariableNode(metavariableNode);
|
|
108
118
|
if (conjecture !== null) {
|
|
109
119
|
var statementNode = statementNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
110
|
-
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' conjecture..."), qualifiedStatementNode);
|
|
111
|
-
var
|
|
112
|
-
|
|
113
|
-
if (
|
|
114
|
-
localContext.debug("...unified the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' conjecture."), qualifiedStatementNode);
|
|
120
|
+
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' conjecture..."), qualifiedStatementNode);
|
|
121
|
+
var statementUnified = conjecture.unifyStatement(statementNode, localContext);
|
|
122
|
+
derivedQualifiedStatementUnifiedWithConjecture = statementUnified; ///
|
|
123
|
+
if (derivedQualifiedStatementUnifiedWithConjecture) {
|
|
124
|
+
localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' conjecture."), qualifiedStatementNode);
|
|
115
125
|
}
|
|
116
126
|
}
|
|
117
|
-
return
|
|
127
|
+
return derivedQualifiedStatementUnifiedWithConjecture;
|
|
118
128
|
}
|
|
119
|
-
function
|
|
120
|
-
var
|
|
129
|
+
function unifyDerivedQualifiedStatementAWithReference(qualifiedStatementNode, substitutions, localContext) {
|
|
130
|
+
var derivedQualifiedStatementUnifiedWithReference = false;
|
|
121
131
|
var metavariableNode = metavariableNodeQuery(qualifiedStatementNode), metavariableString = localContext.nodeAsString(metavariableNode), metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode), qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
122
|
-
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' qualified statement with the '").concat(metavariableString, "' reference..."), qualifiedStatementNode);
|
|
132
|
+
localContext.trace("Unifying the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' reference..."), qualifiedStatementNode);
|
|
123
133
|
if (metavariablePresent) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
localContext.trace("Verifying the '".concat(statementString, "' stated statement..."), statementNode);
|
|
139
|
-
var verifyStatedStatementFunctions = [
|
|
140
|
-
verifyStatedStatementAsEquality,
|
|
141
|
-
verifyStatedStatementAsJudgement,
|
|
142
|
-
verifyStatedStatementAsTypeAssertion
|
|
143
|
-
];
|
|
144
|
-
verifyStatedStatementFunctions.every(function(verifyStatedStatementFunction) {
|
|
145
|
-
var statedStatementVerified = verifyStatedStatementFunction(statementNode, assignments, derived, localContext);
|
|
146
|
-
if (statedStatementVerified) {
|
|
147
|
-
return true;
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
statedStatementVerified = true; ///
|
|
151
|
-
if (statedStatementVerified) {
|
|
152
|
-
localContext.debug("...verified the '".concat(statementString, "' stated statement."), statementNode);
|
|
134
|
+
debugger;
|
|
135
|
+
// const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
136
|
+
// localContextA = null,
|
|
137
|
+
// localContextB = localContext, ///
|
|
138
|
+
// statementNodeB = statementNode, ///
|
|
139
|
+
// substitutionNodeA = null,
|
|
140
|
+
// metavariableNodeA = metavariableNode, ///
|
|
141
|
+
// metavariableUnifiedWithStatement = unifyMetavariableWithStatement(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB, () => {
|
|
142
|
+
// const verifiedAhead = true;
|
|
143
|
+
//
|
|
144
|
+
// return verifiedAhead;
|
|
145
|
+
// });
|
|
146
|
+
//
|
|
147
|
+
// derivedQualifiedStatementUnifiedWithReference = metavariableUnifiedWithStatement; ///
|
|
153
148
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
function verifyStatedStatementAsEquality(statementNode, assignments, derived, localContext) {
|
|
157
|
-
var statedStatementVerifiedAsEquality = true; ///
|
|
158
|
-
var equalityNode = equalityNodeQuery(statementNode);
|
|
159
|
-
if (equalityNode !== null) {
|
|
160
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
161
|
-
localContext.trace("Verifying the '".concat(statementString, "' stated statement as an equality..."), statementNode);
|
|
162
|
-
var equalityVerified = (0, _equality.default)(equalityNode, assignments, derived, localContext);
|
|
163
|
-
statedStatementVerifiedAsEquality = equalityVerified; ///
|
|
164
|
-
if (statedStatementVerifiedAsEquality) {
|
|
165
|
-
localContext.debug("...verified the '".concat(statementString, "' stated statement as an equality."), statementNode);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return statedStatementVerifiedAsEquality;
|
|
169
|
-
}
|
|
170
|
-
function verifyStatedStatementAsJudgement(statementNode, assignments, derived, localContext) {
|
|
171
|
-
var statedStatementVerifiedAsJudgement = true;
|
|
172
|
-
var judgementNode = judgementNodeQuery(statementNode);
|
|
173
|
-
if (judgementNode !== null) {
|
|
174
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
175
|
-
localContext.trace("Verifying the '".concat(statementString, "' stated statement as a judgement..."), statementNode);
|
|
176
|
-
var judgementVerified = (0, _judgement.default)(judgementNode, assignments, derived, localContext);
|
|
177
|
-
statedStatementVerifiedAsJudgement = judgementVerified; ///
|
|
178
|
-
if (statedStatementVerifiedAsJudgement) {
|
|
179
|
-
localContext.debug("...verified the '".concat(statementString, "' stated statement as a judgement."), statementNode);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
return statedStatementVerifiedAsJudgement;
|
|
183
|
-
}
|
|
184
|
-
function verifyStatedStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
|
|
185
|
-
var statementVerifiedAsTypeAssertion = true; ///
|
|
186
|
-
var typeAssertionNode = typeAssertionNodeQuery(statementNode);
|
|
187
|
-
if (typeAssertionNode !== null) {
|
|
188
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
189
|
-
localContext.trace("Verifying the '".concat(statementString, "' stated statement as a type assertion..."), statementNode);
|
|
190
|
-
var typeAssertionVerified = (0, _type.default)(typeAssertionNode, assignments, derived, localContext);
|
|
191
|
-
statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
|
|
192
|
-
if (statementVerifiedAsTypeAssertion) {
|
|
193
|
-
localContext.debug("...verified the '".concat(statementString, "' stated statement as a type assertion."), statementNode);
|
|
194
|
-
}
|
|
149
|
+
if (derivedQualifiedStatementUnifiedWithReference) {
|
|
150
|
+
localContext.debug("...unified the '".concat(qualifiedStatementString, "' derived qualified statement with the '").concat(metavariableString, "' reference."), qualifiedStatementNode);
|
|
195
151
|
}
|
|
196
|
-
return
|
|
152
|
+
return derivedQualifiedStatementUnifiedWithReference;
|
|
197
153
|
}
|
|
198
154
|
|
|
199
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeUVxdWFsaXR5IGZyb20gXCIuLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeUp1ZGdlbWVudCBmcm9tIFwiLi4vanVkZ2VtZW50XCI7XG5pbXBvcnQgdmVyaWZ5VHlwZUFzc2VydGlvbiBmcm9tIFwiLi4vYXNzZXJ0aW9uL3R5cGVcIjtcbmltcG9ydCB1bmlmeU1ldGF2YXJpYWJsZVdpdGhTdGF0ZW1lbnQgZnJvbSBcIi4uLy4uL3VuaWZ5L21ldGF2YXJpYWJsZVdpdGhTdGF0ZW1lbnRcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvcXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAganVkZ2VtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9qdWRnZW1lbnQhXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3F1YWxpZmllZFN0YXRlbWVudC9yZWZlcmVuY2UvbWV0YXZhcmlhYmxlIVwiKSxcbiAgICAgIHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3R5cGVBc3NlcnRpb24hXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgYXNzaWdubWVudHMsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG5cbiAgY29uc3QgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSdWxlLFxuICAgIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbSxcbiAgICB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEsXG4gICAgdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFRoZW9yZW0sXG4gICAgdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUsXG4gICAgdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZVxuICBdO1xuXG4gIGNvbnN0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQgPSB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh1bmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7ICAvLy9cbiAgICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkID0gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbihxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICBjb25zdCBkZXJpdmVkID0gZmFsc2UsXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlZFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVkU3RhdGVtZW50VmVyaWZpZWQ7IC8vL1xuICB9XG5cbiAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGUgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBydWxlID0gbG9jYWxDb250ZXh0LmZpbmRSdWxlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChydWxlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJ1bGUuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHJ1bGVNYXRjaGVzU3RhdGVtZW50ID0gcnVsZS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSdWxlID0gcnVsZU1hdGNoZXNTdGF0ZW1lbnQ7ICAvLy9cblxuICAgIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBydWxlLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQXhpb20gPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBheGlvbSA9IGxvY2FsQ29udGV4dC5maW5kQXhpb21CeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKGF4aW9tICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGF4aW9tLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBheGlvbU1hdGNoZXNTdGF0ZW1lbnQgPSBheGlvbS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSA9IGF4aW9tTWF0Y2hlc1N0YXRlbWVudDsgLy8vXG5cbiAgICBpZiAocXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGF4aW9tLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aEF4aW9tO1xufVxuXG5mdW5jdGlvbiB1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aExlbW1hID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgbGVtbWEgPSBsb2NhbENvbnRleHQuZmluZExlbW1hQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChsZW1tYSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3QgbGVtbWFNYXRjaGVzU3RhdGVtZW50ID0gbGVtbWEudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWEgPSBsZW1tYU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWEpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhMZW1tYTtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFRoZW9yZW0ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0gPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICB0aGVvcmVtID0gbG9jYWxDb250ZXh0LmZpbmRUaGVvcmVtQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmICh0aGVvcmVtICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHRoZW9yZW0uLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHRoZW9yZW1NYXRjaGVzU3RhdGVtZW50ID0gdGhlb3JlbS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtID0gdGhlb3JlbU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoVGhlb3JlbSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHRoZW9yZW0uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoVGhlb3JlbTtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aENvbmplY3R1cmUgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBjb25qZWN0dXJlID0gbG9jYWxDb250ZXh0LmZpbmRDb25qZWN0dXJlQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChjb25qZWN0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50ID0gY29uamVjdHVyZS51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlID0gY29uamVjdHVyZU1hdGNoZXNTdGF0ZW1lbnQ7IC8vL1xuXG4gICAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUmVmZXJlbmNlID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGxvY2FsQ29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyByZWZlcmVuY2UuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbG9jYWxDb250ZXh0QSA9IG51bGwsXG4gICAgICAgICAgbG9jYWxDb250ZXh0QiA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZUIgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb25Ob2RlQSA9IG51bGwsXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZUEgPSBtZXRhdmFyaWFibGVOb2RlLCAvLy9cbiAgICAgICAgICBtZXRhdmFyaWFibGVVbmlmaWVkV2l0aFN0YXRlbWVudCA9IHVuaWZ5TWV0YXZhcmlhYmxlV2l0aFN0YXRlbWVudChtZXRhdmFyaWFibGVOb2RlQSwgc3RhdGVtZW50Tm9kZUIsIHN1YnN0aXR1dGlvbk5vZGVBLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJlZmVyZW5jZSA9IG1ldGF2YXJpYWJsZVVuaWZpZWRXaXRoU3RhdGVtZW50OyAvLy9cbiAgfVxuXG4gIGlmIChxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJlZmVyZW5jZSkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyByZWZlcmVuY2UuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gcXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2U7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlZFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5U3RhdGVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeVN0YXRlZFN0YXRlbWVudEFzRXF1YWxpdHksXG4gICAgdmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNKdWRnZW1lbnQsXG4gICAgdmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uXG4gIF07XG5cbiAgdmVyaWZ5U3RhdGVkU3RhdGVtZW50RnVuY3Rpb25zLmV2ZXJ5KCh2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4geyAvLy9cbiAgICBjb25zdCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlZFN0YXRlbWVudEZ1bmN0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkID0gdHJ1ZTsgLy8vXG5cbiAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVkIHN0YXRlbWVudC5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNFcXVhbGl0eShzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkgPSB0cnVlOyAvLy9cblxuICBjb25zdCBlcXVhbGl0eU5vZGUgPSBlcXVhbGl0eU5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoZXF1YWxpdHlOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBlcXVhbGl0eVZlcmlmaWVkID0gdmVyaWZ5RXF1YWxpdHkoZXF1YWxpdHlOb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IGVxdWFsaXR5VmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVkIHN0YXRlbWVudCBhcyBhbiBlcXVhbGl0eS5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0p1ZGdlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZEFzSnVkZ2VtZW50ID0gdHJ1ZTtcblxuICBjb25zdCBqdWRnZW1lbnROb2RlID0ganVkZ2VtZW50Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gIGlmIChqdWRnZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEganVkZ2VtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBqdWRnZW1lbnRWZXJpZmllZCA9IHZlcmlmeUp1ZGdlbWVudChqdWRnZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNKdWRnZW1lbnQgPSBqdWRnZW1lbnRWZXJpZmllZDsgIC8vL1xuXG4gICAgaWYgKHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNKdWRnZW1lbnQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlZCBzdGF0ZW1lbnQgYXMgYSBqdWRnZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlZFN0YXRlbWVudFZlcmlmaWVkQXNKdWRnZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN0YXRlZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvbihzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbiA9IHRydWU7ICAvLy9cblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uTm9kZSA9IHR5cGVBc3NlcnRpb25Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImVxdWFsaXR5Tm9kZVF1ZXJ5IiwianVkZ2VtZW50Tm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGVRdWVyeSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb25zIiwiYXNzaWdubWVudHMiLCJsb2NhbENvbnRleHQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoUnVsZSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhMZW1tYSIsInVuaWZ5UXVhbGlmaWVkU3RhdGVtZW50QVdpdGhUaGVvcmVtIiwidW5pZnlRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUiLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEFXaXRoUmVmZXJlbmNlIiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZCIsInNvbWUiLCJ1bmlmeVF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uIiwiZGVyaXZlZCIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZWRTdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVN0YXRlZFN0YXRlbWVudCIsImRlYnVnIiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSdWxlIiwibWV0YXZhcmlhYmxlTm9kZSIsInJ1bGUiLCJmaW5kUnVsZUJ5TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInJ1bGVNYXRjaGVzU3RhdGVtZW50IiwidW5pZnlTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aEF4aW9tIiwiYXhpb20iLCJmaW5kQXhpb21CeU1ldGF2YXJpYWJsZU5vZGUiLCJheGlvbU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aExlbW1hIiwibGVtbWEiLCJmaW5kTGVtbWFCeU1ldGF2YXJpYWJsZU5vZGUiLCJsZW1tYU1hdGNoZXNTdGF0ZW1lbnQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0iLCJ0aGVvcmVtIiwiZmluZFRoZW9yZW1CeU1ldGF2YXJpYWJsZU5vZGUiLCJ0aGVvcmVtTWF0Y2hlc1N0YXRlbWVudCIsInF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSIsImNvbmplY3R1cmUiLCJmaW5kQ29uamVjdHVyZUJ5TWV0YXZhcmlhYmxlTm9kZSIsImNvbmplY3R1cmVNYXRjaGVzU3RhdGVtZW50IiwicXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2UiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJzdGF0ZW1lbnROb2RlQiIsInN1YnN0aXR1dGlvbk5vZGVBIiwibWV0YXZhcmlhYmxlTm9kZUEiLCJtZXRhdmFyaWFibGVVbmlmaWVkV2l0aFN0YXRlbWVudCIsInVuaWZ5TWV0YXZhcmlhYmxlV2l0aFN0YXRlbWVudCIsInZlcmlmaWVkQWhlYWQiLCJzdGF0ZW1lbnRTdHJpbmciLCJ2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc0VxdWFsaXR5IiwidmVyaWZ5U3RhdGVkU3RhdGVtZW50QXNKdWRnZW1lbnQiLCJ2ZXJpZnlTdGF0ZWRTdGF0ZW1lbnRBc1R5cGVBc3NlcnRpb24iLCJldmVyeSIsInZlcmlmeVN0YXRlZFN0YXRlbWVudEZ1bmN0aW9uIiwic3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5IiwiZXF1YWxpdHlOb2RlIiwiZXF1YWxpdHlWZXJpZmllZCIsInZlcmlmeUVxdWFsaXR5Iiwic3RhdGVkU3RhdGVtZW50VmVyaWZpZWRBc0p1ZGdlbWVudCIsImp1ZGdlbWVudE5vZGUiLCJqdWRnZW1lbnRWZXJpZmllZCIsInZlcmlmeUp1ZGdlbWVudCIsInN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uIiwidHlwZUFzc2VydGlvbk5vZGUiLCJ0eXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIl0sIm1h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
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3F1YWxpZmllZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVN0YXRlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKSxcbiAgICAgIG1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9xdWFsaWZpZWRTdGF0ZW1lbnQvcmVmZXJlbmNlL21ldGF2YXJpYWJsZSFcIik7XG5cbmNvbnN0IHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgdW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSdWxlLFxuICB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aEF4aW9tLFxuICB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aExlbW1hLFxuICB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFRoZW9yZW0sXG4gIHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoQ29uamVjdHVyZSxcbiAgdW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSZWZlcmVuY2Vcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVF1YWxpZmllZFN0YXRlbWVudChxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBxdWFsaWZpZWQgc3RhdGVtZW50Li4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKHN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnQocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgcXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7IC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgcXVhbGlmaWVkIHN0YXRlbWVudC5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBxdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudChxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZCA9IHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkID0gdW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgIHJldHVybiBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZDtcbiAgfSk7XG5cbiAgZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWQ7IC8vL1xuXG4gIGlmIChkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJ1bGUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSdWxlID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgcnVsZSA9IGxvY2FsQ29udGV4dC5maW5kUnVsZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAocnVsZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJ1bGUuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZWQgPSBydWxlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSdWxlID0gc3RhdGVtZW50VW5pZmllZDsgIC8vL1xuXG4gICAgaWYgKGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGUpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJ1bGUuYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJ1bGU7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoQXhpb20ocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgIGF4aW9tID0gbG9jYWxDb250ZXh0LmZpbmRBeGlvbUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAoYXhpb20gIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBheGlvbS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IGF4aW9tLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSA9IHN0YXRlbWVudFVuaWZpZWQ7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aEF4aW9tKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBheGlvbS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQXhpb207XG59XG5cbmZ1bmN0aW9uIHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhMZW1tYSA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgIGxlbW1hID0gbG9jYWxDb250ZXh0LmZpbmRMZW1tYUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAobGVtbWEgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IGxlbW1hLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhMZW1tYSA9IHN0YXRlbWVudFVuaWZpZWQ7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aExlbW1hKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBsZW1tYS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWE7XG59XG5cbmZ1bmN0aW9uIHVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoVGhlb3JlbShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0gPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICB0aGVvcmVtID0gbG9jYWxDb250ZXh0LmZpbmRUaGVvcmVtQnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmICh0aGVvcmVtICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgdGhlb3JlbS4uLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IHRoZW9yZW0udW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgIGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0gPSBzdGF0ZW1lbnRVbmlmaWVkOyAvLy9cblxuICAgIGlmIChkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3F1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgcXVhbGlmaWVkIHN0YXRlbWVudCB3aXRoIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyB0aGVvcmVtLmAsIHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhUaGVvcmVtO1xufVxuXG5mdW5jdGlvbiB1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGVRdWVyeShxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgY29uamVjdHVyZSA9IGxvY2FsQ29udGV4dC5maW5kQ29uamVjdHVyZUJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICBpZiAoY29uamVjdHVyZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGNvbmplY3R1cmUuLi5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHN0YXRlbWVudFVuaWZpZWQgPSBjb25qZWN0dXJlLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCk7XG5cbiAgICBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlID0gc3RhdGVtZW50VW5pZmllZDsgLy8vXG5cbiAgICBpZiAoZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgY29uamVjdHVyZS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoQ29uamVjdHVyZTtcbn1cblxuZnVuY3Rpb24gdW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSZWZlcmVuY2UocXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2UgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICBtZXRhdmFyaWFibGVQcmVzZW50ID0gbG9jYWxDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgcXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHF1YWxpZmllZCBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgcmVmZXJlbmNlLi4uYCwgcXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcblxuICAgIGRlYnVnZ2VyXG5cbiAgICAvLyBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KHF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgIC8vICAgICAgIGxvY2FsQ29udGV4dEEgPSBudWxsLFxuICAgIC8vICAgICAgIGxvY2FsQ29udGV4dEIgPSBsb2NhbENvbnRleHQsIC8vL1xuICAgIC8vICAgICAgIHN0YXRlbWVudE5vZGVCID0gc3RhdGVtZW50Tm9kZSwgLy8vXG4gICAgLy8gICAgICAgc3Vic3RpdHV0aW9uTm9kZUEgPSBudWxsLFxuICAgIC8vICAgICAgIG1ldGF2YXJpYWJsZU5vZGVBID0gbWV0YXZhcmlhYmxlTm9kZSwgLy8vXG4gICAgLy8gICAgICAgbWV0YXZhcmlhYmxlVW5pZmllZFdpdGhTdGF0ZW1lbnQgPSB1bmlmeU1ldGF2YXJpYWJsZVdpdGhTdGF0ZW1lbnQobWV0YXZhcmlhYmxlTm9kZUEsIHN0YXRlbWVudE5vZGVCLCBzdWJzdGl0dXRpb25Ob2RlQSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0QiwgKCkgPT4ge1xuICAgIC8vICAgICAgICAgY29uc3QgdmVyaWZpZWRBaGVhZCA9IHRydWU7XG4gICAgLy9cbiAgICAvLyAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgIC8vICAgICAgIH0pO1xuICAgIC8vXG4gICAgLy8gZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUmVmZXJlbmNlID0gbWV0YXZhcmlhYmxlVW5pZmllZFdpdGhTdGF0ZW1lbnQ7IC8vL1xuICB9XG5cbiAgaWYgKGRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFJlZmVyZW5jZSkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7cXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBxdWFsaWZpZWQgc3RhdGVtZW50IHdpdGggdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIHJlZmVyZW5jZS5gLCBxdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhSZWZlcmVuY2U7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5UXVhbGlmaWVkU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwidW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zIiwidW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhSdWxlIiwidW5pZnlEZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50QVdpdGhBeGlvbSIsInVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEFXaXRoTGVtbWEiLCJ1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFRoZW9yZW0iLCJ1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aENvbmplY3R1cmUiLCJ1bmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRBV2l0aFJlZmVyZW5jZSIsInF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJzdWJzdGl0dXRpb25zIiwiYXNzaWdubWVudHMiLCJkZXJpdmVkIiwibG9jYWxDb250ZXh0IiwicXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJxdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVN0YXRlbWVudCIsImRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeURlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnQiLCJkZWJ1ZyIsImRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkIiwic29tZSIsInVuaWZ5RGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uIiwiZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUnVsZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJydWxlIiwiZmluZFJ1bGVCeU1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJzdGF0ZW1lbnRVbmlmaWVkIiwidW5pZnlTdGF0ZW1lbnQiLCJkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhBeGlvbSIsImF4aW9tIiwiZmluZEF4aW9tQnlNZXRhdmFyaWFibGVOb2RlIiwiZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoTGVtbWEiLCJsZW1tYSIsImZpbmRMZW1tYUJ5TWV0YXZhcmlhYmxlTm9kZSIsImRlcml2ZWRRdWFsaWZpZWRTdGF0ZW1lbnRVbmlmaWVkV2l0aFRoZW9yZW0iLCJ0aGVvcmVtIiwiZmluZFRoZW9yZW1CeU1ldGF2YXJpYWJsZU5vZGUiLCJkZXJpdmVkUXVhbGlmaWVkU3RhdGVtZW50VW5pZmllZFdpdGhDb25qZWN0dXJlIiwiY29uamVjdHVyZSIsImZpbmRDb25qZWN0dXJlQnlNZXRhdmFyaWFibGVOb2RlIiwiZGVyaXZlZFF1YWxpZmllZFN0YXRlbWVudFVuaWZpZWRXaXRoUmVmZXJlbmNlIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBa0JBOzs7ZUFBd0JBOzs7Z0VBaEJJO3FCQUVGOzs7Ozs7QUFFMUIsSUFBTUMscUJBQXFCQyxJQUFBQSxnQkFBUyxFQUFDLG1DQUMvQkMsd0JBQXdCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXhDLElBQU1FLDBDQUEwQztJQUM5Q0M7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Q0FDRDtBQUVjLFNBQVNWLHlCQUF5Qlcsc0JBQXNCLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7SUFDeEgsSUFBSUM7SUFFSixJQUFNQywyQkFBMkJGLGFBQWFHLFlBQVksQ0FBQ1A7SUFFM0RJLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUEwQyxPQUF6QkYsMEJBQXlCLDZCQUEyQk47SUFFekYsSUFBTVMsZ0JBQWdCbkIsbUJBQW1CVSx5QkFDbkNVLG9CQUFvQkMsSUFBQUEsa0JBQWUsRUFBQ0YsZUFBZVAsYUFBYUMsU0FBU0M7SUFFL0UsSUFBSU0sbUJBQW1CO1FBQ3JCLElBQUlQLFNBQVM7WUFDWCxJQUFNUyxvQ0FBb0NDLGdDQUFnQ2Isd0JBQXdCQyxlQUFlRztZQUVqSEMsNkJBQTZCTyxtQ0FBbUMsR0FBRztRQUNyRSxPQUFPO1lBQ0xQLDZCQUE2QjtRQUMvQjtJQUNGO0lBRUEsSUFBSUEsNEJBQTRCO1FBQzlC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
|
|
@@ -8,128 +8,42 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return verifyUnqualifiedStatement;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
var _equality = /*#__PURE__*/ _interop_require_default(require("../../verify/equality"));
|
|
12
|
-
var _judgement = /*#__PURE__*/ _interop_require_default(require("../../verify/judgement"));
|
|
13
11
|
var _statement = /*#__PURE__*/ _interop_require_default(require("../../verify/statement"));
|
|
14
|
-
var _type = /*#__PURE__*/ _interop_require_default(require("../assertion/type"));
|
|
15
12
|
var _query = require("../../utilities/query");
|
|
16
13
|
function _interop_require_default(obj) {
|
|
17
14
|
return obj && obj.__esModule ? obj : {
|
|
18
15
|
default: obj
|
|
19
16
|
};
|
|
20
17
|
}
|
|
21
|
-
var statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!")
|
|
18
|
+
var statementNodeQuery = (0, _query.nodeQuery)("/unqualifiedStatement/statement!");
|
|
22
19
|
function verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
|
|
23
20
|
var unqualifiedStatementVerified;
|
|
24
21
|
var unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
|
|
25
22
|
localContext.trace("Verifying the '".concat(unqualifiedStatementString, "' unqualified statement..."), unqualifiedStatementNode);
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return true;
|
|
23
|
+
var statementNode = statementNodeQuery(unqualifiedStatementNode), statementVerified = (0, _statement.default)(statementNode, assignments, derived, localContext);
|
|
24
|
+
if (statementVerified) {
|
|
25
|
+
if (derived) {
|
|
26
|
+
var derivedUnqualifiedStatementVerified = verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext);
|
|
27
|
+
unqualifiedStatementVerified = derivedUnqualifiedStatementVerified; ///
|
|
28
|
+
} else {
|
|
29
|
+
unqualifiedStatementVerified = true;
|
|
34
30
|
}
|
|
35
|
-
}
|
|
31
|
+
}
|
|
36
32
|
if (unqualifiedStatementVerified) {
|
|
37
33
|
localContext.debug("...verified the '".concat(unqualifiedStatementString, "' unqualified statement."), unqualifiedStatementNode);
|
|
38
34
|
}
|
|
39
35
|
return unqualifiedStatementVerified;
|
|
40
36
|
}
|
|
41
|
-
function verifyDerivedUnqualifiedStatement(unqualifiedStatementNode,
|
|
42
|
-
var derivedUnqualifiedStatementVerified
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
} else {
|
|
50
|
-
var statementNode1 = statementNodeQuery(unqualifiedStatementNode), derivedStatementVerified = verifyDerivedStatement(statementNode1, assignments, derived, localContext);
|
|
51
|
-
derivedUnqualifiedStatementVerified = derivedStatementVerified; ///
|
|
52
|
-
}
|
|
53
|
-
if (derivedUnqualifiedStatementVerified) {
|
|
54
|
-
localContext.debug("...verified the '".concat(unqualifiedStatementString, "' derived unqualified statement."), unqualifiedStatementNode);
|
|
55
|
-
}
|
|
37
|
+
function verifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext) {
|
|
38
|
+
var derivedUnqualifiedStatementVerified;
|
|
39
|
+
var unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
|
|
40
|
+
localContext.trace("Verifying the '".concat(unqualifiedStatementString, "' derived unqualified statement..."), unqualifiedStatementNode);
|
|
41
|
+
var statementNode = statementNodeQuery(unqualifiedStatementNode), statementUnified = localContext.unifyStatement(statementNode, localContext);
|
|
42
|
+
derivedUnqualifiedStatementVerified = statementUnified; ///
|
|
43
|
+
if (derivedUnqualifiedStatementVerified) {
|
|
44
|
+
localContext.debug("...verified the '".concat(unqualifiedStatementString, "' derived unqualified statement."), unqualifiedStatementNode);
|
|
56
45
|
}
|
|
57
46
|
return derivedUnqualifiedStatementVerified;
|
|
58
47
|
}
|
|
59
|
-
function verifyStatedUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
|
|
60
|
-
var statedUnqualifiedStatementVerified = false;
|
|
61
|
-
if (!derived) {
|
|
62
|
-
var statementNode = statementNodeQuery(unqualifiedStatementNode), unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
|
|
63
|
-
localContext.trace("Verifying the '".concat(unqualifiedStatementString, "' stated unqualified statement..."), unqualifiedStatementNode);
|
|
64
|
-
var statementVerified = (0, _statement.default)(statementNode, assignments, derived, localContext);
|
|
65
|
-
statedUnqualifiedStatementVerified = statementVerified; ///
|
|
66
|
-
if (statedUnqualifiedStatementVerified) {
|
|
67
|
-
localContext.debug("...verified the '".concat(unqualifiedStatementString, "' stated unqualified statement."), unqualifiedStatementNode);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return statedUnqualifiedStatementVerified;
|
|
71
|
-
}
|
|
72
|
-
function verifyDerivedStatement(statementNode, assignments, derived, localContext) {
|
|
73
|
-
var derivedStatementVerified;
|
|
74
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
75
|
-
localContext.trace("Verifying the '".concat(statementString, "' derived statement..."), statementNode);
|
|
76
|
-
var verifyDerivedStatementFunctions = [
|
|
77
|
-
verifyDerivedStatementAsEquality,
|
|
78
|
-
verifyDerivedStatementAsJudgement,
|
|
79
|
-
verifyDerivedStatementAsTypeAssertion
|
|
80
|
-
];
|
|
81
|
-
derivedStatementVerified = verifyDerivedStatementFunctions.every(function(verifyDerivedStatementFunction) {
|
|
82
|
-
var derivedStatementVerified = verifyDerivedStatementFunction(statementNode, assignments, derived, localContext);
|
|
83
|
-
if (derivedStatementVerified) {
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
if (derivedStatementVerified) {
|
|
88
|
-
localContext.debug("...verified the '".concat(statementString, "' derived statement."), statementNode);
|
|
89
|
-
}
|
|
90
|
-
return derivedStatementVerified;
|
|
91
|
-
}
|
|
92
|
-
function verifyDerivedStatementAsEquality(statementNode, assignments, derived, localContext) {
|
|
93
|
-
var derivedStatementVerifiedAsEquality = true; ///
|
|
94
|
-
var equalityNode = equalityNodeQuery(statementNode);
|
|
95
|
-
if (equalityNode !== null) {
|
|
96
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
97
|
-
localContext.trace("Verifying the '".concat(statementString, "' derived statement as an equality..."), statementNode);
|
|
98
|
-
var equalityVerified = (0, _equality.default)(equalityNode, assignments, derived, localContext);
|
|
99
|
-
derivedStatementVerifiedAsEquality = equalityVerified; ///
|
|
100
|
-
if (derivedStatementVerifiedAsEquality) {
|
|
101
|
-
localContext.debug("...verified the '".concat(statementString, "' derived statement as an equality."), statementNode);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return derivedStatementVerifiedAsEquality;
|
|
105
|
-
}
|
|
106
|
-
function verifyDerivedStatementAsJudgement(statementNode, assignments, derived, localContext) {
|
|
107
|
-
var derivedStatementVerifiedAsJudgement = true;
|
|
108
|
-
var judgementNode = judgementNodeQuery(statementNode);
|
|
109
|
-
if (judgementNode !== null) {
|
|
110
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
111
|
-
localContext.trace("Verifying the '".concat(statementString, "' derived statement as a judgement..."), statementNode);
|
|
112
|
-
var judgementVerified = (0, _judgement.default)(judgementNode, assignments, derived, localContext);
|
|
113
|
-
derivedStatementVerifiedAsJudgement = judgementVerified; ///
|
|
114
|
-
if (derivedStatementVerifiedAsJudgement) {
|
|
115
|
-
localContext.debug("...verified the '".concat(statementString, "' derived statement as a judgement."), statementNode);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return derivedStatementVerifiedAsJudgement;
|
|
119
|
-
}
|
|
120
|
-
function verifyDerivedStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
|
|
121
|
-
var statementVerifiedAsTypeAssertion = true; ///
|
|
122
|
-
var typeAssertionNode = typeAssertionNodeQuery(statementNode);
|
|
123
|
-
if (typeAssertionNode !== null) {
|
|
124
|
-
var statementString = localContext.nodeAsString(statementNode);
|
|
125
|
-
localContext.trace("Verifying the '".concat(statementString, "' derived statement as a type assertion..."), statementNode);
|
|
126
|
-
var typeAssertionVerified = (0, _type.default)(typeAssertionNode, assignments, derived, localContext);
|
|
127
|
-
statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
|
|
128
|
-
if (statementVerifiedAsTypeAssertion) {
|
|
129
|
-
localContext.debug("...verified the '".concat(statementString, "' derived statement as a type assertion."), statementNode);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return statementVerifiedAsTypeAssertion;
|
|
133
|
-
}
|
|
134
48
|
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5RXF1YWxpdHkgZnJvbSBcIi4uLy4uL3ZlcmlmeS9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeUp1ZGdlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L2p1ZGdlbWVudFwiO1xuaW1wb3J0IHZlcmlmeVN0YXRlbWVudCBmcm9tIFwiLi4vLi4vdmVyaWZ5L3N0YXRlbWVudFwiO1xuaW1wb3J0IHZlcmlmeVR5cGVBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvbi90eXBlXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIiksXG4gICAgICBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAganVkZ2VtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9qdWRnZW1lbnQhXCIpLFxuICAgICAgdHlwZUFzc2VydGlvbk5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdHlwZUFzc2VydGlvbiFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb25zID0gW1xuICAgIHZlcmlmeURlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudCxcbiAgICB2ZXJpZnlTdGF0ZWRVbnF1YWxpZmllZFN0YXRlbWVudFxuICBdO1xuXG4gIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9ucy5zb21lKCh2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3QgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50RnVuY3Rpb24odW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmICh1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuYCwgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmIChkZXJpdmVkKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50VW5pZmllZCA9IGxvY2FsQ29udGV4dC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgIGRlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgICAgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5RGVyaXZlZFN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgZGVyaXZlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWQ7IC8vL1xuICAgIH1cblxuICAgIGlmIChkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHVucXVhbGlmaWVkIHN0YXRlbWVudC5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVkVW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKCFkZXJpdmVkKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeSh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgc3RhdGVkIHVucXVhbGlmaWVkIHN0YXRlbWVudC4uLmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIHN0YXRlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBzdGF0ZW1lbnRWZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoc3RhdGVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZWQgdW5xdWFsaWZpZWQgc3RhdGVtZW50LmAsIHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeURlcml2ZWRTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgc3RhdGVtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5RGVyaXZlZFN0YXRlbWVudEZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNFcXVhbGl0eSxcbiAgICB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNKdWRnZW1lbnQsXG4gICAgdmVyaWZ5RGVyaXZlZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvblxuICBdO1xuXG4gIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeURlcml2ZWRTdGF0ZW1lbnRGdW5jdGlvbnMuZXZlcnkoKHZlcmlmeURlcml2ZWRTdGF0ZW1lbnRGdW5jdGlvbikgPT4geyAgLy8vXG4gICAgY29uc3QgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5RGVyaXZlZFN0YXRlbWVudEZ1bmN0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgaWYgKGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICBpZiAoZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNFcXVhbGl0eShzdGF0ZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5ID0gdHJ1ZTsgLy8vXG5cbiAgY29uc3QgZXF1YWxpdHlOb2RlID0gZXF1YWxpdHlOb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGVxdWFsaXR5Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQgYXMgYW4gZXF1YWxpdHkuLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IGVxdWFsaXR5VmVyaWZpZWQgPSB2ZXJpZnlFcXVhbGl0eShlcXVhbGl0eU5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSA9IGVxdWFsaXR5VmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzRXF1YWxpdHkpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgc3RhdGVtZW50IGFzIGFuIGVxdWFsaXR5LmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0VxdWFsaXR5O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNKdWRnZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNKdWRnZW1lbnQgPSB0cnVlO1xuXG4gIGNvbnN0IGp1ZGdlbWVudE5vZGUgPSBqdWRnZW1lbnROb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgaWYgKGp1ZGdlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgc3RhdGVtZW50IGFzIGEganVkZ2VtZW50Li4uYCwgc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb25zdCBqdWRnZW1lbnRWZXJpZmllZCA9IHZlcmlmeUp1ZGdlbWVudChqdWRnZW1lbnROb2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzSnVkZ2VtZW50ID0ganVkZ2VtZW50VmVyaWZpZWQ7ICAvLy9cblxuICAgIGlmIChkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWRBc0p1ZGdlbWVudCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCBzdGF0ZW1lbnQgYXMgYSBqdWRnZW1lbnQuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzSnVkZ2VtZW50O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkU3RhdGVtZW50QXNUeXBlQXNzZXJ0aW9uKHN0YXRlbWVudE5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uID0gdHJ1ZTsgIC8vL1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25Ob2RlID0gdHlwZUFzc2VydGlvbk5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICBpZiAodHlwZUFzc2VydGlvbk5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIGRlcml2ZWQgc3RhdGVtZW50IGFzIGEgdHlwZSBhc3NlcnRpb24uLi5gLCBzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24gPSB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNUeXBlQXNzZXJ0aW9uKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBkZXJpdmVkIHN0YXRlbWVudCBhcyBhIHR5cGUgYXNzZXJ0aW9uLmAsIHN0YXRlbWVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdGF0ZW1lbnRWZXJpZmllZEFzVHlwZUFzc2VydGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsImVxdWFsaXR5Tm9kZVF1ZXJ5IiwianVkZ2VtZW50Tm9kZVF1ZXJ5IiwidHlwZUFzc2VydGlvbk5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnRGdW5jdGlvbnMiLCJ2ZXJpZnlEZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJ2ZXJpZnlTdGF0ZWRVbnF1YWxpZmllZFN0YXRlbWVudCIsInNvbWUiLCJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudEZ1bmN0aW9uIiwiZGVidWciLCJkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRVbmlmaWVkIiwidW5pZnlTdGF0ZW1lbnQiLCJkZXJpdmVkU3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlEZXJpdmVkU3RhdGVtZW50Iiwic3RhdGVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsInN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5U3RhdGVtZW50Iiwic3RhdGVtZW50U3RyaW5nIiwidmVyaWZ5RGVyaXZlZFN0YXRlbWVudEZ1bmN0aW9ucyIsInZlcmlmeURlcml2ZWRTdGF0ZW1lbnRBc0VxdWFsaXR5IiwidmVyaWZ5RGVyaXZlZFN0YXRlbWVudEFzSnVkZ2VtZW50IiwidmVyaWZ5RGVyaXZlZFN0YXRlbWVudEFzVHlwZUFzc2VydGlvbiIsImV2ZXJ5IiwidmVyaWZ5RGVyaXZlZFN0YXRlbWVudEZ1bmN0aW9uIiwiZGVyaXZlZFN0YXRlbWVudFZlcmlmaWVkQXNFcXVhbGl0eSIsImVxdWFsaXR5Tm9kZSIsImVxdWFsaXR5VmVyaWZpZWQiLCJ2ZXJpZnlFcXVhbGl0eSIsImRlcml2ZWRTdGF0ZW1lbnRWZXJpZmllZEFzSnVkZ2VtZW50IiwianVkZ2VtZW50Tm9kZSIsImp1ZGdlbWVudFZlcmlmaWVkIiwidmVyaWZ5SnVkZ2VtZW50Iiwic3RhdGVtZW50VmVyaWZpZWRBc1R5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVR5cGVBc3NlcnRpb24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBd0JBOzs7K0RBWkc7Z0VBQ0M7Z0VBQ0E7MkRBQ0k7cUJBRU47Ozs7OztBQUUxQixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMscUNBQy9CQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUMseUJBQzlCRSxxQkFBcUJGLElBQUFBLGdCQUFTLEVBQUMsMEJBQy9CRyx5QkFBeUJILElBQUFBLGdCQUFTLEVBQUM7QUFFMUIsU0FBU0YsMkJBQTJCTSx3QkFBd0IsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFlBQVk7SUFDN0csSUFBSUM7SUFFSixJQUFNQyw2QkFBNkJGLGFBQWFHLFlBQVksQ0FBQ047SUFFN0RHLGFBQWFJLEtBQUssQ0FBQyxBQUFDLGtCQUE0QyxPQUEzQkYsNEJBQTJCLCtCQUE2Qkw7SUFFN0YsSUFBTVEsc0NBQXNDO1FBQzFDQztRQUNBQztLQUNEO0lBRUROLCtCQUErQkksb0NBQW9DRyxJQUFJLENBQUMsU0FBQ0M7UUFDdkUsSUFBTVIsK0JBQStCUSxtQ0FBbUNaLDBCQUEwQkMsYUFBYUMsU0FBU0M7UUFFeEgsSUFBSUMsOEJBQThCO1lBQ2hDLE9BQU87UUFDVDtJQUNGO0lBRUEsSUFB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
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi8uLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3VucXVhbGlmaWVkU3RhdGVtZW50L3N0YXRlbWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcblxuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgc3RhdGVtZW50VmVyaWZpZWQgPSB2ZXJpZnlTdGF0ZW1lbnQoc3RhdGVtZW50Tm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGxvY2FsQ29udGV4dCk7XG5cbiAgaWYgKHN0YXRlbWVudFZlcmlmaWVkKSB7XG4gICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5RGVyaXZlZFVucXVhbGlmaWVkU3RhdGVtZW50KHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IGRlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHVucXVhbGlmaWVkIHN0YXRlbWVudC5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeURlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudCh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICBsZXQgZGVyaXZlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG5cbiAgY29uc3QgdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuLi5gLCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgc3RhdGVtZW50VW5pZmllZCA9IGxvY2FsQ29udGV4dC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBsb2NhbENvbnRleHQpO1xuXG4gIGRlcml2ZWRVbnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gc3RhdGVtZW50VW5pZmllZDsgIC8vL1xuXG4gIGlmIChkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3VucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nfScgZGVyaXZlZCB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuYCwgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcbiAgfVxuXG4gIHJldHVybiBkZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCIsInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImxvY2FsQ29udGV4dCIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5U3RhdGVtZW50IiwiZGVyaXZlZFVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlEZXJpdmVkVW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJkZWJ1ZyIsInN0YXRlbWVudFVuaWZpZWQiLCJ1bmlmeVN0YXRlbWVudCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUF3QkE7OztnRUFOSTtxQkFFRjs7Ozs7O0FBRTFCLElBQU1DLHFCQUFxQkMsSUFBQUEsZ0JBQVMsRUFBQztBQUV0QixTQUFTRiwyQkFBMkJHLHdCQUF3QixFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRUMsWUFBWTtJQUM3RyxJQUFJQztJQUVKLElBQU1DLDZCQUE2QkYsYUFBYUcsWUFBWSxDQUFDTjtJQUU3REcsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQTRDLE9BQTNCRiw0QkFBMkIsK0JBQTZCTDtJQUU3RixJQUFNUSxnQkFBZ0JWLG1CQUFtQkUsMkJBQ25DUyxvQkFBb0JDLElBQUFBLGtCQUFlLEVBQUNGLGVBQWVQLGFBQWFDLFNBQVNDO0lBRS9FLElBQUlNLG1CQUFtQjtRQUNyQixJQUFJUCxTQUFTO1lBQ1gsSUFBTVMsc0NBQXNDQyxrQ0FBa0NaLDBCQUEwQkc7WUFFeEdDLCtCQUErQk8scUNBQXFDLEdBQUc7UUFDekUsT0FBTztZQUNMUCwrQkFBK0I7UUFDakM7SUFDRjtJQUVBLElBQUlBLDhCQUE4QjtRQUNoQ0QsYUFBYVUsS0FBSyxDQUFDLEFBQUMsb0JBQThDLE9BQTNCUiw0QkFBMkIsNkJBQTJCTDtJQUMvRjtJQUVBLE9BQU9JO0FBQ1Q7QUFFQSxTQUFTUSxrQ0FBa0NaLHdCQUF3QixFQUFFRyxZQUFZO0lBQy9FLElBQUlRO0lBRUosSUFBTU4sNkJBQTZCRixhQUFhRyxZQUFZLENBQUNOO0lBRTdERyxhQUFhSSxLQUFLLENBQUMsQUFBQyxrQkFBNEMsT0FBM0JGLDRCQUEyQix1Q0FBcUNMO0lBRXJHLElBQU1RLGdCQUFnQlYsbUJBQW1CRSwyQkFDbkNjLG1CQUFtQlgsYUFBYVksY0FBYyxDQUFDUCxlQUFlTDtJQUVwRVEsc0NBQXNDRyxrQkFBbUIsR0FBRztJQUU1RCxJQUFJSCxxQ0FBcUM7UUFDdkNSLGFBQWFVLEtBQUssQ0FBQyxBQUFDLG9CQUE4QyxPQUEzQlIsNEJBQTJCLHFDQUFtQ0w7SUFDdkc7SUFFQSxPQUFPVztBQUNUIn0=
|