occam-verify-cli 0.0.479 → 0.0.481
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/conclusion.js +21 -20
- package/lib/constants.js +5 -1
- package/lib/equality.js +10 -13
- package/lib/metaSubstitution.js +26 -24
- package/lib/premise.js +21 -16
- package/lib/substitution.js +27 -25
- package/lib/utilities/node.js +16 -15
- package/lib/verify/statement.js +14 -16
- package/lib/verify/statementAsEquality.js +139 -0
- package/lib/verify/statementTypeAssertion.js +82 -0
- package/package.json +1 -1
- package/src/conclusion.js +35 -41
- package/src/constants.js +1 -0
- package/src/equality.js +14 -16
- package/src/metaSubstitution.js +33 -29
- package/src/premise.js +24 -26
- package/src/substitution.js +34 -30
- package/src/utilities/node.js +13 -13
- package/src/verify/statement.js +15 -19
- package/src/verify/statementAsEquality.js +146 -0
- package/src/verify/{assertion/type.js → statementTypeAssertion.js} +35 -29
- package/lib/verify/assertion/type.js +0 -79
- package/lib/verify/equality.js +0 -133
- package/src/verify/equality.js +0 -136
package/lib/conclusion.js
CHANGED
|
@@ -117,22 +117,22 @@ function matchConclusionTerminalNode(conclusionTerminalNode, terminalNode, subst
|
|
|
117
117
|
}
|
|
118
118
|
function matchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode, substitutions) {
|
|
119
119
|
var conclusionNonTerminalNodeMatches = false;
|
|
120
|
-
var ruleName = nonTerminalNode.getRuleName(), childNodes = nonTerminalNode.getChildNodes(), conclusionNonTerminalNodeRuleName = conclusionNonTerminalNode.getRuleName(), conclusionNonTerminalNodeChildNodes = conclusionNonTerminalNode.getChildNodes(), ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME, conclusionNonTerminalNodeRuleNameMetastatementRuleName = conclusionNonTerminalNodeRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
|
|
120
|
+
var ruleName = nonTerminalNode.getRuleName(), childNodes = nonTerminalNode.getChildNodes(), conclusionNonTerminalNodeRuleName = conclusionNonTerminalNode.getRuleName(), conclusionNonTerminalNodeChildNodes = conclusionNonTerminalNode.getChildNodes(), nodes = childNodes, conclusionNodes = conclusionNonTerminalNodeChildNodes, ruleNameStatementRuleName = ruleName === _ruleNames.STATEMENT_RULE_NAME, conclusionNonTerminalNodeRuleNameMetastatementRuleName = conclusionNonTerminalNodeRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
|
|
121
121
|
if (ruleNameStatementRuleName && conclusionNonTerminalNodeRuleNameMetastatementRuleName) {
|
|
122
122
|
var statementNode = nonTerminalNode, conclusionMetastatementNode = conclusionNonTerminalNode, conclusionMetastatementNodeMatches = matchConclusionMetastatementNode(conclusionMetastatementNode, statementNode, substitutions);
|
|
123
123
|
if (conclusionMetastatementNodeMatches) {
|
|
124
124
|
conclusionNonTerminalNodeMatches = true; ///
|
|
125
125
|
} else {
|
|
126
|
-
var
|
|
126
|
+
var conclusionNonTerminalNodeChildNodesMatches = matchConclusionNodes(conclusionNodes, nodes, substitutions);
|
|
127
127
|
conclusionNonTerminalNodeMatches = conclusionNonTerminalNodeChildNodesMatches; ///
|
|
128
128
|
}
|
|
129
129
|
} else if (ruleName === conclusionNonTerminalNodeRuleName) {
|
|
130
|
-
var
|
|
130
|
+
var conclusionNonTerminalNodeChildNodesMatches1 = matchConclusionNodes(conclusionNodes, nodes, substitutions);
|
|
131
131
|
conclusionNonTerminalNodeMatches = conclusionNonTerminalNodeChildNodesMatches1; ///
|
|
132
132
|
}
|
|
133
133
|
return conclusionNonTerminalNodeMatches;
|
|
134
134
|
}
|
|
135
|
-
function matchConclusionMetavariableNode(conclusionMetavariableNode,
|
|
135
|
+
function matchConclusionMetavariableNode(conclusionMetavariableNode, statementNode, substitutions) {
|
|
136
136
|
var conclusionMetavariableNodeMatches = true;
|
|
137
137
|
var conclusionMetavariableName = (0, _query.metavariableNameFromMetavariableNode)(conclusionMetavariableNode), substitution = substitutions.find(function(substitution) {
|
|
138
138
|
var metavariableName = substitution.getMetavariableName();
|
|
@@ -141,7 +141,7 @@ function matchConclusionMetavariableNode(conclusionMetavariableNode, nodes, subs
|
|
|
141
141
|
}
|
|
142
142
|
}) || null;
|
|
143
143
|
if (substitution !== null) {
|
|
144
|
-
var substitutionNodesMatch = substitution.
|
|
144
|
+
var substitutionNodesMatch = substitution.matchStatementNode(statementNode);
|
|
145
145
|
conclusionMetavariableNodeMatches = substitutionNodesMatch; ///
|
|
146
146
|
}
|
|
147
147
|
return conclusionMetavariableNodeMatches;
|
|
@@ -154,7 +154,7 @@ function matchConclusionMetastatementNode(conclusionMetastatementNode, statement
|
|
|
154
154
|
if (conclusionChildNodeNonTerminalNode) {
|
|
155
155
|
var conclusionNonTerminalChildNode = conclusionChildNode, conclusionNonTerminalChildNodeRuleName = conclusionNonTerminalChildNode.getRuleName(), conclusionNonTerminalChildNodeRuleNameMetavariableRuleName = conclusionNonTerminalChildNodeRuleName === _ruleNames.METAVARIABLE_RULE_NAME;
|
|
156
156
|
if (conclusionNonTerminalChildNodeRuleNameMetavariableRuleName) {
|
|
157
|
-
var conclusionMetavariableNode = conclusionNonTerminalChildNode,
|
|
157
|
+
var conclusionMetavariableNode = conclusionNonTerminalChildNode, conclusionMetavariableNodeMatches = matchConclusionMetavariableNode(conclusionMetavariableNode, statementNode, substitutions);
|
|
158
158
|
conclusionMetastatementNodeMatches = conclusionMetavariableNodeMatches; ///
|
|
159
159
|
}
|
|
160
160
|
}
|
|
@@ -194,21 +194,22 @@ function metaMatchConclusionTerminalNode(conclusionTerminalNode, terminalNode, m
|
|
|
194
194
|
}
|
|
195
195
|
function metaMatchConclusionNonTerminalNode(conclusionNonTerminalNode, nonTerminalNode, metaSubstitutions) {
|
|
196
196
|
var conclusionNonTerminalNodeMatches = false;
|
|
197
|
-
var ruleName = nonTerminalNode.getRuleName(), conclusionNonTerminalNodeRuleName = conclusionNonTerminalNode.getRuleName();
|
|
198
|
-
if (
|
|
199
|
-
var
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
conclusionNonTerminalNodeMatches = conclusionMetastatementNodeMatches; ///
|
|
206
|
-
}
|
|
197
|
+
var ruleName = nonTerminalNode.getRuleName(), childNodes = nonTerminalNode.getChildNodes(), conclusionNonTerminalNodeRuleName = conclusionNonTerminalNode.getRuleName(), conclusionNonTerminalNodeChildNodes = conclusionNonTerminalNode.getChildNodes(), nodes = childNodes, conclusionNodes = conclusionNonTerminalNodeChildNodes, ruleNameMetastatementRuleName = ruleName === _ruleNames.METASTATEMENT_RULE_NAME, conclusionNonTerminalNodeRuleNameMetastatementRuleName = conclusionNonTerminalNodeRuleName === _ruleNames.METASTATEMENT_RULE_NAME;
|
|
198
|
+
if (ruleNameMetastatementRuleName && conclusionNonTerminalNodeRuleNameMetastatementRuleName) {
|
|
199
|
+
var statementNode = nonTerminalNode, conclusionMetastatementNode = conclusionNonTerminalNode, conclusionMetastatementNodeMatches = metaMatchConclusionMetastatementNode(conclusionMetastatementNode, statementNode, metaSubstitutions);
|
|
200
|
+
if (conclusionMetastatementNodeMatches) {
|
|
201
|
+
conclusionNonTerminalNodeMatches = true; ///
|
|
202
|
+
} else {
|
|
203
|
+
var conclusionNonTerminalNodeChildNodesMatches = metaMatchConclusionNodes(conclusionNodes, nodes, metaSubstitutions);
|
|
204
|
+
conclusionNonTerminalNodeMatches = conclusionNonTerminalNodeChildNodesMatches; ///
|
|
207
205
|
}
|
|
206
|
+
} else if (ruleName === conclusionNonTerminalNodeRuleName) {
|
|
207
|
+
var conclusionNonTerminalNodeChildNodesMatches1 = metaMatchConclusionNodes(conclusionNodes, nodes, metaSubstitutions);
|
|
208
|
+
conclusionNonTerminalNodeMatches = conclusionNonTerminalNodeChildNodesMatches1; ///
|
|
208
209
|
}
|
|
209
210
|
return conclusionNonTerminalNodeMatches;
|
|
210
211
|
}
|
|
211
|
-
function metaMatchConclusionMetavariableNode(conclusionMetavariableNode,
|
|
212
|
+
function metaMatchConclusionMetavariableNode(conclusionMetavariableNode, metastatementNode, metaSubstitutions) {
|
|
212
213
|
var conclusionMetavariableNodeMatches = true;
|
|
213
214
|
var conclusionMetavariableName = (0, _query.metavariableNameFromMetavariableNode)(conclusionMetavariableNode), metaSubstitution = metaSubstitutions.find(function(metaSubstitution) {
|
|
214
215
|
var metavariableName = metaSubstitution.getMetavariableName();
|
|
@@ -217,7 +218,7 @@ function metaMatchConclusionMetavariableNode(conclusionMetavariableNode, nodes,
|
|
|
217
218
|
}
|
|
218
219
|
}) || null;
|
|
219
220
|
if (metaSubstitution !== null) {
|
|
220
|
-
var metaSubstitutionNodesMatch = metaSubstitution.
|
|
221
|
+
var metaSubstitutionNodesMatch = metaSubstitution.matchMetastatementNode(metastatementNode);
|
|
221
222
|
conclusionMetavariableNodeMatches = metaSubstitutionNodesMatch; ///
|
|
222
223
|
}
|
|
223
224
|
return conclusionMetavariableNodeMatches;
|
|
@@ -230,7 +231,7 @@ function metaMatchConclusionMetastatementNode(conclusionMetastatementNode, metas
|
|
|
230
231
|
if (conclusionChildNodeNonTerminalNode) {
|
|
231
232
|
var conclusionNonTerminalChildNode = conclusionChildNode, conclusionNonTerminalChildNodeRuleName = conclusionNonTerminalChildNode.getRuleName(), conclusionNonTerminalChildNodeRuleNameMetavariableRuleName = conclusionNonTerminalChildNodeRuleName === _ruleNames.METAVARIABLE_RULE_NAME;
|
|
232
233
|
if (conclusionNonTerminalChildNodeRuleNameMetavariableRuleName) {
|
|
233
|
-
var conclusionMetavariableNode = conclusionNonTerminalChildNode,
|
|
234
|
+
var conclusionMetavariableNode = conclusionNonTerminalChildNode, conclusionMetavariableNodeMatches = metaMatchConclusionMetavariableNode(conclusionMetavariableNode, metastatementNode, metaSubstitutions);
|
|
234
235
|
conclusionMetastatementNodeMatches = conclusionMetavariableNodeMatches; ///
|
|
235
236
|
}
|
|
236
237
|
}
|
|
@@ -238,4 +239,4 @@ function metaMatchConclusionMetastatementNode(conclusionMetastatementNode, metas
|
|
|
238
239
|
return conclusionMetastatementNodeMatches;
|
|
239
240
|
}
|
|
240
241
|
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25jbHVzaW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgU1RBVEVNRU5UX1JVTEVfTkFNRSwgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUsIE1FVEFWQVJJQUJMRV9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uY2x1c2lvbiB7XG4gIGNvbnN0cnVjdG9yKG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlID0gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBtZXRhc3RhdGVtZW50U3RyaW5nID0gbm9kZUFzU3RyaW5nKHRoaXMubWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnQgPSBtZXRhc3RhdGVtZW50U3RyaW5nLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG1ldGFzdGF0ZW1lbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IG1ldGFzdGF0ZW1lbnQgfSA9IGpzb24sXG4gICAgICAgICAgbWV0YXN0YXRlbWVudFN0cmluZyA9IG1ldGFzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmcobWV0YXN0YXRlbWVudFN0cmluZywgcmVsZWFzZUNvbnRleHQpLFxuICAgICAgICAgIGNvbmNsdXNpb24gPSBuZXcgQ29uY2x1c2lvbihtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uY2x1c2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb25jbHVzaW9uID0gbmV3IENvbmNsdXNpb24obWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIGNvbmNsdXNpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9kZShjb25jbHVzaW9uTm9kZSwgbm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZShjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9kZXMoY29uY2x1c2lvbk5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25Ob2Rlc01hdGNoID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZXNMZW5ndGggPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIGNvbmNsdXNpb25Ob2Rlc0xlbmd0aCA9IGNvbmNsdXNpb25Ob2Rlcy5sZW5ndGg7XG5cbiAgaWYgKG5vZGVzTGVuZ3RoID09PSBjb25jbHVzaW9uTm9kZXNMZW5ndGgpIHtcbiAgICBjb25jbHVzaW9uTm9kZXNNYXRjaCA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uY2x1c2lvbk5vZGUgPSBjb25jbHVzaW9uTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29uY2x1c2lvbk5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTm9kZShjb25jbHVzaW9uTm9kZSwgbm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoY29uY2x1c2lvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2Rlc01hdGNoO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUoY29uY2x1c2lvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBjb25jbHVzaW9uVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSksXG4gICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBTVEFURU1FTlRfUlVMRV9OQU1FKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lID0gKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUpO1xuXG4gIGlmIChydWxlTmFtZVN0YXRlbWVudFJ1bGVOYW1lICYmIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVSdWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlKGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICBpZiAoY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSB0cnVlOyAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk5vZGVzKGNvbmNsdXNpb25Ob2Rlcywgbm9kZXMsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9IGVsc2UgaWYgKHJ1bGVOYW1lID09PSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICBjb25zdCBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25Ob2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc01hdGNoZXMgPSBtYXRjaENvbmNsdXNpb25Ob2Rlcyhjb25jbHVzaW9uTm9kZXMsIG5vZGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNNYXRjaGVzOyAvLy9cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZShjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSwgbm9kZXMsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRydWU7XG5cbiAgY29uc3QgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmQoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSBzdWJzdGl0dXRpb24uZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5hbWUgPT09IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGVzTWF0Y2ggPSBzdWJzdGl0dXRpb24ubWF0Y2hOb2Rlcyhub2Rlcyk7XG5cbiAgICBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBzdWJzdGl0dXRpb25Ob2Rlc01hdGNoOyAgLy8vXG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZShjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTGVuZ3RoID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc0xlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IGZpcnN0Q29uY2x1c2lvbkNoaWxkTm9kZSA9IGZpcnN0KGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzKSxcbiAgICAgICAgICBjb25jbHVzaW9uQ2hpbGROb2RlID0gZmlyc3RDb25jbHVzaW9uQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbkNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25DaGlsZE5vZGUuaXNOb25UZXJtaW5hbE5vZGUoKTtcblxuICAgIGlmIChjb25jbHVzaW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUgPSBjb25jbHVzaW9uQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVNZXRhdmFyaWFibGVSdWxlTmFtZSA9IChjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSA9PT0gTUVUQVZBUklBQkxFX1JVTEVfTkFNRSk7XG5cbiAgICAgIGlmIChjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZU1ldGF2YXJpYWJsZVJ1bGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlID0gY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUsIG5vZGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWV0YU1hdGNoQ29uY2x1c2lvbk5vZGUoY29uY2x1c2lvbk5vZGUsIG5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICBydWxlTm9kZVRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25Ob2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IHJ1bGVOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhTWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhTWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWV0YU1hdGNoQ29uY2x1c2lvbk5vZGVzKGNvbmNsdXNpb25Ob2Rlcywgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTm9kZXNNYXRjaCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBjb25jbHVzaW9uTm9kZXNMZW5ndGggPSBjb25jbHVzaW9uTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gY29uY2x1c2lvbk5vZGVzTGVuZ3RoKSB7XG4gICAgY29uY2x1c2lvbk5vZGVzTWF0Y2ggPSBub2Rlcy5ldmVyeSgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25Ob2RlID0gY29uY2x1c2lvbk5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob2RlKGNvbmNsdXNpb25Ob2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGlmIChjb25jbHVzaW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk5vZGVzTWF0Y2g7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUoY29uY2x1c2lvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtYXRjaGVzID0gY29uY2x1c2lvblRlcm1pbmFsTm9kZS5tYXRjaCh0ZXJtaW5hbE5vZGUpLFxuICAgICAgICBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgaWYgKHJ1bGVOYW1lID09PSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk5vZGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob2Rlcyhjb25jbHVzaW9uTm9kZXMsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG5cbiAgICBpZiAoIWNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzKSB7XG4gICAgICBjb25zdCBydWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSA9IChydWxlTmFtZSA9PT0gTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAocnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgbWV0YXN0YXRlbWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWV0YU1hdGNoQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlKGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSwgbWV0YXN0YXRlbWVudE5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWV0YU1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdHJ1ZTtcblxuICBjb25zdCBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTmFtZSA9IG1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgIG1ldGFTdWJzdGl0dXRpb24gPSBtZXRhU3Vic3RpdHV0aW9ucy5maW5kKChtZXRhU3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gbWV0YVN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOYW1lKCk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVOYW1lID09PSBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTmFtZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChtZXRhU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2ggPSBtZXRhU3Vic3RpdHV0aW9uLm1hdGNoTm9kZXMobm9kZXMpO1xuXG4gICAgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2g7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZShjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNMZW5ndGggPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgZmlyc3RDb25jbHVzaW9uQ2hpbGROb2RlID0gZmlyc3QoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMpLFxuICAgICAgICAgIGNvbmNsdXNpb25DaGlsZE5vZGUgPSBmaXJzdENvbmNsdXNpb25DaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbkNoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGNvbmNsdXNpb25DaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZSA9IGNvbmNsdXNpb25DaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID0gY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZU1ldGF2YXJpYWJsZVJ1bGVOYW1lID0gKGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID09PSBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlID0gbWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIG5vZGVzID0gY2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlKGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICAgIGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7IC8vL1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzO1xufVxuIl0sIm5hbWVzIjpbIkNvbmNsdXNpb24iLCJtZXRhc3RhdGVtZW50Tm9kZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN1YnN0aXR1dGlvbnMiLCJub25UZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUiLCJzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhU3Vic3RpdHV0aW9ucyIsIm1ldGFNYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUiLCJtZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ0b0pTT04iLCJtZXRhc3RhdGVtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwibWV0YXN0YXRlbWVudCIsImpzb24iLCJmcm9tSlNPTiIsInJlbGVhc2VDb250ZXh0IiwibWV0YXN0YXRlbWVudE5vZGVGcm9tTWV0YXN0YXRlbWVudFN0cmluZyIsImNvbmNsdXNpb24iLCJmcm9tTWV0YXN0YXRlbWVudE5vZGUiLCJtYXRjaENvbmNsdXNpb25Ob2RlIiwiY29uY2x1c2lvbk5vZGUiLCJub2RlIiwiY29uY2x1c2lvbk5vZGVNYXRjaGVzIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwicnVsZU5vZGVUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uVGVybWluYWxOb2RlIiwiY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXMiLCJtYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUiLCJtYXRjaENvbmNsdXNpb25Ob2RlcyIsImNvbmNsdXNpb25Ob2RlcyIsIm5vZGVzIiwiY29uY2x1c2lvbk5vZGVzTWF0Y2giLCJub2Rlc0xlbmd0aCIsImxlbmd0aCIsImNvbmNsdXNpb25Ob2Rlc0xlbmd0aCIsImV2ZXJ5IiwiaW5kZXgiLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsInJ1bGVOYW1lU3RhdGVtZW50UnVsZU5hbWUiLCJTVEFURU1FTlRfUlVMRV9OQU1FIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lIiwiTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUiLCJjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUiLCJjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hDb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc01hdGNoZXMiLCJtYXRjaENvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlIiwiY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUiLCJjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJjb25jbHVzaW9uTWV0YXZhcmlhYmxlTmFtZSIsIm1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZSIsInN1YnN0aXR1dGlvbiIsImZpbmQiLCJtZXRhdmFyaWFibGVOYW1lIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsInN1YnN0aXR1dGlvbk5vZGVzTWF0Y2giLCJtYXRjaE5vZGVzIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNMZW5ndGgiLCJmaXJzdENvbmNsdXNpb25DaGlsZE5vZGUiLCJmaXJzdCIsImNvbmNsdXNpb25DaGlsZE5vZGUiLCJjb25jbHVzaW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlIiwiaXNOb25UZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZSIsImNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUiLCJNRVRBVkFSSUFCTEVfUlVMRV9OQU1FIiwibWV0YU1hdGNoQ29uY2x1c2lvbk5vZGUiLCJtZXRhTWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlIiwibWV0YU1hdGNoQ29uY2x1c2lvbk5vZGVzIiwicnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUiLCJtZXRhTWF0Y2hDb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUiLCJtZXRhTWF0Y2hDb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFTdWJzdGl0dXRpb24iLCJtZXRhU3Vic3RpdHV0aW9uTm9kZXNNYXRjaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFRcUJBOzs7cUJBTkM7c0JBQ087cUJBQ3dCO3lCQUVnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEUsSUFBQSxBQUFNQSwyQkFxRGxCLEFBckRZO2FBQU1BLFdBQ1BDLGlCQUFpQjs4QkFEVkQ7UUFFakIsSUFBSSxDQUFDQyxpQkFBaUIsR0FBR0E7O2lCQUZSRDs7WUFLbkJFLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUI7Z0JBQ3JCLE9BQU8sSUFBSSxDQUFDRCxpQkFBaUI7WUFDL0I7OztZQUVBRSxLQUFBQTttQkFBQUEsU0FBQUEsbUJBQW1CQyxhQUFhLEVBQUVDLGFBQWEsRUFBRTtnQkFDL0MsSUFBTUMsa0JBQWtCRixlQUNsQkcsNEJBQTRCLElBQUksQ0FBQ04saUJBQWlCLEVBQ2xETyxtQ0FBbUNDLCtCQUErQkYsMkJBQTJCRCxpQkFBaUJELGdCQUM5R0ssdUJBQXVCRixrQ0FBa0MsR0FBRztnQkFFbEUsT0FBT0U7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUJWLGlCQUFpQixFQUFFVyxpQkFBaUIsRUFBRTtnQkFDM0QsSUFBTU4sa0JBQWtCTCxtQkFDbEJNLDRCQUE0QixJQUFJLENBQUNOLGlCQUFpQixFQUNsRE8sbUNBQW1DSyxtQ0FBbUNOLDJCQUEyQkQsaUJBQWlCTSxvQkFDbEhFLDJCQUEyQk4sa0NBQWtDLEdBQUc7Z0JBRXRFLE9BQU9NO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsU0FBUztnQkFDUCxJQUFNQyxzQkFBc0JDLElBQUFBLG9CQUFZLEVBQUMsSUFBSSxDQUFDaEIsaUJBQWlCLEdBQ3pEaUIsZ0JBQWdCRixxQkFDaEJHLE9BQU87b0JBQ0xELGVBQUFBO2dCQUNGO2dCQUVOLE9BQU9D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
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25jbHVzaW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgU1RBVEVNRU5UX1JVTEVfTkFNRSwgTUVUQVNUQVRFTUVOVF9SVUxFX05BTUUsIE1FVEFWQVJJQUJMRV9SVUxFX05BTUUgfSBmcm9tIFwiLi9ydWxlTmFtZXNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uY2x1c2lvbiB7XG4gIGNvbnN0cnVjdG9yKG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXN0YXRlbWVudE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlID0gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG5cbiAgICByZXR1cm4gc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGFzdGF0ZW1lbnROb2RlKG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IHRoaXMubWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgbWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIG1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBtZXRhc3RhdGVtZW50U3RyaW5nID0gbm9kZUFzU3RyaW5nKHRoaXMubWV0YXN0YXRlbWVudE5vZGUpLFxuICAgICAgICAgIG1ldGFzdGF0ZW1lbnQgPSBtZXRhc3RhdGVtZW50U3RyaW5nLCAgLy8vXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIG1ldGFzdGF0ZW1lbnRcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IG1ldGFzdGF0ZW1lbnQgfSA9IGpzb24sXG4gICAgICAgICAgbWV0YXN0YXRlbWVudFN0cmluZyA9IG1ldGFzdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBtZXRhc3RhdGVtZW50Tm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlRnJvbU1ldGFzdGF0ZW1lbnRTdHJpbmcobWV0YXN0YXRlbWVudFN0cmluZywgcmVsZWFzZUNvbnRleHQpLFxuICAgICAgICAgIGNvbmNsdXNpb24gPSBuZXcgQ29uY2x1c2lvbihtZXRhc3RhdGVtZW50Tm9kZSk7XG5cbiAgICByZXR1cm4gY29uY2x1c2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBjb25zdCBjb25jbHVzaW9uID0gbmV3IENvbmNsdXNpb24obWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIGNvbmNsdXNpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9kZShjb25jbHVzaW9uTm9kZSwgbm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgcnVsZU5vZGVUZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlID09PSBydWxlTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbk5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25Ob2RlLCAgLy8vXG4gICAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoQ29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZShjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLCBub25UZXJtaW5hbE5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9kZXMoY29uY2x1c2lvbk5vZGVzLCBub2RlcywgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25Ob2Rlc01hdGNoID0gZmFsc2U7XG5cbiAgY29uc3Qgbm9kZXNMZW5ndGggPSBub2Rlcy5sZW5ndGgsXG4gICAgICAgIGNvbmNsdXNpb25Ob2Rlc0xlbmd0aCA9IGNvbmNsdXNpb25Ob2Rlcy5sZW5ndGg7XG5cbiAgaWYgKG5vZGVzTGVuZ3RoID09PSBjb25jbHVzaW9uTm9kZXNMZW5ndGgpIHtcbiAgICBjb25jbHVzaW9uTm9kZXNNYXRjaCA9IG5vZGVzLmV2ZXJ5KChub2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uY2x1c2lvbk5vZGUgPSBjb25jbHVzaW9uTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgY29uY2x1c2lvbk5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTm9kZShjb25jbHVzaW9uTm9kZSwgbm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBpZiAoY29uY2x1c2lvbk5vZGVNYXRjaGVzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2Rlc01hdGNoO1xufVxuXG5mdW5jdGlvbiBtYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUoY29uY2x1c2lvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG1hdGNoZXMgPSBjb25jbHVzaW9uVGVybWluYWxOb2RlLm1hdGNoKHRlcm1pbmFsTm9kZSksXG4gICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGVNYXRjaGVzID0gbWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICBjb25jbHVzaW9uTm9kZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgIHJ1bGVOYW1lU3RhdGVtZW50UnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IFNUQVRFTUVOVF9SVUxFX05BTUUpLFxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgPSAoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID09PSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSk7XG5cbiAgaWYgKHJ1bGVOYW1lU3RhdGVtZW50UnVsZU5hbWUgJiYgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUoY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgIGlmIChjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzKSB7XG4gICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IHRydWU7IC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc01hdGNoZXMgPSBtYXRjaENvbmNsdXNpb25Ob2Rlcyhjb25jbHVzaW9uTm9kZXMsIG5vZGVzLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc01hdGNoZXM7IC8vL1xuICAgIH1cbiAgfSBlbHNlIGlmIChydWxlTmFtZSA9PT0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lKSB7XG4gICAgY29uc3QgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNNYXRjaGVzID0gbWF0Y2hDb25jbHVzaW9uTm9kZXMoY29uY2x1c2lvbk5vZGVzLCBub2Rlcywgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUsIHN0YXRlbWVudE5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRydWU7XG5cbiAgY29uc3QgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmQoKHN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSBzdWJzdGl0dXRpb24uZ2V0TWV0YXZhcmlhYmxlTmFtZSgpO1xuXG4gICAgICAgICAgaWYgKG1ldGF2YXJpYWJsZU5hbWUgPT09IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKHN1YnN0aXR1dGlvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGVzTWF0Y2ggPSBzdWJzdGl0dXRpb24ubWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uTm9kZXNNYXRjaDsgIC8vL1xuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWF0Y2hDb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUoY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gZmFsc2U7XG5cbiAgY29uc3QgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlc0xlbmd0aCA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNMZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCBmaXJzdENvbmNsdXNpb25DaGlsZE5vZGUgPSBmaXJzdChjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyksXG4gICAgICAgICAgY29uY2x1c2lvbkNoaWxkTm9kZSA9IGZpcnN0Q29uY2x1c2lvbkNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25DaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uQ2hpbGROb2RlLmlzTm9uVGVybWluYWxOb2RlKCk7XG5cbiAgICBpZiAoY29uY2x1c2lvbkNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSkge1xuICAgICAgY29uc3QgY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlID0gY29uY2x1c2lvbkNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUgPSAoY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUgPT09IE1FVEFWQVJJQUJMRV9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAoY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWVNZXRhdmFyaWFibGVSdWxlTmFtZSkge1xuICAgICAgICBjb25zdCBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBtYXRjaENvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlKGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlLCBzdGF0ZW1lbnROb2RlLCBzdWJzdGl0dXRpb25zKTtcblxuICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzOyAvLy9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWV0YU1hdGNoQ29uY2x1c2lvbk5vZGUoY29uY2x1c2lvbk5vZGUsIG5vZGUsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpLFxuICAgICAgICBydWxlTm9kZVRlcm1pbmFsTm9kZSA9IGNvbmNsdXNpb25Ob2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IHJ1bGVOb2RlVGVybWluYWxOb2RlKSB7XG4gICAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZSA9IG5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhTWF0Y2hDb25jbHVzaW9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25UZXJtaW5hbE5vZGUsIHRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBub2RlLCAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBtZXRhTWF0Y2hDb25jbHVzaW9uTm9uVGVybWluYWxOb2RlKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsIG5vblRlcm1pbmFsTm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgICBjb25jbHVzaW9uTm9kZU1hdGNoZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcztcbn1cblxuZnVuY3Rpb24gbWV0YU1hdGNoQ29uY2x1c2lvbk5vZGVzKGNvbmNsdXNpb25Ob2Rlcywgbm9kZXMsIG1ldGFTdWJzdGl0dXRpb25zKSB7XG4gIGxldCBjb25jbHVzaW9uTm9kZXNNYXRjaCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVzTGVuZ3RoID0gbm9kZXMubGVuZ3RoLFxuICAgICAgICBjb25jbHVzaW9uTm9kZXNMZW5ndGggPSBjb25jbHVzaW9uTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gY29uY2x1c2lvbk5vZGVzTGVuZ3RoKSB7XG4gICAgY29uY2x1c2lvbk5vZGVzTWF0Y2ggPSBub2Rlcy5ldmVyeSgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25Ob2RlID0gY29uY2x1c2lvbk5vZGVzW2luZGV4XSxcbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob2RlTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob2RlKGNvbmNsdXNpb25Ob2RlLCBub2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGlmIChjb25jbHVzaW9uTm9kZU1hdGNoZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk5vZGVzTWF0Y2g7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25UZXJtaW5hbE5vZGUoY29uY2x1c2lvblRlcm1pbmFsTm9kZSwgdGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBjb25zdCBtYXRjaGVzID0gY29uY2x1c2lvblRlcm1pbmFsTm9kZS5tYXRjaCh0ZXJtaW5hbE5vZGUpLFxuICAgICAgICBjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gY29uY2x1c2lvblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSwgbm9uVGVybWluYWxOb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXMgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLFxuICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICBjb25jbHVzaW9uTm9kZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgIHJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lID0gKHJ1bGVOYW1lID09PSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSksXG4gICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVSdWxlTmFtZU1ldGFzdGF0ZW1lbnRSdWxlTmFtZSA9IChjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IE1FVEFTVEFURU1FTlRfUlVMRV9OQU1FKTtcblxuICBpZiAocnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUgJiYgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgIC8vL1xuICAgICAgICAgIGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGVNYXRjaGVzID0gbWV0YU1hdGNoQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlKGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSwgc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpO1xuXG4gICAgaWYgKGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMpIHtcbiAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gdHJ1ZTsgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob2Rlcyhjb25jbHVzaW9uTm9kZXMsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVNYXRjaGVzID0gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNNYXRjaGVzOyAvLy9cbiAgICB9XG4gIH0gZWxzZSBpZiAocnVsZU5hbWUgPT09IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVSdWxlTmFtZSkge1xuICAgIGNvbnN0IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlcyA9IG1ldGFNYXRjaENvbmNsdXNpb25Ob2Rlcyhjb25jbHVzaW9uTm9kZXMsIG5vZGVzLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlczsgLy8vXG4gIH1cblxuICByZXR1cm4gY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlKGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlLCBtZXRhc3RhdGVtZW50Tm9kZSwgbWV0YVN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRydWU7XG5cbiAgY29uc3QgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICBtZXRhU3Vic3RpdHV0aW9uID0gbWV0YVN1YnN0aXR1dGlvbnMuZmluZCgobWV0YVN1YnN0aXR1dGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWUgPSBtZXRhU3Vic3RpdHV0aW9uLmdldE1ldGF2YXJpYWJsZU5hbWUoKTtcblxuICAgICAgICAgIGlmIChtZXRhdmFyaWFibGVOYW1lID09PSBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChtZXRhU3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2ggPSBtZXRhU3Vic3RpdHV0aW9uLm1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2g7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZU1hdGNoZXM7XG59XG5cbmZ1bmN0aW9uIG1ldGFNYXRjaENvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZShjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucykge1xuICBsZXQgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUgPSBjb25jbHVzaW9uTWV0YXN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMgPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXNMZW5ndGggPSBjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlQ2hpbGROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgZmlyc3RDb25jbHVzaW9uQ2hpbGROb2RlID0gZmlyc3QoY29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMpLFxuICAgICAgICAgIGNvbmNsdXNpb25DaGlsZE5vZGUgPSBmaXJzdENvbmNsdXNpb25DaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICBjb25jbHVzaW9uQ2hpbGROb2RlTm9uVGVybWluYWxOb2RlID0gY29uY2x1c2lvbkNoaWxkTm9kZS5pc05vblRlcm1pbmFsTm9kZSgpO1xuXG4gICAgaWYgKGNvbmNsdXNpb25DaGlsZE5vZGVOb25UZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZSA9IGNvbmNsdXNpb25DaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgIGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID0gY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgICAgICBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZU1ldGF2YXJpYWJsZVJ1bGVOYW1lID0gKGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lID09PSBNRVRBVkFSSUFCTEVfUlVMRV9OQU1FKTtcblxuICAgICAgaWYgKGNvbmNsdXNpb25Ob25UZXJtaW5hbENoaWxkTm9kZVJ1bGVOYW1lTWV0YXZhcmlhYmxlUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUgPSBjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gbWV0YU1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUoY29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUsIG1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhU3Vic3RpdHV0aW9ucyk7XG5cbiAgICAgICAgY29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyA9IGNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlczsgLy8vXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXM7XG59XG4iXSwibmFtZXMiOlsiQ29uY2x1c2lvbiIsIm1ldGFzdGF0ZW1lbnROb2RlIiwiZ2V0TWV0YXN0YXRlbWVudE5vZGUiLCJtYXRjaFN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwic3Vic3RpdHV0aW9ucyIsIm5vblRlcm1pbmFsTm9kZSIsImNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoQ29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSIsInN0YXRlbWVudE5vZGVNYXRjaGVzIiwibWF0Y2hNZXRhc3RhdGVtZW50Tm9kZSIsIm1ldGFTdWJzdGl0dXRpb25zIiwibWV0YU1hdGNoQ29uY2x1c2lvbk5vblRlcm1pbmFsTm9kZSIsIm1ldGFzdGF0ZW1lbnROb2RlTWF0Y2hlcyIsInRvSlNPTiIsIm1ldGFzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJtZXRhc3RhdGVtZW50IiwianNvbiIsImZyb21KU09OIiwicmVsZWFzZUNvbnRleHQiLCJtZXRhc3RhdGVtZW50Tm9kZUZyb21NZXRhc3RhdGVtZW50U3RyaW5nIiwiY29uY2x1c2lvbiIsImZyb21NZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoQ29uY2x1c2lvbk5vZGUiLCJjb25jbHVzaW9uTm9kZSIsIm5vZGUiLCJjb25jbHVzaW9uTm9kZU1hdGNoZXMiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJydWxlTm9kZVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImNvbmNsdXNpb25UZXJtaW5hbE5vZGUiLCJjb25jbHVzaW9uVGVybWluYWxOb2RlTWF0Y2hlcyIsIm1hdGNoQ29uY2x1c2lvblRlcm1pbmFsTm9kZSIsIm1hdGNoQ29uY2x1c2lvbk5vZGVzIiwiY29uY2x1c2lvbk5vZGVzIiwibm9kZXMiLCJjb25jbHVzaW9uTm9kZXNNYXRjaCIsIm5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiY29uY2x1c2lvbk5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJpbmRleCIsIm1hdGNoZXMiLCJtYXRjaCIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVSdWxlTmFtZSIsImNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwicnVsZU5hbWVTdGF0ZW1lbnRSdWxlTmFtZSIsIlNUQVRFTUVOVF9SVUxFX05BTUUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxOb2RlUnVsZU5hbWVNZXRhc3RhdGVtZW50UnVsZU5hbWUiLCJNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsImNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSIsImNvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaENvbmNsdXNpb25NZXRhc3RhdGVtZW50Tm9kZSIsImNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTWF0Y2hlcyIsIm1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUiLCJjb25jbHVzaW9uTWV0YXZhcmlhYmxlTm9kZSIsImNvbmNsdXNpb25NZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyIsImNvbmNsdXNpb25NZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlIiwic3Vic3RpdHV0aW9uIiwiZmluZCIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwic3Vic3RpdHV0aW9uTm9kZXNNYXRjaCIsImNvbmNsdXNpb25Ob25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzTGVuZ3RoIiwiZmlyc3RDb25jbHVzaW9uQ2hpbGROb2RlIiwiZmlyc3QiLCJjb25jbHVzaW9uQ2hpbGROb2RlIiwiY29uY2x1c2lvbkNoaWxkTm9kZU5vblRlcm1pbmFsTm9kZSIsImlzTm9uVGVybWluYWxOb2RlIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlIiwiY29uY2x1c2lvbk5vblRlcm1pbmFsQ2hpbGROb2RlUnVsZU5hbWUiLCJjb25jbHVzaW9uTm9uVGVybWluYWxDaGlsZE5vZGVSdWxlTmFtZU1ldGF2YXJpYWJsZVJ1bGVOYW1lIiwiTUVUQVZBUklBQkxFX1JVTEVfTkFNRSIsIm1ldGFNYXRjaENvbmNsdXNpb25Ob2RlIiwibWV0YU1hdGNoQ29uY2x1c2lvblRlcm1pbmFsTm9kZSIsIm1ldGFNYXRjaENvbmNsdXNpb25Ob2RlcyIsInJ1bGVOYW1lTWV0YXN0YXRlbWVudFJ1bGVOYW1lIiwibWV0YU1hdGNoQ29uY2x1c2lvbk1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YU1hdGNoQ29uY2x1c2lvbk1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhU3Vic3RpdHV0aW9uIiwibWV0YVN1YnN0aXR1dGlvbk5vZGVzTWF0Y2giXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBUXFCQTs7O3FCQU5DO3NCQUNPO3FCQUN3Qjt5QkFFZ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXRFLElBQUEsQUFBTUEsMkJBcURsQixBQXJEWTthQUFNQSxXQUNQQyxpQkFBaUI7OEJBRFZEO1FBRWpCLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUdBOztpQkFGUkQ7O1lBS25CRSxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCO2dCQUNyQixPQUFPLElBQUksQ0FBQ0QsaUJBQWlCO1lBQy9COzs7WUFFQUUsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQkMsYUFBYSxFQUFFQyxhQUFhLEVBQUU7Z0JBQy9DLElBQU1DLGtCQUFrQkYsZUFDbEJHLDRCQUE0QixJQUFJLENBQUNOLGlCQUFpQixFQUNsRE8sbUNBQW1DQywrQkFBK0JGLDJCQUEyQkQsaUJBQWlCRCxnQkFDOUdLLHVCQUF1QkYsa0NBQWtDLEdBQUc7Z0JBRWxFLE9BQU9FO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsdUJBQXVCVixpQkFBaUIsRUFBRVcsaUJBQWlCLEVBQUU7Z0JBQzNELElBQU1OLGtCQUFrQkwsbUJBQ2xCTSw0QkFBNEIsSUFBSSxDQUFDTixpQkFBaUIsRUFDbERPLG1DQUFtQ0ssbUNBQW1DTiwyQkFBMkJELGlCQUFpQk0sb0JBQ2xIRSwyQkFBMkJOLGtDQUFrQyxHQUFHO2dCQUV0RSxPQUFPTTtZQUNUOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBLFNBQVM7Z0JBQ1AsSUFBTUMsc0JBQXNCQyxJQUFBQSxvQkFBWSxFQUFDLElBQUksQ0FBQ2hCLGlCQUFpQixHQUN6RGlCLGdCQUFnQkYscUJBQ2hCRyxPQUFPO29CQUNMRCxlQUFBQTtnQkFD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
|
package/lib/constants.js
CHANGED
|
@@ -30,6 +30,9 @@ _export(exports, {
|
|
|
30
30
|
RIGHT_BRACKET: function() {
|
|
31
31
|
return RIGHT_BRACKET;
|
|
32
32
|
},
|
|
33
|
+
EQUALS_CHARACTER: function() {
|
|
34
|
+
return EQUALS_CHARACTER;
|
|
35
|
+
},
|
|
33
36
|
MAXIMUM_INDEXES_LENGTH: function() {
|
|
34
37
|
return MAXIMUM_INDEXES_LENGTH;
|
|
35
38
|
},
|
|
@@ -47,8 +50,9 @@ var BOOLEAN = "boolean";
|
|
|
47
50
|
var EMPTY_STRING = "";
|
|
48
51
|
var LEFT_BRACKET = "(";
|
|
49
52
|
var RIGHT_BRACKET = ")";
|
|
53
|
+
var EQUALS_CHARACTER = "=";
|
|
50
54
|
var MAXIMUM_INDEXES_LENGTH = 10;
|
|
51
55
|
var MAXIMUM_PERMUTATION_LENGTH = 5;
|
|
52
56
|
var BRACKETED_CHILD_NODES_LENGTH = 3;
|
|
53
57
|
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25zdGFudHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBjb25zdCBDT01NQSA9ICcsJztcbmV4cG9ydCBjb25zdCBTVFJJTkcgPSBcInN0cmluZ1wiO1xuZXhwb3J0IGNvbnN0IE5VTUJFUiA9IFwibnVtYmVyXCI7XG5leHBvcnQgY29uc3QgQk9PTEVBTiA9IFwiYm9vbGVhblwiO1xuZXhwb3J0IGNvbnN0IEVNUFRZX1NUUklORyA9IFwiXCI7XG5leHBvcnQgY29uc3QgTEVGVF9CUkFDS0VUID0gXCIoXCI7XG5leHBvcnQgY29uc3QgUklHSFRfQlJBQ0tFVCA9IFwiKVwiO1xuZXhwb3J0IGNvbnN0IEVRVUFMU19DSEFSQUNURVIgPSBcIj1cIjtcbmV4cG9ydCBjb25zdCBNQVhJTVVNX0lOREVYRVNfTEVOR1RIID0gMTA7XG5leHBvcnQgY29uc3QgTUFYSU1VTV9QRVJNVVRBVElPTl9MRU5HVEggPSA1O1xuZXhwb3J0IGNvbnN0IEJSQUNLRVRFRF9DSElMRF9OT0RFU19MRU5HVEggPSAzO1xuIl0sIm5hbWVzIjpbIkNPTU1BIiwiU1RSSU5HIiwiTlVNQkVSIiwiQk9PTEVBTiIsIkVNUFRZX1NUUklORyIsIkxFRlRfQlJBQ0tFVCIsIlJJR0hUX0JSQUNLRVQiLCJFUVVBTFNfQ0hBUkFDVEVSIiwiTUFYSU1VTV9JTkRFWEVTX0xFTkdUSCIsIk1BWElNVU1fUEVSTVVUQVRJT05fTEVOR1RIIiwiQlJBQ0tFVEVEX0NISUxEX05PREVTX0xFTkdUSCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBRWFBLEtBQUs7ZUFBTEE7O0lBQ0FDLE1BQU07ZUFBTkE7O0lBQ0FDLE1BQU07ZUFBTkE7O0lBQ0FDLE9BQU87ZUFBUEE7O0lBQ0FDLFlBQVk7ZUFBWkE7O0lBQ0FDLFlBQVk7ZUFBWkE7O0lBQ0FDLGFBQWE7ZUFBYkE7O0lBQ0FDLGdCQUFnQjtlQUFoQkE7O0lBQ0FDLHNCQUFzQjtlQUF0QkE7O0lBQ0FDLDBCQUEwQjtlQUExQkE7O0lBQ0FDLDRCQUE0QjtlQUE1QkE7OztBQVZOLElBQU1WLFFBQVE7QUFDZCxJQUFNQyxTQUFTO0FBQ2YsSUFBTUMsU0FBUztBQUNmLElBQU1DLFVBQVU7QUFDaEIsSUFBTUMsZUFBZTtBQUNyQixJQUFNQyxlQUFlO0FBQ3JCLElBQU1DLGdCQUFnQjtBQUN0QixJQUFNQyxtQkFBbUI7QUFDekIsSUFBTUMseUJBQXlCO0FBQy9CLElBQU1DLDZCQUE2QjtBQUNuQyxJQUFNQywrQkFBK0IifQ==
|
package/lib/equality.js
CHANGED
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
var _query = require("./utilities/query");
|
|
12
12
|
var _ruleNames = require("./ruleNames");
|
|
13
|
+
var _constants = require("./constants");
|
|
13
14
|
function _classCallCheck(instance, Constructor) {
|
|
14
15
|
if (!(instance instanceof Constructor)) {
|
|
15
16
|
throw new TypeError("Cannot call a class as a function");
|
|
@@ -29,7 +30,7 @@ function _createClass(Constructor, protoProps, staticProps) {
|
|
|
29
30
|
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
30
31
|
return Constructor;
|
|
31
32
|
}
|
|
32
|
-
var
|
|
33
|
+
var specialNodeQuery = (0, _query.nodeQuery)("/statement/@special!"), leftTermNodeQuery = (0, _query.nodeQuery)("/statement/term[0]"), rightTermNodeQuery = (0, _query.nodeQuery)("/statement/term[1]");
|
|
33
34
|
var Equality = /*#__PURE__*/ function() {
|
|
34
35
|
function Equality(leftTermNode, rightTermNode) {
|
|
35
36
|
_classCallCheck(this, Equality);
|
|
@@ -94,22 +95,18 @@ var Equality = /*#__PURE__*/ function() {
|
|
|
94
95
|
var equality = null;
|
|
95
96
|
var statementNode = proofStep.getStatementNode();
|
|
96
97
|
if (statementNode !== null) {
|
|
97
|
-
var
|
|
98
|
-
if (
|
|
99
|
-
var
|
|
100
|
-
|
|
98
|
+
var specialNode = specialNodeQuery(statementNode);
|
|
99
|
+
if (specialNode !== null) {
|
|
100
|
+
var terminalNode = specialNode, terminalNodeContent = terminalNode.getContent();
|
|
101
|
+
if (terminalNodeContent === _constants.EQUALS_CHARACTER) {
|
|
102
|
+
var leftTermNode = leftTermNodeQuery(statementNode), rightTermNode = rightTermNodeQuery(statementNode);
|
|
103
|
+
equality = new Equality(leftTermNode, rightTermNode);
|
|
104
|
+
}
|
|
101
105
|
}
|
|
102
106
|
}
|
|
103
107
|
return equality;
|
|
104
108
|
}
|
|
105
109
|
},
|
|
106
|
-
{
|
|
107
|
-
key: "fromEqualityNode",
|
|
108
|
-
value: function fromEqualityNode(equalityNode) {
|
|
109
|
-
var leftTermNode = leftTermNodeQuery(equalityNode), rightTermNode = rightTermNodeQuery(equalityNode), equality = new Equality(leftTermNode, rightTermNode);
|
|
110
|
-
return equality;
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
110
|
{
|
|
114
111
|
key: "fromLeftTermNodeAndRightTermNode",
|
|
115
112
|
value: function fromLeftTermNodeAndRightTermNode(leftTermNode, rightTermNode) {
|
|
@@ -190,4 +187,4 @@ function pruneEqualities(equalities, equality) {
|
|
|
190
187
|
return equalities;
|
|
191
188
|
}
|
|
192
189
|
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcXVhbGl0eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBURVJNX1JVTEVfTkFNRSB9IGZyb20gXCIuL3J1bGVOYW1lc1wiO1xuXG5jb25zdCBlcXVhbGl0eU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvZXF1YWxpdHkhXCIpLFxuICAgICAgbGVmdFRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvZXF1YWxpdHkvdGVybVswXVwiKSxcbiAgICAgIHJpZ2h0VGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9lcXVhbGl0eS90ZXJtWzFdXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFcXVhbGl0eSB7XG4gIGNvbnN0cnVjdG9yKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSkge1xuICAgIHRoaXMubGVmdFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlO1xuICAgIHRoaXMucmlnaHRUZXJtTm9kZSA9IHJpZ2h0VGVybU5vZGU7XG4gIH1cblxuICBnZXRMZWZ0VGVybU5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVmdFRlcm1Ob2RlO1xuICB9XG5cbiAgZ2V0UmlnaHRUZXJtTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yaWdodFRlcm1Ob2RlO1xuICB9XG5cbiAgbWF0Y2goZXF1YWxpdHksIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCkge1xuICAgIGxldCBtYXRjaGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBsZWZ0VGVybU5vZGUgPSBlcXVhbGl0eS5nZXRMZWZ0VGVybU5vZGUoKSxcbiAgICAgICAgICByaWdodFRlcm1Ob2RlID0gZXF1YWxpdHkuZ2V0UmlnaHRUZXJtTm9kZSgpO1xuXG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICBjb25zdCByZXZlcnNlZCA9IGZhbHNlLFxuICAgICAgICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gdGhpcy5tYXRjaExlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCByZXZlcnNlZCwgZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgbWF0Y2hlcyA9IGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaDsgIC8vL1xuICAgIH1cblxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgY29uc3QgcmV2ZXJzZWQgPSB0cnVlLFxuICAgICAgICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gdGhpcy5tYXRjaExlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCByZXZlcnNlZCwgZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgbWF0Y2hlcyA9IGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaDsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hMZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgcmV2ZXJzZWQsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCkge1xuICAgIGxldCBsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2ggPSB0cnVlO1xuXG4gICAgaWYgKGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCkge1xuICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZSA9IHJldmVyc2VkID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmlnaHRUZXJtTm9kZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVmdFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IGxlZnRUZXJtTm9kZSwgIC8vL1xuICAgICAgICAgICAgbm9uVGVybWluYWxOb2RlRXF1YXRlcyA9IGVxdWF0ZU5vblRlcm1pbmFsTm9kZShsZWZ0Tm9uVGVybWluYWxOb2RlLCByaWdodE5vblRlcm1pbmFsTm9kZSwgZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gbm9uVGVybWluYWxOb2RlRXF1YXRlczsgLy8vXG4gICAgfVxuXG4gICAgaWYgKGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCkge1xuICAgICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZSA9IHJldmVyc2VkID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVmdFRlcm1Ob2RlIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yaWdodFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZSA9IHJpZ2h0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBlcXVhdGVOb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCA9IG5vblRlcm1pbmFsTm9kZUVxdWF0ZXM7IC8vL1xuICAgIH1cblxuICAgIHJldHVybiBsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2g7XG4gIH1cblxuICBlcXVhdGUoZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KSB7XG4gICAgY29uc3QgbGVmdE5vblRlcm1pbmFsTm9kZSA9IHRoaXMubGVmdFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGUgPSB0aGlzLnJpZ2h0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlTm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpLFxuICAgICAgICAgIGVxdWF0ZXMgPSBub25UZXJtaW5hbE5vZGVFcXVhdGVzOyAvLy9cblxuICAgIHJldHVybiBlcXVhdGVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21Qcm9vZlN0ZXAocHJvb2ZTdGVwKSB7XG4gICAgbGV0IGVxdWFsaXR5ID0gbnVsbDtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBwcm9vZlN0ZXAuZ2V0U3RhdGVtZW50Tm9kZSgpO1xuXG4gICAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5Tm9kZSA9IGVxdWFsaXR5Tm9kZVF1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgICBpZiAoZXF1YWxpdHlOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtTm9kZVF1ZXJ5KGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgICAgIHJpZ2h0VGVybU5vZGUgPSByaWdodFRlcm1Ob2RlUXVlcnkoZXF1YWxpdHlOb2RlKTtcblxuICAgICAgICBlcXVhbGl0eSA9IG5ldyBFcXVhbGl0eShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRXF1YWxpdHlOb2RlKGVxdWFsaXR5Tm9kZSkge1xuICAgIGNvbnN0IGxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtTm9kZVF1ZXJ5KGVxdWFsaXR5Tm9kZSksXG4gICAgICAgICAgcmlnaHRUZXJtTm9kZSA9IHJpZ2h0VGVybU5vZGVRdWVyeShlcXVhbGl0eU5vZGUpLFxuICAgICAgICAgIGVxdWFsaXR5ID0gbmV3IEVxdWFsaXR5KGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSk7XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKSB7XG4gICAgY29uc3QgZXF1YWxpdHkgPSBuZXcgRXF1YWxpdHkobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlcXVhdGVOb2RlKG5vZGVBLCBub2RlQiwgZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBub2RlRXF1YXRlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVBVGVybWluYWxOb2RlID0gbm9kZUEuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgbm9kZUJUZXJtaW5hbE5vZGUgPSBub2RlQi5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlQVRlcm1pbmFsTm9kZSA9PT0gbm9kZUJUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZUFUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZUEgPSBub2RlQSwgIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlQiA9IG5vZGVCLCAgLy8vXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlVGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZUEsIHRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIG5vZGVFcXVhdGVzID0gdGVybWluYWxOb2RlRXF1YXRlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBID0gbm9kZUEsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBub2RlQiwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlTm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIG5vZGVFcXVhdGVzID0gbm9uVGVybWluYWxOb2RlRXF1YXRlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVFcXVhdGVzO1xufVxuXG5mdW5jdGlvbiBlcXVhdGVOb2RlcyhsZWZ0Tm9kZXMsIHJpZ2h0Tm9kZXMsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCkge1xuICBsZXQgbm9kZXNFcXVhdGUgPSBmYWxzZTtcblxuICBjb25zdCBsZWZ0Tm9kZXNMZW5ndGggPSBsZWZ0Tm9kZXMubGVuZ3RoLFxuICAgICAgICByaWdodE5vZGVzTGVuZ3RoID0gcmlnaHROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGxlZnROb2Rlc0xlbmd0aCA9PT0gcmlnaHROb2Rlc0xlbmd0aCkge1xuICAgIG5vZGVzRXF1YXRlID0gbGVmdE5vZGVzLmV2ZXJ5KChMZWZ0Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHJpZ2h0Tm9kZSA9IHJpZ2h0Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZUVxdWF0ZXMgPSBlcXVhdGVOb2RlKExlZnROb2RlLCByaWdodE5vZGUsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIGlmIChub2RlRXF1YXRlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBub2Rlc0VxdWF0ZTtcbn1cblxuZnVuY3Rpb24gZXF1YXRlVGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZUEsIHRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCkge1xuICBjb25zdCBtYXRjaGVzID0gdGVybWluYWxOb2RlQS5tYXRjaCh0ZXJtaW5hbE5vZGVCKSxcbiAgICAgICAgdGVybWluYWxOb2RlRXF1YXRlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gdGVybWluYWxOb2RlRXF1YXRlcztcbn1cblxuZnVuY3Rpb24gZXF1YXRlTm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBmYWxzZTtcblxuICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSByaWdodE5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIGlmIChsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICBjb25zdCBydWxlTmFtZSA9IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSwgLy8vXG4gICAgICAgICAgcnVsZU5hbWVUZXJtUnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IFRFUk1fUlVMRV9OQU1FKTtcblxuICAgIGlmIChydWxlTmFtZVRlcm1SdWxlTmFtZSkge1xuICAgICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gbGVmdE5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICByaWdodFRlcm1Ob2RlID0gcmlnaHROb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgdGVybU5vZGVFcXVhdGVzID0gZXF1YXRlVGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gdGVybU5vZGVFcXVhdGVzOyAgLy8vXG4gICAgfVxuXG4gICAgaWYgKCFub25UZXJtaW5hbE5vZGVFcXVhdGVzKSB7XG4gICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgbGVmdE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgcmlnaHROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICBub2Rlc0VxdWF0ZSA9IGVxdWF0ZU5vZGVzKGxlZnROb2RlcywgcmlnaHROb2RlcywgZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlRXF1YXRlcyA9IG5vZGVzRXF1YXRlOyAvLy9cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlRXF1YXRlcztcbn1cblxuZnVuY3Rpb24gZXF1YXRlVGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpIHtcbiAgY29uc3QgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tTGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUpLFxuICAgICAgICBlcXVhbGl0eUEgPSBlcXVhbGl0eSwgLy8vXG4gICAgICAgIGVxdWFsaXR5TWF0Y2hlcyA9IGVxdWFsaXRpZXMuc29tZSgoZXF1YWxpdHkpID0+IHsgLy8vXG4gICAgICAgICAgbGV0IGVxdWFsaXRpZXNCID0gZXF1YWxpdGllczsgLy8vXG5cbiAgICAgICAgICBjb25zdCBlcXVhbGl0eUIgPSBlcXVhbGl0eTsgLy8vXG5cbiAgICAgICAgICBlcXVhbGl0aWVzQiA9IHBydW5lRXF1YWxpdGllcyhlcXVhbGl0aWVzQiwgZXF1YWxpdHlCKTsgIC8vL1xuXG4gICAgICAgICAgY29uc3QgZXF1YWxpdHlBTWF0Y2hlc0VxdWFsaXR5QiA9IGVxdWFsaXR5QS5tYXRjaChlcXVhbGl0eUIsIGVxdWFsaXRpZXNCLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGVxdWFsaXR5QU1hdGNoZXNFcXVhbGl0eUIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRlcm1Ob2RlRXF1YXRlcyA9IGVxdWFsaXR5TWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiB0ZXJtTm9kZUVxdWF0ZXM7XG59XG5cbmZ1bmN0aW9uIHBydW5lRXF1YWxpdGllcyhlcXVhbGl0aWVzLCBlcXVhbGl0eSkge1xuICBjb25zdCBlcXVhbGl0eUEgPSBlcXVhbGl0eTsgLy8vXG5cbiAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXMuZmlsdGVyKChlcXVhbGl0eSkgPT4ge1xuICAgIGNvbnN0IGVxdWFsaXR5QiA9IGVxdWFsaXR5OyAvLy9cblxuICAgIGlmIChlcXVhbGl0eUEgIT09IGVxdWFsaXR5Qikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cbiJdLCJuYW1lcyI6WyJFcXVhbGl0eSIsImVxdWFsaXR5Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwibGVmdFRlcm1Ob2RlUXVlcnkiLCJyaWdodFRlcm1Ob2RlUXVlcnkiLCJsZWZ0VGVybU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwiZ2V0TGVmdFRlcm1Ob2RlIiwiZ2V0UmlnaHRUZXJtTm9kZSIsIm1hdGNoIiwiZXF1YWxpdHkiLCJlcXVhbGl0aWVzIiwicHJvb2ZDb250ZXh0IiwibWF0Y2hlcyIsInJldmVyc2VkIiwibGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoIiwibWF0Y2hMZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlIiwibGVmdE5vblRlcm1pbmFsTm9kZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlRXF1YXRlcyIsImVxdWF0ZU5vblRlcm1pbmFsTm9kZSIsImVxdWF0ZSIsImVxdWF0ZXMiLCJmcm9tUHJvb2ZTdGVwIiwicHJvb2ZTdGVwIiwic3RhdGVtZW50Tm9kZSIsImdldFN0YXRlbWVudE5vZGUiLCJlcXVhbGl0eU5vZGUiLCJmcm9tRXF1YWxpdHlOb2RlIiwiZnJvbUxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUiLCJlcXVhdGVOb2RlIiwibm9kZUEiLCJub2RlQiIsIm5vZGVFcXVhdGVzIiwibm9kZUFUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsIm5vZGVCVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQSIsInRlcm1pbmFsTm9kZUIiLCJ0ZXJtaW5hbE5vZGVFcXVhdGVzIiwiZXF1YXRlVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJlcXVhdGVOb2RlcyIsImxlZnROb2RlcyIsInJpZ2h0Tm9kZXMiLCJub2Rlc0VxdWF0ZSIsImxlZnROb2Rlc0xlbmd0aCIsImxlbmd0aCIsInJpZ2h0Tm9kZXNMZW5ndGgiLCJldmVyeSIsIkxlZnROb2RlIiwiaW5kZXgiLCJyaWdodE5vZGUiLCJsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJydWxlTmFtZSIsInJ1bGVOYW1lVGVybVJ1bGVOYW1lIiwiVEVSTV9SVUxFX05BTUUiLCJ0ZXJtTm9kZUVxdWF0ZXMiLCJlcXVhdGVUZXJtTm9kZSIsImxlZnROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsImVxdWFsaXR5QSIsImVxdWFsaXR5TWF0Y2hlcyIsInNvbWUiLCJlcXVhbGl0aWVzQiIsImVxdWFsaXR5QiIs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
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lcXVhbGl0eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBURVJNX1JVTEVfTkFNRSB9IGZyb20gXCIuL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgRVFVQUxTX0NIQVJBQ1RFUiB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5jb25zdCBzcGVjaWFsTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9Ac3BlY2lhbCFcIiksXG4gICAgICBsZWZ0VGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdGVybVswXVwiKSxcbiAgICAgIHJpZ2h0VGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9zdGF0ZW1lbnQvdGVybVsxXVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXF1YWxpdHkge1xuICBjb25zdHJ1Y3RvcihsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUpIHtcbiAgICB0aGlzLmxlZnRUZXJtTm9kZSA9IGxlZnRUZXJtTm9kZTtcbiAgICB0aGlzLnJpZ2h0VGVybU5vZGUgPSByaWdodFRlcm1Ob2RlO1xuICB9XG5cbiAgZ2V0TGVmdFRlcm1Ob2RlKCkge1xuICAgIHJldHVybiB0aGlzLmxlZnRUZXJtTm9kZTtcbiAgfVxuXG4gIGdldFJpZ2h0VGVybU5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRUZXJtTm9kZTtcbiAgfVxuXG4gIG1hdGNoKGVxdWFsaXR5LCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpIHtcbiAgICBsZXQgbWF0Y2hlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gZXF1YWxpdHkuZ2V0TGVmdFRlcm1Ob2RlKCksXG4gICAgICAgICAgcmlnaHRUZXJtTm9kZSA9IGVxdWFsaXR5LmdldFJpZ2h0VGVybU5vZGUoKTtcblxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgY29uc3QgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgICAgICAgICAgIGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCA9IHRoaXMubWF0Y2hMZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgcmV2ZXJzZWQsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIG1hdGNoZXMgPSBsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2g7ICAvLy9cbiAgICB9XG5cbiAgICBpZiAoIW1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IHJldmVyc2VkID0gdHJ1ZSxcbiAgICAgICAgICAgIGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCA9IHRoaXMubWF0Y2hMZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgcmV2ZXJzZWQsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIG1hdGNoZXMgPSBsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2g7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoTGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUsIHJldmVyc2VkLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpIHtcbiAgICBsZXQgbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoID0gdHJ1ZTtcblxuICAgIGlmIChsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2gpIHtcbiAgICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGUgPSByZXZlcnNlZCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJpZ2h0VGVybU5vZGUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxlZnRUZXJtTm9kZSwgIC8vL1xuICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGUgPSBsZWZ0VGVybU5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBlcXVhdGVOb25UZXJtaW5hbE5vZGUobGVmdE5vblRlcm1pbmFsTm9kZSwgcmlnaHROb25UZXJtaW5hbE5vZGUsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIGxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGVNYXRjaCA9IG5vblRlcm1pbmFsTm9kZUVxdWF0ZXM7IC8vL1xuICAgIH1cblxuICAgIGlmIChsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2gpIHtcbiAgICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGUgPSByZXZlcnNlZCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxlZnRUZXJtTm9kZSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmlnaHRUZXJtTm9kZSwgIC8vL1xuICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGUgPSByaWdodFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlTm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICBsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2ggPSBub25UZXJtaW5hbE5vZGVFcXVhdGVzOyAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gbGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZU1hdGNoO1xuICB9XG5cbiAgZXF1YXRlKGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCkge1xuICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGUgPSB0aGlzLmxlZnRUZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlID0gdGhpcy5yaWdodFRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlRXF1YXRlcyA9IGVxdWF0ZU5vblRlcm1pbmFsTm9kZShsZWZ0Tm9uVGVybWluYWxOb2RlLCByaWdodE5vblRlcm1pbmFsTm9kZSwgZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KSxcbiAgICAgICAgICBlcXVhdGVzID0gbm9uVGVybWluYWxOb2RlRXF1YXRlczsgLy8vXG5cbiAgICByZXR1cm4gZXF1YXRlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tUHJvb2ZTdGVwKHByb29mU3RlcCkge1xuICAgIGxldCBlcXVhbGl0eSA9IG51bGw7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gcHJvb2ZTdGVwLmdldFN0YXRlbWVudE5vZGUoKTtcblxuICAgIGlmIChzdGF0ZW1lbnROb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzcGVjaWFsTm9kZSA9IHNwZWNpYWxOb2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICAgIGlmIChzcGVjaWFsTm9kZSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBzcGVjaWFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1pbmFsTm9kZUNvbnRlbnQgPSB0ZXJtaW5hbE5vZGUuZ2V0Q29udGVudCgpO1xuXG4gICAgICAgIGlmICh0ZXJtaW5hbE5vZGVDb250ZW50ID09PSBFUVVBTFNfQ0hBUkFDVEVSKSB7XG4gICAgICAgICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gbGVmdFRlcm1Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSksXG4gICAgICAgICAgICAgICAgcmlnaHRUZXJtTm9kZSA9IHJpZ2h0VGVybU5vZGVRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICAgICAgICAgIGVxdWFsaXR5ID0gbmV3IEVxdWFsaXR5KGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXF1YWxpdHk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKSB7XG4gICAgY29uc3QgZXF1YWxpdHkgPSBuZXcgRXF1YWxpdHkobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKTtcblxuICAgIHJldHVybiBlcXVhbGl0eTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlcXVhdGVOb2RlKG5vZGVBLCBub2RlQiwgZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCBub2RlRXF1YXRlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vZGVBVGVybWluYWxOb2RlID0gbm9kZUEuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgbm9kZUJUZXJtaW5hbE5vZGUgPSBub2RlQi5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlQVRlcm1pbmFsTm9kZSA9PT0gbm9kZUJUZXJtaW5hbE5vZGUpIHtcbiAgICBpZiAobm9kZUFUZXJtaW5hbE5vZGUpIHtcbiAgICAgIGNvbnN0IHRlcm1pbmFsTm9kZUEgPSBub2RlQSwgIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlQiA9IG5vZGVCLCAgLy8vXG4gICAgICAgICAgICB0ZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlVGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZUEsIHRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIG5vZGVFcXVhdGVzID0gdGVybWluYWxOb2RlRXF1YXRlczsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGVBID0gbm9kZUEsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZUIgPSBub2RlQiwgLy8vXG4gICAgICAgICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gZXF1YXRlTm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZUEsIG5vblRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIG5vZGVFcXVhdGVzID0gbm9uVGVybWluYWxOb2RlRXF1YXRlczsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVFcXVhdGVzO1xufVxuXG5mdW5jdGlvbiBlcXVhdGVOb2RlcyhsZWZ0Tm9kZXMsIHJpZ2h0Tm9kZXMsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCkge1xuICBsZXQgbm9kZXNFcXVhdGUgPSBmYWxzZTtcblxuICBjb25zdCBsZWZ0Tm9kZXNMZW5ndGggPSBsZWZ0Tm9kZXMubGVuZ3RoLFxuICAgICAgICByaWdodE5vZGVzTGVuZ3RoID0gcmlnaHROb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKGxlZnROb2Rlc0xlbmd0aCA9PT0gcmlnaHROb2Rlc0xlbmd0aCkge1xuICAgIG5vZGVzRXF1YXRlID0gbGVmdE5vZGVzLmV2ZXJ5KChMZWZ0Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHJpZ2h0Tm9kZSA9IHJpZ2h0Tm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZUVxdWF0ZXMgPSBlcXVhdGVOb2RlKExlZnROb2RlLCByaWdodE5vZGUsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIGlmIChub2RlRXF1YXRlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBub2Rlc0VxdWF0ZTtcbn1cblxuZnVuY3Rpb24gZXF1YXRlVGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZUEsIHRlcm1pbmFsTm9kZUIsIGVxdWFsaXRpZXMsIHByb29mQ29udGV4dCkge1xuICBjb25zdCBtYXRjaGVzID0gdGVybWluYWxOb2RlQS5tYXRjaCh0ZXJtaW5hbE5vZGVCKSxcbiAgICAgICAgdGVybWluYWxOb2RlRXF1YXRlcyA9IG1hdGNoZXM7ICAvLy9cblxuICByZXR1cm4gdGVybWluYWxOb2RlRXF1YXRlcztcbn1cblxuZnVuY3Rpb24gZXF1YXRlTm9uVGVybWluYWxOb2RlKGxlZnROb25UZXJtaW5hbE5vZGUsIHJpZ2h0Tm9uVGVybWluYWxOb2RlLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZUVxdWF0ZXMgPSBmYWxzZTtcblxuICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSBsZWZ0Tm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPSByaWdodE5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIGlmIChsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICBjb25zdCBydWxlTmFtZSA9IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSwgLy8vXG4gICAgICAgICAgcnVsZU5hbWVUZXJtUnVsZU5hbWUgPSAocnVsZU5hbWUgPT09IFRFUk1fUlVMRV9OQU1FKTtcblxuICAgIGlmIChydWxlTmFtZVRlcm1SdWxlTmFtZSkge1xuICAgICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gbGVmdE5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICByaWdodFRlcm1Ob2RlID0gcmlnaHROb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgdGVybU5vZGVFcXVhdGVzID0gZXF1YXRlVGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICBub25UZXJtaW5hbE5vZGVFcXVhdGVzID0gdGVybU5vZGVFcXVhdGVzOyAgLy8vXG4gICAgfVxuXG4gICAgaWYgKCFub25UZXJtaW5hbE5vZGVFcXVhdGVzKSB7XG4gICAgICBjb25zdCBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgcmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gcmlnaHROb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgbGVmdE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgcmlnaHROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICBub2Rlc0VxdWF0ZSA9IGVxdWF0ZU5vZGVzKGxlZnROb2RlcywgcmlnaHROb2RlcywgZXF1YWxpdGllcywgcHJvb2ZDb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlRXF1YXRlcyA9IG5vZGVzRXF1YXRlOyAvLy9cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlRXF1YXRlcztcbn1cblxuZnVuY3Rpb24gZXF1YXRlVGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlLCBlcXVhbGl0aWVzLCBwcm9vZkNvbnRleHQpIHtcbiAgY29uc3QgZXF1YWxpdHkgPSBFcXVhbGl0eS5mcm9tTGVmdFRlcm1Ob2RlQW5kUmlnaHRUZXJtTm9kZShsZWZ0VGVybU5vZGUsIHJpZ2h0VGVybU5vZGUpLFxuICAgICAgICBlcXVhbGl0eUEgPSBlcXVhbGl0eSwgLy8vXG4gICAgICAgIGVxdWFsaXR5TWF0Y2hlcyA9IGVxdWFsaXRpZXMuc29tZSgoZXF1YWxpdHkpID0+IHsgLy8vXG4gICAgICAgICAgbGV0IGVxdWFsaXRpZXNCID0gZXF1YWxpdGllczsgLy8vXG5cbiAgICAgICAgICBjb25zdCBlcXVhbGl0eUIgPSBlcXVhbGl0eTsgLy8vXG5cbiAgICAgICAgICBlcXVhbGl0aWVzQiA9IHBydW5lRXF1YWxpdGllcyhlcXVhbGl0aWVzQiwgZXF1YWxpdHlCKTsgIC8vL1xuXG4gICAgICAgICAgY29uc3QgZXF1YWxpdHlBTWF0Y2hlc0VxdWFsaXR5QiA9IGVxdWFsaXR5QS5tYXRjaChlcXVhbGl0eUIsIGVxdWFsaXRpZXNCLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGVxdWFsaXR5QU1hdGNoZXNFcXVhbGl0eUIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRlcm1Ob2RlRXF1YXRlcyA9IGVxdWFsaXR5TWF0Y2hlczsgIC8vL1xuXG4gIHJldHVybiB0ZXJtTm9kZUVxdWF0ZXM7XG59XG5cbmZ1bmN0aW9uIHBydW5lRXF1YWxpdGllcyhlcXVhbGl0aWVzLCBlcXVhbGl0eSkge1xuICBjb25zdCBlcXVhbGl0eUEgPSBlcXVhbGl0eTsgLy8vXG5cbiAgZXF1YWxpdGllcyA9IGVxdWFsaXRpZXMuZmlsdGVyKChlcXVhbGl0eSkgPT4ge1xuICAgIGNvbnN0IGVxdWFsaXR5QiA9IGVxdWFsaXR5OyAvLy9cblxuICAgIGlmIChlcXVhbGl0eUEgIT09IGVxdWFsaXR5Qikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cbiJdLCJuYW1lcyI6WyJFcXVhbGl0eSIsInNwZWNpYWxOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJsZWZ0VGVybU5vZGVRdWVyeSIsInJpZ2h0VGVybU5vZGVRdWVyeSIsImxlZnRUZXJtTm9kZSIsInJpZ2h0VGVybU5vZGUiLCJnZXRMZWZ0VGVybU5vZGUiLCJnZXRSaWdodFRlcm1Ob2RlIiwibWF0Y2giLCJlcXVhbGl0eSIsImVxdWFsaXRpZXMiLCJwcm9vZkNvbnRleHQiLCJtYXRjaGVzIiwicmV2ZXJzZWQiLCJsZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlTWF0Y2giLCJtYXRjaExlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUiLCJsZWZ0Tm9uVGVybWluYWxOb2RlIiwicmlnaHROb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVFcXVhdGVzIiwiZXF1YXRlTm9uVGVybWluYWxOb2RlIiwiZXF1YXRlIiwiZXF1YXRlcyIsImZyb21Qcm9vZlN0ZXAiLCJwcm9vZlN0ZXAiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInNwZWNpYWxOb2RlIiwidGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQ29udGVudCIsImdldENvbnRlbnQiLCJFUVVBTFNfQ0hBUkFDVEVSIiwiZnJvbUxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUiLCJlcXVhdGVOb2RlIiwibm9kZUEiLCJub2RlQiIsIm5vZGVFcXVhdGVzIiwibm9kZUFUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsIm5vZGVCVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlQSIsInRlcm1pbmFsTm9kZUIiLCJ0ZXJtaW5hbE5vZGVFcXVhdGVzIiwiZXF1YXRlVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlQSIsIm5vblRlcm1pbmFsTm9kZUIiLCJlcXVhdGVOb2RlcyIsImxlZnROb2RlcyIsInJpZ2h0Tm9kZXMiLCJub2Rlc0VxdWF0ZSIsImxlZnROb2Rlc0xlbmd0aCIsImxlbmd0aCIsInJpZ2h0Tm9kZXNMZW5ndGgiLCJldmVyeSIsIkxlZnROb2RlIiwiaW5kZXgiLCJyaWdodE5vZGUiLCJsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJydWxlTmFtZSIsInJ1bGVOYW1lVGVybVJ1bGVOYW1lIiwiVEVSTV9SVUxFX05BTUUiLCJ0ZXJtTm9kZUVxdWF0ZXMiLCJlcXVhdGVUZXJtTm9kZSIsImxlZnROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsInJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyIsImVxdWFsaXR5QSIsImVxdWFsaXR5TWF0Y2hlcyIsInNvbWUiLCJlcXVhbGl0aWVzQiIsImVxdWFsaXR5QiIsInBydW5lRXF1YWxpdGllcyIsImVxdWFsaXR5QU1hdGNoZXNFcXVhbGl0eUIiLCJmaWx0ZXIiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBVXFCQTs7O3FCQVJLO3lCQUNLO3lCQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVqQyxJQUFNQyxtQkFBbUJDLElBQUFBLGdCQUFTLEVBQUMseUJBQzdCQyxvQkFBb0JELElBQUFBLGdCQUFTLEVBQUMsdUJBQzlCRSxxQkFBcUJGLElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsSUFBQSxBQUFNRix5QkF1R2xCLEFBdkdZO2FBQU1BLFNBQ1BLLFlBQVksRUFBRUMsYUFBYTs4QkFEcEJOO1FBRWpCLElBQUksQ0FBQ0ssWUFBWSxHQUFHQTtRQUNwQixJQUFJLENBQUNDLGFBQWEsR0FBR0E7O2lCQUhKTjs7WUFNbkJPLEtBQUFBO21CQUFBQSxTQUFBQSxrQkFBa0I7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDRixZQUFZO1lBQzFCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLG1CQUFtQjtnQkFDakIsT0FBTyxJQUFJLENBQUNGLGFBQWE7WUFDM0I7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTUMsUUFBUSxFQUFFQyxVQUFVLEVBQUVDLFlBQVksRUFBRTtnQkFDeEMsSUFBSUMsVUFBVSxLQUFLO2dCQUVuQixJQUFNUixlQUFlSyxTQUFTSCxlQUFlLElBQ3ZDRCxnQkFBZ0JJLFNBQVNGLGdCQUFnQjtnQkFFL0MsSUFBSSxDQUFDSyxTQUFTO29CQUNaLElBQU1DLFdBQVcsS0FBSyxFQUNoQkMsb0NBQW9DLElBQUksQ0FBQ0MsaUNBQWlDLENBQUNYLGNBQWNDLGVBQWVRLFVBQVVILFlBQVlDO29CQUVwSUMsVUFBVUUsbUNBQW9DLEdBQUc7Z0JBQ25ELENBQUM7Z0JBRUQsSUFBSSxDQUFDRixTQUFTO29CQUNaLElBQU1DLFlBQVcsSUFBSSxFQUNmQyxxQ0FBb0MsSUFBSSxDQUFDQyxpQ0FBaUMsQ0FBQ1gsY0FBY0Ms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
|
package/lib/metaSubstitution.js
CHANGED
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return MetaSubstitution;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
var _ruleNames = require("./ruleNames");
|
|
11
12
|
var _node = require("./utilities/node");
|
|
12
13
|
function _classCallCheck(instance, Constructor) {
|
|
13
14
|
if (!(instance instanceof Constructor)) {
|
|
@@ -29,10 +30,10 @@ function _createClass(Constructor, protoProps, staticProps) {
|
|
|
29
30
|
return Constructor;
|
|
30
31
|
}
|
|
31
32
|
var MetaSubstitution = /*#__PURE__*/ function() {
|
|
32
|
-
function MetaSubstitution(metavariableName,
|
|
33
|
+
function MetaSubstitution(metavariableName, metastatementNode) {
|
|
33
34
|
_classCallCheck(this, MetaSubstitution);
|
|
34
35
|
this.metavariableName = metavariableName;
|
|
35
|
-
this.
|
|
36
|
+
this.metastatementNode = metastatementNode;
|
|
36
37
|
}
|
|
37
38
|
_createClass(MetaSubstitution, [
|
|
38
39
|
{
|
|
@@ -42,37 +43,38 @@ var MetaSubstitution = /*#__PURE__*/ function() {
|
|
|
42
43
|
}
|
|
43
44
|
},
|
|
44
45
|
{
|
|
45
|
-
key: "
|
|
46
|
-
value: function
|
|
47
|
-
return this.
|
|
46
|
+
key: "getMetastatementNode",
|
|
47
|
+
value: function getMetastatementNode() {
|
|
48
|
+
return this.metastatementNode;
|
|
48
49
|
}
|
|
49
50
|
},
|
|
50
51
|
{
|
|
51
|
-
key: "
|
|
52
|
-
value: function
|
|
53
|
-
var
|
|
54
|
-
var
|
|
55
|
-
|
|
56
|
-
if (!
|
|
57
|
-
var
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
52
|
+
key: "matchMetastatementNode",
|
|
53
|
+
value: function matchMetastatementNode(metastatementNode) {
|
|
54
|
+
var matchesMetastatementNode;
|
|
55
|
+
var nodeA = this.metastatementNode, nodeB = metastatementNode, nodeMatches = (0, _node.matchNode)(nodeA, nodeB);
|
|
56
|
+
matchesMetastatementNode = nodeMatches; ///
|
|
57
|
+
if (!matchesMetastatementNode) {
|
|
58
|
+
var nonTerminalNode = metastatementNode, childNodes = nonTerminalNode.getChildNodes(), ruleName = _ruleNames.METASTATEMENT_RULE_NAME;
|
|
59
|
+
metastatementNode = (0, _node.bracketedNonTerminalChildNodeFromChildNodes)(childNodes, ruleName); ///
|
|
60
|
+
if (metastatementNode !== null) {
|
|
61
|
+
var nodeA1 = this.metastatementNode, nodeB1 = metastatementNode, nodeMatches1 = (0, _node.matchNode)(nodeA1, nodeB1);
|
|
62
|
+
matchesMetastatementNode = nodeMatches1; ///
|
|
61
63
|
}
|
|
62
64
|
}
|
|
63
|
-
return
|
|
65
|
+
return matchesMetastatementNode;
|
|
64
66
|
}
|
|
65
67
|
}
|
|
66
68
|
], [
|
|
67
69
|
{
|
|
68
|
-
key: "
|
|
69
|
-
value: function
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
key: "fromMetavariableNameAndMetastatementNode",
|
|
71
|
+
value: function fromMetavariableNameAndMetastatementNode(metavariableName, metastatementNode) {
|
|
72
|
+
var metaSubstitution = new MetaSubstitution(metavariableName, metastatementNode);
|
|
73
|
+
var nonTerminalNode = metastatementNode, childNodes = nonTerminalNode.getChildNodes(), ruleName = _ruleNames.METASTATEMENT_RULE_NAME;
|
|
74
|
+
metastatementNode = (0, _node.bracketedNonTerminalChildNodeFromChildNodes)(childNodes, ruleName); ///
|
|
75
|
+
if (metastatementNode !== null) {
|
|
76
|
+
metaSubstitution = new MetaSubstitution(metavariableName, metastatementNode);
|
|
74
77
|
}
|
|
75
|
-
var metaSubstitution = new MetaSubstitution(metavariableName, nodes);
|
|
76
78
|
return metaSubstitution;
|
|
77
79
|
}
|
|
78
80
|
}
|
|
@@ -80,4 +82,4 @@ var MetaSubstitution = /*#__PURE__*/ function() {
|
|
|
80
82
|
return MetaSubstitution;
|
|
81
83
|
}();
|
|
82
84
|
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhU3Vic3RpdHV0aW9uLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhU3Vic3RpdHV0aW9uLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgbWF0Y2hOb2RlLCBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZUZyb21DaGlsZE5vZGVzIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0YVN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1ldGF2YXJpYWJsZU5hbWUsIG1ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgdGhpcy5tZXRhdmFyaWFibGVOYW1lID0gbWV0YXZhcmlhYmxlTmFtZTtcbiAgICB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZU5hbWU7XG4gIH1cblxuICBnZXRNZXRhc3RhdGVtZW50Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhc3RhdGVtZW50Tm9kZTtcbiAgfVxuXG4gIG1hdGNoTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBsZXQgbWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlO1xuXG4gICAgY29uc3Qgbm9kZUEgPSB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgbm9kZUIgPSBtZXRhc3RhdGVtZW50Tm9kZSxcbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IG1hdGNoTm9kZShub2RlQSwgbm9kZUIpO1xuXG4gICAgbWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlID0gbm9kZU1hdGNoZXM7ICAvLy9cblxuICAgIGlmICghbWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlKSB7XG4gICAgICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSBtZXRhc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksIC8vL1xuICAgICAgICAgICAgcnVsZU5hbWUgPSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRTtcblxuICAgICAgbWV0YXN0YXRlbWVudE5vZGUgPSBicmFja2V0ZWROb25UZXJtaW5hbENoaWxkTm9kZUZyb21DaGlsZE5vZGVzKGNoaWxkTm9kZXMsIHJ1bGVOYW1lKTsgIC8vL1xuXG4gICAgICBpZiAobWV0YXN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgbm9kZUEgPSB0aGlzLm1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vZGVCID0gbWV0YXN0YXRlbWVudE5vZGUsXG4gICAgICAgICAgICAgIG5vZGVNYXRjaGVzID0gbWF0Y2hOb2RlKG5vZGVBLCBub2RlQik7XG5cbiAgICAgICAgbWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlID0gbm9kZU1hdGNoZXM7ICAvLy9cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlc01ldGFzdGF0ZW1lbnROb2RlO1xuICB9XG5cbiAgc3RhdGljIGZyb21NZXRhdmFyaWFibGVOYW1lQW5kTWV0YXN0YXRlbWVudE5vZGUobWV0YXZhcmlhYmxlTmFtZSwgbWV0YXN0YXRlbWVudE5vZGUpIHtcbiAgICBsZXQgbWV0YVN1YnN0aXR1dGlvbiA9IG5ldyBNZXRhU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZU5hbWUsIG1ldGFzdGF0ZW1lbnROb2RlKTtcblxuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG1ldGFzdGF0ZW1lbnROb2RlLCAgLy8vXG4gICAgICAgICAgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgcnVsZU5hbWUgPSBNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRTtcblxuICAgIG1ldGFzdGF0ZW1lbnROb2RlID0gYnJhY2tldGVkTm9uVGVybWluYWxDaGlsZE5vZGVGcm9tQ2hpbGROb2RlcyhjaGlsZE5vZGVzLCBydWxlTmFtZSk7ICAvLy9cblxuICAgIGlmIChtZXRhc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgbWV0YVN1YnN0aXR1dGlvbiA9IG5ldyBNZXRhU3Vic3RpdHV0aW9uKG1ldGF2YXJpYWJsZU5hbWUsIG1ldGFzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YVN1YnN0aXR1dGlvbjtcbiAgfVxufVxuIiwiUmVhY3QuY3JlYXRlRWxlbWVudCJdLCJuYW1lcyI6WyJNZXRhU3Vic3RpdHV0aW9uIiwibWV0YXZhcmlhYmxlTmFtZSIsIm1ldGFzdGF0ZW1lbnROb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTmFtZSIsImdldE1ldGFzdGF0ZW1lbnROb2RlIiwibWF0Y2hNZXRhc3RhdGVtZW50Tm9kZSIsIm1hdGNoZXNNZXRhc3RhdGVtZW50Tm9kZSIsIm5vZGVBIiwibm9kZUIiLCJub2RlTWF0Y2hlcyIsIm1hdGNoTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicnVsZU5hbWUiLCJNRVRBU1RBVEVNRU5UX1JVTEVfTkFNRSIsImJyYWNrZXRlZE5vblRlcm1pbmFsQ2hpbGROb2RlRnJvbUNoaWxkTm9kZXMiLCJmcm9tTWV0YXZhcmlhYmxlTmFtZUFuZE1ldGFzdGF0ZW1lbnROb2RlIiwibWV0YVN1YnN0aXR1dGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFLcUJBOzs7eUJBSG1CO29CQUMrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFeEQsSUFBQSxBQUFNQSxpQ0FBTjthQUFNQSxpQkFDUEMsZ0JBQWdCLEVBQUVDLGlCQUFpQjs4QkFENUJGO1FBRWpCLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUdBO1FBQ3hCLElBQUksQ0FBQ0MsaUJBQWlCLEdBQUdBOztpQkFIUkY7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUEsc0JBQXNCO2dCQUNwQixPQUFPLElBQUksQ0FBQ0YsZ0JBQWdCO1lBQzlCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLHVCQUF1QjtnQkFDckIsT0FBTyxJQUFJLENBQUNGLGlCQUFpQjtZQUMvQjs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSx1QkFBdUJILGlCQUFpQixFQUFFO2dCQUN4QyxJQUFJSTtnQkFFSixJQUFNQyxRQUFRLElBQUksQ0FBQ0wsaUJBQWlCLEVBQzlCTSxRQUFRTixtQkFDUk8sY0FBY0MsSUFBQUEsZUFBUyxFQUFDSCxPQUFPQztnQkFFckNGLDJCQUEyQkcsYUFBYyxHQUFHO2dCQUU1QyxJQUFJLENBQUNILDBCQUEwQjtvQkFDN0IsSUFBTUssa0JBQWtCVCxtQkFDbEJVLGFBQWFELGdCQUFnQkUsYUFBYSxJQUMxQ0MsV0FBV0Msa0NBQXVCO29CQUV4Q2Isb0JBQW9CYyxJQUFBQSxpREFBMkMsRUFBQ0osWUFBWUUsV0FBWSxHQUFHO29CQUUzRixJQUFJWixzQkFBc0IsSUFBSSxFQUFFO3dCQUM5QixJQUFNSyxTQUFRLElBQUksQ0FBQ0wsaUJBQWlCLEVBQzlCTSxTQUFRTixtQkFDUk8sZUFBY0MsSUFBQUEsZUFBUyxFQUFDSCxRQUFPQzt3QkFFckNGLDJCQUEyQkcsY0FBYyxHQUFHO29CQUM5QyxDQUFDO2dCQUNILENBQUM7Z0JBRUQsT0FBT0g7WUFDVDs7OztZQUVPVyxLQUFBQTttQkFBUCxTQUFPQSx5Q0FBeUNoQixnQkFBZ0IsRUFBRUMsaUJBQWlCLEVBQUU7Z0JBQ25GLElBQUlnQixtQkFBbUIsSUEzQ05sQixpQkEyQzJCQyxrQkFBa0JDO2dCQUU5RCxJQUFNUyxrQkFBa0JULG1CQUNsQlUsYUFBYUQsZ0JBQWdCRSxhQUFhLElBQzFDQyxXQUFXQyxrQ0FBdUI7Z0JBRXhDYixvQkFBb0JjLElBQUFBLGlEQUEyQyxFQUFDSixZQUFZRSxXQUFZLEdBQUc7Z0JBRTNGLElBQUlaLHNCQUFzQixJQUFJLEVBQUU7b0JBQzlCZ0IsbUJBQW1CLElBcERKbEIsaUJBb0R5QkMsa0JBQWtCQztnQkFDNUQsQ0FBQztnQkFFRCxPQUFPZ0I7WUFDVDs7O1dBeERtQmxCIn0=
|