occam-nominal 1.0.334 → 1.0.340
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context.js +5 -1
- package/lib/element/assertion/contained.js +4 -4
- package/lib/element/assertion/defined.js +3 -3
- package/lib/element/assertion/subproof.js +6 -6
- package/lib/element/assertion/type.js +3 -3
- package/lib/element/assumption.js +134 -111
- package/lib/element/combinator/bracketed.js +2 -2
- package/lib/element/constraint.js +114 -102
- package/lib/element/constructor/bracketed.js +3 -3
- package/lib/element/deduction.js +2 -2
- package/lib/element/equality.js +3 -3
- package/lib/element/frame.js +3 -3
- package/lib/element/goal.js +67 -57
- package/lib/element/hypothesis.js +2 -2
- package/lib/element/judgement.js +15 -16
- package/lib/element/label.js +25 -22
- package/lib/element/metaType.js +2 -2
- package/lib/element/metavariable.js +54 -45
- package/lib/element/parameter.js +2 -2
- package/lib/element/procedureCall.js +2 -2
- package/lib/element/procedureReference.js +2 -2
- package/lib/element/proofAssertion/step.js +7 -7
- package/lib/element/proofAssertion/supposition.js +2 -2
- package/lib/element/proofAssertion.js +2 -2
- package/lib/element/reference.js +27 -24
- package/lib/element/schema.js +165 -154
- package/lib/element/signature.js +2 -2
- package/lib/element/statement.js +7 -5
- package/lib/element/substitution/reference.js +22 -29
- package/lib/element/substitution/statement.js +5 -5
- package/lib/element/term.js +2 -2
- package/lib/element/typePrefix.js +2 -2
- package/lib/element/variable.js +2 -2
- package/lib/process/unification.js +41 -47
- package/lib/process/unify.js +10 -10
- package/lib/process/validate.js +6 -6
- package/lib/process/validation.js +13 -13
- package/package.json +9 -9
- package/src/context.js +6 -0
- package/src/element/assertion/contained.js +3 -3
- package/src/element/assertion/defined.js +2 -2
- package/src/element/assertion/subproof.js +5 -5
- package/src/element/assertion/type.js +2 -2
- package/src/element/assumption.js +158 -132
- package/src/element/combinator/bracketed.js +1 -1
- package/src/element/constraint.js +134 -125
- package/src/element/constructor/bracketed.js +2 -2
- package/src/element/deduction.js +1 -1
- package/src/element/equality.js +2 -2
- package/src/element/frame.js +2 -2
- package/src/element/goal.js +82 -74
- package/src/element/hypothesis.js +2 -2
- package/src/element/judgement.js +20 -22
- package/src/element/label.js +26 -25
- package/src/element/metaType.js +2 -2
- package/src/element/metavariable.js +70 -53
- package/src/element/parameter.js +2 -2
- package/src/element/procedureCall.js +2 -2
- package/src/element/procedureReference.js +2 -2
- package/src/element/proofAssertion/step.js +6 -6
- package/src/element/proofAssertion/supposition.js +1 -1
- package/src/element/proofAssertion.js +1 -1
- package/src/element/reference.js +28 -27
- package/src/element/schema.js +193 -195
- package/src/element/signature.js +2 -2
- package/src/element/statement.js +9 -5
- package/src/element/substitution/reference.js +22 -35
- package/src/element/substitution/statement.js +4 -4
- package/src/element/term.js +1 -1
- package/src/element/typePrefix.js +2 -2
- package/src/element/variable.js +1 -1
- package/src/process/unification.js +44 -59
- package/src/process/unify.js +9 -9
- package/src/process/validate.js +5 -5
- package/src/process/validation.js +12 -12
|
@@ -10,13 +10,14 @@ Object.defineProperty(exports, "default", {
|
|
|
10
10
|
});
|
|
11
11
|
const _occamlanguages = require("occam-languages");
|
|
12
12
|
const _elements = require("../elements");
|
|
13
|
+
const _continuation = require("../utilities/continuation");
|
|
13
14
|
const _unify = require("../process/unify");
|
|
14
15
|
const _instantiate = require("../process/instantiate");
|
|
15
16
|
const _brackets = require("../utilities/brackets");
|
|
16
17
|
const _element = require("../utilities/element");
|
|
17
18
|
const _string = require("../utilities/string");
|
|
18
19
|
const _context = require("../utilities/context");
|
|
19
|
-
const { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
20
|
+
const { some } = _occamlanguages.continuationUtilities, { breakPointFromJSON, breakPointToBreakPointJSON } = _occamlanguages.breakPointUtilities;
|
|
20
21
|
const _default = (0, _elements.define)(class Constraint extends _occamlanguages.Element {
|
|
21
22
|
constructor(context, string, node, breakPoint, reference, statement){
|
|
22
23
|
super(context, string, node, breakPoint);
|
|
@@ -48,84 +49,88 @@ const _default = (0, _elements.define)(class Constraint extends _occamlanguages.
|
|
|
48
49
|
const constraintNode = this.getConstraintNode(), constraint = context.findConstraintByConstraintNode(constraintNode), validConstraint = constraint; ///
|
|
49
50
|
return validConstraint;
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
let constraint = null;
|
|
52
|
+
validate(context, continuation) {
|
|
53
53
|
const constraintString = this.getString(); ///
|
|
54
54
|
context.trace(`Validating the '${constraintString}' constraint...`);
|
|
55
|
-
let validates = false;
|
|
56
55
|
const validConstraint = this.findValidConstraint(context);
|
|
57
56
|
if (validConstraint !== null) {
|
|
58
|
-
|
|
59
|
-
constraint = validConstraint; ///
|
|
57
|
+
const constraint = validConstraint; ///
|
|
60
58
|
context.debug(`...the '${constraintString}' constraint is already valid.`);
|
|
59
|
+
return continuation(constraint);
|
|
61
60
|
} else {
|
|
62
|
-
const temporaryContext = context; ///
|
|
63
61
|
context = this.getContext();
|
|
64
62
|
(0, _context.attempt)((context)=>{
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
63
|
+
const validateStatement = this.validateStatement.bind(this), validateReference = this.validateReference.bind(this);
|
|
64
|
+
return (0, _continuation.all)([
|
|
65
|
+
validateStatement,
|
|
66
|
+
validateReference
|
|
67
|
+
], context, (validates)=>{
|
|
68
|
+
if (!validates) {
|
|
69
|
+
const constraint = null;
|
|
70
|
+
return continuation(constraint);
|
|
71
|
+
}
|
|
72
|
+
const validateWhenStated = this.validateWhenStated.bind(this), validateWhenDerived = this.validateWhenDerived.bind(this);
|
|
73
|
+
return (0, _continuation.exists)([
|
|
74
|
+
validateWhenStated,
|
|
75
|
+
validateWhenDerived
|
|
76
|
+
], context, (validates)=>{
|
|
77
|
+
let constraint = null;
|
|
78
|
+
if (validates) {
|
|
79
|
+
constraint = this; ///
|
|
80
|
+
context.addConstraint(constraint);
|
|
75
81
|
}
|
|
76
|
-
if (
|
|
77
|
-
|
|
82
|
+
if (validates) {
|
|
83
|
+
this.commit(context);
|
|
78
84
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
if (validates) {
|
|
86
|
+
context.debug(`...validated the '${constraintString}' constraint.`);
|
|
87
|
+
}
|
|
88
|
+
return continuation(constraint);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
84
91
|
}, context);
|
|
85
|
-
context = temporaryContext; ///
|
|
86
|
-
if (validates) {
|
|
87
|
-
constraint = this; ///
|
|
88
|
-
context.addConstraint(constraint);
|
|
89
|
-
}
|
|
90
92
|
}
|
|
91
|
-
if (validates) {
|
|
92
|
-
context.debug(`...validated the '${constraintString}' constraint.`);
|
|
93
|
-
}
|
|
94
|
-
return constraint;
|
|
95
93
|
}
|
|
96
|
-
validateReference(context) {
|
|
94
|
+
validateReference(context, continuation) {
|
|
97
95
|
let referenceValidates = false;
|
|
98
96
|
const constraintString = this.getString(); ///
|
|
99
97
|
context.trace(`Validating the '${constraintString}' constraint's reference...`);
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
98
|
+
this.reference.validate(context, (reference)=>{
|
|
99
|
+
if (reference !== null) {
|
|
100
|
+
const metavariable = this.reference.getMetavariable(), metavariableDeclared = metavariable.isDeclared();
|
|
101
|
+
if (metavariableDeclared) {
|
|
102
|
+
this.reference = reference;
|
|
103
|
+
referenceValidates = true;
|
|
104
|
+
}
|
|
106
105
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
106
|
+
if (referenceValidates) {
|
|
107
|
+
context.debug(`...validated the '${constraintString}' constraint's reference.`);
|
|
108
|
+
}
|
|
109
|
+
return continuation(referenceValidates);
|
|
110
|
+
});
|
|
112
111
|
}
|
|
113
|
-
|
|
114
|
-
let statementValidates = false;
|
|
112
|
+
validateStatement(context, continuation) {
|
|
115
113
|
const constraintString = this.getString(); ///
|
|
116
114
|
context.trace(`Validating the '${constraintString}' constraint's statement...`);
|
|
117
|
-
(0, _context.descend)(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
115
|
+
(0, _context.descend)((context)=>{
|
|
116
|
+
this.statement.validate(context, (statement)=>{
|
|
117
|
+
let statementValidates = false;
|
|
118
|
+
if (statement !== null) {
|
|
119
|
+
statementValidates = true;
|
|
120
|
+
}
|
|
121
|
+
if (statementValidates) {
|
|
122
|
+
context.debug(`...validated the '${constraintString}' constraint's statement.`);
|
|
123
|
+
}
|
|
124
|
+
return continuation(statementValidates);
|
|
125
|
+
});
|
|
122
126
|
}, context);
|
|
123
|
-
if (statementValidates) {
|
|
124
|
-
context.debug(`...validated the '${constraintString}' constraint's statement.`);
|
|
125
|
-
}
|
|
126
|
-
return statementValidates;
|
|
127
127
|
}
|
|
128
|
-
validateWhenStated(context) {
|
|
128
|
+
validateWhenStated(context, continuation) {
|
|
129
|
+
const stated = context.isStated();
|
|
130
|
+
if (!stated) {
|
|
131
|
+
const validatesWhenStated = false;
|
|
132
|
+
return continuation(validatesWhenStated);
|
|
133
|
+
}
|
|
129
134
|
let validatesWhenStated;
|
|
130
135
|
const constraintString = this.getString(); ///
|
|
131
136
|
context.trace(`Validating the '${constraintString}' stated constraint...`);
|
|
@@ -133,9 +138,14 @@ const _default = (0, _elements.define)(class Constraint extends _occamlanguages.
|
|
|
133
138
|
if (validatesWhenStated) {
|
|
134
139
|
context.debug(`...validated the '${constraintString}' stated constraint.`);
|
|
135
140
|
}
|
|
136
|
-
return validatesWhenStated;
|
|
141
|
+
return continuation(validatesWhenStated);
|
|
137
142
|
}
|
|
138
|
-
validateWhenDerived(context) {
|
|
143
|
+
validateWhenDerived(context, continuation) {
|
|
144
|
+
const stated = context.isStated();
|
|
145
|
+
if (stated) {
|
|
146
|
+
const validatesWhenDerived = false;
|
|
147
|
+
return continuation(validatesWhenDerived);
|
|
148
|
+
}
|
|
139
149
|
let validatesWhenDerived;
|
|
140
150
|
const constraintString = this.getString(); ///
|
|
141
151
|
context.trace(`Validating the '${constraintString}' derived constraint...`);
|
|
@@ -143,62 +153,64 @@ const _default = (0, _elements.define)(class Constraint extends _occamlanguages.
|
|
|
143
153
|
if (validatesWhenDerived) {
|
|
144
154
|
context.debug(`...validated the '${constraintString}' derived constraint.`);
|
|
145
155
|
}
|
|
146
|
-
return validatesWhenDerived;
|
|
147
|
-
}
|
|
148
|
-
unifyReference(reference, generalContext, specificContext) {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
return continuation(validatesWhenDerived);
|
|
157
|
+
}
|
|
158
|
+
unifyReference(reference, generalContext, specificContext, continuation) {
|
|
159
|
+
if (reference === null) {
|
|
160
|
+
const referenceUnifies = true; ///
|
|
161
|
+
return continuation(referenceUnifies);
|
|
162
|
+
}
|
|
163
|
+
const context = specificContext, referenceString = reference.getString(), constraintString = this.getString(); ///
|
|
164
|
+
context.trace(`Unifying the '${referenceString}' reference with the '${constraintString}' constraint's reference...`);
|
|
165
|
+
const metavariable = this.getMetavariable();
|
|
166
|
+
return metavariable.unifyReference(reference, generalContext, specificContext, (referenceUnifies)=>{
|
|
155
167
|
if (referenceUnifies) {
|
|
156
168
|
context.debug(`..unified the '${referenceString}' with the '${constraintString}' constraint's reference.`);
|
|
157
169
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
161
|
-
return referenceUnifies;
|
|
170
|
+
return continuation(referenceUnifies);
|
|
171
|
+
});
|
|
162
172
|
}
|
|
163
|
-
|
|
164
|
-
let statementUnifies;
|
|
173
|
+
unifyStatement(statement, generalContext, specificContext, continuation) {
|
|
165
174
|
const context = specificContext, statementString = statement.getString(), constraintString = this.getString(); ///
|
|
166
175
|
context.trace(`Unifying the '${statementString}' statement with the '${constraintString}' constraint's statement...`);
|
|
167
176
|
const generalStatement = this.statement, specificStatement = (0, _brackets.stripBracketsFromStatement)(statement, context); ///
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
177
|
+
return (0, _unify.unifyStatement)(generalStatement, specificStatement, generalContext, specificContext, (statementUnifies)=>{
|
|
178
|
+
if (statementUnifies) {
|
|
179
|
+
context.debug(`...unified the '${statementString}' statement with the '${constraintString}' constraint's statement.`);
|
|
180
|
+
}
|
|
181
|
+
return continuation(statementUnifies);
|
|
182
|
+
});
|
|
173
183
|
}
|
|
174
|
-
|
|
175
|
-
let assumptionUnifies = false;
|
|
184
|
+
unifyAssumption(assumption, context, continuation) {
|
|
176
185
|
const assumptionString = assumption.getString(), constraintString = this.getString();
|
|
177
186
|
context.trace(`Unifying the '${assumptionString}' assumption with the '${constraintString}' constraint...`);
|
|
178
187
|
const constraintContext = this.getContext(), generalContext = constraintContext; ///
|
|
179
|
-
(0, _context.reconcile)(
|
|
180
|
-
const reference = assumption.getReference(), specificContext = context
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
assumptionUnifies = true;
|
|
188
|
+
(0, _context.reconcile)((context)=>{
|
|
189
|
+
const reference = assumption.getReference(), specificContext = context; ///
|
|
190
|
+
return this.unifyReference(reference, generalContext, specificContext, (referneceUnifies)=>{
|
|
191
|
+
if (!referneceUnifies) {
|
|
192
|
+
const assumptionUnifies = false;
|
|
193
|
+
return continuation(assumptionUnifies);
|
|
186
194
|
}
|
|
187
|
-
|
|
195
|
+
const statement = assumption.getStatement();
|
|
196
|
+
return this.unifyStatement(statement, generalContext, specificContext, (statementUnifies)=>{
|
|
197
|
+
let assumptionUnifies = false;
|
|
198
|
+
if (statementUnifies) {
|
|
199
|
+
context.commit();
|
|
200
|
+
assumptionUnifies = true;
|
|
201
|
+
}
|
|
202
|
+
if (assumptionUnifies) {
|
|
203
|
+
context.debug(`...unified the '${assumptionString}' assumption with the '${constraintString}' constraint...`);
|
|
204
|
+
}
|
|
205
|
+
return continuation(assumptionUnifies);
|
|
206
|
+
});
|
|
207
|
+
});
|
|
188
208
|
}, context);
|
|
189
|
-
if (assumptionUnifies) {
|
|
190
|
-
context.debug(`...unified the '${assumptionString}' assumption with the '${constraintString}' constraint...`);
|
|
191
|
-
}
|
|
192
|
-
return assumptionUnifies;
|
|
193
209
|
}
|
|
194
|
-
unifyAssumptions(assumptions, context) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
return true;
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
return assumptionsUnify;
|
|
210
|
+
unifyAssumptions(assumptions, context, continuation) {
|
|
211
|
+
some(assumptions, (assumption, continuation)=>{
|
|
212
|
+
this.unifyAssumption(assumption, context, continuation);
|
|
213
|
+
}, continuation);
|
|
202
214
|
}
|
|
203
215
|
toJSON() {
|
|
204
216
|
const context = this.getContext();
|
|
@@ -251,4 +263,4 @@ function statementFromConstraintNode(constraintNode, context) {
|
|
|
251
263
|
return statement;
|
|
252
264
|
}
|
|
253
265
|
|
|
254
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tbGFuZ3VhZ2VzXCI7XG5cbmltcG9ydCB7IGRlZmluZSB9IGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IHsgdW5pZnlTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vcHJvY2Vzcy91bmlmeVwiO1xuaW1wb3J0IHsgaW5zdGFudGlhdGVDb25zdHJhaW50IH0gZnJvbSBcIi4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9icmFja2V0c1wiO1xuaW1wb3J0IHsgY29uc3RyYWludEZyb21Db25zdHJhaW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuaW1wb3J0IHsgY29uc3RyYWludFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgYWJsYXRlLCBhdHRlbXB0LCBkZXNjZW5kLCByZWNvbmNpbGUsIHNlcmlhbGlzZSwgdW5zZXJpYWxpc2UsIGluc3RhbnRpYXRlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9jb250ZXh0XCI7XG5cbmNvbnN0IHsgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIENvbnN0cmFpbnQgZXh0ZW5kcyBFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICBnZXRTdGF0ZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50O1xuICB9XG5cbiAgZ2V0Q29uc3RyYWludE5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gbm9kZTsgIC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnROb2RlO1xuICB9XG5cbiAgZ2V0TWV0YXZhcmlhYmxlKCkgeyByZXR1cm4gdGhpcy5yZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCk7IH1cblxuICBpc0VxdWFsVG8oY29uc3RyYWludCkge1xuICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlID0gY29uc3RyYWludC5nZXROb2RlKCksXG4gICAgICAgICAgY29uc3RyYWludE5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSxcbiAgICAgICAgICBlcXVhbFRvID0gY29uc3RyYWludE5vZGVNYXRjaGVzOyAgLy8vXG5cbiAgICByZXR1cm4gZXF1YWxUbztcbiAgfVxuXG4gIG1hdGNoQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gY29uc3RyYWludE5vZGUsIC8vL1xuICAgICAgICAgIG5vZGVNYXRjaGVzID0gdGhpcy5tYXRjaE5vZGUobm9kZSksXG4gICAgICAgICAgY29uc3RyYWludE5vZGVNYXRjaGVzID0gbm9kZU1hdGNoZXM7IC8vL1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnROb2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRWYWxpZENvbnN0cmFpbnQoY29udGV4dCkge1xuICAgIGNvbnN0IGNvbnN0cmFpbnROb2RlID0gdGhpcy5nZXRDb25zdHJhaW50Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnQgPSBjb250ZXh0LmZpbmRDb25zdHJhaW50QnlDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSksXG4gICAgICAgICAgdmFsaWRDb25zdHJhaW50ID0gY29uc3RyYWludDsgIC8vL1xuXG4gICAgcmV0dXJuIHZhbGlkQ29uc3RyYWludDtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKGNvbnRleHQpIHtcbiAgICBsZXQgY29uc3RyYWludCA9IG51bGw7XG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IHZhbGlkQ29uc3RyYWludCA9IHRoaXMuZmluZFZhbGlkQ29uc3RyYWludChjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZENvbnN0cmFpbnQgIT09IG51bGwpIHtcbiAgICAgIHZhbGlkYXRlcyA9IHRydWU7XG5cbiAgICAgIGNvbnN0cmFpbnQgPSB2YWxpZENvbnN0cmFpbnQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi50aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaXMgYWxyZWFkeSB2YWxpZC5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGVtcG9yYXJ5Q29udGV4dCA9IGNvbnRleHQ7IC8vL1xuXG4gICAgICBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGVtZW50VmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudChjb250ZXh0KTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgICAgY29uc3QgcmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVJlZmVyZW5jZShjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlZCA9IGNvbnRleHQuaXNTdGF0ZWQoKTtcblxuICAgICAgICAgICAgbGV0IHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBmYWxzZSxcbiAgICAgICAgICAgICAgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKHN0YXRlZCkge1xuICAgICAgICAgICAgICB2YWxpZGF0ZXNXaGVuU3RhdGVkID0gdGhpcy52YWxpZGF0ZVdoZW5TdGF0ZWQoY29udGV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZChjb250ZXh0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbGlkYXRlc1doZW5TdGF0ZWQgfHwgdmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgdGhpcy5jb21taXQoY29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0sIGNvbnRleHQpO1xuXG4gICAgICBjb250ZXh0ID0gdGVtcG9yYXJ5Q29udGV4dDsgLy8vXG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgY29uc3RyYWludCA9IHRoaXM7ICAvLy9cblxuICAgICAgICBjb250ZXh0LmFkZENvbnN0cmFpbnQoY29uc3RyYWludCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIHZhbGlkYXRlUmVmZXJlbmNlKGNvbnRleHQpIHtcbiAgICBsZXQgcmVmZXJlbmNlVmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHRoaXMucmVmZXJlbmNlLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgaWYgKHJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcy5yZWZlcmVuY2UuZ2V0TWV0YXZhcmlhYmxlKCksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJlZCA9IG1ldGF2YXJpYWJsZS5pc0RlY2xhcmVkKCk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVEZWNsYXJlZCkge1xuICAgICAgICB0aGlzLnJlZmVyZW5jZSA9IHJlZmVyZW5jZTtcblxuICAgICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyByZWZlcmVuY2UuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVZhbGlkYXRlcztcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIGRlc2NlbmQoYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZW1lbnRWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5TdGF0ZWQoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuU3RhdGVkO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBzdGF0ZWQgY29uc3RyYWludC4uLmApO1xuXG4gICAgdmFsaWRhdGVzV2hlblN0YXRlZCA9IHRydWVcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuU3RhdGVkKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBzdGF0ZWQgY29uc3RyYWludC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlblN0YXRlZDtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCkge1xuICAgIGxldCB2YWxpZGF0ZXNXaGVuRGVyaXZlZDtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgZGVyaXZlZCBjb25zdHJhaW50Li4uYCk7XG5cbiAgICB2YWxpZGF0ZXNXaGVuRGVyaXZlZCA9IHRydWU7XG5cbiAgICBpZiAodmFsaWRhdGVzV2hlbkRlcml2ZWQpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGRlcml2ZWQgY29uc3RyYWludC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdGVzV2hlbkRlcml2ZWQ7XG4gIH1cblxuICB1bmlmeVJlZmVyZW5jZShyZWZlcmVuY2UsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgcmVmZXJlbmNlVW5pZmllcztcblxuICAgIGlmIChyZWZlcmVuY2UgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICAgIHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAvLy9cblxuICAgICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZSB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSB0aGlzLmdldE1ldGF2YXJpYWJsZSgpO1xuXG4gICAgICByZWZlcmVuY2VVbmlmaWVzID0gbWV0YXZhcmlhYmxlLnVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChyZWZlcmVuY2VVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4udW5pZmllZCB0aGUgJyR7cmVmZXJlbmNlU3RyaW5nfScgd2l0aCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQncyByZWZlcmVuY2UuYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZmVyZW5jZVVuaWZpZXMgPSB0cnVlOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmVyZW5jZVVuaWZpZXM7XG4gIH1cblxuICBhc3luYyB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgc3RhdGVtZW50VW5pZmllcztcblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgY29uc3QgZ2VuZXJhbFN0YXRlbWVudCA9IHRoaXMuc3RhdGVtZW50LCAgLy8vXG4gICAgICAgICAgc3BlY2lmaWNTdGF0ZW1lbnQgPSBzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpOyAgLy8vXG5cbiAgICBzdGF0ZW1lbnRVbmlmaWVzID0gdW5pZnlTdGF0ZW1lbnQoZ2VuZXJhbFN0YXRlbWVudCwgc3BlY2lmaWNTdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpO1xuXG4gICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RhdGVtZW50VW5pZmllcztcbiAgfVxuXG4gIGFzeW5jIHVuaWZ5QXNzdW1wdGlvbihhc3N1bXB0aW9uLCBjb250ZXh0KSB7XG4gICAgbGV0IGFzc3VtcHRpb25VbmlmaWVzID0gZmFsc2U7XG5cbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50Q29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnN0cmFpbnRDb250ZXh0OyAvLy9cblxuICAgIHJlY29uY2lsZShhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgcmVmZXJlbmNlID0gYXNzdW1wdGlvbi5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQsICAvLy9cbiAgICAgICAgICAgIHJlZmVybmVjZVVuaWZpZXMgPSB0aGlzLnVuaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZSwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgIGlmIChyZWZlcm5lY2VVbmlmaWVzKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlbWVudCA9IGFzc3VtcHRpb24uZ2V0U3RhdGVtZW50KCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudFVuaWZpZWQgPSB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCk7XG5cbiAgICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZWQpIHtcbiAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgICAgICAgYXNzdW1wdGlvblVuaWZpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICBpZiAoYXNzdW1wdGlvblVuaWZpZXMpIHtcbiAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzc3VtcHRpb25VbmlmaWVzO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29udGV4dCkge1xuICAgIGNvbnN0IGFzc3VtcHRpb25zVW5pZnkgPSBhc3N1bXB0aW9ucy5zb21lKChhc3N1bXB0aW9uKSA9PiB7XG4gICAgICBjb25zdCBhc3N1bXB0aW9uVW5pZmllcyA9IHRoaXMudW5pZnlBc3N1bXB0aW9uKGFzc3VtcHRpb24sIGNvbnRleHQpO1xuXG4gICAgICBpZiAoYXNzdW1wdGlvblVuaWZpZXMpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbnNVbmlmeTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJDb25zdHJhaW50XCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgY29uc3RyYWludDtcblxuICAgIGluc3RhbnRpYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICB1bnNlcmlhbGlzZSgoanNvbiwgY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgY29uc3RyYWludE5vZGUgPSBpbnN0YW50aWF0ZUNvbnN0cmFpbnQoc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGNvbnN0cmFpbnROb2RlLCAgLy8vXG4gICAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50RnJvbUpTT04oanNvbiksXG4gICAgICAgICAgICAgIHJlZmVyZW5jZSA9IHJlZmVyZW5jZUZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHN0YXRlbWVudCA9IHN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RyYWludCA9IG5ldyBDb25zdHJhaW50KGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpO1xuICAgICAgfSwganNvbiwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RlcChzdGVwLCBjb250ZXh0KSB7XG4gICAgbGV0IGNvbnN0cmFpbnQ7XG5cbiAgICBsZXQgc3RhdGVtZW50O1xuXG4gICAgc3RhdGVtZW50ID0gc3RlcC5nZXRTdGF0ZW1lbnQoKTtcblxuICAgIHN0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7IC8vL1xuXG4gICAgY29uc3QgcmVmZXJlbmNlID0gc3RlcC5nZXRSZWZlcmVuY2UoKTtcblxuICAgIGFibGF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IGNvbnN0cmFpbnRTdHJpbmdGcm9tUmVmZXJlbmNlQW5kU3RhdGVtZW50KHJlZmVyZW5jZSwgc3RhdGVtZW50KSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gY29uc3RyYWludFN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpO1xuXG4gICAgICAgIGNvbnN0cmFpbnQgPSBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpbnQ7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiByZWZlcmVuY2VGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IGNvbnN0cmFpbnROb2RlLmdldFJlZmVyZW5jZU5vZGUoKSxcbiAgICAgICAgcmVmZXJuZWNlID0gY29udGV4dC5maW5kUmVmZXJlbmNlQnlSZWZlcmVuY2VOb2RlKHJlZmVyZW5jZU5vZGUpO1xuXG4gIHJldHVybiByZWZlcm5lY2U7XG59XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gY29uc3RyYWludE5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cbiJdLCJuYW1lcyI6WyJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb25zdHJhaW50IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInJlZmVyZW5jZSIsInN0YXRlbWVudCIsImdldFJlZmVyZW5jZSIsImdldFN0YXRlbWVudCIsImdldENvbnN0cmFpbnROb2RlIiwiZ2V0Tm9kZSIsImNvbnN0cmFpbnROb2RlIiwiZ2V0TWV0YXZhcmlhYmxlIiwiaXNFcXVhbFRvIiwiY29uc3RyYWludCIsImNvbnN0cmFpbnROb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc3RyYWludE5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kVmFsaWRDb25zdHJhaW50IiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwidmFsaWRDb25zdHJhaW50IiwidmFsaWRhdGUiLCJjb25zdHJhaW50U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJ2YWxpZGF0ZXMiLCJkZWJ1ZyIsInRlbXBvcmFyeUNvbnRleHQiLCJnZXRDb250ZXh0IiwiYXR0ZW1wdCIsInN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlU3RhdGVtZW50IiwicmVmZXJlbmNlVmFsaWRhdGVzIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJzdGF0ZWQiLCJpc1N0YXRlZCIsInZhbGlkYXRlc1doZW5TdGF0ZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInZhbGlkYXRlV2hlblN0YXRlZCIsInZhbGlkYXRlV2hlbkRlcml2ZWQiLCJjb21taXQiLCJhZGRDb25zdHJhaW50IiwibWV0YXZhcmlhYmxlIiwibWV0YXZhcmlhYmxlRGVjbGFyZWQiLCJpc0RlY2xhcmVkIiwiZGVzY2VuZCIsInVuaWZ5UmVmZXJlbmNlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWZlcmVuY2VVbmlmaWVzIiwicmVmZXJlbmNlU3RyaW5nIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwic3RhdGVtZW50U3RyaW5nIiwiZ2VuZXJhbFN0YXRlbWVudCIsInNwZWNpZmljU3RhdGVtZW50Iiwic3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQiLCJ1bmlmeUFzc3VtcHRpb24iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblVuaWZpZXMiLCJhc3N1bXB0aW9uU3RyaW5nIiwiY29uc3RyYWludENvbnRleHQiLCJyZWNvbmNpbGUiLCJyZWZlcm5lY2VVbmlmaWVzIiwic3RhdGVtZW50VW5pZmllZCIsInVuaWZ5QXNzdW1wdGlvbnMiLCJhc3N1bXB0aW9ucyIsImFzc3VtcHRpb25zVW5pZnkiLCJzb21lIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbnN0cmFpbnQiLCJyZWZlcmVuY2VGcm9tQ29uc3RyYWludE5vZGUiLCJzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUiLCJmcm9tU3RlcCIsInN0ZXAiLCJhYmxhdGUiLCJjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCIsImNvbnN0cmFpbnRGcm9tQ29uc3RyYWludE5vZGUiLCJyZWZlcmVuY2VOb2RlIiwiZ2V0UmVmZXJlbmNlTm9kZSIsInJlZmVybmVjZSIsImZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWNBOzs7ZUFBQTs7O2dDQVo2QzswQkFFdEI7dUJBQ1E7NkJBQ087MEJBQ0s7eUJBQ0U7d0JBQ2E7eUJBQytCO0FBRXpGLE1BQU0sRUFBRUEsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsQ0FBRTtRQUNuRSxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ0YsU0FBUztJQUN2QjtJQUVBRyxvQkFBb0I7UUFDbEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLGlCQUFpQlIsTUFBTyxHQUFHO1FBRWpDLE9BQU9RO0lBQ1Q7SUFFQUMsa0JBQWtCO1FBQUUsT0FBTyxJQUFJLENB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
|
|
266
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cmFpbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IEVsZW1lbnQsIGJyZWFrUG9pbnRVdGlsaXRpZXMsIGNvbnRpbnVhdGlvblV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBhbGwsIGV4aXN0cyB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGludWF0aW9uXCI7XG5pbXBvcnQgeyB1bmlmeVN0YXRlbWVudCB9IGZyb20gXCIuLi9wcm9jZXNzL3VuaWZ5XCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZUNvbnN0cmFpbnQgfSBmcm9tIFwiLi4vcHJvY2Vzcy9pbnN0YW50aWF0ZVwiO1xuaW1wb3J0IHsgc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2JyYWNrZXRzXCI7XG5pbXBvcnQgeyBjb25zdHJhaW50RnJvbUNvbnN0cmFpbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBhYmxhdGUsIGF0dGVtcHQsIGRlc2NlbmQsIHJlY29uY2lsZSwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2NvbnRleHRcIjtcblxuY29uc3QgeyBzb21lIH0gPSBjb250aW51YXRpb25VdGlsaXRpZXMsXG4gICAgICB7IGJyZWFrUG9pbnRGcm9tSlNPTiwgYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04gfSA9IGJyZWFrUG9pbnRVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZShjbGFzcyBDb25zdHJhaW50IGV4dGVuZHMgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgcmVmZXJlbmNlLCBzdGF0ZW1lbnQpIHtcbiAgICBzdXBlcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG4gICAgdGhpcy5zdGF0ZW1lbnQgPSBzdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXRSZWZlcmVuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlO1xuICB9XG5cbiAgZ2V0U3RhdGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudDtcbiAgfVxuXG4gIGdldENvbnN0cmFpbnROb2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBjb25zdHJhaW50Tm9kZTtcbiAgfVxuXG4gIGdldE1ldGF2YXJpYWJsZSgpIHsgcmV0dXJuIHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpOyB9XG5cbiAgaXNFcXVhbFRvKGNvbnN0cmFpbnQpIHtcbiAgICBjb25zdCBjb25zdHJhaW50Tm9kZSA9IGNvbnN0cmFpbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hDb25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSksXG4gICAgICAgICAgZXF1YWxUbyA9IGNvbnN0cmFpbnROb2RlTWF0Y2hlczsgIC8vL1xuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBtYXRjaENvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlKSB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbnN0cmFpbnROb2RlLCAvLy9cbiAgICAgICAgICBub2RlTWF0Y2hlcyA9IHRoaXMubWF0Y2hOb2RlKG5vZGUpLFxuICAgICAgICAgIGNvbnN0cmFpbnROb2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBjb25zdHJhaW50Tm9kZU1hdGNoZXM7XG4gIH1cblxuICBmaW5kVmFsaWRDb25zdHJhaW50KGNvbnRleHQpIHtcbiAgICBjb25zdCBjb25zdHJhaW50Tm9kZSA9IHRoaXMuZ2V0Q29uc3RyYWludE5vZGUoKSxcbiAgICAgICAgICBjb25zdHJhaW50ID0gY29udGV4dC5maW5kQ29uc3RyYWludEJ5Q29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUpLFxuICAgICAgICAgIHZhbGlkQ29uc3RyYWludCA9IGNvbnN0cmFpbnQ7ICAvLy9cblxuICAgIHJldHVybiB2YWxpZENvbnN0cmFpbnQ7XG4gIH1cblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkQ29uc3RyYWludCA9IHRoaXMuZmluZFZhbGlkQ29uc3RyYWludChjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZENvbnN0cmFpbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSB2YWxpZENvbnN0cmFpbnQ7IC8vL1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi50aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQgaXMgYWxyZWFkeSB2YWxpZC5gKTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb25zdHJhaW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlU3RhdGVtZW50ID0gdGhpcy52YWxpZGF0ZVN0YXRlbWVudC5iaW5kKHRoaXMpLFxuICAgICAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZSA9IHRoaXMudmFsaWRhdGVSZWZlcmVuY2UuYmluZCh0aGlzKTtcblxuICAgICAgICByZXR1cm4gYWxsKFtcbiAgICAgICAgICB2YWxpZGF0ZVN0YXRlbWVudCxcbiAgICAgICAgICB2YWxpZGF0ZVJlZmVyZW5jZVxuICAgICAgICBdLCBjb250ZXh0LCAodmFsaWRhdGVzKSA9PiB7XG4gICAgICAgICAgaWYgKCF2YWxpZGF0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBudWxsO1xuXG4gICAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKGNvbnN0cmFpbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRlV2hlblN0YXRlZCA9IHRoaXMudmFsaWRhdGVXaGVuU3RhdGVkLmJpbmQodGhpcyksXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVXaGVuRGVyaXZlZCA9IHRoaXMudmFsaWRhdGVXaGVuRGVyaXZlZC5iaW5kKHRoaXMpO1xuXG4gICAgICAgICAgcmV0dXJuIGV4aXN0cyhbXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5TdGF0ZWQsXG4gICAgICAgICAgICB2YWxpZGF0ZVdoZW5EZXJpdmVkXG4gICAgICAgICAgXSwgY29udGV4dCwgKHZhbGlkYXRlcykgPT4ge1xuICAgICAgICAgICAgbGV0IGNvbnN0cmFpbnQgPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnQgPSB0aGlzOyAgLy8vXG5cbiAgICAgICAgICAgICAgY29udGV4dC5hZGRDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7Y29uc3RyYWludFN0cmluZ30nIGNvbnN0cmFpbnQuYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oY29uc3RyYWludCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVSZWZlcmVuY2UoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgbGV0IHJlZmVyZW5jZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3MgcmVmZXJlbmNlLi4uYCk7XG5cbiAgICB0aGlzLnJlZmVyZW5jZS52YWxpZGF0ZShjb250ZXh0LCAocmVmZXJlbmNlKSA9PiB7XG4gICAgICBpZiAocmVmZXJlbmNlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG1ldGF2YXJpYWJsZSA9IHRoaXMucmVmZXJlbmNlLmdldE1ldGF2YXJpYWJsZSgpLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVEZWNsYXJlZCA9IG1ldGF2YXJpYWJsZS5pc0RlY2xhcmVkKCk7XG5cbiAgICAgICAgaWYgKG1ldGF2YXJpYWJsZURlY2xhcmVkKSB7XG4gICAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSByZWZlcmVuY2U7XG5cbiAgICAgICAgICByZWZlcmVuY2VWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWZlcmVuY2VWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihyZWZlcmVuY2VWYWxpZGF0ZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBkZXNjZW5kKChjb250ZXh0KSA9PiB7XG4gICAgICB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICAgIGxldCBzdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50LmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnRWYWxpZGF0ZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVdoZW5TdGF0ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKCFzdGF0ZWQpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlc1doZW5TdGF0ZWQgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuU3RhdGVkKTtcbiAgICB9XG5cbiAgICBsZXQgdmFsaWRhdGVzV2hlblN0YXRlZDtcblxuICAgIGNvbnN0IGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgc3RhdGVkIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIHZhbGlkYXRlc1doZW5TdGF0ZWQgPSB0cnVlXG5cbiAgICBpZiAodmFsaWRhdGVzV2hlblN0YXRlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgc3RhdGVkIGNvbnN0cmFpbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuU3RhdGVkKTtcbiAgfVxuXG4gIHZhbGlkYXRlV2hlbkRlcml2ZWQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3Qgc3RhdGVkID0gY29udGV4dC5pc1N0YXRlZCgpO1xuXG4gICAgaWYgKHN0YXRlZCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVzV2hlbkRlcml2ZWQgPSBmYWxzZTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXNXaGVuRGVyaXZlZCk7XG4gICAgfVxuXG4gICAgbGV0IHZhbGlkYXRlc1doZW5EZXJpdmVkO1xuXG4gICAgY29uc3QgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFZhbGlkYXRpbmcgdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBkZXJpdmVkIGNvbnN0cmFpbnQuLi5gKTtcblxuICAgIHZhbGlkYXRlc1doZW5EZXJpdmVkID0gdHJ1ZTtcblxuICAgIGlmICh2YWxpZGF0ZXNXaGVuRGVyaXZlZCkge1xuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmFsaWRhdGVkIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgZGVyaXZlZCBjb25zdHJhaW50LmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb250aW51YXRpb24odmFsaWRhdGVzV2hlbkRlcml2ZWQpO1xuICB9XG5cbiAgdW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBpZiAocmVmZXJlbmNlID09PSBudWxsKSB7XG4gICAgICBjb25zdCByZWZlcmVuY2VVbmlmaWVzID0gdHJ1ZTsgIC8vL1xuXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKHJlZmVyZW5jZVVuaWZpZXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICByZWZlcmVuY2VTdHJpbmcgPSByZWZlcmVuY2UuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgY29uc3RyYWludFN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7IC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke3JlZmVyZW5jZVN0cmluZ30nIHJlZmVyZW5jZSB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS4uLmApO1xuXG4gICAgY29uc3QgbWV0YXZhcmlhYmxlID0gdGhpcy5nZXRNZXRhdmFyaWFibGUoKTtcblxuICAgIHJldHVybiBtZXRhdmFyaWFibGUudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJlbmNlVW5pZmllcykgPT4ge1xuICAgICAgaWYgKHJlZmVyZW5jZVVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi51bmlmaWVkIHRoZSAnJHtyZWZlcmVuY2VTdHJpbmd9JyB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHJlZmVyZW5jZS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihyZWZlcmVuY2VVbmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBjb25zdHJhaW50U3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50J3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICBjb25zdCBnZW5lcmFsU3RhdGVtZW50ID0gdGhpcy5zdGF0ZW1lbnQsICAvLy9cbiAgICAgICAgICBzcGVjaWZpY1N0YXRlbWVudCA9IHN0cmlwQnJhY2tldHNGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCk7ICAvLy9cblxuICAgIHJldHVybiB1bmlmeVN0YXRlbWVudChnZW5lcmFsU3RhdGVtZW50LCBzcGVjaWZpY1N0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludCdzIHN0YXRlbWVudC5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnRVbmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5QXNzdW1wdGlvbihhc3N1bXB0aW9uLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKSwgIC8vL1xuICAgICAgICAgIGNvbnN0cmFpbnRTdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgY29udGV4dC50cmFjZShgVW5pZnlpbmcgdGhlICcke2Fzc3VtcHRpb25TdHJpbmd9JyBhc3N1bXB0aW9uIHdpdGggdGhlICcke2NvbnN0cmFpbnRTdHJpbmd9JyBjb25zdHJhaW50Li4uYCk7XG5cbiAgICBjb25zdCBjb25zdHJhaW50Q29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAvLy9cbiAgICAgICAgICBnZW5lcmFsQ29udGV4dCA9IGNvbnN0cmFpbnRDb250ZXh0OyAvLy9cblxuICAgIHJlY29uY2lsZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgcmVmZXJlbmNlID0gYXNzdW1wdGlvbi5nZXRSZWZlcmVuY2UoKSxcbiAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dCA9IGNvbnRleHQ7ICAvLy9cblxuICAgICAgcmV0dXJuIHRoaXMudW5pZnlSZWZlcmVuY2UocmVmZXJlbmNlLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAocmVmZXJuZWNlVW5pZmllcykgPT4ge1xuICAgICAgICBpZiAoIXJlZmVybmVjZVVuaWZpZXMpIHtcbiAgICAgICAgICBjb25zdCBhc3N1bXB0aW9uVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihhc3N1bXB0aW9uVW5pZmllcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0ZW1lbnQgPSBhc3N1bXB0aW9uLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgICAgICBsZXQgYXNzdW1wdGlvblVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgICAgICAgICBhc3N1bXB0aW9uVW5pZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGFzc3VtcHRpb25VbmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHthc3N1bXB0aW9uU3RyaW5nfScgYXNzdW1wdGlvbiB3aXRoIHRoZSAnJHtjb25zdHJhaW50U3RyaW5nfScgY29uc3RyYWludC4uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24oYXNzdW1wdGlvblVuaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdW5pZnlBc3N1bXB0aW9ucyhhc3N1bXB0aW9ucywgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgc29tZShhc3N1bXB0aW9ucywgKGFzc3VtcHRpb24sIGNvbnRpbnVhdGlvbikgPT4ge1xuICAgICAgdGhpcy51bmlmeUFzc3VtcHRpb24oYXNzdW1wdGlvbiwgY29udGV4dCwgY29udGludWF0aW9uKTtcbiAgICB9LCBjb250aW51YXRpb24pO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7XG5cbiAgICAgIGxldCBicmVha1BvaW50O1xuXG4gICAgICBicmVha1BvaW50ID0gdGhpcy5nZXRCcmVha1BvaW50KCk7XG5cbiAgICAgIGNvbnN0IGJyZWFrUG9pbnRKU09OID0gYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04oYnJlYWtQb2ludCk7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSBicmVha1BvaW50SlNPTjsgIC8vL1xuXG4gICAgICBjb25zdCBqc29uID0ge1xuICAgICAgICBjb250ZXh0LFxuICAgICAgICBzdHJpbmcsXG4gICAgICAgIGJyZWFrUG9pbnRcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkNvbnN0cmFpbnRcIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBjb25zdHJhaW50O1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBjb25zdHJhaW50Tm9kZSA9IGluc3RhbnRpYXRlQ29uc3RyYWludChzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gY29uc3RyYWludE5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgcmVmZXJlbmNlID0gcmVmZXJlbmNlRnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBjb25zdHJhaW50ID0gbmV3IENvbnN0cmFpbnQoY29udGV4dCwgc3RyaW5nLCBub2RlLCBicmVha1BvaW50LCByZWZlcmVuY2UsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25zdHJhaW50O1xuICB9XG5cbiAgc3RhdGljIGZyb21TdGVwKHN0ZXAsIGNvbnRleHQpIHtcbiAgICBsZXQgY29uc3RyYWludDtcblxuICAgIGxldCBzdGF0ZW1lbnQ7XG5cbiAgICBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgc3RhdGVtZW50ID0gc3RyaXBCcmFja2V0c0Zyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KTsgLy8vXG5cbiAgICBjb25zdCByZWZlcmVuY2UgPSBzdGVwLmdldFJlZmVyZW5jZSgpO1xuXG4gICAgYWJsYXRlKChjb250ZXh0KSA9PiB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCBjb25zdHJhaW50U3RyaW5nID0gY29uc3RyYWludFN0cmluZ0Zyb21SZWZlcmVuY2VBbmRTdGF0ZW1lbnQocmVmZXJlbmNlLCBzdGF0ZW1lbnQpLFxuICAgICAgICAgICAgICBzdHJpbmcgPSBjb25zdHJhaW50U3RyaW5nLCAgLy8vXG4gICAgICAgICAgICAgIGNvbnN0cmFpbnROb2RlID0gaW5zdGFudGlhdGVDb25zdHJhaW50KHN0cmluZywgY29udGV4dCk7XG5cbiAgICAgICAgY29uc3RyYWludCA9IGNvbnN0cmFpbnRGcm9tQ29uc3RyYWludE5vZGUoY29uc3RyYWludE5vZGUsIGNvbnRleHQpO1xuICAgICAgfSwgY29udGV4dCk7XG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gY29uc3RyYWludDtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHJlZmVyZW5jZUZyb21Db25zdHJhaW50Tm9kZShjb25zdHJhaW50Tm9kZSwgY29udGV4dCkge1xuICBjb25zdCByZWZlcmVuY2VOb2RlID0gY29uc3RyYWludE5vZGUuZ2V0UmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICByZWZlcm5lY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUocmVmZXJlbmNlTm9kZSk7XG5cbiAgcmV0dXJuIHJlZmVybmVjZTtcbn1cblxuZnVuY3Rpb24gc3RhdGVtZW50RnJvbUNvbnN0cmFpbnROb2RlKGNvbnN0cmFpbnROb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBjb25zdHJhaW50Tm9kZS5nZXRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKTtcblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbInNvbWUiLCJjb250aW51YXRpb25VdGlsaXRpZXMiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJDb25zdHJhaW50IiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInJlZmVyZW5jZSIsInN0YXRlbWVudCIsImdldFJlZmVyZW5jZSIsImdldFN0YXRlbWVudCIsImdldENvbnN0cmFpbnROb2RlIiwiZ2V0Tm9kZSIsImNvbnN0cmFpbnROb2RlIiwiZ2V0TWV0YXZhcmlhYmxlIiwiaXNFcXVhbFRvIiwiY29uc3RyYWludCIsImNvbnN0cmFpbnROb2RlTWF0Y2hlcyIsIm1hdGNoQ29uc3RyYWludE5vZGUiLCJlcXVhbFRvIiwibm9kZU1hdGNoZXMiLCJtYXRjaE5vZGUiLCJmaW5kVmFsaWRDb25zdHJhaW50IiwiZmluZENvbnN0cmFpbnRCeUNvbnN0cmFpbnROb2RlIiwidmFsaWRDb25zdHJhaW50IiwidmFsaWRhdGUiLCJjb250aW51YXRpb24iLCJjb25zdHJhaW50U3RyaW5nIiwiZ2V0U3RyaW5nIiwidHJhY2UiLCJkZWJ1ZyIsImdldENvbnRleHQiLCJhdHRlbXB0IiwidmFsaWRhdGVTdGF0ZW1lbnQiLCJiaW5kIiwidmFsaWRhdGVSZWZlcmVuY2UiLCJhbGwiLCJ2YWxpZGF0ZXMiLCJ2YWxpZGF0ZVdoZW5TdGF0ZWQiLCJ2YWxpZGF0ZVdoZW5EZXJpdmVkIiwiZXhpc3RzIiwiYWRkQ29uc3RyYWludCIsImNvbW1pdCIsInJlZmVyZW5jZVZhbGlkYXRlcyIsIm1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZURlY2xhcmVkIiwiaXNEZWNsYXJlZCIsImRlc2NlbmQiLCJzdGF0ZW1lbnRWYWxpZGF0ZXMiLCJzdGF0ZWQiLCJpc1N0YXRlZCIsInZhbGlkYXRlc1doZW5TdGF0ZWQiLCJ2YWxpZGF0ZXNXaGVuRGVyaXZlZCIsInVuaWZ5UmVmZXJlbmNlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWZlcmVuY2VVbmlmaWVzIiwicmVmZXJlbmNlU3RyaW5nIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJnZW5lcmFsU3RhdGVtZW50Iiwic3BlY2lmaWNTdGF0ZW1lbnQiLCJzdHJpcEJyYWNrZXRzRnJvbVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJ1bmlmeUFzc3VtcHRpb24iLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblN0cmluZyIsImNvbnN0cmFpbnRDb250ZXh0IiwicmVjb25jaWxlIiwicmVmZXJuZWNlVW5pZmllcyIsImFzc3VtcHRpb25VbmlmaWVzIiwidW5pZnlBc3N1bXB0aW9ucyIsImFzc3VtcHRpb25zIiwidG9KU09OIiwic2VyaWFsaXNlIiwiZ2V0QnJlYWtQb2ludCIsImJyZWFrUG9pbnRKU09OIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsImluc3RhbnRpYXRlIiwidW5zZXJpYWxpc2UiLCJpbnN0YW50aWF0ZUNvbnN0cmFpbnQiLCJyZWZlcmVuY2VGcm9tQ29uc3RyYWludE5vZGUiLCJzdGF0ZW1lbnRGcm9tQ29uc3RyYWludE5vZGUiLCJmcm9tU3RlcCIsInN0ZXAiLCJhYmxhdGUiLCJjb25zdHJhaW50U3RyaW5nRnJvbVJlZmVyZW5jZUFuZFN0YXRlbWVudCIsImNvbnN0cmFpbnRGcm9tQ29uc3RyYWludE5vZGUiLCJyZWZlcmVuY2VOb2RlIiwiZ2V0UmVmZXJlbmNlTm9kZSIsInJlZmVybmVjZSIsImZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWdCQTs7O2VBQUE7OztnQ0Fkb0U7MEJBRTdDOzhCQUNLO3VCQUNHOzZCQUNPOzBCQUNLO3lCQUNFO3dCQUNhO3lCQUMrQjtBQUV6RixNQUFNLEVBQUVBLElBQUksRUFBRSxHQUFHQyxxQ0FBcUIsRUFDaEMsRUFBRUMsa0JBQWtCLEVBQUVDLDBCQUEwQixFQUFFLEdBQUdDLG1DQUFtQjtNQUU5RSxXQUFlQyxJQUFBQSxnQkFBTSxFQUFDLE1BQU1DLG1CQUFtQkMsdUJBQU87SUFDcEQsWUFBWUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsQ0FBRTtRQUNuRSxLQUFLLENBQUNMLFNBQVNDLFFBQVFDLE1BQU1DO1FBRTdCLElBQUksQ0FBQ0MsU0FBUyxHQUFHQTtRQUNqQixJQUFJLENBQUNDLFNBQVMsR0FBR0E7SUFDbkI7SUFFQUMsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDRixTQUFTO0lBQ3ZCO0lBRUFHLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQ0YsU0FBUztJQUN2QjtJQUVBRyxvQkFBb0I7UUFDbEIsTUFBTU4sT0FBTyxJQUFJLENBQUNPLE9BQU8sSUFDbkJDLGlCQUFpQlIsTUFBTyxHQUFHO1FBRWpDLE9BQU9RO0lBQ1Q7SUFFQUMsa0JBQWtCO1FBQUUsT0FBTyxJQUFJLENBQUNQLFNBQVMsQ0FBQ08sZUFBZTtJQUFJO0lBRTdEQyxVQUFVQyxVQUFVLEVBQUU7UUFDcEIsTUFBTUgsaUJBQWlCRyxXQUFX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
|
|
@@ -24,7 +24,7 @@ const _default = (0, _elements.define)(class BracketedConstructor extends _const
|
|
|
24
24
|
unifyTerm(term, context, continuation) {
|
|
25
25
|
const termString = term.getString();
|
|
26
26
|
context.trace(`Unifying the '${termString}' term with the bracketed constructor...`);
|
|
27
|
-
super.unifyTerm(term, context, (termUnifies)=>{
|
|
27
|
+
return super.unifyTerm(term, context, (termUnifies)=>{
|
|
28
28
|
if (!termUnifies) {
|
|
29
29
|
return continuation(termUnifies);
|
|
30
30
|
}
|
|
@@ -34,7 +34,7 @@ const _default = (0, _elements.define)(class BracketedConstructor extends _const
|
|
|
34
34
|
return continuation(termUnifies);
|
|
35
35
|
}
|
|
36
36
|
const bracketlessTermNode = singularTermNode, bracketlessTerm = (0, _element.termFromTermNode)(bracketlessTermNode, context);
|
|
37
|
-
bracketlessTerm.validate(context, (bracketlessTerm, context)=>{
|
|
37
|
+
return bracketlessTerm.validate(context, (bracketlessTerm, context)=>{
|
|
38
38
|
if (bracketlessTerm === null) {
|
|
39
39
|
const termUnifies = false;
|
|
40
40
|
return continuation(termUnifies);
|
|
@@ -54,4 +54,4 @@ const _default = (0, _elements.define)(class BracketedConstructor extends _const
|
|
|
54
54
|
static name = "BracketedConstructor";
|
|
55
55
|
});
|
|
56
56
|
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L2NvbnN0cnVjdG9yL2JyYWNrZXRlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IHRlcm1Gcm9tVGVybU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2VsZW1lbnRcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIEJyYWNrZXRlZENvbnN0cnVjdG9yIGV4dGVuZHMgQ29uc3RydWN0b3Ige1xuICBnZXRCcmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIGJyYWNrZXRlZENvbnN0cnVjdG9yTm9kZSA9IG5vZGU7ICAvLy9cblxuICAgIHJldHVybiBicmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGU7XG4gIH1cblxuICB1bmlmeVRlcm0odGVybSwgY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgdGVybVN0cmluZyA9IHRlcm0uZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0gd2l0aCB0aGUgYnJhY2tldGVkIGNvbnN0cnVjdG9yLi4uYCk7XG5cbiAgICByZXR1cm4gc3VwZXIudW5pZnlUZXJtKHRlcm0sIGNvbnRleHQsICh0ZXJtVW5pZmllcykgPT4ge1xuICAgICAgaWYgKCF0ZXJtVW5pZmllcykge1xuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1VbmlmaWVzKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnJhY2tldGVkVGVybSA9IHRlcm0sIC8vL1xuICAgICAgICAgICAgYnJhY2tldGVkVGVybU5vZGUgPSBicmFja2V0ZWRUZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICAgIHNpbmd1bGFyVGVybU5vZGUgPSBicmFja2V0ZWRUZXJtTm9kZS5nZXRTaW5ndWxhclRlcm1Ob2RlKCk7XG5cbiAgICAgIGlmIChzaW5ndWxhclRlcm1Ob2RlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRlcm1VbmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih0ZXJtVW5pZmllcyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJyYWNrZXRsZXNzVGVybU5vZGUgPSBzaW5ndWxhclRlcm1Ob2RlLCAvLy9cbiAgICAgICAgICAgIGJyYWNrZXRsZXNzVGVybSA9IHRlcm1Gcm9tVGVybU5vZGUoYnJhY2tldGxlc3NUZXJtTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiBicmFja2V0bGVzc1Rlcm0udmFsaWRhdGUoY29udGV4dCwgKGJyYWNrZXRsZXNzVGVybSwgY29udGV4dCkgPT4ge1xuICAgICAgICBpZiAoYnJhY2tldGxlc3NUZXJtID09PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgdGVybVVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24odGVybVVuaWZpZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHRlcm1VbmlmaWVzO1xuXG4gICAgICAgIGNvbnN0IHR5cGUgPSBicmFja2V0bGVzc1Rlcm0uZ2V0VHlwZSgpLFxuICAgICAgICAgICAgICBwcm92aXNpb25hbCA9IGJyYWNrZXRsZXNzVGVybS5pc1Byb3Zpc2lvbmFsKCk7XG5cbiAgICAgICAgYnJhY2tldGVkVGVybS5zZXRUeXBlKHR5cGUpO1xuXG4gICAgICAgIGJyYWNrZXRlZFRlcm0uc2V0UHJvdmlzaW9uYWwocHJvdmlzaW9uYWwpO1xuXG4gICAgICAgIHRlcm1VbmlmaWVzID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGVybVVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB3aXRoIHRoZSBicmFja2V0ZWQgY29uc3RydWN0b3IuYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHRlcm1VbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIkJyYWNrZXRlZENvbnN0cnVjdG9yXCI7XG59KTtcbiJdLCJuYW1lcyI6WyJkZWZpbmUiLCJCcmFja2V0ZWRDb25zdHJ1Y3RvciIsIkNvbnN0cnVjdG9yIiwiZ2V0QnJhY2tldGVkQ29uc3RydWN0b3JOb2RlIiwibm9kZSIsImdldE5vZGUiLCJicmFja2V0ZWRDb25zdHJ1Y3Rvck5vZGUiLCJ1bmlmeVRlcm0iLCJ0ZXJtIiwiY29udGV4dCIsImNvbnRpbnVhdGlvbiIsInRlcm1TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInRlcm1VbmlmaWVzIiwiYnJhY2tldGVkVGVybSIsImJyYWNrZXRlZFRlcm1Ob2RlIiwic2luZ3VsYXJUZXJtTm9kZSIsImdldFNpbmd1bGFyVGVybU5vZGUiLCJicmFja2V0bGVzc1Rlcm1Ob2RlIiwiYnJhY2tldGxlc3NUZXJtIiwidGVybUZyb21UZXJtTm9kZSIsInZhbGlkYXRlIiwidHlwZSIsImdldFR5cGUiLCJwcm92aXNpb25hbCIsImlzUHJvdmlzaW9uYWwiLCJzZXRUeXBlIiwic2V0UHJvdmlzaW9uYWwiLCJkZWJ1ZyIsIm5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBQTs7O29FQUx3QjswQkFFRDt5QkFDVTs7Ozs7O01BRWpDLFdBQWVBLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsNkJBQTZCQyxvQkFBVztJQUNsRUMsOEJBQThCO1FBQzVCLE1BQU1DLE9BQU8sSUFBSSxDQUFDQyxPQUFPLElBQ25CQywyQkFBMkJGLE1BQU8sR0FBRztRQUUzQyxPQUFPRTtJQUNUO0lBRUFDLFVBQVVDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxZQUFZLEVBQUU7UUFDckMsTUFBTUMsYUFBYUgsS0FBS0ksU0FBUztRQUVqQ0gsUUFBUUksS0FBSyxDQUFDLENBQUMsY0FBYyxFQUFFRixXQUFXLHdDQUF3QyxDQUFDO1FBRW5GLE9BQU8sS0FBSyxDQUFDSixVQUFVQyxNQUFNQyxTQUFTLENBQUNLO1lBQ3JDLElBQUksQ0FBQ0EsYUFBYTtnQkFDaEIsT0FBT0osYUFBYUk7WUFDdEI7WUFFQSxNQUFNQyxnQkFBZ0JQLE1BQ2hCUSxvQkFBb0JELGNBQWNWLE9BQU8sSUFDekNZLG1CQUFtQkQsa0JBQWtCRSxtQkFBbUI7WUFFOUQsSUFBSUQscUJBQXFCLE1BQU07Z0JBQzdCLE1BQU1ILGNBQWM7Z0JBRXBCLE9BQU9KLGFBQWFJO1lBQ3RCO1lBRUEsTUFBTUssc0JBQXNCRixrQkFDdEJHLGtCQUFrQkMsSUFBQUEseUJBQWdCLEVBQUNGLHFCQUFxQlY7WUFFOUQsT0FBT1csZ0JBQWdCRSxRQUFRLENBQUNiLFNBQVMsQ0FBQ1csaUJBQWlCWDtnQkFDekQsSUFBSVcsb0JBQW9CLE1BQU07b0JBQzVCLE1BQU1OLGNBQWM7b0JBRXBCLE9BQU9KLGFBQWFJO2dCQUN0QjtnQkFFQSxJQUFJQTtnQkFFSixNQUFNUyxPQUFPSCxnQkFBZ0JJLE9BQU8sSUFDOUJDLGNBQWNMLGdCQUFnQk0sYUFBYTtnQkFFakRYLGNBQWNZLE9BQU8sQ0FBQ0o7Z0JBRXRCUixjQUFjYSxjQUFjLENBQUNIO2dCQUU3QlgsY0FBYztnQkFFZCxJQUFJQSxhQUFhO29CQUNmTCxRQUFRb0IsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVsQixXQUFXLHNDQUFzQyxDQUFDO2dCQUNyRjtnQkFFQSxPQUFPRCxhQUFhSTtZQUN0QjtRQUNGO0lBQ0Y7SUFFQSxPQUFPZ0IsT0FBTyx1QkFBdUI7QUFDdkMifQ==
|
package/lib/element/deduction.js
CHANGED
|
@@ -40,7 +40,7 @@ const _default = (0, _elements.define)(class Deduction extends _occamlanguages.E
|
|
|
40
40
|
}
|
|
41
41
|
(0, _context.declare)((context)=>{
|
|
42
42
|
(0, _context.elide)((context)=>{
|
|
43
|
-
this.validate(context, (validates)=>{
|
|
43
|
+
return this.validate(context, (validates)=>{
|
|
44
44
|
let verifies = false;
|
|
45
45
|
if (validates) {
|
|
46
46
|
verifies = true;
|
|
@@ -148,4 +148,4 @@ function statementFromDeductionNode(deductionNode, context) {
|
|
|
148
148
|
return statement;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2RlZHVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZHVjdGlvbiB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlbGlkZSwgZGVjbGFyZSwgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUsIHJlY29uY2lsZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIERlZHVjdGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXREZWR1Y3Rpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZGVkdWN0aW9uTm9kZTtcbiAgfVxuXG4gIGlzTm9uQnJlYWthYmxlKCkge1xuICAgIGNvbnN0IG5vbnNlbnNpY2FsID0gKHRoaXMuc3RhdGVtZW50ID09PSBudWxsKTtcblxuICAgIHJldHVybiBub25zZW5zaWNhbDtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IG5vbnNlbnNpY2FsID0gdGhpcy5pc05vbkJyZWFrYWJsZSgpO1xuXG4gICAgaWYgKG5vbnNlbnNpY2FsKSB7XG4gICAgICBjb25zdCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgfVxuXG4gICAgZGVjbGFyZSgoY29udGV4dCkgPT4ge1xuICAgICAgZWxpZGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZShjb250ZXh0LCAodmFsaWRhdGVzKSA9PiB7XG4gICAgICAgICAgbGV0IHZlcmlmaWVzID0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAodmFsaWRhdGVzKSB7XG4gICAgICAgICAgICB2ZXJpZmllcyA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb250aW51YXRpb24odmVyaWZpZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuICB9KTtcblxuICB2YWxpZGF0ZShjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGF0dGVtcHQoKGNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRlU3RhdGVtZW50KGNvbnRleHQsIChzdGF0ZW1lbnRWYWxpZGF0ZXMpID0+IHtcbiAgICAgICAgbGV0IHZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgIHRoaXMuY29tbWl0KGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnZhbGlkYXRlZCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2YWxpZGF0ZXMpO1xuICAgICAgfSk7XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICB2YWxpZGF0ZVN0YXRlbWVudChjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQuLi5gKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC52YWxpZGF0ZShjb250ZXh0LCAoc3RhdGVtZW50KSA9PiB7XG4gICAgICBsZXQgc3RhdGVtZW50VmFsaWRhdGVzID0gZmFsc2U7XG5cbiAgICAgIGlmIChzdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgc3RhdGVtZW50VmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXRlbWVudFZhbGlkYXRlcykge1xuICAgICAgICBjb250ZXh0LnRyYWNlKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnRWYWxpZGF0ZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgdW5pZnlTdGVwKHN0ZXAsIGNvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IHN0ZXBTdHJpbmcgPSBzdGVwLmdldFN0cmluZygpLFxuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCk7ICAvLy9cblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IHN0ZXBDb250ZXh0ID0gc3RlcC5nZXRDb250ZXh0KCksXG4gICAgICAgICAgZGVkdWN0aW9uQ29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpLCAgLy8vXG4gICAgICAgICAgZ2VuZXJhbENvbnRleHQgPSBkZWR1Y3Rpb25Db250ZXh0LCAvLy9cbiAgICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBzdGVwQ29udGV4dDsgIC8vL1xuXG4gICAgcmVjb25jaWxlKChzcGVjaWZpY0NvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YXRlbWVudCA9IHN0ZXAuZ2V0U3RhdGVtZW50KCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnN0YXRlbWVudC51bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIChzdGF0ZW1lbnRVbmlmaWVzKSA9PiB7XG4gICAgICAgIGxldCBzdGVwVW5pZmllcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0LmNvbW1pdChjb250ZXh0KTtcblxuICAgICAgICAgIHN0ZXBVbmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGVwVW5pZmllcykge1xuICAgICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0ZXBTdHJpbmd9JyBzdGVwIHdpdGggdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RlcFVuaWZpZXMpO1xuICAgICAgfSk7XG4gICAgfSwgc3BlY2lmaWNDb250ZXh0KTtcbiAgfVxuXG4gIHVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHNwZWNpZmljQ29udGV4dCwgIC8vL1xuICAgICAgICAgIGRlZHVjdGlvblN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksIC8vL1xuICAgICAgICAgIHN0YXRlbWVudFN0cmluZyA9IHN0YXRlbWVudC5nZXRTdHJpbmcoKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFVuaWZ5aW5nIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBzdGF0ZW1lbnQgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgaWYgKHN0YXRlbWVudFVuaWZpZXMpIHtcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udW5pZmllZCB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudC5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihzdGF0ZW1lbnRVbmlmaWVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5nZXRDb250ZXh0KCk7XG5cbiAgICByZXR1cm4gc2VyaWFsaXNlKChjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdldFN0cmluZygpO1xuXG4gICAgICBsZXQgYnJlYWtQb2ludDtcblxuICAgICAgYnJlYWtQb2ludCA9IHRoaXMuZ2V0QnJlYWtQb2ludCgpO1xuXG4gICAgICBjb25zdCBicmVha1BvaW50SlNPTiA9IGJyZWFrUG9pbnRUb0JyZWFrUG9pbnRKU09OKGJyZWFrUG9pbnQpO1xuXG4gICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEpTT047ICAvLy9cblxuICAgICAgY29uc3QganNvbiA9IHtcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBicmVha1BvaW50XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4ganNvbjtcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIHN0YXRpYyBuYW1lID0gXCJEZWR1Y3Rpb25cIjtcblxuICBzdGF0aWMgZnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICAgIGxldCBkZWR1Y3Rpb247XG5cbiAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgdW5zZXJpYWxpc2UoKGpzb24sIGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgICAgIGRlZHVjdGlvbk5vZGUgPSBpbnN0YW50aWF0ZURlZHVjdGlvbihzdHJpbmcsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBub2RlID0gZGVkdWN0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBicmVha1BvaW50ID0gYnJlYWtQb2ludEZyb21KU09OKGpzb24pLFxuICAgICAgICAgICAgICBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnRGcm9tRGVkdWN0aW9uTm9kZShkZWR1Y3Rpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBkZWR1Y3Rpb24gPSBuZXcgRGVkdWN0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCwgc3RhdGVtZW50KTtcbiAgICAgIH0sIGpzb24sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGRlZHVjdGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHN0YXRlbWVudEZyb21EZWR1Y3Rpb25Ob2RlKGRlZHVjdGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IGRlZHVjdGlvbk5vZGUuZ2V0U3RhdGVtZW50Tm9kZSgpLFxuICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHN0YXRlbWVudDtcbn1cbiJdLCJuYW1lcyI6WyJicmVha2FibGUiLCJicmVha1BvaW50RnJvbUpTT04iLCJicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiIsImJyZWFrUG9pbnRVdGlsaXRpZXMiLCJkZWZpbmUiLCJEZWR1Y3Rpb24iLCJFbGVtZW50IiwiY29udGV4dCIsInN0cmluZyIsIm5vZGUiLCJicmVha1BvaW50Iiwic3RhdGVtZW50IiwiZ2V0U3RhdGVtZW50IiwiZ2V0RGVkdWN0aW9uTm9kZSIsImdldE5vZGUiLCJkZWR1Y3Rpb25Ob2RlIiwiaXNOb25CcmVha2FibGUiLCJub25zZW5zaWNhbCIsInZlcmlmeSIsImNvbnRpbnVhdGlvbiIsImRlZHVjdGlvblN0cmluZyIsImdldFN0cmluZyIsInRyYWNlIiwidmVyaWZpZXMiLCJkZWJ1ZyIsImRlY2xhcmUiLCJlbGlkZSIsInZhbGlkYXRlIiwidmFsaWRhdGVzIiwiYXR0ZW1wdCIsInZhbGlkYXRlU3RhdGVtZW50Iiwic3RhdGVtZW50VmFsaWRhdGVzIiwiY29tbWl0IiwidW5pZnlTdGVwIiwic3RlcCIsInN0ZXBTdHJpbmciLCJzdGVwQ29udGV4dCIsImdldENvbnRleHQiLCJkZWR1Y3Rpb25Db250ZXh0IiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJyZWNvbmNpbGUiLCJ1bmlmeVN0YXRlbWVudCIsInN0YXRlbWVudFVuaWZpZXMiLCJzdGVwVW5pZmllcyIsInN0YXRlbWVudFN0cmluZyIsInRvSlNPTiIsInNlcmlhbGlzZSIsImdldEJyZWFrUG9pbnQiLCJicmVha1BvaW50SlNPTiIsImpzb24iLCJuYW1lIiwiZnJvbUpTT04iLCJkZWR1Y3Rpb24iLCJpbnN0YW50aWF0ZSIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGVEZWR1Y3Rpb24iLCJzdGF0ZW1lbnRGcm9tRGVkdWN0aW9uTm9kZSIsInN0YXRlbWVudE5vZGUiLCJnZXRTdGF0ZW1lbnROb2RlIiwiZmluZFN0YXRlbWVudEJ5U3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFBOzs7Z0NBUjZDOzBCQUV0Qjs2QkFDYzt5QkFDbUQ7QUFFeEYsTUFBTSxFQUFFQSxTQUFTLEVBQUVDLGtCQUFrQixFQUFFQywwQkFBMEIsRUFBRSxHQUFHQyxtQ0FBbUI7TUFFekYsV0FBZUMsSUFBQUEsZ0JBQU0sRUFBQyxNQUFNQyxrQkFBa0JDLHVCQUFPO0lBQ25ELFlBQVlDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxDQUFFO1FB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
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbGVtZW50L2RlZHVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgRWxlbWVudCwgYnJlYWtQb2ludFV0aWxpdGllcyB9IGZyb20gXCJvY2NhbS1sYW5ndWFnZXNcIjtcblxuaW1wb3J0IHsgZGVmaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyBpbnN0YW50aWF0ZURlZHVjdGlvbiB9IGZyb20gXCIuLi9wcm9jZXNzL2luc3RhbnRpYXRlXCI7XG5pbXBvcnQgeyBlbGlkZSwgZGVjbGFyZSwgYXR0ZW1wdCwgc2VyaWFsaXNlLCB1bnNlcmlhbGlzZSwgaW5zdGFudGlhdGUsIHJlY29uY2lsZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5jb25zdCB7IGJyZWFrYWJsZSwgYnJlYWtQb2ludEZyb21KU09OLCBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTiB9ID0gYnJlYWtQb2ludFV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lKGNsYXNzIERlZHVjdGlvbiBleHRlbmRzIEVsZW1lbnQge1xuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCkge1xuICAgIHN1cGVyKGNvbnRleHQsIHN0cmluZywgbm9kZSwgYnJlYWtQb2ludCk7XG5cbiAgICB0aGlzLnN0YXRlbWVudCA9IHN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQ7XG4gIH1cblxuICBnZXREZWR1Y3Rpb25Ob2RlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25Ob2RlID0gbm9kZTsgLy8vXG5cbiAgICByZXR1cm4gZGVkdWN0aW9uTm9kZTtcbiAgfVxuXG4gIGlzTm9uQnJlYWthYmxlKCkge1xuICAgIGNvbnN0IG5vbnNlbnNpY2FsID0gKHRoaXMuc3RhdGVtZW50ID09PSBudWxsKTtcblxuICAgIHJldHVybiBub25zZW5zaWNhbDtcbiAgfVxuXG4gIHZlcmlmeSA9IGJyZWFrYWJsZShmdW5jdGlvbiAoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uLi5gKTtcblxuICAgIGNvbnN0IG5vbnNlbnNpY2FsID0gdGhpcy5pc05vbkJyZWFrYWJsZSgpO1xuXG4gICAgaWYgKG5vbnNlbnNpY2FsKSB7XG4gICAgICBjb25zdCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gdmVyaWZ5IHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24gYmVjYXVzZSBpdCBpcyBub25zZW5zZS5gKTtcblxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbih2ZXJpZmllcyk7XG4gICAgfVxuXG4gICAgZGVjbGFyZSgoY29udGV4dCkgPT4ge1xuICAgICAgZWxpZGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGUoY29udGV4dCwgKHZhbGlkYXRlcykgPT4ge1xuICAgICAgICAgIGxldCB2ZXJpZmllcyA9IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKHZhbGlkYXRlcykge1xuICAgICAgICAgICAgdmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHZlcmlmaWVzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcbiAgfSk7XG5cbiAgdmFsaWRhdGUoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICBhdHRlbXB0KChjb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVN0YXRlbWVudChjb250ZXh0LCAoc3RhdGVtZW50VmFsaWRhdGVzKSA9PiB7XG4gICAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICAgICAgdmFsaWRhdGVzID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICB0aGlzLmNvbW1pdChjb250ZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbi5gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb24odmFsaWRhdGVzKTtcbiAgICAgIH0pO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgdmFsaWRhdGVTdGF0ZW1lbnQoY29udGV4dCwgY29udGludWF0aW9uKSB7XG4gICAgY29uc3QgZGVkdWN0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uJ3Mgc3RhdGVtZW50Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudmFsaWRhdGUoY29udGV4dCwgKHN0YXRlbWVudCkgPT4ge1xuICAgICAgbGV0IHN0YXRlbWVudFZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgICBpZiAoc3RhdGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHN0YXRlbWVudFZhbGlkYXRlcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgY29udGV4dC50cmFjZShgLi4udmFsaWRhdGVkIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VmFsaWRhdGVzKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVuaWZ5U3RlcChzdGVwLCBjb250ZXh0LCBjb250aW51YXRpb24pIHtcbiAgICBjb25zdCBzdGVwU3RyaW5nID0gc3RlcC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RlcFN0cmluZ30nIHN0ZXAgd2l0aCB0aGUgJyR7ZGVkdWN0aW9uU3RyaW5nfScgZGVkdWN0aW9uLi4uYCk7XG5cbiAgICBjb25zdCBzdGVwQ29udGV4dCA9IHN0ZXAuZ2V0Q29udGV4dCgpLFxuICAgICAgICAgIGRlZHVjdGlvbkNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSwgIC8vL1xuICAgICAgICAgIGdlbmVyYWxDb250ZXh0ID0gZGVkdWN0aW9uQ29udGV4dCwgLy8vXG4gICAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gc3RlcENvbnRleHQ7ICAvLy9cblxuICAgIHJlY29uY2lsZSgoc3BlY2lmaWNDb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnQgPSBzdGVwLmdldFN0YXRlbWVudCgpO1xuXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZW1lbnQudW5pZnlTdGF0ZW1lbnQoc3RhdGVtZW50LCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0LCAoc3RhdGVtZW50VW5pZmllcykgPT4ge1xuICAgICAgICBsZXQgc3RlcFVuaWZpZXMgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGVtZW50VW5pZmllcykge1xuICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5jb21taXQoY29udGV4dCk7XG5cbiAgICAgICAgICBzdGVwVW5pZmllcyA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RlcFVuaWZpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi51bmlmaWVkIHRoZSAnJHtzdGVwU3RyaW5nfScgc3RlcCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24uYCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uKHN0ZXBVbmlmaWVzKTtcbiAgICAgIH0pO1xuICAgIH0sIHNwZWNpZmljQ29udGV4dCk7XG4gIH1cblxuICB1bmlmeVN0YXRlbWVudChzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQsIGNvbnRpbnVhdGlvbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSBzcGVjaWZpY0NvbnRleHQsICAvLy9cbiAgICAgICAgICBkZWR1Y3Rpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpLCAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCk7XG5cbiAgICBjb250ZXh0LnRyYWNlKGBVbmlmeWluZyB0aGUgJyR7c3RhdGVtZW50U3RyaW5nfScgc3RhdGVtZW50IHdpdGggdGhlICcke2RlZHVjdGlvblN0cmluZ30nIGRlZHVjdGlvbidzIHN0YXRlbWVudC4uLmApO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50LnVuaWZ5U3RhdGVtZW50KHN0YXRlbWVudCwgZ2VuZXJhbENvbnRleHQsIHNwZWNpZmljQ29udGV4dCwgKHN0YXRlbWVudFVuaWZpZXMpID0+IHtcbiAgICAgIGlmIChzdGF0ZW1lbnRVbmlmaWVzKSB7XG4gICAgICAgIGNvbnRleHQuZGVidWcoYC4uLnVuaWZpZWQgdGhlICcke3N0YXRlbWVudFN0cmluZ30nIHN0YXRlbWVudCB3aXRoIHRoZSAnJHtkZWR1Y3Rpb25TdHJpbmd9JyBkZWR1Y3Rpb24ncyBzdGF0ZW1lbnQuYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oc3RhdGVtZW50VW5pZmllcyk7XG4gICAgfSk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0Q29udGV4dCgpO1xuXG4gICAgcmV0dXJuIHNlcmlhbGlzZSgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTtcblxuICAgICAgbGV0IGJyZWFrUG9pbnQ7XG5cbiAgICAgIGJyZWFrUG9pbnQgPSB0aGlzLmdldEJyZWFrUG9pbnQoKTtcblxuICAgICAgY29uc3QgYnJlYWtQb2ludEpTT04gPSBicmVha1BvaW50VG9CcmVha1BvaW50SlNPTihicmVha1BvaW50KTtcblxuICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRKU09OOyAgLy8vXG5cbiAgICAgIGNvbnN0IGpzb24gPSB7XG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgYnJlYWtQb2ludFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGpzb247XG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBzdGF0aWMgbmFtZSA9IFwiRGVkdWN0aW9uXCI7XG5cbiAgc3RhdGljIGZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgICBsZXQgZGVkdWN0aW9uO1xuXG4gICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RyaW5nIH0gPSBqc29uLFxuICAgICAgICAgICAgICBkZWR1Y3Rpb25Ob2RlID0gaW5zdGFudGlhdGVEZWR1Y3Rpb24oc3RyaW5nLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGRlZHVjdGlvbk5vZGUsICAvLy9cbiAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGJyZWFrUG9pbnRGcm9tSlNPTihqc29uKSxcbiAgICAgICAgICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUoZGVkdWN0aW9uTm9kZSwgY29udGV4dCk7XG5cbiAgICAgICAgZGVkdWN0aW9uID0gbmV3IERlZHVjdGlvbihjb250ZXh0LCBzdHJpbmcsIG5vZGUsIGJyZWFrUG9pbnQsIHN0YXRlbWVudCk7XG4gICAgICB9LCBqc29uLCBjb250ZXh0KTtcbiAgICB9LCBjb250ZXh0KTtcblxuICAgIHJldHVybiBkZWR1Y3Rpb247XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBzdGF0ZW1lbnRGcm9tRGVkdWN0aW9uTm9kZShkZWR1Y3Rpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBkZWR1Y3Rpb25Ob2RlLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiBzdGF0ZW1lbnQ7XG59XG4iXSwibmFtZXMiOlsiYnJlYWthYmxlIiwiYnJlYWtQb2ludEZyb21KU09OIiwiYnJlYWtQb2ludFRvQnJlYWtQb2ludEpTT04iLCJicmVha1BvaW50VXRpbGl0aWVzIiwiZGVmaW5lIiwiRGVkdWN0aW9uIiwiRWxlbWVudCIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwiYnJlYWtQb2ludCIsInN0YXRlbWVudCIsImdldFN0YXRlbWVudCIsImdldERlZHVjdGlvbk5vZGUiLCJnZXROb2RlIiwiZGVkdWN0aW9uTm9kZSIsImlzTm9uQnJlYWthYmxlIiwibm9uc2Vuc2ljYWwiLCJ2ZXJpZnkiLCJjb250aW51YXRpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsInZlcmlmaWVzIiwiZGVidWciLCJkZWNsYXJlIiwiZWxpZGUiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlcyIsImF0dGVtcHQiLCJ2YWxpZGF0ZVN0YXRlbWVudCIsInN0YXRlbWVudFZhbGlkYXRlcyIsImNvbW1pdCIsInVuaWZ5U3RlcCIsInN0ZXAiLCJzdGVwU3RyaW5nIiwic3RlcENvbnRleHQiLCJnZXRDb250ZXh0IiwiZGVkdWN0aW9uQ29udGV4dCIsImdlbmVyYWxDb250ZXh0Iiwic3BlY2lmaWNDb250ZXh0IiwicmVjb25jaWxlIiwidW5pZnlTdGF0ZW1lbnQiLCJzdGF0ZW1lbnRVbmlmaWVzIiwic3RlcFVuaWZpZXMiLCJzdGF0ZW1lbnRTdHJpbmciLCJ0b0pTT04iLCJzZXJpYWxpc2UiLCJnZXRCcmVha1BvaW50IiwiYnJlYWtQb2ludEpTT04iLCJqc29uIiwibmFtZSIsImZyb21KU09OIiwiZGVkdWN0aW9uIiwiaW5zdGFudGlhdGUiLCJ1bnNlcmlhbGlzZSIsImluc3RhbnRpYXRlRGVkdWN0aW9uIiwic3RhdGVtZW50RnJvbURlZHVjdGlvbk5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsImZpbmRTdGF0ZW1lbnRCeVN0YXRlbWVudE5vZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVVBOzs7ZUFBQTs7O2dDQVI2QzswQkFFdEI7NkJBQ2M7eUJBQ21EO0FBRXhGLE1BQU0sRUFBRUEsU0FBUyxFQUFFQyxrQkFBa0IsRUFBRUMsMEJBQTBCLEVBQUUsR0FBR0MsbUNBQW1CO01BRXpGLFdBQWVDLElBQUFBLGdCQUFNLEVBQUMsTUFBTUMsa0JBQWtCQyx1QkFBTztJQUNuRCxZQUFZQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxVQUFVLEVBQUVDLFNBQVMs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
|