occam-verify-cli 1.0.662 → 1.0.664
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/.swcrc +3 -0
- package/lib/abbreviations.js +10 -10
- package/lib/action/help.js +27 -2
- package/lib/action/verify.js +33 -205
- package/lib/action/version.js +6 -6
- package/lib/commands.js +4 -4
- package/lib/constants.js +16 -16
- package/lib/context/ephemeral.js +337 -540
- package/lib/context/file/nominal.js +545 -1040
- package/lib/context/liminal.js +159 -325
- package/lib/context/literal.js +34 -138
- package/lib/context/nominal.js +29 -124
- package/lib/context/scoped.js +163 -325
- package/lib/context/synthetic.js +31 -126
- package/lib/context.js +230 -482
- package/lib/defaults.js +8 -8
- package/lib/element/assertion/contained.js +159 -299
- package/lib/element/assertion/defined.js +145 -279
- package/lib/element/assertion/property.js +132 -266
- package/lib/element/assertion/satisfies.js +108 -239
- package/lib/element/assertion/subproof.js +88 -207
- package/lib/element/assertion/type.js +132 -262
- package/lib/element/assertion.js +17 -156
- package/lib/element/assumption.js +187 -386
- package/lib/element/combinator/bracketed.js +19 -142
- package/lib/element/combinator.js +65 -228
- package/lib/element/conclusion.js +72 -370
- package/lib/element/constructor/bracketed.js +34 -157
- package/lib/element/constructor.js +81 -253
- package/lib/element/declaration/combinator.js +41 -286
- package/lib/element/declaration/complexType.js +184 -452
- package/lib/element/declaration/constructor.js +69 -323
- package/lib/element/declaration/metavariable.js +70 -317
- package/lib/element/declaration/simpleType.js +117 -378
- package/lib/element/declaration/typePrefix.js +54 -299
- package/lib/element/declaration/variable.js +74 -328
- package/lib/element/declaration.js +3 -114
- package/lib/element/deduction.js +76 -378
- package/lib/element/derivation.js +31 -340
- package/lib/element/equality.js +152 -347
- package/lib/element/equivalence.js +160 -385
- package/lib/element/equivalences.js +132 -356
- package/lib/element/error.js +16 -290
- package/lib/element/frame.js +210 -418
- package/lib/element/hypothesis.js +56 -354
- package/lib/element/judgement.js +120 -305
- package/lib/element/label.js +62 -236
- package/lib/element/metaType.js +35 -200
- package/lib/element/metavariable.js +249 -459
- package/lib/element/parameter.js +39 -202
- package/lib/element/procedureCall.js +74 -381
- package/lib/element/procedureReference.js +27 -186
- package/lib/element/proof.js +38 -349
- package/lib/element/proofAssertion/premise.js +174 -466
- package/lib/element/proofAssertion/step.js +144 -495
- package/lib/element/proofAssertion/supposition.js +170 -466
- package/lib/element/proofAssertion.js +47 -195
- package/lib/element/property.js +36 -201
- package/lib/element/propertyRelation.js +62 -223
- package/lib/element/reference.js +173 -378
- package/lib/element/rule.js +178 -673
- package/lib/element/section.js +47 -356
- package/lib/element/signature.js +96 -264
- package/lib/element/statement.js +195 -395
- package/lib/element/subDerivation.js +32 -341
- package/lib/element/subproof.js +73 -448
- package/lib/element/substitution/frame.js +114 -257
- package/lib/element/substitution/reference.js +108 -248
- package/lib/element/substitution/statement.js +223 -397
- package/lib/element/substitution/term.js +123 -266
- package/lib/element/substitution.js +97 -296
- package/lib/element/term.js +139 -339
- package/lib/element/topLevelAssertion/axiom.js +153 -459
- package/lib/element/topLevelAssertion/conjecture.js +24 -295
- package/lib/element/topLevelAssertion/lemma.js +22 -289
- package/lib/element/topLevelAssertion/theorem.js +24 -295
- package/lib/element/topLevelAssertion.js +218 -718
- package/lib/element/topLevelMetaAssertion/metaLemma.js +24 -290
- package/lib/element/topLevelMetaAssertion/metatheorem.js +24 -290
- package/lib/element/topLevelMetaAssertion.js +109 -509
- package/lib/element/type.js +198 -435
- package/lib/element/typePrefix.js +27 -186
- package/lib/element/variable.js +119 -308
- package/lib/elements.js +4 -4
- package/lib/index.js +4 -4
- package/lib/main.js +18 -18
- package/lib/messages.js +2 -2
- package/lib/metaTypeNames.js +4 -4
- package/lib/metaTypes.js +10 -10
- package/lib/node/argument.js +15 -109
- package/lib/node/assertion/contained.js +33 -130
- package/lib/node/assertion/defined.js +29 -123
- package/lib/node/assertion/property.js +18 -112
- package/lib/node/assertion/satisfies.js +14 -105
- package/lib/node/assertion/subproof.js +10 -98
- package/lib/node/assertion/type.js +14 -105
- package/lib/node/assertion.js +5 -89
- package/lib/node/assumption.js +12 -103
- package/lib/node/body/axiom.js +5 -89
- package/lib/node/body/conjecture.js +5 -89
- package/lib/node/body/lemma.js +5 -89
- package/lib/node/body/metaLemma.js +5 -89
- package/lib/node/body/metatheorem.js +5 -89
- package/lib/node/body/rule.js +26 -126
- package/lib/node/body/theorem.js +5 -89
- package/lib/node/body.js +15 -109
- package/lib/node/combinator.js +9 -97
- package/lib/node/conclusion.js +12 -103
- package/lib/node/constructor.js +9 -97
- package/lib/node/declaration/combinator.js +10 -98
- package/lib/node/declaration/complexType.js +53 -162
- package/lib/node/declaration/constructor.js +29 -123
- package/lib/node/declaration/metavariable.js +18 -112
- package/lib/node/declaration/property.js +26 -123
- package/lib/node/declaration/simpleType.js +52 -158
- package/lib/node/declaration/typePrefix.js +14 -105
- package/lib/node/declaration/variable.js +33 -130
- package/lib/node/declaration.js +5 -89
- package/lib/node/deduction.js +12 -103
- package/lib/node/derivation.js +12 -125
- package/lib/node/document.js +5 -89
- package/lib/node/equality.js +17 -111
- package/lib/node/equivalence.js +9 -97
- package/lib/node/equivalences.js +5 -89
- package/lib/node/error.js +5 -89
- package/lib/node/frame.js +26 -123
- package/lib/node/header/axiom.js +10 -98
- package/lib/node/header/conjecture.js +5 -89
- package/lib/node/header/lemma.js +5 -89
- package/lib/node/header/metaLemma.js +5 -89
- package/lib/node/header/metatheorem.js +5 -89
- package/lib/node/header/rule.js +5 -89
- package/lib/node/header/theorem.js +5 -89
- package/lib/node/header.js +30 -130
- package/lib/node/hypothesis.js +12 -103
- package/lib/node/judgement.js +15 -109
- package/lib/node/label.js +9 -97
- package/lib/node/labels.js +9 -97
- package/lib/node/metaArgument.js +9 -97
- package/lib/node/metaType.js +16 -104
- package/lib/node/metavariable.js +23 -117
- package/lib/node/parameter.js +32 -123
- package/lib/node/parenthesisedLabel.js +9 -97
- package/lib/node/parenthesisedLabels.js +12 -103
- package/lib/node/placeholder.js +5 -89
- package/lib/node/procedureCall.js +15 -109
- package/lib/node/procedureReference.js +16 -104
- package/lib/node/proof.js +9 -97
- package/lib/node/proofAssertion/premise.js +10 -98
- package/lib/node/proofAssertion/step.js +32 -132
- package/lib/node/proofAssertion/supposition.js +10 -98
- package/lib/node/proofAssertion.js +12 -103
- package/lib/node/property.js +15 -106
- package/lib/node/propertyRelation.js +15 -109
- package/lib/node/qualification.js +12 -103
- package/lib/node/reference.js +9 -97
- package/lib/node/rule.js +26 -129
- package/lib/node/section.js +22 -122
- package/lib/node/signature.js +9 -97
- package/lib/node/statement.js +93 -238
- package/lib/node/subDerivation.js +12 -125
- package/lib/node/subproof.js +18 -115
- package/lib/node/substitution/frame.js +22 -119
- package/lib/node/substitution/reference.js +22 -119
- package/lib/node/substitution/statement.js +42 -151
- package/lib/node/substitution/term.js +22 -119
- package/lib/node/substitution.js +5 -89
- package/lib/node/term.js +51 -160
- package/lib/node/topLevelAssertion/axiom.js +8 -105
- package/lib/node/topLevelAssertion/conjecture.js +8 -105
- package/lib/node/topLevelAssertion/lemma.js +8 -105
- package/lib/node/topLevelAssertion/theorem.js +8 -105
- package/lib/node/topLevelAssertion.js +29 -135
- package/lib/node/topLevelMetaAssertion/metaLemma.js +8 -105
- package/lib/node/topLevelMetaAssertion/metatheorem.js +8 -105
- package/lib/node/topLevelMetaAssertion.js +25 -128
- package/lib/node/type.js +43 -140
- package/lib/node/typePrefix.js +16 -104
- package/lib/node/types.js +9 -97
- package/lib/node/variable.js +16 -104
- package/lib/nominal/lexer.js +3 -68
- package/lib/nominal/parser.js +7 -85
- package/lib/nonTerminalNodeMap.js +171 -101
- package/lib/options.js +6 -6
- package/lib/preamble.js +62 -62
- package/lib/prepare.js +4 -4
- package/lib/process/assign.js +20 -20
- package/lib/process/equate.js +39 -117
- package/lib/process/instantiate.js +10 -9
- package/lib/process/unify.js +199 -325
- package/lib/process/validate.js +87 -195
- package/lib/process/verify.js +263 -786
- package/lib/ruleNames.js +84 -84
- package/lib/tokenTypes.js +3 -3
- package/lib/utilities/bnf.js +7 -7
- package/lib/utilities/brackets.js +18 -18
- package/lib/utilities/clock.js +8 -8
- package/lib/utilities/context.js +23 -191
- package/lib/utilities/element.js +276 -276
- package/lib/utilities/equivalence.js +7 -7
- package/lib/utilities/fileContext.js +9 -9
- package/lib/utilities/instance.js +14 -14
- package/lib/utilities/json.js +211 -211
- package/lib/utilities/releaseContext.js +19 -147
- package/lib/utilities/statement.js +10 -10
- package/lib/utilities/string.js +47 -47
- package/lib/utilities/substitutions.js +19 -19
- package/lib/utilities/type.js +5 -5
- package/lib/utilities/unification.js +196 -426
- package/lib/utilities/validation.js +72 -72
- package/package.json +1 -1
|
@@ -16,155 +16,27 @@ _export(exports, {
|
|
|
16
16
|
return releaseContextFromDependency;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
function _async_to_generator(fn) {
|
|
37
|
-
return function() {
|
|
38
|
-
var self = this, args = arguments;
|
|
39
|
-
return new Promise(function(resolve, reject) {
|
|
40
|
-
var gen = fn.apply(self, args);
|
|
41
|
-
function _next(value) {
|
|
42
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
43
|
-
}
|
|
44
|
-
function _throw(err) {
|
|
45
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
46
|
-
}
|
|
47
|
-
_next(undefined);
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
function _ts_generator(thisArg, body) {
|
|
52
|
-
var f, y, t, _ = {
|
|
53
|
-
label: 0,
|
|
54
|
-
sent: function() {
|
|
55
|
-
if (t[0] & 1) throw t[1];
|
|
56
|
-
return t[1];
|
|
57
|
-
},
|
|
58
|
-
trys: [],
|
|
59
|
-
ops: []
|
|
60
|
-
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
61
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
62
|
-
return this;
|
|
63
|
-
}), g;
|
|
64
|
-
function verb(n) {
|
|
65
|
-
return function(v) {
|
|
66
|
-
return step([
|
|
67
|
-
n,
|
|
68
|
-
v
|
|
69
|
-
]);
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
function step(op) {
|
|
73
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
74
|
-
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
75
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
76
|
-
if (y = 0, t) op = [
|
|
77
|
-
op[0] & 2,
|
|
78
|
-
t.value
|
|
79
|
-
];
|
|
80
|
-
switch(op[0]){
|
|
81
|
-
case 0:
|
|
82
|
-
case 1:
|
|
83
|
-
t = op;
|
|
84
|
-
break;
|
|
85
|
-
case 4:
|
|
86
|
-
_.label++;
|
|
87
|
-
return {
|
|
88
|
-
value: op[1],
|
|
89
|
-
done: false
|
|
90
|
-
};
|
|
91
|
-
case 5:
|
|
92
|
-
_.label++;
|
|
93
|
-
y = op[1];
|
|
94
|
-
op = [
|
|
95
|
-
0
|
|
96
|
-
];
|
|
97
|
-
continue;
|
|
98
|
-
case 7:
|
|
99
|
-
op = _.ops.pop();
|
|
100
|
-
_.trys.pop();
|
|
101
|
-
continue;
|
|
102
|
-
default:
|
|
103
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
104
|
-
_ = 0;
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
108
|
-
_.label = op[1];
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
112
|
-
_.label = t[1];
|
|
113
|
-
t = op;
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
if (t && _.label < t[2]) {
|
|
117
|
-
_.label = t[2];
|
|
118
|
-
_.ops.push(op);
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
if (t[2]) _.ops.pop();
|
|
122
|
-
_.trys.pop();
|
|
123
|
-
continue;
|
|
124
|
-
}
|
|
125
|
-
op = body.call(thisArg, _);
|
|
126
|
-
} catch (e) {
|
|
127
|
-
op = [
|
|
128
|
-
6,
|
|
129
|
-
e
|
|
130
|
-
];
|
|
131
|
-
y = 0;
|
|
132
|
-
} finally{
|
|
133
|
-
f = t = 0;
|
|
19
|
+
const _occamlanguages = require("occam-languages");
|
|
20
|
+
const _occamfilesystem = require("occam-file-system");
|
|
21
|
+
const _necessary = require("necessary");
|
|
22
|
+
const { loadProject } = _occamfilesystem.fileSystemUtilities, { concatenatePaths } = _necessary.pathUtilities, { readFile, isEntryFile, checkEntryExists } = _necessary.fileSystemUtilities, { releaseContextFromJSON, releaseContextFromProject } = _occamlanguages.releaseContextUtilities;
|
|
23
|
+
async function releaseContextFromDependency(dependency, context) {
|
|
24
|
+
let releaseContext = null;
|
|
25
|
+
const projectsDirectoryPath = process.cwd(), dependencyName = dependency.getName(), entryPath = concatenatePaths(projectsDirectoryPath, dependencyName), entryExists = checkEntryExists(entryPath);
|
|
26
|
+
if (entryExists) {
|
|
27
|
+
const entryFile = isEntryFile(entryPath);
|
|
28
|
+
if (entryFile) {
|
|
29
|
+
const filePath = entryPath, content = readFile(filePath), jsonString = content, json = JSON.parse(jsonString);
|
|
30
|
+
releaseContext = releaseContextFromJSON(json, context);
|
|
31
|
+
} else {
|
|
32
|
+
const projectName = dependencyName, project = loadProject(projectName, projectsDirectoryPath);
|
|
33
|
+
releaseContext = releaseContextFromProject(project, context);
|
|
134
34
|
}
|
|
135
|
-
if (op[0] & 5) throw op[1];
|
|
136
|
-
return {
|
|
137
|
-
value: op[0] ? op[1] : void 0,
|
|
138
|
-
done: true
|
|
139
|
-
};
|
|
140
35
|
}
|
|
36
|
+
return releaseContext;
|
|
141
37
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
return _async_to_generator(function() {
|
|
145
|
-
var releaseContext, projectsDirectoryPath, dependencyName, entryPath, entryExists, entryFile, filePath, content, jsonString, json, projectName, project;
|
|
146
|
-
return _ts_generator(this, function(_state) {
|
|
147
|
-
releaseContext = null;
|
|
148
|
-
projectsDirectoryPath = process.cwd(), dependencyName = dependency.getName(), entryPath = concatenatePaths(projectsDirectoryPath, dependencyName), entryExists = checkEntryExists(entryPath);
|
|
149
|
-
if (entryExists) {
|
|
150
|
-
entryFile = isEntryFile(entryPath);
|
|
151
|
-
if (entryFile) {
|
|
152
|
-
filePath = entryPath, content = readFile(filePath), jsonString = content, json = JSON.parse(jsonString);
|
|
153
|
-
releaseContext = releaseContextFromJSON(json, context);
|
|
154
|
-
} else {
|
|
155
|
-
projectName = dependencyName, project = loadProject(projectName, projectsDirectoryPath);
|
|
156
|
-
releaseContext = releaseContextFromProject(project, context);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return [
|
|
160
|
-
2,
|
|
161
|
-
releaseContext
|
|
162
|
-
];
|
|
163
|
-
});
|
|
164
|
-
})();
|
|
165
|
-
}
|
|
166
|
-
var _default = {
|
|
167
|
-
releaseContextFromDependency: releaseContextFromDependency
|
|
38
|
+
const _default = {
|
|
39
|
+
releaseContextFromDependency
|
|
168
40
|
};
|
|
169
41
|
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcmVsZWFzZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzIH0gZnJvbSBcIm9jY2FtLWxhbmd1YWdlc1wiO1xuaW1wb3J0IHsgZmlsZVN5c3RlbVV0aWxpdGllcyBhcyBvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMgfSBmcm9tIFwib2NjYW0tZmlsZS1zeXN0ZW1cIjtcbmltcG9ydCB7IHBhdGhVdGlsaXRpZXMsIGZpbGVTeXN0ZW1VdGlsaXRpZXMgYXMgbmVjZXNzYXJ5RmlsZVN5c3RlbVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBsb2FkUHJvamVjdCB9ID0gb2NjYW1GaWxlU3lzdGVtVXRpbGl0aWVzLFxuICAgICAgeyBjb25jYXRlbmF0ZVBhdGhzIH0gPSBwYXRoVXRpbGl0aWVzLFxuICAgICAgeyByZWFkRmlsZSwgaXNFbnRyeUZpbGUsIGNoZWNrRW50cnlFeGlzdHMgfSA9IG5lY2Vzc2FyeUZpbGVTeXN0ZW1VdGlsaXRpZXMsXG4gICAgICB7IHJlbGVhc2VDb250ZXh0RnJvbUpTT04sIHJlbGVhc2VDb250ZXh0RnJvbVByb2plY3QgfSA9IHJlbGVhc2VDb250ZXh0VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dCA9IG51bGw7XG5cbiAgY29uc3QgcHJvamVjdHNEaXJlY3RvcnlQYXRoID0gcHJvY2Vzcy5jd2QoKSwgLy8vXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGVudHJ5UGF0aCA9IGNvbmNhdGVuYXRlUGF0aHMocHJvamVjdHNEaXJlY3RvcnlQYXRoLCBkZXBlbmRlbmN5TmFtZSksXG4gICAgICAgIGVudHJ5RXhpc3RzID0gY2hlY2tFbnRyeUV4aXN0cyhlbnRyeVBhdGgpO1xuXG4gIGlmIChlbnRyeUV4aXN0cykge1xuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGlzRW50cnlGaWxlKGVudHJ5UGF0aCk7XG5cbiAgICBpZiAoZW50cnlGaWxlKSB7XG4gICAgICBjb25zdCBmaWxlUGF0aCA9IGVudHJ5UGF0aCwgLy8vXG4gICAgICAgICAgICBjb250ZW50ID0gcmVhZEZpbGUoZmlsZVBhdGgpLFxuICAgICAgICAgICAganNvblN0cmluZyA9IGNvbnRlbnQsIC8vL1xuICAgICAgICAgICAganNvbiA9IEpTT04ucGFyc2UoanNvblN0cmluZyk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcHJvamVjdE5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgICAgICBwcm9qZWN0ID0gbG9hZFByb2plY3QocHJvamVjdE5hbWUsIHByb2plY3RzRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRGcm9tUHJvamVjdChwcm9qZWN0LCBjb250ZXh0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeVxufTtcbiJdLCJuYW1lcyI6WyJyZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IiwibG9hZFByb2plY3QiLCJvY2NhbUZpbGVTeXN0ZW1VdGlsaXRpZXMiLCJjb25jYXRlbmF0ZVBhdGhzIiwicGF0aFV0aWxpdGllcyIsInJlYWRGaWxlIiwiaXNFbnRyeUZpbGUiLCJjaGVja0VudHJ5RXhpc3RzIiwibmVjZXNzYXJ5RmlsZVN5c3RlbVV0aWxpdGllcyIsInJlbGVhc2VDb250ZXh0RnJvbUpTT04iLCJyZWxlYXNlQ29udGV4dEZyb21Qcm9qZWN0IiwicmVsZWFzZUNvbnRleHRVdGlsaXRpZXMiLCJkZXBlbmRlbmN5IiwiY29udGV4dCIsInJlbGVhc2VDb250ZXh0IiwicHJvamVjdHNEaXJlY3RvcnlQYXRoIiwicHJvY2VzcyIsImN3ZCIsImRlcGVuZGVuY3lOYW1lIiwiZ2V0TmFtZSIsImVudHJ5UGF0aCIsImVudHJ5RXhpc3RzIiwiZW50cnlGaWxlIiwiZmlsZVBhdGgiLCJjb250ZW50IiwianNvblN0cmluZyIsImpzb24iLCJKU09OIiwicGFyc2UiLCJwcm9qZWN0TmFtZSIsInByb2plY3QiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXdDQTtlQUFBOztRQTdCc0JBO2VBQUFBOzs7Z0NBVGtCO2lDQUN3QjsyQkFDbUI7QUFFbkYsTUFBTSxFQUFFQyxXQUFXLEVBQUUsR0FBR0Msb0NBQXdCLEVBQzFDLEVBQUVDLGdCQUFnQixFQUFFLEdBQUdDLHdCQUFhLEVBQ3BDLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxnQkFBZ0IsRUFBRSxHQUFHQyw4QkFBNEIsRUFDMUUsRUFBRUMsc0JBQXNCLEVBQUVDLHlCQUF5QixFQUFFLEdBQUdDLHVDQUF1QjtBQUU5RSxlQUFlWCw2QkFBNkJZLFVBQVUsRUFBRUMsT0FBTztJQUNwRSxJQUFJQyxpQkFBaUI7SUFFckIsTUFBTUMsd0JBQXdCQyxRQUFRQyxHQUFHLElBQ25DQyxpQkFBaUJOLFdBQVdPLE9BQU8sSUFDbkNDLFlBQVlqQixpQkFBaUJZLHVCQUF1QkcsaUJBQ3BERyxjQUFjZCxpQkFBaUJhO0lBRXJDLElBQUlDLGFBQWE7UUFDZixNQUFNQyxZQUFZaEIsWUFBWWM7UUFFOUIsSUFBSUUsV0FBVztZQUNiLE1BQU1DLFdBQVdILFdBQ1hJLFVBQVVuQixTQUFTa0IsV0FDbkJFLGFBQWFELFNBQ2JFLE9BQU9DLEtBQUtDLEtBQUssQ0FBQ0g7WUFFeEJYLGlCQUFpQkwsdUJBQXVCaUIsTUFBTWI7UUFDaEQsT0FBTztZQUNMLE1BQU1nQixjQUFjWCxnQkFDZFksVUFBVTdCLFlBQVk0QixhQUFhZDtZQUV6Q0QsaUJBQWlCSiwwQkFBMEJvQixTQUFTakI7UUFDdEQ7SUFDRjtJQUVBLE9BQU9DO0FBQ1Q7TUFFQSxXQUFlO0lBQ2JkO0FBQ0YifQ==
|
|
@@ -34,38 +34,38 @@ _export(exports, {
|
|
|
34
34
|
return typeAssertionFromStatement;
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
|
-
|
|
37
|
+
const _element = require("../utilities/element");
|
|
38
38
|
function equalityFromStatement(statement, context) {
|
|
39
|
-
|
|
39
|
+
const statementNode = statement.getNode(), equality = (0, _element.equalityFromStatementNode)(statementNode, context);
|
|
40
40
|
return equality;
|
|
41
41
|
}
|
|
42
42
|
function judgementFromStatement(statement, context) {
|
|
43
|
-
|
|
43
|
+
const statementNode = statement.getNode(), judgement = (0, _element.judgementFromStatementNode)(statementNode, context);
|
|
44
44
|
return judgement;
|
|
45
45
|
}
|
|
46
46
|
function typeAssertionFromStatement(statement, context) {
|
|
47
|
-
|
|
47
|
+
const statementNode = statement.getNode(), typeAssertion = (0, _element.typeAssertionFromStatementNode)(statementNode, context);
|
|
48
48
|
return typeAssertion;
|
|
49
49
|
}
|
|
50
50
|
function definedAssertionFromStatement(statement, context) {
|
|
51
|
-
|
|
51
|
+
const statementNode = statement.getNode(), definedAssertion = (0, _element.definedAssertionFromStatementNode)(statementNode, context);
|
|
52
52
|
return definedAssertion;
|
|
53
53
|
}
|
|
54
54
|
function propertyAssertionFromStatement(statement, context) {
|
|
55
|
-
|
|
55
|
+
const statementNode = statement.getNode(), propertyAssertion = (0, _element.propertyAssertionFromStatementNode)(statementNode, context);
|
|
56
56
|
return propertyAssertion;
|
|
57
57
|
}
|
|
58
58
|
function subproofAssertionFromStatement(statement, context) {
|
|
59
|
-
|
|
59
|
+
const statementNode = statement.getNode(), subproofAssertion = (0, _element.subproofAssertionFromStatementNode)(statementNode, context);
|
|
60
60
|
return subproofAssertion;
|
|
61
61
|
}
|
|
62
62
|
function containedAssertionFromStatement(statement, context) {
|
|
63
|
-
|
|
63
|
+
const statementNode = statement.getNode(), containedAssertion = (0, _element.containedAssertionFromStatementNode)(statementNode, context);
|
|
64
64
|
return containedAssertion;
|
|
65
65
|
}
|
|
66
66
|
function satisfiesAssertionFromStatement(statement, context) {
|
|
67
|
-
|
|
67
|
+
const statementNode = statement.getNode(), satisfiesAssertion = (0, _element.satisfiesAssertionFromStatementNode)(statementNode, context);
|
|
68
68
|
return satisfiesAssertion;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlLFxuICAgICAgICAganVkZ2VtZW50RnJvbVN0YXRlbWVudE5vZGUsXG4gICAgICAgICBtZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIHR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIGRlZmluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIHByb3BlcnR5QXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUsXG4gICAgICAgICBzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlLFxuICAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUsXG4gICAgICAgICBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvZWxlbWVudFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdHlGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgZXF1YWxpdHkgPSBlcXVhbGl0eUZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBlcXVhbGl0eTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp1ZGdlbWVudEZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBqdWRnZW1lbnQgPSBqdWRnZW1lbnRGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4ganVkZ2VtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgcHJvcGVydHlBc3NlcnRpb24gPSBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9wZXJ0eUFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhdGlzZmllc0Fzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBzYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gc2F0aXNmaWVzQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsImVxdWFsaXR5RnJvbVN0YXRlbWVudCIsImp1ZGdlbWVudEZyb21TdGF0ZW1lbnQiLCJwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Iiwic3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50IiwidHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJjb250ZXh0Iiwic3RhdGVtZW50Tm9kZSIsImdldE5vZGUiLCJlcXVhbGl0eSIsImVxdWFsaXR5RnJvbVN0YXRlbWVudE5vZGUiLCJqdWRnZW1lbnQiLCJqdWRnZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSIsInR5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwicHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJzYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBc0RnQkE7ZUFBQUE7O1FBckJBQztlQUFBQTs7UUFyQkFDO2VBQUFBOztRQU9BQztlQUFBQTs7UUFxQkFDO2VBQUFBOztRQXFCQUM7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQXJCQUM7ZUFBQUE7Ozt5QkFoQm9DO0FBRTdDLFNBQVNMLHNCQUFzQk0sU0FBUyxFQUFFQyxPQUFPO0lBQ3RELE1BQU1DLGdCQUFnQkYsVUFBVUcsT0FBTyxJQUNqQ0MsV0FBV0MsSUFBQUEsa0NBQXlCLEVBQUNILGVBQWVEO0lBRTFELE9BQU9HO0FBQ1Q7QUFFTyxTQUFTVCx1QkFBdUJLLFNBQVMsRUFBRUMsT0FBTztJQUN2RCxNQUFNQyxnQkFBZ0JGLFVBQVVHLE9BQU8sSUFDakNHLFlBQVlDLElBQUFBLG1DQUEwQixFQUFDTCxlQUFlRDtJQUU1RCxPQUFPSztBQUNUO0FBRU8sU0FBU1AsMkJBQTJCQyxTQUFTLEVBQUVDLE9BQU87SUFDM0QsTUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDSyxnQkFBZ0JDLElBQUFBLHVDQUE4QixFQUFDUCxlQUFlRDtJQUVwRSxPQUFPTztBQUNUO0FBRU8sU0FBU2YsOEJBQThCTyxTQUFTLEVBQUVDLE9BQU87SUFDOUQsTUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDTyxtQkFBbUJDLElBQUFBLDBDQUFpQyxFQUFDVCxlQUFlRDtJQUUxRSxPQUFPUztBQUNUO0FBRU8sU0FBU2QsK0JBQStCSSxTQUFTLEVBQUVDLE9BQU87SUFDL0QsTUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDUyxvQkFBb0JDLElBQUFBLDJDQUFrQyxFQUFDWCxlQUFlRDtJQUU1RSxPQUFPVztBQUNUO0FBRU8sU0FBU2QsK0JBQStCRSxTQUFTLEVBQUVDLE9BQU87SUFDL0QsTUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDVyxvQkFBb0JDLElBQUFBLDJDQUFrQyxFQUFDYixlQUFlRDtJQUU1RSxPQUFPYTtBQUNUO0FBRU8sU0FBU3RCLGdDQUFnQ1EsU0FBUyxFQUFFQyxPQUFPO0lBQ2hFLE1BQU1DLGdCQUFnQkYsVUFBVUcsT0FBTyxJQUNqQ2EscUJBQXFCQyxJQUFBQSw0Q0FBbUMsRUFBQ2YsZUFBZUQ7SUFFOUUsT0FBT2U7QUFDVDtBQUVPLFNBQVNuQixnQ0FBZ0NHLFNBQVMsRUFBRUMsT0FBTztJQUNoRSxNQUFNQyxnQkFBZ0JGLFVBQVVHLE9BQU8sSUFDakNlLHFCQUFxQkMsSUFBQUEsNENBQW1DLEVBQUNqQixlQUFlRDtJQUU5RSxPQUFPaUI7QUFDVCJ9
|
package/lib/utilities/string.js
CHANGED
|
@@ -79,143 +79,143 @@ _export(exports, {
|
|
|
79
79
|
return typeStringFromTypeNameTypePrefixNameAndSuperTypes;
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
|
-
|
|
82
|
+
const _type = require("../utilities/type");
|
|
83
83
|
function termsStringFromTerms(terms) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
termsString = termsString !== null ?
|
|
84
|
+
const termsString = terms.reduce((termsString, term)=>{
|
|
85
|
+
const termString = term.getString();
|
|
86
|
+
termsString = termsString !== null ? `${termsString}, ${termString}` : termString;
|
|
87
87
|
return termsString;
|
|
88
88
|
}, null);
|
|
89
89
|
return termsString;
|
|
90
90
|
}
|
|
91
91
|
function labelsStringFromLabels(labels) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
labelsString = labelsString === null ? labelString :
|
|
92
|
+
const labelsString = labels.reduce((labelsString, label)=>{
|
|
93
|
+
const labelString = label.getString();
|
|
94
|
+
labelsString = labelsString === null ? labelString : `${labelsString}, ${labelString}`;
|
|
95
95
|
return labelsString;
|
|
96
96
|
}, null);
|
|
97
97
|
return labelsString;
|
|
98
98
|
}
|
|
99
99
|
function premisesStringFromPremises(premises) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
premisesString = premisesString !== null ?
|
|
100
|
+
const premisesString = premises.reduce((premisesString, premise)=>{
|
|
101
|
+
const premiseString = premise.getString();
|
|
102
|
+
premisesString = premisesString !== null ? `${premisesString}, ${premiseString}` : premiseString; ///
|
|
103
103
|
return premisesString;
|
|
104
104
|
}, null);
|
|
105
105
|
return premisesString;
|
|
106
106
|
}
|
|
107
107
|
function hypothesesStringFromHypotheses(hypotheses) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
hypothesesString = hypothesesString !== null ?
|
|
108
|
+
const hypothesesString = hypotheses.reduce((hypothesesString, hypothesis)=>{
|
|
109
|
+
const hypothesisString = hypothesis.getString();
|
|
110
|
+
hypothesesString = hypothesesString !== null ? `${hypothesesString}, ${hypothesisString}` : hypothesisString; ///
|
|
111
111
|
return hypothesesString;
|
|
112
112
|
}, null);
|
|
113
113
|
return hypothesesString;
|
|
114
114
|
}
|
|
115
115
|
function superTypesStringFromSuperTypes(superTypes) {
|
|
116
|
-
|
|
116
|
+
const baseType = (0, _type.baseTypeFromNothing)(), superTypesString = superTypes.reduce((superTypesString, superType)=>{
|
|
117
117
|
if (superType !== baseType) {
|
|
118
|
-
|
|
119
|
-
superTypesString = superTypesString === null ?
|
|
118
|
+
const superTypeString = superType.getString();
|
|
119
|
+
superTypesString = superTypesString === null ? `'${superTypeString}'` : `${superTypesString}, '${superTypeString}'`;
|
|
120
120
|
}
|
|
121
121
|
return superTypesString;
|
|
122
122
|
}, null);
|
|
123
123
|
return superTypesString;
|
|
124
124
|
}
|
|
125
125
|
function parametersStringFromParameters(parameters) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
parametersString = parametersString === null ? parameterString :
|
|
126
|
+
const parametersString = parameters.reduce((parametersString, parameter)=>{
|
|
127
|
+
const parameterString = parameter.getString();
|
|
128
|
+
parametersString = parametersString === null ? parameterString : `${parametersString}, ${parameterString}`;
|
|
129
129
|
return parametersString;
|
|
130
130
|
}, null);
|
|
131
131
|
return parametersString;
|
|
132
132
|
}
|
|
133
133
|
function assumptionsStringFromAssumptions(assumptions) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
assumptionsString = assumptionsString === null ? assumptionString :
|
|
134
|
+
const assumptionsString = assumptions.reduce((assumptionsString, assumption)=>{
|
|
135
|
+
const assumptionString = assumption.getString();
|
|
136
|
+
assumptionsString = assumptionsString === null ? assumptionString : `${assumptionsString}, ${assumptionString}`;
|
|
137
137
|
return assumptionsString;
|
|
138
138
|
}, null);
|
|
139
139
|
return assumptionsString;
|
|
140
140
|
}
|
|
141
141
|
function suppositionsStringFromSuppositions(suppositions) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
suppositionsString = suppositionsString === null ? suppositionString :
|
|
142
|
+
const suppositionsString = suppositions.reduce((suppositionsString, supposition)=>{
|
|
143
|
+
const suppositionString = supposition.getString();
|
|
144
|
+
suppositionsString = suppositionsString === null ? suppositionString : `${suppositionsString}, ${suppositionString}`;
|
|
145
145
|
return suppositionsString;
|
|
146
146
|
}, null);
|
|
147
147
|
return suppositionsString;
|
|
148
148
|
}
|
|
149
149
|
function signatureStringFromTerms(terms) {
|
|
150
|
-
|
|
150
|
+
const termsString = termsStringFromTerms(terms), signatureString = `[${termsString}]`;
|
|
151
151
|
return signatureString;
|
|
152
152
|
}
|
|
153
153
|
function equivalenceStringFromTerms(terms) {
|
|
154
|
-
|
|
154
|
+
const termsString = termsStringFromTerms(terms), equivalenceString = `[${termsString}]`;
|
|
155
155
|
return equivalenceString;
|
|
156
156
|
}
|
|
157
157
|
function typeStringFromNominalTypeName(nominalTypeName) {
|
|
158
|
-
|
|
158
|
+
const typeString = nominalTypeName; ///
|
|
159
159
|
return typeString;
|
|
160
160
|
}
|
|
161
161
|
function termSubstitutionStringFromTermAndVariable(term, variable) {
|
|
162
|
-
|
|
162
|
+
const termString = term.getString(), variableString = variable.getString(), termSubstitutionString = `[${termString} for ${variableString}]`;
|
|
163
163
|
return termSubstitutionString;
|
|
164
164
|
}
|
|
165
165
|
function rulsStringFromLabelsPremisesAndConclusion(labels, premises, conclusion) {
|
|
166
|
-
|
|
166
|
+
const premisesString = premisesStringFromPremises(premises), conclusionString = conclusion.getString(), labelsString = labelsStringFromLabels(labels), ruleString = premisesString !== null ? `${labelsString} :: [${premisesString}]...${conclusionString}` : `${labelsString} :: ${conclusionString}`;
|
|
167
167
|
return ruleString;
|
|
168
168
|
}
|
|
169
169
|
function sectionStringFromHypothesesTopLevelAssertion(hypotheses, axiom, lemma, theorem, conjecture) {
|
|
170
|
-
|
|
170
|
+
const topLevelAssertion = axiom || lemma || theorem || conjecture, topLevelAssertionString = topLevelAssertion.getString(), hypothesesString = hypothesesStringFromHypotheses(hypotheses), sectionString = topLevelAssertionString !== null ? `[${hypothesesString}]::: ${topLevelAssertionString}` : `[${hypothesesString}]::: `;
|
|
171
171
|
return sectionString;
|
|
172
172
|
}
|
|
173
173
|
function subproofStringFromSuppositionsAndSubDerivation(suppositions, subDerivation) {
|
|
174
|
-
|
|
174
|
+
const lastProofAssertion = subDerivation.getLastProofAssertion(), suppositionsString = suppositionsStringFromSuppositions(suppositions), lastProofAssertionString = lastProofAssertion.getString(), subproofString = `[${suppositionsString}]...${lastProofAssertionString}`;
|
|
175
175
|
return subproofString;
|
|
176
176
|
}
|
|
177
177
|
function frameSubstitutionStringFromFrameAndMetavariable(frame, metavariable) {
|
|
178
|
-
|
|
178
|
+
const frameString = frame.getString(), metavariableString = metavariable.getString(), string = `[${frameString} for [${metavariableString}]]`;
|
|
179
179
|
return string;
|
|
180
180
|
}
|
|
181
181
|
function typeStringFromTypeNameTypePrefixNameAndSuperTypes(typeName, typePrefixName, superTypes) {
|
|
182
|
-
|
|
183
|
-
typeString = typePrefixName !== null ?
|
|
184
|
-
|
|
182
|
+
let typeString;
|
|
183
|
+
typeString = typePrefixName !== null ? `${typePrefixName}${typeName}` : typeName;
|
|
184
|
+
const superTypesString = superTypesStringFromSuperTypes(superTypes);
|
|
185
185
|
if (superTypesString !== null) {
|
|
186
|
-
typeString =
|
|
186
|
+
typeString = `${typeString}:${superTypesString}`;
|
|
187
187
|
}
|
|
188
188
|
return typeString;
|
|
189
189
|
}
|
|
190
190
|
function procedureCallStringFromProcedureReferenceAndParameters(procedureReference, parameters) {
|
|
191
|
-
|
|
191
|
+
const procedureReferenceName = procedureReference.getName(), parametersString = parametersStringFromParameters(parameters), procedureCallString = `${procedureReferenceName}(${parametersString})`;
|
|
192
192
|
return procedureCallString;
|
|
193
193
|
}
|
|
194
194
|
function statementSubstitutionStringFromStatementAndMetavariable(statement, metavariable) {
|
|
195
|
-
|
|
195
|
+
const statementString = statement.getString(), metavariableString = metavariable.getString(), statementSubstitutionString = `[${statementString} for ${metavariableString}]`;
|
|
196
196
|
return statementSubstitutionString;
|
|
197
197
|
}
|
|
198
198
|
function referenceSubstitutionStringFromReferenceAndMetavariable(reference, metavariable) {
|
|
199
|
-
|
|
199
|
+
const referenceString = reference.getString(), metavariableString = metavariable.getString(), referenceSubstitutionString = `[${referenceString} for ${metavariableString}]`;
|
|
200
200
|
return referenceSubstitutionString;
|
|
201
201
|
}
|
|
202
202
|
function topLevelAssertionStringFromLabelsSuppositionsAndDeduction(labels, suppositions, deduction) {
|
|
203
|
-
|
|
204
|
-
|
|
203
|
+
let topLevelAssertionString;
|
|
204
|
+
const suppositionsString = suppositionsStringFromSuppositions(suppositions), deductionString = deduction.getString(), labelsString = labelsStringFromLabels(labels);
|
|
205
205
|
if (labelsString !== null) {
|
|
206
|
-
topLevelAssertionString = suppositionsString !== null ?
|
|
206
|
+
topLevelAssertionString = suppositionsString !== null ? `${labelsString} :: [${suppositionsString}]...${deductionString}` : `${labelsString} :: ${deductionString}`;
|
|
207
207
|
} else {
|
|
208
|
-
topLevelAssertionString = suppositionsString !== null ?
|
|
208
|
+
topLevelAssertionString = suppositionsString !== null ? `[${suppositionsString}]...${deductionString}` : deductionString;
|
|
209
209
|
}
|
|
210
210
|
return topLevelAssertionString;
|
|
211
211
|
}
|
|
212
212
|
function topLevelMetaAssertionStringFromLabelSuppositionsAndDeduction(label, suppositions, deduction) {
|
|
213
|
-
|
|
213
|
+
const suppositionsString = suppositionsStringFromSuppositions(suppositions), deductionString = deduction.getString(), labelString = label.getString(), topLevelMetaAssertionString = suppositionsString !== null ? `${labelString} :: [${suppositionsString}]...${deductionString}` : `${labelString} :: ${deductionString}`;
|
|
214
214
|
return topLevelMetaAssertionString;
|
|
215
215
|
}
|
|
216
216
|
function statementSubstitutionStringFromStatementMetavariableAndSubstitution(statement, metavariable, substitution) {
|
|
217
|
-
|
|
217
|
+
const statementString = statement.getString(), metavariableString = metavariable.getString(), substitutionString = substitution.getString(), statementSubstitutionString = `[${statementString} for ${metavariableString}${substitutionString}]`;
|
|
218
218
|
return statementSubstitutionString;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zLnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgYCR7dGVybXNTdHJpbmd9LCAke3Rlcm1TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgdGVybVN0cmluZztcblxuICAgIHJldHVybiB0ZXJtc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHRlcm1zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzU3RyaW5nID0gbGFiZWxzLnJlZHVjZSgobGFiZWxzU3RyaW5nLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCk7XG5cbiAgICBsYWJlbHNTdHJpbmcgPSAobGFiZWxzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICBsYWJlbFN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSwgJHtsYWJlbFN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGxhYmVsc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGxhYmVsc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXMucmVkdWNlKChwcmVtaXNlc1N0cmluZywgcHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSBwcmVtaXNlLmdldFN0cmluZygpO1xuXG4gICAgcHJlbWlzZXNTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlbWlzZXNTdHJpbmd9LCAke3ByZW1pc2VTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWlzZVN0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlcy5yZWR1Y2UoKGh5cG90aGVzZXNTdHJpbmcsIGh5cG90aGVzaXMpID0+IHtcbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGh5cG90aGVzZXNTdHJpbmcgPSAoaHlwb3RoZXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtoeXBvdGhlc2VzU3RyaW5nfSwgJHtoeXBvdGhlc2lzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpLFxuICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cGVyVHlwZXNTdHJpbmd9LCAnJHtzdXBlclR5cGVTdHJpbmd9J2A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZXNTdHJpbmc7XG4gICAgICAgIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMucmVkdWNlKChwYXJhbWV0ZXJzU3RyaW5nLCBwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBwYXJhbWV0ZXJzU3RyaW5nID0gKHBhcmFtZXRlcnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cGFyYW1ldGVyc1N0cmluZ30sICR7cGFyYW1ldGVyU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1N0cmluZ0Zyb21Bc3N1bXB0aW9ucyhhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc1N0cmluZyA9IGFzc3VtcHRpb25zLnJlZHVjZSgoYXNzdW1wdGlvbnNTdHJpbmcsIGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGFzc3VtcHRpb25zU3RyaW5nID0gKGFzc3VtcHRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7YXNzdW1wdGlvbnNTdHJpbmd9LCAke2Fzc3VtcHRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zLnJlZHVjZSgoc3VwcG9zaXRpb25zU3RyaW5nLCBzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3VwcG9zaXRpb25zU3RyaW5nfSwgJHtzdXBwb3NpdGlvblN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gYFske3Rlcm1zU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzaWduYXR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgZXF1aXZhbGVuY2VTdHJpbmcgPSBgWyR7dGVybXNTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSBub21pbmFsVHlwZU5hbWU7ICAvLy9cblxuICByZXR1cm4gdHlwZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3Rlcm1TdHJpbmd9IGZvciAke3ZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24obGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbikge1xuICBjb25zdCBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSxcbiAgICAgICAgY29uY2x1c2lvblN0cmluZyA9IGNvbmNsdXNpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSxcbiAgICAgICAgcnVsZVN0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3ByZW1pc2VzU3RyaW5nfV0uLi4ke2NvbmNsdXNpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2NvbmNsdXNpb25TdHJpbmd9YDtcblxuICByZXR1cm4gcnVsZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc1RvcExldmVsQXNzZXJ0aW9uKGh5cG90aGVzZXMsIGF4aW9tLCBsZW1tYSwgdGhlb3JlbSwgY29uamVjdHVyZSkge1xuICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IChheGlvbSB8fCBsZW1tYSB8fCB0aGVvcmVtIHx8IGNvbmplY3R1cmUpLFxuICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpLFxuICAgICAgICBzZWN0aW9uU3RyaW5nID0gKHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtoeXBvdGhlc2VzU3RyaW5nfV06OjogJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgWyR7aHlwb3RoZXNlc1N0cmluZ31dOjo6IGA7XG5cbiAgcmV0dXJuIHNlY3Rpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZlN0cmluZ0Zyb21TdXBwb3NpdGlvbnNBbmRTdWJEZXJpdmF0aW9uKHN1cHBvc2l0aW9ucywgc3ViRGVyaXZhdGlvbikge1xuICBjb25zdCBsYXN0UHJvb2ZBc3NlcnRpb24gPSBzdWJEZXJpdmF0aW9uLmdldExhc3RQcm9vZkFzc2VydGlvbigpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGxhc3RQcm9vZkFzc2VydGlvblN0cmluZyA9IGxhc3RQcm9vZkFzc2VydGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBgWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2xhc3RQcm9vZkFzc2VydGlvblN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlU3RyaW5nRnJvbVR5cGVOYW1lVHlwZVByZWZpeE5hbWVBbmRTdXBlclR5cGVzKHR5cGVOYW1lLCB0eXBlUHJlZml4TmFtZSwgc3VwZXJUeXBlcykge1xuICBsZXQgdHlwZVN0cmluZztcblxuICB0eXBlU3RyaW5nID0gKHR5cGVQcmVmaXhOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke3R5cGVQcmVmaXhOYW1lfSR7dHlwZU5hbWV9YDpcbiAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTtcblxuICBjb25zdCBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gIGlmIChzdXBlclR5cGVzU3RyaW5nICE9PSBudWxsKSB7XG4gICAgdHlwZVN0cmluZyA9IGAke3R5cGVTdHJpbmd9OiR7c3VwZXJUeXBlc1N0cmluZ31gO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMocHJvY2VkdXJlUmVmZXJlbmNlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2UuZ2V0TmFtZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLFxuICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gYCR7cHJvY2VkdXJlUmVmZXJlbmNlTmFtZX0oJHtwYXJhbWV0ZXJzU3RyaW5nfSlgO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlKHJlZmVyZW5jZSwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7cmVmZXJlbmNlU3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGxldCB0b3BMZXZlbEFzc2VydGlvblN0cmluZztcblxuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpO1xuXG4gIGlmIChsYWJlbHNTdHJpbmcgIT09IG51bGwpIHtcbiAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6ICR7ZGVkdWN0aW9uU3RyaW5nfWA7XG4gIH0gZWxzZSB7XG4gICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uU3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVsLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiAke2RlZHVjdGlvblN0cmluZ31gO1xuXG4gIHJldHVybiB0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiYXNzdW1wdGlvbnNTdHJpbmdGcm9tQXNzdW1wdGlvbnMiLCJlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyIsImZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlIiwiaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzIiwibGFiZWxzU3RyaW5nRnJvbUxhYmVscyIsInBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyIsInByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZSIsInJ1bHNTdHJpbmdGcm9tTGFiZWxzUHJlbWlzZXNBbmRDb25jbHVzaW9uIiwic2VjdGlvblN0cmluZ0Zyb21IeXBvdGhlc2VzVG9wTGV2ZWxBc3NlcnRpb24iLCJzaWduYXR1cmVTdHJpbmdGcm9tVGVybXMiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsInN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24iLCJzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMiLCJzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zIiwidGVybVN1YnN0aXR1dGlvblN0cmluZ0Zyb21UZXJtQW5kVmFyaWFibGUiLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZ0Zyb21UeXBlTmFtZVR5cGVQcmVmaXhOYW1lQW5kU3VwZXJUeXBlcyIsInRlcm1zIiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJ0ZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsImxhYmVscyIsImxhYmVsc1N0cmluZyIsImxhYmVsIiwibGFiZWxTdHJpbmciLCJwcmVtaXNlcyIsInByZW1pc2VzU3RyaW5nIiwicHJlbWlzZSIsInByZW1pc2VTdHJpbmciLCJoeXBvdGhlc2VzIiwiaHlwb3RoZXNlc1N0cmluZyIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzU3RyaW5nIiwic3VwZXJUeXBlcyIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHlwZXNTdHJpbmciLCJzdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyc1N0cmluZyIsInBhcmFtZXRlciIsInBhcmFtZXRlclN0cmluZyIsImFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnNTdHJpbmciLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblN0cmluZyIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1N0cmluZyIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJzaWduYXR1cmVTdHJpbmciLCJlcXVpdmFsZW5jZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsInR5cGVTdHJpbmciLCJ2YXJpYWJsZSIsInZhcmlhYmxlU3RyaW5nIiwidGVybVN1YnN0aXR1dGlvblN0cmluZyIsImNvbmNsdXNpb24iLCJjb25jbHVzaW9uU3RyaW5nIiwicnVsZVN0cmluZyIsImF4aW9tIiwibGVtbWEiLCJ0aGVvcmVtIiwiY29uamVjdHVyZSIsInRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJzZWN0aW9uU3RyaW5nIiwic3ViRGVyaXZhdGlvbiIsImxhc3RQcm9vZkFzc2VydGlvbiIsImdldExhc3RQcm9vZkFzc2VydGlvbiIsImxhc3RQcm9vZkFzc2VydGlvblN0cmluZyIsInN1YnByb29mU3RyaW5nIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJmcmFtZVN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInN0cmluZyIsInR5cGVOYW1lIiwidHlwZVByZWZpeE5hbWUiLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOYW1lIiwiZ2V0TmFtZSIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmciLCJyZWZlcmVuY2UiLCJyZWZlcmVuY2VTdHJpbmciLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmciLCJkZWR1Y3Rpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmciLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTJGZ0JBO2VBQUFBOztRQW1DQUM7ZUFBQUE7O1FBb0RBQztlQUFBQTs7UUFwSUFDO2VBQUFBOztRQTVCQUM7ZUFBQUE7O1FBMkRBQztlQUFBQTs7UUE3Q0FDO2VBQUFBOztRQTBLQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUF2RUFDO2VBQUFBOztRQVdBQztlQUFBQTs7UUF2Q0FDO2VBQUFBOztRQTJGQUM7ZUFBQUE7O1FBK0NBQztlQUFBQTs7UUF4RkFDO2VBQUFBOztRQTdHQUM7ZUFBQUE7O1FBNkNBQztlQUFBQTs7UUFrQ0FDO2VBQUFBOztRQXZJQUM7ZUFBQUE7O1FBOE5BQztlQUFBQTs7UUFvQkFDO2VBQUFBOztRQWpIQUM7ZUFBQUE7O1FBcURBQztlQUFBQTs7O29CQXhMb0I7QUFFN0IsU0FBU0oscUJBQXFCSyxLQUFLO0lBQ3hDLElBQU1DLGNBQWNELE1BQU1FLE1BQU0sQ0FBQyxTQUFDRCxhQUFhRTtRQUM3QyxJQUFNQyxhQUFhRCxLQUFLRSxTQUFTO1FBRWpDSixjQUFjLEFBQUNBLGdCQUFnQixPQUNoQixBQUFDLEdBQWtCRyxPQUFoQkgsYUFBWSxNQUFlLE9BQVhHLGNBQ2hCQTtRQUVsQixPQUFPSDtJQUNULEdBQUc7SUFFSCxPQUFPQTtBQUNUO0FBRU8sU0FBU3BCLHVCQUF1QnlCLE1BQU07SUFDM0MsSUFBTUMsZUFBZUQsT0FBT0osTUFB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
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RyaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBiYXNlVHlwZUZyb21Ob3RoaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90eXBlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1N0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zLnJlZHVjZSgodGVybXNTdHJpbmcsIHRlcm0pID0+IHtcbiAgICBjb25zdCB0ZXJtU3RyaW5nID0gdGVybS5nZXRTdHJpbmcoKTtcblxuICAgIHRlcm1zU3RyaW5nID0gKHRlcm1zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgYCR7dGVybXNTdHJpbmd9LCAke3Rlcm1TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgdGVybVN0cmluZztcblxuICAgIHJldHVybiB0ZXJtc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHRlcm1zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpIHtcbiAgY29uc3QgbGFiZWxzU3RyaW5nID0gbGFiZWxzLnJlZHVjZSgobGFiZWxzU3RyaW5nLCBsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsU3RyaW5nID0gbGFiZWwuZ2V0U3RyaW5nKCk7XG5cbiAgICBsYWJlbHNTdHJpbmcgPSAobGFiZWxzU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICBsYWJlbFN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSwgJHtsYWJlbFN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGxhYmVsc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGxhYmVsc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzU3RyaW5nID0gcHJlbWlzZXMucmVkdWNlKChwcmVtaXNlc1N0cmluZywgcHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VTdHJpbmcgPSBwcmVtaXNlLmdldFN0cmluZygpO1xuXG4gICAgcHJlbWlzZXNTdHJpbmcgPSAocHJlbWlzZXNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCR7cHJlbWlzZXNTdHJpbmd9LCAke3ByZW1pc2VTdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgcHJlbWlzZVN0cmluZzsgIC8vL1xuXG4gICAgcmV0dXJuIHByZW1pc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gcHJlbWlzZXNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzU3RyaW5nRnJvbUh5cG90aGVzZXMoaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlcy5yZWR1Y2UoKGh5cG90aGVzZXNTdHJpbmcsIGh5cG90aGVzaXMpID0+IHtcbiAgICBjb25zdCBoeXBvdGhlc2lzU3RyaW5nID0gaHlwb3RoZXNpcy5nZXRTdHJpbmcoKTtcblxuICAgIGh5cG90aGVzZXNTdHJpbmcgPSAoaHlwb3RoZXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtoeXBvdGhlc2VzU3RyaW5nfSwgJHtoeXBvdGhlc2lzU3RyaW5nfWAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh5cG90aGVzaXNTdHJpbmc7ICAvLy9cblxuICAgIHJldHVybiBoeXBvdGhlc2VzU3RyaW5nO1xuICB9LCBudWxsKTtcblxuICByZXR1cm4gaHlwb3RoZXNlc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNTdHJpbmdGcm9tU3VwZXJUeXBlcyhzdXBlclR5cGVzKSB7XG4gIGNvbnN0IGJhc2VUeXBlID0gYmFzZVR5cGVGcm9tTm90aGluZygpLFxuICAgICAgICBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlcy5yZWR1Y2UoKHN1cGVyVHlwZXNTdHJpbmcsIHN1cGVyVHlwZSkgPT4ge1xuICAgICAgICAgIGlmIChzdXBlclR5cGUgIT09IGJhc2VUeXBlKSB7XG4gICAgICAgICAgICBjb25zdCBzdXBlclR5cGVTdHJpbmcgPSBzdXBlclR5cGUuZ2V0U3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHN1cGVyVHlwZXNTdHJpbmcgPSAoc3VwZXJUeXBlc1N0cmluZyA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke3N1cGVyVHlwZVN0cmluZ30nYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3N1cGVyVHlwZXNTdHJpbmd9LCAnJHtzdXBlclR5cGVTdHJpbmd9J2A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHN1cGVyVHlwZXNTdHJpbmc7XG4gICAgICAgIH0sIG51bGwpO1xuXG4gIHJldHVybiBzdXBlclR5cGVzU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpIHtcbiAgY29uc3QgcGFyYW1ldGVyc1N0cmluZyA9IHBhcmFtZXRlcnMucmVkdWNlKChwYXJhbWV0ZXJzU3RyaW5nLCBwYXJhbWV0ZXIpID0+IHtcbiAgICBjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBwYXJhbWV0ZXIuZ2V0U3RyaW5nKCk7XG5cbiAgICBwYXJhbWV0ZXJzU3RyaW5nID0gKHBhcmFtZXRlcnNTdHJpbmcgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJTdHJpbmcgOiAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7cGFyYW1ldGVyc1N0cmluZ30sICR7cGFyYW1ldGVyU3RyaW5nfWA7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVyc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc1N0cmluZ0Zyb21Bc3N1bXB0aW9ucyhhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc1N0cmluZyA9IGFzc3VtcHRpb25zLnJlZHVjZSgoYXNzdW1wdGlvbnNTdHJpbmcsIGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uU3RyaW5nID0gYXNzdW1wdGlvbi5nZXRTdHJpbmcoKTtcblxuICAgIGFzc3VtcHRpb25zU3RyaW5nID0gKGFzc3VtcHRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFzc3VtcHRpb25TdHJpbmc6IC8vL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7YXNzdW1wdGlvbnNTdHJpbmd9LCAke2Fzc3VtcHRpb25TdHJpbmd9YDtcblxuICAgIHJldHVybiBhc3N1bXB0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIGFzc3VtcHRpb25zU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VwcG9zaXRpb25zU3RyaW5nRnJvbVN1cHBvc2l0aW9ucyhzdXBwb3NpdGlvbnMpIHtcbiAgY29uc3Qgc3VwcG9zaXRpb25zU3RyaW5nID0gc3VwcG9zaXRpb25zLnJlZHVjZSgoc3VwcG9zaXRpb25zU3RyaW5nLCBzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uU3RyaW5nID0gc3VwcG9zaXRpb24uZ2V0U3RyaW5nKCk7XG5cbiAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3NpdGlvblN0cmluZzogLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7c3VwcG9zaXRpb25zU3RyaW5nfSwgJHtzdXBwb3NpdGlvblN0cmluZ31gO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbiAgfSwgbnVsbCk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc1N0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgc2lnbmF0dXJlU3RyaW5nID0gYFske3Rlcm1zU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzaWduYXR1cmVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyh0ZXJtcykge1xuICBjb25zdCB0ZXJtc1N0cmluZyA9IHRlcm1zU3RyaW5nRnJvbVRlcm1zKHRlcm1zKSxcbiAgICAgICAgZXF1aXZhbGVuY2VTdHJpbmcgPSBgWyR7dGVybXNTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIGVxdWl2YWxlbmNlU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZVN0cmluZ0Zyb21Ob21pbmFsVHlwZU5hbWUobm9taW5hbFR5cGVOYW1lKSB7XG4gIGNvbnN0IHR5cGVTdHJpbmcgPSBub21pbmFsVHlwZU5hbWU7ICAvLy9cblxuICByZXR1cm4gdHlwZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlcm1TdWJzdGl0dXRpb25TdHJpbmdGcm9tVGVybUFuZFZhcmlhYmxlKHRlcm0sIHZhcmlhYmxlKSB7XG4gIGNvbnN0IHRlcm1TdHJpbmcgPSB0ZXJtLmdldFN0cmluZygpLFxuICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3Rlcm1TdHJpbmd9IGZvciAke3ZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiB0ZXJtU3Vic3RpdHV0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsc1N0cmluZ0Zyb21MYWJlbHNQcmVtaXNlc0FuZENvbmNsdXNpb24obGFiZWxzLCBwcmVtaXNlcywgY29uY2x1c2lvbikge1xuICBjb25zdCBwcmVtaXNlc1N0cmluZyA9IHByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzKHByZW1pc2VzKSxcbiAgICAgICAgY29uY2x1c2lvblN0cmluZyA9IGNvbmNsdXNpb24uZ2V0U3RyaW5nKCksXG4gICAgICAgIGxhYmVsc1N0cmluZyA9IGxhYmVsc1N0cmluZ0Zyb21MYWJlbHMobGFiZWxzKSxcbiAgICAgICAgcnVsZVN0cmluZyA9IChwcmVtaXNlc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3ByZW1pc2VzU3RyaW5nfV0uLi4ke2NvbmNsdXNpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxzU3RyaW5nfSA6OiAke2NvbmNsdXNpb25TdHJpbmd9YDtcblxuICByZXR1cm4gcnVsZVN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlY3Rpb25TdHJpbmdGcm9tSHlwb3RoZXNlc1RvcExldmVsQXNzZXJ0aW9uKGh5cG90aGVzZXMsIGF4aW9tLCBsZW1tYSwgdGhlb3JlbSwgY29uamVjdHVyZSkge1xuICBjb25zdCB0b3BMZXZlbEFzc2VydGlvbiA9IChheGlvbSB8fCBsZW1tYSB8fCB0aGVvcmVtIHx8IGNvbmplY3R1cmUpLFxuICAgICAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IHRvcExldmVsQXNzZXJ0aW9uLmdldFN0cmluZygpLFxuICAgICAgICBoeXBvdGhlc2VzU3RyaW5nID0gaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzKGh5cG90aGVzZXMpLFxuICAgICAgICBzZWN0aW9uU3RyaW5nID0gKHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBbJHtoeXBvdGhlc2VzU3RyaW5nfV06OjogJHt0b3BMZXZlbEFzc2VydGlvblN0cmluZ31gIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgWyR7aHlwb3RoZXNlc1N0cmluZ31dOjo6IGA7XG5cbiAgcmV0dXJuIHNlY3Rpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJwcm9vZlN0cmluZ0Zyb21TdXBwb3NpdGlvbnNBbmRTdWJEZXJpdmF0aW9uKHN1cHBvc2l0aW9ucywgc3ViRGVyaXZhdGlvbikge1xuICBjb25zdCBsYXN0UHJvb2ZBc3NlcnRpb24gPSBzdWJEZXJpdmF0aW9uLmdldExhc3RQcm9vZkFzc2VydGlvbigpLFxuICAgICAgICBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGxhc3RQcm9vZkFzc2VydGlvblN0cmluZyA9IGxhc3RQcm9vZkFzc2VydGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3VicHJvb2ZTdHJpbmcgPSBgWyR7c3VwcG9zaXRpb25zU3RyaW5nfV0uLi4ke2xhc3RQcm9vZkFzc2VydGlvblN0cmluZ31gO1xuXG4gIHJldHVybiBzdWJwcm9vZlN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlU3RyaW5nRnJvbVR5cGVOYW1lVHlwZVByZWZpeE5hbWVBbmRTdXBlclR5cGVzKHR5cGVOYW1lLCB0eXBlUHJlZml4TmFtZSwgc3VwZXJUeXBlcykge1xuICBsZXQgdHlwZVN0cmluZztcblxuICB0eXBlU3RyaW5nID0gKHR5cGVQcmVmaXhOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgIGAke3R5cGVQcmVmaXhOYW1lfSR7dHlwZU5hbWV9YDpcbiAgICAgICAgICAgICAgICAgICB0eXBlTmFtZTtcblxuICBjb25zdCBzdXBlclR5cGVzU3RyaW5nID0gc3VwZXJUeXBlc1N0cmluZ0Zyb21TdXBlclR5cGVzKHN1cGVyVHlwZXMpO1xuXG4gIGlmIChzdXBlclR5cGVzU3RyaW5nICE9PSBudWxsKSB7XG4gICAgdHlwZVN0cmluZyA9IGAke3R5cGVTdHJpbmd9OiR7c3VwZXJUeXBlc1N0cmluZ31gO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVTdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsU3RyaW5nRnJvbVByb2NlZHVyZVJlZmVyZW5jZUFuZFBhcmFtZXRlcnMocHJvY2VkdXJlUmVmZXJlbmNlLCBwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZU5hbWUgPSBwcm9jZWR1cmVSZWZlcmVuY2UuZ2V0TmFtZSgpLFxuICAgICAgICBwYXJhbWV0ZXJzU3RyaW5nID0gcGFyYW1ldGVyc1N0cmluZ0Zyb21QYXJhbWV0ZXJzKHBhcmFtZXRlcnMpLFxuICAgICAgICBwcm9jZWR1cmVDYWxsU3RyaW5nID0gYCR7cHJvY2VkdXJlUmVmZXJlbmNlTmFtZX0oJHtwYXJhbWV0ZXJzU3RyaW5nfSlgO1xuXG4gIHJldHVybiBwcm9jZWR1cmVDYWxsU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZE1ldGF2YXJpYWJsZShzdGF0ZW1lbnQsIG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBzdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IG1ldGF2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmdGcm9tUmVmZXJlbmNlQW5kTWV0YXZhcmlhYmxlKHJlZmVyZW5jZSwgbWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IHJlZmVyZW5jZVN0cmluZyA9IHJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICByZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmcgPSBgWyR7cmVmZXJlbmNlU3RyaW5nfSBmb3IgJHttZXRhdmFyaWFibGVTdHJpbmd9XWA7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZVN1YnN0aXR1dGlvblN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbihsYWJlbHMsIHN1cHBvc2l0aW9ucywgZGVkdWN0aW9uKSB7XG4gIGxldCB0b3BMZXZlbEFzc2VydGlvblN0cmluZztcblxuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxzU3RyaW5nID0gbGFiZWxzU3RyaW5nRnJvbUxhYmVscyhsYWJlbHMpO1xuXG4gIGlmIChsYWJlbHNTdHJpbmcgIT09IG51bGwpIHtcbiAgICB0b3BMZXZlbEFzc2VydGlvblN0cmluZyA9IChzdXBwb3NpdGlvbnNTdHJpbmcgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtsYWJlbHNTdHJpbmd9IDo6ICR7ZGVkdWN0aW9uU3RyaW5nfWA7XG4gIH0gZWxzZSB7XG4gICAgdG9wTGV2ZWxBc3NlcnRpb25TdHJpbmcgPSAoc3VwcG9zaXRpb25zU3RyaW5nICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkdWN0aW9uU3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIHRvcExldmVsQXNzZXJ0aW9uU3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsU3VwcG9zaXRpb25zQW5kRGVkdWN0aW9uKGxhYmVsLCBzdXBwb3NpdGlvbnMsIGRlZHVjdGlvbikge1xuICBjb25zdCBzdXBwb3NpdGlvbnNTdHJpbmcgPSBzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zKHN1cHBvc2l0aW9ucyksXG4gICAgICAgIGRlZHVjdGlvblN0cmluZyA9IGRlZHVjdGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgbGFiZWxTdHJpbmcgPSBsYWJlbC5nZXRTdHJpbmcoKSxcbiAgICAgICAgdG9wTGV2ZWxNZXRhQXNzZXJ0aW9uU3RyaW5nID0gKHN1cHBvc2l0aW9uc1N0cmluZyAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCR7bGFiZWxTdHJpbmd9IDo6IFske3N1cHBvc2l0aW9uc1N0cmluZ31dLi4uJHtkZWR1Y3Rpb25TdHJpbmd9YCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2xhYmVsU3RyaW5nfSA6OiAke2RlZHVjdGlvblN0cmluZ31gO1xuXG4gIHJldHVybiB0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50TWV0YXZhcmlhYmxlQW5kU3Vic3RpdHV0aW9uKHN0YXRlbWVudCwgbWV0YXZhcmlhYmxlLCBzdWJzdGl0dXRpb24pIHtcbiAgY29uc3Qgc3RhdGVtZW50U3RyaW5nID0gc3RhdGVtZW50LmdldFN0cmluZygpLFxuICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBtZXRhdmFyaWFibGUuZ2V0U3RyaW5nKCksXG4gICAgICAgIHN1YnN0aXR1dGlvblN0cmluZyA9IHN1YnN0aXR1dGlvbi5nZXRTdHJpbmcoKSxcbiAgICAgICAgc3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nID0gYFske3N0YXRlbWVudFN0cmluZ30gZm9yICR7bWV0YXZhcmlhYmxlU3RyaW5nfSR7c3Vic3RpdHV0aW9uU3RyaW5nfV1gO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiYXNzdW1wdGlvbnNTdHJpbmdGcm9tQXNzdW1wdGlvbnMiLCJlcXVpdmFsZW5jZVN0cmluZ0Zyb21UZXJtcyIsImZyYW1lU3Vic3RpdHV0aW9uU3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlIiwiaHlwb3RoZXNlc1N0cmluZ0Zyb21IeXBvdGhlc2VzIiwibGFiZWxzU3RyaW5nRnJvbUxhYmVscyIsInBhcmFtZXRlcnNTdHJpbmdGcm9tUGFyYW1ldGVycyIsInByZW1pc2VzU3RyaW5nRnJvbVByZW1pc2VzIiwicHJvY2VkdXJlQ2FsbFN0cmluZ0Zyb21Qcm9jZWR1cmVSZWZlcmVuY2VBbmRQYXJhbWV0ZXJzIiwicmVmZXJlbmNlU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVJlZmVyZW5jZUFuZE1ldGF2YXJpYWJsZSIsInJ1bHNTdHJpbmdGcm9tTGFiZWxzUHJlbWlzZXNBbmRDb25jbHVzaW9uIiwic2VjdGlvblN0cmluZ0Zyb21IeXBvdGhlc2VzVG9wTGV2ZWxBc3NlcnRpb24iLCJzaWduYXR1cmVTdHJpbmdGcm9tVGVybXMiLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kTWV0YXZhcmlhYmxlIiwic3RhdGVtZW50U3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudE1ldGF2YXJpYWJsZUFuZFN1YnN0aXR1dGlvbiIsInN1YnByb29mU3RyaW5nRnJvbVN1cHBvc2l0aW9uc0FuZFN1YkRlcml2YXRpb24iLCJzdXBlclR5cGVzU3RyaW5nRnJvbVN1cGVyVHlwZXMiLCJzdXBwb3NpdGlvbnNTdHJpbmdGcm9tU3VwcG9zaXRpb25zIiwidGVybVN1YnN0aXR1dGlvblN0cmluZ0Zyb21UZXJtQW5kVmFyaWFibGUiLCJ0ZXJtc1N0cmluZ0Zyb21UZXJtcyIsInRvcExldmVsQXNzZXJ0aW9uU3RyaW5nRnJvbUxhYmVsc1N1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInRvcExldmVsTWV0YUFzc2VydGlvblN0cmluZ0Zyb21MYWJlbFN1cHBvc2l0aW9uc0FuZERlZHVjdGlvbiIsInR5cGVTdHJpbmdGcm9tTm9taW5hbFR5cGVOYW1lIiwidHlwZVN0cmluZ0Zyb21UeXBlTmFtZVR5cGVQcmVmaXhOYW1lQW5kU3VwZXJUeXBlcyIsInRlcm1zIiwidGVybXNTdHJpbmciLCJyZWR1Y2UiLCJ0ZXJtIiwidGVybVN0cmluZyIsImdldFN0cmluZyIsImxhYmVscyIsImxhYmVsc1N0cmluZyIsImxhYmVsIiwibGFiZWxTdHJpbmciLCJwcmVtaXNlcyIsInByZW1pc2VzU3RyaW5nIiwicHJlbWlzZSIsInByZW1pc2VTdHJpbmciLCJoeXBvdGhlc2VzIiwiaHlwb3RoZXNlc1N0cmluZyIsImh5cG90aGVzaXMiLCJoeXBvdGhlc2lzU3RyaW5nIiwic3VwZXJUeXBlcyIsImJhc2VUeXBlIiwiYmFzZVR5cGVGcm9tTm90aGluZyIsInN1cGVyVHlwZXNTdHJpbmciLCJzdXBlclR5cGUiLCJzdXBlclR5cGVTdHJpbmciLCJwYXJhbWV0ZXJzIiwicGFyYW1ldGVyc1N0cmluZyIsInBhcmFtZXRlciIsInBhcmFtZXRlclN0cmluZyIsImFzc3VtcHRpb25zIiwiYXNzdW1wdGlvbnNTdHJpbmciLCJhc3N1bXB0aW9uIiwiYXNzdW1wdGlvblN0cmluZyIsInN1cHBvc2l0aW9ucyIsInN1cHBvc2l0aW9uc1N0cmluZyIsInN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25TdHJpbmciLCJzaWduYXR1cmVTdHJpbmciLCJlcXVpdmFsZW5jZVN0cmluZyIsIm5vbWluYWxUeXBlTmFtZSIsInR5cGVTdHJpbmciLCJ2YXJpYWJsZSIsInZhcmlhYmxlU3RyaW5nIiwidGVybVN1YnN0aXR1dGlvblN0cmluZyIsImNvbmNsdXNpb24iLCJjb25jbHVzaW9uU3RyaW5nIiwicnVsZVN0cmluZyIsImF4aW9tIiwibGVtbWEiLCJ0aGVvcmVtIiwiY29uamVjdHVyZSIsInRvcExldmVsQXNzZXJ0aW9uIiwidG9wTGV2ZWxBc3NlcnRpb25TdHJpbmciLCJzZWN0aW9uU3RyaW5nIiwic3ViRGVyaXZhdGlvbiIsImxhc3RQcm9vZkFzc2VydGlvbiIsImdldExhc3RQcm9vZkFzc2VydGlvbiIsImxhc3RQcm9vZkFzc2VydGlvblN0cmluZyIsInN1YnByb29mU3RyaW5nIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJmcmFtZVN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyIsInN0cmluZyIsInR5cGVOYW1lIiwidHlwZVByZWZpeE5hbWUiLCJwcm9jZWR1cmVSZWZlcmVuY2UiLCJwcm9jZWR1cmVSZWZlcmVuY2VOYW1lIiwiZ2V0TmFtZSIsInByb2NlZHVyZUNhbGxTdHJpbmciLCJzdGF0ZW1lbnQiLCJzdGF0ZW1lbnRTdHJpbmciLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb25TdHJpbmciLCJyZWZlcmVuY2UiLCJyZWZlcmVuY2VTdHJpbmciLCJyZWZlcmVuY2VTdWJzdGl0dXRpb25TdHJpbmciLCJkZWR1Y3Rpb24iLCJkZWR1Y3Rpb25TdHJpbmciLCJ0b3BMZXZlbE1ldGFBc3NlcnRpb25TdHJpbmciLCJzdWJzdGl0dXRpb24iLCJzdWJzdGl0dXRpb25TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQTJGZ0JBO2VBQUFBOztRQW1DQUM7ZUFBQUE7O1FBb0RBQztlQUFBQTs7UUFwSUFDO2VBQUFBOztRQTVCQUM7ZUFBQUE7O1FBMkRBQztlQUFBQTs7UUE3Q0FDO2VBQUFBOztRQTBLQUM7ZUFBQUE7O1FBZ0JBQztlQUFBQTs7UUF2RUFDO2VBQUFBOztRQVdBQztlQUFBQTs7UUF2Q0FDO2VBQUFBOztRQTJGQUM7ZUFBQUE7O1FBK0NBQztlQUFBQTs7UUF4RkFDO2VBQUFBOztRQTdHQUM7ZUFBQUE7O1FBNkNBQztlQUFBQTs7UUFrQ0FDO2VBQUFBOztRQXZJQUM7ZUFBQUE7O1FBOE5BQztlQUFBQTs7UUFvQkFDO2VBQUFBOztRQWpIQUM7ZUFBQUE7O1FBcURBQztlQUFBQTs7O3NCQXhMb0I7QUFFN0IsU0FBU0oscUJBQXFCSyxLQUFLO0lBQ3hDLE1BQU1DLGNBQWNELE1BQU1FLE1BQU0sQ0FBQyxDQUFDRCxhQUFhRTtRQUM3QyxNQUFNQyxhQUFhRCxLQUFLRSxTQUFTO1FBRWpDSixjQUFjLEFBQUNBLGdCQUFnQixPQUNoQixHQUFHQSxZQUFZLEVBQUUsRUFBRUcsWUFBWSxHQUM1QkE7UUFFbEIsT0FBT0g7SUFDVCxHQUFHO0lBRUgsT0FBT0E7QUFDVDtBQUVPLFNBQVNwQix1QkFBdUJ5QixNQUFNO0lBQzNDLE1BQU1DLGVBQWVELE9BQU9KLE1BQU0sQ0FBQyxD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
|