occam-verify-cli 0.0.1065 → 0.0.1067
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/assertion/contained.js +2 -1
- package/lib/assertion/defined.js +2 -1
- package/lib/combinator/bracketed.js +135 -0
- package/lib/conclusion.js +6 -2
- package/lib/consequent.js +6 -2
- package/lib/constants.js +3 -3
- package/lib/constructor/bracketed.js +30 -11
- package/lib/context/file.js +45 -9
- package/lib/context/local.js +67 -28
- package/lib/metavariable.js +15 -54
- package/lib/mixins/statement/unify.js +18 -3
- package/lib/mixins/statement/verify.js +2 -11
- package/lib/premise.js +6 -2
- package/lib/proofStep.js +22 -13
- package/lib/rule.js +6 -2
- package/lib/ruleNames.js +1 -5
- package/lib/statement/qualified.js +30 -17
- package/lib/statement/unqualified.js +5 -5
- package/lib/statement.js +41 -24
- package/lib/subproof.js +1 -1
- package/lib/substitution/frameForMetavariable.js +44 -21
- package/lib/substitution/statementForMetavariable.js +93 -54
- package/lib/substitution/termForVariable.js +38 -21
- package/lib/substitution.js +48 -13
- package/lib/substitutions.js +22 -19
- package/lib/supposition.js +6 -2
- package/lib/unifier/metaLevel.js +14 -12
- package/lib/unify/metavariableWithFrame.js +2 -2
- package/lib/utilities/brackets.js +5 -10
- package/lib/utilities/node.js +29 -15
- package/lib/utilities/string.js +34 -16
- package/lib/utilities/tokens.js +16 -8
- package/lib/variable.js +10 -10
- package/package.json +2 -2
- package/src/assertion/contained.js +2 -0
- package/src/assertion/defined.js +2 -0
- package/src/combinator/bracketed.js +49 -0
- package/src/conclusion.js +8 -1
- package/src/consequent.js +8 -1
- package/src/constants.js +2 -2
- package/src/constructor/bracketed.js +32 -9
- package/src/context/file.js +41 -13
- package/src/context/local.js +71 -35
- package/src/metavariable.js +24 -74
- package/src/mixins/statement/unify.js +25 -2
- package/src/mixins/statement/verify.js +1 -14
- package/src/premise.js +8 -1
- package/src/proofStep.js +28 -12
- package/src/rule.js +7 -1
- package/src/ruleNames.js +0 -1
- package/src/statement/qualified.js +38 -21
- package/src/statement/unqualified.js +4 -4
- package/src/statement.js +62 -41
- package/src/subproof.js +0 -1
- package/src/substitution/frameForMetavariable.js +62 -32
- package/src/substitution/statementForMetavariable.js +102 -61
- package/src/substitution/termForVariable.js +52 -32
- package/src/substitution.js +40 -11
- package/src/substitutions.js +32 -25
- package/src/supposition.js +8 -1
- package/src/unifier/metaLevel.js +23 -18
- package/src/unify/metavariableWithFrame.js +2 -2
- package/src/utilities/brackets.js +2 -3
- package/src/utilities/node.js +30 -22
- package/src/utilities/string.js +39 -23
- package/src/utilities/tokens.js +17 -8
- package/src/variable.js +7 -7
- package/lib/node/statement/bracketed.js +0 -16
- package/lib/node/statement/combinator/bracketed.js +0 -25
- package/lib/node/term/bracketed.js +0 -16
- package/lib/node/term/constructor/bracketed.js +0 -25
- package/lib/ocmbinator/bracketed.js +0 -157
- package/lib/resolve/complexSubstitutionAgainstSimpleSubstitution.js +0 -62
- package/lib/resolve/substitution.js +0 -27
- package/lib/resolve/substitutions.js +0 -37
- package/lib/substitution/statement.js +0 -163
- package/lib/verifier/substitution.js +0 -161
- package/src/node/statement/bracketed.js +0 -9
- package/src/node/statement/combinator/bracketed.js +0 -10
- package/src/node/term/bracketed.js +0 -9
- package/src/node/term/constructor/bracketed.js +0 -10
- package/src/ocmbinator/bracketed.js +0 -26
- package/src/resolve/complexSubstitutionAgainstSimpleSubstitution.js +0 -79
- package/src/resolve/substitution.js +0 -19
- package/src/resolve/substitutions.js +0 -31
- package/src/substitution/statement.js +0 -81
- package/src/verifier/substitution.js +0 -75
package/lib/statement.js
CHANGED
|
@@ -16,6 +16,7 @@ var _metaLevel = /*#__PURE__*/ _interop_require_default(require("./unifier/metaL
|
|
|
16
16
|
var _statementAsCombinator = /*#__PURE__*/ _interop_require_default(require("./verifier/statementAsCombinator"));
|
|
17
17
|
var _query = require("./utilities/query");
|
|
18
18
|
var _metaTypeNames = require("./metaTypeNames");
|
|
19
|
+
var _tokens = require("./utilities/tokens");
|
|
19
20
|
var _node = require("./utilities/node");
|
|
20
21
|
function _class_call_check(instance, Constructor) {
|
|
21
22
|
if (!(instance instanceof Constructor)) {
|
|
@@ -41,12 +42,13 @@ function _interop_require_default(obj) {
|
|
|
41
42
|
default: obj
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
|
-
var statementNodeQuery = (0, _query.nodeQuery)("/*//statement"),
|
|
45
|
+
var statementNodeQuery = (0, _query.nodeQuery)("/*//statement"), statementVariableNodesQuery = (0, _query.nodesQuery)("/statement//variable"), statementMetavariableNodesQuery = (0, _query.nodesQuery)("/statement//metavariable");
|
|
45
46
|
var Statement = /*#__PURE__*/ function() {
|
|
46
|
-
function Statement(string, node) {
|
|
47
|
+
function Statement(string, node, tokens) {
|
|
47
48
|
_class_call_check(this, Statement);
|
|
48
49
|
this.string = string;
|
|
49
50
|
this.node = node;
|
|
51
|
+
this.tokens = tokens;
|
|
50
52
|
}
|
|
51
53
|
_create_class(Statement, [
|
|
52
54
|
{
|
|
@@ -61,6 +63,12 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
61
63
|
return this.node;
|
|
62
64
|
}
|
|
63
65
|
},
|
|
66
|
+
{
|
|
67
|
+
key: "getTokens",
|
|
68
|
+
value: function getTokens() {
|
|
69
|
+
return this.tokens;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
64
72
|
{
|
|
65
73
|
key: "isEqualTo",
|
|
66
74
|
value: function isEqualTo(statement) {
|
|
@@ -73,7 +81,7 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
73
81
|
value: function isVariableContained(variable, localContext) {
|
|
74
82
|
var variableContained;
|
|
75
83
|
var variableString = variable.getString(), statementString = this.string; ///
|
|
76
|
-
localContext.trace("
|
|
84
|
+
localContext.trace("Is the '".concat(variableString, "' variable contained in the '").concat(statementString, "' statement..."));
|
|
77
85
|
var variableNode = variable.getNode(), statementNode = this.node, statementVariableNodes = statementVariableNodesQuery(statementNode);
|
|
78
86
|
variableContained = statementVariableNodes.some(function(statementVariableNode) {
|
|
79
87
|
var variableNodeMatchesStatementVariableNode = variableNode.match(statementVariableNode);
|
|
@@ -82,7 +90,7 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
82
90
|
}
|
|
83
91
|
});
|
|
84
92
|
if (variableContained) {
|
|
85
|
-
localContext.debug("...the '".concat(variableString, "' variable is contained in
|
|
93
|
+
localContext.debug("...the '".concat(variableString, "' variable is contained in the '").concat(statementString, "' statement."));
|
|
86
94
|
}
|
|
87
95
|
return variableContained;
|
|
88
96
|
}
|
|
@@ -92,7 +100,7 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
92
100
|
value: function isMetavariableContained(metavariable, localContext) {
|
|
93
101
|
var metavariableContained;
|
|
94
102
|
var metavariableString = metavariable.getString(), statementString = this.string; ///
|
|
95
|
-
localContext.trace("
|
|
103
|
+
localContext.trace("Is the '".concat(metavariableString, "' metavariable contained in the '").concat(statementString, "' statement..."));
|
|
96
104
|
var metavariableNode = metavariable.getNode(), statementNode = this.node, statementMetavariableNodes = statementMetavariableNodesQuery(statementNode);
|
|
97
105
|
metavariableContained = statementMetavariableNodes.some(function(statementMetavariableNode) {
|
|
98
106
|
var metavariableNodeMatchesStatementMetavariableNode = metavariableNode.match(statementMetavariableNode);
|
|
@@ -101,11 +109,32 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
101
109
|
}
|
|
102
110
|
});
|
|
103
111
|
if (metavariableContained) {
|
|
104
|
-
localContext.debug("...the '".concat(metavariableString, "' metavariable is contained in
|
|
112
|
+
localContext.debug("...the '".concat(metavariableString, "' metavariable is contained in the '").concat(statementString, "' statement."));
|
|
105
113
|
}
|
|
106
114
|
return metavariableContained;
|
|
107
115
|
}
|
|
108
116
|
},
|
|
117
|
+
{
|
|
118
|
+
key: "matchStatementNode",
|
|
119
|
+
value: function matchStatementNode(statementNode) {
|
|
120
|
+
var statementNodeMatches = this.node.match(statementNode);
|
|
121
|
+
return statementNodeMatches;
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
key: "unifyStatement",
|
|
126
|
+
value: function unifyStatement(statement, substitutions, localContextA, localContextB) {
|
|
127
|
+
var statementUnified;
|
|
128
|
+
var statementA = this, statementB = statement, statementAString = statementA.getString(), statementBString = statementB.getString();
|
|
129
|
+
localContextB.trace("Unifying the '".concat(statementBString, "' statement with the '").concat(statementAString, "' statement..."));
|
|
130
|
+
var statementANode = statementA.getNode(), statementBNode = statementB.getNode(), nodeA = statementANode, nodeB = statementBNode; ///
|
|
131
|
+
localContextA = _local.default.fromLocalContextAndTokens(localContextA, this.tokens);
|
|
132
|
+
var unifiedAtMetaLevel = _metaLevel.default.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
133
|
+
statementUnified = unifiedAtMetaLevel; ///
|
|
134
|
+
localContextB.debug("...unified the '".concat(statementBString, "' statement with the '").concat(statementAString, "' statement."));
|
|
135
|
+
return statementUnified;
|
|
136
|
+
}
|
|
137
|
+
},
|
|
109
138
|
{
|
|
110
139
|
key: "verify",
|
|
111
140
|
value: function verify(assignments, stated, localContext) {
|
|
@@ -165,18 +194,6 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
165
194
|
return verifiedGivenMetaType;
|
|
166
195
|
}
|
|
167
196
|
},
|
|
168
|
-
{
|
|
169
|
-
key: "unifyStatement",
|
|
170
|
-
value: function unifyStatement(statement, substitutions, fileContext, localContext) {
|
|
171
|
-
var statementUnified;
|
|
172
|
-
var statementA = this, statementB = statement, statementAString = statementA.getString(), statementBString = statementB.getString();
|
|
173
|
-
localContext.trace("Unifying the '".concat(statementBString, "' statement with the '").concat(statementAString, "' statement..."));
|
|
174
|
-
var statementANode = statementA.getNode(), statementBNode = statementB.getNode(), nodeA = statementANode, nodeB = statementBNode, fileContextA = fileContext, localContextA = _local.default.fromFileContext(fileContextA), localContextB = localContext, unifiedAtMetaLevel = _metaLevel.default.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
175
|
-
statementUnified = unifiedAtMetaLevel; ///
|
|
176
|
-
localContext.debug("...unified the '".concat(statementBString, "' statement with the '").concat(statementAString, "' statement."));
|
|
177
|
-
return statementUnified;
|
|
178
|
-
}
|
|
179
|
-
},
|
|
180
197
|
{
|
|
181
198
|
key: "toJSON",
|
|
182
199
|
value: function toJSON() {
|
|
@@ -190,7 +207,7 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
190
207
|
{
|
|
191
208
|
key: "fromJSON",
|
|
192
209
|
value: function fromJSON(json, fileContext) {
|
|
193
|
-
var string = json.string, statementString = string, lexer = fileContext.getLexer(), parser = fileContext.getParser(),
|
|
210
|
+
var string = json.string, statementString = string, lexer = fileContext.getLexer(), parser = fileContext.getParser(), unqualifiedStatementString = (0, _node.unqualifiedStatementStringFromStatementString)(statementString), unqualifiedStatementTokens = (0, _tokens.unqualifiedStatementTokensFromUnqualifiedStatementString)(unqualifiedStatementString, lexer), unqualifiedStatementNode = (0, _node.unqualifiedStatementNodeFromUnqualifiedStatementTokens)(unqualifiedStatementTokens, parser), statementTokens = (0, _tokens.statementTokensFromUnqualifiedStatementTokens)(unqualifiedStatementTokens), statementNode = (0, _node.statementNodeFromUnqualifiedStatementNode)(unqualifiedStatementNode), node = statementNode, tokens = statementTokens, statement = new Statement(string, node, tokens);
|
|
194
211
|
return statement;
|
|
195
212
|
}
|
|
196
213
|
},
|
|
@@ -199,8 +216,8 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
199
216
|
value: function fromStatementNode(statementNode, localContext) {
|
|
200
217
|
var statement = null;
|
|
201
218
|
if (statementNode !== null) {
|
|
202
|
-
var node = statementNode,
|
|
203
|
-
statement = new Statement(string, node);
|
|
219
|
+
var node = statementNode, tokens = localContext.nodeAsTokens(node), string = localContext.tokensAsString(tokens);
|
|
220
|
+
statement = new Statement(string, node, tokens);
|
|
204
221
|
}
|
|
205
222
|
return statement;
|
|
206
223
|
}
|
|
@@ -208,14 +225,14 @@ var Statement = /*#__PURE__*/ function() {
|
|
|
208
225
|
{
|
|
209
226
|
key: "fromDefinedAssertionNode",
|
|
210
227
|
value: function fromDefinedAssertionNode(definedAssertionNode, localContext) {
|
|
211
|
-
var statementNode = statementNodeQuery(definedAssertionNode), node = statementNode,
|
|
228
|
+
var statementNode = statementNodeQuery(definedAssertionNode), node = statementNode, tokens = localContext.nodeAsTokens(node), string = localContext.tokensAsString(tokens), statement = new Statement(string, node, tokens);
|
|
212
229
|
return statement;
|
|
213
230
|
}
|
|
214
231
|
},
|
|
215
232
|
{
|
|
216
233
|
key: "fromContainedAssertionNode",
|
|
217
234
|
value: function fromContainedAssertionNode(containedAssertionNode, localContext) {
|
|
218
|
-
var statementNode = statementNodeQuery(containedAssertionNode), node = statementNode,
|
|
235
|
+
var statementNode = statementNodeQuery(containedAssertionNode), node = statementNode, tokens = localContext.nodeAsTokens(node), string = localContext.tokensAsString(tokens), statement = new Statement(string, node, tokens);
|
|
219
236
|
return statement;
|
|
220
237
|
}
|
|
221
238
|
}
|
|
@@ -228,4 +245,4 @@ Object.assign(_shim.default, {
|
|
|
228
245
|
});
|
|
229
246
|
var _default = Statement;
|
|
230
247
|
|
|
231
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGF0ZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBzaGltIGZyb20gXCIuL3NoaW1cIjtcbmltcG9ydCB1bmlmeU1peGlucyBmcm9tIFwiLi9taXhpbnMvc3RhdGVtZW50L3VuaWZ5XCI7XG5pbXBvcnQgdmVyaWZ5TWl4aW5zIGZyb20gXCIuL21peGlucy9zdGF0ZW1lbnQvdmVyaWZ5XCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCBtZXRhTGV2ZWxVbmlmaWVyIGZyb20gXCIuL3VuaWZpZXIvbWV0YUxldmVsXCI7XG5pbXBvcnQgc3RhdGVtZW50QXNDb21iaW5hdG9yVmVyaWZpZXIgZnJvbSBcIi4vdmVyaWZpZXIvc3RhdGVtZW50QXNDb21iaW5hdG9yXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4vbWV0YVR5cGVOYW1lc1wiO1xuaW1wb3J0IHsgc3RhdGVtZW50Tm9kZUZyb21TdGF0ZW1lbnRTdHJpbmcgfSBmcm9tIFwiLi91dGlsaXRpZXMvbm9kZVwiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvKi8vc3RhdGVtZW50XCIpLFxuICAgICAgc3Vic3RpdHV0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N0YXRlbWVudC9zdWJzdGl0dXRpb25cIiksXG4gICAgICBzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3N0YXRlbWVudC8vdmFyaWFibGVcIiksXG4gICAgICBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2Rlc1F1ZXJ5ID0gbm9kZXNRdWVyeShcIi9zdGF0ZW1lbnQvL21ldGF2YXJpYWJsZVwiKTtcblxuY2xhc3MgU3RhdGVtZW50IHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBub2RlKSB7XG4gICAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgfVxuXG4gIGdldFN0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmc7XG4gIH1cblxuICBnZXROb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxuICBpc0VxdWFsVG8oc3RhdGVtZW50KSB7XG4gICAgY29uc3Qgbm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgICAgbWF0Y2hlcyA9IHRoaXMubm9kZS5tYXRjaChub2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gbWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBpc1ZhcmlhYmxlQ29udGFpbmVkKHZhcmlhYmxlLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgdmFyaWFibGVDb250YWluZWQ7XG5cbiAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIGNvbnRhaW5lZCBpbiBodGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHRoaXMubm9kZSxcbiAgICAgICAgICBzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzID0gc3RhdGVtZW50VmFyaWFibGVOb2Rlc1F1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgdmFyaWFibGVDb250YWluZWQgPSBzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzLnNvbWUoKHN0YXRlbWVudFZhcmlhYmxlTm9kZSkgPT4geyAgLy8vXG4gICAgICBjb25zdCB2YXJpYWJsZU5vZGVNYXRjaGVzU3RhdGVtZW50VmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlLm1hdGNoKHN0YXRlbWVudFZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIGlmICh2YXJpYWJsZU5vZGVNYXRjaGVzU3RhdGVtZW50VmFyaWFibGVOb2RlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHZhcmlhYmxlQ29udGFpbmVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIGlzIGNvbnRhaW5lZCBpbiBodGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiB2YXJpYWJsZUNvbnRhaW5lZDtcbiAgfVxuXG4gIGlzTWV0YXZhcmlhYmxlQ29udGFpbmVkKG1ldGF2YXJpYWJsZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IG1ldGF2YXJpYWJsZUNvbnRhaW5lZDtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBUaGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIGlzIGNvbnRhaW5lZCBpbiBodGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gdGhpcy5ub2RlLFxuICAgICAgICAgIHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVzID0gc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZXNRdWVyeShzdGF0ZW1lbnROb2RlKTtcblxuICAgIG1ldGF2YXJpYWJsZUNvbnRhaW5lZCA9IHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVzLnNvbWUoKHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUpID0+IHsgIC8vL1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXNTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZS5tYXRjaChzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVDb250YWluZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZSBpcyBjb250YWluZWQgaW4gaHRlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlQ29udGFpbmVkO1xuICB9XG5cbiAgdmVyaWZ5KGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50ID0gdGhpcywgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdHJpbmc7ICAvLy9cblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGlmICghdmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IHVuaWZpZWQgPSB1bmlmeU1peGlucy5zb21lKCh1bmlmeU1peGluKSA9PiB7XG4gICAgICAgIGNvbnN0IHVuaWZpZWQgPSB1bmlmeU1peGluKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICBpZiAodW5pZmllZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdmVyaWZpZWQgPSB1bmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAoIXZlcmlmaWVkKSB7XG4gICAgICB2ZXJpZmllZCA9IHZlcmlmeU1peGlucy5zb21lKCh2ZXJpZnlNaXhpbikgPT4ge1xuICAgICAgICBjb25zdCB2ZXJpZmllZCA9IHZlcmlmeU1peGluKHN0YXRlbWVudCwgYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICBpZiAodmVyaWZpZWQpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVkKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkO1xuICB9XG5cbiAgdmVyaWZ5QXRUb3BMZXZlbChmaWxlQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZEF0VG9wTGV2ZWw7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gdGhpcy5ub2RlLCAgLy8vXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdHJpbmc7ICAvLy9cblxuICAgIGZpbGVDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhdCB0b3AgbGV2ZWwuLi5gKTtcblxuICAgIHZlcmlmaWVkQXRUb3BMZXZlbCA9IHN0YXRlbWVudEFzQ29tYmluYXRvclZlcmlmaWVyLnZlcmlmeVN0YXRlbWVudChzdGF0ZW1lbnROb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICBpZiAodmVyaWZpZWRBdFRvcExldmVsKSB7XG4gICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBhdCB0b3AgbGV2ZWwuYCwgc3RhdGVtZW50Tm9kZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZlcmlmaWVkQXRUb3BMZXZlbDtcbiAgfVxuXG4gIHZlcmlmeUdpdmVuTWV0YVR5cGUobWV0YVR5cGUsIGFzc2lnbm1lbnRzLCBzdGF0ZWQsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCB2ZXJpZmllZEdpdmVuTWV0YVR5cGUgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1ldGFUeXBlU3RyaW5nID0gbWV0YVR5cGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdHJpbmc7ICAvLy9cblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgZ2l2ZW4gdGhlICcke21ldGFUeXBlU3RyaW5nfScgbWV0YS10eXBlLi4uYCk7XG5cbiAgICBjb25zdCBtZXRhVHlwZU5hbWUgPSBtZXRhVHlwZS5nZXROYW1lKCk7XG5cbiAgICBpZiAobWV0YVR5cGVOYW1lID09PSBTVEFURU1FTlRfTUVUQV9UWVBFX05BTUUpIHtcbiAgICAgIGNvbnN0IHZlcmlmaWVkID0gdGhpcy52ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KVxuXG4gICAgICB2ZXJpZmllZEdpdmVuTWV0YVR5cGUgPSB2ZXJpZmllZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHZlcmlmaWVkR2l2ZW5NZXRhVHlwZSkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGdpdmVuIHRoZSAnJHttZXRhVHlwZVN0cmluZ30nIG1ldGEtdHlwZS5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRHaXZlbk1ldGFUeXBlO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBmaWxlQ29udGV4dCwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHN0YXRlbWVudFVuaWZpZWQ7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRBID0gdGhpcywgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudEIgPSBzdGF0ZW1lbnQsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudEFTdHJpbmcgPSBzdGF0ZW1lbnRBLmdldFN0cmluZygpLFxuICAgICAgICAgIHN0YXRlbWVudEJTdHJpbmcgPSBzdGF0ZW1lbnRCLmdldFN0cmluZygpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50QlN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtzdGF0ZW1lbnRBU3RyaW5nfScgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRBTm9kZSA9IHN0YXRlbWVudEEuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN0YXRlbWVudEJOb2RlID0gc3RhdGVtZW50Qi5nZXROb2RlKCksXG4gICAgICAgICAgbm9kZUEgPSBzdGF0ZW1lbnRBTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZUIgPSBzdGF0ZW1lbnRCTm9kZSwgLy8vXG4gICAgICAgICAgZmlsZUNvbnRleHRBID0gZmlsZUNvbnRleHQsIC8vL1xuICAgICAgICAgIGxvY2FsQ29udGV4dEEgPSBMb2NhbENvbnRleHQuZnJvbUZpbGVDb250ZXh0KGZpbGVDb250ZXh0QSksXG4gICAgICAgICAgbG9jYWxDb250ZXh0QiA9IGxvY2FsQ29udGV4dCwgLy8vXG4gICAgICAgICAgdW5pZmllZEF0TWV0YUxldmVsID0gbWV0YUxldmVsVW5pZmllci51bmlmeShub2RlQSwgbm9kZUIsIHN1YnN0aXR1dGlvbnMsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgc3RhdGVtZW50VW5pZmllZCA9IHVuaWZpZWRBdE1ldGFMZXZlbDsgLy8vXG5cbiAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudEJTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7c3RhdGVtZW50QVN0cmluZ30nIHN0YXRlbWVudC5gKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRVbmlmaWVkO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuc3RyaW5nLCAvLy9cbiAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGZpbGVDb250ZXh0KSB7XG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gc3RyaW5nLCAvLy9cbiAgICAgICAgICBsZXhlciA9IGZpbGVDb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gZmlsZUNvbnRleHQuZ2V0UGFyc2VyKCksXG4gICAgICAgICAgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nKHN0YXRlbWVudFN0cmluZywgbGV4ZXIsIHBhcnNlciksXG4gICAgICAgICAgbm9kZSA9IHN0YXRlbWVudE5vZGUsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBuZXcgU3RhdGVtZW50KHN0cmluZywgbm9kZSk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnQgPSBudWxsO1xuXG4gICAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgIHN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSk7XG5cbiAgICAgIHN0YXRlbWVudCA9IG5ldyBTdGF0ZW1lbnQoc3RyaW5nLCBub2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21EZWZpbmVkQXNzZXJ0aW9uTm9kZShkZWZpbmVkQXNzZXJ0aW9uTm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVRdWVyeShkZWZpbmVkQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgbm9kZSA9IHN0YXRlbWVudE5vZGUsIC8vL1xuICAgICAgICAgIHN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcobm9kZSksXG4gICAgICAgICAgc3RhdGVtZW50ID0gbmV3IFN0YXRlbWVudChzdHJpbmcsIG5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICBzdHJpbmcgPSBsb2NhbENvbnRleHQubm9kZUFzU3RyaW5nKG5vZGUpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IG5ldyBTdGF0ZW1lbnQoc3RyaW5nLCBub2RlKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnQ7XG4gIH1cbn1cblxuT2JqZWN0LmFzc2lnbihTdGF0ZW1lbnQucHJvdG90eXBlLCB1bmlmeU1peGlucyk7XG5cbk9iamVjdC5hc3NpZ24oc2hpbSwge1xuICBTdGF0ZW1lbnRcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBTdGF0ZW1lbnQ7XG5cbiJdLCJuYW1lcyI6WyJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJzdWJzdGl0dXRpb25Ob2RlUXVlcnkiLCJzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5Iiwic3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZXNRdWVyeSIsIlN0YXRlbWVudCIsInN0cmluZyIsIm5vZGUiLCJnZXRTdHJpbmciLCJnZXROb2RlIiwiaXNFcXVhbFRvIiwic3RhdGVtZW50IiwibWF0Y2hlcyIsIm1hdGNoIiwiZXF1YWxUbyIsImlzVmFyaWFibGVDb250YWluZWQiLCJ2YXJpYWJsZSIsImxvY2FsQ29udGV4dCIsInZhcmlhYmxlQ29udGFpbmVkIiwidmFyaWFibGVTdHJpbmciLCJzdGF0ZW1lbnRTdHJpbmciLCJ0cmFjZSIsInZhcmlhYmxlTm9kZSIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzIiwic29tZSIsInN0YXRlbWVudFZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTm9kZU1hdGNoZXNTdGF0ZW1lbnRWYXJpYWJsZU5vZGUiLCJkZWJ1ZyIsImlzTWV0YXZhcmlhYmxlQ29udGFpbmVkIiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlQ29udGFpbmVkIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibWV0YXZhcmlhYmxlTm9kZSIsInN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVzIiwic3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzU3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSIsInZlcmlmeSIsImFzc2lnbm1lbnRzIiwic3RhdGVkIiwidmVyaWZpZWQiLCJ1bmlmaWVkIiwidW5pZnlNaXhpbnMiLCJ1bmlmeU1peGluIiwidmVyaWZ5TWl4aW5zIiwidmVyaWZ5TWl4aW4iLCJ2ZXJpZnlBdFRvcExldmVsIiwiZmlsZUNvbnRleHQiLCJ2ZXJpZmllZEF0VG9wTGV2ZWwiLCJzdGF0ZW1lbnRBc0NvbWJpbmF0b3JWZXJpZmllciIsInZlcmlmeVN0YXRlbWVudCIsInZlcmlmeUdpdmVuTWV0YVR5cGUiLCJtZXRhVHlwZSIsInZlcmlmaWVkR2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlU3RyaW5nIiwibWV0YVR5cGVOYW1lIiwiZ2V0TmFtZSIsIlNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSIsInVuaWZ5U3RhdGVtZW50Iiwic3Vic3RpdHV0aW9ucyIsInN0YXRlbWVudFVuaWZpZWQiLCJzdGF0ZW1lbnRBIiwic3RhdGVtZW50QiIsInN0YXRlbWVudEFTdHJpbmciLCJzdGF0ZW1lbnRCU3RyaW5nIiwic3RhdGVtZW50QU5vZGUiLCJzdGF0ZW1lbnRCTm9kZSIsIm5vZGVBIiwibm9kZUIiLCJmaWxlQ29udGV4dEEiLCJsb2NhbENvbnRleHRBIiwiTG9jYWxDb250ZXh0IiwiZnJvbUZpbGVDb250ZXh0IiwibG9jYWxDb250ZXh0QiIsInVuaWZpZWRBdE1ldGFMZXZlbCIsIm1ldGFMZXZlbFVuaWZpZXIiLCJ1bmlmeSIsInRvSlNPTiIsImpzb24iLCJmcm9tSlNPTiIsImxleGVyIiwiZ2V0TGV4ZXIiLCJwYXJzZXIiLCJnZXRQYXJzZXIiLCJzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyIsImZyb21TdGF0ZW1lbnROb2RlIiwibm9kZUFzU3RyaW5nIiwiZnJvbURlZmluZWRBc3NlcnRpb25Ob2RlIiwiZGVmaW5lZEFzc2VydGlvbk5vZGUiLCJmcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZSIsImNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJPYmplY3QiLCJhc3NpZ24iLCJwcm90b3R5cGUiLCJzaGltIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFnUUE7OztlQUFBOzs7MkRBOVBpQjs0REFDTzs2REFDQzs0REFDQTtnRUFDSTs0RUFDYTtxQkFFSjs2QkFDRztvQkFDUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVqRCxJQUFNQSxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMs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
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGF0ZW1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBzaGltIGZyb20gXCIuL3NoaW1cIjtcbmltcG9ydCB1bmlmeU1peGlucyBmcm9tIFwiLi9taXhpbnMvc3RhdGVtZW50L3VuaWZ5XCI7XG5pbXBvcnQgdmVyaWZ5TWl4aW5zIGZyb20gXCIuL21peGlucy9zdGF0ZW1lbnQvdmVyaWZ5XCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCBtZXRhTGV2ZWxVbmlmaWVyIGZyb20gXCIuL3VuaWZpZXIvbWV0YUxldmVsXCI7XG5pbXBvcnQgc3RhdGVtZW50QXNDb21iaW5hdG9yVmVyaWZpZXIgZnJvbSBcIi4vdmVyaWZpZXIvc3RhdGVtZW50QXNDb21iaW5hdG9yXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSwgbm9kZXNRdWVyeSB9IGZyb20gXCIuL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4vbWV0YVR5cGVOYW1lc1wiO1xuaW1wb3J0IHsgc3RhdGVtZW50VG9rZW5zRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zLCB1bnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyB9IGZyb20gXCIuL3V0aWxpdGllcy90b2tlbnNcIjtcbmltcG9ydCB7IHN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLFxuICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmdGcm9tU3RhdGVtZW50U3RyaW5nLFxuICAgICAgICAgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zIH0gZnJvbSBcIi4vdXRpbGl0aWVzL25vZGVcIjtcblxuY29uc3Qgc3RhdGVtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiLyovL3N0YXRlbWVudFwiKSxcbiAgICAgIHN0YXRlbWVudFZhcmlhYmxlTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvc3RhdGVtZW50Ly92YXJpYWJsZVwiKSxcbiAgICAgIHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGVzUXVlcnkgPSBub2Rlc1F1ZXJ5KFwiL3N0YXRlbWVudC8vbWV0YXZhcmlhYmxlXCIpO1xuXG5jbGFzcyBTdGF0ZW1lbnQge1xuICBjb25zdHJ1Y3RvcihzdHJpbmcsIG5vZGUsIHRva2Vucykge1xuICAgIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgdGhpcy50b2tlbnMgPSB0b2tlbnM7XG4gIH1cblxuICBnZXRTdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbiAgZ2V0VG9rZW5zKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VucztcbiAgfVxuXG4gIGlzRXF1YWxUbyhzdGF0ZW1lbnQpIHtcbiAgICBjb25zdCBub2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgICBtYXRjaGVzID0gdGhpcy5ub2RlLm1hdGNoKG5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSBtYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIGlzVmFyaWFibGVDb250YWluZWQodmFyaWFibGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCB2YXJpYWJsZUNvbnRhaW5lZDtcblxuICAgIGNvbnN0IHZhcmlhYmxlU3RyaW5nID0gdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgc3RhdGVtZW50U3RyaW5nID0gdGhpcy5zdHJpbmc7ICAvLy9cblxuICAgIGxvY2FsQ29udGV4dC50cmFjZShgSXMgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgY29udGFpbmVkIGluIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlLmdldE5vZGUoKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gdGhpcy5ub2RlLFxuICAgICAgICAgIHN0YXRlbWVudFZhcmlhYmxlTm9kZXMgPSBzdGF0ZW1lbnRWYXJpYWJsZU5vZGVzUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICB2YXJpYWJsZUNvbnRhaW5lZCA9IHN0YXRlbWVudFZhcmlhYmxlTm9kZXMuc29tZSgoc3RhdGVtZW50VmFyaWFibGVOb2RlKSA9PiB7ICAvLy9cbiAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZU1hdGNoZXNTdGF0ZW1lbnRWYXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGUubWF0Y2goc3RhdGVtZW50VmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKHZhcmlhYmxlTm9kZU1hdGNoZXNTdGF0ZW1lbnRWYXJpYWJsZU5vZGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodmFyaWFibGVDb250YWluZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgaXMgY29udGFpbmVkIGluIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhcmlhYmxlQ29udGFpbmVkO1xuICB9XG5cbiAgaXNNZXRhdmFyaWFibGVDb250YWluZWQobWV0YXZhcmlhYmxlLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgbWV0YXZhcmlhYmxlQ29udGFpbmVkO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHRoaXMuc3RyaW5nOyAgLy8vXG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYElzIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgY29udGFpbmVkIGluIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGUuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSB0aGlzLm5vZGUsXG4gICAgICAgICAgc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZXMgPSBzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2Rlc1F1ZXJ5KHN0YXRlbWVudE5vZGUpO1xuXG4gICAgbWV0YXZhcmlhYmxlQ29udGFpbmVkID0gc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZXMuc29tZSgoc3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZSkgPT4geyAgLy8vXG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlc1N0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlLm1hdGNoKHN0YXRlbWVudE1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXNTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZUNvbnRhaW5lZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi50aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlIGlzIGNvbnRhaW5lZCBpbiB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVDb250YWluZWQ7XG4gIH1cblxuICBtYXRjaFN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGVNYXRjaGVzID0gdGhpcy5ub2RlLm1hdGNoKHN0YXRlbWVudE5vZGUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudE5vZGVNYXRjaGVzO1xuICB9XG5cbiAgdW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gICAgbGV0IHN0YXRlbWVudFVuaWZpZWQ7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRBID0gdGhpcywgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudEIgPSBzdGF0ZW1lbnQsIC8vL1xuICAgICAgICAgIHN0YXRlbWVudEFTdHJpbmcgPSBzdGF0ZW1lbnRBLmdldFN0cmluZygpLFxuICAgICAgICAgIHN0YXRlbWVudEJTdHJpbmcgPSBzdGF0ZW1lbnRCLmdldFN0cmluZygpO1xuXG4gICAgbG9jYWxDb250ZXh0Qi50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudEJTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7c3RhdGVtZW50QVN0cmluZ30nIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3Qgc3RhdGVtZW50QU5vZGUgPSBzdGF0ZW1lbnRBLmdldE5vZGUoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRCTm9kZSA9IHN0YXRlbWVudEIuZ2V0Tm9kZSgpLFxuICAgICAgICAgIG5vZGVBID0gc3RhdGVtZW50QU5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVCID0gc3RhdGVtZW50Qk5vZGU7IC8vL1xuXG4gICAgbG9jYWxDb250ZXh0QSA9IExvY2FsQ29udGV4dC5mcm9tTG9jYWxDb250ZXh0QW5kVG9rZW5zKGxvY2FsQ29udGV4dEEsIHRoaXMudG9rZW5zKTtcblxuICAgIGNvbnN0IHVuaWZpZWRBdE1ldGFMZXZlbCA9IG1ldGFMZXZlbFVuaWZpZXIudW5pZnkobm9kZUEsIG5vZGVCLCBzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKTtcblxuICAgIHN0YXRlbWVudFVuaWZpZWQgPSB1bmlmaWVkQXRNZXRhTGV2ZWw7IC8vL1xuXG4gICAgbG9jYWxDb250ZXh0Qi5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50QlN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtzdGF0ZW1lbnRBU3RyaW5nfScgc3RhdGVtZW50LmApO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudFVuaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnkoYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkID0gZmFsc2U7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnQgPSB0aGlzLCAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudC4uLmApO1xuXG4gICAgaWYgKCF2ZXJpZmllZCkge1xuICAgICAgY29uc3QgdW5pZmllZCA9IHVuaWZ5TWl4aW5zLnNvbWUoKHVuaWZ5TWl4aW4pID0+IHtcbiAgICAgICAgY29uc3QgdW5pZmllZCA9IHVuaWZ5TWl4aW4oc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIGlmICh1bmlmaWVkKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICB2ZXJpZmllZCA9IHVuaWZpZWQ7IC8vL1xuICAgIH1cblxuICAgIGlmICghdmVyaWZpZWQpIHtcbiAgICAgIHZlcmlmaWVkID0gdmVyaWZ5TWl4aW5zLnNvbWUoKHZlcmlmeU1peGluKSA9PiB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVkID0gdmVyaWZ5TWl4aW4oc3RhdGVtZW50LCBhc3NpZ25tZW50cywgc3RhdGVkLCBsb2NhbENvbnRleHQpO1xuXG4gICAgICAgIGlmICh2ZXJpZmllZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlBdFRvcExldmVsKGZpbGVDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkQXRUb3BMZXZlbDtcblxuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSB0aGlzLm5vZGUsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGF0IHRvcCBsZXZlbC4uLmApO1xuXG4gICAgdmVyaWZpZWRBdFRvcExldmVsID0gc3RhdGVtZW50QXNDb21iaW5hdG9yVmVyaWZpZXIudmVyaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgIGlmICh2ZXJpZmllZEF0VG9wTGV2ZWwpIHtcbiAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IGF0IHRvcCBsZXZlbC5gLCBzdGF0ZW1lbnROb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyaWZpZWRBdFRvcExldmVsO1xuICB9XG5cbiAgdmVyaWZ5R2l2ZW5NZXRhVHlwZShtZXRhVHlwZSwgYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IHZlcmlmaWVkR2l2ZW5NZXRhVHlwZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgbWV0YVR5cGVTdHJpbmcgPSBtZXRhVHlwZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSB0aGlzLnN0cmluZzsgIC8vL1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCBnaXZlbiB0aGUgJyR7bWV0YVR5cGVTdHJpbmd9JyBtZXRhLXR5cGUuLi5gKTtcblxuICAgIGNvbnN0IG1ldGFUeXBlTmFtZSA9IG1ldGFUeXBlLmdldE5hbWUoKTtcblxuICAgIGlmIChtZXRhVHlwZU5hbWUgPT09IFNUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRSkge1xuICAgICAgY29uc3QgdmVyaWZpZWQgPSB0aGlzLnZlcmlmeShhc3NpZ25tZW50cywgc3RhdGVkLCBsb2NhbENvbnRleHQpXG5cbiAgICAgIHZlcmlmaWVkR2l2ZW5NZXRhVHlwZSA9IHZlcmlmaWVkOyAvLy9cbiAgICB9XG5cbiAgICBpZiAodmVyaWZpZWRHaXZlbk1ldGFUeXBlKSB7XG4gICAgICBsb2NhbENvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgZ2l2ZW4gdGhlICcke21ldGFUeXBlU3RyaW5nfScgbWV0YS10eXBlLmApO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJpZmllZEdpdmVuTWV0YVR5cGU7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5zdHJpbmcsIC8vL1xuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgZmlsZUNvbnRleHQpIHtcbiAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdHJpbmcsIC8vL1xuICAgICAgICAgIGxleGVyID0gZmlsZUNvbnRleHQuZ2V0TGV4ZXIoKSxcbiAgICAgICAgICBwYXJzZXIgPSBmaWxlQ29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IHVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nRnJvbVN0YXRlbWVudFN0cmluZyhzdGF0ZW1lbnRTdHJpbmcpLFxuICAgICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zID0gdW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnNGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcodW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmcsIGxleGVyKSxcbiAgICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnModW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMsIHBhcnNlciksXG4gICAgICAgICAgc3RhdGVtZW50VG9rZW5zID0gc3RhdGVtZW50VG9rZW5zRnJvbVVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zKHVucXVhbGlmaWVkU3RhdGVtZW50VG9rZW5zKSxcbiAgICAgICAgICBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudE5vZGUodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICBub2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICAgIHRva2VucyA9IHN0YXRlbWVudFRva2VucywgLy8vXG4gICAgICAgICAgc3RhdGVtZW50ID0gbmV3IFN0YXRlbWVudChzdHJpbmcsIG5vZGUsIHRva2Vucyk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGxldCBzdGF0ZW1lbnQgPSBudWxsO1xuXG4gICAgaWYgKHN0YXRlbWVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICAgIHRva2VucyA9IGxvY2FsQ29udGV4dC5ub2RlQXNUb2tlbnMobm9kZSksXG4gICAgICAgICAgICBzdHJpbmcgPSBsb2NhbENvbnRleHQudG9rZW5zQXNTdHJpbmcodG9rZW5zKTtcblxuICAgICAgc3RhdGVtZW50ID0gbmV3IFN0YXRlbWVudChzdHJpbmcsIG5vZGUsIHRva2Vucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRGVmaW5lZEFzc2VydGlvbk5vZGUoZGVmaW5lZEFzc2VydGlvbk5vZGUsIGxvY2FsQ29udGV4dCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkoZGVmaW5lZEFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICB0b2tlbnMgPSBsb2NhbENvbnRleHQubm9kZUFzVG9rZW5zKG5vZGUpLFxuICAgICAgICAgIHN0cmluZyA9IGxvY2FsQ29udGV4dC50b2tlbnNBc1N0cmluZyh0b2tlbnMpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IG5ldyBTdGF0ZW1lbnQoc3RyaW5nLCBub2RlLCB0b2tlbnMpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tQ29udGFpbmVkQXNzZXJ0aW9uTm9kZShjb250YWluZWRBc3NlcnRpb25Ob2RlLCBsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZVF1ZXJ5KGNvbnRhaW5lZEFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIG5vZGUgPSBzdGF0ZW1lbnROb2RlLCAvLy9cbiAgICAgICAgICB0b2tlbnMgPSBsb2NhbENvbnRleHQubm9kZUFzVG9rZW5zKG5vZGUpLFxuICAgICAgICAgIHN0cmluZyA9IGxvY2FsQ29udGV4dC50b2tlbnNBc1N0cmluZyh0b2tlbnMpLFxuICAgICAgICAgIHN0YXRlbWVudCA9IG5ldyBTdGF0ZW1lbnQoc3RyaW5nLCBub2RlLCB0b2tlbnMpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudDtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKFN0YXRlbWVudC5wcm90b3R5cGUsIHVuaWZ5TWl4aW5zKTtcblxuT2JqZWN0LmFzc2lnbihzaGltLCB7XG4gIFN0YXRlbWVudFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXRlbWVudDtcblxuIl0sIm5hbWVzIjpbInN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInN0YXRlbWVudFZhcmlhYmxlTm9kZXNRdWVyeSIsIm5vZGVzUXVlcnkiLCJzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2Rlc1F1ZXJ5IiwiU3RhdGVtZW50Iiwic3RyaW5nIiwibm9kZSIsInRva2VucyIsImdldFN0cmluZyIsImdldE5vZGUiLCJnZXRUb2tlbnMiLCJpc0VxdWFsVG8iLCJzdGF0ZW1lbnQiLCJtYXRjaGVzIiwibWF0Y2giLCJlcXVhbFRvIiwiaXNWYXJpYWJsZUNvbnRhaW5lZCIsInZhcmlhYmxlIiwibG9jYWxDb250ZXh0IiwidmFyaWFibGVDb250YWluZWQiLCJ2YXJpYWJsZVN0cmluZyIsInN0YXRlbWVudFN0cmluZyIsInRyYWNlIiwidmFyaWFibGVOb2RlIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFZhcmlhYmxlTm9kZXMiLCJzb21lIiwic3RhdGVtZW50VmFyaWFibGVOb2RlIiwidmFyaWFibGVOb2RlTWF0Y2hlc1N0YXRlbWVudFZhcmlhYmxlTm9kZSIsImRlYnVnIiwiaXNNZXRhdmFyaWFibGVDb250YWluZWQiLCJtZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVDb250YWluZWQiLCJtZXRhdmFyaWFibGVTdHJpbmciLCJtZXRhdmFyaWFibGVOb2RlIiwic3RhdGVtZW50TWV0YXZhcmlhYmxlTm9kZXMiLCJzdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXNTdGF0ZW1lbnRNZXRhdmFyaWFibGVOb2RlIiwibWF0Y2hTdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJ1bmlmeVN0YXRlbWVudCIsInN1YnN0aXR1dGlvbnMiLCJsb2NhbENvbnRleHRBIiwibG9jYWxDb250ZXh0QiIsInN0YXRlbWVudFVuaWZpZWQiLCJzdGF0ZW1lbnRBIiwic3RhdGVtZW50QiIsInN0YXRlbWVudEFTdHJpbmciLCJzdGF0ZW1lbnRCU3RyaW5nIiwic3RhdGVtZW50QU5vZGUiLCJzdGF0ZW1lbnRCTm9kZSIsIm5vZGVBIiwibm9kZUIiLCJMb2NhbENvbnRleHQiLCJmcm9tTG9jYWxDb250ZXh0QW5kVG9rZW5zIiwidW5pZmllZEF0TWV0YUxldmVsIiwibWV0YUxldmVsVW5pZmllciIsInVuaWZ5IiwidmVyaWZ5IiwiYXNzaWdubWVudHMiLCJzdGF0ZWQiLCJ2ZXJpZmllZCIsInVuaWZpZWQiLCJ1bmlmeU1peGlucyIsInVuaWZ5TWl4aW4iLCJ2ZXJpZnlNaXhpbnMiLCJ2ZXJpZnlNaXhpbiIsInZlcmlmeUF0VG9wTGV2ZWwiLCJmaWxlQ29udGV4dCIsInZlcmlmaWVkQXRUb3BMZXZlbCIsInN0YXRlbWVudEFzQ29tYmluYXRvclZlcmlmaWVyIiwidmVyaWZ5U3RhdGVtZW50IiwidmVyaWZ5R2l2ZW5NZXRhVHlwZSIsIm1ldGFUeXBlIiwidmVyaWZpZWRHaXZlbk1ldGFUeXBlIiwibWV0YVR5cGVTdHJpbmciLCJtZXRhVHlwZU5hbWUiLCJnZXROYW1lIiwiU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIiwidG9KU09OIiwianNvbiIsImZyb21KU09OIiwibGV4ZXIiLCJnZXRMZXhlciIsInBhcnNlciIsImdldFBhcnNlciIsInVucXVhbGlmaWVkU3RhdGVtZW50U3RyaW5nIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmdGcm9tU3RhdGVtZW50U3RyaW5nIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRUb2tlbnMiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZUZyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2VucyIsInN0YXRlbWVudFRva2VucyIsInN0YXRlbWVudFRva2Vuc0Zyb21VbnF1YWxpZmllZFN0YXRlbWVudFRva2VucyIsInN0YXRlbWVudE5vZGVGcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJub2RlQXNUb2tlbnMiLCJ0b2tlbnNBc1N0cmluZyIsImZyb21EZWZpbmVkQXNzZXJ0aW9uTm9kZSIsImRlZmluZWRBc3NlcnRpb25Ob2RlIiwiZnJvbUNvbnRhaW5lZEFzc2VydGlvbk5vZGUiLCJjb250YWluZWRBc3NlcnRpb25Ob2RlIiwiT2JqZWN0IiwiYXNzaWduIiwicHJvdG90eXBlIiwic2hpbSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBcVJBOzs7ZUFBQTs7OzJEQW5SaUI7NERBQ087NkRBQ0M7NERBQ0E7Z0VBQ0k7NEVBQ2E7cUJBRUo7NkJBQ0c7c0JBQytFO29CQUdqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RSxJQUFNQSxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUMsa0JBQy9CQyw4QkFBOEJDLElBQUFBLGlCQUFVLEVBQUMseUJBQ3pDQyxrQ0FBa0NELElBQUFBLGlCQUFVLEVBQUM7QUFFbkQsSUFBQSxBQUFNRSwwQkFBTjthQUFNQSxVQUNRQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTTtnQ0FENUJIO1FBRUYsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxNQUFNLEdBQUdBOztrQkFKWkg7O1lBT0pJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0gsTUFBTTtZQUNwQjs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxP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
|
package/lib/subproof.js
CHANGED
|
@@ -152,4 +152,4 @@ var Subproof = /*#__PURE__*/ function() {
|
|
|
152
152
|
return Subproof;
|
|
153
153
|
}();
|
|
154
154
|
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdWJwcm9vZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFN1cHBvc2l0aW9uIGZyb20gXCIuL3N1cHBvc2l0aW9uXCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCBTdWJEZXJpdmF0aW9uIGZyb20gXCIuL3N1YkRlcml2YXRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQge3N1YnByb29mTm9kZUFzU3VicHJvb2ZTdHJpbmcsIHN1YnByb29mU3RyaW5nRnJvbVN1YnByb29mTm9kZX0gZnJvbSBcIi4vdXRpbGl0aWVzL3N1YnByb29mXCI7XG5cbmNvbnN0IHN1cHBvc2l0aW9uTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvc3VicHJvb2Yvc3VwcG9zaXRpb25cIiksXG4gICAgICBzdWJEZXJpdmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnByb29mL3N1YkRlcml2YXRpb25cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnByb29mIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBzdXBwb3NpdGlvbnMsIHN1YkRlcml2YXRpb24pIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLnN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucztcbiAgICB0aGlzLnN1YkRlcml2YXRpb24gPSBzdWJEZXJpdmF0aW9uO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxuXG4gIGdldFN1cHBvc2l0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3NpdGlvbnM7XG4gIH1cblxuICBnZXRTdWJEZXJpdmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN1YkRlcml2YXRpb247XG4gIH1cblxuICBnZXRMYXN0UHJvb2ZTdGVwKCkgeyByZXR1cm4gdGhpcy5zdWJEZXJpdmF0aW9uLmdldExhc3RQcm9vZlN0ZXAoKTsgfVxuXG4gIGdldFN0YXRlbWVudHMoKSB7XG4gICAgY29uc3QgbGFzdFByb29mU3RlcCA9IHRoaXMuZ2V0TGFzdFByb29mU3RlcCgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50cyA9IHRoaXMuc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9zdWJwcm9vZi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFN1cHBvc2l0aW9uIGZyb20gXCIuL3N1cHBvc2l0aW9uXCI7XG5pbXBvcnQgTG9jYWxDb250ZXh0IGZyb20gXCIuL2NvbnRleHQvbG9jYWxcIjtcbmltcG9ydCBTdWJEZXJpdmF0aW9uIGZyb20gXCIuL3N1YkRlcml2YXRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5LCBub2Rlc1F1ZXJ5IH0gZnJvbSBcIi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQge3N1YnByb29mTm9kZUFzU3VicHJvb2ZTdHJpbmcsIHN1YnByb29mU3RyaW5nRnJvbVN1YnByb29mTm9kZX0gZnJvbSBcIi4vdXRpbGl0aWVzL3N1YnByb29mXCI7XG5cbmNvbnN0IHN1cHBvc2l0aW9uTm9kZXNRdWVyeSA9IG5vZGVzUXVlcnkoXCIvc3VicHJvb2Yvc3VwcG9zaXRpb25cIiksXG4gICAgICBzdWJEZXJpdmF0aW9uTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnByb29mL3N1YkRlcml2YXRpb25cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnByb29mIHtcbiAgY29uc3RydWN0b3Ioc3RyaW5nLCBzdXBwb3NpdGlvbnMsIHN1YkRlcml2YXRpb24pIHtcbiAgICB0aGlzLnN0cmluZyA9IHN0cmluZztcbiAgICB0aGlzLnN1cHBvc2l0aW9ucyA9IHN1cHBvc2l0aW9ucztcbiAgICB0aGlzLnN1YkRlcml2YXRpb24gPSBzdWJEZXJpdmF0aW9uO1xuICB9XG5cbiAgZ2V0U3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmluZztcbiAgfVxuXG4gIGdldE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZTtcbiAgfVxuXG4gIGdldFN1cHBvc2l0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBwb3NpdGlvbnM7XG4gIH1cblxuICBnZXRTdWJEZXJpdmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnN1YkRlcml2YXRpb247XG4gIH1cblxuICBnZXRMYXN0UHJvb2ZTdGVwKCkgeyByZXR1cm4gdGhpcy5zdWJEZXJpdmF0aW9uLmdldExhc3RQcm9vZlN0ZXAoKTsgfVxuXG4gIGdldFN0YXRlbWVudHMoKSB7XG4gICAgY29uc3QgbGFzdFByb29mU3RlcCA9IHRoaXMuZ2V0TGFzdFByb29mU3RlcCgpLFxuICAgICAgICAgIHN1cHBvc2l0aW9uU3RhdGVtZW50cyA9IHRoaXMuc3VwcG9zaXRpb25zLm1hcCgoc3VwcG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RhdGVtZW50ID0gc3VwcG9zaXRpb24uZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgICAgICAgIHJldHVybiBzdXBwb3NpdGlvblN0YXRlbWVudDtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBsYXN0UHJvb2ZTdGVwU3RhdGVtZW50ID0gbGFzdFByb29mU3RlcC5nZXRTdGF0ZW1lbnQoKSxcbiAgICAgICAgICBzdGF0ZW1lbnRzID0gW1xuICAgICAgICAgICAgLi4uc3VwcG9zaXRpb25TdGF0ZW1lbnRzLFxuICAgICAgICAgICAgbGFzdFByb29mU3RlcFN0YXRlbWVudFxuICAgICAgICAgIF07XG5cbiAgICByZXR1cm4gc3RhdGVtZW50cztcbiAgfVxuXG4gIHZlcmlmeShzdWJzdGl0dXRpb25zLCBsb2NhbENvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2ZWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgbG9jYWxDb250ZXh0ID0gTG9jYWxDb250ZXh0LmZyb21Mb2NhbENvbnRleHQobG9jYWxDb250ZXh0KTsgIC8vL1xuXG4gICAgY29uc3Qgc3VwcG9zaXRpb25zVmVyaWZpZWQgPSB0aGlzLnN1cHBvc2l0aW9ucy5ldmVyeSgoc3VwcG9zaXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHN1cHBvc2l0aW9uVmVyaWZpZWQgPSBzdXBwb3NpdGlvbi52ZXJpZnkobG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKHN1cHBvc2l0aW9uVmVyaWZpZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc3VwcG9zaXRpb25zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IHN1YkRlcml2YXRpb25WZXJpZmllZCA9IHRoaXMuc3ViRGVyaXZhdGlvbi52ZXJpZnkoc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0KTtcblxuICAgICAgaWYgKHN1YkRlcml2YXRpb25WZXJpZmllZCkge1xuICAgICAgICBzdWJwcm9vZlZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3VicHJvb2ZWZXJpZmllZDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3VicHJvb2ZOb2RlKHN1YnByb29mTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgICBsZXQgc3VicHJvb2YgPSBudWxsO1xuXG4gICAgaWYgKHN1YnByb29mTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3VicHJvb2ZTdHJpbmcgPSBzdWJwcm9vZlN0cmluZ0Zyb21TdWJwcm9vZk5vZGUoc3VicHJvb2ZOb2RlLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgICBzdXBwb3NpdGlvbk5vZGVzID0gc3VwcG9zaXRpb25Ob2Rlc1F1ZXJ5KHN1YnByb29mTm9kZSksXG4gICAgICAgICAgICBzdWJEZXJpdmF0aW9uTm9kZSA9IHN1YkRlcml2YXRpb25Ob2RlUXVlcnkoc3VicHJvb2ZOb2RlKSxcbiAgICAgICAgICAgIHN0cmluZyA9IHN1YnByb29mU3RyaW5nLCAgLy8vXG4gICAgICAgICAgICBzdXBwb3NpdGlvbnMgPSBzdXBwb3NpdGlvbk5vZGVzLm1hcCgoc3VwcG9zaXRpb25Ob2RlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbVN1cHBvc2l0aW9uTm9kZShzdXBwb3NpdGlvbk5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgICAgICAgICAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN1YkRlcml2YXRpb24gPSBTdWJEZXJpdmF0aW9uLmZyb21TdWJEZXJpdmF0aW9uTm9kZShzdWJEZXJpdmF0aW9uTm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgICBzdWJwcm9vZiA9IG5ldyBTdWJwcm9vZihzdHJpbmcsIHN1cHBvc2l0aW9ucywgc3ViRGVyaXZhdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnByb29mO1xuICB9XG59XG4iXSwibmFtZXMiOlsiU3VicHJvb2YiLCJzdXBwb3NpdGlvbk5vZGVzUXVlcnkiLCJub2Rlc1F1ZXJ5Iiwic3ViRGVyaXZhdGlvbk5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInN0cmluZyIsInN1cHBvc2l0aW9ucyIsInN1YkRlcml2YXRpb24iLCJnZXRTdHJpbmciLCJnZXROb2RlIiwibm9kZSIsImdldFN1cHBvc2l0aW9ucyIsImdldFN1YkRlcml2YXRpb24iLCJnZXRMYXN0UHJvb2ZTdGVwIiwiZ2V0U3RhdGVtZW50cyIsImxhc3RQcm9vZlN0ZXAiLCJzdXBwb3NpdGlvblN0YXRlbWVudHMiLCJtYXAiLCJzdXBwb3NpdGlvbiIsInN1cHBvc2l0aW9uU3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwibGFzdFByb29mU3RlcFN0YXRlbWVudCIsInN0YXRlbWVudHMiLCJ2ZXJpZnkiLCJzdWJzdGl0dXRpb25zIiwibG9jYWxDb250ZXh0Iiwic3VicHJvb2ZWZXJpZmllZCIsIkxvY2FsQ29udGV4dCIsImZyb21Mb2NhbENvbnRleHQiLCJzdXBwb3NpdGlvbnNWZXJpZmllZCIsImV2ZXJ5Iiwic3VwcG9zaXRpb25WZXJpZmllZCIsInN1YkRlcml2YXRpb25WZXJpZmllZCIsImZyb21TdWJwcm9vZk5vZGUiLCJzdWJwcm9vZk5vZGUiLCJmaWxlQ29udGV4dCIsInN1YnByb29mIiwic3VicHJvb2ZTdHJpbmciLCJzdWJwcm9vZlN0cmluZ0Zyb21TdWJwcm9vZk5vZGUiLCJzdXBwb3NpdGlvbk5vZGVzIiwic3ViRGVyaXZhdGlvbk5vZGUiLCJzdXBwb3NpdGlvbk5vZGUiLCJTdXBwb3NpdGlvbiIsImZyb21TdXBwb3NpdGlvbk5vZGUiLCJTdWJEZXJpdmF0aW9uIiwiZnJvbVN1YkRlcml2YXRpb25Ob2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQVlxQkE7OztrRUFWRzs0REFDQztvRUFDQztxQkFFWTt3QkFDcUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTNFLElBQU1DLHdCQUF3QkMsSUFBQUEsaUJBQVUsRUFBQywwQkFDbkNDLHlCQUF5QkMsSUFBQUEsZ0JBQVMsRUFBQztBQUUxQixJQUFBLEFBQU1KLHlCQUFOO2FBQU1BLFNBQ1BLLE1BQU0sRUFBRUMsWUFBWSxFQUFFQyxhQUFhO2dDQUQ1QlA7UUFFakIsSUFBSSxDQUFDSyxNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDQyxZQUFZLEdBQUdBO1FBQ3BCLElBQUksQ0FBQ0MsYUFBYSxHQUFHQTs7a0JBSkpQOztZQU9uQlEsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDSCxNQUFNO1lBQ3BCOzs7WUFFQUksS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDQyxJQUFJO1lBQ2xCOzs7WUFFQUMsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDTCxZQUFZO1lBQzFCOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDTCxhQUFhO1lBQzNCOzs7WUFFQU0sS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUFxQixPQUFPLElBQUksQ0FBQ04sYUFBYSxDQUFDTSxnQkFBZ0I7WUFBSTs7O1lBRW5FQyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsSUFBTUMsZ0JBQWdCLElBQUksQ0FBQ0YsZ0JBQWdCLElBQ3JDRyx3QkFBd0IsSUFBSSxDQUFDVixZQUFZLENBQUNXLEdBQUcsQ0FBQyxTQUFDQztvQkFDN0MsSUFBTUMsdUJBQXVCRCxZQUFZRSxZQUFZO29CQUVyRCxPQUFPRDtnQkFDVCxJQUNBRSx5QkFBeUJOLGNBQWNLLFlBQVksSUFDbkRFLGFBQWEsQUFDWCxxQkFBR04sOEJBRFE7b0JBRVhLO2lCQUNEO2dCQUVQLE9BQU9DO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEsU0FBQUEsT0FBT0MsYUFBYSxFQUFFQyxZQUFZO2dCQUNoQyxJQUFJQyxtQkFBbUI7Z0JBRXZCRCxlQUFlRSxjQUFZLENBQUNDLGdCQUFnQixDQUFDSCxlQUFnQixHQUFHO2dCQUVoRSxJQUFNSSx1QkFBdUIsSUFBSSxDQUFDdkIsWUFBWSxDQUFDd0IsS0FBSyxDQUFDLFNBQUNaO29CQUNwRCxJQUFNYSxzQkFBc0JiLFlBQVlLLE1BQU0sQ0FBQ0U7b0JBRS9DLElBQUlNLHFCQUFxQjt3QkFDdkIsT0FBTztvQkFDVDtnQkFDRjtnQkFFQSxJQUFJRixzQkFBc0I7b0JBQ3hCLElBQU1HLHdCQUF3QixJQUFJLENBQUN6QixhQUFhLENBQUNnQixNQUFNLENBQUNDLGVBQWVDO29CQUV2RSxJQUFJTyx1QkFBdUI7d0JBQ3pCTixtQkFBbUI7b0JBQ3JCO2dCQUNGO2dCQUVBLE9BQU9BO1lBQ1Q7Ozs7WUFFT08sS0FBQUE7bUJBQVAsU0FBT0EsaUJBQWlCQyxZQUFZLEVBQUVDLFdBQVc7Z0JBQy9DLElBQUlDLFdBQVc7Z0JBRWYsSUFBSUYsaUJBQWlCLE1BQU07b0JBQ3pCLElBQU1HLGlCQUFpQkMsSUFBQUEsd0NBQThCLEVBQUNKLGNBQWNDLGNBQzlESSxtQkFBbUJ0QyxzQkFBc0JpQyxlQUN6Q00sb0JBQW9CckMsdUJBQXVCK0IsZUFDM0M3QixTQUFTZ0MsZ0JBQ1QvQixlQUFlaUMsaUJBQWlCdEIsR0FBRyxDQUFDLFNBQUN3Qjt3QkFDbkMsSUFBTXZCLGNBQWN3QixvQkFBVyxDQUFDQyxtQkFBbUIsQ0FBQ0YsaUJBQWlCTjt3QkFFckUsT0FBT2pCO29CQUNULElBQ0FYLGdCQUFnQnFDLHNCQUFhLENBQUNDLHFCQUFxQixDQUFDTCxtQkFBbUJMO29CQUU3RUMsV0FBVyxJQWhGSXBDLFNBZ0ZTSyxRQUFRQyxjQUFjQztnQkFDaEQ7Z0JBRUEsT0FBTzZCO1lBQ1Q7OztXQXBGbUJwQyJ9
|
|
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return FrameForMetavariableSubstitution;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
+
var _shim = /*#__PURE__*/ _interop_require_default(require("../shim"));
|
|
11
12
|
var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
|
|
12
13
|
var _query = require("../utilities/query");
|
|
13
14
|
function _assert_this_initialized(self) {
|
|
@@ -88,10 +89,10 @@ function _is_native_reflect_construct() {
|
|
|
88
89
|
return !!result;
|
|
89
90
|
})();
|
|
90
91
|
}
|
|
91
|
-
var substitutionFrameNodeQuery = (0, _query.nodeQuery)("/substitution/frame!"), frameMetavariableNodeQuery = (0, _query.nodeQuery)("/frame/metavariable!"), substitutionMetavariableNodeQuery = (0, _query.nodeQuery)("/substitution/metavariable!");
|
|
92
|
+
var substitutionNodeQuery = (0, _query.nodeQuery)("/statement/substitution"), substitutionFrameNodeQuery = (0, _query.nodeQuery)("/substitution/frame!"), frameMetavariableNodeQuery = (0, _query.nodeQuery)("/frame/metavariable!"), substitutionMetavariableNodeQuery = (0, _query.nodeQuery)("/substitution/metavariable!");
|
|
92
93
|
var FrameForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
|
|
93
94
|
_inherits(FrameForMetavariableSubstitution, Substitution);
|
|
94
|
-
function FrameForMetavariableSubstitution(string, frameNode, metavariableNode) {
|
|
95
|
+
function FrameForMetavariableSubstitution(string, frameNode, metavariableNode, substitutionNode) {
|
|
95
96
|
_class_call_check(this, FrameForMetavariableSubstitution);
|
|
96
97
|
var _this;
|
|
97
98
|
_this = _call_super(this, FrameForMetavariableSubstitution, [
|
|
@@ -99,6 +100,7 @@ var FrameForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
|
|
|
99
100
|
]);
|
|
100
101
|
_this.frameNode = frameNode;
|
|
101
102
|
_this.metavariableNode = metavariableNode;
|
|
103
|
+
_this.substitutionNode = substitutionNode;
|
|
102
104
|
return _this;
|
|
103
105
|
}
|
|
104
106
|
_create_class(FrameForMetavariableSubstitution, [
|
|
@@ -115,10 +117,9 @@ var FrameForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
|
|
|
115
117
|
}
|
|
116
118
|
},
|
|
117
119
|
{
|
|
118
|
-
key: "
|
|
119
|
-
value: function
|
|
120
|
-
|
|
121
|
-
return node;
|
|
120
|
+
key: "getSubstitutionNode",
|
|
121
|
+
value: function getSubstitutionNode() {
|
|
122
|
+
return this.substitutionNode;
|
|
122
123
|
}
|
|
123
124
|
},
|
|
124
125
|
{
|
|
@@ -127,7 +128,7 @@ var FrameForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
|
|
|
127
128
|
var transformedSubstitution = null;
|
|
128
129
|
var transformedFrameNode = transformFrameNode(this.frameNode, substitutions), transformedMetavariableNode = transformMetavariableNode(this.metavariableNode, substitutions);
|
|
129
130
|
if (transformedFrameNode !== null && transformedMetavariableNode !== null) {
|
|
130
|
-
var frameNode = transformedFrameNode, metavariableNode = transformedMetavariableNode, frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(frameNode, metavariableNode);
|
|
131
|
+
var string = null, frameNode = transformedFrameNode, metavariableNode = transformedMetavariableNode, substitutionNode = null, frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(string, frameNode, metavariableNode, substitutionNode);
|
|
131
132
|
transformedSubstitution = frameForMetavariableSubstitution; ///
|
|
132
133
|
}
|
|
133
134
|
return transformedSubstitution;
|
|
@@ -136,7 +137,12 @@ var FrameForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
|
|
|
136
137
|
{
|
|
137
138
|
key: "isEqualTo",
|
|
138
139
|
value: function isEqualTo(substitution) {
|
|
139
|
-
var
|
|
140
|
+
var equalTo = false;
|
|
141
|
+
var frameNode = substitution.getFrameNode(), metavariableNode = substitution.getMetavariableNode();
|
|
142
|
+
if (frameNode !== null && metavariableNode !== null) {
|
|
143
|
+
var frameNodeMatches = this.matchFrameNode(frameNode), metavariableNodeMatches = this.matchMetavariableNode(metavariableNode);
|
|
144
|
+
equalTo = frameNodeMatches && metavariableNodeMatches;
|
|
145
|
+
}
|
|
140
146
|
return equalTo;
|
|
141
147
|
}
|
|
142
148
|
},
|
|
@@ -153,25 +159,42 @@ var FrameForMetavariableSubstitution = /*#__PURE__*/ function(Substitution) {
|
|
|
153
159
|
var metavariableNodeMatches = this.metavariableNode.match(metavariableNode);
|
|
154
160
|
return metavariableNodeMatches;
|
|
155
161
|
}
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
key: "matchSubstitutionNode",
|
|
165
|
+
value: function matchSubstitutionNode(substitutionNode) {
|
|
166
|
+
var substitutionNodeMatches = this.substitutionNode.match(substitutionNode);
|
|
167
|
+
return substitutionNodeMatches;
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
key: "matchMetavariableNodeAndSubstitutionNode",
|
|
172
|
+
value: function matchMetavariableNodeAndSubstitutionNode(metavariableNode, substitutionNode) {
|
|
173
|
+
var metavariableNodeMatches = this.matchMetavariableNode(metavariableNode), substitutionNodeMatches = this.matchSubstitutionNode(substitutionNode), metavariableNodeAndSubstitutionNodeMatches = metavariableNodeMatches && substitutionNodeMatches;
|
|
174
|
+
return metavariableNodeAndSubstitutionNodeMatches;
|
|
175
|
+
}
|
|
156
176
|
}
|
|
157
177
|
], [
|
|
158
178
|
{
|
|
159
|
-
key: "
|
|
160
|
-
value: function
|
|
179
|
+
key: "fromStatementNode",
|
|
180
|
+
value: function fromStatementNode(statementNode, localContext) {
|
|
161
181
|
var frameForMetavariableSubstitution = null;
|
|
162
|
-
var substitutionNode =
|
|
163
|
-
if (
|
|
164
|
-
var
|
|
165
|
-
|
|
182
|
+
var substitutionNode = substitutionNodeQuery(statementNode);
|
|
183
|
+
if (substitutionNode !== null) {
|
|
184
|
+
var substitutionFrameNode = substitutionFrameNodeQuery(substitutionNode);
|
|
185
|
+
if (substitutionFrameNode !== null) {
|
|
186
|
+
var Frame = _shim.default.Frame, Metavariable = _shim.default.Metavariable, substitutionMetavariableNode = substitutionMetavariableNodeQuery(substitutionNode), metavariableNode = substitutionMetavariableNode, frameNode = substitutionFrameNode, frame = Frame.fromTermNode(frameNode, localContext), variable = Metavariable.fromMetavariableNode(metavariableNode, localContext), string = stringFromFrameAndMetavariable(frame, variable, localContext);
|
|
187
|
+
frameForMetavariableSubstitution = new FrameForMetavariableSubstitution(string, frameNode, metavariableNode, substitutionNode);
|
|
188
|
+
}
|
|
166
189
|
}
|
|
167
190
|
return frameForMetavariableSubstitution;
|
|
168
191
|
}
|
|
169
192
|
},
|
|
170
193
|
{
|
|
171
|
-
key: "
|
|
172
|
-
value: function
|
|
173
|
-
var string =
|
|
174
|
-
return
|
|
194
|
+
key: "fromFrameAndMetavariable",
|
|
195
|
+
value: function fromFrameAndMetavariable(frame, metavariable, localContext) {
|
|
196
|
+
var string = stringFromFrameAndMetavariable(frame, metavariable, localContext), frameNode = frame.getNode(), metavariableNode = metavariable.getNode(), substitutionNode = null, statementForMetavariableSubstitution = new FrameForMetavariableSubstitution(string, frameNode, metavariableNode, substitutionNode);
|
|
197
|
+
return statementForMetavariableSubstitution;
|
|
175
198
|
}
|
|
176
199
|
}
|
|
177
200
|
]);
|
|
@@ -207,9 +230,9 @@ function transformMetavariableNode(metavariableNode, substitutions) {
|
|
|
207
230
|
});
|
|
208
231
|
return transformedMetavariableNode;
|
|
209
232
|
}
|
|
210
|
-
function
|
|
211
|
-
var
|
|
233
|
+
function stringFromFrameAndMetavariable(frame, metavariable, localContext) {
|
|
234
|
+
var frameNode = frame.getNode(), frameString = localContext.nodeAsString(frameNode), metavariableString = metavariable.getString(), string = "[[".concat(frameString, "] for [").concat(metavariableString, "]]");
|
|
212
235
|
return string;
|
|
213
236
|
}
|
|
214
237
|
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vZnJhbWVGb3JNZXRhdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBTdWJzdGl0dXRpb24gZnJvbSBcIi4uL3N1YnN0aXR1dGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHN1YnN0aXR1dGlvbkZyYW1lTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnN0aXR1dGlvbi9mcmFtZSFcIiksXG4gICAgICBmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9mcmFtZS9tZXRhdmFyaWFibGUhXCIpLFxuICAgICAgc3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnN0aXR1dGlvbi9tZXRhdmFyaWFibGUhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBleHRlbmRzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgZnJhbWVOb2RlLCBtZXRhdmFyaWFibGVOb2RlKSB7XG4gICAgc3VwZXIoc3RyaW5nKTtcblxuICAgIHRoaXMuZnJhbWVOb2RlID0gZnJhbWVOb2RlO1xuICAgIHRoaXMubWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBnZXRGcmFtZU5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVOb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRhdmFyaWFibGVOb2RlO1xuICB9XG5cbiAgZ2V0Tm9kZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5mcmFtZU5vZGU7ICAvLy9cblxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgdHJhbnNmb3JtZWQoc3Vic3RpdHV0aW9ucykge1xuICAgIGxldCB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZEZyYW1lTm9kZSA9IHRyYW5zZm9ybUZyYW1lTm9kZSh0aGlzLmZyYW1lTm9kZSwgc3Vic3RpdHV0aW9ucyksXG4gICAgICAgICAgdHJhbnNmb3JtZWRNZXRhdmFyaWFibGVOb2RlID0gdHJhbnNmb3JtTWV0YXZhcmlhYmxlTm9kZSh0aGlzLm1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMpO1xuXG4gICAgaWYgKCh0cmFuc2Zvcm1lZEZyYW1lTm9kZSAhPT0gbnVsbCkgJiYgKHRyYW5zZm9ybWVkTWV0YXZhcmlhYmxlTm9kZSAhPT0gbnVsbCkpIHtcbiAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHRyYW5zZm9ybWVkRnJhbWVOb2RlLCAvLy9cbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSB0cmFuc2Zvcm1lZE1ldGF2YXJpYWJsZU5vZGUsIC8vL1xuICAgICAgICAgICAgZnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgRnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24oZnJhbWVOb2RlLCBtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgdHJhbnNmb3JtZWRTdWJzdGl0dXRpb24gPSBmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzdWJzdGl0dXRpb24pIHtcbiAgICBjb25zdCBmcmFtZU5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0RnJhbWVOb2RlKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHN1YnN0aXR1dGlvbi5nZXRNZXRhdmFyaWFibGVOb2RlKCksXG4gICAgICAgICAgZnJhbWVOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hGcmFtZU5vZGUoZnJhbWVOb2RlKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIGVxdWFsVG8gPSAoZnJhbWVOb2RlTWF0Y2hlcyAmJiBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyk7XG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoRnJhbWVOb2RlKGZyYW1lTm9kZSkge1xuICAgIGNvbnN0IGZyYW1lTm9kZU1hdGNoZXMgPSB0aGlzLmZyYW1lTm9kZS5tYXRjaChmcmFtZU5vZGUpO1xuXG4gICAgcmV0dXJuIGZyYW1lTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5tZXRhdmFyaWFibGVOb2RlLm1hdGNoKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdWJzdGl0dXRpb24oc3Vic3RpdHV0aW9uLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSB7XG4gICAgbGV0IGZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbkZyYW1lTm9kZSA9IHN1YnN0aXR1dGlvbkZyYW1lTm9kZVF1ZXJ5KHN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgaWYgKHN1YnN0aXR1dGlvbkZyYW1lTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlTm9kZSA9IHN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBzdWJzdGl0dXRpb25NZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgICAgICBmcmFtZU5vZGUgPSBzdWJzdGl0dXRpb25GcmFtZU5vZGUsICAvLy9cbiAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZ0Zyb21GcmFtZU5vZGVBbmRNZXRhdmFyaWFibGVOb2RlKGZyYW1lTm9kZSwgbWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qik7XG5cbiAgICAgICAgZnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBuZXcgRnJhbWVGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24oc3RyaW5nLCBmcmFtZU5vZGUsIG1ldGF2YXJpYWJsZU5vZGUpO1xuICAgIH1cblxuICAgIHJldHVybiBmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tRnJhbWVOb2RlQW5kTWV0YXZhcmlhYmxlTm9kZShmcmFtZU5vZGUsIG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgICBjb25zdCBzdHJpbmcgPSBzdHJpbmdGcm9tRnJhbWVOb2RlQW5kTWV0YXZhcmlhYmxlTm9kZShmcmFtZU5vZGUsIG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpLFxuICAgICAgICAgIGZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbmV3IEZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKHN0cmluZywgZnJhbWVOb2RlLCBtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1GcmFtZU5vZGUoZnJhbWVOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGxldCB0cmFuc2Zvcm1lZEZyYW1lTm9kZSA9IG51bGw7XG5cbiAgY29uc3QgZnJhbWVNZXRhdmFyaWFibGVOb2RlID0gZnJhbWVNZXRhdmFyaWFibGVOb2RlUXVlcnkoZnJhbWVOb2RlKTtcblxuICBpZiAoZnJhbWVNZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZSA9IGZyYW1lTWV0YXZhcmlhYmxlTm9kZTsgIC8vL1xuXG4gICAgc3Vic3RpdHV0aW9ucy5zb21lU3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gc3Vic3RpdHV0aW9uLm1hdGNoTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHN1YnN0aXR1dGlvbi5nZXRGcmFtZU5vZGUoKTtcblxuICAgICAgICB0cmFuc2Zvcm1lZEZyYW1lTm9kZSA9IGZyYW1lTm9kZTsgLy8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkRnJhbWVOb2RlO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbnMpIHtcbiAgbGV0IHRyYW5zZm9ybWVkTWV0YXZhcmlhYmxlTm9kZSA9IG51bGw7XG5cbiAgc3Vic3RpdHV0aW9ucy5zb21lU3Vic3RpdHV0aW9uKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHN1YnN0aXR1dGlvbi5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICBpZiAobWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMpIHtcbiAgICAgIGNvbnN0IGZyYW1lTm9kZSA9IHN1YnN0aXR1dGlvbi5nZXRGcmFtZU5vZGUoKSxcbiAgICAgICAgICAgIGZyYW1lTWV0YXZhcmlhYmxlTm9kZSA9IGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KGZyYW1lTm9kZSk7XG5cbiAgICAgIGlmIChmcmFtZU1ldGF2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgdHJhbnNmb3JtZWRNZXRhdmFyaWFibGVOb2RlID0gZnJhbWVNZXRhdmFyaWFibGVOb2RlOyAgLy8vXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdHJhbnNmb3JtZWRNZXRhdmFyaWFibGVOb2RlO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdGcm9tRnJhbWVOb2RlQW5kTWV0YXZhcmlhYmxlTm9kZShmcmFtZU5vZGUsIG1ldGF2YXJpYWJsZU5vZGUsIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpIHtcbiAgY29uc3QgZnJhbWVOb2RlQiA9IGZyYW1lTm9kZSwgIC8vL1xuICAgICAgICBmcmFtZVN0cmluZ0IgPSBsb2NhbENvbnRleHRCLm5vZGVBc1N0cmluZyhmcmFtZU5vZGVCKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlTm9kZUEgPSBtZXRhdmFyaWFibGVOb2RlLCAgLy8vXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZ0EgPSBsb2NhbENvbnRleHRBLm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlQSksXG4gICAgICAgIHN0cmluZyA9IGBbJHtmcmFtZVN0cmluZ0J9IGZvciAke21ldGF2YXJpYWJsZVN0cmluZ0F9XWA7XG5cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuIl0sIm5hbWVzIjpbIkZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uRnJhbWVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInN0cmluZyIsImZyYW1lTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJnZXRGcmFtZU5vZGUiLCJnZXRNZXRhdmFyaWFibGVOb2RlIiwiZ2V0Tm9kZSIsIm5vZGUiLCJ0cmFuc2Zvcm1lZCIsInN1YnN0aXR1dGlvbnMiLCJ0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiIsInRyYW5zZm9ybWVkRnJhbWVOb2RlIiwidHJhbnNmb3JtRnJhbWVOb2RlIiwidHJhbnNmb3JtZWRNZXRhdmFyaWFibGVOb2RlIiwidHJhbnNmb3JtTWV0YXZhcmlhYmxlTm9kZSIsImZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiaXNFcXVhbFRvIiwic3Vic3RpdHV0aW9uIiwiZnJhbWVOb2RlTWF0Y2hlcyIsIm1hdGNoRnJhbWVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMiLCJtYXRjaE1ldGF2YXJpYWJsZU5vZGUiLCJlcXVhbFRvIiwibWF0Y2giLCJmcm9tU3Vic3RpdHV0aW9uIiwibG9jYWxDb250ZXh0QSIsImxvY2FsQ29udGV4dEIiLCJzdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uRnJhbWVOb2RlIiwic3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlTm9kZSIsInN0cmluZ0Zyb21GcmFtZU5vZGVBbmRNZXRhdmFyaWFibGVOb2RlIiwiZnJvbUZyYW1lTm9kZUFuZE1ldGF2YXJpYWJsZU5vZGUiLCJTdWJzdGl0dXRpb24iLCJmcmFtZU1ldGF2YXJpYWJsZU5vZGUiLCJzb21lU3Vic3RpdHV0aW9uIiwiZnJhbWVOb2RlQiIsImZyYW1lU3RyaW5nQiIsIm5vZGVBc1N0cmluZyIsIm1ldGF2YXJpYWJsZU5vZGVBIiwibWV0YXZhcmlhYmxlU3RyaW5nQSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFVcUJBOzs7bUVBUkk7cUJBRUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsSUFB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
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vZnJhbWVGb3JNZXRhdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBzaGltIGZyb20gXCIuLi9zaGltXCI7XG5pbXBvcnQgU3Vic3RpdHV0aW9uIGZyb20gXCIuLi9zdWJzdGl0dXRpb25cIjtcblxuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCBzdWJzdGl0dXRpb25Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3RhdGVtZW50L3N1YnN0aXR1dGlvblwiKSxcbiAgICAgIHN1YnN0aXR1dGlvbkZyYW1lTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnN0aXR1dGlvbi9mcmFtZSFcIiksXG4gICAgICBmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9mcmFtZS9tZXRhdmFyaWFibGUhXCIpLFxuICAgICAgc3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3N1YnN0aXR1dGlvbi9tZXRhdmFyaWFibGUhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiBleHRlbmRzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgZnJhbWVOb2RlLCBtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgc3VwZXIoc3RyaW5nKTtcblxuICAgIHRoaXMuZnJhbWVOb2RlID0gZnJhbWVOb2RlO1xuICAgIHRoaXMubWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZU5vZGU7XG4gICAgdGhpcy5zdWJzdGl0dXRpb25Ob2RlID0gc3Vic3RpdHV0aW9uTm9kZTtcbiAgfVxuXG4gIGdldEZyYW1lTm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZU5vZGU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGVOb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldGF2YXJpYWJsZU5vZGU7XG4gIH1cblxuICBnZXRTdWJzdGl0dXRpb25Ob2RlKCkge1xuICAgIHJldHVybiB0aGlzLnN1YnN0aXR1dGlvbk5vZGU7XG4gIH1cblxuICB0cmFuc2Zvcm1lZChzdWJzdGl0dXRpb25zKSB7XG4gICAgbGV0IHRyYW5zZm9ybWVkU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHRyYW5zZm9ybWVkRnJhbWVOb2RlID0gdHJhbnNmb3JtRnJhbWVOb2RlKHRoaXMuZnJhbWVOb2RlLCBzdWJzdGl0dXRpb25zKSxcbiAgICAgICAgICB0cmFuc2Zvcm1lZE1ldGF2YXJpYWJsZU5vZGUgPSB0cmFuc2Zvcm1NZXRhdmFyaWFibGVOb2RlKHRoaXMubWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9ucyk7XG5cbiAgICBpZiAoKHRyYW5zZm9ybWVkRnJhbWVOb2RlICE9PSBudWxsKSAmJiAodHJhbnNmb3JtZWRNZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSkge1xuICAgICAgY29uc3Qgc3RyaW5nID0gbnVsbCwgIC8vL1xuICAgICAgICAgICAgZnJhbWVOb2RlID0gdHJhbnNmb3JtZWRGcmFtZU5vZGUsIC8vL1xuICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHRyYW5zZm9ybWVkTWV0YXZhcmlhYmxlTm9kZSwgLy8vXG4gICAgICAgICAgICBzdWJzdGl0dXRpb25Ob2RlID0gbnVsbCxcbiAgICAgICAgICAgIGZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbmV3IEZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKHN0cmluZywgZnJhbWVOb2RlLCBtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgICAgdHJhbnNmb3JtZWRTdWJzdGl0dXRpb24gPSBmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbjtcbiAgfVxuXG4gIGlzRXF1YWxUbyhzdWJzdGl0dXRpb24pIHtcbiAgICBsZXQgZXF1YWxUbyA9IGZhbHNlO1xuXG4gICAgY29uc3QgZnJhbWVOb2RlID0gc3Vic3RpdHV0aW9uLmdldEZyYW1lTm9kZSgpLFxuICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0TWV0YXZhcmlhYmxlTm9kZSgpO1xuXG4gICAgaWYgKChmcmFtZU5vZGUgIT09IG51bGwpICYmIChtZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSkge1xuICAgICAgY29uc3QgZnJhbWVOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hGcmFtZU5vZGUoZnJhbWVOb2RlKSxcbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIGVxdWFsVG8gPSAoZnJhbWVOb2RlTWF0Y2hlcyAmJiBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaEZyYW1lTm9kZShmcmFtZU5vZGUpIHtcbiAgICBjb25zdCBmcmFtZU5vZGVNYXRjaGVzID0gdGhpcy5mcmFtZU5vZGUubWF0Y2goZnJhbWVOb2RlKTtcblxuICAgIHJldHVybiBmcmFtZU5vZGVNYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoaXMubWV0YXZhcmlhYmxlTm9kZS5tYXRjaChtZXRhdmFyaWFibGVOb2RlKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoU3Vic3RpdHV0aW9uTm9kZShzdWJzdGl0dXRpb25Ob2RlKSB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMgPSB0aGlzLnN1YnN0aXR1dGlvbk5vZGUubWF0Y2goc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICByZXR1cm4gc3Vic3RpdHV0aW9uTm9kZU1hdGNoZXM7XG4gIH1cblxuICBtYXRjaE1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlKG1ldGF2YXJpYWJsZU5vZGUsIHN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaFN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzID0gKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzICYmIHN1YnN0aXR1dGlvbk5vZGVNYXRjaGVzKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZU1hdGNoZXM7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgbG9jYWxDb250ZXh0KSB7XG4gICAgbGV0IGZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IHN1YnN0aXR1dGlvbk5vZGUgPSBzdWJzdGl0dXRpb25Ob2RlUXVlcnkoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBpZiAoc3Vic3RpdHV0aW9uTm9kZSAhPT0gbnVsbCkge1xuICAgICAgbGV0IHN1YnN0aXR1dGlvbkZyYW1lTm9kZSA9IHN1YnN0aXR1dGlvbkZyYW1lTm9kZVF1ZXJ5KHN1YnN0aXR1dGlvbk5vZGUpO1xuXG4gICAgICBpZiAoc3Vic3RpdHV0aW9uRnJhbWVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHsgRnJhbWUsIE1ldGF2YXJpYWJsZSB9ID0gc2hpbSxcbiAgICAgICAgICAgICAgc3Vic3RpdHV0aW9uTWV0YXZhcmlhYmxlTm9kZSA9IHN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeShzdWJzdGl0dXRpb25Ob2RlKSxcbiAgICAgICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IHN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgZnJhbWVOb2RlID0gc3Vic3RpdHV0aW9uRnJhbWVOb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGZyYW1lID0gRnJhbWUuZnJvbVRlcm1Ob2RlKGZyYW1lTm9kZSwgbG9jYWxDb250ZXh0KSxcbiAgICAgICAgICAgICAgdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxDb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCB2YXJpYWJsZSwgbG9jYWxDb250ZXh0KTtcblxuICAgICAgICBmcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiA9IG5ldyBGcmFtZUZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbihzdHJpbmcsIGZyYW1lTm9kZSwgbWV0YXZhcmlhYmxlTm9kZSwgc3Vic3RpdHV0aW9uTm9kZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uO1xuICB9XG5cbiAgc3RhdGljIGZyb21GcmFtZUFuZE1ldGF2YXJpYWJsZShmcmFtZSwgbWV0YXZhcmlhYmxlLCBsb2NhbENvbnRleHQpIHtcbiAgICBjb25zdCBzdHJpbmcgPSBzdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUoZnJhbWUsIG1ldGF2YXJpYWJsZSwgbG9jYWxDb250ZXh0KSxcbiAgICAgICAgICBmcmFtZU5vZGUgPSBmcmFtZS5nZXROb2RlKCksXG4gICAgICAgICAgbWV0YXZhcmlhYmxlTm9kZSA9IG1ldGF2YXJpYWJsZS5nZXROb2RlKCksXG4gICAgICAgICAgc3Vic3RpdHV0aW9uTm9kZSA9IG51bGwsXG4gICAgICAgICAgc3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uID0gbmV3IEZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uKHN0cmluZywgZnJhbWVOb2RlLCBtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtRnJhbWVOb2RlKGZyYW1lTm9kZSwgc3Vic3RpdHV0aW9ucykge1xuICBsZXQgdHJhbnNmb3JtZWRGcmFtZU5vZGUgPSBudWxsO1xuXG4gIGNvbnN0IGZyYW1lTWV0YXZhcmlhYmxlTm9kZSA9IGZyYW1lTWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KGZyYW1lTm9kZSk7XG5cbiAgaWYgKGZyYW1lTWV0YXZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5vZGUgPSBmcmFtZU1ldGF2YXJpYWJsZU5vZGU7ICAvLy9cblxuICAgIHN1YnN0aXR1dGlvbnMuc29tZVN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcyA9IHN1YnN0aXR1dGlvbi5tYXRjaE1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVOb2RlTWF0Y2hlcykge1xuICAgICAgICBjb25zdCBmcmFtZU5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0RnJhbWVOb2RlKCk7XG5cbiAgICAgICAgdHJhbnNmb3JtZWRGcmFtZU5vZGUgPSBmcmFtZU5vZGU7IC8vLy9cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0cmFuc2Zvcm1lZEZyYW1lTm9kZTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25zKSB7XG4gIGxldCB0cmFuc2Zvcm1lZE1ldGF2YXJpYWJsZU5vZGUgPSBudWxsO1xuXG4gIHN1YnN0aXR1dGlvbnMuc29tZVN1YnN0aXR1dGlvbigoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3QgbWV0YXZhcmlhYmxlTm9kZU1hdGNoZXMgPSBzdWJzdGl0dXRpb24ubWF0Y2hNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzKSB7XG4gICAgICBjb25zdCBmcmFtZU5vZGUgPSBzdWJzdGl0dXRpb24uZ2V0RnJhbWVOb2RlKCksXG4gICAgICAgICAgICBmcmFtZU1ldGF2YXJpYWJsZU5vZGUgPSBmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeShmcmFtZU5vZGUpO1xuXG4gICAgICBpZiAoZnJhbWVNZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIHRyYW5zZm9ybWVkTWV0YXZhcmlhYmxlTm9kZSA9IGZyYW1lTWV0YXZhcmlhYmxlTm9kZTsgIC8vL1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkTWV0YXZhcmlhYmxlTm9kZTtcbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUsIGxvY2FsQ29udGV4dCkge1xuICBjb25zdCBmcmFtZU5vZGUgPSBmcmFtZS5nZXROb2RlKCksXG4gICAgICAgIGZyYW1lU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyhmcmFtZU5vZGUpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN0cmluZyA9IGBbWyR7ZnJhbWVTdHJpbmd9XSBmb3IgWyR7bWV0YXZhcmlhYmxlU3RyaW5nfV1dYDtcblxuICByZXR1cm4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbIkZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwic3Vic3RpdHV0aW9uTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5Iiwic3Vic3RpdHV0aW9uRnJhbWVOb2RlUXVlcnkiLCJmcmFtZU1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInN1YnN0aXR1dGlvbk1ldGF2YXJpYWJsZU5vZGVRdWVyeSIsInN0cmluZyIsImZyYW1lTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlIiwiZ2V0RnJhbWVOb2RlIiwiZ2V0TWV0YXZhcmlhYmxlTm9kZSIsImdldFN1YnN0aXR1dGlvbk5vZGUiLCJ0cmFuc2Zvcm1lZCIsInN1YnN0aXR1dGlvbnMiLCJ0cmFuc2Zvcm1lZFN1YnN0aXR1dGlvbiIsInRyYW5zZm9ybWVkRnJhbWVOb2RlIiwidHJhbnNmb3JtRnJhbWVOb2RlIiwidHJhbnNmb3JtZWRNZXRhdmFyaWFibGVOb2RlIiwidHJhbnNmb3JtTWV0YXZhcmlhYmxlTm9kZSIsImZyYW1lRm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiaXNFcXVhbFRvIiwic3Vic3RpdHV0aW9uIiwiZXF1YWxUbyIsImZyYW1lTm9kZU1hdGNoZXMiLCJtYXRjaEZyYW1lTm9kZSIsIm1ldGF2YXJpYWJsZU5vZGVNYXRjaGVzIiwibWF0Y2hNZXRhdmFyaWFibGVOb2RlIiwibWF0Y2giLCJtYXRjaFN1YnN0aXR1dGlvbk5vZGUiLCJzdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyIsIm1hdGNoTWV0YXZhcmlhYmxlTm9kZUFuZFN1YnN0aXR1dGlvbk5vZGUiLCJtZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJsb2NhbENvbnRleHQiLCJzdWJzdGl0dXRpb25GcmFtZU5vZGUiLCJGcmFtZSIsInNoaW0iLCJNZXRhdmFyaWFibGUiLCJzdWJzdGl0dXRpb25NZXRhdmFyaWFibGVOb2RlIiwiZnJhbWUiLCJmcm9tVGVybU5vZGUiLCJ2YXJpYWJsZSIsImZyb21NZXRhdmFyaWFibGVOb2RlIiwic3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlIiwiZnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlIiwiZ2V0Tm9kZSIsInN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbiIsIlN1YnN0aXR1dGlvbiIsImZyYW1lTWV0YXZhcmlhYmxlTm9kZSIsInNvbWVTdWJzdGl0dXRpb24iLCJmcmFtZVN0cmluZyIsIm5vZGVBc1N0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsImdldFN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFZcUJBOzs7MkRBVko7bUVBQ1E7cUJBRUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsSUFBTUMsd0JBQXdCQyxJQUFBQSxnQkFBUyxFQUFDLDRCQUNsQ0MsNkJBQTZCRCxJQUFBQSxnQkFBUyxFQUFDLHlCQUN2Q0UsNkJBQTZCRixJQUFBQSxnQkFBUyxFQUFDLHlCQUN2Q0csb0NBQW9DSCxJQUFBQSxnQkFBUyxFQUFDO0FBRXJDLElBQUEsQUFBTUYsaURBQU47Y0FBTUE7YUFBQUEsaUNBQ1BNLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxnQkFBZ0IsRUFBRUMsZ0JBQWdCO2dDQUQ5Q1Q7O2dCQUVqQixrQkFGaUJBO1lBRVhNOztRQUVOLE1BQUtDLFNBQVMsR0FBR0E7UUFDakIsTUFBS0MsZ0JBQWdCLEdBQUdBO1FBQ3hCLE1BQUtDLGdCQUFnQixHQUFHQTs7O2tCQU5QVDs7WUFTbkJV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
|